Wiki source code of NotificationPreferenceService
Version 1.1 by Julien Fleury on 2020/12/12 16:56
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | {{velocity}} | ||
2 | #if ("$!request.interval" != '') | ||
3 | #set ($userDoc = $xwiki.getDocument($xcontext.userReference)) | ||
4 | #set ($prefObj = $userDoc.getObject('XWiki.Notifications.Code.NotificationEmailPreferenceClass', true)) | ||
5 | #set ($discard = $prefObj.set('interval', $request.interval)) | ||
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)) | ||
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 | ||
21 | #elseif ("$!request.action" == 'savePreferences') | ||
22 | #try() | ||
23 | #if ("$!request.target" == 'wiki') | ||
24 | $services.notification.preferences.saveNotificationPreferencesForCurrentWiki($request.json) | ||
25 | #else | ||
26 | $services.notification.preferences.saveNotificationPreferences($request.json) | ||
27 | #end | ||
28 | #end | ||
29 | #if ("$!exception" != '') | ||
30 | $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") | ||
31 | #end | ||
32 | #elseif ("$!request.action" == 'deleteFilterPreference') | ||
33 | #try() | ||
34 | #if ($services.csrf.isTokenValid($request.csrf)) | ||
35 | $services.notification.filters.deleteFilterPreference($request.filterPreferenceId) | ||
36 | #else | ||
37 | $response.sendError(401, 'Bad CSRF Token') | ||
38 | #end | ||
39 | #end | ||
40 | #if ("$!exception" != '') | ||
41 | $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") | ||
42 | #end | ||
43 | #elseif ("$!request.action" == 'setFilterPreferenceEnabled') | ||
44 | #try() | ||
45 | #if ($services.csrf.isTokenValid($request.csrf)) | ||
46 | $services.notification.filters.setFilterPreferenceEnabled($request.filterPreferenceId, $stringtool.equals("$!request.enabled", 'true')) | ||
47 | #else | ||
48 | $response.sendError(401, 'Bad CSRF Token') | ||
49 | #end | ||
50 | #end | ||
51 | #if ("$!exception" != '') | ||
52 | $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") | ||
53 | #end | ||
54 | #elseif ("$!request.action" == 'createScopeFilterPreference') | ||
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) | ||
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 | ||
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 | ||
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 | ||
78 | #end | ||
79 | #else | ||
80 | $response.sendError(401, 'Bad CSRF Token') | ||
81 | #end | ||
82 | #end | ||
83 | #if ("$!exception" != '') | ||
84 | $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") | ||
85 | #end | ||
86 | #elseif ("$!request.action" == 'setAutoWatchMode' || "$!request.action" == 'setDefaultAutoWatchMode') | ||
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 | ||
102 | #end | ||
103 | #if ("$!exception" != '') | ||
104 | $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") | ||
105 | #end | ||
106 | #elseif ("$!request.action" == 'watchUser' || "$!request.action" == 'unwatchUser') | ||
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 | #else | ||
115 | $response.sendError(401, 'Bad CSRF Token') | ||
116 | #end | ||
117 | #end | ||
118 | #if ("$!exception" != '') | ||
119 | $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") | ||
120 | #end | ||
121 | #end | ||
122 | {{/velocity}} |