Too tired to continue...commiting broken code (again...)
authorBen Klang <ben@alkaloid.net>
Sun, 17 Jul 2005 06:25:26 +0000 (06:25 +0000)
committerBen Klang <ben@alkaloid.net>
Sun, 17 Jul 2005 06:25:26 +0000 (06:25 +0000)
Major progress on dialplan editing.  Current idea is (when editing an extension
in a dialplan) to have a master object (ExtensionDetailsForm) for each extension
and one sub object (ExtensionPriorityForm) for each priority.  We'll see
how that flies.

git-svn-id: https://svn.alkaloid.net/gpl/shout/trunk@65 06cd67b6-e706-0410-b29e-9de616bca6e9

dialplan.php
dialplan/edit.php [new file with mode: 0644]
lib/Dialplan.php [new file with mode: 0644]
lib/User.php
main/dialplan.php
main/users.php
shout.webprj
templates/dialplan/dialplanlist.inc
themes/graphics/add-dialplan.gif [deleted file]
themes/graphics/add-extension.gif [new file with mode: 0644]
users/edit.php

index dc1b574..efce48e 100644 (file)
@@ -37,19 +37,19 @@ if (!isset($context)) {#FIXME || !Shout::checkContext()) {
 
 switch ($action) {
     case "add":
-        $title = _("Add User");
+        $title = _("Add Extension");
         # Treat adds just like an empty edit
         unset($extension);
         $action = 'edit';
         break;
     case "edit":
-        $title = _("Edit User (Extension") . "$extension)";
+        $title = _("Edit Extension") . "$extension";
         break;
     case "save":
-        $title = _("Save User (Extension") . "$extension)";
+        $title = _("Save Extension") . "$extension";
         break;
     case "delete":
-        $title = _("Delete User (Extension") . "$extension)";
+        $title = _("Delete Extension") . "$extension";
         break;
     default:
         $url = Horde::applicationUrl('/');
@@ -66,6 +66,6 @@ $tabs = &Shout::getTabs($context, $vars);
 $tabs->preserve('context', $context);
 echo $tabs->render($section);
 
-require SHOUT_BASE . "/users/$action.php";
+require SHOUT_BASE . "/dialplan/$action.php";
 
 require $registry->get('templates', 'horde') . '/common-footer.inc';
\ No newline at end of file
diff --git a/dialplan/edit.php b/dialplan/edit.php
new file mode 100644 (file)
index 0000000..662657e
--- /dev/null
@@ -0,0 +1,34 @@
+<?php
+/**
+ * $Horde: shout/dialplan/edit.php,v 1.0 2005/07/14 01:06:48 ben Exp $
+ *
+ * Copyright 2005 Ben Klang <ben@alkaloid.net>
+ *
+ * See the enclosed file LICENSE for license information (GPL). If you
+ * did not receive this file, see http://www.horde.org/licenses/gpl.php.
+ */
+@define('SHOUT_BASE', dirname(__FILE__) . '/..');
+require_once SHOUT_BASE . '/lib/Dialplan.php';
+require_once 'Horde/Variables.php';
+
+$RENDERER = &new Horde_Form_Renderer();
+
+$empty = '';
+$wereerrors = 0;
+
+$vars = &Variables::getDefaultVariables($empty);
+$formname = $vars->get('formname');
+
+$UserDetailsForm = &Horde_Form::singleton('UserDetailsForm', $vars);
+$UserDetailsFormValid = $UserDetailsForm->validate($vars, true);
+
+$UserDetailsForm->open($RENDERER, $vars, 'dialplan.php', 'post');
+$UserDetailsForm->preserveVarByPost($vars, "section");
+$UserDetailsForm->preserve($vars);
+require SHOUT_TEMPLATES . '/table-limiter-begin.inc';
+$RENDERER->beginActive($UserDetailsForm->getTitle());
+$RENDERER->renderFormActive($UserDetailsForm, $vars);
+$RENDERER->submit();
+$RENDERER->end();
+$UserDetailsForm->close($RENDERER);
+require SHOUT_TEMPLATES . '/table-limiter-end.inc';
\ No newline at end of file
diff --git a/lib/Dialplan.php b/lib/Dialplan.php
new file mode 100644 (file)
index 0000000..c61ad71
--- /dev/null
@@ -0,0 +1,106 @@
+<?php
+/**
+ * $Horde: shout/lib/Dialplan.php,v 0.1 2005/07/16 11:06:48 ben Exp $
+ *
+ * Copyright 2005 Ben Klang <ben@alkaloid.net>
+ *
+ * See the enclosed file LICENSE for license information (GPL). If you
+ * did not receive this file, see http://www.horde.org/licenses/gpl.php.
+ *
+ * @package Shout
+ */
+// {{{
+class ExtensionDetailsForm extends Horde_Form {
+
+    function ExtensionDetailsForm(&$vars)
+    {
+        global $shout;
+        $context = $vars->get("context");
+        $extension = $vars->get("extension");
+        
+        $dialplan = $shout->getDialplan($context);
+        if (array_key_exists($extension, $dialplan['extensions'])) {
+            $formtitle = "Edit Extension";
+        } else {
+            $formtitle = "Add Extension";
+        }
+       
+        parent::Horde_Form($vars, _("$formtitle - Context: $context"));
+        
+        $this->addHidden('', 'context', 'text', true);
+        $this->addHidden('', 'oldextension', 'text', true);
+        $vars->set('oldextension', $extension);
+        $this->addHidden('', 'action', 'text', true);
+        $vars->set('action', 'save');
+        $this->addVariable(_("Extension"), 'extension', 'text', true);
+    }
+    
+    // {{{ fillUserForm method
+    /**
+     * Fill in the blanks for the UserDetailsForm
+     *
+     * @param object Reference to a Variables object to fill in
+     *
+     * @param array User details
+     *
+     * @return boolean True if successful, Pear::raiseError object on failure
+     */
+    function fillExtensionFormPriority(&$vars, $extensiondetails)
+    {
+    #Array ( [dialopts] => Array ( [0] => m [1] => t ) [mailboxopts] => Array (
+    #) [mailboxpin] => 1234 [name] => Ricardo Paul [phonenumbers] => Array ( )
+    #[dialtimeout] => 30 [email] => ricardo.paul@v-office.biz [pageremail] => ) 
+        $vars->set('name', $userdetails['name']);
+        $vars->set('email', @$userdetails['email']);
+        $vars->set('pin', $userdetails['mailboxpin']);
+        
+        $i = 1;
+        foreach($userdetails['phonenumbers'] as $number) {
+            $vars->set("telephone$i", $number);
+            $i++;
+        }
+        
+        if (in_array('m', $userdetails['dialopts'])) {
+            $vars->set('moh', true);
+        } else {
+            $vars->set('moh', false);
+        }
+        
+        if (in_array('t', $userdetails['dialopts'])) {
+            $vars->set('transfer', true);
+        } else {
+            $vars->set('transfer', false);
+        }
+        
+        return true;
+    }
+    // }}}
+}
+// }}}
+
+class ExtensionPriorityForm extends ExtensionDetailsForm {
+
+    function ExtensionPriorityForm(&$vars)
+    {
+        global $shout;
+        $context = $vars->get("context");
+        $extension = $vars->get("extension");
+        
+        $dialplan = $shout->getDialplan($context);
+        if (array_key_exists($extension, $dialplan['extensions'])) {
+            $formtitle = "Edit Extension";
+        } else {
+            $formtitle = "Add Extension";
+        }
+        
+        parent::Horde_Form($vars, _("$formtitle - Context: $context"));
+        
+        $this->addHidden('', 'context', 'text', true);
+        $this->addHidden('', 'oldextension', 'text', true);
+        $vars->set('oldextension', $extension);
+        $this->addHidden('', 'action', 'text', true);
+        $vars->set('action', 'save');
+        $this->addVariable(_("Extension"), 'extension', 'text', true);
+    }
+}
+// }}}
\ No newline at end of file
index 27d6d04..4160beb 100644 (file)
@@ -28,8 +28,6 @@ class UserDetailsForm extends Horde_Form {
         }
        
         parent::Horde_Form($vars, _("$formtitle - Context: $context"));
-
-        $users = $shout->getUsers($context);
         
         $this->addHidden('', 'context', 'text', true);
         $this->addHidden('', 'oldextension', 'text', true);
index 3d4f117..51d9332 100644 (file)
@@ -2,5 +2,5 @@
 if (!defined(SHOUT_BASE)) {
     define(SHOUT_BASE, dirname(__FILE__));
 }
-
+$dialplan = $shout->getDialplan($context);
 require SHOUT_TEMPLATES . "/dialplan/dialplanlist.inc";
\ No newline at end of file
index 8b2b6f4..4530444 100644 (file)
@@ -2,5 +2,6 @@
 if (!defined(SHOUT_BASE)) {
     define(SHOUT_BASE, dirname(__FILE__));
 }
-
+$users = $shout->getUsers($context);
+ksort($users);
 require SHOUT_TEMPLATES . "/users/userlist.inc";
\ No newline at end of file
index d2c1d4f..7db6eeb 100644 (file)
@@ -57,6 +57,7 @@
         <uploadeditem upload_time="0" url="themes/" />
         <uploadeditem upload_time="0" url="themes/graphics/" />
         <uploadeditem upload_time="1121580098" url="themes/graphics/add-dialplan.gif" />
+        <uploadeditem upload_time="1121580098" url="themes/graphics/add-extension.gif" />
         <uploadeditem upload_time="1121300828" url="themes/graphics/add-user.gif" />
         <uploadeditem upload_time="1121574328" url="themes/screen.css" />
         <uploadeditem upload_time="1121579644" url="users.php" />
     <item modified_time="1121578576" url="templates/table-limiter-end.inc" />
     <item modified_time="1121579932" url="dialplan.php" />
     <item modified_time="1121580098" url="themes/graphics/add-dialplan.gif" />
+    <item modified_time="1121580098" url="themes/graphics/add-extension.gif" />
+    <item url="dialplan/edit.php" />
+    <item url="dialplan/" />
+    <item url="lib/Dialplan.php" />
     <treestatus>
       <openfolder url="config" />
       <openfolder url="lib" />
index a8ac3f8..8e7f6b6 100644 (file)
@@ -7,7 +7,6 @@
   <table width="95%" border="0" cellpadding="0" cellspacing="0" class="item">
   <?php
     $line = 0;
-    $dialplan = $shout->getDialplan($context);
     if (isset($dialplan['extensions']) &&
         (count($dialplan['extensions']) > 0)) {
         foreach ($dialplan['extensions'] as $extension => $priorities) {
diff --git a/themes/graphics/add-dialplan.gif b/themes/graphics/add-dialplan.gif
deleted file mode 100644 (file)
index c343e4b..0000000
Binary files a/themes/graphics/add-dialplan.gif and /dev/null differ
diff --git a/themes/graphics/add-extension.gif b/themes/graphics/add-extension.gif
new file mode 100644 (file)
index 0000000..c343e4b
Binary files /dev/null and b/themes/graphics/add-extension.gif differ
index 5df2c7e..35d3172 100644 (file)
@@ -19,8 +19,6 @@ $wereerrors = 0;
 $vars = &Variables::getDefaultVariables($empty);
 $formname = $vars->get('formname');
 
-$title = _("System Settings");
-
 $UserDetailsForm = &Horde_Form::singleton('UserDetailsForm', $vars);
 $UserDetailsFormValid = $UserDetailsForm->validate($vars, true);