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 package info.magnolia.cms.gui.dialog;
35
36 import info.magnolia.cms.i18n.MessagesManager;
37 import info.magnolia.cms.util.DateUtil;
38
39 import java.util.Calendar;
40
41 import javax.jcr.PropertyType;
42
43 import org.apache.commons.lang.time.DateFormatUtils;
44 import org.slf4j.Logger;
45 import org.slf4j.LoggerFactory;
46
47
48
49
50
51
52 public class DialogDate extends DialogEditWithButton {
53
54 Logger log = LoggerFactory.getLogger(DialogDate.class);
55
56
57
58
59
60 @Override
61 protected void doBeforeDrawHtml() {
62 super.doBeforeDrawHtml();
63
64 this.getButton().setLabel(MessagesManager.get("dialog.date.select"));
65 this.getButton().setSaveInfo(false);
66
67
68 String format = "yyyy-MM-dd";
69 String jsFormat = "%Y-%m-%d";
70 boolean displayTime = !this.getConfigValue("time", "false").equals("false");
71 boolean singleClick = this.getConfigValue("doubleClick", "false").equals("false");
72 if (displayTime) {
73 format += "' 'HH:mm:ss";
74 jsFormat += " %k:%M:%S";
75 }
76
77 String inputFieldId = this.getName();
78 getButton().setId("butt_"+inputFieldId);
79 String buttonId = this.getButton().getId();
80 String calId = "cal_"+buttonId;
81 getButton().setOnclick(calId+".show()");
82
83 final String calendarScript = "<script type=\"text/javascript\">" +
84 " var "+calId+" = Calendar.setup({\n" +
85 " inputField : \""+inputFieldId+"\"," +
86 " ifFormat : \""+jsFormat+"\"," +
87 " showsTime : "+String.valueOf(displayTime)+"," +
88 " timeFormat : \"24\"," +
89 " cache : true,"+
90 " button : \""+buttonId+"\"," +
91 " singleClick : \""+String.valueOf(singleClick)+"\"," +
92
93 " step : 1" +
94 " });</script>";
95
96 this.getButton().setHtmlPost(calendarScript);
97
98 if (this.getStorageNode() != null && this.getStorageNode().getNodeData(this.getName()).isExist()) {
99 Calendar valueCalendar = this.getStorageNode().getNodeData(this.getName()).getDate();
100
101
102 if (valueCalendar != null) {
103 Calendar local = DateUtil.getLocalCalendarFromUTC(valueCalendar);
104 String value = DateFormatUtils.format(local.getTime(), format);
105 this.setValue(value);
106 }
107 }
108
109 this.setConfig("type", this.getConfigValue("type", PropertyType.TYPENAME_DATE));
110 }
111 }