From aec18cb810ec1fdbe0b8b2854746e3320872d399 Mon Sep 17 00:00:00 2001 From: Ben Roberts Date: Sun, 28 Aug 2011 13:03:31 +0100 Subject: [PATCH] Admin settings updated with add new setting feature --- webui/scripts/main.js | 25 ++++++++-- webui/source/pages/ajax/admin/add-setting.php | 50 +++++++++++++++++++ webui/source/templates/admin/settings.tpl | 8 +-- .../templates/ajax/admin/add-setting.tpl | 11 ++++ .../templates/ajax/admin/new-setting.tpl | 4 ++ .../templates/fragments/admin-setting-row.tpl | 6 +++ .../fragments/new-setting-dialog.tpl | 4 +- 7 files changed, 97 insertions(+), 11 deletions(-) create mode 100644 webui/source/pages/ajax/admin/add-setting.php create mode 100644 webui/source/templates/ajax/admin/add-setting.tpl create mode 100644 webui/source/templates/fragments/admin-setting-row.tpl diff --git a/webui/scripts/main.js b/webui/scripts/main.js index 5cf4fad..77ad51c 100644 --- a/webui/scripts/main.js +++ b/webui/scripts/main.js @@ -36,6 +36,7 @@ var rc = { success: function(d, s, x) { rc.page.update(d); rc.dialog.prepare(d); + rc.trigger_all(d); }, failure: function(x, s, e) { @@ -93,9 +94,16 @@ var rc = { }, close: function() { + // Hide the dialog $("#dialog").hide(); - $(".dialogfooterbuttonset").hide(); + + // Remove the dialog content $("#dialogcontent").html(); + + // Hide all buttons + $(".dialogfooterbuttonset").hide(); + // Strip all event handlers + $(".dialogfooterbuttonset input[type='button']").unbind('click'); } }, @@ -136,8 +144,11 @@ var rc = { }, 'add-setting': function(params) { - // TODO - console.log('todo'); + rc.ajax.post(base_url + 'ajax/admin/add-setting/name/' + $('#'+params.name).val() + '/type/' + $('#'+params.type).val() + '/'); + }, + + 'add_setting_row': function(params) { + $("#settings tbody").append(params.content); } }, @@ -159,6 +170,14 @@ var rc = { } }, + trigger_all: function(params) { + if (params.actions) { + for (var action in params.actions) { + rc.trigger(action, params.actions[action]); + } + } + }, + settings: { init: function() { diff --git a/webui/source/pages/ajax/admin/add-setting.php b/webui/source/pages/ajax/admin/add-setting.php new file mode 100644 index 0000000..882aabc --- /dev/null +++ b/webui/source/pages/ajax/admin/add-setting.php @@ -0,0 +1,50 @@ +request(); +$config = $main->config(); + +$messages = array(); +$result = false; + +try { + $name = $req->get('name', 'RippingCluster_Exception_InvalidParameters'); + $type = $req->get('type', 'RippingCluster_Exception_InvalidParameters'); + + // Convert the web-friendly type field into the correct internal name + $value = null; + switch($type) { + case 'bool': { + $type = Sihnon_Config::TYPE_BOOL; + $value = false; + } break; + case 'int': { + $type = Sihnon_Config::TYPE_INT; + $value = 0; + } break; + case 'string': { + $type = Sihnon_Config::TYPE_STRING; + $value = ''; + } break; + case 'string-list': { + $type = Sihnon_Config::TYPE_STRING_LIST; + $value = array(); + } break; + } + + // Add the new (empty) value. This is because no suitable UI has been presented yet. + // Possible future fix, to insert intermediate dialog to capture the value using the correct UI. + $result = $config->add($name, $type, $value); + $this->smarty->assign('success', $result); + + $this->smarty->assign('name', $name); + $this->smarty->assign('type', $type); + $this->smarty->assign('value', ''); + +} catch(RippingCluster_Exception $e) { + $messages[] = get_class($e) . ':' . $e->getMessage(); + $this->smarty->assign('messages', $messages); + $this->smarty->assign('success', false); +} + +?> \ No newline at end of file diff --git a/webui/source/templates/admin/settings.tpl b/webui/source/templates/admin/settings.tpl index 4aaae90..3640b03 100644 --- a/webui/source/templates/admin/settings.tpl +++ b/webui/source/templates/admin/settings.tpl @@ -10,12 +10,8 @@ {assign var='value' value=$config->get($name)} {assign var='type' value=$config->type($name)} {assign var='id' value=str_replace('.', '-',$name)} - - {$name} - - {include file="fragments/admin-setting-value.tpl"} - - + + {include file="fragments/admin-setting-row.tpl"} {/foreach} diff --git a/webui/source/templates/ajax/admin/add-setting.tpl b/webui/source/templates/ajax/admin/add-setting.tpl new file mode 100644 index 0000000..0fcbcff --- /dev/null +++ b/webui/source/templates/ajax/admin/add-setting.tpl @@ -0,0 +1,11 @@ +{if $success} + "actions": { + "add_setting_row": { + {include file="fragments/admin-setting-row.tpl" assign=content} + "content": {$content|json_encode} + } + }, +{/if} + +"success": {$success|json_encode} + diff --git a/webui/source/templates/ajax/admin/new-setting.tpl b/webui/source/templates/ajax/admin/new-setting.tpl index 1b7e1cf..743a360 100644 --- a/webui/source/templates/ajax/admin/new-setting.tpl +++ b/webui/source/templates/ajax/admin/new-setting.tpl @@ -21,6 +21,10 @@ "close-dialog" ], "cancel": "close-dialog" + }, + "params": { + "name": "settings_add_name", + "type": "settings_add_type" } } } \ No newline at end of file diff --git a/webui/source/templates/fragments/admin-setting-row.tpl b/webui/source/templates/fragments/admin-setting-row.tpl new file mode 100644 index 0000000..6886a32 --- /dev/null +++ b/webui/source/templates/fragments/admin-setting-row.tpl @@ -0,0 +1,6 @@ + + {$name} + + {include file="fragments/admin-setting-value.tpl"} + + \ No newline at end of file diff --git a/webui/source/templates/fragments/new-setting-dialog.tpl b/webui/source/templates/fragments/new-setting-dialog.tpl index ebc88a5..59f67a0 100644 --- a/webui/source/templates/fragments/new-setting-dialog.tpl +++ b/webui/source/templates/fragments/new-setting-dialog.tpl @@ -9,11 +9,11 @@ - - +