/[drupal]/contributions/modules/event/contrib/datepicker/datepicker.module
ViewVC logotype

Diff of /contributions/modules/event/contrib/datepicker/datepicker.module

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

revision 1.1, Sun Jun 28 22:11:47 2009 UTC revision 1.2, Fri Jul 3 22:00:29 2009 UTC
# Line 1  Line 1 
1  <?php  <?php
2    // $Id$
3    
4  // $id  /**
5     * Implementation of hook_form_alter(). Adds a datepicker for start date
6     * and end date fields.
7     */
8  function datepicker_form_alter(&$form, $form_state, $form_id) {  function datepicker_form_alter(&$form, $form_state, $form_id) {
9    if (isset($form['type']['#value']) && $form_id == $form['type']['#value'] .'_node_form') {    if (isset($form['type']['#value']) && $form_id == $form['type']['#value'] .'_node_form') {
10      // node edit form      // Node edit form
11      if (variable_get('event_nodeapi_'. $form['type']['#value'], 'never') != 'never') {      if (variable_get('event_nodeapi_'. $form['type']['#value'], 'never') != 'never') {
12        $path = drupal_get_path('module', 'datepicker');        $path = drupal_get_path('module', 'datepicker');
13        drupal_add_css($path .'/datePicker.css');        drupal_add_css($path . '/datePicker.css');
14        drupal_add_js($path .'/date.js');        drupal_add_js($path . '/date.js');
15        drupal_add_js($path .'/jquery.datePicker.js');        drupal_add_js($path . '/jquery.datePicker.js');
16        $form['event']['start_exploded']['#suffix'] = '<a id="event-datepicker-start" href="#">'. t('Select start date') .'</a>';  
17          // Define the fields which should have a datepicker
18        datepicker_add_picker('start');        datepicker_add_picker('start');
       $form['event']['end_exploded']['#suffix'] = '<a id="event-datepicker-end" href="#">'. t('Select end date') .'</a>';  
19        datepicker_add_picker('end');        datepicker_add_picker('end');
20    
21          // datepicker.js will link each of the added fields to a datepicker
22          drupal_add_js($path . '/datepicker.js','module','footer');
23      }      }
24    }    }
25  }  }
26    
27  function datepicker_add_picker($value) {  /**
28  $js = <<<JAVASCRIPT_CODE   * Adds a variable with the field name to a Drupal.settings.datepicker.fields
29    $(function() {   * to be able to generate the datepickers on-the-fly.
30  $('#event-datepicker-$value')   *
31      .datePicker(   * @param $field
32        // associate the link with a date picker   *   The field name that will be dicriminating when looking for <select>
33        {   *   elements, it is also used to define the ID of the trigger link
34          createButton:false,   */
35          startDate:'01/01/2007',  function datepicker_add_picker($field) {
36          endDate:'31/12/2012'    // Add the field name to Drupal.settings.datepicker.fields
37        }    drupal_add_js(array('datepicker' => array('fields' => $field)), 'setting');
     ).bind(  
       // when the link is clicked display the date picker  
       'click',  
       function()  
       {  
         updateSelects($(this).dpGetSelected()[0]);  
         $(this).dpDisplay();  
         return false;  
       }  
     ).bind(  
       // when a date is selected update the SELECTs  
       'dateSelected',  
       function(e, selectedDate, \$td, state)  
       {  
         updateSelects(selectedDate);  
       }  
     ).bind(  
       'dpClosed',  
       function(e, selected)  
       {  
         updateSelects(selected[0]);  
       }  
     );  
   
   var updateSelects = function (selectedDate)  
   {  
     var selectedDate = new Date(selectedDate);  
     $('#edit-event-$value-exploded-day').val(selectedDate.getDate());  
     $('#edit-event-$value-exploded-month option[value=' + selectedDate.asString('mm') + ']').attr('selected', 'selected');  
     $('#edit-event-$value-exploded-year').val(selectedDate.getFullYear());  
   }  
   // listen for when the selects are changed and update the picker  
   $('#edit-event-$value-exploded-day, #edit-event-$value-exploded-month, #edit-event-$value-exploded-year')  
     .bind(  
       'change',  
       function()  
       {  
         var d = new Date(  
               $('#edit-event-$value-exploded-year').val(),  
               $('#edit-event-$value-exploded-month').val()-1,  
               $('#edit-event-$value-exploded-day').val()  
             );  
         $('#event-datepicker-$value').dpSetSelected(d.asString());  
       }  
     );  
   
   // and update the datePicker to reflect it...  
   $('#edit-event-$value-exploded-day').trigger('change');  
 });  
 JAVASCRIPT_CODE;  
   drupal_add_js($js,'inline','footer');  
38  }  }
   

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

  ViewVC Help
Powered by ViewVC 1.1.2