Index: contrib/datepicker/datepicker.js =================================================================== RCS file: contrib/datepicker/datepicker.js diff -N contrib/datepicker/datepicker.js --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ contrib/datepicker/datepicker.js 2 Jul 2009 14:13:52 -0000 @@ -0,0 +1,59 @@ +/* $Id$ */ +Drupal.behaviors.datepicker = function(context) { + for(field in Drupal.settings.datepicker.fields) { + var current_field = Drupal.settings.datepicker.fields[field]; + $('#edit-event-' + current_field + '-exploded-wrapper>div.container-inline').append($('').attr({id : 'event-datepicker-' + current_field, href : '#'}).text(Drupal.t('Select date'))); + $('#event-datepicker-' + current_field) + .datePicker( + { + createButton:false, + startDate:'01/01/2007', + endDate:'31/12/2012' + } + ).bind( + 'click', + function() { + updateSelects(this,$(this).dpGetSelected()[0]); + $(this).dpDisplay(); + return false; + } + ).bind( + 'dateSelected', + function(e, selectedDate, $td, status) { + updateSelects(this,selectedDate); + } + ).bind( + 'dpClosed', + function(e, selected) { + updateSelects(this,selected[0]); + } + ); + + var updateSelects = function (trigger, date) { + var selectedDate = new Date(date); + var fieldname = trigger.id.replace('event-datepicker-',''); + $('#edit-event-' + fieldname + '-exploded-day').val(selectedDate.getDate()); + $('#edit-event-' + fieldname + '-exploded-month option[value=' + selectedDate.asString('mm') + ']').attr('selected', 'selected'); + $('#edit-event-' + fieldname + '-exploded-year').val(selectedDate.getFullYear()); + } + + // listen for when the selects are changed and update the picker + $('#edit-event-' + current_field + '-exploded-day, #edit-event-' + current_field + '-exploded-month, #edit-event-' + current_field + '-exploded-year') + .bind( + 'change', + function() { + var reg_field = new RegExp("^edit-event-([^-]+)-.+",'i'); + var fieldname = this.id.replace(reg_field,'$1'); + var d = new Date( + $('#edit-event-' + fieldname + '-exploded-year').val(), + $('#edit-event-' + fieldname + '-exploded-month').val()-1, + $('#edit-event-' + fieldname + '-exploded-day').val() + ); + $('#event-datepicker-' + fieldname).dpSetSelected(d.asString()); + } + ); + + // and update the datePicker to reflect it... + $('#edit-event-' + current_field + '-exploded-day').trigger('change'); + } +}; Index: contrib/datepicker/datepicker.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/event/contrib/datepicker/datepicker.module,v retrieving revision 1.1 diff -u -p -r1.1 datepicker.module --- contrib/datepicker/datepicker.module 28 Jun 2009 22:11:47 -0000 1.1 +++ contrib/datepicker/datepicker.module 2 Jul 2009 13:57:55 -0000 @@ -1,85 +1,38 @@ '. t('Select start date') .''; + drupal_add_css($path . '/datePicker.css'); + drupal_add_js($path . '/date.js'); + drupal_add_js($path . '/jquery.datePicker.js'); + + // Define the fields which should have a datepicker datepicker_add_picker('start'); - $form['event']['end_exploded']['#suffix'] = ''. t('Select end date') .''; datepicker_add_picker('end'); + + // datepicker.js will link each of the added fields to a datepicker + drupal_add_js($path . '/datepicker.js','module','footer'); } } } -function datepicker_add_picker($value) { -$js = << + * elements, it is also used to define the ID of the trigger link + */ +function datepicker_add_picker($field) { + // Add the field name to Drupal.settings.datepicker.fields + drupal_add_js(array('datepicker' => array('fields' => $field)), 'setting'); } -