Shout: Allow for multiple dial-out numbers
authorBen Klang <ben@alkaloid.net>
Sun, 28 Mar 2010 01:25:19 +0000 (21:25 -0400)
committerBen Klang <ben@alkaloid.net>
Sun, 28 Mar 2010 01:25:19 +0000 (21:25 -0400)
shout/lib/Shout.php
shout/templates/dialplan/edit.inc
shout/themes/screen.css

index 7d4ef29..d88a9c5 100644 (file)
@@ -194,7 +194,7 @@ class Shout
             'dial' => array(
                 'description' => _("Call out"),
                 'args' => array(
-                    'number' => array(
+                    'numbers' => array(
                         'name' => _("Phone Number"),
                         'type' => 'phone',
                         'required' => true
index f07d39f..69144b3 100644 (file)
@@ -152,12 +152,11 @@ function editAction(digit)
         empty('editAction');
         var action = $('editActionForm').down('select').getValue();
         var div = document.createElement('div');
+        div.id = 'editActionArgs';
         switch(action) {
         case 'jump':
-            var span = document.createElement('span');
-            var text = document.createTextNode(menuActions.get(action).description);
-            span.appendChild(text);
-            div.appendChild(span);
+            var text = document.createTextNode(menuActions.get(action).args.menuName.name);
+            div.appendChild(text);
 
             var select = document.createElement('select');
             select.name = 'menuName';
@@ -176,10 +175,8 @@ function editAction(digit)
 
         case 'ringexten':
         case 'leave_message':
-            var span = document.createElement('span');
-            var text = document.createTextNode(menuActions.get(action).description);
-            span.appendChild(text);
-            div.appendChild(span);
+            var text = document.createTextNode(menuActions.get(action).args.exten.name);
+            div.appendChild(text);
 
             var select = document.createElement('select');
             select.name = 'exten';
@@ -198,10 +195,8 @@ function editAction(digit)
             break;
 
         case 'conference':
-            var span = document.createElement('span');
-            var text = document.createTextNode(menuActions.get(action).description);
-            span.appendChild(text);
-            div.appendChild(span);
+            var text = document.createTextNode(menuActions.get(action).args.roomno.name);
+            div.appendChild(text);
 
             var input = document.createElement('input');
             input.name = 'roomno';
@@ -212,10 +207,31 @@ function editAction(digit)
             break;
 
         case 'dial':
-            alert(action);
+            var text = document.createTextNode(menuActions.get(action).args.numbers.name);
+            div.appendChild(text);
+            var br = document.createElement('br');
+            div.appendChild(br);
             if (menuInfo.get(curmenu).actions[digit] != null) {
-                alert("FIXME: Preserve values");
+                menuInfo.get(curmeun).actions[digit].args.numbers.each(function (s) {
+                    var input = document.createElement('input');
+                    input.name = 'numbers[]';
+                    input.value = s;
+                    input.size = "15";
+                    div.appendChild(input);
+                })
+            } else {
+                var input = document.createElement('input');
+                input.name = 'numbers[]';
+                input.size = "15";
+                div.appendChild(input);
+
             }
+            var img = document.createElement('img');
+            img.alt = '<?php echo _("Add a number"); ?>';
+            img.id = 'addDialNumberButton';
+            img.src = '<?php echo Horde_Themes::img('plus.png'); ?>';
+            img.setAttribute('onclick', 'addDialNumber()');
+            div.appendChild(img);
             break;
 
         case 'rewind':
@@ -248,6 +264,23 @@ function editAction(digit)
     $('dialpadWorking').hide();
 }
 
+function addDialNumber()
+{
+    $('editActionArgs').removeChild($('addDialNumberButton'));
+    var br = document.createElement('br');
+    $('editActionArgs').appendChild(br);
+    var input = document.createElement('input');
+    input.name = 'numbers[]';
+    input.size = "15";
+    $('editActionArgs').appendChild(input);
+    var img = document.createElement('img');
+    img.alt = '<?php echo _("Add a number"); ?>';
+    img.id = 'addDialNumberButton';
+    img.src = '<?php echo Horde_Themes::img('plus.png'); ?>';
+    img.setAttribute('onclick', 'addDialNumber()');
+    $('editActionArgs').appendChild(img);
+}
+
 function saveAction(event)
 {
     $('dialpadWorking').show();
@@ -386,10 +419,11 @@ function refreshMenu()
             }
             break;
         case 'dial':
-            if (pair.value.args.length == 1) {
-                text = document.createTextNode(pair.value.args.first().number);
-            } else if (pair.value.args.length > 1) {
-                text = document.createTextNode(pair.value.args.length + ' <?php echo _("numbers"); ?>');  
+            if (pair.value.args.numbers.length == 1) {
+                text = document.createTextNode(pair.value.args.numbers.first());
+            } else if (pair.value.args.numbers.length > 1) {
+                text = document.createTextNode(pair.value.args.numbers.length +
+                                               ' <?php echo _("numbers"); ?>');
             } else {
                 // Technically, this is an error.
                 // There should always be a number to dial.
index 779db6d..226844d 100644 (file)
@@ -44,7 +44,6 @@ table {
 
 .extensionDestinations
 {
-    /*display: none;*/
     position: relative;
     left: 25px;
 }
@@ -155,6 +154,11 @@ ul {
     background-image: url('graphics/transparency.png');
 }
 
+#editActionArgs
+{
+    padding-left: 45px;
+}
+
 #editMenu
 {
     width: 100%;