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 public static final String DATE_FORMAT_PROPERTY = "dateFormat";
57 public static final String TIME_FORMAT_PROPERTY = "timeFormat";
58 public static final String TIME_PROPERTY = "time";
59
60
61
62
63
64 @Override
65 protected void doBeforeDrawHtml() {
66 super.doBeforeDrawHtml();
67
68 this.getButton().setLabel(MessagesManager.get("dialog.date.select"));
69 this.getButton().setSaveInfo(false);
70
71
72 String format = this.getConfigValue(DATE_FORMAT_PROPERTY, "yyyy-MM-dd");
73 String jsFormat = this.getConfigValue("jsDateFormat", "%Y-%m-%d");
74 boolean displayTime = !this.getConfigValue(TIME_PROPERTY, "false").equals("false");
75 boolean singleClick = this.getConfigValue("doubleClick", "false").equals("false");
76 if (displayTime) {
77 format += "' '" + this.getConfigValue(TIME_FORMAT_PROPERTY, "HH:mm:ss");
78 jsFormat += " " + this.getConfigValue("jsTimeFormat", "%k:%M:%S");
79 }
80
81 String inputFieldId = this.getName();
82 getButton().setId("butt_"+inputFieldId);
83 String buttonId = this.getButton().getId();
84 String calId = "cal_"+buttonId;
85 getButton().setOnclick(calId+".show()");
86
87 final String calendarScript = "<script type=\"text/javascript\">" +
88 " var "+calId+" = Calendar.setup({\n" +
89 " inputField : \""+inputFieldId+"\"," +
90 " ifFormat : \""+jsFormat+"\"," +
91 " showsTime : "+String.valueOf(displayTime)+"," +
92 " timeFormat : \"24\"," +
93 " cache : true,"+
94 " button : \""+buttonId+"\"," +
95 " singleClick : \""+String.valueOf(singleClick)+"\"," +
96
97 " step : 1" +
98 " });</script>";
99
100 this.getButton().setHtmlPost(calendarScript);
101
102 if (this.getStorageNode() != null && this.getStorageNode().getNodeData(this.getName()).isExist()) {
103 Calendar valueCalendar = this.getStorageNode().getNodeData(this.getName()).getDate();
104
105
106 if (valueCalendar != null) {
107 Calendar local = DateUtil.getLocalCalendarFromUTC(valueCalendar);
108 String value = DateFormatUtils.format(local.getTime(), format);
109 this.setValue(value);
110 }
111 }
112
113 this.setConfig("type", this.getConfigValue("type", PropertyType.TYPENAME_DATE));
114 }
115 }