In the dispatcher forms you can now set flags with checkboxes and select attributes from a pulldown menu.

James
diff -ruN ./a/openbiz/bin/easy/element/ListboxInputText.php 
./b/openbiz/bin/easy/element/ListboxInputText.php
--- ./a/openbiz/bin/easy/element/ListboxInputText.php   1970-01-01 
01:00:00.000000000 +0100
+++ ./b/openbiz/bin/easy/element/ListboxInputText.php   2011-09-01 
09:17:27.000000000 +0100
@@ -0,0 +1,53 @@
+<?PHP
+
+include_once("Listbox.php");
+
+class ListboxInputText extends Listbox
+{
+    protected function readMetaData(&$xmlArr)
+    {
+        parent::readMetaData($xmlArr);
+               
+               // Get style class names
+               $this->m_cssErrorClass  = 
isset($xmlArr["ATTRIBUTES"]["CSSERRORCLASS"]) ? 
$xmlArr["ATTRIBUTES"]["CSSERRORCLASS"]        : $this->m_cssClass."_error";
+               $this->m_cssFocusClass  = 
isset($xmlArr["ATTRIBUTES"]["CSSFOCUSCLASS"]) ? 
$xmlArr["ATTRIBUTES"]["CSSFOCUSCLASS"]        : $this->m_cssClass."_focus";
+               $this->m_cssClass               = 
isset($xmlArr["ATTRIBUTES"]["CSSCLASS"])              ? 
$xmlArr["ATTRIBUTES"]["CSSCLASS"]                     : "input_text";
+    }
+
+    public function render()
+    {
+               // Get Values for element
+               $name = $this->m_Name;
+               $style = $this->getStyle();
+        $function = $this->getFunction();
+               $value = $this->m_Value;
+               $valueArray = explode('=', $value);
+               
+               // Set class information for states
+       if($this->GetFormObj()->m_Errors[$this->m_Name])
+                       $function .= 
"onchange=\"this.className='$this->m_cssClass'\"";
+               else
+                       $function .= 
"onfocus=\"this.className='$this->m_cssFocusClass'\" 
onblur=\"this.className='$this->m_cssClass'\"";
+        
+               // Set values for dropdown element
+               $this->m_cssClass = $this->m_cssErrorClass = 
$this->m_cssErrorClass = '';
+               $this->m_Name .= '[]';                          //for array 
(dropdown, textbox)
+               $this->m_Style = 'float:left; width:95px; margin-right:7px;';
+               $this->m_Value = $valueArray[0];        //first element of array
+
+               // Render dropdown element
+        $html = parent::render();
+               
+               // Generate textbox
+               if(!$valueArray[1]) $valueArray[1] = $this->getDefaultValue();
+        $html .= ' <INPUT NAME="' . $this->m_Name . '" ID="' . $this->m_Name 
.'" VALUE="' . $valueArray[1] . '"' . " $style $function />";
+               
+               // Restore Values and Name for rendering total element
+               $this->m_Value = $value;
+               $this->m_Name = $name;
+        
+               return $html;
+    }
+}
+
+?>
\ No newline at end of file
diff -ruN ./a/siremis/modules/ser/common/select/values.xml 
./b/siremis/modules/ser/common/select/values.xml
--- ./a/siremis/modules/ser/common/select/values.xml    2011-08-23 
22:58:21.000000000 +0100
+++ ./b/siremis/modules/ser/common/select/values.xml    2011-08-26 
16:20:43.000000000 +0100
@@ -22,4 +22,9 @@
        <lcrGwURIScheme Value="1" Text="1 - SIP"/>
        <lcrGwURIScheme Value="2" Text="2 - SIPS"/>
 
+       <dispatcherAttrs Value="" Text="-- none --"/>
+       <dispatcherAttrs Value="weight" Text="weight"/>
+       
+       <dispatcherFlags Value="1" Text="Inactive"/>
+       <dispatcherFlags Value="2" Text="Probing"/>
 </Selection>
diff -ruN ./a/siremis/modules/ser/rtg/dispatcher/do/DispatcherDO.php 
./b/siremis/modules/ser/rtg/dispatcher/do/DispatcherDO.php
--- ./a/siremis/modules/ser/rtg/dispatcher/do/DispatcherDO.php  1970-01-01 
01:00:00.000000000 +0100
+++ ./b/siremis/modules/ser/rtg/dispatcher/do/DispatcherDO.php  2011-08-26 
15:55:53.000000000 +0100
@@ -0,0 +1,197 @@
+<?PHP
+include_once(OPENBIZ_BIN.'data/BizDataObj.php');
+
+class DispatcherDO extends BizDataObj
+{
+       /**
+        * Fetches SQL result rows and replaces flags with relevent text 
description.
+        * 
+        * @return array of the records
+        */
+        
+       private function addFlag(&$recArray,$label,$value){
+               if (isset($recArray['flags_text_label']))
+               {
+                       $recArray['flags_text_label'] .= ', ';
+               } else {
+                       $recArray['flags_text_label'] = '';
+               }
+               $recArray['flags_text_label'] .= $label;
+               
+               if (isset($recArray['flags']))
+               {
+                       $recArray['flags'] .= ', ';
+               } else {
+                       $recArray['flags'] = '';
+               }
+               $recArray['flags'] .= $value;
+       }
+       
+       public function fetch()
+       {
+               $resultRecords = array();
+               $resultSet      = $this->_run_search($this->m_limit);
+               if ($resultSet !== null)
+               {
+                       $field = 'flags';
+                       while ($recArray = $this->_fetch_record($resultSet))
+                       {
+                               if (isset($recArray[$field]))
+                               {
+                                       $flags = decbin($recArray[$field]);
+                                       
+                                       // Make a mask for bitwise AND
+                                       $sflagsMask = '';               // 
Settable Flags
+                                       $oflagsMask = '';               // 
Other Flags
+                                       
+                                       for ($i = 0 ; $i < strlen($flags)-2 ; 
$i++)
+                                       {
+                                               $sflagsMask .= '0';
+                                               $oflagsMask .= '1';
+                                       }
+                                       
+                                       $sflagsMask .= '11';
+                                       $oflagsMask .= '00';
+                                       
+                                       $sflags = $sflagsMask & $flags;
+                                       $oflags = $oflagsMask & $flags;         
                        
+                                       
+                                       $recArray['flags_other'] = $oflags;
+                                       $recArray['flags'] = "";
+                                       // Set flags
+                                       for ($i = 0 ; $i < strlen($sflags) ; 
$i++)
+                                       {
+                                               $rindex = strlen($sflags) - $i;
+                                               if ($rindex == 2 && $sflags[$i] 
=== '1')
+                                               {
+                                                       
$this->addFlag($recArray,"Probing","2");
+                                               }
+                                               
+                                               if ($rindex == 1 && $sflags[$i] 
=== '1')
+                                               {
+                                                       
$this->addFlag($recArray,"Inactive","1");
+                                               }
+                                       }
+                                       if 
(!isset($recArray['flags_text_label']))
+                                       {
+                                               $recArray['flags_text_label'] 
.= '-';
+                                       }
+                               }
+                               
+                               if (isset($recArray['attrs'])) 
+                               {
+                                       $attrs = explode(';', 
$recArray['attrs']);
+                                       if(count($attrs) > 1){
+                                               for ( $i = 0 ; $i < 
count($attrs) ; $i++){
+                                                       
$recArray['attrs_other'] = '';
+                                                       $attr = 
explode('=',$attrs[$i]);
+                                                       if ($attr[0] == 
"weight")
+                                                       {
+                                                               
$recArray['attrs'] = $attrs[$i];
+                                                       }
+                                                       else
+                                                       {
+                                                               
$recArray['attrs_other'] .= $attrs[$i];
+                                                       }
+                                               }
+                                       }else{
+                                               $attr = 
explode('=',$recArray['attrs']);
+                                               if($attr[0] != 'weight'){
+                                                       
$recArray['attrs_other'] = $recArray['attrs'];
+                                                       
unset($recArray['attrs']);
+                                               }
+                                       }
+                               }
+                               $resultRecords[] = $recArray;
+                       }
+               }
+               else
+                       return null;
+                       
+               return $resultRecords;
+       }
+       
+       public function updateRecord($recArr, $oldRecord=null)
+       {
+               $oflags = $recArr['flags_other'];
+
+               if ($recArr['flags'][0] === ","){
+                       $recArr['flags'] = "00";
+               }
+
+               $inactive = "0";
+               $probing = "0";
+               if(strlen($recArr['flags'])>0){
+                       $sflagsArr = explode(",",$recArr['flags']);
+                       $inactive = (array_search("1",$sflagsArr) !== FALSE) ? 
"1" : "0";
+                       $probing = (array_search("2",$sflagsArr) !== FALSE) ? 
"1" : "0";
+               } 
+               
+               $sflags = $probing . $inactive;
+               
+               $recArr['flags'] = (string)(bindec($oflags) | bindec($sflags));
+               
+               $attributes = explode(',',$recArr['attrs']);
+               
+               if(strlen($attributes[0]) == 0){
+                       $recArr['attrs'] = '';
+               }else{
+                       if(strlen($attributes[1]) > 0){
+                               $recArr['attrs'] = 
str_replace(',','=',$recArr['attrs']);
+                               $recArr['attrs'].= ';';
+                       }else{
+                               $recArr['attrs'] = $attributes[0] . '=0;';
+                       }
+               }
+               $recArr['attrs'] .= $recArr['attrs_other'];
+
+               if(substr($recArr['attrs'],-1) == ';'){
+                       $recArr['attrs'] = substr($recArr['attrs'],0,-1);
+               }
+               
+               return parent::updateRecord($recArr, $oldRecord);
+       }
+       
+       public function insertRecord($recArr)
+       {
+               $oflags = $recArr['flags_other'];
+
+               if ($recArr['flags'][0] == ","){
+                       $recArr['flags'] = "00";
+               }
+
+               $inactive = "0";
+               $probing = "0";
+               if(strlen($recArr['flags'])>0){
+                       $sflagsArr = explode(",",$recArr['flags']);
+                       $inactive = (array_search("1",$sflagsArr) !== FALSE) ? 
"1" : "0";
+                       $probing = (array_search("2",$sflagsArr) !== FALSE) ? 
"1" : "0";
+               } 
+               
+               $sflags = $probing . $inactive;
+               
+               $recArr['flags'] = (string)(bindec($oflags) | bindec($sflags));
+               
+               $attributes = explode(',',$recArr['attrs']);
+               
+               if(strlen($attributes[0]) == 0){
+                       $recArr['attrs'] = '';
+               }else{
+                       if(strlen($attributes[1]) > 0){
+                               $recArr['attrs'] = 
str_replace(',','=',$recArr['attrs']);
+                               $recArr['attrs'].= ';';
+                       }else{
+                               $recArr['attrs'] = $attributes[0] . '=0;';
+                       }
+               }
+               $recArr['attrs'] .= $recArr['attrs_other'];
+
+               if(substr($recArr['attrs'],-1) == ';'){
+                       $recArr['attrs'] = substr($recArr['attrs'],0,-1);
+               }
+               
+               return parent::insertRecord($recArr);
+       }
+}
+
+?>
diff -ruN ./a/siremis/modules/ser/rtg/dispatcher/do/DispatcherDO.xml 
./b/siremis/modules/ser/rtg/dispatcher/do/DispatcherDO.xml
--- ./a/siremis/modules/ser/rtg/dispatcher/do/DispatcherDO.xml  2011-08-23 
22:58:21.000000000 +0100
+++ ./b/siremis/modules/ser/rtg/dispatcher/do/DispatcherDO.xml  2011-08-18 
11:37:29.000000000 +0100
@@ -1,5 +1,5 @@
 <?xml version="1.0" standalone="no"?>
-<BizDataObj Name="DispatcherDO" Description="" Class="BizDataObj" 
DBName="Serdb" Table="dispatcher" SearchRule="" SortRule="" OtherSQLRule="" 
Uniqueness="" Stateless="N" IdGeneration="Identity" CacheLifeTime="0">
+<BizDataObj Name="DispatcherDO" Description="" 
Class="ser.rtg.dispatcher.do.DispatcherDO" DBName="Serdb" Table="dispatcher" 
SearchRule="" SortRule="" OtherSQLRule="" Uniqueness="" Stateless="N" 
IdGeneration="Identity" CacheLifeTime="0">
        <BizFieldList>
         <BizField Name="Id" Column="id" Type="Number"/>
         <BizField Name="setid" Column="setid" Required="Y" Type="Number"/>
diff -ruN ./a/siremis/modules/ser/rtg/dispatcher/form/DispatcherCopyForm.xml 
./b/siremis/modules/ser/rtg/dispatcher/form/DispatcherCopyForm.xml
--- ./a/siremis/modules/ser/rtg/dispatcher/form/DispatcherCopyForm.xml  
2011-08-23 22:58:21.000000000 +0100
+++ ./b/siremis/modules/ser/rtg/dispatcher/form/DispatcherCopyForm.xml  
2011-06-03 12:22:47.000000000 +0100
@@ -4,9 +4,11 @@
         <Element Name="fld_Id" Class="Hidden" FieldName="Id" Label="Id" 
AllowURLParam="Y"/>    
                <Element Name="fld_setid" Class="InputText" FieldName="setid" 
Label="Setid"  AllowURLParam="N" CssClass="input_text" 
CssErrorClass="input_text_error" CssFocusClass="input_text_focus"/>
                <Element Name="fld_destination" Class="InputText" 
FieldName="destination" Label="Destination"  AllowURLParam="N" 
CssClass="input_text" CssErrorClass="input_text_error" 
CssFocusClass="input_text_focus"/>
-               <Element Name="fld_flags" Class="InputText" FieldName="flags" 
Label="Flags"  AllowURLParam="N" CssClass="input_text" 
CssErrorClass="input_text_error" CssFocusClass="input_text_focus"/>
+               <Element Name="fld_flags" Class="Checkbox" FieldName="flags" 
Label="Destination Flags"  AllowURLParam="N" 
SelectFrom="ser.common.select.values(dispatcherFlags)"/>
+               <Element Name="fld_flags_other" Class="Hidden" 
FieldName="flags_other" Label="Destination Flags" AllowURLParam="N"/>
                <Element Name="fld_priority" Class="InputText" 
FieldName="priority" Label="Priority"  AllowURLParam="N" CssClass="input_text" 
CssErrorClass="input_text_error" CssFocusClass="input_text_focus"/>
-               <Element Name="fld_attrs" Class="InputText" FieldName="attrs" 
Label="Attrs"  AllowURLParam="N" CssClass="input_text" 
CssErrorClass="input_text_error" CssFocusClass="input_text_focus"/>
+               <Element Name="fld_attrs" Class="ListboxInputText" 
FieldName="attrs" Label="Attrs"  AllowURLParam="N" CssClass="input_text_s" 
CssErrorClass="input_text_s_error" CssFocusClass="input_text_s_focus" 
SelectFrom="ser.common.select.values(dispatcherAttrs)"/>
+               <Element Name="fld_attrs_other" Class="Hidden" 
FieldName="attrs_other" Label="Attrs" AllowURLParam="N" />
                <Element Name="fld_description" Class="InputText" 
FieldName="description" Label="Description"  AllowURLParam="N" 
CssClass="input_text" CssErrorClass="input_text_error" 
CssFocusClass="input_text_focus"/>
     </DataPanel>
     <ActionPanel>
diff -ruN ./a/siremis/modules/ser/rtg/dispatcher/form/DispatcherDetailForm.xml 
./b/siremis/modules/ser/rtg/dispatcher/form/DispatcherDetailForm.xml
--- ./a/siremis/modules/ser/rtg/dispatcher/form/DispatcherDetailForm.xml        
2011-08-23 22:58:21.000000000 +0100
+++ ./b/siremis/modules/ser/rtg/dispatcher/form/DispatcherDetailForm.xml        
2011-06-03 12:22:47.000000000 +0100
@@ -4,7 +4,7 @@
                <Element Name="fld_Id" ElementSet="General" Hidden="Y" 
Class="LabelText" FieldName="Id" Label="Id" AllowURLParam="Y"/>
                <Element Name="fld_setid" ElementSet="General" 
Class="LabelText" FieldName="setid" Label="Setid" AllowURLParam="N"/>
                <Element Name="fld_destination" ElementSet="General" 
Class="LabelText" FieldName="destination" Label="Destination" 
AllowURLParam="N"/>
-               <Element Name="fld_flags" ElementSet="General" 
Class="LabelText" FieldName="flags" Label="Flags" AllowURLParam="N"/>
+               <Element Name="fld_flags_text_label" ElementSet="General" 
Class="LabelText" FieldName="flags_text_label" Label="Destination Flags" 
AllowURLParam="N"/>
                <Element Name="fld_priority" ElementSet="General" 
Class="LabelText" FieldName="priority" Label="Priority" AllowURLParam="N"/>
                <Element Name="fld_attrs" ElementSet="General" 
Class="LabelText" FieldName="attrs" Label="Attrs" AllowURLParam="N"/>
                <Element Name="fld_description" ElementSet="General" 
Class="LabelText" FieldName="description" Label="Description" 
AllowURLParam="N"/>
diff -ruN ./a/siremis/modules/ser/rtg/dispatcher/form/DispatcherEditForm.xml 
./b/siremis/modules/ser/rtg/dispatcher/form/DispatcherEditForm.xml
--- ./a/siremis/modules/ser/rtg/dispatcher/form/DispatcherEditForm.xml  
2011-08-23 22:58:21.000000000 +0100
+++ ./b/siremis/modules/ser/rtg/dispatcher/form/DispatcherEditForm.xml  
2011-08-26 16:19:00.000000000 +0100
@@ -4,9 +4,11 @@
                <Element Name="fld_Id" Class="Hidden" FieldName="Id" Label="Id" 
AllowURLParam="Y" Translatable="N" OnEventLog="N" CssClass="input" 
CssErrorClass="input_error"/>
                <Element Name="fld_setid" Class="InputText" FieldName="setid" 
Label="Setid"  AllowURLParam="N" CssClass="input_text" 
CssErrorClass="input_text_error" CssFocusClass="input_text_focus"/>
                <Element Name="fld_destination" Class="InputText" 
FieldName="destination" Label="Destination"  AllowURLParam="N" 
CssClass="input_text" CssErrorClass="input_text_error" 
CssFocusClass="input_text_focus"/>
-               <Element Name="fld_flags" Class="InputText" FieldName="flags" 
Label="Flags"  AllowURLParam="N" CssClass="input_text" 
CssErrorClass="input_text_error" CssFocusClass="input_text_focus"/>
+               <Element Name="fld_flags" Class="Checkbox" FieldName="flags" 
Label="Destination Flags"  AllowURLParam="N" 
SelectFrom="ser.common.select.values(dispatcherFlags)"/>
+               <Element Name="fld_flags_other" Class="InputText" 
FieldName="flags_other" Label="Destination Flags" Hidden="Y" AllowURLParam="N"/>
                <Element Name="fld_priority" Class="InputText" 
FieldName="priority" Label="Priority"  AllowURLParam="N" CssClass="input_text" 
CssErrorClass="input_text_error" CssFocusClass="input_text_focus"/>
-               <Element Name="fld_attrs" Class="InputText" FieldName="attrs" 
Label="Attrs"  AllowURLParam="N" CssClass="input_text" 
CssErrorClass="input_text_error" CssFocusClass="input_text_focus"/>
+               <Element Name="fld_attrs" Class="ListboxInputText" 
FieldName="attrs" Label="Attrs"  AllowURLParam="N" CssClass="input_text_s" 
CssErrorClass="input_text_s_error" CssFocusClass="input_text_s_focus" 
SelectFrom="ser.common.select.values(dispatcherAttrs)"/>
+               <Element Name="fld_attrs_other" Class="InputText" 
FieldName="attrs_other" Label="Attrs"  Hidden="Y" AllowURLParam="N"/>
                <Element Name="fld_description" Class="InputText" 
FieldName="description" Label="Description"  AllowURLParam="N" 
CssClass="input_text" CssErrorClass="input_text_error" 
CssFocusClass="input_text_focus"/>
     </DataPanel>
     <ActionPanel>
diff -ruN ./a/siremis/modules/ser/rtg/dispatcher/form/DispatcherListForm.xml 
./b/siremis/modules/ser/rtg/dispatcher/form/DispatcherListForm.xml
--- ./a/siremis/modules/ser/rtg/dispatcher/form/DispatcherListForm.xml  
2011-08-23 22:58:21.000000000 +0100
+++ ./b/siremis/modules/ser/rtg/dispatcher/form/DispatcherListForm.xml  
2011-08-26 15:55:04.000000000 +0100
@@ -9,7 +9,7 @@
                        <EventHandler Name="fld_setid_onclick" Event="onclick" 
Function="SwitchForm(ser.rtg.dispatcher.form.DispatcherDetailForm,{@:Elem[fld_Id].Value})"
   />
         </Element>
                 <Element Name="fld_destination" Class="ColumnText" 
FieldName="destination" Label="Destination"  Sortable="Y"/>
-                <Element Name="fld_flags" Class="ColumnText" FieldName="flags" 
Label="Flags"  Sortable="Y"/>
+                <Element Name="fld_flags_text_label" Class="ColumnText" 
FieldName="flags_text_label" Label="Flags"  Sortable="Y"/>
                 <Element Name="fld_priority" Class="ColumnText" 
FieldName="priority" Label="Priority"  Sortable="Y"/>
                 <Element Name="fld_attrs" Class="ColumnText" FieldName="attrs" 
Label="Attrs"  Sortable="Y"/>
                 <Element Name="fld_description" Class="ColumnText" 
FieldName="description" Label="Description"  Sortable="Y"/>
diff -ruN ./a/siremis/modules/ser/rtg/dispatcher/form/DispatcherNewForm.xml 
./b/siremis/modules/ser/rtg/dispatcher/form/DispatcherNewForm.xml
--- ./a/siremis/modules/ser/rtg/dispatcher/form/DispatcherNewForm.xml   
2011-08-23 22:58:21.000000000 +0100
+++ ./b/siremis/modules/ser/rtg/dispatcher/form/DispatcherNewForm.xml   
2011-06-03 12:22:47.000000000 +0100
@@ -3,9 +3,10 @@
     <DataPanel>
         <Element Name="fld_setid" Class="InputText" FieldName="setid" 
Label="Set ID" DefaultValue="1" Required="Y" CssClass="input_text"/>
         <Element Name="fld_destination" Class="InputText" 
FieldName="destination" Label="Destination" AllowURLParam="N" 
CssClass="input_text" CssErrorClass="input_text_error" 
CssFocusClass="input_text_focus"/>
-        <Element Name="fld_flags" Class="InputText" FieldName="flags" 
Label="Flags" Required="Y" CssClass="input_text"/>
+               <Element Name="fld_flags" Class="Checkbox" FieldName="flags" 
Label="Destination Flags"  AllowURLParam="N" 
SelectFrom="ser.common.select.values(dispatcherFlags)"/>
         <Element Name="fld_priority" Class="InputText" FieldName="priority" 
Label="Priority" DefaultValue="0" CssClass="input_text"/>
-        <Element Name="fld_attrs" Class="InputText" FieldName="attrs" 
Label="Attrs" Required="N" CssClass="input_text"/>
+               <Element Name="fld_attrs" Class="ListboxInputText" 
FieldName="attrs" Label="Attrs"  AllowURLParam="N" CssClass="input_text_s" 
CssErrorClass="input_text_s_error" CssFocusClass="input_text_s_focus" 
SelectFrom="ser.common.select.values(dispatcherAttrs)"/>
+               <Element Name="fld_attrs_other" Class="InputText" 
FieldName="attrs_other" Label="Attrs"  Hidden="Y" AllowURLParam="N"/>
         <Element Name="fld_description" Class="InputText" 
FieldName="description" Label="Description" Required="N" CssClass="input_text"/>
         </DataPanel>
     <ActionPanel>
_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to