Changes for page Calendar Macro

Last modified by Benjamin Fischer on 2025/07/10 12:57

From version 8.1
edited by Benjamin Fischer
on 2025/07/10 12:57
Change comment: Install extension [org.xwiki.contrib:application-mocca-calendar-ui/2.9.10]
To version 2.1
edited by Benjamin Fischer
on 2025/02/11 10:47
Change comment: Install extension [org.xwiki.contrib:application-mocca-calendar-ui/2.9.7]

Summary

Details

XWiki.JavaScriptExtension[0]
Code
... ... @@ -79,7 +79,7 @@
79 79   var params = "page=" + encodeURIComponent(page) + "&isResize=" + (isResize ? "1" : "0") + "&delta=" + delta.asMilliseconds() + "&startDate=" + startDate.format()
80 80   if (endDate) { params += "&endDate=" + endDate.format(); }
81 81   params += "&allDay=" + (startDate.hasTime()?"":"1");
82 - var url = this.updateEventUrl + '&' + params;
82 + var url = this.updateEventUrl + params;
83 83   jQuery.ajax(url).fail(function (data) {
84 84   savingBox.hide();
85 85   this.displayError();
... ... @@ -727,11 +727,3 @@
727 727  } // if the XWiki.widgets.ModalPopup is defined
728 728  
729 729  });
730 -
731 -// Toggle the Filter Events by Calendar section.
732 -require(['jquery'], function ($) {
733 - $('#toggleCalendarsFilter').on('click', function() {
734 - $(this).children('span').toggleClass('fa-angle-up fa-angle-down');
735 - $('#calendarsFilter form').toggleClass('hidden');
736 - });
737 -});
XWiki.StyleSheetExtension[0]
Code
... ... @@ -83,35 +83,3 @@
83 83  div.fc-view.fc-plainList-view {
84 84   border-width: 0;
85 85  }
86 -
87 -/* Filterable calendars */
88 -#calendarsFilter {
89 - h4 {
90 - display: inline-block;
91 - margin-right: 10px;
92 - }
93 - #toggleCalendarsFilter {
94 - margin-bottom: 10px;
95 - span.fa-angle-down {
96 - font-weight: bold;
97 - }
98 - }
99 - ul {
100 - list-style: none;
101 - padding: 0;
102 - li {
103 - float: left;
104 - margin-right: 10px;
105 - margin-bottom: 10px;
106 - label {
107 - margin: 0;
108 - }
109 - input, label {
110 - cursor: inherit;
111 - }
112 - }
113 - }
114 - input[type='submit'] {
115 - display: block;
116 - }
117 -}
Content Type
... ... @@ -1,1 +1,1 @@
1 -LESS
1 +CSS
XWiki.WikiMacroClass[0]
Macro code
... ... @@ -80,16 +80,17 @@
80 80  ##
81 81  ## some hardwired values that you can feel free to customize
82 82  ##
83 -#set($jsonUrl = $xwiki.getURL('MoccaCalendar.Code.JSONService', 'get'))
84 -#set($newPageNameUrl = $xwiki.getURL('MoccaCalendar.Code.NewEventNameService', 'get'))
85 -#set($dateCheckUrl = $xwiki.getURL('MoccaCalendar.Code.DateCheckService', 'get'))
86 -#set($deleteEventInstanceUrl = $xwiki.getURL('MoccaCalendar.Code.DeleteEventInstanceService', 'get'))
83 +#set($jsonUrl = $xwiki.getDocument("MoccaCalendar.Code.JSONService").getURL("get"))
84 +#set($newPageNameUrl = $xwiki.getDocument("MoccaCalendar.Code.NewEventNameService").getURL("get"))
85 +#set($dateCheckUrl = $xwiki.getDocument("MoccaCalendar.Code.DateCheckService").getURL("get"))
86 +#set($updateUrl = $xwiki.getDocument("MoccaCalendar.Code.UpdateService").getURL("get"))
87 +#set($deleteEventInstanceUrl = $xwiki.getDocument("MoccaCalendar.Code.DeleteEventInstanceService").getURL("get"))
87 87  #set($left = "prev,next today")
88 88  #set($center = "title")
89 89  #set($right = "agendaDay,agendaWeek,month,plainList")
90 -## Can create event in the current calendar or in the space or wiki calendar view if at least one calendar is editable for the current user.
91 -#set ($canCreateEvents = $xwiki.hasAccessLevel('edit', $xcontext.getUser(), $calendarDoc) || ($filter != 'page' && $services.moccacalendar.allEditableCalendars.size() > 0))
92 -#set ($calendarsFilter = $request.parameterMap['calendarsFilter'])
91 +
92 +#set($canCreateEvents = $xwiki.hasAccessLevel("edit", $xcontext.getUser(), $calendarDoc))
93 +#set ($calendarsFilter = $request.parameterMap['calendarsFiltler'])
93 93  {{/velocity}}
94 94  
95 95  {{velocity}}
... ... @@ -97,38 +97,22 @@
97 97   #set ($statement = "select doc.fullName, calendar.color from Document doc, doc.object(MoccaCalendar.MoccaCalendarClass) calendar where doc.name <> 'MoccaCalendarTemplate'")
98 98   #set ($results = $services.query.xwql($statement).execute())
99 99   #if ($results.size() > 1)
100 - (% id="calendarsFilter" %)(((
101 - #set ($hasCalendarsFilter = "$!request.calendarsFilter" != '')
102 - ==== $services.localization.render('MoccaCalendar.calendarevent.filterEvents') ====
103 - {{html clean="false"}}
104 - <div class="btn-group flat-buttons">
105 - <a id="toggleCalendarsFilter" class="btn btn-default">
106 - #set ($faClass = 'fa-angle-down')
107 - #if ($hasCalendarsFilter)
108 - #set ($faClass = 'fa-angle-up')
109 - #end
110 - <span class="fa $faClass"></span>
111 - </a>
112 - </div>
113 - <form action="" method="post" #if(!$hasCalendarsFilter)class="hidden"#end>
114 - <ul class="btn-group flat-buttons">
115 - #foreach ($result in $results)
116 - #set ($docFullName = $result[0])
117 - #set ($backgroundColor = $result[1])
118 - #set ($checked = $calendarsFilter.contains($docFullName))
119 - #set ($title = $xwiki.getDocument($docFullName).displayTitle)
120 - <li>
121 - <a class="btn btn-default">
122 - <input type="checkbox" id="$docFullName" name="calendarsFilter" value="$docFullName" #if ($checked) checked #end style="accent-color:$backgroundColor"/>
123 - <label for="$docFullName">$title</label>
124 - </a>
125 - </li>
126 - #end
127 - </ul>
128 - <input type="submit" class="btn btn-primary" value="$services.localization.render('MoccaCalendar.calendarevent.filterEvents.submit')" />
129 - </form>
130 - {{/html}}
131 - )))
101 + === $services.localization.render('MoccaCalendar.calendarevent.filterEvents') ===
102 + {{html clean="false"}}
103 + <form action="" method="get">
104 + #foreach ($result in $results)
105 + #set ($docFullName = $result[0])
106 + #set ($backgroundColor = $result[1])
107 + #set ($checked = $calendarsFilter.contains($docFullName))
108 + #set ($title = $xwiki.getDocument($docFullName).displayTitle)
109 + <div>
110 + <input type="checkbox" id="$docFullName" name="calendarsFiltler" value="$docFullName" #if ($checked) checked #end style="accent-color:$backgroundColor"/>
111 + <label for="$docFullName">$title</label>
112 + </div>
113 + #end
114 + <input type="submit" class="btn btn-primary" value="$services.localization.render('MoccaCalendar.calendarevent.filterEvents.submit')" />
115 + </form>
116 + {{/html}}
132 132   #end
133 133  #end
134 134  #if ($xcontext.action=='view' || $xcontext.action=='export')
... ... @@ -137,18 +137,15 @@
137 137  ## create event link
138 138  <div class="calendar-buttons">
139 139  <span class="buttonwrapper">
140 -<button class="btn btn-success" id="calendar${calcounter}-btn"><span class="glyphicon glyphicon-plus"></span> $escapetool.xml($services.localization.render('MoccaCalendar.calendarevent.create'))</button>
125 +<button class="btn btn-success" id="calendar${calcounter}-btn"><span class="glyphicon glyphicon-plus"></span> $escapetool.html($services.localization.render('MoccaCalendar.calendarevent.create'))</button>
141 141  </span>
142 142  </div>
143 143  ## end create event link
144 144  #end
145 145  <div id="calendar${calcounter}"></div>
146 -#if ($calcounter == 0 && $canCreateEvents)
147 - ## Show event description form to trigger load of CK Editor resources.
148 - <form class="hidden">
149 - #set ($eventObject = $xwiki.getDocument('MoccaCalendar.MoccaCalendarEventTemplate').getObject('MoccaCalendar.MoccaCalendarEventClass'))
150 - $eventObject.display('description','edit').replace('{{html clean="false" wiki="false"}}', '').replace('{{/html}}', '')
151 - </form>
131 +#if($calcounter==0 && $canCreateEvents)
132 +## show event description form to trigger load of CK Editor resources
133 +<form class="hidden">$xwiki.getDocument('MoccaCalendar.MoccaCalendarEventTemplate').getObject('MoccaCalendar.MoccaCalendarEventClass').display('description','edit')</form>
152 152  #end
153 153  <script type="text/javascript">
154 154  require(['jquery', 'moccacalendar'], function(jQuery) {
... ... @@ -251,37 +251,12 @@
251 251   });
252 252   jQuery('#calendar${calcounter}-btn').click( function(e) { calendarHelper.showCreateEvent(); e.preventDefault(); });
253 253   // helper to be used in callback above
254 -#set ($newPageParams = $escapetool.url({
255 - 'template': 'MoccaCalendar.MoccaCalendarEventTemplate',
256 - 'parentFROM': $calendarDoc,
257 - 'form_token': $services.csrf.token,
258 - 'ocalcaction': 'create'
259 -}))
260 -## If the current user is not allowed to edit the current calendar, then create the temporary randomPage in a calendar that can be edited by the current user.
261 -#set ($randomSpace = 'MoccaCalendar')
262 -#if ($services.moccacalendar.allEditableCalendars.size() > 0)
263 - #set ($randomSpace = $services.model.serialize($services.model.resolveDocument($services.moccacalendar.allEditableCalendars[0]).lastSpaceReference))
264 -#end
265 -#set ($randomDocUrl = $xwiki.getURL("${randomSpace}.randomPage${util.generateRandomString(10)}",'edit',$newPageParams))
266 -#set ($updateUrlParams = $escapetool.url({
267 - 'xpage': 'plain',
268 - 'outputSyntax': 'plain',
269 - 'calendarDoc': $calendarDoc
270 -}))
271 -#set ($updateUrl = $xwiki.getURL('MoccaCalendar.Code.UpdateService', 'get', $updateUrlParams))
272 -var calendarHelper = new XWiki.MoccaCalendar.Helper(calendar,
273 - "$escapetool.javascript($dateFormat)",
274 - "$escapetool.javascript($jsonUrl)",
275 - "$escapetool.javascript($randomDocUrl)",
276 - "$escapetool.javascript($updateUrl)",
277 - "$escapetool.javascript($newPageNameUrl)",
278 - "$escapetool.javascript($dateCheckUrl)",
279 - "$escapetool.javascript($deleteEventInstanceUrl)",
280 - "$escapetool.javascript($newPageParams)",
281 - "$escapetool.javascript($services.csrf.token)"
282 -);
236 +#set($newPageParams = "template=MoccaCalendar.MoccaCalendarEventTemplate&parentFROM=${escapetool.url($calendarDoc)}&form_token=${services.csrf.getToken()}&ocalcaction=create")
237 +#set($randomDocUrl = $xwiki.getURL("randomPage${util.generateRandomString(10)}",'edit',$newPageParams))
238 +#set($updateUrlParams="?xpage=plain&outputSyntax=plain&calendarDoc=${escapetool.url(${calendarDoc})}&")
239 + var calendarHelper = new XWiki.MoccaCalendar.Helper(calendar, "$!escapetool.javascript($dateFormat)", "$escapetool.javascript($jsonUrl)", "$escapetool.javascript($randomDocUrl)", "$escapetool.javascript("${updateUrl}${updateUrlParams}")", "$escapetool.javascript($newPageNameUrl)", "$escapetool.javascript($dateCheckUrl)","$escapetool.javascript($deleteEventInstanceUrl)","$escapetool.javascript($newPageParams)", "${escapetool.javascript($services.csrf.getToken())}");
240 + });
283 283  });
284 -});
285 285  </script>
286 286  {{/html}}
287 287  #else ## of #if($xcontext.action=='view')
defaultCategory
... ... @@ -1,1 +1,0 @@
1 -Content