[gelöst] Profile autocomplete Berechtigung - Denkanstoss
Eingetragen von UwBach (310)
am 03.08.2010 - 11:14 Uhr in
am 03.08.2010 - 11:14 Uhr in
Wenn in den Profilen Textfelder definiert werden können diese mit einem Autocomplete versehen werden. Das Autocomplete funktioniert aber nur bei berechtigten User - soweit OK.
Ich möchte aber bei der schon Registrierung, also wenn der User als Gast geführt wird, die Autocomplete nutzen können ohne die Rechte herunter zusetzen.
Hat jemand eine Idee wie ich das machen kann?
MfG
UwBach
- Anmelden oder Registrieren um Kommentare zu schreiben
Also ohne bei den
am 03.08.2010 - 11:56 Uhr
Also ohne bei den Berechtigungen Gast das Recht zu geben Benutzerprofile einzusehen?
Irgendwo musst du die Rechte ja setzen auch wenn du die entsprechende function findest und überschreibst.
Oder ich hab es noch nicht richtig verstanden...
-----------
Luca Curella
Kooperative Netze - Berlin
Das hst du genau richtig verstanden ..
am 03.08.2010 - 11:59 Uhr
.. und genau das ist ja mein Problem. Functionen in anderen Modulen zu überschreiben möchte ich auch nicht.
Gruß
UwBach
Kann ich mir dann aber nicht
am 03.08.2010 - 12:40 Uhr
Kann ich mir dann aber nicht vorstellen wie das gehen soll.
Irgendwas musst du ja überschreiben.
Entweder die Registrierung mit form_alter oder du findest die entsprechende function im user.module
die die Berechtigungen abfragt.
Du nutzt Core-Profile oder?
-----------
Luca Curella
Kooperative Netze - Berlin
Eigentlich ganz einfach ...
am 03.08.2010 - 16:20 Uhr
Die Funktion selber schreiben und die Berechtigungen selber setzen
function xxx_anpassung_menu()
{
$item['anpassung/autocomplete'] = array
(
'title' => 'Branche Autocomplete',
'page callback' => 'xxx_anpassung_autocomplete',
'access arguments' => array('Autocomplete'),
'type' => MENU_CALLBACK,
);
return $item;
}
function xxx_anpassung_perm()
{
return array('Autocomplete');
}
function xxx_anpassung_form_alter(&$form, $form_state, $form_id)
{
// Sicher stellen das das Login nur noch unter SSL gemacht wird
if($form_id == 'user_login_block')
{
}
// Aktivieren der Autocomplete-Funktion
if(($form_id == 'user_profile_form' or $form_id == 'user_register') and array_key_exists('Unternehmensdaten', $form))//
{
$form['Unternehmensdaten']['profile_branche']['#autocomplete_path'] = 'anpassung/autocomplete/10';
$form['Unternehmensdaten']['profile_land']['#autocomplete_path'] = 'anpassung/autocomplete/12';
}
}
function xxx_anpassung_autocomplete($field, $string)
{
$matches = array();
if (db_result(db_query("SELECT COUNT(*) FROM {profile_fields} WHERE fid = %d AND autocomplete = 1", $field)))
{
$result = db_query_range("SELECT value FROM {profile_values} WHERE fid = %d AND LOWER(value) LIKE LOWER('%s%%') GROUP BY value ORDER BY value ASC", $field, $string, 0, 10);
while ($data = db_fetch_object($result))
{
$matches[$data->value] = check_plain($data->value);
}
}
drupal_json($matches);
}
Gruß
UwBach