Changes for page Calendar Macro
Last modified by admin on 2025/07/01 00:06
From version 2.1
edited by Benjamin Fischer
on 2025/02/11 10:47
on 2025/02/11 10:47
Change comment:
Install extension [org.xwiki.contrib:application-mocca-calendar-ui/2.9.7]
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Objects (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. fischer1 +XWiki.admin
- XWiki.WikiMacroClass[0]
-
- Macro code
-
... ... @@ -88,8 +88,8 @@ 88 88 #set($left = "prev,next today") 89 89 #set($center = "title") 90 90 #set($right = "agendaDay,agendaWeek,month,plainList") 91 - 92 -#set($canCreateEvents = $xwiki.hasAccessLevel( "edit", $xcontext.getUser(), $calendarDoc))91 +## 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. 92 +#set ($canCreateEvents = $xwiki.hasAccessLevel('edit', $xcontext.getUser(), $calendarDoc) || ($filter != 'page' && $services.moccacalendar.allEditableCalendars.size() > 0)) 93 93 #set ($calendarsFilter = $request.parameterMap['calendarsFiltler']) 94 94 {{/velocity}} 95 95 ... ... @@ -128,9 +128,12 @@ 128 128 ## end create event link 129 129 #end 130 130 <div id="calendar${calcounter}"></div> 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> 131 +#if ($calcounter == 0 && $canCreateEvents) 132 + ## Show event description form to trigger load of CK Editor resources. 133 + <form class="hidden"> 134 + #set ($eventObject = $xwiki.getDocument('MoccaCalendar.MoccaCalendarEventTemplate').getObject('MoccaCalendar.MoccaCalendarEventClass')) 135 + $eventObject.display('description','edit').replace('{{html clean="false" wiki="false"}}', '').replace('{{/html}}', '') 136 + </form> 134 134 #end 135 135 <script type="text/javascript"> 136 136 require(['jquery', 'moccacalendar'], function(jQuery) { ... ... @@ -234,7 +234,12 @@ 234 234 jQuery('#calendar${calcounter}-btn').click( function(e) { calendarHelper.showCreateEvent(); e.preventDefault(); }); 235 235 // helper to be used in callback above 236 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)) 240 +## 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. 241 +#set ($randomSpace = 'MoccaCalendar') 242 +#if ($services.moccacalendar.allEditableCalendars.size() > 0) 243 + #set ($randomSpace = $services.model.resolveDocument($services.moccacalendar.allEditableCalendars[0]).lastSpaceReference) 244 +#end 245 +#set($randomDocUrl = $xwiki.getURL("${randomSpace}.randomPage${util.generateRandomString(10)}",'edit',$newPageParams)) 238 238 #set($updateUrlParams="?xpage=plain&outputSyntax=plain&calendarDoc=${escapetool.url(${calendarDoc})}&") 239 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 240 });