Files
server/usr/share/psa-horde/nag/js/calendar.js
2026-01-07 20:52:11 +01:00

124 lines
3.0 KiB
JavaScript

/**
* calendar.js - Calendar related javascript.
*
* Copyright 2010-2017 Horde LLC (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.horde.org/licenses/gpl.
*
* @author Michael Slusarz <slusarz@horde.org>
* @category Horde
* @package Nag
*/
var NagCalendar =
{
calendarSelect: function(e)
{
var prefix, radio;
switch (e.element().identify()) {
case 'dueimg':
prefix = 'due';
radio = 'due_type_specified';
break;
case 'recur_endimg':
prefix = 'recur_end';
radio = 'recur_end_specified';
break;
case 'startimg':
prefix = 'start';
radio = 'start_date_specified';
break;
default:
return;
}
$(prefix + '_date').setValue(e.memo.toString(Nag.conf.date_format));
$(radio).setValue(1);
this.updateWday(prefix);
},
updateWday: function(p)
{
var d = this.getFormDate(p);
if (d) {
$(p + '_wday').update('(' + Horde_Calendar.fullweekdays[d.getDay()] + ')');
}
},
getFormDate: function(p)
{
return Date.parseExact($F(p + '_date'), Nag.conf.date_format);
},
clickHandler: function(e)
{
if (e.isRightClick()) {
return;
}
var elt = e.element(),
id = elt.readAttribute('id');
switch (id) {
case 'dueimg':
case 'startimg':
case 'recur_endimg':
Horde_Calendar.open(elt, this.getFormDate(id.slice(0, -3)));
e.stop();
break;
case 'due_am_pm_am':
case 'due_am_pm_am_label':
case 'due_am_pm_pm':
case 'due_am_pm_pm_label':
$('due_type_specified').setValue(1);
break;
}
},
changeHandler: function(e)
{
switch (e.element().readAttribute('id')) {
case 'due_date':
this.updateWday('due');
// Fall-through
case 'due_time':
$('due_type_specified').setValue(1);
break;
case 'start_date':
this.updateWday('start');
// Fall-through
case 'start_time':
$('start_date_specified').setValue(1);
break;
case 'alarm_unit':
case 'alarm_value':
$('alarmon').setValue(1);
break;
}
},
onDomLoad: function()
{
this.updateWday('due');
this.updateWday('start');
this.updateWday('recur_end');
$('nag_form_task_active').observe('click', this.clickHandler.bindAsEventListener(this));
$('nag_form_task_active').observe('change', this.changeHandler.bindAsEventListener(this));
}
};
document.observe('dom:loaded', NagCalendar.onDomLoad.bind(NagCalendar));
document.observe('Horde_Calendar:select', NagCalendar.calendarSelect.bindAsEventListener(NagCalendar));