Changes for page NotificationPreferenceService
Last modified by Julien Fleury on 2021/05/03 15:40
edited by Julien Fleury
on 2020/12/12 16:56
on 2020/12/12 16:56
edited by Julien Fleury
on 2021/05/03 15:40
on 2021/05/03 15:40
Change comment:
Install extension [org.xwiki.platform:xwiki-platform-notifications-ui/13.3]
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,29 +1,47 @@ 1 1 {{velocity}} 2 -#if ("$!request.interval" != '') 3 - #set ($userDoc = $xwiki.getDocument($xcontext.userReference)) 2 +#if ("$!request.user" != "") 3 + #if ($request.user.contains(".")) 4 + #set ($targetUser = $request.user) 5 + #else 6 + #set ($targetUser = "XWiki." + $request.user) 7 + #end 8 +#end 9 +#if ("$!request.target" == 'wiki') 10 + #set ($targetDoc = $xwiki.getDocument($services.model.createDocumentReference('', ['XWiki', 'Notifications', 'Code'], 'NotificationAdministration'))) 11 + #set ($targetRef = $services.wiki.getCurrentWikiReference()) 12 +#elseif ("$!request.target" == 'user') 13 + #set ($targetDoc = $xwiki.getDocument($targetUser)) 14 + #set ($targetRef = $targetUser) 15 +#end 16 +#if ("$!request.action" == "" && $request.method.equalsIgnoreCase('get')) 17 + This is a technical page for Notifications macro. 18 +#elseif (!$services.csrf.isTokenValid($request.csrf)) 19 + #set ($discard = $response.sendError(401, $services.localization.render('notifications.settings.error.badCSRF'))) 20 +#elseif ("$!request.target" == 'wiki' && !$hasAdmin) 21 + #set ($discard = $response.sendError(401)) 22 +#elseif ("$!request.action" == "" || "$!request.target" == "" || ("$!request.target" == 'user' && "$!request.user" == "")) 23 + #set ($discard = $response.sendError(400, $services.localization.render('notifications.settings.error.badParameters'))) 24 +#elseif ("$!request.action" == "setInterval") 25 + #if ("$!request.interval" == '' || "$!request.target" == 'wiki') 26 + #set ($discard = $response.sendError(400, $services.localization.render('notifications.settings.error.badParameters'))) 27 + #end 28 + #set ($userDoc = $xwiki.getDocument($targetUser)) 4 4 #set ($prefObj = $userDoc.getObject('XWiki.Notifications.Code.NotificationEmailPreferenceClass', true)) 5 5 #set ($discard = $prefObj.set('interval', $request.interval)) 6 6 #set ($discard = $userDoc.save('Update Notification Email Interval')) 7 -#elseif ("$!request.diffType" != '') 8 - #set ($targetDoc = 0) 9 - #if ("$!request.target" == 'wiki' && $hasAdmin) 10 - #set ($targetDoc = $xwiki.getDocument($services.model.createDocumentReference('', ['XWiki', 'Notifications', 'Code'], 'NotificationAdministration'))) 11 - #elseif ("$!request.target" == 'user') 12 - #set ($targetDoc = $xwiki.getDocument($xcontext.userReference)) 32 +#elseif ("$!request.action" == "setDiffType") 33 + #if ("$!request.diffType" == '') 34 + #set ($discard = $response.sendError(400, $services.localization.render('notifications.settings.error.badParameters'))) 13 13 #end 14 - #if ($targetDoc == 0) 15 - #set ($discard = $response.sendError(401)) 16 - #else 17 - #set ($prefObj = $targetDoc.getObject('XWiki.Notifications.Code.NotificationEmailPreferenceClass', true)) 18 - #set ($discard = $prefObj.set('diffType', $request.diffType)) 19 - #set ($discard = $targetDoc.save('Update Notification Email Diff Type')) 20 - #end 36 + #set ($prefObj = $targetDoc.getObject('XWiki.Notifications.Code.NotificationEmailPreferenceClass', true)) 37 + #set ($discard = $prefObj.set('diffType', $request.diffType)) 38 + #set ($discard = $targetDoc.save('Update Notification Email Diff Type')) 21 21 #elseif ("$!request.action" == 'savePreferences') 22 22 #try() 23 23 #if ("$!request.target" == 'wiki') 24 24 $services.notification.preferences.saveNotificationPreferencesForCurrentWiki($request.json) 25 25 #else 26 - $services.notification.preferences.saveNotificationPreferences($request.json) 44 + $services.notification.preferences.saveNotificationPreferences($request.json, $targetRef) 27 27 #end 28 28 #end 29 29 #if ("$!exception" != '') ... ... @@ -31,10 +31,10 @@ 31 31 #end 32 32 #elseif ("$!request.action" == 'deleteFilterPreference') 33 33 #try() 34 - #if ($ services.csrf.isTokenValid($request.csrf))35 - $services.notification.filters.deleteFilterPreference($request.filterPreferenceId) 52 + #if ("$!request.target" == 'wiki') 53 + $services.notification.filters.deleteWikiFilterPreference($request.filterPreferenceId, $targetRef) 36 36 #else 37 - $res ponse.sendError(401,'Bad CSRF Token')55 + $services.notification.filters.deleteFilterPreference($request.filterPreferenceId, $targetRef) 38 38 #end 39 39 #end 40 40 #if ("$!exception" != '') ... ... @@ -42,10 +42,10 @@ 42 42 #end 43 43 #elseif ("$!request.action" == 'setFilterPreferenceEnabled') 44 44 #try() 45 - #if ($ services.csrf.isTokenValid($request.csrf))46 - $services.notification.filters.setFilterPreferenceEnabled($request.filterPreferenceId, $stringtool.equals("$!request.enabled", 'true')) 63 + #if ("$!request.target" == 'wiki') 64 + $services.notification.filters.setWikiFilterPreferenceEnabled($request.filterPreferenceId, $stringtool.equals("$!request.enabled", 'true'), $targetRef) 47 47 #else 48 - $res ponse.sendError(401,'BadCSRF Token')66 + $services.notification.filters.setFilterPreferenceEnabled($request.filterPreferenceId, $stringtool.equals("$!request.enabled", 'true'), $targetRef) 49 49 #end 50 50 #end 51 51 #if ("$!exception" != '') ... ... @@ -53,52 +53,40 @@ 53 53 #end 54 54 #elseif ("$!request.action" == 'createScopeFilterPreference') 55 55 #try() 56 - #if ($services.csrf.isTokenValid($request.csrf)) 57 - #macro (saveScopeFilterPreference $reference) 58 - $services.notification.filters.createScopeFilterPreference($request.filterType, $request.filterFormats.split(','), $request.eventTypes.split(','), $reference) 74 + #macro (saveScopeFilterPreference $reference) 75 + #if ("$!request.target" == 'wiki') 76 + $services.notification.filters.createWikiScopeFilterPreference($request.filterType, $request.filterFormats.split(','), $request.eventTypes.split(','), $reference, $targetRef) 77 + #else 78 + $services.notification.filters.createScopeFilterPreference($request.filterType, $request.filterFormats.split(','), $request.eventTypes.split(','), $reference, $targetRef) 59 59 #end 60 - if ("$!request.wiki" != "")61 - oreach($wikiRequest in $request.getParameterValues('wiki'))62 - set($reference=$services.model.createWikiReference($wikiRequest))63 - aveScopeFilterPreference($reference)64 - #en d80 + #end 81 + #if ("$!request.wiki" != "") 82 + #foreach ($wikiRequest in $request.getParameterValues('wiki')) 83 + #set ($reference = $services.model.createWikiReference($wikiRequest)) 84 + #saveScopeFilterPreference($reference) 65 65 #end 66 - #if ("$!request.space" != "") 67 - #foreach ($spaceRequest in $request.getParameterValues('space')) 68 - SPACE REQUEST: $spaceRequest 69 - #set ($reference = $services.model.resolveSpace($spaceRequest)) 70 - #saveScopeFilterPreference($reference) 71 - #end 86 + #end 87 + #if ("$!request.space" != "") 88 + #foreach ($spaceRequest in $request.getParameterValues('space')) 89 + #set ($reference = $services.model.resolveSpace($spaceRequest)) 90 + #saveScopeFilterPreference($reference) 72 72 #end 73 - if ("$!request.page" != "")74 - oreach($pageRequest in $request.getParameterValues('page'))75 - set($reference=$services.model.resolveDocument($pageRequest))76 - aveScopeFilterPreference($reference)77 - #en d92 + #end 93 + #if ("$!request.page" != "") 94 + #foreach ($pageRequest in $request.getParameterValues('page')) 95 + #set ($reference = $services.model.resolveDocument($pageRequest)) 96 + #saveScopeFilterPreference($reference) 78 78 #end 79 - #else 80 - $response.sendError(401, 'Bad CSRF Token') 81 81 #end 82 82 #end 83 83 #if ("$!exception" != '') 84 84 $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") 85 85 #end 86 -#elseif ("$!request.action" == 'setAutoWatchMode' || "$!request.action" == 'setDefaultAutoWatchMode')103 +#elseif ("$!request.action" == 'setAutoWatchMode') 87 87 #try() 88 - #if ($services.csrf.isTokenValid($request.csrf)) 89 - #if ($request.action == 'setAutoWatchMode') 90 - #set ($targetDoc = $xwiki.getDocument($xcontext.userReference)) 91 - #elseif (!$hasAdmin) 92 - $response.sendError(401, 'Unauthorized') 93 - #else 94 - #set ($targetDoc = $xwiki.getDocument($services.model.createDocumentReference('', ['XWiki', 'Notifications', 'Code'], 'NotificationAdministration'))) 95 - #end 96 - #set ($obj = $targetDoc.getObject('XWiki.Notifications.Code.AutomaticWatchModeClass', true)) 97 - #set ($discard = $obj.set('automaticWatchMode', $request.mode)) 98 - #set ($discard = $targetDoc.save('Update the automaticWatchMode.')) 99 - #else 100 - $response.sendError(401, 'Bad CSRF Token') 101 - #end 105 + #set ($obj = $targetDoc.getObject('XWiki.Notifications.Code.AutomaticWatchModeClass', true)) 106 + #set ($discard = $obj.set('automaticWatchMode', $request.mode)) 107 + #set ($discard = $targetDoc.save('Update the automaticWatchMode.')) 102 102 #end 103 103 #if ("$!exception" != '') 104 104 $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") ... ... @@ -105,14 +105,10 @@ 105 105 #end 106 106 #elseif ("$!request.action" == 'watchUser' || "$!request.action" == 'unwatchUser') 107 107 #try() 108 - #if ($services.csrf.isTokenValid($request.csrf)) 109 - #if ($request.action == 'watchUser') 110 - #set ($discard = $services.notification.watch.watchUser($request.userId)) 111 - #else 112 - #set ($discard = $services.notification.watch.unwatchUser($request.userId)) 113 - #end 114 + #if ($request.action == 'watchUser') 115 + #set ($discard = $services.notification.watch.watchUser($request.user)) 114 114 #else 115 - $res ponse.sendError(401, 'Bad CSRF Token')117 + #set ($discard = $services.notification.watch.unwatchUser($request.user)) 116 116 #end 117 117 #end 118 118 #if ("$!exception" != '')