diff options
| author | winter | 2025-01-18 20:02:39 +0000 |
|---|---|---|
| committer | winter | 2025-01-18 20:02:39 +0000 |
| commit | 66bdcf04f431d615b5fac93e7677e7304888e90c (patch) | |
| tree | d75f1b299e8ed2ff8d2fd6ccd42185cfb06b6729 /routes | |
| parent | 00ab9734e880219fa68fed98cefda5ce12958e4b (diff) | |
implement settings editor page
Diffstat (limited to 'routes')
| -rw-r--r-- | routes/admin.php | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/routes/admin.php b/routes/admin.php new file mode 100644 index 0000000..9915fde --- /dev/null +++ b/routes/admin.php @@ -0,0 +1,27 @@ +<?php + +use Digitigrade\GlobalSettings; +use Digitigrade\Model\UserAccount; +use Digitigrade\Router; + +Router::getInstance()->mount('/admin/settings/:prefix', function (array $args) { + UserAccount::requireByCurrentSession()->requireAdmin(); + render_template('global_settings_page', ['prefix' => $args['prefix']]); +}); + +Router::getInstance()->mount('/fragment/admin/settings/:prefix', function (array $args) { + UserAccount::requireByCurrentSession()->requireAdmin(); + $saved = false; + if ($_SERVER['REQUEST_METHOD'] == 'POST') { + // update all the settings from the page + $settings = GlobalSettings::getInstance(); + foreach ($_POST as $key => $value) { + // same workaround as in settings_field + $key = str_replace('<DOT>', '.', $key); + error_log("setting '$key' to '$value'"); + $settings->set($key, $value); + } + $saved = true; + } + render_template('settings_editor', ['prefix' => $args['prefix'], 'saved' => $saved]); +});
\ No newline at end of file |
