X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=include%2Fclass_tabs.inc;h=8e2d42ca4861c77d3dd7305f14edb0c3610c4ce8;hb=67f6e5cf3fb83f779420c6b9a1451b9f7b6b7c65;hp=a4ef265c766d48a5cd5d84e21629de45a7f06c15;hpb=40fc655fc551f57d6463e4265ce39e72ebbc1132;p=gosa.git diff --git a/include/class_tabs.inc b/include/class_tabs.inc index a4ef265c7..8e2d42ca4 100644 --- a/include/class_tabs.inc +++ b/include/class_tabs.inc @@ -24,6 +24,7 @@ class tabs var $config; var $acl; var $is_template; + var $is_new= FALSE; var $last= ""; var $current= ""; @@ -32,23 +33,32 @@ class tabs var $by_object= array(); var $SubDialog = false; - function tabs($config, $data, $dn) + function tabs($config, $data, $dn, $acl_category= "") { /* Save dn */ $this->dn= $dn; $this->config= $config; + + $baseobject= NULL; foreach ($data as $tab){ $this->by_name[$tab['CLASS']]= $tab['NAME']; - $this->by_object[$tab['CLASS']]= new $tab['CLASS']($this->config, $this->dn); + + if ($baseobject == NULL){ + $baseobject= new $tab['CLASS']($this->config, $this->dn); + $this->by_object[$tab['CLASS']]= $baseobject; + } else { + $this->by_object[$tab['CLASS']]= new $tab['CLASS']($this->config, $this->dn, $baseobject); + } + $this->by_object[$tab['CLASS']]->parent= &$this; + $this->by_object[$tab['CLASS']]->set_acl_category($acl_category); /* Initialize current */ if ($this->current == ""){ $this->current= $tab['CLASS']; } } - } function execute() @@ -141,10 +151,13 @@ class tabs /* Shorten string if its too long for the tab headers*/ $title= _($name); - if (mb_strlen($title, 'UTF-8') > 14){ - $title= mb_substr($title,0, 12, 'UTF-8')."..."; + if (mb_strlen($title, 'UTF-8') > 28){ + $title= mb_substr($title,0, 25, 'UTF-8')."..."; } - + + /* nobr causes w3c warnings so we use   to keep the tab name in one line */ + $title= preg_replace("/ /"," ",$title); + if ($_SESSION['js']==FALSE){ $display.= "
acl= $acl; - - /* Setup for all plugins */ - foreach ($this->by_object as $key => $obj){ - $sacl= get_module_permission($acl, "$key", $this->dn); - $obj->acl= $sacl; - $this->by_object[$key]= $obj; - } + /* Look for attribute in ACL */ + trigger_error("Don't use tabs::set_acl() its obsolete."); } function delete() @@ -272,27 +278,30 @@ class tabs */ function getCopyDialog() { - $ret = ""; - $this->SubDialog = false; - foreach ($this->by_object as $key => $obj){ - if($obj->is_account){ - $tmp = $this->by_object[$key]->getCopyDialog(); - if($tmp['status'] == "SubDialog"){ - $this->SubDialog = true; - return($tmp['string']); - }else{ - $ret .= $tmp['string']; - } - } - } - return($ret); + $ret = ""; + $this->SubDialog = false; + foreach ($this->by_object as $key => $obj){ + if($obj->is_account){ + $tmp = $this->by_object[$key]->getCopyDialog(); + if($tmp['status'] == "SubDialog"){ + $this->SubDialog = true; + return($tmp['string']); + }else{ + if(!empty($tmp['string'])){ + $ret .= $tmp['string']; + $ret .= "

 

"; + } + } + } + } + return($ret); } function addSpecialTabs() { $this->by_name['acl']= _("ACL"); - $this->by_object['acl']= new acl($this->config, $this->dn); + $this->by_object['acl']= new acl($this->config, $this, $this->dn); $this->by_object['acl']->parent= &$this; $this->by_name['reference']= _("References"); $this->by_object['reference']= new reference($this->config, $this->dn); @@ -300,6 +309,21 @@ class tabs } -} + function set_acl_base($base= "") + { + /* Update reference, transfer variables */ + $first= ($base == ""); + foreach ($this->by_object as $name => $obj){ + if ($first){ + $first= FALSE; + $base= $obj->acl_base; + } else { + $obj->set_acl_base($base); + $this->by_object[$name]= $obj; + } + } + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>