Changeset 22649
- Timestamp:
- 09/30/09 21:21:11 (4 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
plugins/pkToolkitPlugin/trunk/lib/widget/sfWidgetFormJQueryDate.class.php
r21644 r22649 68 68 $image = sprintf(', buttonImage: "%s", buttonImageOnly: true', $this->getOption('image')); 69 69 } 70 71 return parent::render($name, $value, $attributes, $errors). 72 $this->renderTag('input', array('type' => 'hidden', 'size' => 10, 'id' => $id = $this->generateId($name).'_jquery_control', 'disabled' => 'disabled')). 70 return 71 // Parent class select controls, our interface to Symfony 72 '<span style="display: none">' . parent::render($name, $value, $attributes, $errors) . '</span>' . 73 // Autopopulated by jQuery.Datepicker, we also allow direct editing and have hooks relating to that 74 $this->renderTag('input', array('type' => 'text', 'size' => 10, 'id' => $id = $this->generateId($name).'_jquery_control', 'onBlur' => $prefix . "_update_linked($('#$id').val())")) . 73 75 sprintf(<<<EOF 74 76 <script type="text/javascript"> 77 $(function() 78 { 75 79 function %s_read_linked() 76 80 { 77 \$("#%s").val(\$("#%s").val() + "/" + \$("#%s").val() + "/" + \$("#%s").val()); 78 81 var sel = '#%s'; 82 var month = '#%s'; 83 var day = '#%s'; 84 var year = '#%s'; 85 val = \$(month).val() + "/" + \$(day).val() + "/" + \$(year).val(); 86 if (val === '//') 87 { 88 val = ''; 89 } 90 \$(sel).val(val); 79 91 return {}; 80 92 } … … 82 94 function %s_update_linked(date) 83 95 { 84 \$("#%s").val(date.substring(3, 5)); 85 \$("#%s").val(date.substring(0, 2)); 86 \$("#%s").val(date.substring(6, 10)); 96 var components = date.match(/(\d+)\/(\d+)\/(\d\d\d\d)/); 97 if (!components) 98 { 99 if (date.length) 100 { 101 alert("The date must be in MM/DD/YYYY format. Example: 09/29/2009. Hint: select a date from the calendar."); 102 $('#$id').focus(); 103 } 104 // TODO: a way to indicate it's mandatory 105 return; 106 } 107 var month = "#%s"; 108 var day = "#%s"; 109 var year = "#%s"; 110 \$(month).val(components[1]); 111 \$(day).val(components[2]); 112 \$(year).val(components[3]); 87 113 } 88 114 115 %s_read_linked(); 116 89 117 \$("#%s").datepicker(\$.extend({}, { 118 dateFormat: "mm/dd/yyyy", 90 119 minDate: new Date(%s, 1 - 1, 1), 91 120 maxDate: new Date(%s, 12 - 1, 31), … … 95 124 %s 96 125 }, \$.datepicker.regional["%s"], %s)); 126 }); 97 127 </script> 98 128 EOF 99 129 , 100 130 $prefix, $id, 101 $this->generateId($name.'[ day]'), $this->generateId($name.'[month]'), $this->generateId($name.'[year]'),131 $this->generateId($name.'[month]'), $this->generateId($name.'[day]'), $this->generateId($name.'[year]'), 102 132 $prefix, 103 $this->generateId($name.'[day]'), $this->generateId($name.'[month]'), $this->generateId($name.'[year]'), 133 $this->generateId($name.'[month]'), $this->generateId($name.'[day]'), $this->generateId($name.'[year]'), 134 $prefix, 104 135 $id, 105 136 min($this->getOption('years')), max($this->getOption('years')),