From 19068687aa9ecd254609029aa0f249046f0b89af Mon Sep 17 00:00:00 2001 From: hickert Date: Thu, 23 Jun 2005 07:24:14 +0000 Subject: [PATCH] Phone macro feature added git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@808 594d385d-05f5-0310-b6e9-bd551577e9d8 --- .../gofon/phoneaccount/class_phoneAccount.inc | 242 ++++++++++++++++-- plugins/gofon/phoneaccount/generic.tpl | 78 +++--- 2 files changed, 262 insertions(+), 58 deletions(-) diff --git a/plugins/gofon/phoneaccount/class_phoneAccount.inc b/plugins/gofon/phoneaccount/class_phoneAccount.inc index 4c6e0e3e9..a72200c63 100644 --- a/plugins/gofon/phoneaccount/class_phoneAccount.inc +++ b/plugins/gofon/phoneaccount/class_phoneAccount.inc @@ -8,26 +8,31 @@ class phoneAccount extends plugin var $has_mailAccount= FALSE; /* Attributes */ - var $telephoneNumber= ""; - var $goFonHardware= ""; - var $goFonForwarding= ""; - var $goFonFormat= ""; - var $goFonPIN= ""; - var $goFonDeliveryMode= ""; - var $phoneNumbers= array(); - var $forwarders= array(); - var $mail= ""; - var $hardware_list= array(); - var $used_hardware= array(); - + var $telephoneNumber = ""; + var $goFonHardware = ""; + var $goFonForwarding = ""; + var $goFonFormat = ""; + var $goFonPIN = ""; + var $goFonDeliveryMode = ""; + var $phoneNumbers = array(); + var $forwarders = array(); + var $mail = ""; + var $hardware_list = array(); + var $used_hardware = array(); + var $goFonMacro = ""; + var $macro = 0; // Selected Macor + var $macros = array(); // List of macros for smarty select box + var $macroarray = array(); // All needed macro informations + var $macrostillavailable = false; + /* CLI vars */ - var $cli_summary= "Manage users phone account"; - var $cli_description= "Some longer text\nfor help"; - var $cli_parameters= array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser"); + var $cli_summary = "Manage users phone account"; + var $cli_description = "Some longer text\nfor help"; + var $cli_parameters = array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser"); /* attribute list for save action */ - var $attributes= array("goFonDeliveryMode", "goFonForwarding", "goFonFormat", - "goFonHardware", "goFonPIN", "telephoneNumber"); + var $attributes = array("goFonDeliveryMode", "goFonForwarding", "goFonFormat", + "goFonHardware", "goFonPIN", "telephoneNumber", "goFonMacro","macro"); var $objectclasses= array("goFonAccount"); function phoneAccount ($config, $dn= NULL) @@ -84,6 +89,91 @@ class phoneAccount extends plugin } + /* Prepare templating */ + $smarty= get_smarty(); + + + /* Perform search, to get Macro Parameters,Name,Dn,Displayname etc*/ + $ldap->search("(objectClass=goFonMacro)", array("*")); + + /* Add none for no macro*/ + $this->macros['none']=_("none"); + $this->macro ="none"; + + + /* Fetch all Macros*/ + while ($attrs= $ldap->fetch()){ + + /* Only visisble */ + if((isset($attrs['goFonMacroVisible'][0]))&&($attrs['goFonMacroVisible'][0] ==1)){ + + /* unset Count, we don't need that here */ + unset($attrs['displayName']['count']); + + /* fill Selectfield variable with Macros */ + if(isset($attrs['displayName'][0])){ + $this->macros[$attrs['dn']] = $attrs['displayName'][0]; + }else{ + $this->macros[$attrs['dn']] = _("undefined"); + } + + /* Parse macro data, unset count for parameterarrays */ + unset($attrs['goFonMacroParameter']['count']); + + /* Go through available parameters and parse all attributes, like parametername, type, default ...*/ + if((isset($attrs['goFonMacroParameter']))&&(is_array($attrs['goFonMacroParameter']))){ + + foreach($attrs['goFonMacroParameter'] as $pkey=>$pval){ + + /* Split Data in readable values, by delimiter ! */ + $data = split("!",$attrs['goFonMacroParameter'][$pkey]); + + /* Set all attrs */ + $id = $data[0]; + $this->macroarray[$attrs['dn']][$id]['var'] ="var".$id; + $this->macroarray[$attrs['dn']][$id]['choosen']="N/A"; + $this->macroarray[$attrs['dn']][$id]['id'] = $id; + $this->macroarray[$attrs['dn']][$id]['name'] =$data[1]; + $this->macroarray[$attrs['dn']][$id]['type'] =$data[2]; + $this->macroarray[$attrs['dn']][$id]['default']=$data[3]; + }//foreach + }//is_array + }//visible = 1 + }//while + /* Go through already saved values, for a parameter */ + $tmp = split("!",$this->goFonMacro); + + /* it is possible that nothing has been saved yet */ + if(is_array($tmp)){ + + /* First value is the macroname */ + $this->macro = $tmp[0]; + + /* Macroname saved, delete that index */ + unset($tmp[0]); + + /* Check if makro has been removed */ + if(!isset($this->macroarray[$this->macro])){ + $this->macrostillavailable = false; + }else{ + $this->macrostillavailable = true; + } + + /* for each parametervalues ( parameterID#value like 25#twentyfive) */ + foreach($tmp as $var){ + + /* Split this, so we have $varar[0] = parameterID $varar[1] = SelectedValue */ + $varar = split("#",$var); + + /* Only insert if the parameter still exists */ + if(isset($this->macroarray[$this->macro][$varar[0]])){ + + /* Assign value */ + $this->macroarray[$this->macro][$varar[0]]['choosen']=$varar[1]; + } + } + } + /* Eventually colorize phones */ $ldap->cd($this->config->current['BASE']); foreach ($this->hardware_list as $cn => $desc){ @@ -95,7 +185,7 @@ class phoneAccount extends plugin } } } - + $this->hardware_list["automatic"]= _("automatic"); ksort($this->hardware_list); } @@ -108,6 +198,83 @@ class phoneAccount extends plugin $this->is_account= !$this->is_account; } + /* Select no macro if, state is empty, this is the case, if the selected macro is no longer available */ + if(empty($this->macro)){ + $this->macro ="none"; + } + + /* tell user that the pluging selected is no longer available*/ + if((!$this->macrostillavailable)&&($this->macro!="none")){ + print_red(_("The macro you selected in the past, is no longer available for you, please choose another one.")); + } + + /* Prepare templating */ + $smarty= get_smarty(); + + /* Assing macroselectbox values */ + $smarty->assign("macros",$this->macros); + $smarty->assign("macro", $this->macro); + + /* Create parameter table, skip if no parameters given */ + if(!isset($this->macroarray[$this->macro])){ + $macrotab=""; + }else{ + + $macrotab =""; + /* for every single parameter-> display textfile,combo, or true false switch*/ + foreach($this->macroarray[$this->macro] as $paras){ + + /* get al vars */ + $var = $paras['var']; + $name = $paras['name']; + $default = $paras['default']; + $type = $paras['type']; + $choosen = $paras['choosen'] ; + $str = $default; + + /* in case of a combo box display a combobox with selected attr */ + if($type == "combo"){ + $str=""; + } + + /* Display switch for true false*/ + if($type == "bool"){ + + $str=""; + } + + /* display simple textfield */ + if($type=="string"){ + $str=""; + } + + /* create table entry*/ + $macrotab.= "\n"; + + } + $macrotab.="
".$name."".$str."
"; + }//is_array() + + /* Give smarty the table */ + $smarty->assign("macrotab",$macrotab); + /* Do we represent a valid account? */ if (!$this->is_account && $this->parent == NULL){ $display= "\"\" ". @@ -161,9 +328,6 @@ class phoneAccount extends plugin } } - /* Prepare templating */ - $smarty= get_smarty(); - /* Transfer ACL's */ foreach($this->attributes as $val){ $smarty->assign($val."ACL", chkacl($this->acl, "$val")); @@ -277,8 +441,23 @@ class phoneAccount extends plugin if ($this->parent->by_object['mailAccount']->is_account){ $this->has_mailAccount= TRUE; } + + /* Every macro in the select box are available */ + if((isset($_POST['macro']))){ + $this->macrostillavailable=true; + } + + /* get all Postvars */ + if(isset($this->macroarray[$this->macro])){ + foreach($this->macroarray[$this->macro] as $key => $paras){ + if(isset($_POST[$paras['var']])){ + $this->macroarray[$this->macro][$key]['choosen'] = $_POST[$paras['var']]; + } + } + } } + } function check() @@ -309,6 +488,14 @@ class phoneAccount extends plugin } } + /* check for ! in any parameter setting*/ + if(isset($this->macroarray[$this->macro])){ + foreach($this->macroarray[$this->macro] as $val){ + if(strstr("!",$val['choosen'])){ + $message[] = sprintf(_("The parameter %s contains invalid char. '!' is used as delimiter"),$val['name']); + } + } + } return ($message); } @@ -335,6 +522,19 @@ class phoneAccount extends plugin $this->attrs['goFonForwarding'][]= "$index;$number"; } + /* Save settings, or remove goFonMacro attribute*/ + if($this->macro!="none"){ + $this->attrs['goFonMacro']=$this->macro; + if(isset($this->macroarray[$this->macro])){ + foreach($this->macroarray[$this->macro] as $paras) { + $this->attrs['goFonMacro'].="!".$paras['id']."#".$paras['choosen']; + } + } + }else{ + $this->attrs['goFonMacro']=array(); + } + unset($this->attrs['macro']) ; + /* Write back to ldap */ $ldap= $this->config->get_ldap_link(); $ldap->cd($this->dn); diff --git a/plugins/gofon/phoneaccount/generic.tpl b/plugins/gofon/phoneaccount/generic.tpl index f3f814bb0..987980a51 100644 --- a/plugins/gofon/phoneaccount/generic.tpl +++ b/plugins/gofon/phoneaccount/generic.tpl @@ -1,38 +1,3 @@ - - - - - - -
-

{t}Telephone hardware{/t}

- - - - - -
{t}Telephone{/t}  - {$hardware_list} -
-
-

{t}Answering machine{/t}

- - - - -
- {if $has_mailaccount eq "false"} - - {t}Deliver missed calls as mail{/t} - {else} - - {t}Deliver missed calls as mail{/t} - {/if} -
-
- -

 

-
@@ -49,10 +14,26 @@ + + + + + +
+

{t}Telephone hardware{/t}

+ + + + + +
{t}Telephone{/t}  + {$hardware_list} +
+
-
+

{t}Forward calls to{/t}

@@ -67,5 +48,28 @@
- +

 

+
+ + + + + +
+ + + + + +
{t}Select Makro{/t} + + + + +
+
+ {$macrotab} +
-- 2.30.2