41
41
##
42
42
#set ($scheduler = $xwiki.scheduler)
43
43
##
44
- ## If the sheet is called with an action ($request.do), let us first process this action
44
+ ## If the sheet is called with an action ($request.do), let us first process this action after checking the user has
45
+ ## programming rights.
45
46
## Possible values are : "schedule", "pause", "resume", "unschedule", "delete"
46
47
##
47
48
#if ("$!request.do" != '' && "$!request.which" != '')
51
52
#set ($tJobHolder = $request.which)
52
53
#set ($jobDoc = $xwiki.getDocument($tJobHolder))
53
54
#set ($jobObj = $jobDoc.getObject('XWiki.SchedulerJobClass'))
54
- #if (!$services.csrf.isTokenValid($request.form_token))
55
+ #if (!$services.security.authorization.hasAccess('programming', $xcontext.userReference, $doc.documentReference))
56
+ ##
57
+ ## Check that the user has programming rights
58
+ ##
59
+ {{error}}{{translation key='xe.scheduler.missingProgrammingRights'/}}{{/error}}
60
+
61
+ #elseif (!$services.csrf.isTokenValid($request.form_token))
55
62
##
56
63
## Check that the CSRF token matches the user before any operation
57
64
##
58
- {{error}}$services.localization.render( 'xe.scheduler.invalidToken') {{/error}}
65
+ {{error}}{{translation key= 'xe.scheduler.invalidToken'/}} {{/error}}
59
66
60
67
#elseif ($request.do == 'schedule')
61
68
##
62
69
## Schedule a job
63
70
##
64
71
#set ($ok = $scheduler.scheduleJob($jobObj))
65
72
#if (!$ok)
66
- {{error}}$xcontext.get('error'){{/error}}
73
+ {{error}}$escapetool.xml($ xcontext.get('error') ){{/error}}
67
74
68
75
#else
69
76
#set ($jobName = "$jobObj.get('jobName')")
70
- {{info}}$services.localization.render('xe.scheduler.jobscheduled', [$jobName, $scheduler.getNextFireTime($jobObj)]){{/info}}
77
+ {{info}}$escapetool.xml($ services.localization.render('xe.scheduler.jobscheduled', [$jobName, $scheduler.getNextFireTime($jobObj)]) ){{/info}}
71
78
72
79
#end
73
80
#elseif ($request.do == 'pause')
76
83
##
77
84
#set ($ok = $scheduler.pauseJob($jobObj))
78
85
#if (!$ok)
79
- {{error}}$xcontext.get('error'){{/error}}
86
+ {{error}}$escapetool.xml($ xcontext.get('error') ){{/error}}
80
87
81
88
#else
82
- {{info}}$services.localization.render('xe.scheduler.paused', [$jobObj.get('jobName')]){{/info}}
89
+ {{info}}$escapetool.xml($ services.localization.render('xe.scheduler.paused', [$jobObj.get('jobName')]) ){{/info}}
83
90
84
91
#end
85
92
#elseif ($request.do == 'resume')
88
95
##
89
96
#set ($ok = $scheduler.resumeJob($jobObj))
90
97
#if (!$ok)
91
- {{error}}$xcontext.get('error'){{/error}}
98
+ {{error}}$escapetool.xml($ xcontext.get('error') ){{/error}}
92
99
93
100
#else
94
- {{info}}$services.localization.render('xe.scheduler.resumed', [$jobObj.get('jobName'), $scheduler.getNextFireTime($jobObj)]){{/info}}
101
+ {{info}}$escapetool.xml($ services.localization.render('xe.scheduler.resumed', [$jobObj.get('jobName'), $scheduler.getNextFireTime($jobObj)]) ){{/info}}
95
102
96
103
#end
97
104
#elseif ($request.do == 'unschedule')
100
107
##
101
108
#set ($ok = $scheduler.unscheduleJob($jobObj))
102
109
#if (!$ok)
103
- {{error}}$xcontext.get('error'){{/error}}
110
+ {{error}}$escapetool.xml($ xcontext.get('error') ){{/error}}
104
111
105
112
#else
106
- {{info}}$services.localization.render('xe.scheduler.unscheduled', [$jobObj.get('jobName')]){{/info}}
113
+ {{info}}$escapetool.xml($ services.localization.render('xe.scheduler.unscheduled', [$jobObj.get('jobName')]) ){{/info}}
107
114
108
115
#end
109
116
#elseif ($request.do == 'delete')
118
125
#set ($deleteRedirect = $xwiki.getURL($jobObj.getName(), 'delete'))
119
126
$response.sendRedirect($deleteRedirect)
120
127
#else
121
- {{error}}$xcontext.get('error'){{/error}}
128
+ {{error}}$escapetool.xml($ xcontext.get('error') ){{/error}}
122
129
123
130
#end
124
131
#else
131
138
##
132
139
#set ($ok = $scheduler.triggerJob($jobObj))
133
140
#if (!$ok)
134
- {{error}}$xcontext.get('error'){{/error}}
141
+ {{error}}$escapetool.xml($ xcontext.get('error') ){{/error}}
135
142
136
143
#else
137
- {{info}}$services.localization.render('xe.scheduler.triggered', [$jobObj.get('jobName')]){{/info}}
144
+ {{info}}$escapetool.xml($ services.localization.render('xe.scheduler.triggered', [$jobObj.get('jobName')]) ){{/info}}
138
145
139
146
#end
140
147
#end
141
148
#end
142
- $services.localization.render( 'xe.scheduler.welcome')
149
+ {{translation key= 'xe.scheduler.welcome'/}}
143
150
144
- = $services.localization.render( 'xe.scheduler.jobs.list') =
151
+ = {{translation key= 'xe.scheduler.jobs.list'/}} =
145
152
146
153
##
147
154
## Retrieve all scheduler jobs
148
155
## Display their name, status, possible next fire time, and available actions
149
156
##
150
- |=(%scope="col"%)$services.localization.render( 'xe.scheduler.jobs.name') |=(%scope="col"%)$services.localization.render( 'xe.scheduler.jobs.status') |=(%scope="col"%)$services.localization.render( 'xe.scheduler.jobs.next') |=(%scope="col"%)$services.localization.render( 'xe.scheduler.jobs.actions')
157
+ |=(%scope="col"%){{translation key= 'xe.scheduler.jobs.name'/}} |=(%scope="col"%){{translation key= 'xe.scheduler.jobs.status'/}} |=(%scope="col"%){{translation key= 'xe.scheduler.jobs.next'/}} |=(%scope="col"%){{translation key= 'xe.scheduler.jobs.actions'/}}
151
158
#foreach ($docName in $services.query.xwql('from doc.object(XWiki.SchedulerJobClass) as jobs where doc.fullName <> ''XWiki.SchedulerJobTemplate''').execute())
152
159
#set ($jobHolder = $xwiki.getDocument($docName))
153
160
#set ($job = $jobHolder.getObject('XWiki.SchedulerJobClass'))
@@ -159,7 +166,7 @@ $services.localization.render('xe.scheduler.welcome')
159
166
#if ($status != 'None')
160
167
#set ($firetime = $scheduler.getNextFireTime($job))
161
168
#else
162
- #set ($firetime = $services.localization.render( 'xe.scheduler.jobs.next.undefined') )
169
+ #set ($firetime = "{{translation key= 'xe.scheduler.jobs.next.undefined'/}}" )
163
170
#end
164
171
#set ($actions = ['trigger'])
165
172
#if ($status == 'None')
@@ -170,7 +177,7 @@ $services.localization.render('xe.scheduler.welcome')
170
177
#set ($ok = $actions.addAll(['resume', 'unschedule']))
171
178
#end
172
179
#set ($ok = $actions.add('delete'))
173
- |$job.get('jobName')|$status|$firetime|**$services.localization.render( 'xe.scheduler.jobs.actions.access') ** [[$services.localization.render( 'xe.scheduler.jobs.actions.view') >> $services.rendering.escape($jobHolder.fullName, 'xwiki/2.1')]]#if($jobHolder.hasAccessLevel('programming')) [[$services.localization.render( 'xe.scheduler.jobs.actions.edit') >> path:${jobHolder.getURL('edit')}]]#end **$services.localization.render( 'xe.scheduler.jobs.actions.manage') **#foreach($action in $actions) [[$services.localization.render(" xe.scheduler.jobs.actions.$action") >> path:$doc.getURL('view', $escapetool.url({'do': $action, 'which': $jobHolder.fullName, 'form_token': $services.csrf.token}))]]#end
180
+ |$job.get('jobName')|$status|$firetime|**{{translation key= 'xe.scheduler.jobs.actions.access'/}} ** [[{{translation key= 'xe.scheduler.jobs.actions.view'/}} >> $services.rendering.escape($jobHolder.fullName, 'xwiki/2.1')]]#if($jobHolder.hasAccessLevel('programming')) [[{{translation key= 'xe.scheduler.jobs.actions.edit'/}} >> path:${jobHolder.getURL('edit')}]]#end **{{translation key= 'xe.scheduler.jobs.actions.manage'/}} **#foreach($action in $actions) [[{{translation key=' xe.scheduler.jobs.actions.$action'/}} >> path:$doc.getURL('view', $escapetool.url({'do': $action, 'which': $jobHolder.fullName, 'form_token': $services.csrf.token}))]]#end
174
181
175
182
#end
176
183
#if ($doc.hasAccessLevel('programming'))
@@ -181,12 +188,12 @@ $services.localization.render('xe.scheduler.welcome')
181
188
## schedule, pause, etc.
182
189
##
183
190
184
- = $services.localization.render( 'xe.scheduler.jobs.create') =
191
+ = {{translation key= 'xe.scheduler.jobs.create'/}} =
185
192
186
193
##
187
194
## Form to create a new Job
188
195
##
189
- {{info}}$services.localization.render( 'xe.scheduler.jobs.explaincreate') {{/info}}
196
+ {{info}}{{translation key= 'xe.scheduler.jobs.explaincreate'/}} {{/info}}
190
197
191
198
{{html}}
192
199
< form action="$doc.getURL('create')" id="newdoc" class="form-inline">< div>
@@ -195,7 +202,7 @@ $services.localization.render('xe.scheduler.welcome')
195
202
< input type="hidden" name="template" value="XWiki.SchedulerJobTemplate" />
196
203
< input type="hidden" name="sheet" value="1" />
197
204
< input type="hidden" name="space" value="Scheduler"/>
198
- < label class="sr-only" for="page"> $services.localization.render('xe.scheduler.jobs.create.nameTip')< /label>
205
+ < label class="sr-only" for="page"> $escapetool.xml($ services.localization.render('xe.scheduler.jobs.create.nameTip') )< /label>
199
206
< input id="page" name="page" size="30" type="text"
200
207
placeholder="$escapetool.xml($services.localization.render('xe.scheduler.jobs.create.nameTip'))" />
201
208
< span class="buttonwrapper">
@@ -207,7 +214,7 @@ $services.localization.render('xe.scheduler.welcome')
207
214
208
215
#else
209
216
210
- {{warning}}$services.localization.render( 'xe.scheduler.jobs.warning') {{/warning}}
217
+ {{warning}}{{translation key= 'xe.scheduler.jobs.warning'/}} {{/warning}}
211
218
212
219
#end
213
220
{{/velocity}}</content >
0 commit comments