$notification->push(_("Menu added."),
'horde.success');
$menus = $shout->storage->getMenus($curaccount);
- $action = 'list';
+ $action = 'edit';
+
} catch (Exception $e) {
$notification->push($e);
}
$vars = new Horde_Variables();
$vars->set('action', $action);
//$Form = new MenuForm($vars);
-
break;
+
case 'edit':
default:
$action = 'edit';
+ break;
+}
+
+// Check again explicitly for edit as we may have converted to an edit
+// after a successful add.
+if ($action == 'edit') {
try {
$destinations = $shout->extensions->getExtensions($curaccount);
$conferences = $shout->storage->getConferences($curaccount);
Horde::logMessage($e, 'ERR');
$notification->push(_("Problem getting menu information."));
}
-
- break;
}
Horde::addScriptFile('stripe.js', 'horde');
}
}
+ public function deleteMenu()
+ {
+ try {
+ $shout = $GLOBALS['registry']->getApiInstance('shout', 'application');
+ $account = $_SESSION['shout']['curaccount'];
+ $menu = $this->_vars->get('menu');
+ if (empty($menu)) {
+ throw new Shout_Exception('Must specify a menu to delete.');
+ }
+ $shout->dialplan->deleteMenu($account, $menu);
+ return true;
+ } catch (Exception $e) {
+ //FIXME: Create a way to notify the user of the failure.
+ Horde::logMessage($e, 'ERR');
+ return false;
+ }
+ }
+
public function getConferences()
{
try {
return true;
}
+ public function deleteMenu($account, $menu)
+ {
+ $sql = 'DELETE FROM menu_entries WHERE menu_id = ' .
+ '(SELECT id FROM menus WHERE name = ? AND account_id = ' .
+ '(SELECT id FROM accounts WHERE code = ?))';
+ $values = array($menu, $account);
+ $msg = 'SQL query in Shout_Driver_Sql#deleteMenu(): ' . $sql;
+ Horde::logMessage($msg, 'DEBUG');
+ $result = $this->_write_db->query($sql, $values);
+ if ($result instanceof PEAR_Error) {
+ throw new Shout_Exception($result);
+ }
+
+ $sql = 'DELETE FROM menus WHERE name = ? AND account_id = ' .
+ '(SELECT id FROM accounts WHERE code = ?)';
+ $values = array($menu, $account);
+ $msg = 'SQL query in Shout_Driver_Sql#deleteMenu(): ' . $sql;
+ Horde::logMessage($msg, 'DEBUG');
+ $result = $this->_write_db->query($sql, $values);
+ if ($result instanceof PEAR_Error) {
+ throw new Shout_Exception($result);
+ }
+ }
+
public function getMenuActions($account, $menu)
{
static $menuActions;
$msg = 'SQL query in Shout_Driver_Sql#saveConference(): ' . $sql;
Horde::logMessage($msg, 'DEBUG');
- $result = $this->_db->query($sql, $args);
+ $result = $this->_write_db->query($sql, $args);
if ($result instanceof PEAR_Error) {
throw new Shout_Exception($result);
}
{
$('menuWorking').show();
$('dialpadWorking').show();
+ curmenu = $('menu.select').value;
+
+ empty('menu.select');
+ menuInfo.each(function (item) {
+ var option = document.createElement('option');
+ option.value = item.key;
+ var text = document.createTextNode(item.value.name);
+ option.appendChild(text);
+ $('menu.select').appendChild(option);
+ })
$A(['1','2','3','4','5','6','7','8','9','0','star','octo']).each(function (digit){
empty('digit_' + digit);
})
if (!(menuInfo.size())) {
+ curmenu = null;
$('menuWorking').hide();
$('dialpadWorking').hide();
return true;
}
- curmenu = $('menu.select').value;
+ if (!menuInfo.get(curmenu)) {
+ curmenu = menuInfo.keys().first();
+ }
+ $('menu.select').value = curmenu;
var text = document.createTextNode(menuInfo.get(curmenu).description);
empty('menu.description');
$('editMenu').show();
}
+function deleteMenu()
+{
+ $('menuWorking').show();
+ var msg = '<?php echo _("You are about to delete the \"%menu%\" menu. Click \"OK\" to delete or \"Cancel\" to keep the menu."); ?>';
+ msg = msg.replace('%menu%', menuInfo.get(curmenu).name);
+ if (confirm(msg)) {
+ var params = {'menu': curmenu};
+ new Ajax.Request(ajax_url + 'deleteMenu',
+ {
+ method: 'post',
+ parameters: params,
+ onSuccess: function(r) {
+ new Ajax.Request(ajax_url + 'getMenus',
+ {
+ method: 'get',
+ onSuccess: function(r) {
+ menuInfo = $H(r.responseJSON.response);
+ refreshMenu();
+ }
+ });
+ }
+ });
+ } else {
+ $('menuWorking').hide();
+ }
+}
+
function saveMenu()
{
$('menuWorking').show();
new Ajax.Request(ajax_url + 'getMenus',
{
method: 'get',
- parameters: $H({
- 'menu': curmenu
- }),
onSuccess: function(r) {
menuInfo = $H(r.responseJSON.response);
refreshMenu();
- $('menuWorking').hide();
}
});
}
method: 'get',
onSuccess: function(r) {
menuInfo = $H(r.responseJSON.response);
- menuInfo.each(function (item) {
- var option = document.createElement('option');
- option.value = item.key;
- var text = document.createTextNode(item.value.name);
- option.appendChild(text);
- $('menu.select').appendChild(option);
- })
refreshMenu();
}
});