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

Diff of /contributions/modules/fasttoggle/fasttoggle.module

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

revision 1.8.2.8, Sat Nov 8 11:38:19 2008 UTC revision 1.8.2.9, Tue Mar 31 10:42:22 2009 UTC
# Line 1  Line 1 
1  <?php  <?php
2  // $Id: fasttoggle.module,v 1.8.2.7 2008/11/08 11:24:54 timcn Exp $  // $Id: fasttoggle.module,v 1.8.2.8 2008/11/08 11:38:19 timcn Exp $
3    
4  /**  /**
5   * @file   * @file
6   * Enables fast toggling of binary or not so binary settings   * Enables fast toggling of binary or not so binary settings.
7   */   */
8    
9  /**  /**
# Line 131  function fasttoggle_help($path, $arg) { Line 131  function fasttoggle_help($path, $arg) {
131   *   Either a complete HTML link or a link array structure for use in hook_link.   *   Either a complete HTML link or a link array structure for use in hook_link.
132   */   */
133  function fasttoggle($title, $callback, $html = TRUE, $token = '', $class = '') {  function fasttoggle($title, $callback, $html = TRUE, $token = '', $class = '') {
134    static $sent = false;    static $sent = FALSE;
135    
136    // Only include the support files once.    // Only include the support files once.
137    if (!$sent) {    if (!$sent) {
138      $sent = true;      $sent = TRUE;
139      drupal_add_js(drupal_get_path('module', 'fasttoggle') .'/fasttoggle.js');      drupal_add_js(drupal_get_path('module', 'fasttoggle') .'/fasttoggle.js');
140      drupal_add_css(drupal_get_path('module', 'fasttoggle') .'/fasttoggle.css', 'module', 'all', FALSE);      drupal_add_css(drupal_get_path('module', 'fasttoggle') .'/fasttoggle.css', 'module', 'all', FALSE);
141    }    }
142    $attributes = array('class' => 'fasttoggle' . (!empty($class) ? ' '. $class : ''), 'title' => t('Toggle this setting'));    $attributes = array('class' => 'fasttoggle'. (!empty($class) ? ' '. $class : ''), 'title' => t('Toggle this setting'));
143    $query = drupal_get_destination() .'&token='. drupal_get_token($token);    $query = drupal_get_destination() .'&token='. drupal_get_token($token);
144    
145    if ($html) {    if ($html) {
# Line 182  function fasttoggle_get_options($type) { Line 182  function fasttoggle_get_options($type) {
182    return call_user_func_array('module_invoke_all', $args);    return call_user_func_array('module_invoke_all', $args);
183  }  }
184    
   
185  /**  /**
186   * Implementation of hook_fasttoggle_options().   * Implementation of hook_fasttoggle_options().
187   */   */
# Line 230  function fasttoggle_fasttoggle_options($ Line 229  function fasttoggle_fasttoggle_options($
229    return $return;    return $return;
230  }  }
231    
   
232  /**  /**
233   * Implementation of hook_form_alter().   * Implementation of hook_form_alter().
234   */   */
# Line 243  function fasttoggle_form_alter(&$form, $ Line 241  function fasttoggle_form_alter(&$form, $
241    
242          foreach ($form['admin']['status'] as $key => $status) {          foreach ($form['admin']['status'] as $key => $status) {
243            $status = intval($status['#value'] == t('published'));            $status = intval($status['#value'] == t('published'));
244            $form['admin']['status'][$key]['#value'] = fasttoggle($labels[$status], 'node/'. $key .'/toggle/status', true, 'status_'. $key, 'fasttoggle-status-node-status-'. $status);            $form['admin']['status'][$key]['#value'] = fasttoggle($labels[$status], 'node/'. $key .'/toggle/status', TRUE, 'status_'. $key, 'fasttoggle-status-node-status-'. $status);
245          }          }
246        }        }
247        break;        break;
# Line 254  function fasttoggle_form_alter(&$form, $ Line 252  function fasttoggle_form_alter(&$form, $
252    
253          foreach ($form['status'] as $key => $status) {          foreach ($form['status'] as $key => $status) {
254            $status = intval($status['#value'] == t('active'));            $status = intval($status['#value'] == t('active'));
255            $form['status'][$key]['#value'] = fasttoggle($labels[$status], 'user/'. $key .'/toggle/status', true, 'status_'. $key, 'fasttoggle-status-user-status-'. $status);            $form['status'][$key]['#value'] = fasttoggle($labels[$status], 'user/'. $key .'/toggle/status', TRUE, 'status_'. $key, 'fasttoggle-status-user-status-'. $status);
256          }          }
257        }        }
258        break;        break;
259    }    }
260  }  }
261    
   
262  /**  /**
263   * Implementation of hook_link().   * Implementation of hook_link().
264   */   */
265  function fasttoggle_link($type, $obj = null, $teaser = false) {  function fasttoggle_link($type, $obj = NULL, $teaser = FALSE) {
266    $links = array();    $links = array();
267    $options = fasttoggle_get_options($type, $obj);    $options = fasttoggle_get_options($type, $obj);
268    
# Line 273  function fasttoggle_link($type, $obj = n Line 270  function fasttoggle_link($type, $obj = n
270      switch ($type) {      switch ($type) {
271        case 'node':        case 'node':
272          foreach (array_keys($options) as $key) {          foreach (array_keys($options) as $key) {
273            $links['fasttoggle_'. $key] = fasttoggle($options[$key][intval($obj->$key)], 'node/'. $obj->nid .'/toggle/'. $key, false, $key .'_'. $obj->nid, 'fasttoggle-status-node-'. $key .'-'. intval($obj->$key));            $links['fasttoggle_'. $key] = fasttoggle($options[$key][intval($obj->$key)], 'node/'. $obj->nid .'/toggle/'. $key, FALSE, $key .'_'. $obj->nid, 'fasttoggle-status-node-'. $key .'-'. intval($obj->$key));
274          }          }
275          break;          break;
276        case 'comment':        case 'comment':
277          fasttoggle_load_comment($obj);          fasttoggle_load_comment($obj);
278          foreach (array_keys($options) as $key) {          foreach (array_keys($options) as $key) {
279            $links['fasttoggle_'. $key] = fasttoggle($options[$key][intval($obj->$key)], 'comment/toggle/'. $obj->cid .'/'. $key, false, $key .'_'. $obj->cid,  'fasttoggle-status-comment-'. $key .'-'. (1 - intval($obj->$key)));            $links['fasttoggle_'. $key] = fasttoggle($options[$key][intval($obj->$key)], 'comment/toggle/'. $obj->cid .'/'. $key, FALSE, $key .'_'. $obj->cid,  'fasttoggle-status-comment-'. $key .'-'. (1 - intval($obj->$key)));
280          }          }
281          break;          break;
282        // User is not one of the standard types for hook_link(). This        // User is not one of the standard types for hook_link(). This
283        // use enables adding of user links to a user profile.        // use enables adding of user links to a user profile.
284        case 'user':        case 'user':
285          foreach (array_keys($options) as $key) {          foreach (array_keys($options) as $key) {
286            $links['fasttoggle_'. $key] = fasttoggle($options[$key][intval($obj->$key)], 'user/'. $obj->uid .'/toggle/'. $key, false, $key .'_'. $obj->uid, 'fasttoggle-status-user-'. $key .'-'. $obj->$key);            $links['fasttoggle_'. $key] = fasttoggle($options[$key][intval($obj->$key)], 'user/'. $obj->uid .'/toggle/'. $key, FALSE, $key .'_'. $obj->uid, 'fasttoggle-status-user-'. $key .'-'. $obj->$key);
287          }          }
288          break;          break;
289      }      }
# Line 295  function fasttoggle_link($type, $obj = n Line 292  function fasttoggle_link($type, $obj = n
292    return $links;    return $links;
293  }  }
294    
   
 /**  
  * Implementation of hook_views_tables().  
  */  
 function fasttoggle_views_tables() {  
   $tables['fasttoggle'] = array(  
     'fields' => array(  
       'fasttoggle' => array(  
         'name' => t('Node: Fasttoggle'),  
         'handler' => 'fasttoggle_handler_field',  
         'query_handler' => 'fasttoggle_node_query_handler',  
         'sortable' => false,  
         'option' => array(  
           '#type' => 'select',  
           '#options' => array(  
             'status' => t('Status'),  
             'promote' => t('Promoted'),  
             'sticky' => t('Sticky'),  
             'comment' => t('Comment settings'),  
           ),  
         ),  
         'notafield' => 'true',  
         'help' => t('This field contains a fasttoggle link for the selected action for the current node.'),  
       ),  
     ),  
   );  
   
   return $tables;  
 }  
   
 /**  
  * Views query callback.  
  */  
 function fasttoggle_node_query_handler($fielddata, $fieldinfo, &$query) {  
   foreach (array('status', 'comment', 'promote', 'sticky') as $field) {  
     if (!in_array('node.'. $field, $query->fields)) {  
       $query->fields[] = 'node.'. $field;  
     }  
   }  
 }  
   
   
295  /**  /**
296   * Implementation of hook_fasttoggle_labels().   * Implementation of hook_fasttoggle_labels().
297   */   */
# Line 367  function fasttoggle_fasttoggle_labels($s Line 322  function fasttoggle_fasttoggle_labels($s
322    return $labels;    return $labels;
323  }  }
324    
   
325  /**  /**
326   * Returns an array with labels for a given setting.   * Returns an array with labels for a given setting.
327   */   */
# Line 389  function _fasttoggle_get_label($label, $ Line 343  function _fasttoggle_get_label($label, $
343    
344    return $lables[$style][$label];    return $lables[$style][$label];
345  }  }
   
   
 /**  
  * Views handler callback.  
  */  
 function fasttoggle_handler_field($fieldinfo, $fielddata, $value, $data) {  
   $options = fasttoggle_get_options('node', $data);  
   $key = $fielddata['options'];  
   
   if (isset($options[$key]) && isset($data->$key)) {  
     return fasttoggle($options[$key][intval($data->$key)], 'node/'. $data->nid .'/toggle/'. $key, true, $key .'_'. $data->nid);  
   }  
 }  

Legend:
Removed from v.1.8.2.8  
changed lines
  Added in v.1.8.2.9

  ViewVC Help
Powered by ViewVC 1.1.2