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/batch_manager_global.php | 4 +- admin/batch_manager_unit.php | 22 +------ admin/history.php | 2 +- admin/picture_modify.php | 25 ++------ admin/themes/default/js/datepicker.js | 73 ++++++++++++++++------ .../default/template/batch_manager_global.tpl | 2 +- .../themes/default/template/batch_manager_unit.tpl | 2 +- .../default/template/include/datepicker.inc.tpl | 13 +++- admin/themes/default/template/picture_modify.tpl | 3 +- 9 files changed, 76 insertions(+), 70 deletions(-) (limited to 'admin') diff --git a/admin/batch_manager_global.php b/admin/batch_manager_global.php index 1d72e2e2d..c8bc38dad 100644 --- a/admin/batch_manager_global.php +++ b/admin/batch_manager_global.php @@ -292,7 +292,7 @@ DELETE } else { - $date_creation = $_POST['date_creation'].' 00:00:00'; + $date_creation = $_POST['date_creation']; } $datas = array(); @@ -565,7 +565,7 @@ if (count($page['cat_elements_id']) > 0) // creation date $template->assign('DATE_CREATION', - empty($_POST['date_creation']) ? date('y-n-j') : $_POST['date_creation'] + empty($_POST['date_creation']) ? date('Y-m-d').' 00:00:00' : $_POST['date_creation'] ); // image level options diff --git a/admin/batch_manager_unit.php b/admin/batch_manager_unit.php index 068182050..bbbe4810c 100644 --- a/admin/batch_manager_unit.php +++ b/admin/batch_manager_unit.php @@ -78,15 +78,7 @@ SELECT id, date_creation if (!empty($_POST['date_creation-'.$row['id']])) { - if (!empty($row['date_creation'])) - { - list(, $time) = explode(' ', $row['date_creation']); - } - else - { - $time = '00:00:00'; - } - $data['date_creation'] = $_POST['date_creation-'.$row['id']].' '.$time; + $data['date_creation'] = $_POST['date_creation-'.$row['id']]; } else { @@ -222,16 +214,6 @@ SELECT * $src_image = new SrcImage($row); - // creation date - if (!empty($row['date_creation'])) - { - list($date) = explode(' ', $row['date_creation']); - } - else - { - $date = ''; - } - $query = ' SELECT id, @@ -260,7 +242,7 @@ SELECT 'AUTHOR' => htmlspecialchars(@$row['author']), 'LEVEL' => !empty($row['level'])?$row['level']:'0', 'DESCRIPTION' => htmlspecialchars(@$row['comment']), - 'DATE_CREATION' => $date, + 'DATE_CREATION' => $row['date_creation'], 'TAGS' => $tag_selection, ) )); diff --git a/admin/history.php b/admin/history.php index 29f59b6b2..68b997736 100644 --- a/admin/history.php +++ b/admin/history.php @@ -570,7 +570,7 @@ else { // by default, at page load, we want the selected date to be the current // date - $form['start'] = $form['end'] = date('Y-n-j'); + $form['start'] = $form['end'] = date('Y-m-d'); $form['types'] = $types; // Hoverbox by default $form['display_thumbnail'] = diff --git a/admin/picture_modify.php b/admin/picture_modify.php index d476c560f..1b99e5f55 100644 --- a/admin/picture_modify.php +++ b/admin/picture_modify.php @@ -127,7 +127,7 @@ if (isset($_POST['submit'])) if (!empty($_POST['date_creation'])) { - $data['date_creation'] = $_POST['date_creation'].' '.$_POST['date_creation_time']; + $data['date_creation'] = $_POST['date_creation']; } else { @@ -255,6 +255,8 @@ $template->assign( : @$row['author'] ), + 'DATE_CREATION' => $row['date_creation'], + 'DESCRIPTION' => htmlspecialchars( isset($_POST['description']) ? stripslashes($_POST['description']) : @$row['comment'] ), @@ -316,26 +318,7 @@ $template->assign( ) ); -// creation date -unset($day, $month, $year); - -if (!empty($row['date_creation'])) -{ - list($date, $time) = explode(' ', $row['date_creation']); -} -else -{ - $date = ''; - $time = '00:00:00'; -} - -$template->assign( - array( - 'DATE_CREATION' => $date, - 'DATE_CREATION_TIME' => $time, - ) - ); - +// categories $query = ' SELECT category_id, uppercats FROM '.IMAGE_CATEGORY_TABLE.' AS ic 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 diff --git a/admin/themes/default/template/batch_manager_global.tpl b/admin/themes/default/template/batch_manager_global.tpl index 148f48735..631a00f0d 100644 --- a/admin/themes/default/template/batch_manager_global.tpl +++ b/admin/themes/default/template/batch_manager_global.tpl @@ -60,7 +60,7 @@ jQuery(document).ready(function() { {footer_script require='jquery.tokeninput'} jQuery(document).ready(function() {ldelim} - jQuery('[data-datepicker]').pwgDatepicker(); + jQuery('[data-datepicker]').pwgDatepicker({ showTimepicker: true }); jQuery("a.preview-box").colorbox(); diff --git a/admin/themes/default/template/batch_manager_unit.tpl b/admin/themes/default/template/batch_manager_unit.tpl index e282a5e0b..d0d06e11d 100644 --- a/admin/themes/default/template/batch_manager_unit.tpl +++ b/admin/themes/default/template/batch_manager_unit.tpl @@ -51,7 +51,7 @@ tagsCache.get(function(tags) { {* *} jQuery(function(){ {* *} - jQuery('[data-datepicker]').pwgDatepicker(); + jQuery('[data-datepicker]').pwgDatepicker({ showTimepicker: true }); }); {* *} diff --git a/admin/themes/default/template/include/datepicker.inc.tpl b/admin/themes/default/template/include/datepicker.inc.tpl index d8202703d..92e40aa3a 100644 --- a/admin/themes/default/template/include/datepicker.inc.tpl +++ b/admin/themes/default/template/include/datepicker.inc.tpl @@ -1,9 +1,16 @@ -{combine_script id='datepicker.js' load='footer' require='jquery.ui.datepicker' path='admin/themes/default/js/datepicker.js'} +{combine_script id='jquery.ui.timepicker-addon' load='footer' require='jquery.ui.datepicker,jquery.ui.slider' path="themes/default/js/ui/jquery.ui.timepicker-addon.js"} +{combine_script id='datepicker.js' load='footer' require='jquery.ui.timepicker-addon' path='admin/themes/default/js/datepicker.js'} {assign var="datepicker_language" value="themes/default/js/ui/i18n/jquery.ui.datepicker-`$lang_info.code`.js"} +{if "PHPWG_ROOT_PATH"|@constant|@cat:$datepicker_language|@file_exists} +{combine_script id="jquery.ui.datepicker-$lang_info.code" load='footer' require='jquery.ui.datepicker' path=$datepicker_language} +{/if} +{assign var="timepicker_language" value="themes/default/js/ui/i18n/jquery.ui.timepicker-`$lang_info.code`.js"} {if "PHPWG_ROOT_PATH"|@constant|@cat:$datepicker_language|@file_exists} -{combine_script id="jquery.ui.datepicker-$lang_info.code" load='footer' path=$datepicker_language} +{combine_script id="jquery.ui.timepicker-$lang_info.code" load='footer' require='jquery.ui.timepicker-addon' path=$timepicker_language} {/if} -{combine_css path="themes/default/js/ui/theme/jquery.ui.datepicker.css"} \ No newline at end of file +{combine_css path="themes/default/js/ui/theme/jquery.ui.slider.css"} +{combine_css path="themes/default/js/ui/theme/jquery.ui.datepicker.css"} +{combine_css path="themes/default/js/ui/theme/jquery.ui.timepicker-addon.css"} \ No newline at end of file diff --git a/admin/themes/default/template/picture_modify.tpl b/admin/themes/default/template/picture_modify.tpl index 99a53b247..f48a152d6 100644 --- a/admin/themes/default/template/picture_modify.tpl +++ b/admin/themes/default/template/picture_modify.tpl @@ -77,7 +77,7 @@ tagsCache.get(function(tags) { {* *} jQuery(function(){ {* *} - jQuery('[data-datepicker]').pwgDatepicker(); + jQuery('[data-datepicker]').pwgDatepicker({ showTimepicker: true }); }); }()); {/footer_script} @@ -140,7 +140,6 @@ jQuery(function(){ {* *}

{'Creation date'|@translate}
-