diff --git a/calendar/calendar-tool/tool/src/java/org/sakaiproject/calendar/tool/CalendarAction.java b/calendar/calendar-tool/tool/src/java/org/sakaiproject/calendar/tool/CalendarAction.java
index 6b544a93b3da..de3508fd7eca 100644
--- a/calendar/calendar-tool/tool/src/java/org/sakaiproject/calendar/tool/CalendarAction.java
+++ b/calendar/calendar-tool/tool/src/java/org/sakaiproject/calendar/tool/CalendarAction.java
@@ -4649,7 +4649,6 @@ public void doNew(RunData data, Context context)
state.setState(STATE_NEW);
state.setCalendarEventId("", "");
state.setIsNewCalendar(true);
- state.setIsPastAlertOff(true);
sstate.setAttribute(FREQUENCY_SELECT, null);
sstate.setAttribute(CalendarAction.SSTATE__RECURRING_RULE, null);
@@ -4827,18 +4826,6 @@ else if(hour.equals("100") || minute.equals("100")) {
state.setNewData(calId, title,description,Integer.parseInt(month),Integer.parseInt(day),year,houri,Integer.parseInt(minute),Integer.parseInt(dhour),Integer.parseInt(dminute),type,timeType,location, addfieldsMap, intentionStr);
state.setState(STATE_NEW);
- }
- else if( event_startTime.before(now_time) && state.getIsPastAlertOff() ) {
- // IsPastAlertOff
- // true: no alert shown -> then show the alert, set false;
- // false: Alert shown, if user click ADD - doAdd again -> accept it, set true, set alert empty;
-
- String errorCode = rb.getString("java.alert.past");
- addAlert(sstate, errorCode);
-
- state.setNewData(state.getPrimaryCalendarReference(), title,description,Integer.parseInt(month),Integer.parseInt(day),year,houri,Integer.parseInt(minute),Integer.parseInt(dhour),Integer.parseInt(dminute),type,timeType,location, addfieldsMap, intentionStr);
- state.setState(STATE_NEW);
- state.setIsPastAlertOff(false);
} else if (!DateFormatterUtil.checkDate(Integer.parseInt(day), Integer.parseInt(month), Integer.parseInt(year))) {
addAlert(sstate, rb.getString("date.invalid"));
state.setNewData(state.getPrimaryCalendarReference(), title,description,Integer.parseInt(month),Integer.parseInt(day),year,houri,Integer.parseInt(minute),Integer.parseInt(dhour),Integer.parseInt(dminute),type,timeType,location, addfieldsMap, intentionStr);
diff --git a/calendar/calendar-tool/tool/src/java/org/sakaiproject/calendar/tool/CalendarActionState.java b/calendar/calendar-tool/tool/src/java/org/sakaiproject/calendar/tool/CalendarActionState.java
index 2c1152b6cd21..a324d60dc80c 100644
--- a/calendar/calendar-tool/tool/src/java/org/sakaiproject/calendar/tool/CalendarActionState.java
+++ b/calendar/calendar-tool/tool/src/java/org/sakaiproject/calendar/tool/CalendarActionState.java
@@ -76,8 +76,6 @@ public class CalendarActionState
private String m_AttachmentFlag = "false";
private LocalEvent savedData = new LocalEvent();
- private boolean m_IsPastAlertOff = true;
-
private String m_state = "";
private String currentpage = "second";
@@ -213,16 +211,6 @@ public void setIsNewCalendar(boolean isNewcal)
} // setIsNewCalendar
- /**
- * Get the status of past alert off: true - no alert shown; false - alert shown
- * @return IsPastAlertOff
- */
- public boolean getIsPastAlertOff()
- {
- return m_IsPastAlertOff;
-
- } // getIsPastAlertOff
-
/**
* Gets the main calendar ID associated with the event list. Many calendars may be merged into this list, but there is only one one calendar that is used for adding/modifying events.
*/
@@ -231,16 +219,6 @@ public String getPrimaryCalendarReference()
return m_primaryCalendarReference;
}
- /**
- * Set the status of past alert off: true - no alert shown; false - alert shown
- * @param IsPastAlertOff The status of past alert off: true - no alert shown; false - alert shown
- */
- public void setIsPastAlertOff(boolean IsPastAlertOff)
- {
- m_IsPastAlertOff = IsPastAlertOff;
-
- } // setIsPastAlertOff
-
/**
* Sets the main calendar ID associated with the event list. Many calendars may be merged into this
* list, but there is only one one calendar that is used for adding/modifying events/
diff --git a/calendar/calendar-tool/tool/src/webapp/vm/calendar/chef_calendar_new.vm b/calendar/calendar-tool/tool/src/webapp/vm/calendar/chef_calendar_new.vm
index 8c188f29a815..cafd3a8656ec 100644
--- a/calendar/calendar-tool/tool/src/webapp/vm/calendar/chef_calendar_new.vm
+++ b/calendar/calendar-tool/tool/src/webapp/vm/calendar/chef_calendar_new.vm
@@ -370,18 +370,17 @@ $(function() {
#set($day=$date.getDay())
#set($year=$todayYear)
#end
-
+
diff --git a/library/src/webapp/js/lang-datepicker/lang-datepicker.js b/library/src/webapp/js/lang-datepicker/lang-datepicker.js
index 5fa0d378dd02..074e30f02544 100644
--- a/library/src/webapp/js/lang-datepicker/lang-datepicker.js
+++ b/library/src/webapp/js/lang-datepicker/lang-datepicker.js
@@ -74,14 +74,18 @@ const defaults = {
const [datePart, timePart] = value.split('T');
const [year, month, day] = datePart.split('-').map(Number);
const timeComponents = timePart.split(':').map(Number);
-
+ }
+
+ // Handle simple YYYY-MM-DD format
+ if (/^\d{4}-\d{2}-\d{2}$/.test(value)) {
+ const [year, month, day] = value.split('-').map(Number);
if (!isNaN(year) && !isNaN(month) && !isNaN(day)) {
const d = new Date();
d.setFullYear(year);
- d.setMonth(month - 1);
+ d.setMonth(month - 1); // JS months are 0-indexed
d.setDate(day);
- d.setHours(timeComponents[0] || 0);
- d.setMinutes(timeComponents[1] || 0);
+ d.setHours(0); // Explicitly set time to midnight local
+ d.setMinutes(0);
d.setSeconds(0);
d.setMilliseconds(0);
return d;