2009-05-05 7 views
2

セキュリティモジュールを作成して、マルチサイトのDrupalセットアップで特定のモジュールを有効にすることができます。今すぐ、次のスニペットを使用してModulesフォームを簡単に無効にすることができます。モジュールのチェックボックスを「読み取り専用」に設定することはできますか?

フォーム要素を読み取り専用に設定し、サブセットのみを有効/無効にする機能を有効にしたいと考えています。

function disable_form_fields_form_alter(&$form, $form_state, $form_id) { 

    //get handle on drupal user var 
    global $user; 

    //if we are uid == 1 then we can edit this stuff... 
    if($user->uid !=1 && variable_get('osu_update_lockdown',1)==1){ 

     if ($form_id == 'system_modules'){ 

      //find all the modules not disabled 
      $modules_to_disabled = array_diff_key($form['status']['#options'],  array_flip($form['status']['#disabled_modules'])); 

      //for each not in our disabled list lets add it in 
      foreach($modules_to_disabled as $name => $value){ 
       $form['status']['#disabled_modules'][] = $name; 
      } 

      //disable non-checked boxes 
      foreach($form['status']['#options'] as $key=>$val){ 
       $form['status']['#process']['system_modules_disable'][0][]=$key; 
      } 
      //disable checked boxes 
      foreach($form['status']['#default_value'] as $key=>$val){ 
       $form['status']['#process']['system_modules_disable'][0][]=$val; 
      } 

      unset($form['buttons']['submit']); 

     } 
    } 
} 

答えて

0

フォーム要素に '#access' => FALSEプロパティを試してみましたか?

0

はい、あなたはそれが読み取り専用に設定し、この#attributesを使用することができます。これは、フォームが読み取り専用に作ります

$form['status']['#attributes'] = array('readonly' => 'readonly'); 

'#attributes' => array('readonly' => 'readonly'), 

だから、あなたのフォームのために、それはそのようなものです。

関連する問題