summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: a51e60a)
raw | patch | inline | side by side (parent: a51e60a)
author | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Wed, 3 May 2006 08:11:26 +0000 (08:11 +0000) | ||
committer | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Wed, 3 May 2006 08:11:26 +0000 (08:11 +0000) |
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@3187 594d385d-05f5-0310-b6e9-bd551577e9d8
plugins/admin/fai/class_faiSummaryTab.inc | [new file with mode: 0644] | patch | blob |
plugins/admin/fai/faiSummary.tpl | [new file with mode: 0644] | patch | blob |
diff --git a/plugins/admin/fai/class_faiSummaryTab.inc b/plugins/admin/fai/class_faiSummaryTab.inc
--- /dev/null
@@ -0,0 +1,549 @@
+<?php
+
+class faiSummaryTab extends plugin{
+
+ var $Classes = array();
+ var $Release = "";
+ var $Releases= array();
+ var $Result = array();
+ var $objs = array();
+ var $ObjectList = "";
+
+ var $FAIclass;
+ var $attributes = array("FAIclass");
+
+ function faiSummaryTab($config,$dn)
+ {
+ plugin::plugin($config,$dn);
+
+ $this->objs = array( "FAIscript" => array( "Image" =>"images/fai_script.png",
+ "Tree" =>"ou=scripts,") ,
+ "FAIhook" => array( "Image" =>"images/fai_hook.png" ,
+ "Tree" =>"ou=hooks,"),
+ "FAIvariable" => array( "Image" =>"images/fai_variable.png",
+ "Tree" =>"ou=variables,") ,
+ "FAItemplate" => array( "Image" =>"images/fai_template.png",
+ "Tree" =>"ou=templates,") ,
+ "FAIpartitionTable" => array( "Image" =>"images/fai_partitionTable.png",
+ "Tree" =>"ou=disk,") ,
+ "FAIpackageList" => array( "Image" =>"images/fai_packages.png",
+ "Tree" =>"ou=packages,") ,
+ "FAIprofile" => array( "Image" =>"images/fai_profile.png",
+ "Tree" =>"ou=profiles,"));
+
+ if(count($this->FAIclass)){
+
+
+ /* Set Release */
+ if(preg_match("/:/",$this->FAIclass)){
+ if(preg_match("/:/",$this->FAIclass)){
+ $this->Release =trim( preg_replace("/^.*:/","",$this->FAIclass));
+ }
+ }
+
+ /* Get classes */
+ $tmp = split("\ ", preg_replace("/:.*$/","",$this->FAIclass));
+ foreach($tmp as $class){
+ if(!empty($class)){
+ $this->Classes[]= trim($class);
+ }
+ }
+ }
+
+ $_SESSION['faiSummaryTab']['UniqueID'] = 0;
+
+ /* Get Releases */
+ $ldap = $config->get_ldap_link();
+ $ldap->cd($config->current['BASE']);
+ $ldap->search("(&(objectClass=organizationalUnit)(objectClass=FAIbranch))",array("ou"));
+ while($attrs = $ldap->fetch()){
+ if(preg_match("/,ou=systems,/i",$attrs['dn'])){
+ $this->Releases [ $attrs['ou'][0]] = $attrs['dn'];
+ }
+ }
+
+ foreach($this->Classes as $class){
+ $this->Result[$class] = $this->resolveObject($class);
+ }
+ }
+
+ function execute()
+ {
+ $display = "";
+ $smarty = get_smarty();
+ $this->ObjectList = $this->createSummary($this->Result);
+ $smarty->assign("objectList",$this->ObjectList);
+ $display.= $smarty->fetch (get_template_path('faiSummary.tpl', TRUE, dirname(__FILE__)));
+ return($display);
+ }
+
+ /* Create output of our resolved objects */
+ function createSummary($data)
+ {
+ $str ="<table style='width:100%;background:#F5F5F5;'> ";
+
+ /* walkt throigh all classes */
+ foreach($data as $key => $entry){
+
+ /* Check every kind of object type */
+ foreach($this->objs as $ok => $obj){
+
+ /* check of objectType is used */
+ if(isset($entry[$ok])){
+ $str.="<tr><td style='padding-left:10px;'>";
+
+ /* Show open or close icon */
+ if( ! $entry[$ok]['Open'] ){
+ $str .= "<input type='image' class='center' src='images/expand.png' name='open_".$entry[$ok]['id']."'> ";
+ $str .="<img src='".$obj['Image']."'> ";
+ $str .= "<b>".$entry[$ok]['Name']."</b>";
+ $str .= " ".$entry[$ok]['String1'];
+ }else{
+ $str .= "<input type='image' class='center' src='images/sort_down.png' name='close_".$entry[$ok]['id']."'> ";
+ $str .="<img src='".$obj['Image']."'> ";
+ $str .= "<b>".$entry[$ok]['Name']."</b>";
+ $str .= " ".$entry[$ok]['String1'];
+ if(!empty($entry[$ok]['String2'])){
+ $str .= "</td></tr><tr><td style='padding-left:50px;'>".$entry[$ok]['String2'];
+ }
+
+ if(isset($data[$key][$ok]['data'])){
+ $str.=$this->createSummary($data[$key][$ok]['data']);
+ }
+ }
+ $str .="</td></tr>";
+ }
+ }
+ }
+ $str .="</table>";
+ return($str);
+ }
+
+ /* resolve specified object to append it to our object tree
+ calls prepare_"FAIclass"
+ */
+ function resolveObject($class)
+ {
+ $ldap = $this->config->get_ldap_link();
+ $dn = $this->Releases [$this->Release];
+
+ $res = array();
+
+ foreach($this->objs as $key => $obj){
+ $ldap->ls("(&(objectClass=".$key.")(cn=".$class."))",$obj['Tree'].$dn,array("*"));
+ while($attrs = $ldap->fetch()){
+ switch($key){
+ case "FAIprofile": $tmp = $this->prepare_FAIprofile($attrs);break;
+ case "FAIscript": $tmp = $this->prepare_FAIscript($attrs);break;
+ case "FAIhook": $tmp = $this->prepare_FAIhook($attrs);break;
+ case "FAIvariable": $tmp = $this->prepare_FAIvariable($attrs);break;
+ case "FAItemplate": $tmp = $this->prepare_FAItemplate($attrs);break;
+ case "FAIpackageList": $tmp = $this->prepare_FAIpackageList($attrs);break;
+ case "FAIpartitionTable": $tmp = $this->prepare_FAIpartitionTable($attrs);break;
+ default : $tmp = array(); print_red(sprintf(_("Undefined FAI object '%s'."),$key));
+ }
+ if(isset($tmp['Name'])){
+ $res[$key] = $tmp ;
+ }
+ }
+ }
+ return($res);
+ }
+
+ /* Prepare fai script */
+ function prepare_FAIscript($data)
+ {
+ /* Set basic attributes */
+ $res['Name'] = $data['cn'][0];
+ if(isset($data['description'][0])){
+ $res['String1'] = $data['description'][0];
+ }else{
+ $res['String1'] = "";
+ }
+ $res['Open'] = false;
+ $res['id'] = ($_SESSION['faiSummaryTab']['UniqueID'] ++);
+ $res['Resolved']= true;
+ $res['String2'] = "";
+
+ /* get subentries */
+ $ldap = $this->config->get_ldap_link();
+ $ldap->cd($data['dn']);
+ $ldap->search("(&(objectClass=FAIscriptEntry)(FAIpriority=*))",array("cn","description","FAIpriority"));
+ $scripts = array();
+
+ /* Create an array which is sortable by priority */
+ while($attrs = $ldap->fetch()){
+ $scripts[$attrs['FAIpriority'][0]][] = $attrs;
+ }
+
+ /* Sort by priority */
+ ksort($scripts);
+
+ /* append them to our list */
+ $image = "<image class='center' border=0 src='".$this->objs['FAIscript']['Image']."'> ";
+
+ foreach($scripts as $prio => $script){
+ foreach($script as $attrs){
+ $res['String2'] .="<a href='?plug=".$_GET['plug']."&display=FAIscript&id=".base64_encode($attrs['dn'])."'>";
+ if(isset($attrs['description'][0])){
+ $res['String2'] .= $image.$attrs['FAIpriority'][0]." - ".$attrs['cn'][0]." [".$attrs['description'][0]."]<br>";
+ }else{
+ $res['String2'] .= $image.$attrs['FAIpriority'][0]." - ".$attrs['cn'][0]."<br>";
+ }
+ $res['String2'] .="</a>";
+ }
+ }
+ return($res);
+ }
+
+ /* Prepare fai script */
+ function prepare_FAIpartitionTable($data)
+ {
+ /* Set basic attributes */
+ $res['Name'] = $data['cn'][0];
+ if(isset($data['description'][0])){
+ $res['String1'] = $data['description'][0];
+ }else{
+ $res['String1'] = "";
+ }
+ $res['Open'] = false;
+ $res['id'] = ($_SESSION['faiSummaryTab']['UniqueID'] ++);
+ $res['Resolved']= true;
+ $res['String2'] = "";
+
+ /* get subentries */
+ $ldap = $this->config->get_ldap_link();
+ $ldap->cd($data['dn']);
+ $ldap->search("(objectClass=FAIpartitionDisk)",array("cn","description"));
+ $disks = array();
+
+ /* Create an array which is sortable by priority */
+ while($attrs = $ldap->fetch()){
+ $disks[$attrs['cn'][0]] = $attrs;
+ $disks[$attrs['cn'][0]]['partitions'] = array();
+ }
+
+ /* Sort by priority */
+ foreach($disks as $key => $disk){
+ $ldap->cd($disk['dn']);
+ $ldap->search("(objectClass=FAIpartitionEntry)",array("*"));
+ while($attrs = $ldap->fetch()){
+ if(!isset($attrs['FAIfsOptions'][0])){
+ $attrs['FAIfsOptions'][0] = "";
+ }
+ $disks[$key]['partitions'][$attrs['cn'][0]] = $attrs;
+ }
+ }
+
+
+ $image = "<image class='center' border=0 src='".$this->objs['FAIpartitionTable']['Image']."'> ";
+ foreach($disks as $disk){
+ $res['String2'] .= "<div 'width:100%;padding-left:10px'>";
+ $res['String2'] .= $image."<b>".$disk['cn'][0] ."</b>";
+
+ if(isset($disk['description'][0])){
+ $res['String2'] .= " [".$disk['description'][0]."]" ;
+ }
+ $res['String2'] .= "</div>";
+
+ $res['String2'] .= "<table cellspacing=1 style='background:#FFFFFF;'>";
+ $res['String2'] .= "<tr style='background-color:#BBBBBB;'>";
+ $res['String2'] .= "<td>"._("No.")."</td><td>"._("Name")."</td><td>"._("FS options")."</td>";
+ $res['String2'] .= "<td>"._("Mount options")."</td><td>"._("Size in MB")."</td>";
+ $res['String2'] .= "<td>"._("Mount point")."</td><td>"._("Type")."</td>";
+ $res['String2'] .= "</tr>";
+ $i = 0;
+ foreach($disk['partitions'] as $partition){
+ $i = !$i;
+ if($i){
+ $c = " class='rowxp1'";
+ $d = " class='list1' style='border:0px;'";
+ }else{
+ $c = " class='rowxp0'";
+ $d = " class='list0' style='border:0px;'";
+ }
+
+ $res['String2'] .= "<tr $c style='height:10px;'>";
+ $res['String2'] .= "<td $d>".$partition['FAIpartitionNr'][0]."</td><td $d>".$partition['cn'][0]."</td><td $d>".$partition['FAIfsType'][0]."</td>";
+ $res['String2'] .= "<td $d>".$partition['FAIfsOptions'][0]."</td><td $d>".$partition['FAIpartitionSize'][0]."</td>";
+ $res['String2'] .= "<td $d>".$partition['FAImountPoint'][0]."</td><td $d>".$partition['FAIpartitionType'][0]."</td>";
+ $res['String2'] .= "</tr>";
+ }
+ $res['String2'] .= "</table>";
+ }
+
+ return($res);
+ }
+
+
+ /* Create template entry */
+ function prepare_FAItemplate($data)
+ {
+ /* Set basic attributes */
+ $res['Name'] = $data['cn'][0];
+ if(isset($data['description'][0])){
+ $res['String1'] = $data['description'][0];
+ }else{
+ $res['String1'] = "";
+ }
+ $res['Open'] = false;
+ $res['id'] = ($_SESSION['faiSummaryTab']['UniqueID'] ++);
+ $res['Resolved']= true;
+ $res['String2'] = "";
+
+ /* get subentries */
+ $ldap = $this->config->get_ldap_link();
+ $ldap->cd($data['dn']);
+ $ldap->search("(objectClass=FAItemplateEntry)",array("cn","description"));
+ $scripts = array();
+
+ /* append them to our list */
+ $image = "<image class='center' border=0 src='".$this->objs['FAItemplate']['Image']."'> ";
+
+ /* Create an array which is sortable by priority */
+ while($attrs = $ldap->fetch()){
+ $res['String2'] .="<a href='?plug=".$_GET['plug']."&display=FAItemplate&id=".base64_encode($attrs['dn'])."'>";
+ if(isset($attrs['description'][0])){
+ $res['String2'] .= $image.$attrs['cn'][0]." [".$attrs['description'][0]."]";
+ }else{
+ $res['String2'] .= $image.$attrs['cn'][0];
+ }
+ $res['String2'] .="</a><br>";
+ }
+ return($res);
+ }
+
+
+ /* Create a package list */
+ function prepare_FAIpackageList($data)
+ {
+ /* Set basic attributes */
+ $res['Name'] = $data['cn'][0];
+ if(isset($data['description'][0])){
+ $res['String1'] = $data['description'][0];
+ }else{
+ $res['String1'] = "";
+ }
+ $res['Open'] = false;
+ $res['id'] = ($_SESSION['faiSummaryTab']['UniqueID'] ++);
+ $res['Resolved']= true;
+ $res['String2'] = "";
+
+ /* append them to our list */
+ $image = "<image class='center' border=0 src='".$this->objs['FAIpackageList']['Image']."'> ";
+
+ /* add selected packages to our list */
+ if(isset($data['FAIpackage']['count'])) {
+ unset($data['FAIpackage']['count']);
+ foreach($data['FAIpackage'] as $entry){
+ $res['String2'].= $image.$entry." <br>";
+ }
+ }
+ return($res);
+ }
+
+
+ /* Create a variable entry */
+ function prepare_FAIvariable($data)
+ {
+ /* Set basic attributes */
+ $res['Name'] = $data['cn'][0];
+ if(isset($data['description'][0])){
+ $res['String1'] = $data['description'][0];
+ }else{
+ $res['String1'] = "";
+ }
+ $res['Open'] = false;
+ $res['id'] = ($_SESSION['faiSummaryTab']['UniqueID'] ++);
+ $res['Resolved']= true;
+ $res['String2'] = "";
+
+ /* get subentries */
+ $ldap = $this->config->get_ldap_link();
+ $ldap->cd($data['dn']);
+ $ldap->search("(objectClass=FAIvariableEntry)",array("cn","description","FAIvariableContent"));
+ $scripts = array();
+
+ /* append them to our list */
+ $image = "<image class='center' border=0 src='".$this->objs['FAIvariable']['Image']."'> ";
+
+ /* Create an array which is sortable by priority */
+ while($attrs = $ldap->fetch()){
+ if(isset($attrs['description'][0])){
+ $res['String2'] .= $image.$attrs['cn'][0]." [".$attrs['description'][0]."]";
+ }else{
+ $res['String2'] .= $image.$attrs['cn'][0];
+ }
+ if(isset($attrs['FAIvariableContent'][0])){
+ $res['String2'] .= " \"".$attrs['FAIvariableContent'][0]."\" ";
+ }
+ $res['String2'] .= "<br>";
+
+ }
+ return($res);
+ }
+
+ /* Create a hook entry */
+ function prepare_FAIhook($data)
+ {
+ /* Set basic attributes */
+ $res['Name'] = $data['cn'][0];
+ if(isset($data['description'][0])){
+ $res['String1'] = $data['description'][0];
+ }else{
+ $res['String1'] = "";
+ }
+ $res['Open'] = false;
+ $res['id'] = ($_SESSION['faiSummaryTab']['UniqueID'] ++);
+ $res['Resolved']= true;
+ $res['String2'] = "";
+
+ /* get subentries */
+ $ldap = $this->config->get_ldap_link();
+ $ldap->cd($data['dn']);
+ $ldap->search("(objectClass=FAIhookEntry)",array("cn","description"));
+ $scripts = array();
+
+ /* append them to our list */
+ $image = "<image class='center' border=0 src='".$this->objs['FAIhook']['Image']."'> ";
+
+ /* Create an array which is sortable by priority */
+ while($attrs = $ldap->fetch()){
+ $res['String2'] .="<a href='?plug=".$_GET['plug']."&display=FAIhook&id=".base64_encode($attrs['dn'])."'>";
+ if(isset($attrs['description'][0])){
+ $res['String2'] .= $image.$attrs['cn'][0]." [".$attrs['description'][0]."]<br>";
+ }else{
+ $res['String2'] .= $image.$attrs['cn'][0]."<br>";
+ }
+ $res['String2'] .="</a>";
+ }
+ return($res);
+ }
+
+ /* Create a new Profile entry */
+ function prepare_FAIprofile($data)
+ {
+ /* initialise basics */
+ $res = array();
+ $res['Name'] = $data['cn'][0];
+ if(isset($data['description'][0])){
+ $res['String1'] = $data['description'][0];
+ }else{
+ $res['String1'] = "";
+ }
+ $res['Open'] = false;
+ $res['id'] = ($_SESSION['faiSummaryTab']['UniqueID'] ++);
+ $res['Resolved']= true;
+ $res['String2'] = "";
+
+ /* Append empty data objects named by member classes */
+ $res['data'] = array();
+ if(isset($data['FAIclass'][0])){
+ $tmp = split("\ ",$data['FAIclass'][0]);
+ foreach($tmp as $class){
+ $res['data'][trim($class)] = array();
+ }
+ }
+ return($res);
+ }
+
+
+
+ /* Open the tag with the given id ..
+ so the entries of this tag will be shown */
+ function openTag($data, $id)
+ {
+ /* Walk through objects */
+ if(!count($data)) return(array());
+ foreach($data as $key => $dat){
+
+ /* Check all types of objects (FAIhook, FAIscript ..)*/
+ foreach($this->objs as $ok => $obj){
+
+ /* If this type of object is assigned */
+ if(isset($dat[$ok])){
+
+ /* check given id */
+ if($dat[$ok]['id'] == $id ){
+
+ /* Id was $id so set this leaf to open */
+ $data[$key][$ok]['Open'] = true;
+
+ /* Check if the sub leafs are already readed
+ if not, resolve the classes and append them to our tree */
+ if(isset($dat[$ok]['data'])){
+
+ foreach($data[$key][$ok]['data'] as $key1 => $dat1){
+ if(!count($dat1)){
+ $tmp = $this->resolveObject($key1);
+ foreach($tmp as $r => $e)
+ $data[$key][$ok]['data'][$key1][$r] = $e;
+ }
+ }
+ }
+ }
+ /* Search sub tags for given id $id */
+ if(isset($data[$key][$ok]['data'])){
+ $data[$key][$ok]['data'] = $this->openTag($data[$key][$ok]['data'],$id);
+ }
+ }
+ }
+ }
+ return($data);
+ }
+
+ /* Walk through all tags and close tag with id = $id*/
+ function closeTag($data, $id)
+ {
+ $found = false;
+
+ /* The parameter data is given as specified */
+ // ClassName ['FAIprofile']['data']
+
+ /* Walk through all given classes */
+ foreach($data as $key => $dat){
+
+ /* Walk through all possible objectClasses */
+ foreach($this->objs as $ok => $obj){
+
+ /* If class is set, check if id matches */
+ if(isset($dat[$ok])){
+ if($dat[$ok]['id'] == $id ){
+ $data[$key][$ok]['Open'] = false;
+ }
+
+ /* Check subobjects for $id */
+ if(isset($dat[$ok]['data'])){
+ $data[$key][$ok]['data'] = $this->closeTag( $data[$key][$ok]['data'], $id);
+ }
+ }
+ }
+ }
+ return($data);
+ }
+
+ /* Capture posts, and call opnen close tag */
+ function save_object()
+ {
+ $once = true;
+ foreach($_POST as $name => $value ){
+
+ /* check for open tag request */
+ if(preg_match("/^open_/",$name) && $once){
+ $once = false;
+ $value = preg_replace("/^open_/","",$name);
+ $value = preg_replace("/_.*$/","",$value);
+ $this->Result = $this->openTag($this->Result,$value);
+ }
+ /* Check for close tag request */
+ if(preg_match("/^close_/",$name) && $once){
+ $once = false;
+ $value = preg_replace("/^close_/","",$name);
+ $value = preg_replace("/_.*$/","",$value);
+ $this->Result = $this->closeTag($this->Result,$value);
+ }
+ }
+ }
+}
+// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
+?>
diff --git a/plugins/admin/fai/faiSummary.tpl b/plugins/admin/fai/faiSummary.tpl
--- /dev/null
@@ -0,0 +1,12 @@
+<table summary="" style="width:100%; vertical-align:top; text-align:left; border:1px solid #B0B0B0;" cellpadding=0 cellspacing=0 border=0 rules="cols">
+
+ <tr style="background-color: #E8E8E8; height:26px;font-weight:bold;">
+ <td style="padding:5px;">{t}FAI object tree{/t}</td>
+ </tr>
+ <tr style="background-color: #E8E8E8; ">
+ <td>
+ {$objectList}
+ </td>
+ </tr>
+</table>
+