Index: webform.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/webform/webform.module,v retrieving revision 1.196.2.22 diff -u -r1.196.2.22 webform.module --- webform.module 10 Apr 2010 20:29:59 -0000 1.196.2.22 +++ webform.module 11 Apr 2010 05:44:32 -0000 @@ -1293,6 +1293,9 @@ function webform_client_form(&$form_state, $node, $submission, $is_draft = FALSE, $filter = TRUE) { global $user; + drupal_add_css(drupal_get_path('module', 'webform') . '/css/webform.css'); + drupal_add_js(drupal_get_path('module', 'webform') . '/js/webform.js'); + // Add a theme function for this form. $form['#theme'] = array('webform_form_' . $node->nid, 'webform_form'); Index: js/webform.js =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/webform/js/Attic/webform.js,v retrieving revision 1.1.2.1 diff -u -r1.1.2.1 webform.js --- js/webform.js 10 Apr 2010 22:02:08 -0000 1.1.2.1 +++ js/webform.js 11 Apr 2010 05:44:33 -0000 @@ -0,0 +1,59 @@ +// $Id$ + +/** + * JavaScript behaviors for the front-end display of webforms. + */ + +(function ($) { + +Drupal.behaviors.webform = function(context) { + // Calendar datepicker behavior. + Drupal.webform.datepicker(context); +}; + +Drupal.webform = Drupal.webform || {}; + +Drupal.webform.datepicker = function(context) { + $('div.webform-datepicker').each(function() { + var $webformDatepicker = $(this); + var $calendar = $webformDatepicker.find('input.webform-calendar'); + var startYear = $calendar[0].className.replace(/.*webform-calendar-start-(\d+).*/, '$1'); + var endYear = $calendar[0].className.replace(/.*webform-calendar-end-(\d+).*/, '$1'); + + // Set up the jQuery datepicker element. + $calendar.datepicker({ + dateFormat: 'yy-mm-dd', + yearRange: startYear + ':' + endYear, + onSelect: function(dateText, inst) { + var date = dateText.split('-'); + $webformDatepicker.find('select.year, input.year').val(+date[0]); + $webformDatepicker.find('select.month').val(+date[1]); + $webformDatepicker.find('select.day').val(+date[2]); + }, + beforeShow: function(input, inst) { + // Get the select list values. + var year = $webformDatepicker.find('select.year, input.year').val(); + var month = $webformDatepicker.find('select.month').val(); + var day = $webformDatepicker.find('select.day').val(); + + // If empty, default to the current year/month/day in the popup. + var today = new Date(); + year = year ? year : today.getFullYear(); + month = month ? month : today.getMonth() + 1; + day = day ? day : today.getDate(); + + // jQuery UI Datepicker will read the input field and base its date off + // of that, even though in our case the input field is a button. + $(input).val(year + '-' + month + '-' + day); + } + }); + + // Prevent the calendar button from submitting the form. + $calendar.click(function(event) { + $(this).focus(); + event.preventDefault(); + }); + }); +} + +})(jQuery); \ No newline at end of file Index: js/webform-admin.js =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/webform/js/webform-admin.js,v retrieving revision 1.1.2.1 diff -u -r1.1.2.1 webform-admin.js --- js/webform-admin.js 10 Apr 2010 22:02:08 -0000 1.1.2.1 +++ js/webform-admin.js 11 Apr 2010 05:44:33 -0000 @@ -15,7 +15,7 @@ Drupal.webform.tableSelectIndentation(context); } -Drupal.webform = new Object(); +Drupal.webform = Drupal.webform || {}; Drupal.webform.defaultValues = function(context) { var $fields = $('.webform-default-value:not(.error)', context); Index: components/date.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/webform/components/date.inc,v retrieving revision 1.29.2.7 diff -u -r1.29.2.7 date.inc --- components/date.inc 26 Mar 2010 00:09:10 -0000 1.29.2.7 +++ components/date.inc 11 Apr 2010 05:44:32 -0000 @@ -23,6 +23,7 @@ 'year_start' => '1900', 'year_end' => '2050', 'year_textfield' => 0, + 'datepicker' => 1, 'description' => '', ), ); @@ -39,6 +40,10 @@ 'webform_display_date' => array( 'arguments' => array('element' => NULL), ), + 'webform_calendar' => array( + 'arguments' => array('component' => NULL, 'calendar_classes' => NULL), + 'template' => 'templates/webform-calendar', + ), ); } @@ -66,6 +71,16 @@ '#access' => variable_get('configurable_timezones', 1) && module_exists('date_timezone'), ); + $form['display']['datepicker'] = array( + '#type' => 'checkbox', + '#title' => t('Enable popup calendar'), + '#default_value' => $component['extra']['datepicker'], + '#description' => t('Enable a JavaScript date picker next to the date field.'), + '#weight' => 2, + '#access' => function_exists('date_popup_load'), + '#parents' => array('extra', 'datepicker'), + ); + $form['display']['year_textfield'] = array( '#type' => 'checkbox', '#title' => t('Use a textfield for year'), @@ -111,12 +126,18 @@ '#prefix' => '