CiviCrmDatePicker_wev8.js
3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/*
Copyright (c) 2004-2005, The Dojo Foundation
All Rights Reserved.
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
http://dojotoolkit.org/community/licensing.shtml
*/
dojo.provide("dojo.widget.CiviCrmDatePicker");
dojo.provide("dojo.widget.HtmlCiviCrmDatePicker");
dojo.require("dojo.widget.*");
dojo.require("dojo.event.*");
dojo.require("dojo.widget.DatePicker");
dojo.require("dojo.widget.html.DatePicker");
dojo.require("dojo.widget.html.TimePicker");
dojo.require("dojo.html");
dojo.widget.HtmlCiviCrmDatePicker = function(){
this.widgetType = "CiviCrmDatePicker";
this.idPrefix = "scheduled_date_time";
this.mode = "datetime"; // can also be date or time
this.datePicker = null;
this.timePicker = null;
// html nodes
this.dateHolderTd = null;
this.timeHolderTd = null;
this.formItemsTd = null;
this.formItemsTr = null;
this.monthSelect = null;
this.daySelect = null;
this.yearSelect = null;
this.hourSelect = null;
this.minSelect = null;
this.apSelect = null;
this.templatePath = dojo.uri.dojoUri("src/widget/templates/HtmlCiviCrmDatePicker.html");
this.modeFormats = {
date: "MdY",
time: "hiA"
};
this.formatMappings = {
"M": "monthSelect",
"d": "daySelect",
"Y": "yearSelect",
"h": "hourSelect",
"i": "minSelect",
"A": "apSelect"
};
this.setDateSelects = function(){
var dateObj = this.datePicker.date;
this.monthSelect.value = new String(dateObj.getMonth()+1);
this.daySelect.value = new String(dateObj.getDate());
this.yearSelect.value = new String(dateObj.getFullYear());
}
this.setTimeSelects = function(){
var st = this.timePicker.selectedTime;
this.hourSelect.value = new String(st.hour);
this.minSelect.value = new String(st.minute);
this.apSelect.value = st.amPm.toUpperCase();
}
this.fillInTemplate = function(args, frag){
var nr = frag["dojo:"+this.widgetType.toLowerCase()]["nodeRef"];
var sref = {};
while(nr.firstChild){
if(nr.firstChild.name){
sref[nr.firstChild.name] = nr.firstChild;
}
this.formItemsTd.appendChild(nr.firstChild);
}
if(this.mode.indexOf("date") != -1){
this.datePicker = dojo.widget.fromScript("DatePicker", {}, this.dateHolderTd);
dojo.event.connect( this.datePicker, "onSetDate",
this, "setDateSelects");
var mfd = this.modeFormats.date;
for(var x=0; x<mfd.length; x++){
this[this.formatMappings[mfd[x]]] = sref[this.idPrefix+"["+mfd[x]+"]"];
fr = this[this.formatMappings[mfd[x]]].form;
}
}
if(this.mode.indexOf("time") != -1){
this.timePicker = dojo.widget.fromScript("TimePicker", {}, this.timeHolderTd);
dojo.event.connect( this.timePicker, "onSetTime",
this, "setTimeSelects");
var mfd = this.modeFormats.time;
for(var x=0; x<mfd.length; x++){
this[this.formatMappings[mfd[x]]] = sref[this.idPrefix+"["+mfd[x]+"]"];
}
}
}
this.unhide = function(){
this.formItemsTr.style.display = "";
}
this.postCreate = function(){
dojo.event.kwConnect({
type: "before",
srcObj: dojo.html.getParentByType(this.domNode, "form"),
srcFunc: "onsubmit",
targetObj: this,
targetFunc: "unhide"
});
}
}
dojo.inherits(dojo.widget.HtmlCiviCrmDatePicker, dojo.widget.HtmlWidget);
dojo.widget.tags.addParseTreeHandler("dojo:civicrmdatepicker");