Wiki source code of NotificationPreferenceService
Last modified by Julien Fleury on 2021/05/03 15:40
Hide last authors
author | version | line-number | content |
---|---|---|---|
![]() |
1.1 | 1 | {{velocity}} |
![]() |
2.1 | 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)) | ||
![]() |
1.1 | 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')) | ||
![]() |
2.1 | 32 | #elseif ("$!request.action" == "setDiffType") |
33 | #if ("$!request.diffType" == '') | ||
34 | #set ($discard = $response.sendError(400, $services.localization.render('notifications.settings.error.badParameters'))) | ||
![]() |
1.1 | 35 | #end |
![]() |
2.1 | 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')) | ||
![]() |
1.1 | 39 | #elseif ("$!request.action" == 'savePreferences') |
40 | #try() | ||
41 | #if ("$!request.target" == 'wiki') | ||
42 | $services.notification.preferences.saveNotificationPreferencesForCurrentWiki($request.json) | ||
43 | #else | ||
![]() |
2.1 | 44 | $services.notification.preferences.saveNotificationPreferences($request.json, $targetRef) |
![]() |
1.1 | 45 | #end |
46 | #end | ||
47 | #if ("$!exception" != '') | ||
48 | $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") | ||
49 | #end | ||
50 | #elseif ("$!request.action" == 'deleteFilterPreference') | ||
51 | #try() | ||
![]() |
2.1 | 52 | #if ("$!request.target" == 'wiki') |
53 | $services.notification.filters.deleteWikiFilterPreference($request.filterPreferenceId, $targetRef) | ||
![]() |
1.1 | 54 | #else |
![]() |
2.1 | 55 | $services.notification.filters.deleteFilterPreference($request.filterPreferenceId, $targetRef) |
![]() |
1.1 | 56 | #end |
57 | #end | ||
58 | #if ("$!exception" != '') | ||
59 | $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") | ||
60 | #end | ||
61 | #elseif ("$!request.action" == 'setFilterPreferenceEnabled') | ||
62 | #try() | ||
![]() |
2.1 | 63 | #if ("$!request.target" == 'wiki') |
64 | $services.notification.filters.setWikiFilterPreferenceEnabled($request.filterPreferenceId, $stringtool.equals("$!request.enabled", 'true'), $targetRef) | ||
![]() |
1.1 | 65 | #else |
![]() |
2.1 | 66 | $services.notification.filters.setFilterPreferenceEnabled($request.filterPreferenceId, $stringtool.equals("$!request.enabled", 'true'), $targetRef) |
![]() |
1.1 | 67 | #end |
68 | #end | ||
69 | #if ("$!exception" != '') | ||
70 | $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") | ||
71 | #end | ||
72 | #elseif ("$!request.action" == 'createScopeFilterPreference') | ||
73 | #try() | ||
![]() |
2.1 | 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) | ||
![]() |
1.1 | 79 | #end |
![]() |
2.1 | 80 | #end |
81 | #if ("$!request.wiki" != "") | ||
82 | #foreach ($wikiRequest in $request.getParameterValues('wiki')) | ||
83 | #set ($reference = $services.model.createWikiReference($wikiRequest)) | ||
84 | #saveScopeFilterPreference($reference) | ||
![]() |
1.1 | 85 | #end |
![]() |
2.1 | 86 | #end |
87 | #if ("$!request.space" != "") | ||
88 | #foreach ($spaceRequest in $request.getParameterValues('space')) | ||
89 | #set ($reference = $services.model.resolveSpace($spaceRequest)) | ||
90 | #saveScopeFilterPreference($reference) | ||
![]() |
1.1 | 91 | #end |
![]() |
2.1 | 92 | #end |
93 | #if ("$!request.page" != "") | ||
94 | #foreach ($pageRequest in $request.getParameterValues('page')) | ||
95 | #set ($reference = $services.model.resolveDocument($pageRequest)) | ||
96 | #saveScopeFilterPreference($reference) | ||
![]() |
1.1 | 97 | #end |
98 | #end | ||
99 | #end | ||
100 | #if ("$!exception" != '') | ||
101 | $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") | ||
102 | #end | ||
![]() |
2.1 | 103 | #elseif ("$!request.action" == 'setAutoWatchMode') |
![]() |
1.1 | 104 | #try() |
![]() |
2.1 | 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.')) | ||
![]() |
1.1 | 108 | #end |
109 | #if ("$!exception" != '') | ||
110 | $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") | ||
111 | #end | ||
112 | #elseif ("$!request.action" == 'watchUser' || "$!request.action" == 'unwatchUser') | ||
113 | #try() | ||
![]() |
2.1 | 114 | #if ($request.action == 'watchUser') |
115 | #set ($discard = $services.notification.watch.watchUser($request.user)) | ||
![]() |
1.1 | 116 | #else |
![]() |
2.1 | 117 | #set ($discard = $services.notification.watch.unwatchUser($request.user)) |
![]() |
1.1 | 118 | #end |
119 | #end | ||
120 | #if ("$!exception" != '') | ||
121 | $response.sendError(500, "$!exceptiontool.getStackTrace($exception)") | ||
122 | #end | ||
123 | #end | ||
124 | {{/velocity}} | ||
125 |