Index: trunk/calendar3/webclient/src/org/bedework/webclient/BwCalAbstractAction.java =================================================================== --- trunk/calendar3/webclient/src/org/bedework/webclient/BwCalAbstractAction.java (revision 24) +++ trunk/calendar3/webclient/src/org/bedework/webclient/BwCalAbstractAction.java (revision 407) @@ -52,10 +52,17 @@ to the maximum extent the law permits. */ - package org.bedework.webclient; +import org.bedework.appcommon.BedeworkDefs; +import org.bedework.appcommon.MyCalendarVO; +import org.bedework.appcommon.TimeView; +import org.bedework.calfacade.CalFacadeUtil; import org.bedework.webcommon.BwAbstractAction; import org.bedework.webcommon.BwActionFormBase; import org.bedework.webcommon.BwSession; +import org.bedework.webcommon.TimeDateComponents; + +import java.util.Date; +import java.util.Locale; import javax.servlet.http.HttpServletRequest; @@ -75,36 +82,4 @@ BwActionForm form = (BwActionForm)frm; - /* Set some options from preferences * / - form.setAutoCreateSponsors(true); - form.setAutoCreateLocations(true); - form.setAutoDeleteSponsors(true); - form.setAutoDeleteLocations(true); - - String refreshAction = form.getEnv().getAppOptProperty("app.refresh.action"); - - if (refreshAction == null) { - refreshAction = form.getActionPath(); - } - - if (refreshAction != null) { - setRefreshInterval(request, response, - form.getEnv().getAppIntProperty("app.refresh.interval"), - refreshAction, form); - } - - if (debug) { - log.debug("curTimeView=" + form.getCurTimeView()); - } - - String reqpar = request.getParameter("cancelled"); - - if (reqpar != null) { - /* * Set the objects to null so we get new ones. - * / - - form.getMsg().emit("org.bedework.client.message.cancelled"); - return "cancelled"; - }*/ - String forward = doAction(request, form); @@ -121,3 +96,141 @@ public abstract String doAction(HttpServletRequest request, BwActionForm form) throws Throwable; + + + /** Set the current date and/or view. The date may be null indicating we + * should switch to a new view based on the current date. + * + *
newViewTypeI may be less than 0 indicating we stay with the current + * view but switch to a new date. + * + * @param action + * @param form UWCalActionForm + * @param date String yyyymmdd date or null + * @param newViewTypeI new view index or -1 + * @param debug + * @throws Throwable + */ + protected static void gotoDateView(BwCalAbstractAction action, + BwActionForm form, + String date, + int newViewTypeI, + boolean debug) throws Throwable { + /* We get a new view if either the date changed or the view changed. + */ + boolean newView = false; + + if (debug) { + action.logIt("ViewTypeI=" + newViewTypeI); + } + + MyCalendarVO dt; + TimeView tv = form.getCurTimeView(); + Locale loc = Locale.getDefault(); // XXX Locale + + if (newViewTypeI == BedeworkDefs.todayView) { + // dt = new MyCalendarVO(new Date(System.currentTimeMillis())); + Date jdt = new Date(System.currentTimeMillis()); + dt = new MyCalendarVO(jdt, loc); + newView = true; + newViewTypeI = BedeworkDefs.dayView; + } else if (date == null) { + if (newViewTypeI == BedeworkDefs.dayView) { + // selected specific day to display from personal event entry screen. + + Date jdt = CalFacadeUtil.getDate(form.getViewStartDate().getDateTime()); + dt = new MyCalendarVO(jdt, loc); + newView = true; + } else { + if (debug) { + action.logIt("No date supplied: go with current date"); + } + + // Just stay here + dt = tv.getCurDay(); + } + } else { + if (debug) { + action.logIt("Date=" + date + ": go with that"); + } + + Date jdt = CalFacadeUtil.fromISODate(date); + dt = new MyCalendarVO(jdt, loc); + if (!checkDateInRange(form, dt.getYear())) { + // Set it to today + jdt = new Date(System.currentTimeMillis()); + dt = new MyCalendarVO(jdt, loc); + } + newView = true; + } + + if ((newViewTypeI >= 0) && + (newViewTypeI != form.getCurViewPeriod())) { + // Change of view + newView = true; + } + + if (newView && (newViewTypeI < 0)) { + newViewTypeI = form.getCurViewPeriod(); + if (newViewTypeI < 0) { + newViewTypeI = BedeworkDefs.defaultView; + } + } + + TimeDateComponents viewStart = form.getViewStartDate(); + + if (!newView) { + /* See if we were given an explicit date as view start date components. + If so we'll set a new view of the same period as the current. + */ + int year = viewStart.getCalYear(); + + if (checkDateInRange(form, year)) { + String vsdate = viewStart.getDateTime().getDtval().substring(0, 8); + if (debug) { + action.logIt("vsdate=" + vsdate); + } + + if (!(vsdate.equals(form.getCurTimeView().getFirstDay().getDateDigits()))) { + newView = true; + newViewTypeI = form.getCurViewPeriod(); + Date jdt = CalFacadeUtil.fromISODate(vsdate); + dt = new MyCalendarVO(jdt, loc); + } + } + } + + if (newView) { + form.setCurViewPeriod(newViewTypeI); + form.setViewMcDate(dt); + form.refreshIsNeeded(); + } + + tv = form.getCurTimeView(); + // dt = tv.getCurDay(); + + /** Set first day, month and year + */ + + MyCalendarVO firstDay = tv.getFirstDay(); + + viewStart.setDay(firstDay.getTwoDigitDay()); + viewStart.setMonth(firstDay.getTwoDigitMonth()); + viewStart.setYear(firstDay.getFourDigitYear()); + + form.getEventStartDate().setDateTime(tv.getCurDay().getTime()); + form.getEventEndDate().setDateTime(tv.getCurDay().getTime()); + } + + private static boolean checkDateInRange(BwActionForm form, + int year) throws Throwable { + // XXX make system parameters for allowable start/end year + int thisYear = form.getToday().getYear(); + + if ((year < thisYear - 10) || (year > thisYear + 10)) { + form.getErr().emit("org.bedework.client.error.baddate"); + return false; + } + + return true; + } } Index: trunk/calendar3/webclient/src/org/bedework/webclient/BwFreeBusyAction.java =================================================================== --- trunk/calendar3/webclient/src/org/bedework/webclient/BwFreeBusyAction.java (revision 406) +++ trunk/calendar3/webclient/src/org/bedework/webclient/BwFreeBusyAction.java (revision 407) @@ -108,4 +108,10 @@ BwUser user; CalSvcI svci = form.fetchSvci(); + + gotoDateView(this, form, + form.getDate(), + form.getViewTypeI(), + debug); + String userId = getReqPar(request, "userid"); Index: trunk/calendar3/webclient/src/org/bedework/webclient/BwGoToAction.java =================================================================== --- trunk/calendar3/webclient/src/org/bedework/webclient/BwGoToAction.java (revision 257) +++ trunk/calendar3/webclient/src/org/bedework/webclient/BwGoToAction.java (revision 407) @@ -55,13 +55,4 @@ package org.bedework.webclient; -import org.bedework.appcommon.MyCalendarVO; -import org.bedework.appcommon.TimeView; -import org.bedework.appcommon.BedeworkDefs; -import org.bedework.calfacade.CalFacadeUtil; -import org.bedework.webcommon.TimeDateComponents; - -import java.util.Date; -import java.util.Locale; - import javax.servlet.http.HttpServletRequest; @@ -87,140 +78,3 @@ return "success"; } - - /** Set the current date and/or view. The date may be null indicating we - * should switch to a new view based on the current date. - * - *
newViewTypeI may be less than 0 indicating we stay with the current - * view but switch to a new date. - * - * @param action - * @param form UWCalActionForm - * @param date String yyyymmdd date or null - * @param newViewTypeI new view index or -1 - * @param debug - * @throws Throwable - */ - public static void gotoDateView(BwCalAbstractAction action, - BwActionForm form, - String date, - int newViewTypeI, - boolean debug) throws Throwable { - /* We get a new view if either the date changed or the view changed. - */ - boolean newView = false; - - if (debug) { - action.logIt("ViewTypeI=" + newViewTypeI); - } - - MyCalendarVO dt; - TimeView tv = form.getCurTimeView(); - Locale loc = Locale.getDefault(); // XXX Locale - - if (newViewTypeI == BedeworkDefs.todayView) { - // dt = new MyCalendarVO(new Date(System.currentTimeMillis())); - Date jdt = new Date(System.currentTimeMillis()); - dt = new MyCalendarVO(jdt, loc); - newView = true; - newViewTypeI = BedeworkDefs.dayView; - } else if (date == null) { - if (newViewTypeI == BedeworkDefs.dayView) { - // selected specific day to display from personal event entry screen. - - Date jdt = CalFacadeUtil.getDate(form.getViewStartDate().getDateTime()); - dt = new MyCalendarVO(jdt, loc); - newView = true; - } else { - if (debug) { - action.logIt("No date supplied: go with current date"); - } - - // Just stay here - dt = tv.getCurDay(); - } - } else { - if (debug) { - action.logIt("Date=" + date + ": go with that"); - } - - Date jdt = CalFacadeUtil.fromISODate(date); - dt = new MyCalendarVO(jdt, loc); - if (!checkDateInRange(form, dt.getYear())) { - // Set it to today - jdt = new Date(System.currentTimeMillis()); - dt = new MyCalendarVO(jdt, loc); - } - newView = true; - } - - if ((newViewTypeI >= 0) && - (newViewTypeI != form.getCurViewPeriod())) { - // Change of view - newView = true; - } - - if (newView && (newViewTypeI < 0)) { - newViewTypeI = form.getCurViewPeriod(); - if (newViewTypeI < 0) { - newViewTypeI = BedeworkDefs.defaultView; - } - } - - TimeDateComponents viewStart = form.getViewStartDate(); - - if (!newView) { - /* See if we were given an explicit date as view start date components. - If so we'll set a new view of the same period as the current. - */ - int year = viewStart.getCalYear(); - - if (checkDateInRange(form, year)) { - String vsdate = viewStart.getDateTime().getDtval().substring(0, 8); - if (debug) { - action.logIt("vsdate=" + vsdate); - } - - if (!(vsdate.equals(form.getCurTimeView().getFirstDay().getDateDigits()))) { - newView = true; - newViewTypeI = form.getCurViewPeriod(); - Date jdt = CalFacadeUtil.fromISODate(vsdate); - dt = new MyCalendarVO(jdt, loc); - } - } - } - - if (newView) { - form.setCurViewPeriod(newViewTypeI); - form.setViewMcDate(dt); - form.refreshIsNeeded(); - } - - tv = form.getCurTimeView(); - // dt = tv.getCurDay(); - - /** Set first day, month and year - */ - - MyCalendarVO firstDay = tv.getFirstDay(); - - viewStart.setDay(firstDay.getTwoDigitDay()); - viewStart.setMonth(firstDay.getTwoDigitMonth()); - viewStart.setYear(firstDay.getFourDigitYear()); - - form.getEventStartDate().setDateTime(tv.getCurDay().getTime()); - form.getEventEndDate().setDateTime(tv.getCurDay().getTime()); - } - - private static boolean checkDateInRange(BwActionForm form, - int year) throws Throwable { - // XXX make system parameters for allowable start/end year - int thisYear = form.getToday().getYear(); - - if ((year < thisYear - 10) || (year > thisYear + 10)) { - form.getErr().emit("org.bedework.client.error.baddate"); - return false; - } - - return true; - } }