Code

added files ..
authorhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Tue, 21 Jun 2005 08:32:02 +0000 (08:32 +0000)
committerhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Tue, 21 Jun 2005 08:32:02 +0000 (08:32 +0000)
Splitted goFon into Basic and parameter setup

git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@774 594d385d-05f5-0310-b6e9-bd551577e9d8

plugins/gofon/macro/class_gofonMacro.inc
plugins/gofon/macro/class_gofonMacroParameters.inc [new file with mode: 0755]
plugins/gofon/macro/generic.tpl
plugins/gofon/macro/parameter.tpl [new file with mode: 0755]

index 88ad31f5eac99b3b74a9d27a09edf04b09bc3d38..488a290a312b5f125f2ebe1c5c26b12b9c6d832b 100755 (executable)
@@ -11,21 +11,17 @@ class macro extends plugin
   var $description= "";
   var $base= "";
   var $displayName = "";
-  var $goFonMacroParameter =array();
   var $goFonMacroContent;
   var $goFonMacroVisible=0;
 
   /* attribute list for save action */
-  var $attributes= array("cn","base", "description","displayName","goFonMacroParameter","goFonMacroContent","goFonMacroVisible");
+  var $attributes= array("cn","base", "description","displayName","goFonMacroContent","goFonMacroVisible");
   var $objectclasses= array("top", "goFonMacro");
 
   function macro ($config, $dn= NULL)
   {
     plugin::plugin ($config, $dn);
 
-    $tmp = array();  // temporary Var 
-    $tmp2 = array(); // temporary Var ...
-    $tmp3 = "";
     $ldap= $config->get_ldap_link();
 
     $this->dn = $dn;
@@ -40,37 +36,6 @@ class macro extends plugin
     } else {
       $this->base= dn2base($this->dn);
     }
-
-    /* initialising macro parameter */
-    unset($this->attrs['goFonMacroParameter']['count']);
-
-    /* Set Parameters, or a new array if ther are no parameters */
-    if(isset($this->attrs['goFonMacroParameter'])){
-      $this->goFonMacroParameter = $this->attrs['goFonMacroParameter'];
-    }else{
-      $this->goFonMacroParameter =array();
-    }
-
-    /* Create an array for parameters if not given yet */
-    if(!is_array($this->goFonMacroParameter)){
-      $tmp3 = $this->goFonMacroParameter;
-      $this->goFonMacroParameter =array();     
-      if(!empty($tmp3)) {
-        $this->goFonMacroParameter[] = $tmp3;
-      }
-    }
-
-    /* Create a better sorted array */
-    foreach($this->goFonMacroParameter as $para)    {
-      $tmp = split("!",$para);
-      $tmp2[$tmp[0]]['name']           = $tmp[1];  
-      $tmp2[$tmp[0]]['type']           = $tmp[2];  
-      $tmp2[$tmp[0]]['default']        = $tmp[3];  
-    }
-
-    /* Assign this array */
-    $this->goFonMacroParameter = $tmp2;        
-
   }
 
   function execute()
@@ -95,76 +60,6 @@ class macro extends plugin
     foreach($this->attributes as $ar){
       $smarty->assign($ar, $this->$ar);
     }
-
-    /* Add an empty Parameter */
-    if(isset($_POST['addvar'])){
-      if(!is_array($this->goFonMacroParameter)){
-        $vars = $this->goFonMacroParameter;
-        $this->goFonMacroParameter = array();
-        $this->goFonMacroParameter[]= $vars;
-      }
-      $number= count($this->goFonMacroParameter);
-      $number++;
-      $this->goFonMacroParameter[]=array("name"=>"new","type"=>"string","default"=>"test");
-    }
-
-    /* read out post data, and assign it to the parameters */
-    /* And or delete */
-    foreach($_POST as $name=>$value){  
-
-      /* Test if there is a variable begining with "del" */
-      if(preg_match("/del/",$name)){
-
-        /* Extract entry id to delete */
-        $nr = str_replace("del","",$name)      ;
-
-        /* unset entry */                      
-        unset($this->goFonMacroParameter[$nr]);
-
-      }elseif(preg_match("/number/",$name)){
-        /* Set Post vars */
-        $key = $_POST[$name];
-        $this->goFonMacroParameter[$key]['name']               =$_POST["varname".$key];                
-        $this->goFonMacroParameter[$key]['type']               =$_POST["vartype".$key];                
-        $this->goFonMacroParameter[$key]['default']            =$_POST["default".$key];                
-      }
-    } 
-
-    /*generate Table which shows als parameters */
-    foreach($this->goFonMacroParameter as $key=>$para) {
-
-      if($para['type']=="string") {
-        $sel1 = "selected";
-        $sel2 = "";
-      }else{
-        $sel1 = "";
-        $sel2 = "selected";
-      }
-
-      $vars .="<tr>
-        <td>".$key."<input name=\"number".$key."\" value='".$key."' type='hidden'> </td>
-        <td><input name='varname".$key."'   value='".$para['name']."'></td>
-        <td>
-        <select name='vartype".$key."'>
-        <option name='vartype".$key."' value='string' ".$sel1.">string</option>
-        <option name='vartype".$key."' value='combo'   ".$sel2.">combo</option>
-        <option name='vartype".$key."' value='bool'   ".$sel2.">bool</option>
-        </select>
-        </td>
-        <td><input name='default".$key."'   value='".$para['default']."'></td>
-        <td><input name='del".$key."' value='delete' type='submit'></td>
-        </tr>";
-
-
-    }
-
-    /* Display add renew button */
-    $vars .="<tr>      
-      <td colspan=5>
-      <input name='addvar' value="._("Add")." type='submit'>
-      <input name='actvar' value="._("Refresh")." type='submit'>
-      </td>
-      </tr>";
     /* Checkboxes */
     $smarty->assign("base_select", $this->base);
     $smarty->assign("vars", $vars);
@@ -231,10 +126,10 @@ class macro extends plugin
         return(array($str));
         }
       }
-
     if(($this->cn != strtolower($this->cn))||(empty($this->cn))){
       $message[] = "The attribute 'cn' must be lowercase and a least one char.";
     }
+
     return $message;
   }
 
@@ -247,12 +142,6 @@ class macro extends plugin
 
     plugin::save();
 
-    $this->attrs['goFonMacroParameter']=array();
-
-    foreach($this->goFonMacroParameter as $key=>$fonpara){
-      $this->attrs['goFonMacroParameter'][]=$key."!".$fonpara['name']."!".$fonpara['type']."!".$fonpara['default'];
-    }
-
     unset($this->attrs['base']);
 
     /* Write back to ldap */
@@ -265,10 +154,6 @@ class macro extends plugin
       $ldap->modify($this->attrs);
       $this->handle_post_events("modify");
     } else {
-      if(count($this->attrs['goFonMacroParameter']==0)){
-        unset($this->attrs['goFonMacroParameter']);
-      }                
-
       $ldap->cd($this->dn);
       $ldap->create_missing_trees( $this->dn);
       $ldap->cd($this->dn);
diff --git a/plugins/gofon/macro/class_gofonMacroParameters.inc b/plugins/gofon/macro/class_gofonMacroParameters.inc
new file mode 100755 (executable)
index 0000000..19fc620
--- /dev/null
@@ -0,0 +1,256 @@
+<?php
+class macroParameter extends plugin
+{
+  /* CLI vars */
+  var $cli_summary= "Handling of GOsa's application object";
+  var $cli_description= "Some longer text\nfor help";
+  var $cli_parameters= array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser");
+
+  /* application attributes */
+  var $base= "";
+  var $goFonMacroParameter =array();
+
+  /* attribute list for save action */
+  var $attributes= array("base","goFonMacroParameter");
+  var $objectclasses= array("top", "goFonMacro");
+
+  function macroParameter ($config, $dn= NULL)
+  {
+    plugin::plugin ($config, $dn);
+
+    $tmp = array();  // temporary Var 
+    $tmp2 = array(); // temporary Var ...
+    $tmp3 = "";
+    $ldap= $config->get_ldap_link();
+
+    $this->dn = $dn;
+
+    /* This is always an account */
+    $this->is_account= TRUE;
+
+    /* Edit or new one ?*/
+    if ($this->dn == "new"){
+      $ui= get_userinfo();
+      $this->base= dn2base($ui->dn);
+    } else {
+      $this->base= dn2base($this->dn);
+    }
+
+    /* initialising macro parameter */
+    unset($this->attrs['goFonMacroParameter']['count']);
+
+    /* Set Parameters, or a new array if ther are no parameters */
+    if(isset($this->attrs['goFonMacroParameter'])){
+      $this->goFonMacroParameter = $this->attrs['goFonMacroParameter'];
+    }else{
+      $this->goFonMacroParameter =array();
+    }
+
+    /* Create an array for parameters if not given yet */
+    if(!is_array($this->goFonMacroParameter)){
+      $tmp3 = $this->goFonMacroParameter;
+      $this->goFonMacroParameter =array();     
+      if(!empty($tmp3)) {
+        $this->goFonMacroParameter[] = $tmp3;
+      }
+    }
+
+    /* Create a better sorted array */
+    foreach($this->goFonMacroParameter as $para)    {
+      $tmp = split("!",$para);
+      $tmp2[$tmp[0]]['name']           = $tmp[1];  
+      $tmp2[$tmp[0]]['type']           = $tmp[2];  
+      $tmp2[$tmp[0]]['default']        = $tmp[3];  
+    }
+
+    /* Assign this array */
+    $this->goFonMacroParameter = $tmp2;        
+
+  }
+
+  function execute()
+  {
+    /* Variables */
+    $vars      = "";
+    $tmp       = array();
+    $number = 0; 
+
+    /* Do we represent a valid group? */
+    if (!$this->is_account && $this->parent == NULL){
+      $display= "<img alt=\"\" src=\"images/stop.png\" align=\"middle\">&nbsp;<b>".
+        _("This 'dn' is no application.")."</b>";
+      return ($display);
+    }
+
+    /* Fill templating stuff */
+    $smarty= get_smarty();
+
+    /* Assign all vars to Smarty */
+    foreach($this->attributes as $ar){
+      $smarty->assign($ar, $this->$ar);
+    }
+
+    /* Add an empty Parameter */
+    if(isset($_POST['addvar'])){
+      if(!is_array($this->goFonMacroParameter)){
+        $vars = $this->goFonMacroParameter;
+        $this->goFonMacroParameter = array();
+        $this->goFonMacroParameter[]= $vars;
+      }
+      $number= count($this->goFonMacroParameter);
+      $number++;
+      $this->goFonMacroParameter[]=array("name"=>"new","type"=>"string","default"=>"test");
+    }
+
+    /* read out post data, and assign it to the parameters */
+    /* And or delete */
+    foreach($_POST as $name=>$value){  
+
+      /* Test if there is a variable begining with "del" */
+      if(preg_match("/del/",$name)){
+
+        /* Extract entry id to delete */
+        $nr = str_replace("del","",$name)      ;
+
+        /* unset entry */                      
+        unset($this->goFonMacroParameter[$nr]);
+
+      }elseif(preg_match("/number/",$name)){
+        /* Set Post vars */
+        $key = $_POST[$name];
+        $this->goFonMacroParameter[$key]['name']               =$_POST["varname".$key];                
+        $this->goFonMacroParameter[$key]['type']               =$_POST["vartype".$key];                
+        $this->goFonMacroParameter[$key]['default']            =$_POST["default".$key];                
+      }
+    } 
+
+    /*generate Table which shows als parameters */
+    foreach($this->goFonMacroParameter as $key=>$para) {
+
+      if($para['type']=="string") {
+        $sel1 = "selected";
+        $sel2 = "";
+      }else{
+        $sel1 = "";
+        $sel2 = "selected";
+      }
+
+      $vars .="<tr>
+        <td>".$key."<input name=\"number".$key."\" value='".$key."' type='hidden'> </td>
+        <td><input name='varname".$key."'   value='".$para['name']."'></td>
+        <td>
+        <select name='vartype".$key."'>
+        <option name='vartype".$key."' value='string' ".$sel1.">string</option>
+        <option name='vartype".$key."' value='combo'   ".$sel2.">combo</option>
+        <option name='vartype".$key."' value='bool'   ".$sel2.">bool</option>
+        </select>
+        </td>
+        <td><input name='default".$key."'   value='".$para['default']."'></td>
+        <td><input name='del".$key."' value='delete' type='submit'></td>
+        </tr>";
+
+
+    }
+
+    /* Display add renew button */
+    $vars .="<tr>      
+      <td colspan=5>
+      <input name='addvar' value="._("Add")." type='submit'>
+      <input name='actvar' value="._("Refresh")." type='submit'>
+      </td>
+      </tr>";
+    /* Checkboxes */
+    $smarty->assign("base_select", $this->base);
+    $smarty->assign("vars", $vars);
+
+
+    /* Show main page */
+    return($smarty->fetch (get_template_path('parameter.tpl', TRUE)));
+  }
+
+  function remove_from_parent()
+  {
+    $ldap= $this->config->get_ldap_link();
+    $ldap->rmDir($this->dn);
+
+    /* Optionally execute a command after we're done */
+    $this->handle_post_events("remove");
+
+    /* Delete references to object groups */
+    $ldap->cd ($this->config->current['BASE']);
+    $ldap->search ("(&(objectClass=gosaGroupOfNames)(member=".$this->dn."))", array("cn"));
+    while ($ldap->fetch()){
+      $og= new ogroup($this->config, $ldap->getDN());
+      unset($og->member[$this->dn]);
+      $og->save ();
+    }
+
+  }
+
+
+  /* Save data to object */
+  function save_object()
+  {
+    if (isset($_POST['cn'])){
+      plugin::save_object();
+
+    }
+  }
+
+
+  /* Check values */
+  function check()
+  {
+    $message = array();
+    
+    foreach($this->attributes as $attr){
+      if(chkacl($this->acl,$attr)){
+        $str =  sprintf( _("Insufficient permissions, can't change attribute '%s' in goFonMacro"),$attr) ;
+        return(array($str));
+        }
+      }
+    return $message;
+  }
+
+
+  /* Save to LDAP */
+  function save()
+  {
+    /* Post checks */
+    $this->execute();
+
+    plugin::save();
+
+    $this->attrs['goFonMacroParameter']=array();
+
+    foreach($this->goFonMacroParameter as $key=>$fonpara){
+      $this->attrs['goFonMacroParameter'][]=$key."!".$fonpara['name']."!".$fonpara['type']."!".$fonpara['default'];
+    }
+
+    unset($this->attrs['base']);
+
+    /* Write back to ldap */
+    $ldap= $this->config->get_ldap_link();
+    $ldap->cat($this->dn);
+    $a= $ldap->fetch();
+
+    if (count($a)){
+      $ldap->cd($this->dn);
+      $ldap->modify($this->attrs);
+      $this->handle_post_events("modify");
+    } else {
+      if(count($this->attrs['goFonMacroParameter']==0)){
+        unset($this->attrs['goFonMacroParameter']);
+      }                
+      $ldap->cd($this->dn);
+      $ldap->create_missing_trees( $this->dn);
+      $ldap->cd($this->dn);
+      $ldap->add($this->attrs);
+      $this->handle_post_events("add");
+    }
+    show_ldap_error($ldap->get_error());
+  }
+
+}
+// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
+?>
index f9ea5fe29a6b720f07e5015a4406f4bf931fce88..98f1a25386a1b5fc497a2a69a4eaf760ce1d9578 100755 (executable)
                        </table>
 
                </td>
-               <td>
-                       <table>
-                               <tr>
-                                       <td>{t}Number{/t}
-                                       </td>
-                                       <td>{t}Name{/t}
-                                       </td>
-                                       <td>{t}type{/t}
-                                       </td>
-                                       <td>{t}Default value{/t}
-                                       </td>
-                                       <td>{t}Option{/t}
-                                       <td>
-                               </tr>
-                                       {$vars}
-                       </table>
-               </td>
        </tr>
 </table>
 <table width="100%">
diff --git a/plugins/gofon/macro/parameter.tpl b/plugins/gofon/macro/parameter.tpl
new file mode 100755 (executable)
index 0000000..4db0d31
--- /dev/null
@@ -0,0 +1,29 @@
+<table style="width:100%;">
+       <tr>
+               <td>
+                       <table>
+                               <tr>
+                                       <td width="10%">{t}Number{/t}
+                                       </td>
+                                       <td width="25%">{t}Name{/t}
+                                       </td>
+                                       <td width="15%">{t}type{/t}
+                                       </td>
+                                       <td width="30%">{t}Default value{/t}
+                                       </td>
+                                       <td>{t}Option{/t}
+                                       </td>
+                               </tr>
+                                       {$vars}
+                       </table>
+               </td>
+       </tr>
+</table>
+<p class="plugbottom" style="height:4px; margin-bottom:0px;">&nbsp</p>
+
+<!-- Place cursor -->
+<script language="JavaScript" type="text/javascript">
+  <!-- // First input field on page
+  document.mainform.cn.focus();
+  -->
+</script>