X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=include%2Fclass_tabs.inc;h=3be731dcbcb0e780a173b2b7981b974353e8ba62;hb=2dd0610553775a07cd552ccdcbbf650a18794a8c;hp=0b422970e096bb4337ba4bf2e8bb2b7928a421d2;hpb=17666efa71a03351d74fa3089faf9b137b63d479;p=gosa.git diff --git a/include/class_tabs.inc b/include/class_tabs.inc index 0b422970e..3be731dcb 100644 --- a/include/class_tabs.inc +++ b/include/class_tabs.inc @@ -38,10 +38,19 @@ class tabs /* 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); @@ -76,12 +85,14 @@ class tabs $display= $this->gen_tabs(); /* Show object */ - $display.= "\n"; + $display.= "
\n"; $display.= "
\n"; $obj= $this->by_object[$this->current]; $display.= $obj->execute(); - $this->by_object[$this->current]= $obj; + if (is_php4()){ + $this->by_object[$this->current]= $obj; + } /* Footer for tabbed dialog */ $display.= "
"; @@ -97,7 +108,9 @@ class tabs $obj= $this->by_object[$this->last]; $obj->save_object (); - $this->by_object[$this->last]= $obj; + if (is_php4()){ + $this->by_object[$this->last]= $obj; + } } /* Skip if curent and last are the same object */ @@ -113,9 +126,10 @@ class tabs $this->current, "Saving (current)"); $obj->save_object (); - $this->by_object[$this->current]= $obj; + if (is_php4()){ + $this->by_object[$this->current]= $obj; + } } - } function gen_tabs() @@ -138,7 +152,7 @@ class tabs } /* Paint tab */ - $display.= ""; + $display.= ""; /* Shorten string if its too long for the tab headers*/ $title= _($name); @@ -149,11 +163,18 @@ class tabs /* nobr causes w3c warnings so we use   to keep the tab name in one line */ $title= preg_replace("/ /"," ",$title); + /* Take care about notifications */ + if ($this->by_object[$class]->pl_notify){ + $notify= "id=\"notify\""; + } else { + $notify= ""; + } + if ($_SESSION['js']==FALSE){ - $display.= "
$title$titleacl= $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() @@ -208,24 +222,36 @@ class tabs function check($ignore_account= FALSE) { - $this->save_object(TRUE); - $messages= array(); - - /* Check all plugins */ - foreach ($this->by_object as $key => $obj){ - if ($obj->is_account || $ignore_account || $obj->ignore_account){ - @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, - $key, "Checking"); - - $messages= $obj->check(); - if (count($messages)){ - $this->current= $key; - break; - } - } - } - - return ($messages); + $this->save_object(TRUE); + $messages= array(); + + $current_set = FALSE; + + /* Check all plugins */ + foreach ($this->by_object as $key => $obj){ + if ($obj->is_account || $ignore_account || $obj->ignore_account){ + @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__,$key, "Checking"); + + $msg = $obj->check(); + + if (is_php4()){ + $this->by_object[$key]= $obj; + } + if (count($msg)){ + $this->by_object[$key]->pl_notify= TRUE; + if(!$current_set){ + $current_set = TRUE; + $this->current= $key; + $messages = $msg; + } + }else{ + $this->by_object[$key]->pl_notify= FALSE; + } + }else{ + $this->by_object[$key]->pl_notify= FALSE; + } + } + return ($messages); } function save($ignore_account= FALSE) @@ -255,7 +281,9 @@ class tabs $key, "Adapting"); $obj->parent= &$this; $obj->adapt_from_template($dn); - $this->by_object[$key]= $obj; + if (is_php4()){ + $this->by_object[$key]= $obj; + } } } @@ -276,20 +304,23 @@ 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); } @@ -320,5 +351,5 @@ class tabs } } - +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>