Show last authors
1 {{velocity output="false"}}
2 #if("$!{request.outputSyntax}" == 'plain')
3 $response.setContentType('application/json')
4 #end
5 {{/velocity}}
6 {{velocity filter="html" wiki="false"}}
7 #if($xcontext.action == 'get')
8 #if("$!{request.newEvent}"!="")
9 ## special case 1: find a new unused event name
10 #set($eventName = $request.newEvent)
11 #set($wiki = $doc.wiki)
12 #set($space = $doc.space)
13 #if ($request.parent)
14 #set($space = $xwiki.getDocument($request.parent).getSpace())
15 #end
16 #set($eventName = $xwiki.getUniquePageName($space, $eventName))
17 $jsontool.serialize( { 'name' : $eventName } )
18 #elseif("$!{request.action}" == "checkDate")
19 ## special case 2: check if a date has a time part
20 #set($isAllDay = '')
21 #macro(checkDate $format $dateStr)
22 ## this check is ultra silly, but at least it works w/o timezone issues
23 #set($date = $datetool.toDate($fmt, $dateStr))
24 #set($dateStrReparsed = $datetool.format("yyyyMMdd", $date))
25 #set($date2 = $datetool.toDate("yyyyMMdd", $dateStrReparsed))
26 #if($date.time == $date2.time && $isAllDay != false)
27 #set($isAllDay = true)
28 #else
29 #set($isAllDay = false)
30 #end
31 #end
32 #set($startDateStr = "$!{request.startDate}")
33 #if($startDateStr)
34 #set($fmt = $xwiki.getDocument("MoccaCalendar.MoccaCalendarEventClass").getxWikiClass().get("startDate").getProperty('dateFormat').value)
35 #checkDate($fmt $startDateStr)
36 #end
37 #set($endDateStr = "$!{request.endDate}")
38 #if($endDateStr)
39 #set($fmt = $xwiki.getDocument("MoccaCalendar.MoccaCalendarEventClass").getxWikiClass().get("endDate").getProperty('dateFormat').value)
40 #checkDate($fmt $endDateStr)
41 #end
42 $jsontool.serialize( { 'isAllDay' : $isAllDay } )
43 #else
44 #set($startQuery = $datetool.toDate('yyyy-M-d', $request.start))
45 #set($qsy = $datetool.getYear($startQuery))
46 #set($qsm = $datetool.getMonth($startQuery))
47 #set($qsm = $mathtool.add($qsm, 1))
48 #set($qsd = $datetool.getDay($startQuery))
49 ## if enddate is empty, use startdate instead
50 #set($endDateCheck = "year(enddate.value) > :startyear or (year(enddate.value) = :startyear and (month(enddate.value) > :startmonth or (month(enddate.value) = :startmonth and day(enddate.value) >= :startday)))")
51 #set($startDateCheck = "year(startdate.value) > :startyear or (year(startdate.value) = :startyear and (month(startdate.value) > :startmonth or (month(startdate.value) = :startmonth and day(startdate.value) >= :startday)))")
52 #set($whereQuery = "and (enddate.value is not null and ($endDateCheck) or ($startDateCheck)) ")
53
54 #set($endQuery = $datetool.toDate('yyyy-M-d', $request.end))
55 #set($qey = $datetool.getYear($endQuery))
56 #set($qem = $datetool.getMonth($endQuery))
57 #set($qem = $mathtool.add($qem, 1))
58 #set($qed = $datetool.getDay($endQuery))
59 #set($whereQuery = "$whereQuery and (year(startdate.value) < :endyear or ( year(startdate.value) = :endyear and (month(startdate.value) < :endmonth or (month(startdate.value) = :endmonth and day(startdate.value) <= :endday))))")
60
61 #set($queryParams = { "startyear" : $qsy, "startmonth" : $qsm, "startday" : $qsd, "endyear" : $qey, "endmonth" : $qem, "endday" : $qed, "startDateField" : $request.startfield, "endDateField" : $request.endfield, "eventClass" : $request.classname })
62
63 #if("$!{request.filter}" != "" && "$!{request.calendarDoc}" != "")
64 #set($document = $xwiki.getDocument($request.calendarDoc))
65 #if("$!{request.filter}" == "page")
66 ## see MOCCCAL-97 why we need to ways to get at the parent document
67 #set($whereQuery = "$whereQuery and (doc.parent = :parentDoc or doc.parent = :parentAbsDoc)")
68 #set($discard = $queryParams.put('parentDoc', $request.calendarDoc))
69 #set($discard = $queryParams.put('parentAbsDoc', "${xcontext.getDatabase()}:${request.calendarDoc}"))
70 #end
71 #if("$!{request.filter}" == "space")
72 #set($document = $xwiki.getDocument($request.calendarDoc))
73 #set($translated = $document.getTranslatedDocument())
74 #set($space = $translated.getSpace())
75 #set($whereQuery = "$whereQuery and (doc.space = :space)")
76 #set($discard = $queryParams.put('space', $space))
77 #end
78 #end
79
80 #set($direction="asc")
81 #if("$!{request.outputView}"=="plainList" && $datetool.difference($datetool.getDate(),$endQuery).getSeconds()<0)
82 #set($direction="desc")
83 #end
84
85 #set($hql =", BaseObject as obj, DateProperty as startdate, DateProperty as enddate where doc.fullName=obj.name and obj.id=startdate.id.id and startdate.id.name=:startDateField and obj.id=enddate.id.id and enddate.id.name=:endDateField and doc.name!='MoccaCalendarEventTemplate' and obj.className= :eventClass $whereQuery order by startdate.value $direction")
86
87 #set($query = $services.query.hql($hql))
88 #foreach($param in $queryParams.entrySet())
89 #set($query = $query.bindValue($param.key, $param.value))
90 #end
91
92 #set($jsondateformat = $xwiki.jodatime.getDateTimeFormatterForPattern("yyyy-MM-dd'T'HH:mm"))
93 #set($calDocParam = "calendarDoc=$!{escapetool.url($request.calendarDoc)}")
94 #set($results = [])
95 ##set($discard = $results.add($hql))
96 ##set($discard = $results.add($queryParams))
97 #foreach($item in $query.execute())
98 #if($xwiki.hasAccessLevel("view", $xcontext.getUser(), $item))
99 #set($itemdoc = $xwiki.getDocument($item))
100 #set($parentCalDocName = $itemdoc.getParent())
101 #if($parentCalDocName == "$!lastparentCalDocName")
102 #set($color="$!lastColor")
103 #else
104 #set($lastparentCalDocName = $parentCalDocName)
105 #set($color="$!xwiki.getDocument($parentCalDocName).getValue('color')")
106 #set($lastColor = $color)
107 #end
108 #set($startdate = $itemdoc.getValue($request.startfield))
109 #set($enddate = $itemdoc.getValue($request.endfield))
110 #set($duration = $itemdoc.getValue($request.durationfield))
111 #if(!$duration)
112 #set($duration = "30")
113 #end
114 #if($startdate)
115 #set($startdate = $xwiki.jodatime.getDateTime($startdate.getTime()))
116 #if($enddate)
117 #set($enddate = $xwiki.jodatime.getDateTime($enddate.getTime()))
118 #else
119 #set($enddate = $startdate.plusMinutes($duration))
120 #end
121 #set($allDay=false)
122 #if("$!itemdoc.getValue('allDay')"==1)
123 #set($allDay=true)
124 #set($enddateExclusive = $enddate.plusDays(1))
125 #else
126 #set($enddateExclusive = $enddate)
127 #end
128 #set($event = {"id" : $itemdoc.getDocumentReference().toString(), "title" : $itemdoc.getPlainTitle(), "url" : $itemdoc.getURL('view',"$calDocParam"), "editUrl" : $itemdoc.getURL('edit',"$calDocParam"), "saveUrl" : $itemdoc.getURL('save',"$calDocParam"), "deleteUrl" : $itemdoc.getURL('delete',"$calDocParam"), "canEdit": $xwiki.hasAccessLevel("edit", $xcontext.getUser(), $item), "canDelete": $xwiki.hasAccessLevel("delete", $xcontext.getUser(), $item), "start" : $jsondateformat.print($startdate), "end" : $jsondateformat.print($enddateExclusive), "allDay" : $allDay, "color" : $color })
129 #if("$!{request.outputView}"=="plainList")
130 #set($format = $!itemdoc.getObject("${request.classname}").getxWikiClass().get($request.startfield).getProperty('dateFormat').value)
131 #if($!format=="")
132 #set($format = $xwiki.getSpacePreference('dateformat', 'dd.MM.yyyy'))
133 #end
134 #if($allDay)
135 #set($idx = $format.indexOf("H"))
136 #if($idx > 0)
137 #set($format = $format.substring(0,$idx).trim())
138 #end
139 #end
140 #set($dateprinter = $xwiki.jodatime.getDateTimeFormatterForPattern($format))
141 #set($html = '<div class="moccaevent" style="border-color:' +$color + '">')
142 #set($html = "${html}"+'<h5><a href="'+${itemdoc.getURL("view")}+'">' + $escapetool.html($itemdoc.getPlainTitle()) + '</a></h5>')
143 #if($allDay)
144 #set($discard = $services.localization.use('document', 'Calendar.Translations'))
145 #set($html = "${html}" + '<p class="date">' + $dateprinter.print($startdate) + ' ' + $services.localization.render('xwiki.calendar.allDayText')+'</p>')
146 #else
147 #if($enddate.getYear() == $startdate.getYear() && $enddate.getDayOfYear() == $startdate.getDayOfYear())
148 #set($idx = $format.indexOf("H"))
149 #if($idx > 0)
150 #set($timeformat = $format.substring($idx).trim())
151 #else
152 #set($timeformat = "HH:mm")
153 #end
154 #set($timeprinter = $xwiki.jodatime.getDateTimeFormatterForPattern($timeformat))
155 #set($html = "${html}" + '<p class="date">' + $dateprinter.print($startdate) + ' - ' + $timeprinter.print($enddate) + '</p>')
156 #else
157 #set($html = "${html}" + '<p class="date">' + $dateprinter.print($startdate) + ' - ' + $dateprinter.print($enddate) + '</p>')
158 #end
159 #end
160 #set($desc = $itemdoc.getValue('description'))
161 #if($desc)
162 #set($desc = $services.rendering.parse($desc, "xwiki/2.1"))
163 #set($desc = $services.rendering.render($desc, "xhtml/1.0"))
164 #set($html = "${html}" + $desc )
165 #end
166 #set($html = "${html}</div>")
167 #set($discard = $event.put("html", $html))
168 #end
169 #set($discard = $results.add($event))
170 #end
171 #end
172 #end
173 $jsontool.serialize($results)
174 #end ## end of #if("$!{request.newEvent}"!="")
175 #else
176 Service Page for the Mocca Calendar Application
177 #end ## end of #if($xcontext.action == 'get')
178 {{/velocity}}

Tips

If you're starting with XWiki, check out the Getting Started Guide.

My Recent Modifications

Need help?

If you need help with XWiki you can contact: