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

Summary

Details

Page properties
Content
... ... @@ -1,47 +1,29 @@
1 1  {{velocity}}
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))
2 +#if ("$!request.interval" != '')
3 + #set ($userDoc = $xwiki.getDocument($xcontext.userReference))
29 29   #set ($prefObj = $userDoc.getObject('XWiki.Notifications.Code.NotificationEmailPreferenceClass', true))
30 30   #set ($discard = $prefObj.set('interval', $request.interval))
31 31   #set ($discard = $userDoc.save('Update Notification Email Interval'))
32 -#elseif ("$!request.action" == "setDiffType")
33 - #if ("$!request.diffType" == '')
34 - #set ($discard = $response.sendError(400, $services.localization.render('notifications.settings.error.badParameters')))
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))
35 35   #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'))
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
39 39  #elseif ("$!request.action" == 'savePreferences')
40 40   #try()
41 41   #if ("$!request.target" == 'wiki')
42 42   $services.notification.preferences.saveNotificationPreferencesForCurrentWiki($request.json)
43 43   #else
44 - $services.notification.preferences.saveNotificationPreferences($request.json, $targetRef)
26 + $services.notification.preferences.saveNotificationPreferences($request.json)
45 45   #end
46 46   #end
47 47   #if ("$!exception" != '')
... ... @@ -49,10 +49,10 @@
49 49   #end
50 50  #elseif ("$!request.action" == 'deleteFilterPreference')
51 51   #try()
52 - #if ("$!request.target" == 'wiki')
53 - $services.notification.filters.deleteWikiFilterPreference($request.filterPreferenceId, $targetRef)
34 + #if ($services.csrf.isTokenValid($request.csrf))
35 + $services.notification.filters.deleteFilterPreference($request.filterPreferenceId)
54 54   #else
55 - $services.notification.filters.deleteFilterPreference($request.filterPreferenceId, $targetRef)
37 + $response.sendError(401, 'Bad CSRF Token')
56 56   #end
57 57   #end
58 58   #if ("$!exception" != '')
... ... @@ -60,10 +60,10 @@
60 60   #end
61 61  #elseif ("$!request.action" == 'setFilterPreferenceEnabled')
62 62   #try()
63 - #if ("$!request.target" == 'wiki')
64 - $services.notification.filters.setWikiFilterPreferenceEnabled($request.filterPreferenceId, $stringtool.equals("$!request.enabled", 'true'), $targetRef)
45 + #if ($services.csrf.isTokenValid($request.csrf))
46 + $services.notification.filters.setFilterPreferenceEnabled($request.filterPreferenceId, $stringtool.equals("$!request.enabled", 'true'))
65 65   #else
66 - $services.notification.filters.setFilterPreferenceEnabled($request.filterPreferenceId, $stringtool.equals("$!request.enabled", 'true'), $targetRef)
48 + $response.sendError(401, 'Bad CSRF Token')
67 67   #end
68 68   #end
69 69   #if ("$!exception" != '')
... ... @@ -71,40 +71,52 @@
71 71   #end
72 72  #elseif ("$!request.action" == 'createScopeFilterPreference')
73 73   #try()
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)
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)
79 79   #end
80 - #end
81 - #if ("$!request.wiki" != "")
82 - #foreach ($wikiRequest in $request.getParameterValues('wiki'))
83 - #set ($reference = $services.model.createWikiReference($wikiRequest))
84 - #saveScopeFilterPreference($reference)
60 + #if ("$!request.wiki" != "")
61 + #foreach ($wikiRequest in $request.getParameterValues('wiki'))
62 + #set ($reference = $services.model.createWikiReference($wikiRequest))
63 + #saveScopeFilterPreference($reference)
64 + #end
85 85   #end
86 - #end
87 - #if ("$!request.space" != "")
88 - #foreach ($spaceRequest in $request.getParameterValues('space'))
89 - #set ($reference = $services.model.resolveSpace($spaceRequest))
90 - #saveScopeFilterPreference($reference)
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
91 91   #end
92 - #end
93 - #if ("$!request.page" != "")
94 - #foreach ($pageRequest in $request.getParameterValues('page'))
95 - #set ($reference = $services.model.resolveDocument($pageRequest))
96 - #saveScopeFilterPreference($reference)
73 + #if ("$!request.page" != "")
74 + #foreach ($pageRequest in $request.getParameterValues('page'))
75 + #set ($reference = $services.model.resolveDocument($pageRequest))
76 + #saveScopeFilterPreference($reference)
77 + #end
97 97   #end
79 + #else
80 + $response.sendError(401, 'Bad CSRF Token')
98 98   #end
99 99   #end
100 100   #if ("$!exception" != '')
101 101   $response.sendError(500, "$!exceptiontool.getStackTrace($exception)")
102 102   #end
103 -#elseif ("$!request.action" == 'setAutoWatchMode')
86 +#elseif ("$!request.action" == 'setAutoWatchMode' || "$!request.action" == 'setDefaultAutoWatchMode')
104 104   #try()
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.'))
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
108 108   #end
109 109   #if ("$!exception" != '')
110 110   $response.sendError(500, "$!exceptiontool.getStackTrace($exception)")
... ... @@ -111,10 +111,14 @@
111 111   #end
112 112  #elseif ("$!request.action" == 'watchUser' || "$!request.action" == 'unwatchUser')
113 113   #try()
114 - #if ($request.action == 'watchUser')
115 - #set ($discard = $services.notification.watch.watchUser($request.user))
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
116 116   #else
117 - #set ($discard = $services.notification.watch.unwatchUser($request.user))
115 + $response.sendError(401, 'Bad CSRF Token')
118 118   #end
119 119   #end
120 120   #if ("$!exception" != '')
This wiki is hosted and managed by iXPath
Powered by XWiki 13.3 debian