diff --git a/webui/scripts/main.js b/webui/scripts/main.js index 7a812e4..e45dd74 100644 --- a/webui/scripts/main.js +++ b/webui/scripts/main.js @@ -112,7 +112,33 @@ var rc = { $(".dialogfooterbuttonset").hide(); // Strip all event handlers $(".dialogfooterbuttonset input[type='button']").unbind('click'); - } + }, + + error: function(title, content, messages) { + var formatted_content = $('
').text('content')); + if (messages) { + var formatted_messages = $('
').text('These messages were reported:').append(formatted_messages)); + } + + rc.dialog.prepare({ + dialog: { + show: true, + title: title, + content: formatted_content, + buttons: { + type: 'ok', + actions: { + ok: 'close-dialog' + } + } + } + }); + } }, @@ -159,9 +185,21 @@ var rc = { $("#settings tbody").append(params.content); }, + 'rename_setting': function(params) { + rc.ajax.post(base_url + 'ajax/admin/rename-setting/name/' + params.name + '/new-name/' + $('#'+params.new_name_field).val() + '/confirm/'); + }, + + 'rename_setting_confirm': function(params) { + $('#setting_'+params.old_id+'_row').replaceWith($(params.content)); + }, + 'remove_setting': function(params) { - $('#setting_' + params.id + '_row').remove(); rc.ajax.post(base_url + 'ajax/admin/remove-setting/name/' + params.name + '/'); + rc.trigger('remove_setting_row', params); + }, + + 'remove_setting_row': function(params) { + $('#setting_' + params.id + '_row').remove(); } }, @@ -207,6 +245,10 @@ var rc = { rc.ajax.get(base_url + "ajax/admin/new-setting/"); }, + rename_setting: function(id, name) { + rc.ajax.get(base_url + "ajax/admin/rename-setting/name/" + name + "/"); + }, + remove_setting: function(id, name) { rc.dialog.prepare({ dialog: { diff --git a/webui/source/pages/ajax/admin/rename-setting.php b/webui/source/pages/ajax/admin/rename-setting.php new file mode 100644 index 0000000..ab96f68 --- /dev/null +++ b/webui/source/pages/ajax/admin/rename-setting.php @@ -0,0 +1,39 @@ +request(); +$config = $main->config(); + +$messages = array(); +$result = false; + +$confirm = $req->exists('confirm'); +$this->smarty->assign('confirm', $confirm); + +if ($confirm) { + try { + $name = $req->get('name', 'RippingCluster_Exception_InvalidParameters'); + $new_name = $req->get('new-name', 'RippingCluster_Exception_InvalidParameters'); + + $result = $config->rename($name, $new_name); + $this->smarty->assign('success', $result); + + $this->smarty->assign('old_name', $name); + $this->smarty->assign('old_id', str_replace('.', '-', $name)); + $this->smarty->assign('name', $new_name); + $this->smarty->assign('id', str_replace('.', '-', $new_name)); + $this->smarty->assign('type', $config->type($new_name)); + $this->smarty->assign('value', $config->get($new_name)); + + } catch(RippingCluster_Exception $e) { + $messages[] = get_class($e) . ':' . $e->getMessage(); + $this->smarty->assign('messages', $messages); + $this->smarty->assign('success', false); + } +} else { + $name = $req->get('name', 'RippingCluster_Exception_InvalidParameters'); + $this->smarty->assign('name', $name); +} + + +?> \ No newline at end of file diff --git a/webui/source/templates/ajax/admin/rename-setting.tpl b/webui/source/templates/ajax/admin/rename-setting.tpl new file mode 100644 index 0000000..eb744c9 --- /dev/null +++ b/webui/source/templates/ajax/admin/rename-setting.tpl @@ -0,0 +1,44 @@ +{if $confirm} + {if $success} + "actions": { + "rename_setting_confirm": { + "old_name": {$old_name|json_encode}, + "old_id": {$old_id|json_encode}, + "name": {$name|json_encode}, + {include file="fragments/admin-setting-row.tpl" assign="content"} + "content": {$content|json_encode} + } + }, + {/if} + + "success": {$success|json_encode} +{else} + "page_replacements": { + "dialogheadertitle": { + "content": "Rename Setting" + }, + + "dialogcontent": { + {include file="fragments/rename-setting-dialog.tpl" assign="content"} + "content": {$content|json_encode} + } + }, + + "dialog": { + "show": true, + "buttons": { + "type": "okcancel", + "actions": { + "ok": [ + "rename_setting", + "close-dialog" + ], + "cancel": "close-dialog" + }, + "params": { + "name": {$name|json_encode}, + "new_name_field": "settings_rename_name" + } + } + } +{/if} \ 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 index aa2efb2..f151e91 100644 --- a/webui/source/templates/fragments/admin-setting-row.tpl +++ b/webui/source/templates/fragments/admin-setting-row.tpl @@ -2,6 +2,7 @@
{$name}
+
+ Enter a new name for setting '{$name|escape}' below. +
+ +