| <?xml version="1.0" encoding="UTF-8" ?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| |
| --> |
| <library> |
| |
| <style name="calendarButtonStyle" basecolor="0xFF3300" textcolor="0xFFFFFF" /> |
| |
| <class name="lzCalendar" extends="baseContentView" |
| height="${ canvas.height-canvas.naviHeight }" width="${ canvas.width }"> |
| |
| <attribute name="currentDate" value="null" /> |
| |
| <attribute name="lzViewCalendarEvent" value="null" /> |
| |
| <attribute name="tStartDate" value="null" /> |
| <attribute name="tEndDate" value="null" /> |
| |
| <!--- |
| The user id the calendar will load the events for |
| --> |
| <attribute name="requestUserId" value="$once{ canvas.user_id }" type="number" /> |
| |
| <handler name="oninit"> |
| <![CDATA[ |
| _mainScrollBar.setAttribute("visibility","hidden"); |
| |
| var downloadurl = canvas.getUrl() + 'services/CalendarService/getAppointmentReminderTypList?' |
| +'SID='+canvas.sessionId; |
| |
| this.getAppointmentReminderTypList.setAttribute("src",downloadurl); |
| this.getAppointmentReminderTypList.doRequest(); |
| |
| canvas.monthnames = [canvas.getLabelName(469),canvas.getLabelName(470), |
| canvas.getLabelName(471),canvas.getLabelName(472), |
| canvas.getLabelName(473),canvas.getLabelName(474), |
| canvas.getLabelName(475),canvas.getLabelName(476), |
| canvas.getLabelName(477),canvas.getLabelName(478), |
| canvas.getLabelName(479),canvas.getLabelName(480)]; |
| |
| canvas.dayShortNames = [canvas.getLabelName(459), |
| canvas.getLabelName(453), |
| canvas.getLabelName(454), |
| canvas.getLabelName(455), |
| canvas.getLabelName(456), |
| canvas.getLabelName(457), |
| canvas.getLabelName(458)]; |
| ]]> |
| </handler> |
| |
| <handler name="ontabcontentleave" args="tRef"> |
| //Make sure any cursor status is reset |
| lz.Cursor.restoreCursor(); |
| lz.Cursor.showHandCursor(true); |
| _mainScrollBar.setAttribute("visibility","visible"); |
| </handler> |
| |
| <method name="clearWindows"> |
| if (this.lzViewCalendarEvent != null) { |
| this.lzViewCalendarEvent.close(); |
| } |
| </method> |
| |
| <method name="loadAppointments" args="tDate, dayIndex, weekIndex"> |
| <![CDATA[ |
| var tRelaodDataSet = false; |
| var tDateNow = new Date(); |
| tDate.setHours(tDateNow.getHours()); |
| tDate.setMinutes(tDateNow.getMinutes()); |
| |
| if (this.currentDate == null) { |
| tRelaodDataSet = true; |
| } |
| if ($debug) Debug.write("loadAppointments ",dayIndex, weekIndex, tDate); |
| this.currentDate = tDate; |
| this.statusInfo.currentDate.setAttribute("text",parseDateToStringTime(this.currentDate)); |
| this._lzCalendarGrid.checkAndShow(tDate,dayIndex,weekIndex); |
| |
| if (tRelaodDataSet) { |
| this.loadCalendarData(); |
| } |
| ]]> |
| </method> |
| |
| <method name="loadCalendarData"> |
| <![CDATA[ |
| var tDay = this.currentDate.getDate(); |
| if (tDay < 10) tDay = "0"+tDay; |
| |
| var tMonth = this.currentDate.getMonth() + 1; |
| if (tMonth < 10) tMonth = "0"+tMonth; |
| |
| var downloadurl = canvas.getServicesUrl() + 'CalendarService/getAppointmentsByWeekCalendar?' |
| +'SID='+canvas.sessionId |
| +'&firstDayInWeek='+canvas.firstdayinweek |
| +'&startDate='+this.currentDate.getFullYear()+"-"+tMonth+"-"+tDay |
| +'&requestUserId=' + this.requestUserId |
| +'&omTimeZoneId=' + canvas.timeZoneId |
| +'&javaTimeZoneName='; |
| |
| this.getAppointmentsByWeekCalendar.setAttribute("src",downloadurl); |
| if ($debug) Debug.write("getAppointmentsByWeekCalendar doRequest 1 ",downloadurl); |
| this.getAppointmentsByWeekCalendar.doRequest(); |
| ]]> |
| </method> |
| |
| <method name="editCalendarEvent" args="appointment"> |
| <![CDATA[ |
| var dataElement = null; |
| if (appointment == null) { |
| if (this.requestUserId != canvas.user_id) { |
| new lz.labelerrorPopup(canvas,{errorlabelid:1278}); |
| return; |
| } |
| appointment = this.generateBlankEvent(); |
| dataElement = LzDataElement.valueToElement(appointment); |
| } else { |
| dataElement = appointment; |
| } |
| |
| new lz.lzEditCalendarEvent(canvas,{ |
| dataElement:dataElement, |
| remindertypes:getAppointmentReminderTypList, |
| lzCalendarRef:this |
| }); |
| ]]> |
| </method> |
| |
| <method name="viewCalendarEvent" args="appointment,refCalendarEventView"> |
| this.lzViewCalendarEvent = new lz.lzViewCalendarEvent(canvas,{ |
| dataElement:appointment, |
| lzCalendarRef:this, |
| refCalendarEventView:refCalendarEventView |
| }); |
| </method> |
| |
| <method name="generateBlankEvent"> |
| <![CDATA[ |
| |
| var newAppointment = new Object(); |
| newAppointment.appointmentId = 0; |
| newAppointment.categoryId = 1; |
| newAppointment.title = canvas.getLabelName(1444); |
| |
| var tDate = new Date(); |
| |
| //There seems to be a difference in the way OpenLaszlo makes a Date to a XML string: |
| //OpenLaszlo generates a time in UTC instead of the local time when converted to an XML String |
| var timeZoneOffSetInMilliSeconds = tDate.getTimezoneOffset()*60*1000; |
| |
| if (this.tStartDate == null) { |
| tDate.setTime(this.currentDate.getTime()-timeZoneOffSetInMilliSeconds); |
| tDate.setMinutes(0); |
| tDate.setSeconds(0); |
| if (tDate.getHours() == 23) { |
| tDate.setHours(22); |
| } |
| } else { |
| tDate.setTime(this.tStartDate.getTime()-timeZoneOffSetInMilliSeconds); |
| tDate.setSeconds(0); |
| this.tStartDate = null; |
| } |
| newAppointment.start = tDate; |
| |
| var tDate2 = new Date(); |
| if (this.tEndDate == null) { |
| tDate2.setTime(tDate.getTime()); |
| tDate2.setHours(tDate.getHours()+1); |
| } else { |
| tDate2.setTime(this.tEndDate.getTime()-timeZoneOffSetInMilliSeconds); |
| tDate2.setSeconds(0); |
| this.tEndDate = null; |
| } |
| newAppointment.end = tDate2; |
| |
| newAppointment.comment = ""; |
| newAppointment.reminderId = 3; |
| newAppointment.roomId = 0; |
| newAppointment.location = ""; |
| newAppointment.isPasswordProtected = false; |
| newAppointment.roomTypeId = 1; |
| |
| return newAppointment; |
| ]]> |
| </method> |
| |
| <method name="reload"> |
| this.getAppointmentsByWeekCalendar.doRequest(); |
| </method> |
| |
| <dataset name="getAppointmentsByWeekCalendar" type="http"> |
| <handler name="ondata" args="d"> |
| //Make sure any cursor status is reset |
| lz.Cursor.restoreCursor(); |
| lz.Cursor.showHandCursor(true); |
| if ($debug) Debug.write("ondata",d); |
| </handler> |
| </dataset> |
| |
| <dataset name="getAppointmentReminderTypList" type="http" /> |
| |
| <view name="statusInfo" width="204" y="4"> |
| <labelText name="currentDate" align="center" |
| fontsize="12" resize="true" fontstyle="bold" /> |
| </view> |
| |
| <!-- 176 pixels is the width of the mini calendar --> |
| <simpleLabelButton labelid="1444" height="24" |
| width="176" x="12" y="26" style="calendarButtonStyle"> |
| <handler name="onclick"> |
| parent.editCalendarEvent(null); |
| </handler> |
| </simpleLabelButton> |
| |
| <dateSelector name="_calendar" y="54" x="12"> |
| <handler name="onmonthSel" args="tMonth"> |
| parent.currentDate = null; |
| </handler> |
| <handler name="onyearSel" args="tYear"> |
| parent.currentDate = null; |
| </handler> |
| <handler name="onselect" args="sel"> |
| if ($debug) Debug.write("onselect ",sel); |
| // check for saving |
| if (true) { |
| parent.loadAppointments(sel, this.dayIndexNumber, this.weekIndexNumber); |
| } else { |
| //Check Warning |
| if ($debug) Debug.warn("Unsaved Item - Show warning"); |
| new lz.labelerrorPopup(canvas,{errorlabelid:794,makeModal:true}); |
| } |
| </handler> |
| </dateSelector> |
| |
| <view resource="messagebox_info_rsc" x="4" y="198" /> |
| |
| <labelText labelid="807" x="24" y="196" fontstyle="bold" /> |
| |
| <labelText labelid="806" x="4" y="218" multiline="true" width="190" /> |
| |
| <labelText labelid="1276" x="4" y="280" fontstyle="bold" /> |
| |
| <view resource="messagebox_info_rsc" x="6" y="300" |
| width="16" height="16" stretches="both" /> |
| |
| <labelText labelid="1277" x="24" y="296" multiline="true" width="166" /> |
| |
| <miniIcons x="172" y="336" resource="calendar_revert_to_own_undo_rsc" width="16" height="16" |
| showhandcursor="true"> |
| <handler name="onclick"> |
| parent.requestUserId = canvas.user_id; |
| parent.loadCalendarData(); |
| </handler> |
| <labelTooltip labelid="1279" /> |
| </miniIcons> |
| |
| <userContactsCalendar name="_userContacts" y="354" x="4" height="${ parent.height - 358 }" width="186"> |
| <handler name="onselectedItem" args="sel"> |
| if ($debug) Debug.write("onselectedItem ",sel.tUserId,sel); |
| parent.requestUserId = sel.tUserId; |
| parent.loadCalendarData(); |
| </handler> |
| <handler name="onSaveNewMessage" args="roomBooked"> |
| if ($debug) Debug.write("onSaveNewMessage ",roomBooked); |
| parent.reload(); |
| </handler> |
| </userContactsCalendar> |
| |
| <view name="_lzCalendarTobBar" width="${ parent.width - 204 }" x="204" height="40"> |
| |
| <view name="buttons" align="left" y="2"> |
| |
| <method name="getCurrentViewState"> |
| if (!this._showDay.enabled) { |
| return "day"; |
| } else if (!this._showWeek.enabled) { |
| return "week"; |
| } else if (!this._showMonth.enabled) { |
| return "month"; |
| } |
| </method> |
| |
| <simpleLabelButton name="_showDay" labelid="799" height="22" > |
| <handler name="onclick"> |
| parent._showWeek.setAttribute("enabled",true); |
| parent._showMonth.setAttribute("enabled",true); |
| this.setAttribute("enabled",false); |
| parent.parent.parent._lzCalendarGrid.showDay(); |
| </handler> |
| </simpleLabelButton> |
| |
| <simpleLabelButton name="_showWeek" labelid="800" height="22" > |
| <handler name="onclick"> |
| parent._showDay.setAttribute("enabled",true); |
| parent._showMonth.setAttribute("enabled",true); |
| this.setAttribute("enabled",false); |
| parent.parent.parent._lzCalendarGrid.showWeek(); |
| </handler> |
| </simpleLabelButton> |
| |
| <simpleLabelButton name="_showMonth" labelid="801" height="22" enabled="false"> |
| <handler name="onclick"> |
| parent._showDay.setAttribute("enabled",true); |
| parent._showWeek.setAttribute("enabled",true); |
| this.setAttribute("enabled",false); |
| parent.parent.parent._lzCalendarGrid.showMonth(); |
| </handler> |
| </simpleLabelButton> |
| |
| <labelText fgcolor="0x0000FF" y="2"> |
| <handler name="oninit"> |
| <![CDATA[ |
| this.setAttribute("text","<u>"+canvas.jNameTimeZone+"</u>"); |
| ]]> |
| </handler> |
| <handler name="onclick"> |
| canvas.userSettingsModuleOpt = "editUserProfile"; |
| quicklinkAct("userSettingsModule"); |
| </handler> |
| </labelText> |
| |
| |
| |
| <simplelayout axis="x" spacing="0" /> |
| </view> |
| |
| <view align="right" y="2"> |
| |
| <simpleLabelButton name="_nextBtn" height="22" width="20"> |
| <view resource="calendar_resultset_previous_rsc" x="2" y="3" /> |
| <handler name="onclick"> |
| var tDate = parent.parent.parent.currentDate; |
| if (parent.parent.buttons.getCurrentViewState() == "day") { |
| tDate.setTime(tDate.getTime() - 86400000); |
| } else if (parent.parent.buttons.getCurrentViewState() == "month") { |
| if (tDate.getMonth() == 0) { |
| tDate.setMonth(11); |
| tDate.setFullYear(tDate.getFullYear()-1); |
| } else { |
| tDate.setMonth(tDate.getMonth()-1); |
| } |
| } else if (parent.parent.buttons.getCurrentViewState() == "week") { |
| tDate.setTime(tDate.getTime() - (86400000*7)); |
| } |
| parent.parent.parent.currentDate = null; |
| if ($debug) Debug.write("loadDate :: ",tDate); |
| parent.parent.parent._calendar.loadDate(tDate); |
| </handler> |
| </simpleLabelButton> |
| |
| <simpleLabelButton name="_preBtn" height="22" width="20"> |
| <view resource="calendar_resultset_next_rsc" x="2" y="3" /> |
| <handler name="onclick"> |
| var tDate = parent.parent.parent.currentDate; |
| if (parent.parent.buttons.getCurrentViewState() == "day") { |
| tDate.setTime(tDate.getTime() + 86400000); |
| } else if (parent.parent.buttons.getCurrentViewState() == "month") { |
| if (tDate.getMonth() == 11) { |
| tDate.setMonth(0); |
| tDate.setFullYear(tDate.getFullYear()+1); |
| } else { |
| tDate.setMonth(tDate.getMonth()+1); |
| } |
| } else if (parent.parent.buttons.getCurrentViewState() == "week") { |
| tDate.setTime(tDate.getTime() + (86400000*7)); |
| } |
| parent.parent.parent.currentDate = null; |
| if ($debug) Debug.write("loadDate :: ",tDate); |
| parent.parent.parent._calendar.loadDate(tDate); |
| </handler> |
| </simpleLabelButton> |
| |
| <simplelayout axis="x" spacing="0" /> |
| </view> |
| |
| </view> |
| |
| <lzCalendarGrid name="_lzCalendarGrid" |
| datapath="local:classroot.getAppointmentsByWeekCalendar:/"> |
| <handler name="oncalendarEvent" args="sel"> |
| parent.viewCalendarEvent(sel.datapath.data.cloneNode(true),sel); |
| </handler> |
| <handler name="onScollContent" args="tRef"> |
| parent.clearWindows(); |
| </handler> |
| <handler name="onSelectDate" args="tDate"> |
| parent._calendar.showDate(tDate); |
| parent._lzCalendarTobBar.buttons._showDay.onclick.sendEvent(null); |
| </handler> |
| <handler name="onNewEventDate" args="tDate"> |
| parent.tStartDate = tDate; |
| //only use the date part here |
| parent.tStartDate.setHours(this.currentDate.getHours()); |
| parent.tStartDate.setMinutes(0); |
| parent.tEndDate = null; |
| parent.editCalendarEvent(); |
| </handler> |
| <handler name="onStartEndDate" args="tEmptyRef"> |
| parent.tStartDate = this.tStartDate; |
| parent.tEndDate = this.tEndDate; |
| parent.editCalendarEvent(); |
| </handler> |
| </lzCalendarGrid> |
| |
| </class> |
| |
| </library> |