Skip to content
Snippets Groups Projects
Commit 47334bb0 authored by alex_a's avatar alex_a
Browse files

dev #13579 [Follow-up]: Add 'whole day' option for calendar event.

  - Code refacto
  - Modify jquery-simple-datetimepicker to restore its pre-update
    behavior.
parent 856a6919
Branches
Tags
3 merge requests!258Dev/13872 Orphee Allow Hold Available Items,!180Master,!129Sprint4 Story #13579 Cms Agenda
......@@ -108,7 +108,8 @@ echo $this->article->getRefusMessage(); ?></textarea>
echo $this->datePicker(
'events_debut',
$this->article->getEventsDebut(),
$this->article->getAllDay()
$this->article->getAllDay(),
'all_day'
);
?>
</span>
......@@ -118,7 +119,8 @@ echo $this->article->getRefusMessage(); ?></textarea>
echo $this->datePicker(
'events_fin',
$this->article->getEventsFin(),
$this->article->getAllDay()
$this->article->getAllDay(),
'all_day'
);
?>
</span>
......
This diff is collapsed.
......@@ -26,65 +26,58 @@ class ZendAfi_View_Helper_DatePicker extends ZendAfi_View_Helper_BaseHelper {
* @param $maxYear maximum year to display
* @return html for the date picker
*/
public function datePicker($name, $varDate, $dateOnly = true) {
$options = array();
public function datePicker($name, $varDate, $dateOnly=true, $allDaySwitch='') {
$locale = Zend_Registry::get('locale');
$options = ['dateFormat' => 'DD/MM/YYYY'. ($dateOnly ? '' : ' hh:mm'),
'locale' => substr($locale,0,2),
'firstDayOfWeek' => 1,
'minuteInterval' => 15,
'closeOnSelected' => 'true',
'autodateOnStart' => false,
'dateOnly' => $dateOnly ? true : false,
'minTime' => '08:00',
'maxTime' => '23:00'];
$optionsdateonly = $optionswithhours = ['dateFormat' => 'DD/MM/YYYY',
'locale' => substr($locale,0,2),
'firstDayOfWeek' => 1,
'minuteInterval' => 15,
'closeOnSelected' => 'true',
'autodateOnStart' => false,
'dateOnly' => true];
$optionsdateonly = ['dateFormat' => 'DD/MM/YYYY',
'locale' => substr($locale,0,2),
'firstDayOfWeek' => 1,
'minuteInterval' => 15,
'closeOnSelected' => 'true',
'autodateOnStart' => false,
'dateOnly' => true];
$optionswithhours['dateFormat'] = 'DD/MM/YYYY hh:mm';
$optionswithhours['dateOnly'] = false;
$optionswithhours['minTime'] = '08:00';
$optionswithhours['maxTime'] = '23:00';
$optionswithhours['minuteInterval'] = 15;
$optionswithhours = ['dateFormat' => 'DD/MM/YYYY hh:mm',
'locale' => substr($locale,0,2),
'firstDayOfWeek' => 1,
'minuteInterval' => 15,
'closeOnSelected' => 'true',
'autodateOnStart' => false,
'dateOnly' => false,
'minTime' => '08:00',
'maxTime' => '23:00'];
$options = ($dateOnly) ? $optionsdateonly : $optionswithhours;
$jQSelector = '$("#date'.$name.'")';
Class_ScriptLoader::getInstance()
$script_loader = Class_ScriptLoader::getInstance()
->addOpacScript('mugifly-jquery-simple-datetimepicker/jquery.simple-dtpicker')
->addOPACStyleSheet('../js/mugifly-jquery-simple-datetimepicker/jquery.simple-dtpicker')
->addJQueryReady('$.datepicker.setDefaults($.datepicker.regional["' . (($locale == 'en_US') ? '' : 'fr' ). '"]);')
->addAdminScript('jquery_ui/i18n/jquery-ui-i18n.min')
->addJQueryReady('$("#date'.$name.'").appendDtpicker('.json_encode($options).');')
->addJQueryReady('
$("#all_day").click(function() {
->addJQueryReady('$("#date'.$name.'").appendDtpicker('.json_encode($options).');');
var datedebut = $("#dateevents_debut").handleDtpicker("getDate");
var datefin = $("#dateevents_fin").handleDtpicker("getDate");
$("#dateevents_debut").handleDtpicker("destroy");
$("#dateevents_fin").handleDtpicker("destroy");
if ($allDaySwitch) {
$script_loader->addJQueryReady('
$("#' . $allDaySwitch . '").click(function() {
var current = ' . $jQSelector . '.handleDtpicker("getDate");
if ($("#all_day").is(":checked")) {
$("#dateevents_debut").appendDtpicker('.json_encode($optionsdateonly).');
$("#dateevents_fin").appendDtpicker('.json_encode($optionsdateonly).');
' . $jQSelector . '.handleDtpicker("destroy");
if ($("#'. $allDaySwitch .'").is(":checked")) {
' . $jQSelector . '.appendDtpicker('.json_encode($optionsdateonly).');
' . $jQSelector . '.attr("maxlength", "10");
} else {
$("#dateevents_debut").appendDtpicker('.json_encode($optionswithhours).');
$("#dateevents_fin").appendDtpicker('.json_encode($optionswithhours).');
' . $jQSelector . '.appendDtpicker('.json_encode($optionswithhours).');
' . $jQSelector . '.attr("maxlength", "16");
}
$("#dateevents_debut").handleDtpicker("setDate", datedebut);
$("#dateevents_fin").handleDtpicker("setDate", datefin);
});
');
' . $jQSelector . '.handleDtpicker("show");
if (' . $jQSelector . '.val() != "")
' . $jQSelector . '.handleDtpicker("setDate", current);
' . $jQSelector . '.handleDtpicker("hide");
});');
}
return $this->view->formText($name,
$this->formatDate($varDate, 'dd/MM/YYYY'. ($dateOnly ? '' : ' HH:mm')),
......
......@@ -2,6 +2,7 @@
* jquery-simple-datetimepicker (jquery.simple-dtpicker.js)
* v1.12.0
* (c) Masanori Ohgita - 2014.
* Modified to support current date with dateFormat not containing hours part
* https://github.com/mugifly/jquery-simple-datetimepicker
*/
......@@ -368,7 +369,7 @@
}
// Convert a string (with convert-table) to a date object
var year, month, day, hour, min;
date = new Date();
var is_successful = false;
for(var i = 0; i < formats.length; i++){
if(m.length < i){
......@@ -378,30 +379,28 @@
var f = formats[i];
var d = m[i+1]; // Matched part of date
if(f == 'YYYY'){
year = normalizeYear(d);
is_successful = true;
date.setFullYear(normalizeYear(d));
is_successful = true;
} else if(f == 'YY'){
year = parseInt(d) + 2000;
is_successful = true;
date.setYear(parseInt(d) + 2000);
is_successful = true;
} else if(f == 'MM' || f == 'M'){
month = parseInt(d) - 1;
is_successful = true;
date.setMonth(parseInt(d) - 1);
is_successful = true;
} else if(f == 'DD' || f == 'D'){
day = d;
is_successful = true;
date.setDate(d);
is_successful = true;
} else if(f == 'hh' || f == 'h'){
hour = d;
is_successful = true;
date.setHours(d);
is_successful = true;
} else if(f == 'mm' || f == 'm'){
min = d;
is_successful = true;
date.setMinutes(d);
is_successful = true;
}
}
date = new Date(year, month, day, hour, min);
if(is_successful === true && isNaN(date) === false && isNaN(date.getDate()) === false){ // Parse successful
return date;
return date;
}
}
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment