/[drupal]/contributions/modules/override_node_options/override_node_options.module
ViewVC logotype

Diff of /contributions/modules/override_node_options/override_node_options.module

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.5.2.3, Sun Jan 11 13:38:13 2009 UTC revision 1.5.2.4, Tue Apr 7 10:06:41 2009 UTC
# Line 1  Line 1 
1  <?php  <?php
2  // $Id: override_node_options.module,v 1.5.2.2 2008/12/20 15:33:50 timmillwood Exp $  // $Id:
3    
4  /**  /**
5   * @file   * @file
# Line 13  Line 13 
13  function override_node_options_perm() {  function override_node_options_perm() {
14  $results = db_query("SELECT type FROM {node_type}");  $results = db_query("SELECT type FROM {node_type}");
15    
16  while ($value = db_fetch_array($results)) {  while ($value = db_result($results)) {
17     $perms[] = 'override ' . $value['type'] . ' published option';     $perms[] = 'override ' . $value . ' published option';
18     $perms[] = 'override ' . $value['type'] . ' promote to front page option';     $perms[] = 'override ' . $value . ' promote to front page option';
19     $perms[] = 'override ' . $value['type'] . ' sticky option';     $perms[] = 'override ' . $value . ' sticky option';
20     $perms[] = 'override ' . $value['type'] . ' revision option';     $perms[] = 'override ' . $value . ' revision option';
21     $perms[] = 'override ' . $value['type'] . ' authored on option';     $perms[] = 'override ' . $value . ' authored on option';
22     $perms[] = 'override ' . $value['type'] . ' authored by option';     $perms[] = 'override ' . $value . ' authored by option';
23  }  }
24    return $perms;    return $perms;
25  }  }
# Line 84  function override_node_options_admin_set Line 84  function override_node_options_admin_set
84                  );                  );
85                  }                  }
86    
                 if(module_exists(comment)){  
         $form['comment_settings'] = array(  
         '#type' => 'fieldset',  
         '#title' => t('Comment settings'),  
         '#description' => t('Options for the Comment settings fieldset on the node form.'),  
          );  
   
             $form['comment_settings']['override_node_options_cscollapsible'] = array(  
                 '#type' => 'checkbox',  
                 '#title' => t('Comment settings collapsible'),  
                 '#default_value' => variable_get('override_node_options_cscollapsible', 1),  
                 );  
                 $form['comment_settings']['override_node_options_cscollapsed'] = array(  
                 '#type' => 'checkbox',  
                 '#title' => t('Comment settings collapsed by default'),  
                 '#default_value' => variable_get('override_node_options_cscollapsed', 1),  
                 );  
                 }  
   
87                  if(module_exists(node)){                  if(module_exists(node)){
88          $form['authoring_information'] = array(          $form['authoring_information'] = array(
89          '#type' => 'fieldset',          '#type' => 'fieldset',
# Line 151  function override_node_options_admin_set Line 132  function override_node_options_admin_set
132  function override_node_options_form_alter(&$form, $form_state, $form_id) {  function override_node_options_form_alter(&$form, $form_state, $form_id) {
133    if (isset($form['type']) && $form['type']['#value'] .'_node_form' == $form_id && !user_access('administer nodes')) {    if (isset($form['type']) && $form['type']['#value'] .'_node_form' == $form_id && !user_access('administer nodes')) {
134      $node = $form['#node'];      $node = $form['#node'];
135    
136        /* make sure the preview shows the correct values */
137        if($node->op == 'Preview') {
138          _override_node_options_apply_keys($node);
139        }
140    
141      if(user_access('override ' . $form['type']['#value'] . ' published option') || user_access('override ' . $form['type']['#value'] . ' promote to front page option') || user_access('override ' . $form['type']['#value'] . ' sticky option') || user_access('override ' . $form['type']['#value'] . ' revision option')){      if(user_access('override ' . $form['type']['#value'] . ' published option') || user_access('override ' . $form['type']['#value'] . ' promote to front page option') || user_access('override ' . $form['type']['#value'] . ' sticky option') || user_access('override ' . $form['type']['#value'] . ' revision option')){
142    
143      $form['options'] = array(      $form['options'] = array(
# Line 198  function override_node_options_form_alte Line 184  function override_node_options_form_alte
184            '#type' => 'textfield',            '#type' => 'textfield',
185            '#title' => t('Authored by'),            '#title' => t('Authored by'),
186            '#maxlength' => 60,            '#maxlength' => 60,
187            '#default_value' => $node->name ? $node->name : '',            '#default_value' => $node->name,
188            '#weight' => -1,            '#weight' => -1,
189            '#description' => t('Leave blank for %anonymous.', array('%anonymous' => variable_get('anonymous', t('Anonymous')))),            '#description' => t('Leave blank for %anonymous.', array('%anonymous' => variable_get('anonymous', t('Anonymous')))),
190            );            );
# Line 223  function override_node_options_form_alte Line 209  function override_node_options_form_alte
209    }    }
210    
211     if (isset($form['type']) && $form['type']['#value'] .'_node_form' == $form_id) {     if (isset($form['type']) && $form['type']['#value'] .'_node_form' == $form_id) {
         if(module_exists(comment)){  
                 $form['comment_settings']['#collapsible'] = variable_get('override_node_options_cscollapsible', 1);  
                 $form['comment_settings']['#collapsed'] = variable_get('override_node_options_cscollapsed', 1);  
         }  
212          if(module_exists(node)){          if(module_exists(node)){
213                  $form['options']['#collapsible'] = variable_get('override_node_options_pocollapsible', 1);                  $form['options']['#collapsible'] = variable_get('override_node_options_pocollapsible', 1);
214                  $form['options']['#collapsed'] = variable_get('override_node_options_pocollapsed', 1);                  $form['options']['#collapsed'] = variable_get('override_node_options_pocollapsed', 1);
215          }          }
216          if(module_exists(node)){          if(module_exists(node)){
217                  $form['author']['#collapsible'] = variable_get('override_node_options_aicollapsible', 1);                  $form['options']['#collapsible'] = variable_get('override_node_options_aicollapsible', 1);
218                  $form['author']['#collapsed'] = variable_get('override_node_options_aicollapsed', 1);                  $form['options']['#collapsed'] = variable_get('override_node_options_aicollapsed', 1);
219          }          }
220          if(module_exists(upload)){          if(module_exists(upload)){
221                  $form['attachments']['#collapsible'] = variable_get('override_node_options_facollapsible', 1);                  $form['attachments']['#collapsible'] = variable_get('override_node_options_facollapsible', 1);
# Line 247  function override_node_options_form_alte Line 229  function override_node_options_form_alte
229  }  }
230    
231    
232  /**  function _override_node_options_apply_keys(&$node){
233   * Implementation of hook_nodeapi().      $keys = array(
  */  
 function override_node_options_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {  
   switch ($op) {  
     case 'presave':  
       // Allow users with 'override node publishing options' to change node  
       // options.  
       // TODO: Once in core, remove adminster nodes check.  
       if (!user_access('administer nodes')) {  
         $keys = array(  
234            'override_publishing_status' => 'status',            'override_publishing_status' => 'status',
235            'override_publishing_promote' => 'promote',            'override_publishing_promote' => 'promote',
236            'override_publishing_sticky' => 'sticky',            'override_publishing_sticky' => 'sticky',
237            'override_publishing_revision' => 'revision'            'override_publishing_revision' => 'revision'
238          );          );
239    
240            $options = variable_get('node_options_' . $node->type, NULL);
241            if($options){
242            foreach ($options as $option){
243                $default->$option = $option;
244            }
245            }
246    
247          foreach ($keys as $override_key => $real_key) {          foreach ($keys as $override_key => $real_key) {
248            if (isset($node->$override_key)) {            if (isset($node->$override_key)) {
249              $node->$real_key = $node->$override_key;              $node->$real_key = $node->$override_key;
250            }            }
251          }             elseif (isset($default->$real_key)) {
252          if(user_access('override ' . $node->type . ' authored on option')){                    $node->$real_key = TRUE;
253                      }
254                  }
255    
256          // Node creation date override          // Node creation date override
257          if ($node->date !== $node->override_authored_on || !empty($node->override_authored_on)) {          if ($node->date !== $node->override_authored_on || !empty($node->override_authored_on)) {
258             $node->date = $node->override_authored_on;
259           $node->created = !empty($node->override_authored_on) ? strtotime($node->override_authored_on) : time();           $node->created = !empty($node->override_authored_on) ? strtotime($node->override_authored_on) : time();
260          }          }
261          }  
262          if(user_access('override ' . $node->type . ' authored by option')){  
         if ($node->name !== $node->override_authored_by) {  
263            if (!empty($node->override_authored_by)) {            if (!empty($node->override_authored_by)) {
264              $account = user_load(array('name' => $node->override_authored_by));              $account = user_load(array('name' => $node->override_authored_by));
265                $node->name = $account->name;
266              $node->uid = $account->uid;              $node->uid = $account->uid;
267            }            }
268            else {            else {
269                $node->name = "";
270              $node->uid = 0;              $node->uid = 0;
271            }            }
         }  
         }  
   
272    
273    
274    }
275    
276    /**
277     * Implementation of hook_nodeapi().
278     */
279    function override_node_options_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
280      switch ($op) {
281        case 'presave':
282          // Allow users with 'override node publishing options' to change node
283          // options.
284          // TODO: Once in core, remove adminster nodes check.
285          if (!user_access('administer nodes')) {
286    
287            _override_node_options_apply_keys($node);
288    
289        }        }
290        break;        break;
291    }    }

Legend:
Removed from v.1.5.2.3  
changed lines
  Added in v.1.5.2.4

  ViewVC Help
Powered by ViewVC 1.1.2