]> git.agnieray.net Git - galette.git/blob - galette/includes/routes/management.routes.php
56e80bc5449674312c262a7ce3bf9bd76708e150
[galette.git] / galette / includes / routes / management.routes.php
1 <?php
2
3 /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
4
5 /**
6 * Management routes
7 *
8 * PHP version 5
9 *
10 * Copyright © 2014 The Galette Team
11 *
12 * This file is part of Galette (http://galette.tuxfamily.org).
13 *
14 * Galette is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation, either version 3 of the License, or
17 * (at your option) any later version.
18 *
19 * Galette is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
23 *
24 * You should have received a copy of the GNU General Public License
25 * along with Galette. If not, see <http://www.gnu.org/licenses/>.
26 *
27 * @category Routes
28 * @package Galette
29 *
30 * @author Johan Cwiklinski <johan@x-tnd.be>
31 * @copyright 2014 The Galette Team
32 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL License 3.0 or (at your option) any later version
33 * @link http://galette.tuxfamily.org
34 * @since 0.8.2dev 2014-11-11
35 */
36
37 use Galette\Controllers\GaletteController;
38 use Galette\Controllers\PluginsController;
39 use Galette\Controllers\HistoryController;
40 use Galette\Controllers\DynamicTranslationsController;
41 use Galette\Controllers\Crud;
42 use Galette\Controllers\PdfController;
43 use Galette\Controllers\CsvController;
44 use Galette\Controllers\AdminToolsController;
45
46 use Galette\DynamicFields\DynamicField;
47 use Galette\Repository\Members;
48 use Galette\IO\News;
49 use \Analog\Analog;
50 use Galette\IO\Csv;
51 use Galette\IO\CsvOut;
52 use Galette\IO\CsvIn;
53 use Galette\Entity\Title;
54 use Galette\Repository\Titles;
55 use Galette\Entity\Texts;
56 use Galette\Core\Install;
57 use Galette\Entity\Status;
58
59 //galette's dashboard
60 $app->get(
61 '/dashboard',
62 GaletteController::class . ':dashboard'
63 )->setName('dashboard')->add($authenticate);
64
65 //preferences page
66 $app->get(
67 '/preferences',
68 GaletteController::class . ':preferences'
69 )->setName('preferences')->add($authenticate);
70
71 //preferences procedure
72 $app->post(
73 '/preferences',
74 GaletteController::class . ':storePreferences'
75 )->setName('store-preferences')->add($authenticate);
76
77 $app->get(
78 '/test/email',
79 GaletteController::class . ':testEmail'
80 )->setName('testEmail')->add($authenticate);
81
82 //charts
83 $app->get(
84 '/charts',
85 GaletteController::class . ':charts'
86 )->setName('charts')->add($authenticate);
87
88 //plugins
89 $app->get(
90 '/plugins',
91 PluginsController::class . ':showPlugins'
92 )->setName('plugins')->add($authenticate);
93
94 //plugins (de)activation
95 $app->get(
96 '/plugins/{action:activate|deactivate}/{module_id}',
97 PluginsController::class . ':togglePlugin'
98 )->setName('pluginsActivation')->add($authenticate);
99
100 $app->map(
101 ['GET', 'POST'],
102 '/plugins/initialize-database/{id}',
103 PluginsController::class . ':initPluginDb'
104 )->setName('pluginInitDb')->add($authenticate);
105
106 //galette logs
107 $app->get(
108 '/logs[/{option:page|order}/{value}]',
109 HistoryController::class . ':history'
110 )->setName('history')->add($authenticate);
111
112 $app->post(
113 '/logs/filter',
114 HistoryController::class . ':historyFilter'
115 )->setName(
116 'history_filter'
117 )->add($authenticate);
118
119 $app->get(
120 '/logs/flush',
121 HistoryController::class . ':confirmHistoryFlush'
122 )->setName('flushHistory')->add($authenticate);
123
124 $app->post(
125 '/logs/flush',
126 HistoryController::class . ':flushHistory'
127 )->setName('doFlushHistory')->add($authenticate);
128
129 //mailings management
130 $app->get(
131 '/mailings[/{option:page|order|reset}/{value}]',
132 Crud\MailingsController::class . ':list'
133 )->setName('mailings')->add($authenticate);
134
135 $app->post(
136 '/mailings/filter',
137 Crud\MailingsController::class . ':filter'
138 )->setName('mailings_filter')->add($authenticate);
139
140 $app->get(
141 '/mailings/remove' . '/{id:\d+}',
142 Crud\MailingsController::class . ':confirmDelete'
143 )->setName('removeMailing')->add($authenticate);
144
145 $app->post(
146 '/mailings/remove/{id:\d+}',
147 Crud\MailingsController::class . ':delete'
148 )->setName('doRemoveMailing')->add($authenticate);
149
150 //galette exports
151 $app->get(
152 '/export',
153 CsvController::class . ':export'
154 )->setName('export')->add($authenticate);
155
156 $app->get(
157 '/{type:export|import}/remove/{file}',
158 CsvController::class . ':confirmRemoveFile'
159 )->setName('removeCsv')->add($authenticate);
160
161 $app->post(
162 '/{type:export|import}/remove/{file}',
163 CsvController::class . ':removeFile'
164 )->setName('doRemoveCsv')->add($authenticate);
165
166 $app->post(
167 '/export',
168 CsvController::class . ':doExport'
169 )->setName('doExport')->add($authenticate);
170
171 $app->get(
172 '/{type:export|import}/get/{file}',
173 CsvController::class . ':getFile'
174 )->setName('getCsv')->add($authenticate);
175
176 $app->get(
177 '/import',
178 CsvController::class . ':import'
179 )->setName('import')->add($authenticate);
180
181 $app->post(
182 '/import',
183 CsvController::class . ':doImports'
184 )->setName('doImport')->add($authenticate);
185
186 $app->post(
187 '/import/upload',
188 CsvController::class . ':uploadImportFile'
189 )->setname('uploadImportFile')->add($authenticate);
190
191 $app->get(
192 '/import/model',
193 CsvController::class . ':importModel'
194 )->setName('importModel')->add($authenticate);
195
196 $app->get(
197 '/import/model/get',
198 CsvController::class . ':getImportModel'
199 )->setName('getImportModel')->add($authenticate);
200
201 $app->post(
202 '/import/model/store',
203 CsvController::class . ':storeModel'
204 )->setName('storeImportModel')->add($authenticate);
205
206 $app->get(
207 '/models/pdf[/{id:\d+}]',
208 PdfController::class . ':models'
209 )->setName('pdfModels')->add($authenticate);
210
211 $app->post(
212 '/models/pdf',
213 PdfController::class . ':storeModels'
214 )->setName('pdfModels')->add($authenticate);
215
216 $app->get(
217 '/titles',
218 Crud\TitlesController::class . ':list'
219 )->setName('titles')->add($authenticate);
220
221 $app->post(
222 '/titles',
223 Crud\TitlesController::class . ':doAdd'
224 )->setName('titles')->add($authenticate);
225
226 $app->get(
227 '/titles/remove/{id:\d+}',
228 Crud\TitlesController::class . ':confirmDelete'
229 )->setName('removeTitle')->add($authenticate);
230
231 $app->post(
232 '/titles/remove/{id:\d+}',
233 Crud\TitlesController::class . ':delete'
234 )->setName('doRemoveTitle')->add($authenticate);
235
236 $app->get(
237 '/titles/edit/{id:\d+}',
238 Crud\TitlesController::class . ':edit'
239 )->setname('editTitle')->add($authenticate);
240
241 $app->post(
242 '/titles/edit/{id:\d+}',
243 Crud\TitlesController::class . ':doEdit'
244 )->setname('editTitle')->add($authenticate);
245
246 $app->get(
247 '/texts[/{lang}/{ref}]',
248 function ($request, $response, $args) {
249 if (!isset($args['lang'])) {
250 $args['lang'] = $this->preferences->pref_lang;
251 }
252 if (!isset($args['ref'])) {
253 $args['ref'] = Texts::DEFAULT_REF;
254 }
255
256 $texts = new Texts(
257 $this->preferences,
258 $this->router
259 );
260
261 $mtxt = $texts->getTexts($args['ref'], $args['lang']);
262
263 // display page
264 $this->view->render(
265 $response,
266 'gestion_textes.tpl',
267 [
268 'page_title' => _T("Automatic emails texts edition"),
269 'reflist' => $texts->getRefs($args['lang']),
270 'langlist' => $this->i18n->getList(),
271 'cur_lang' => $args['lang'],
272 'cur_ref' => $args['ref'],
273 'mtxt' => $mtxt,
274 ]
275 );
276 return $response;
277 }
278 )->setName('texts')->add($authenticate);
279
280 $app->post(
281 '/texts/change',
282 function ($request, $response) {
283 $post = $request->getParsedBody();
284 return $response
285 ->withStatus(301)
286 ->withHeader(
287 'Location',
288 $this->router->pathFor(
289 'texts',
290 [
291 'lang' => $post['sel_lang'],
292 'ref' => $post['sel_ref']
293 ]
294 )
295 );
296 }
297 )->setName('changeText')->add($authenticate);
298
299 $app->post(
300 '/texts',
301 function ($request, $response) {
302 $post = $request->getParsedBody();
303 $texts = new Texts($this->preferences, $this->router);
304
305 //set the language
306 $cur_lang = $post['cur_lang'];
307 //set the text entry
308 $cur_ref = $post['cur_ref'];
309
310 $mtxt = $texts->getTexts($cur_ref, $cur_lang, $this->router);
311 $res = $texts->setTexts(
312 $cur_ref,
313 $cur_lang,
314 $post['text_subject'],
315 $post['text_body']
316 );
317
318 if (!$res) {
319 $this->flash->addMessage(
320 'error_detected',
321 preg_replace(
322 '(%s)',
323 $mtxt->tcomment,
324 _T("Email: '%s' has not been modified!")
325 )
326 );
327 } else {
328 $this->flash->addMessage(
329 'success_detected',
330 preg_replace(
331 '(%s)',
332 $mtxt->tcomment,
333 _T("Email: '%s' has been successfully modified.")
334 )
335 );
336 }
337
338 return $response
339 ->withStatus(301)
340 ->withHeader('Location', $this->router->pathFor('texts'));
341 }
342 )->setName('texts')->add($authenticate);
343
344 $app->get(
345 '/{class:contributions-types|status}',
346 Crud\EntitledsController::class . ':list'
347 )->setName('entitleds')->add($authenticate);
348
349 $app->get(
350 '/{class:contributions-types|status}/{action:edit|add}[/{id:\d+}]',
351 Crud\EntitledsController::class . ':edit'
352 )->setName('editEntitled')->add($authenticate);
353
354 $app->post(
355 '/{class:contributions-types|status}/{action:edit|add}[/{id:\d+}]',
356 Crud\EntitledsController::class . ':doEdit'
357 )->setName('doEditEntitled')->add($authenticate);
358
359 $app->get(
360 '/{class:contributions-types|status}/remove/{id:\d+}',
361 Crud\EntitledsController::class . ':confirmDelete'
362 )->setName('removeEntitled')->add($authenticate);
363
364 $app->post(
365 '/{class:contributions-types|status}/remove/{id:\d+}',
366 Crud\EntitledsController::class . ':delete'
367 )->setName('doRemoveEntitled')->add($authenticate);
368
369 $app->get(
370 '/dynamic-translations[/{text_orig}]',
371 DynamicTranslationsController::class . ':dynamicTranslations'
372 )->setName('dynamicTranslations')->add($authenticate);
373
374 $app->post(
375 '/dynamic-translations',
376 DynamicTranslationsController::class . ':doDynamicTranslations'
377 )->setName('editDynamicTranslation')->add($authenticate);
378
379 $app->get(
380 '/lists/{table}/configure',
381 GaletteController::class . ':configureListFields'
382 )->setName('configureListFields')->add($authenticate);
383
384 $app->post(
385 '/lists/{table}/configure',
386 GaletteController::class . ':storeListFields'
387 )->setName('storeListFields')->add($authenticate);
388
389 $app->get(
390 '/fields/core/configure',
391 GaletteController::class . ':configureCoreFields'
392 )->setName('configureCoreFields')->add($authenticate);
393
394 $app->post(
395 '/fields/core/configure',
396 GaletteController::class . ':storeCoreFieldsConfig'
397 )->setName('storeCoreFieldsConfig')->add($authenticate);
398
399 $app->get(
400 '/fields/dynamic/configure[/{form:adh|contrib|trans}]',
401 Crud\DynamicFieldsController::class . ':list'
402 )->setName('configureDynamicFields')->add($authenticate);
403
404 $app->get(
405 '/fields/dynamic/move/{form:adh|contrib|trans}' .
406 '/{direction:up|down}/{id:\d+}',
407 Crud\DynamicFieldsController::class . ':move'
408 )->setName('moveDynamicField')->add($authenticate);
409
410 $app->get(
411 '/fields/dynamic/remove/{form:adh|contrib|trans}/{id:\d+}',
412 Crud\DynamicFieldsController::class . ':confirmDelete'
413 )->setName('removeDynamicField')->add($authenticate);
414
415 $app->post(
416 '/fields/dynamic/remove/{form:adh|contrib|trans}/{id:\d+}',
417 Crud\DynamicFieldsController::class . ':delete'
418 )->setName('doRemoveDynamicField')->add($authenticate);
419
420 $app->get(
421 '/fields/dynamic/add/{form:adh|contrib|trans}',
422 Crud\DynamicFieldsController::class . ':add'
423 )->setName('addDynamicField')->add($authenticate);
424
425 $app->get(
426 '/fields/dynamic/edit/{form:adh|contrib|trans}/{id:\d+}',
427 Crud\DynamicFieldsController::class . ':edit'
428 )->setName('editDynamicField')->add($authenticate);
429
430 $app->post(
431 '/fields/dynamic/add/{form:adh|contrib|trans}',
432 Crud\DynamicFieldsController::class . ':doAdd'
433 )->setName('doAddDynamicField')->add($authenticate);
434
435 $app->post(
436 '/fields/dynamic/edit/{form:adh|contrib|trans}/{id:\d+}',
437 Crud\DynamicFieldsController::class . ':doEdit'
438 )->setName('doEditDynamicField')->add($authenticate);
439
440 if (GALETTE_MODE != 'DEMO') {
441 $app->get(
442 '/generate-data',
443 GaletteController::class . ':fakeData'
444 )->setName('fakeData')->add($authenticate);
445
446 $app->post(
447 '/generate-data',
448 GaletteController::class . ':doFakeData'
449 )->setName('doFakeData')->add($authenticate);
450 }
451
452 $app->get(
453 '/admin-tools',
454 AdminToolsController::class . ':adminTools'
455 )->setName('adminTools')->add($authenticate);
456
457 $app->post(
458 '/admin-tools',
459 AdminToolsController::class . ':process'
460 )->setName('doAdminTools')->add($authenticate);
461
462 $app->get(
463 '/payment-types',
464 Crud\PaymentTypeController::class . ':list'
465 )->setName('paymentTypes')->add($authenticate);
466
467 $app->post(
468 '/payment-types',
469 Crud\PaymentTypeController::class . ':doAdd'
470 )->setName('paymentTypes')->add($authenticate);
471
472 $app->get(
473 '/payment-type/remove/{id:\d+}',
474 Crud\PaymentTypeController::class . ':confirmDelete'
475 )->setName('removePaymentType')->add($authenticate);
476
477 $app->post(
478 '/payment-type/remove/{id:\d+}',
479 Crud\PaymentTypeController::class . ':delete'
480 )->setName('doRemovePaymentType')->add($authenticate);
481
482 $app->get(
483 '/payment-type/edit/{id:\d+}',
484 Crud\PaymentTypeController::class . ':edit'
485 )->setname('editPaymentType')->add($authenticate);
486
487 $app->post(
488 '/payment-type/edit/{id:\d+}',
489 Crud\PaymentTypeController::class . ':doEdit'
490 )->setname('editPaymentType')->add($authenticate);