From afad39b7b975d553a572695f5f7f1036b36767ab Mon Sep 17 00:00:00 2001
From: Axel Rutz <axel.rutz@clever-systems.net>
Date: Fri, 25 Feb 2011 14:37:09 +0100
Subject: [PATCH] added permissions for "all node types"

---
 override_node_options.module |   20 +++++++++++---------
 1 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/override_node_options.module b/override_node_options.module
index 18d780f..d4a19e3 100644
--- a/override_node_options.module
+++ b/override_node_options.module
@@ -12,6 +12,8 @@
 function override_node_options_permission() {
   $permissions = array();
 
+  // special permission "all node types"
+  $permissions += override_node_options_list_permissions('__all__', t('[all node types]'));
   // Generate override node permissions for all applicable node types.
   foreach (node_permissions_get_configured_types() as $type) {
     $permissions += override_node_options_list_permissions($type);
@@ -28,8 +30,8 @@ function override_node_options_permission() {
  * @return
  *   An array of permission names and description.
  */
-function override_node_options_list_permissions($type) {
-  $name = node_type_get_name($type);
+function override_node_options_list_permissions($type, $name = NULL) {
+  if(!$name) $name = node_type_get_name($type);
   $type = check_plain($type);
 
   $permissions = array(
@@ -68,21 +70,21 @@ function override_node_options_form_alter(&$form, $form_state, $form_id) {
     $node = $form['#node'];
     
     // Add access to the 'Revision information: log message' field
-    $form['revision_information']['log']['#access'] = user_access('enter ' . $node->type . ' revision log entry');
+    $form['revision_information']['log']['#access'] = user_access('enter ' . $node->type . ' revision log entry') || user_access('enter __all__ revision log entry');
 
     // Add access to the 'Revision information' fieldset.
-    $form['revision_information']['revision']['#access'] = user_access('override ' . $node->type . ' revision option');
+    $form['revision_information']['revision']['#access'] = user_access('override ' . $node->type . ' revision option') || user_access('override __all__ revision option');
     $form['revision_information']['#access'] = element_get_visible_children($form['revision_information']);
 
     // Add access to the 'Authoring information' fieldset.
-    $form['author']['name']['#access'] = user_access('override ' . $node->type . ' authored by option');
-    $form['author']['date']['#access'] = user_access('override ' . $node->type . ' authored on option');
+    $form['author']['name']['#access'] = user_access('override ' . $node->type . ' authored by option') || user_access('override __all__ authored by option');
+    $form['author']['date']['#access'] = user_access('override ' . $node->type . ' authored on option') || user_access('override __all__ authored on option');
     $form['author']['#access'] |= element_get_visible_children($form['author']);
 
     // Add access to the 'Publishing options' fieldset.
-    $form['options']['status']['#access'] = user_access('override ' . $node->type . ' published option');
-    $form['options']['promote']['#access'] = user_access('override ' . $node->type . ' promote to front page option');
-    $form['options']['sticky']['#access'] = user_access('override ' . $node->type . ' sticky option');
+    $form['options']['status']['#access'] = user_access('override ' . $node->type . ' published option') || user_access('override __all__ published option');
+    $form['options']['promote']['#access'] = user_access('override ' . $node->type . ' promote to front page option') || user_access('override __all__ promote to front page option');
+    $form['options']['sticky']['#access'] = user_access('override ' . $node->type . ' sticky option') || user_access('override __all__ sticky option');
     $form['options']['#access'] |= element_get_visible_children($form['options']);
 
     // @todo Remove when http://drupal.org/node/683630 is fixed.
-- 
1.7.1

