@@ -113,14 +113,18 @@ private function addPage() {
113
113
$ formDescriptor = [
114
114
'Page ' => [
115
115
'label-message ' => 'resourceloaderarticles-page ' ,
116
+ 'help-message ' => 'resourceloaderarticles-help-page ' ,
116
117
'type ' => 'text ' ,
117
118
'required ' => true ,
119
+ 'filter-callback ' => [ $ this , 'trimValueCB ' ],
120
+ 'validation-callback ' => [ $ this , 'validatePageCB ' ],
118
121
],
119
122
'Wiki ' => [
120
123
'label-message ' => 'resourceloaderarticles-wiki ' ,
121
124
'type ' => 'text ' ,
122
125
'required ' => true ,
123
126
'default ' => 'all ' ,
127
+ 'filter-callback ' => [ $ this , 'trimValueCB ' ],
124
128
],
125
129
'Type ' => [
126
130
'class ' => 'HTMLSelectField ' ,
@@ -136,6 +140,8 @@ private function addPage() {
136
140
'type ' => 'int ' ,
137
141
'required ' => true ,
138
142
'default ' => '0 ' ,
143
+ 'min ' => -1000 ,
144
+ 'max ' => 1000 ,
139
145
],
140
146
];
141
147
@@ -151,69 +157,22 @@ private function addPage() {
151
157
* @param array $formData
152
158
*/
153
159
public function addPageCB ( $ formData ) {
160
+ $ dbw = wfGetDB ( DB_PRIMARY );
161
+ $ dbw ->insert (
162
+ 'resourceloaderarticles ' ,
163
+ [
164
+ 'rla_page ' => $ formData [ 'Page ' ],
165
+ 'rla_wiki ' => $ formData [ 'Wiki ' ],
166
+ 'rla_type ' => $ formData [ 'Type ' ],
167
+ 'rla_priority ' => intval ( $ formData [ 'Priority ' ] )
168
+ ]
169
+ );
154
170
$ output = $ this ->getOutput ();
155
- $ store = true ;
156
- if ( empty ( $ formData [ 'Page ' ] ) ) {
157
- $ output ->addWikiTextAsContent (
158
- '<div class="error"> '
159
- . $ this ->msg ( 'resourceloaderarticles-error-page-empty ' )->text ()
160
- . '</div> '
161
- );
162
- $ store = false ;
163
- } elseif (
164
- (
165
- !( substr ( $ formData [ 'Page ' ], -4 ) === '.css ' || substr ( $ formData [ 'Page ' ], -5 ) === '.less ' )
166
- && $ formData [ 'Type ' ] === 'style '
167
- )
168
- || ( substr ( $ formData [ 'Page ' ], -3 ) !== '.js ' && $ formData [ 'Type ' ] === 'script ' )
169
- ) {
170
- $ output ->addWikiTextAsContent (
171
- '<div class="error"> '
172
- . $ this ->msg ( 'resourceloaderarticles-error-page-invalid ' )->text ()
173
- . '</div> '
174
- );
175
- $ store = false ;
176
- }
177
- if ( empty ( $ formData [ 'Wiki ' ] ) ) {
178
- $ output ->addWikiTextAsContent (
179
- '<div class="error"> '
180
- . $ this ->msg ( 'resourceloaderarticles-error-wiki-empty ' )->text ()
181
- . '</div> '
182
- );
183
- $ store = false ;
184
- }
185
- if ( empty ( $ formData [ 'Priority ' ] ) ) {
186
- $ output ->addWikiTextAsContent (
187
- '<div class="error"> '
188
- . $ this ->msg ( 'resourceloaderarticles-error-priority-empty ' )->text ()
189
- . '</div> '
190
- );
191
- $ store = false ;
192
- } elseif ( !is_int ( $ formData [ 'Priority ' ] ) ) {
193
- $ output ->addWikiTextAsContent (
194
- '<div class="error"> '
195
- . $ this ->msg ( 'resourceloaderarticles-error-priority-invalid ' )->text ()
196
- . '</div> '
197
- );
198
- $ store = false ;
199
- }
200
- if ( $ store ) {
201
- $ dbw = wfGetDB ( DB_PRIMARY );
202
- $ dbw ->insert (
203
- 'resourceloaderarticles ' ,
204
- [
205
- 'rla_page ' => $ formData [ 'Page ' ],
206
- 'rla_wiki ' => $ formData [ 'Wiki ' ],
207
- 'rla_type ' => $ formData [ 'Type ' ],
208
- 'rla_priority ' => $ formData [ 'Priority ' ]
209
- ]
210
- );
211
- $ output ->addWikiTextAsContent (
212
- '<div class="success"> '
213
- . $ this ->msg ( 'resourceloaderarticles-success-add ' )->text ()
214
- . '</div> '
215
- );
216
- }
171
+ $ output ->addWikiTextAsContent (
172
+ '<div class="success"> '
173
+ . $ this ->msg ( 'resourceloaderarticles-success-add ' )->text ()
174
+ . '</div> '
175
+ );
217
176
}
218
177
219
178
/**
@@ -225,21 +184,27 @@ private function editPage( $id ) {
225
184
$ row = $ res ->fetchObject ();
226
185
$ formDescriptor = [
227
186
'Id ' => [
228
- 'type ' => 'hidden ' ,
187
+ 'label-message ' => 'resourceloaderarticles-id ' ,
188
+ 'type ' => 'int ' ,
229
189
'required ' => true ,
190
+ 'disabled ' => true ,
230
191
'default ' => $ row ->rla_id ,
231
192
],
232
193
'Page ' => [
233
194
'label-message ' => 'resourceloaderarticles-page ' ,
195
+ 'help-message ' => 'resourceloaderarticles-help-page ' ,
234
196
'type ' => 'text ' ,
235
197
'required ' => true ,
236
198
'default ' => $ row ->rla_page ,
199
+ 'filter-callback ' => [ $ this , 'trimValueCB ' ],
200
+ 'validation-callback ' => [ $ this , 'validatePageCB ' ],
237
201
],
238
202
'Wiki ' => [
239
203
'label-message ' => 'resourceloaderarticles-wiki ' ,
240
204
'type ' => 'text ' ,
241
205
'required ' => true ,
242
206
'default ' => $ row ->rla_wiki ,
207
+ 'filter-callback ' => [ $ this , 'trimValueCB ' ],
243
208
],
244
209
'Type ' => [
245
210
'class ' => 'HTMLSelectField ' ,
@@ -256,11 +221,13 @@ private function editPage( $id ) {
256
221
'type ' => 'int ' ,
257
222
'required ' => true ,
258
223
'default ' => $ row ->rla_priority ,
224
+ 'min ' => -1000 ,
225
+ 'max ' => 1000 ,
259
226
],
260
227
];
261
228
262
229
$ htmlForm = HTMLForm::factory ( 'ooui ' , $ formDescriptor , $ this ->getContext () );
263
- $ htmlForm ->setSubmitText ( $ this ->msg ( 'resourceloaderarticles-add -page ' )->text () );
230
+ $ htmlForm ->setSubmitText ( $ this ->msg ( 'resourceloaderarticles-edit -page ' )->text () );
264
231
$ htmlForm ->setFormIdentifier ( 'editPageCB ' );
265
232
$ htmlForm ->setSubmitCallback ( [ $ this , 'editPageCB ' ] );
266
233
@@ -271,72 +238,25 @@ private function editPage( $id ) {
271
238
* @param array $formData
272
239
*/
273
240
public function editPageCB ( $ formData ) {
241
+ $ dbw = wfGetDB ( DB_PRIMARY );
242
+ $ dbw ->update (
243
+ 'resourceloaderarticles ' ,
244
+ [
245
+ 'rla_page ' => $ formData [ 'Page ' ],
246
+ 'rla_wiki ' => $ formData [ 'Wiki ' ],
247
+ 'rla_type ' => $ formData [ 'Type ' ],
248
+ 'rla_priority ' => intval ( $ formData [ 'Priority ' ] )
249
+ ],
250
+ [
251
+ 'rla_id ' => $ formData [ 'Id ' ]
252
+ ]
253
+ );
274
254
$ output = $ this ->getOutput ();
275
- $ store = true ;
276
- if ( empty ( $ formData [ 'Page ' ] ) ) {
277
- $ output ->addWikiTextAsContent (
278
- '<div class="error"> '
279
- . $ this ->msg ( 'resourceloaderarticles-error-page-empty ' )->text ()
280
- . '</div> '
281
- );
282
- $ store = false ;
283
- } elseif (
284
- (
285
- !( substr ( $ formData [ 'Page ' ], -4 ) === '.css ' || substr ( $ formData [ 'Page ' ], -5 ) === '.less ' )
286
- && $ formData [ 'Type ' ] === 'style '
287
- )
288
- || ( substr ( $ formData [ 'Page ' ], -3 ) !== '.js ' && $ formData [ 'Type ' ] === 'script ' )
289
- ) {
290
- $ output ->addWikiTextAsContent (
291
- '<div class="error"> '
292
- . $ this ->msg ( 'resourceloaderarticles-error-page-invalid ' )->text ()
293
- . '</div> '
294
- );
295
- $ store = false ;
296
- }
297
- if ( empty ( $ formData [ 'Wiki ' ] ) ) {
298
- $ output ->addWikiTextAsContent (
299
- '<div class="error"> '
300
- . $ this ->msg ( 'resourceloaderarticles-error-wiki-empty ' )->text ()
301
- . '</div> '
302
- );
303
- $ store = false ;
304
- }
305
- if ( empty ( $ formData [ 'Priority ' ] ) ) {
306
- $ output ->addWikiTextAsContent (
307
- '<div class="error"> '
308
- . $ this ->msg ( 'resourceloaderarticles-error-priority-empty ' )->text ()
309
- . '</div> '
310
- );
311
- $ store = false ;
312
- } elseif ( !is_int ( $ formData [ 'Priority ' ] ) ) {
313
- $ output ->addWikiTextAsContent (
314
- '<div class="error"> '
315
- . $ this ->msg ( 'resourceloaderarticles-error-priority-invalid ' )->text ()
316
- . '</div> '
317
- );
318
- $ store = false ;
319
- }
320
- if ( $ store ) {
321
- $ dbw = wfGetDB ( DB_PRIMARY );
322
- $ dbw ->update (
323
- 'resourceloaderarticles ' ,
324
- [
325
- 'rla_page ' => $ formData [ 'Page ' ],
326
- 'rla_wiki ' => $ formData [ 'Wiki ' ],
327
- 'rla_type ' => $ formData [ 'Type ' ],
328
- 'rla_priority ' => $ formData [ 'Priority ' ]
329
- ],
330
- [
331
- 'rla_id ' => $ formData [ 'Id ' ]
332
- ]
333
- );
334
- $ output ->addWikiTextAsContent (
335
- '<div class="success"> '
336
- . $ this ->msg ( 'resourceloaderarticles-success-edit ' )->text ()
337
- . '</div> '
338
- );
339
- }
255
+ $ output ->addWikiTextAsContent (
256
+ '<div class="success"> '
257
+ . $ this ->msg ( 'resourceloaderarticles-success-edit ' )->text ()
258
+ . '</div> '
259
+ );
340
260
}
341
261
342
262
/**
@@ -348,13 +268,15 @@ private function deletePage( $id ) {
348
268
$ row = $ res ->fetchObject ();
349
269
$ formDescriptor = [
350
270
'Id ' => [
351
- 'type ' => 'hidden ' ,
271
+ 'label-message ' => 'resourceloaderarticles-id ' ,
272
+ 'type ' => 'int ' ,
352
273
'required ' => true ,
353
274
'disabled ' => true ,
354
275
'default ' => $ row ->rla_id ,
355
276
],
356
277
'Page ' => [
357
278
'label-message ' => 'resourceloaderarticles-page ' ,
279
+ 'help-message ' => 'resourceloaderarticles-help-page ' ,
358
280
'type ' => 'text ' ,
359
281
'required ' => true ,
360
282
'disabled ' => true ,
@@ -409,4 +331,30 @@ public function deletePageCB( $formData ) {
409
331
);
410
332
}
411
333
334
+ /**
335
+ * @param string $value
336
+ * @return string
337
+ */
338
+ public function trimValueCB ( $ value ) {
339
+ return trim ( $ value );
340
+ }
341
+
342
+ /**
343
+ * @param string $value
344
+ * @param array $alldata
345
+ * @return bool|string
346
+ */
347
+ public function validatePageCB ( $ value , $ alldata ) {
348
+ if (
349
+ ( $ alldata [ 'Type ' ] === 'style '
350
+ && !( ( strlen ( $ value ) > 4 && substr ( $ value , -4 ) === '.css ' )
351
+ || ( strlen ( $ value ) > 5 && substr ( $ value , -5 ) === '.less ' )
352
+ )
353
+ ) || ( $ alldata [ 'Type ' ] === 'script ' && !( strlen ( $ value ) > 3 && substr ( $ value , -3 ) === '.js ' ) )
354
+ ) {
355
+ return $ this ->msg ( 'resourceloaderarticles-error-page-invalid ' )->text ();
356
+ }
357
+ return true ;
358
+ }
359
+
412
360
}
0 commit comments