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