From 97ffdb2edc14c12502f75efef9622cecd89a3020 Mon Sep 17 00:00:00 2001 From: mistic100 Date: Sun, 18 May 2014 10:58:53 +0000 Subject: feature 2679 : allow to change creation time git-svn-id: http://piwigo.org/svn/trunk@28500 68402e56-0260-453c-a942-63ccdbb3a9ee --- admin/themes/default/js/datepicker.js | 73 ++++++++++++++++++++++++++--------- 1 file changed, 54 insertions(+), 19 deletions(-) (limited to 'admin/themes/default/js/datepicker.js') diff --git a/admin/themes/default/js/datepicker.js b/admin/themes/default/js/datepicker.js index ace38da13..eb6f31a6f 100644 --- a/admin/themes/default/js/datepicker.js +++ b/admin/themes/default/js/datepicker.js @@ -1,45 +1,69 @@ +jQuery.timepicker.log = jQuery.noop; // that's ugly, but the timepicker is acting weird and throws parsing errors + jQuery.fn.pwgDatepicker = function(options) { options = options || {}; return this.each(function() { var $this = jQuery(this), $target = jQuery('[name="'+ jQuery(this).data('datepicker') +'"]'), - value = $target.val().split('-'); + linked = !!$target.length; - function set(date) { - $this.datepicker('setDate', date); + if (linked) { // get value before init + var value = $target.val().split(' '); + } + + // custom setter + function set(date, init) { + $this.datetimepicker('setDate', date); if ($this.data('datepicker-start')) { - $start.datepicker('option', 'maxDate', date); + $start.datetimepicker('option', 'maxDate', date); } else if ($this.data('datepicker-end')) { - $end.datepicker('option', 'minDate', date); + if (!init) { // on init, "end" is not initialized yet (assuming "start" is before "end" in the DOM) + $end.datetimepicker('option', 'minDate', date); + } + } + + if (!date && linked) { + $target.val(''); } } // init picker - $this.datepicker(jQuery.extend({ - dateFormat: 'DD d MM yy', - altField: $target, + $this.datetimepicker(jQuery.extend({ + dateFormat: linked ? 'DD d MM yy' : 'yy-mm-dd', + timeFormat: 'HH:mm', + + altField: linked ? $target : null, altFormat: 'yy-mm-dd', + altTimeFormat: options.showTimepicker ? 'HH:mm:ss' : '', + autoSize: true, changeMonth : true, - changeYear: true + changeYear: true, + showTimepicker: false, + altFieldTimeOnly: false, + showSecond: false, + alwaysSetTime: false, + stepMinute: 5 }, options)); - // attach linked picker (for ranges) + // attach range pickers if ($this.data('datepicker-start')) { var $start = jQuery('[data-datepicker="'+ jQuery(this).data('datepicker-start') +'"]'); - $this.datepicker('option', 'onClose', function(date) { - $start.datepicker('option', 'maxDate', date); + $this.datetimepicker('option', 'onClose', function(date) { + $start.datetimepicker('option', 'maxDate', date); }); + + $this.datetimepicker('option', 'minDate', $start.datetimepicker('getDate')); } else if ($this.data('datepicker-end')) { var $end = jQuery('[data-datepicker="'+ jQuery(this).data('datepicker-end') +'"]'); - $this.datepicker('option', 'onClose', function(date) { - $end.datepicker('option', 'minDate', date); + $this.datetimepicker('option', 'onClose', function(date) { + $end.datetimepicker('option', 'minDate', date); }); } @@ -47,15 +71,26 @@ jQuery.fn.pwgDatepicker = function(options) { if ($this.data('datepicker-unset')) { jQuery('#'+ $this.data('datepicker-unset')).on('click', function(e) { e.preventDefault(); - - $target.val(''); - set(null); + set(null, false); }); } // set value from linked input - if (value.length == 3) { - set(new Date(value[0], value[1]-1, value[2])); + if (linked) { + if (value[0].length == 10 && !options.showTimepicker) { + set(jQuery.datepicker.parseDate('yy-mm-dd', value[0]), true); + } + else if (value.length == 2 && options.showTimepicker) { + set(jQuery.datepicker.parseDateTime('yy-mm-dd', 'HH:mm:ss', value.join(' ')), true); + } + else { + set(null, true); + } + } + + // autoSize not handled by timepicker + if (options.showTimepicker) { + $this.attr('size', parseInt($this.attr('size'))+6); } }); }; \ No newline at end of file -- cgit v1.2.3