Zuletzt geändert von Daniel Herrmann am 2025/02/24 17:44

Verstecke letzte Bearbeiter
Daniel Herrmann 1.1 1 {{velocity}}
2 #set($isActionAllowed = false)
3 #if ("$!request.user" != "")
4 #if ($request.user.contains("."))
5 #set ($targetUser = $request.user)
6 #else
7 #set ($targetUser = "XWiki." + $request.user)
8 #end
9 #end
10 #if ("$!request.target" == 'wiki')
11 #set ($targetDoc = $xwiki.getDocument($services.model.createDocumentReference('', ['XWiki', 'Notifications', 'Code'], 'NotificationAdministration')))
12 #set ($targetRef = $services.wiki.getCurrentWikiReference())
13 #set($isActionAllowed = $hasAdmin)
14 #elseif ("$!request.target" == 'user')
15 #set ($targetDoc = $xwiki.getDocument($targetUser))
16 #set ($targetRef = $services.model.resolveDocument($targetUser))
17 #set($isActionAllowed = ("$!request.action" == 'watchUser' || "$!request.action" == 'unwatchUser' || $services.security.authorization.hasAccess('admin', $requestedUserDocRef) || $xcontext.userReference.equals($targetRef)))
18 #end
19 #if ("$!request.action" == "" && $request.method.equalsIgnoreCase('get'))
20 This is a technical page for Notifications macro.
21 #elseif (!$services.csrf.isTokenValid($request.csrf))
22 #set ($discard = $response.sendError(401, $services.localization.render('notifications.settings.error.badCSRF')))
23 #elseif (!$isActionAllowed)
24 #set ($discard = $response.sendError(401))
25 #elseif ("$!request.action" == "" || "$!request.target" == "" || ("$!request.target" == 'user' && "$!request.user" == ""))
26 #set ($discard = $response.sendError(400, $services.localization.render('notifications.settings.error.badParameters')))
27 #elseif ("$!request.action" == "setInterval")
28 #if ("$!request.interval" == '')
29 #set ($discard = $response.sendError(400, $services.localization.render('notifications.settings.error.badParameters')))
30 #end
31 #set ($prefObj = $targetDoc.getObject('XWiki.Notifications.Code.NotificationEmailPreferenceClass', true))
32 #set ($discard = $prefObj.set('interval', $request.interval))
33 #set ($discard = $targetDoc.save('Update Notification Email Interval'))
34 #elseif ("$!request.action" == "setDiffType")
35 #if ("$!request.diffType" == '')
36 #set ($discard = $response.sendError(400, $services.localization.render('notifications.settings.error.badParameters')))
37 #end
38 #set ($prefObj = $targetDoc.getObject('XWiki.Notifications.Code.NotificationEmailPreferenceClass', true))
39 #set ($discard = $prefObj.set('diffType', $request.diffType))
40 #set ($discard = $targetDoc.save('Update Notification Email Diff Type'))
41 #elseif ("$!request.action" == 'savePreferences')
42 #try()
43 #if ("$!request.target" == 'wiki')
44 $services.notification.preferences.saveNotificationPreferencesForCurrentWiki($request.json)
45 #else
46 $services.notification.preferences.saveNotificationPreferences($request.json, $targetRef)
47 #end
48 #end
49 #if ("$!exception" != '')
50 $response.sendError(500, "$!exceptiontool.getStackTrace($exception)")
51 #end
52 #elseif ("$!request.action" == 'deleteFilterPreference')
53 #try()
54 #if ("$!request.target" == 'wiki')
55 $services.notification.filters.deleteWikiFilterPreference($request.filterPreferenceId, $targetRef)
56 #else
57 $services.notification.filters.deleteFilterPreference($request.filterPreferenceId, $targetRef)
58 #end
59 #end
60 #if ("$!exception" != '')
61 $response.sendError(500, "$!exceptiontool.getStackTrace($exception)")
62 #end
63 #elseif ("$!request.action" == 'setFilterPreferenceEnabled')
64 #try()
65 #if ("$!request.target" == 'wiki')
66 $services.notification.filters.setWikiFilterPreferenceEnabled($request.filterPreferenceId, $stringtool.equals("$!request.enabled", 'true'), $targetRef)
67 #else
68 $services.notification.filters.setFilterPreferenceEnabled($request.filterPreferenceId, $stringtool.equals("$!request.enabled", 'true'), $targetRef)
69 #end
70 #end
71 #if ("$!exception" != '')
72 $response.sendError(500, "$!exceptiontool.getStackTrace($exception)")
73 #end
74 #elseif ("$!request.action" == 'createScopeFilterPreference')
75 #try()
76 #macro (saveScopeFilterPreference $reference)
77 #if ("$!request.target" == 'wiki')
78 $services.notification.filters.createWikiScopeFilterPreference($request.filterType, $request.filterFormats.split(','), $request.eventTypes.split(','), $reference, $targetRef)
79 #else
80 $services.notification.filters.createScopeFilterPreference($request.filterType, $request.filterFormats.split(','), $request.eventTypes.split(','), $reference, $targetRef)
81 #end
82 #end
83 #if ("$!request.wiki" != "")
84 #foreach ($wikiRequest in $request.getParameterValues('wiki'))
85 #set ($reference = $services.model.createWikiReference($wikiRequest))
86 #saveScopeFilterPreference($reference)
87 #end
88 #end
89 #if ("$!request.space" != "")
90 #foreach ($spaceRequest in $request.getParameterValues('space'))
91 #set ($reference = $services.model.resolveSpace($spaceRequest))
92 #saveScopeFilterPreference($reference)
93 #end
94 #end
95 #if ("$!request.page" != "")
96 #foreach ($pageRequest in $request.getParameterValues('page'))
97 #set ($reference = $services.model.resolveDocument($pageRequest))
98 #saveScopeFilterPreference($reference)
99 #end
100 #end
101 #end
102 #if ("$!exception" != '')
103 $response.sendError(500, "$!exceptiontool.getStackTrace($exception)")
104 #end
105 #elseif ("$!request.action" == 'setAutoWatchMode')
106 #try()
107 #set ($obj = $targetDoc.getObject('XWiki.Notifications.Code.AutomaticWatchModeClass', true))
108 #set ($discard = $obj.set('automaticWatchMode', $request.mode))
109 #set ($discard = $targetDoc.save('Update the automaticWatchMode.'))
110 #end
111 #if ("$!exception" != '')
112 $response.sendError(500, "$!exceptiontool.getStackTrace($exception)")
113 #end
114 #elseif ("$!request.action" == 'watchUser' || "$!request.action" == 'unwatchUser')
115 #try()
116 #if ($request.action == 'watchUser')
117 #set ($discard = $services.notification.watch.watchUser($request.user))
118 #else
119 #set ($discard = $services.notification.watch.unwatchUser($request.user))
120 #end
121 #end
122 #if ("$!exception" != '')
123 $response.sendError(500, "$!exceptiontool.getStackTrace($exception)")
124 #end
125 #end
126 {{/velocity}}
127