• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

Drupal Rollenüberprüfung

cucube2001

Jonagold
Registriert
20.08.07
Beiträge
20
Hallo,

Ich schlage mich momentan mit der Drupalmodulprogrammierung herum. Ich bin selbst noch Anfänger und arbeite mich ein, hab aber das Grundsystem verstanden. Momentan möchte ich eine Rollenüberprüfung in mein Modul einbauen. Im Adminbereich soll man die Möglichkeit haben das Modul nur bestimmten Rollen zu zuweisen.

die modulname.admin.inc sieht dementsprechen so aus:

Code:
function send_admin_settings() {
  global $user;
 
  $options = node_get_types('names');
  $roles = user_roles($membersonly = FALSE, $permission = NULL);

  $form['send_node_types'] = array( 
      '#type' => 'checkboxes', 
    '#title' => t('Choose the content types'), 
    '#options' => $options, 
    '#default_value' => variable_get('send_node_types', array('page')), 
    '#description' => t('The App will be available on these content types to send messages.'), 
  ); 
  
  $form['send_role_types'] = array(
  '#type' => 'checkboxes', 
    '#title' => t('Choose the Roles'), 
    '#options' => $roles, 
    '#default_value' => variable_get('send_role_types', array('authenticated user')), 
    '#description' => t('Choose the roles this module is supposed to be available for'), 
  );

  return system_settings_form($form); 

}

die modulname.module hook_nodeapi:
Code:
function send_nodeapi(&$node, $op, $teaser, $page) {
  global $user;
  switch ($op) {
 
    case 'view':
        if ($user->uid == 0 || !$page) {
        break;
      }
      
      $roles = variable_get('send_role_types', array('authenticated user'));
      
      if (!in_array($user->role, $roles, TRUE)){
      	break;
      }
                 
      
      // Find out which node types we should send.
      $types_to_send = variable_get('send_node_types', array('page'));
      
      // Abort if this node is not one of the types we should send.
      if (!in_array($node->type, $types_to_send, TRUE)) {
        break;
      }
      ...

Im Administrationsbereich werden die Rollen sowie die node types angezeigt. Der Part mit den node types funktioniert auch. Bei den Rollen habe ich noch Probleme.
Der defaultwert wird nicht als angehakte Checkbox angezeigt und die Überprüfung auf die Rolle funktioniert leider auch nicht.
Ich bin momentan mit meinem Latein am Ende. Hat jmd von euch evtl. Ahnung und könnte mir helfen. Danke.
cucube2001