Skip to content

Commit

Permalink
feature 2679 : allow to change creation time
Browse files Browse the repository at this point in the history
git-svn-id: http://piwigo.org/svn/trunk@28500 68402e56-0260-453c-a942-63ccdbb3a9ee
  • Loading branch information
mistic100 committed May 18, 2014
1 parent 914b6d9 commit 97ffdb2
Show file tree
Hide file tree
Showing 51 changed files with 3,106 additions and 70 deletions.
4 changes: 2 additions & 2 deletions admin/batch_manager_global.php
Expand Up @@ -292,7 +292,7 @@
}
else
{
$date_creation = $_POST['date_creation'].' 00:00:00';
$date_creation = $_POST['date_creation'];
}

$datas = array();
Expand Down Expand Up @@ -565,7 +565,7 @@

// 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
Expand Down
22 changes: 2 additions & 20 deletions admin/batch_manager_unit.php
Expand Up @@ -78,15 +78,7 @@

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
{
Expand Down Expand Up @@ -222,16 +214,6 @@

$src_image = new SrcImage($row);

// creation date
if (!empty($row['date_creation']))
{
list($date) = explode(' ', $row['date_creation']);
}
else
{
$date = '';
}

$query = '
SELECT
id,
Expand Down Expand Up @@ -260,7 +242,7 @@
'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,
)
));
Expand Down
2 changes: 1 addition & 1 deletion admin/history.php
Expand Up @@ -570,7 +570,7 @@
{
// 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'] =
Expand Down
25 changes: 4 additions & 21 deletions admin/picture_modify.php
Expand Up @@ -127,7 +127,7 @@

if (!empty($_POST['date_creation']))
{
$data['date_creation'] = $_POST['date_creation'].' '.$_POST['date_creation_time'];
$data['date_creation'] = $_POST['date_creation'];
}
else
{
Expand Down Expand Up @@ -255,6 +255,8 @@
: @$row['author']
),

'DATE_CREATION' => $row['date_creation'],

'DESCRIPTION' =>
htmlspecialchars( isset($_POST['description']) ?
stripslashes($_POST['description']) : @$row['comment'] ),
Expand Down Expand Up @@ -316,26 +318,7 @@
)
);

// 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
Expand Down
73 changes: 54 additions & 19 deletions admin/themes/default/js/datepicker.js
@@ -1,61 +1,96 @@
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);
});
}

// attach unset button
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);
}
});
};
2 changes: 1 addition & 1 deletion admin/themes/default/template/batch_manager_global.tpl
Expand Up @@ -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();

Expand Down
2 changes: 1 addition & 1 deletion admin/themes/default/template/batch_manager_unit.tpl
Expand Up @@ -51,7 +51,7 @@ tagsCache.get(function(tags) {

{* <!-- DATEPICKER --> *}
jQuery(function(){ {* <!-- onLoad needed to wait localization loads --> *}
jQuery('[data-datepicker]').pwgDatepicker();
jQuery('[data-datepicker]').pwgDatepicker({ showTimepicker: true });
});

{* <!-- THUMBNAILS --> *}
Expand Down
13 changes: 10 additions & 3 deletions 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"}
{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"}
3 changes: 1 addition & 2 deletions admin/themes/default/template/picture_modify.tpl
Expand Up @@ -77,7 +77,7 @@ tagsCache.get(function(tags) {

{* <!-- DATEPICKER --> *}
jQuery(function(){ {* <!-- onLoad needed to wait localization loads --> *}
jQuery('[data-datepicker]').pwgDatepicker();
jQuery('[data-datepicker]').pwgDatepicker({ showTimepicker: true });
});
}());
{/footer_script}
Expand Down Expand Up @@ -140,7 +140,6 @@ jQuery(function(){ {* <!-- onLoad needed to wait localization loads --> *}
<p>
<strong>{'Creation date'|@translate}</strong>
<br>
<input type="hidden" name="date_creation_time" value="{$DATE_CREATION_TIME}">
<input type="hidden" name="date_creation" value="{$DATE_CREATION}">
<label>
<i class="icon-calendar"></i>
Expand Down
21 changes: 21 additions & 0 deletions themes/default/js/ui/i18n/jquery.ui.timepicker-af.js
@@ -0,0 +1,21 @@
/* Afrikaans translation for the jQuery Timepicker Addon */
/* Written by Deon Heyns */
(function($) {
$.timepicker.regional['af'] = {
timeOnlyTitle: 'Kies Tyd',
timeText: 'Tyd ',
hourText: 'Ure ',
minuteText: 'Minute',
secondText: 'Sekondes',
millisecText: 'Millisekondes',
microsecText: 'Mikrosekondes',
timezoneText: 'Tydsone',
currentText: 'Huidige Tyd',
closeText: 'Klaar',
timeFormat: 'HH:mm',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
};
$.timepicker.setDefaults($.timepicker.regional['af']);
})(jQuery);
21 changes: 21 additions & 0 deletions themes/default/js/ui/i18n/jquery.ui.timepicker-am.js
@@ -0,0 +1,21 @@
/* Armenian translation for the jQuery Timepicker Addon */
/* Written by Artavazd Avetisyan artavazda@hotmail.com */
(function($) {
$.timepicker.regional['am'] = {
timeOnlyTitle: 'Ընտրեք ժամանակը',
timeText: 'Ժամանակը',
hourText: 'Ժամ',
minuteText: 'Րոպե',
secondText: 'Վարկյան',
millisecText: 'Միլիվարկյան',
microsecText: 'Միկրովարկյան',
timezoneText: 'Ժամային գոտին',
currentText: 'Այժմ',
closeText: 'Փակել',
timeFormat: 'HH:mm',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
};
$.timepicker.setDefaults($.timepicker.regional['am']);
})(jQuery);
21 changes: 21 additions & 0 deletions themes/default/js/ui/i18n/jquery.ui.timepicker-bg.js
@@ -0,0 +1,21 @@
/* Bulgarian translation for the jQuery Timepicker Addon */
/* Written by Plamen Kovandjiev */
(function($) {
$.timepicker.regional['bg'] = {
timeOnlyTitle: 'Изберете време',
timeText: 'Време',
hourText: 'Час',
minuteText: 'Минути',
secondText: 'Секунди',
millisecText: 'Милисекунди',
microsecText: 'Микросекунди',
timezoneText: 'Часови пояс',
currentText: 'Сега',
closeText: 'Затвори',
timeFormat: 'HH:mm',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
};
$.timepicker.setDefaults($.timepicker.regional['bg']);
})(jQuery);
21 changes: 21 additions & 0 deletions themes/default/js/ui/i18n/jquery.ui.timepicker-ca.js
@@ -0,0 +1,21 @@
/* Catalan translation for the jQuery Timepicker Addon */
/* Written by Sergi Faber */
(function($) {
$.timepicker.regional['ca'] = {
timeOnlyTitle: 'Escollir una hora',
timeText: 'Hora',
hourText: 'Hores',
minuteText: 'Minuts',
secondText: 'Segons',
millisecText: 'Milisegons',
microsecText: 'Microsegons',
timezoneText: 'Fus horari',
currentText: 'Ara',
closeText: 'Tancar',
timeFormat: 'HH:mm',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
};
$.timepicker.setDefaults($.timepicker.regional['ca']);
})(jQuery);

0 comments on commit 97ffdb2

Please sign in to comment.