Skip to content

Commit

Permalink
Merge pull request #2003 from dotCMS/issue-1729-date-fields-accept-null
Browse files Browse the repository at this point in the history
#1729 null dates working for Oracle
  • Loading branch information
Jason Tesser committed Feb 5, 2013
2 parents 16c7de4 + 0ac5209 commit 017d2a3
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 37 deletions.
36 changes: 23 additions & 13 deletions dotCMS/html/portlet/ext/contentlet/field/edit_field.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -261,31 +261,36 @@
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
Date dateValue = new Date();
Date dateValue = null;
if(value instanceof String && value != null) {
dateValue = df.parse((String) value);
} else if(value != null) {
dateValue = (Date)value;
}
GregorianCalendar cal = new GregorianCalendar();
cal.setTime((Date) dateValue);
int dayOfMonth = cal.get(GregorianCalendar.DAY_OF_MONTH);
int month = cal.get(GregorianCalendar.MONTH) + 1;
int year = cal.get(GregorianCalendar.YEAR) ;%>
int dayOfMonth=0;
int month=0;
int year=0;
GregorianCalendar cal=null;
if(dateValue!=null) {
cal = new GregorianCalendar();
cal.setTime((Date) dateValue);
dayOfMonth = cal.get(GregorianCalendar.DAY_OF_MONTH);
month = cal.get(GregorianCalendar.MONTH) + 1;
year = cal.get(GregorianCalendar.YEAR) ;
}%>


<input type="hidden" id="<%=field.getVelocityVarName()%>"
name="<%=field.getFieldContentlet()%>"
value="<%= df.format(dateValue) %>" />
value="<%= dateValue!=null ? df.format(dateValue) : "" %>" />

<%if (field.getFieldType().equals(Field.FieldType.DATE.toString())
|| field.getFieldType().equals(Field.FieldType.DATE_TIME.toString())) {%>

<input type="text"
value="<%= df2.format(dateValue) %>"
value="<%= dateValue!=null ? df2.format(dateValue) : "" %>"
onChange="updateDate('<%=field.getVelocityVarName()%>');"
dojoType="dijit.form.DateTextBox"
name="<%=field.getFieldContentlet()%>Date"
Expand All @@ -297,12 +302,17 @@
if (field.getFieldType().equals(Field.FieldType.TIME.toString())
|| field.getFieldType().equals(Field.FieldType.DATE_TIME.toString())) {
String hour = (cal.get(GregorianCalendar.HOUR_OF_DAY) < 10) ? "0"+cal.get(GregorianCalendar.HOUR_OF_DAY) : ""+cal.get(GregorianCalendar.HOUR_OF_DAY);
String min = (cal.get(GregorianCalendar.MINUTE) < 10) ? "0"+cal.get(GregorianCalendar.MINUTE) : ""+cal.get(GregorianCalendar.MINUTE);
String hour=null;
String min=null;
if(cal!=null) {
hour = (cal.get(GregorianCalendar.HOUR_OF_DAY) < 10) ? "0"+cal.get(GregorianCalendar.HOUR_OF_DAY) : ""+cal.get(GregorianCalendar.HOUR_OF_DAY);
min = (cal.get(GregorianCalendar.MINUTE) < 10) ? "0"+cal.get(GregorianCalendar.MINUTE) : ""+cal.get(GregorianCalendar.MINUTE);
}
%>
<input type="text" id="<%=field.getVelocityVarName()%>Time"
name="<%=field.getFieldContentlet()%>Time"
value='T<%=hour+":"+min%>:00'
value='<%=cal!=null ? "T"+hour+":"+min+":00" : ""%>'
onChange="updateDate('<%=field.getVelocityVarName()%>');"
dojoType="dijit.form.TimeTextBox" style="width: 100px;"
<%=field.isReadOnly()?"disabled=\"disabled\"":""%>/>
Expand Down
50 changes: 30 additions & 20 deletions dotCMS/html/portlet/ext/contentlet/field/edit_field_js.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -71,27 +71,37 @@ var cmsfile=null;
function updateDate(varName) {
var field = $(varName);
var dateValue ="";
var myDate = dijit.byId(varName + "Date");
var x = new Date();
if(myDate != null){
x = myDate.getValue();
var datePart=dijit.byId(varName + "Date");
var timePart=dijit.byId(varName + 'Time');
if(datePart != null) {
var x = datePart.getValue();
if(x) {
var month = (x.getMonth() +1) + "";
month = (month.length < 2) ? "0" + month : month;
var day = (x.getDate() ) + "";
day = (day.length < 2) ? "0" + day : day;
year = x.getFullYear();
dateValue= year + "-" + month + "-" + day + " ";
}
}
var month = (x.getMonth() +1) + "";
month = (month.length < 2) ? "0" + month : month;
var day = (x.getDate() ) + "";
day = (day.length < 2) ? "0" + day : day;
year = x.getFullYear();
dateValue= year + "-" + month + "-" + day + " ";
if (dijit.byId(varName + 'Time') != null) {
var time = dijit.byId(varName + 'Time').value;
var hour = time.getHours();
if(hour < 10) hour = "0" + hour;
var min = time.getMinutes();
if(min < 10) min = "0" + min;
dateValue += hour + ":" + min;
} else {
dateValue += "00:00";
if(datePart==null || dateValue!="") {
// if it is just time or date_time but the value exists
if (timePart != null) {
var time = timePart.value;
if(time) {
var hour = time.getHours();
if(hour < 10) hour = "0" + hour;
var min = time.getMinutes();
if(min < 10) min = "0" + min;
dateValue += hour + ":" + min;
if(datePart==null)
dateValue+=":00";
}
} else {
dateValue += "00:00";
}
}
field.value = dateValue;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2865,10 +2865,16 @@ public void setContentletProperty(Contentlet contentlet,Field field, Object valu
if(value instanceof Date){
contentlet.setDateProperty(field.getVelocityVarName(), (Date)value);
}else if(value instanceof String){
try{
contentlet.setDateProperty(field.getVelocityVarName(),DateUtil.convertDate((String)value, dateFormats));
}catch (Exception e) {
throw new DotContentletStateException("Unable to convert string to date " + value);
if(((String) value).trim().length()>0) {
try {
contentlet.setDateProperty(field.getVelocityVarName(),
DateUtil.convertDate((String)value, dateFormats));
}catch (Exception e) {
throw new DotContentletStateException("Unable to convert string to date " + value);
}
}
else {
contentlet.setDateProperty(field.getVelocityVarName(), null);
}
}else{
throw new DotContentletStateException("Date fields must either be of type String or Date");
Expand Down

0 comments on commit 017d2a3

Please sign in to comment.