From version 1.1 >
edited by Julien Fleury
on 2020/12/12 16:56
To version < 2.1
edited by Julien Fleury
on 2021/05/03 15:40
Change comment: Install extension [org.xwiki.platform:xwiki-platform-notifications-ui/13.3]

Summary

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 - $response.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 - $response.sendError(401, 'Bad CSRF 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 - #foreach ($wikiRequest in $request.getParameterValues('wiki'))
62 - #set ($reference = $services.model.createWikiReference($wikiRequest))
63 - #saveScopeFilterPreference($reference)
64 - #end
80 + #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 - #foreach ($pageRequest in $request.getParameterValues('page'))
75 - #set ($reference = $services.model.resolveDocument($pageRequest))
76 - #saveScopeFilterPreference($reference)
77 - #end
92 + #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 - $response.sendError(401, 'Bad CSRF Token')
117 + #set ($discard = $services.notification.watch.unwatchUser($request.user))
116 116   #end
117 117   #end
118 118   #if ("$!exception" != '')
This wiki is hosted and managed by iXPath
Powered by XWiki 13.3 debian