summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2009-05-13 21:32:22 +0000
committerBharat Mediratta <bharat@menalto.com>2009-05-13 21:32:22 +0000
commitce4a8224d84eb0bea7a52bc670b5f4d8feb59138 (patch)
treed019f4f403121fd2ddb554c61eb8655c41f48891
parent58a11e3f7c1503a418880cf0898951830e40d6b9 (diff)
Allow admins to modify variables. This way when something goes wrong,
we can tell them what to do in the forums and we don't have to build super smart admin UIs to help users with weird edge cases. This plus r20789 is probably a good enough fix for #232.
-rw-r--r--core/controllers/admin_advanced_settings.php36
-rw-r--r--core/views/admin_advanced_settings.html.php16
2 files changed, 49 insertions, 3 deletions
diff --git a/core/controllers/admin_advanced_settings.php b/core/controllers/admin_advanced_settings.php
index 5a22ba58..1797b162 100644
--- a/core/controllers/admin_advanced_settings.php
+++ b/core/controllers/admin_advanced_settings.php
@@ -21,7 +21,41 @@ class Admin_Advanced_Settings_Controller extends Admin_Controller {
public function index() {
$view = new Admin_View("admin.html");
$view->content = new View("admin_advanced_settings.html");
- $view->content->vars = ORM::factory("var")->find_all();
+ $view->content->vars = ORM::factory("var")->orderby("module_name", "name")->find_all();
print $view;
}
+
+ public function edit($module_name, $var_name) {
+ $value = module::get_var($module_name, $var_name);
+ $form = new Forge("admin/advanced_settings/save/$module_name/$var_name", "", "post");
+ $group = $form->group("edit_var")->label(
+ t("Edit %var (%module_name)",
+ array("module_name" => $module_name, "var" => $var_name)));
+ $group->input("module_name")->label(t("Module"))->value($module_name)->disabled(1);
+ $group->input("var_name")->label(t("Setting"))->value($var_name)->disabled(1);
+ $group->textarea("value")->label(t("Value"))->value($value);
+ $group->submit("")->value(t("Save"));
+ print $form;
+ }
+
+ public function save($module_name, $var_name) {
+ access::verify_csrf();
+
+ $var = ORM::factory("var")
+ ->where("module_name", $module_name)
+ ->where("name", $var_name)
+ ->find();
+ if (!$var->loaded) {
+ kohana::show_404();
+ }
+
+ $var->value = Input::instance()->post("value");
+ $var->save();
+
+ message::success(
+ t("Saved value for %var (%module_name)",
+ array("var" => $var->name, "module_name" => $var->module_name)));
+
+ print json_encode(array("result" => "success"));
+ }
}
diff --git a/core/views/admin_advanced_settings.html.php b/core/views/admin_advanced_settings.html.php
index e2832d97..1995c30c 100644
--- a/core/views/admin_advanced_settings.html.php
+++ b/core/views/admin_advanced_settings.html.php
@@ -2,8 +2,14 @@
<div id="gAdminAdvancedSettings">
<h1> <?= t("Advanced Settings") ?> </h1>
<p>
- <?= t("Here are internal Gallery configuration settings. Most of these settings are accessible elsewhere in the administrative console. You will eventually be able to modify these directly (at your own risk).") ?>
+ <?= t("Here are internal Gallery configuration settings. Most of these settings are accessible elsewhere in the administrative console.") ?>
</p>
+ <ul id="gMessage">
+ <li class="gWarning">
+ <b><?= t("Change these values at your own risk!</b>") ?>
+ </li>
+ </ul>
+
<table>
<tr>
<th> <?= t("Module") ?> </th>
@@ -14,7 +20,13 @@
<tr class="setting">
<td> <?= $var->module_name ?> </td>
<td> <?= $var->name ?> </td>
- <td> <?= $var->value ?> </td>
+ <td>
+ <a href="<?= url::site("admin/advanced_settings/edit/$var->module_name/$var->name") ?>"
+ class="gDialogLink"
+ title="<?= t("Edit %var (%module_name)", array("var" => $var->name, "module_name" => $var->module_name)) ?>">
+ <?= $var->value ?>
+ </a>
+ </td>
</tr>
<? endforeach ?>
</table>