Code

Added new widget which display a list with a selectbox which shown predifined selecta...
authorhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Fri, 1 Oct 2010 15:42:23 +0000 (15:42 +0000)
committerhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Fri, 1 Oct 2010 15:42:23 +0000 (15:42 +0000)
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@19890 594d385d-05f5-0310-b6e9-bd551577e9d8

gosa-plugins/goto/admin/systems/goto/Config/class_DeviceConfig.inc
gosa-plugins/goto/admin/systems/goto/Config/class_TemplateWidget_fixedList.inc [new file with mode: 0644]
gosa-plugins/goto/admin/systems/goto/Config/puppet.tpl

index 4e8a19342644131c38bb92d0890bc36b4f5cce87..4b7951793d975c9fdc52cafb9384a4e6d3a058d5 100644 (file)
@@ -139,7 +139,7 @@ class DeviceConfig extends management
         $allValuesSet = TRUE;
         foreach($this->itemConfig[$type]['options'] as $oName => $oValue){
             if(!isset($values[$oName])){
-                $values[$oName] = $oValue;
+                $values[$oName] = (isset($oValue['default']))?$oValue['default']:"";
             }
         }
 
diff --git a/gosa-plugins/goto/admin/systems/goto/Config/class_TemplateWidget_fixedList.inc b/gosa-plugins/goto/admin/systems/goto/Config/class_TemplateWidget_fixedList.inc
new file mode 100644 (file)
index 0000000..0f98097
--- /dev/null
@@ -0,0 +1,86 @@
+<?php
+
+class TemplateWidget_fixedList extends TemplateWidget
+{
+    protected $value = array();
+    
+    function __construct(&$config, $name, $value, $description,$syntax,$required,$type,$display,$values)
+    {
+        parent:: __construct($config, $name, $value, $description,$syntax,$required,$type,$display,$values);
+
+        $this->listWidget= new sortableListing($this->value);
+        $this->listWidget->setEditable(false);
+        $this->listWidget->setDeleteable(true);
+        $this->listWidget->setColspecs(array('*'));
+        $this->listWidget->setWidth("100%");
+        $this->listWidget->setHeight("70px");
+        $this->listWidget->setAcl("rwcdm");
+    }
+
+    function getAvailableOptions()
+    {
+        $tmp = array();
+        foreach($this->values as $key => $name){
+            if(!in_array($key, $this->value)){
+                $tmp[$key]=$name;
+            }
+        }
+        return($tmp);
+    }
+
+    function render()
+    {
+        $str = "";
+
+        // Build up list data
+        $data = $this->value;
+        foreach($this->value as $key => $name){
+            $lData[$key] = array('data' => array($this->values[$name]));
+        }
+        $this->listWidget->setListData($data, $lData);
+        $this->listWidget->update();
+        $str .= $this->listWidget->render();
+        $str .= "<select size='1' name='{$this->postName}_Input'>";
+        foreach($this->getAvailableOptions() as $name => $value){
+            $str .= "<option value=\"{$name}\">{$value}</option>\n";
+        }
+        $str .= "</select>";
+        $str .= "<button name='{$this->postName}_Add'>".msgPool::addButton()."</button>";
+        return($str);
+    }
+
+    function save_object()
+    {
+        $this->listWidget->save_object();
+        $action = $this->listWidget->getAction();
+        if($action['action'] == 'delete'){
+            $id = $this->listWidget->getKey($action['targets'][0]);
+            unset($this->value[$id]);
+            $this->value = array_values($this->value);
+        }
+
+        if(isset($_POST["{$this->postName}_Add"]) && isset($_POST["{$this->postName}_Input"])){
+            $input = get_post("{$this->postName}_Input");
+
+            if(!empty($input) && !empty($this->syntax) && !preg_match("/".$this->syntax."/", $input)){
+                msg_dialog::displayChecks(array(msgPool::invalid($this->display, $input, "/".$this->syntax."/")));
+            }elseif(!empty($input)){
+                $this->value[] = $input;
+            }
+        }
+    }
+
+    /*! \brief  Check the value entry using the provieded syntax.
+     * @return  Array   Returns a list of errors
+     */
+    function check()
+    {
+        if($this->required && empty($this->value)){
+            return(array(msgPool::required($this->display)));
+        }
+        return(array());
+    }
+}
+
+
+?>
index 067afd91affd081858b50b4b4fdc38116c3d6369..799343e28046454267ad7600316810138da4c1f6 100644 (file)
@@ -24,6 +24,8 @@
         </tr>
     </table>
 
+    {$fixedList}
+    {$fixedListName}
 {/if}
 {if $type == 'PuppetTemplate'}
     <table>