[TYPO3-dev] ExtJS date pickers and date ranges (working prototype maybe for Core?)

Ernesto Baschny [cron IT] ernst at cron-it.de
Mon Oct 18 21:18:37 CEST 2010


Stefano Cecere schrieb am 14.10.2010 15:35:
> hi
> i just modified the date pickers to support (minimal) date ranges
> (i had the date2cal extension patched for this.. but moving to 4.4
> date2cal doesn't work well anymore, and i wanted all native)
> 
> the patch is very simple, and maybe it could be expanded to propose it
> for Core 4.5 ?
> 
> i did this:
> 
> in file t3lib/class.t3lib_tceforms.php i added a custom class to the
> date input element (in my case "fromTomorrow', since i'm interested in
> blocking selection of past dates)
> 
>         if (in_array('date', $evalList)) {
>             $inputId = uniqid('tceforms-datefield-');
>            
>             // XCLASS start
>             if ($config['range']['lower'] > 0 ) {
>                 $range = ' fromTomorrow';
>             }
>            
>             $cssClasses[] = 'tceforms-textfield tceforms-datefield'.$range;
>             // XCLASS end
>             $fieldAppendix = t3lib_iconWorks::getSpriteIcon(
>                 'actions-edit-pick-date',
>                 array(
>                     'style' => 'cursor:pointer;',
>                     'id' => 'picker-' . $inputId
>                 )
>             );
> 
> 
> 
> and file t3lib/js/extjs/tceforms.js cehcks for that class and adds
> native ExtJS minDate value
> 
> 
>     convertDateFieldsToDatePicker: function() {
>         var dateFields = Ext.select("input[id^=tceforms-date]");
>         dateFields.each(function(element) {
>             var index = element.dom.id.match(/tceforms-datefield-/) ? 0
> : 1;
>             var format = TYPO3.settings.datePickerUSmode ?
> TYPO3.settings.dateFormatUS : TYPO3.settings.dateFormat;
> 
>             var datepicker = element.next('span');
>                
>             // XCLASS: added minDate option
>             var minDate = (element.dom.className.match(/fromTomorrow/))
> ? new Date().add(Date.DAY, 1) : null;
> 
>             var menu = new Ext.menu.DateMenu({
>                 id:            'p' + element.dom.id,
>                 format:        format[index],
>                 value:        Date.parseDate(element.dom.value,
> format[index]),
>                 minDate:    minDate,
>                 handler:     function(picker, date){
>                     var relElement =
> Ext.getDom(picker.ownerCt.id.substring(1));
>                     relElement.value = date.format(format[index]);
> 
> 
> 
> 
> 
> it  should be easy to pass both lower and upper ranges (as normally
> defined in TCA) putting them as classes of the input element, and then
> modify the JS to use those values.
> 
> what do you think?
> could it be a useful core feature?

Yes, of course! We're looking forward for your patch and an RFC on the
core list! ;)

Cheers,
Ernesto




More information about the TYPO3-dev mailing list