[gelöst] Forum "Leave shadow copy" nur für bestimmte rollen anzeigen.
Eingetragen von fraweg (230)
am 07.01.2013 - 22:42 Uhr in
am 07.01.2013 - 22:42 Uhr in
Hallo zusammen,
Zunächst einmal wünsche ich allen ein frohes neues Jahr!
Ich habe mal eine Frage. Wenn ich ein Forum Beitrag editiere erscheint da "Leave shadow copy" was soweit auch funktioniert. Nur halte ich es nicht für Sinnvoll das dieses jeder User kann. Gibt es eine einfache Möglichkeit das für bestimmte Rollen zu verbergen ?
Viele Grüße
Frank
- Anmelden oder Registrieren um Kommentare zu schreiben
Kener eine Idee? :-(
am 09.01.2013 - 22:57 Uhr
Kener eine Idee? :-(
fraweg schriebKener eine
am 11.01.2013 - 18:27 Uhr
Kener eine Idee? :-(
Da es sich bei leave shadow copy um eine Checkbox handelt, die über die Form-API erzeugt wird, kannst du über den hook_form_alter in einem eigenen Modul diese Checkbox auch ausblenden bzw. #access auf FALSE setzen. Den aktuellen Benutzer kannst du dir aus dem globalen $user Objekt ziehen und so dann auch die Rolle prüfen.
http://api.drupal.org/api/drupal/modules%21system%21system.api.php/funct...
Die Umsetzung ist hier schon fast fertig erklärt:
http://drupal.stackexchange.com/questions/7199/how-to-hide-and-or-preven...
Du müsstest hier nur den Namen des Form Elements anpassen -> $form['shadow']..
SteffenR
http://www.twitter.com/_steffenr
Drupal-Initiative e.V.
Hallo Steffen,Vielen Dank
am 11.01.2013 - 20:33 Uhr
Hallo Steffen,
Vielen Dank für die Antwort und vor allem die Links! Ich werde mir das mal ansehen.
Viele Grüße
Frank
Edit:
Also ich hab mal das hier versucht, was aber leider noch nicht klappt.
function hide_leave_shadow_copy_form_alter(&$form, &$form_state, $form_id) {
global $user;
// Check to see if $user has does not have the administrator role.
if (!in_array('administrator', array_values($user->roles))) {
$form['shadow']['#access'] = FALSE;
}
}
Bzw. grundsätzlich erst einmal das hier um es ganz verschwinden zu lassen (testweise):
function hide_leave_shadow_copy_form_alter(&$form, &$form_state, $form_id) {
if($form_id == 'story_node_form') {
$form['shadow']['#access'] = FALSE;
}
}
Mon Frank, Ich hab mir das
am 12.01.2013 - 13:05 Uhr
Mon Frank,
Ich hab mir das Ganze gerade noch mal angeschaut.
Folgender Code funktioniert bei meinen Tests problemlos:
Musst halt auch schauen, ob du auf die richtigen Rollennamen prüfst etc. Zum Testen am Besten auch mal nen dpm($user_roles) mit in den Code packen ( sofern devel aktiviert ).. Dann siehst auch, wie die Rollennamen korrekt heissen..
<?php
/**
* Implements hook_form_alter().
*/
function my_module_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'forum_node_form') {
global $user;
$user_roles = array_values($user->roles);
if (!in_array('administrator', $user_roles)) {
$form['shadow']['#access'] = FALSE;
}
}
}
?>
SteffenR
http://www.twitter.com/_steffenr
Drupal-Initiative e.V.
Vielen Dank Nochmals für
am 12.01.2013 - 14:02 Uhr
Vielen Dank Nochmals für deine Mühe!
Ich habe das mal getestet..
Es gibt bei mir folgende Fehlermeldung:
Parse error: syntax error, unexpected T_IF in /.../sites/all/modules/my_modules/hide_leave_shadow_copy_for_users/hide_leave_shadow_copy_for_users.module on line 7
Ich habe mal Google bemüht und da steht, dass die If-Anweisung nicht akzeptiert wird weil entweder eine Klammer oder ein Semikolon fehlt.
Kann ich jetzt aber so nicht erkenne...
Noch eine Idee/Tipp für mich?
Viele Grüße
Frank
In meinem Beispielcode kann
am 12.01.2013 - 16:39 Uhr
In meinem Beispielcode kann ich so auch keinen Fehler entdecken - sonst poste hier mal deinen Modul-Code, so lässt sich der Fehler schneller finden..
Gruß,
SteffenR
http://www.twitter.com/_steffenr
Drupal-Initiative e.V.
Hallo Steffen,nochmals
am 12.01.2013 - 17:58 Uhr
Hallo Steffen,
nochmals vielen Dank für deine Mühe! Ich hatte das Modul entfernt weil es nicht lief und es gerade nochmal gemacht um es hier zu posten. ..Was soll ich sagen..jetzt scheint es zu gehen. Nochmals Vielen vielen Dank!
Ich poste es trotzdem mal hier. Vielleicht kann es der eine oder andere ja gebrauchen :-)
Ein schönes WE wünsche ich!
Frank
Edit: Eine Frage hätte ich noch. Kann ich das für mehrere Rollen einfach mit "or" verbinen oder besser mit "elseif" ?
Und wie geht man mit dem "dpm($user_roles)" um. Sind die Rollennamen nicht gleich den mir vegebenen?
Ja - mehrere Rollen kannst du
am 12.01.2013 - 17:51 Uhr
Ja - mehrere Rollen kannst du mit || oder OR verknüpfen ..
SteffenR
http://www.twitter.com/_steffenr
Drupal-Initiative e.V.