Wiki source code of NotificationPreferenceService
Last modified by Julien Fleury on 2021/05/03 15:40
Show last authors
author | version | line-number | content |
---|---|---|---|
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)) | ||
29 | #set ($prefObj = $userDoc.getObject('XWiki.Notifications.Code.NotificationEmailPreferenceClass', true)) | ||
30 | #set ($discard = $prefObj.set('interval', $request.interval)) | ||
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'))) | ||
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')) | ||
39 | #elseif ("$!request.action" == 'savePreferences') | ||
40 | #try() | ||
41 | #if ("$!request.target" == 'wiki') | ||
42 | $services.notification.preferences.saveNotificationPreferencesForCurrentWiki($request.json) | ||
43 | #else | ||
44 | $services.notification.preferences.saveNotificationPreferences($request.json, $targetRef) | ||
45 | #end | ||
46 | #end | ||
47 | #if ("$!exception" != '') | ||
48 | $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") | ||
49 | #end | ||
50 | #elseif ("$!request.action" == 'deleteFilterPreference') | ||
51 | #try() | ||
52 | #if ("$!request.target" == 'wiki') | ||
53 | $services.notification.filters.deleteWikiFilterPreference($request.filterPreferenceId, $targetRef) | ||
54 | #else | ||
55 | $services.notification.filters.deleteFilterPreference($request.filterPreferenceId, $targetRef) | ||
56 | #end | ||
57 | #end | ||
58 | #if ("$!exception" != '') | ||
59 | $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") | ||
60 | #end | ||
61 | #elseif ("$!request.action" == 'setFilterPreferenceEnabled') | ||
62 | #try() | ||
63 | #if ("$!request.target" == 'wiki') | ||
64 | $services.notification.filters.setWikiFilterPreferenceEnabled($request.filterPreferenceId, $stringtool.equals("$!request.enabled", 'true'), $targetRef) | ||
65 | #else | ||
66 | $services.notification.filters.setFilterPreferenceEnabled($request.filterPreferenceId, $stringtool.equals("$!request.enabled", 'true'), $targetRef) | ||
67 | #end | ||
68 | #end | ||
69 | #if ("$!exception" != '') | ||
70 | $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") | ||
71 | #end | ||
72 | #elseif ("$!request.action" == 'createScopeFilterPreference') | ||
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) | ||
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) | ||
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) | ||
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) | ||
97 | #end | ||
98 | #end | ||
99 | #end | ||
100 | #if ("$!exception" != '') | ||
101 | $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") | ||
102 | #end | ||
103 | #elseif ("$!request.action" == 'setAutoWatchMode') | ||
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.')) | ||
108 | #end | ||
109 | #if ("$!exception" != '') | ||
110 | $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") | ||
111 | #end | ||
112 | #elseif ("$!request.action" == 'watchUser' || "$!request.action" == 'unwatchUser') | ||
113 | #try() | ||
114 | #if ($request.action == 'watchUser') | ||
115 | #set ($discard = $services.notification.watch.watchUser($request.user)) | ||
116 | #else | ||
117 | #set ($discard = $services.notification.watch.unwatchUser($request.user)) | ||
118 | #end | ||
119 | #end | ||
120 | #if ("$!exception" != '') | ||
121 | $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") | ||
122 | #end | ||
123 | #end | ||
124 | {{/velocity}} |