X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=include%2Fclass_tabs.inc;h=c543065b22dee48da42e42047218e2cc3695155f;hb=6bc38be280f4dd4b0386b2c256749934cb37e86e;hp=c71fa94920e3988584c1371a0642647d7e7d1145;hpb=1a1cd62339c5c255de11b0d5b78649e067e7bc34;p=gosa.git diff --git a/include/class_tabs.inc b/include/class_tabs.inc index c71fa9492..c543065b2 100644 --- a/include/class_tabs.inc +++ b/include/class_tabs.inc @@ -33,239 +33,242 @@ class tabs var $by_object= array(); var $SubDialog = false; - function tabs($config, $data, $dn, $acl_category= "") + 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']; - - 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']; - } - } + /* Save dn */ + $this->dn= $dn; + $this->config= &$config; + + $baseobject= NULL; + + foreach ($data as &$tab){ + $this->by_name[$tab['CLASS']]= $tab['NAME']; + + 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() { - /* Rotate current to last */ - $this->last= $this->current; - - /* Look for pressed tab button */ - foreach ($this->by_object as $class => $obj){ - if (isset($_POST[$class]) || (isset($_POST['arg']) && $_POST['arg'] == "$class")){ - $this->current= $class; - break; - } - } - - /* Save last tab object */ - if ($this->last == $this->current){ - $this->save_object(TRUE); - } else { - $this->save_object(FALSE); - } - - /* Build tab line */ - $display= $this->gen_tabs(); - - /* Show object */ - $display.= "\n"; - $display.= "
\n"; - - $obj= $this->by_object[$this->current]; - $display.= $obj->execute(); - $this->by_object[$this->current]= $obj; - - /* Footer for tabbed dialog */ - $display.= "
"; - return ($display); + /* Rotate current to last */ + $this->last= $this->current; + + /* Look for pressed tab button */ + foreach ($this->by_object as $class => &$obj){ + if (isset($_POST[$class]) || (isset($_POST['arg']) && $_POST['arg'] == "$class")){ + $this->current= $class; + break; + } + } + + /* Save last tab object */ + if ($this->last == $this->current){ + $this->save_object(TRUE); + } else { + $this->save_object(FALSE); + } + + /* Build tab line */ + $display= $this->gen_tabs(); + + /* Show object */ + $display.= "\n"; + $display.= "
\n"; + + $display.= $this->by_object[$this->current]->execute(); + + /* Footer for tabbed dialog */ + $display.= "
"; + + return ($display); } function save_object($save_current= FALSE) { - /* Save last tab */ - if ($this->last != ""){ - @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, - $this->last, "Saving"); - - $obj= $this->by_object[$this->last]; - $obj->save_object (); - $this->by_object[$this->last]= $obj; - } + /* Save last tab */ + if ($this->last != ""){ + @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, + $this->last, "Saving"); - /* Skip if curent and last are the same object */ - if ($this->last == $this->current){ - return; - } + $this->by_object[$this->last]->save_object (); + } - $obj= $this->by_object[$this->current]; - $this->disabled= $obj->parent->disabled; + /* Skip if curent and last are the same object */ + if ($this->last == $this->current){ + return; + } - if ($save_current){ - @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, - $this->current, "Saving (current)"); + $obj= @$this->by_object[$this->current]; + $this->disabled= $obj->parent->disabled; - $obj->save_object (); - $this->by_object[$this->current]= $obj; - } + if ($save_current){ + @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, + $this->current, "Saving (current)"); + $obj->save_object (); + } } function gen_tabs() { - $display= ""; - $display.= ""; - $index= 0; - $style= array("tab_left", "tab_active", "tab_near_active", "tab_right"); - foreach ($this->by_name as $class => $name){ - - /* Activate right tabs with style "tab_right" - Activate near current with style "tab_near_active" */ - if ($index == 2 || $index == 1){ - $index++; - } - - /* Activate current tab with style "tab_active " */ - if ($class == $this->current){ - $index++; - } - - /* Paint tab */ - $display.= "
"; - - /* Shorten string if its too long for the tab headers*/ - $title= _($name); - 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.= "
"; - - return($display); + $display= ""; + $display.= ""; + $index= 0; + $style= array("tab_left", "tab_active", "tab_near_active", "tab_right"); + foreach ($this->by_name as $class => $name){ + + /* Activate right tabs with style "tab_right" + Activate near current with style "tab_near_active" */ + if ($index == 2 || $index == 1){ + $index++; + } + + /* Activate current tab with style "tab_active " */ + if ($class == $this->current){ + $index++; + } + + /* Paint tab */ + $display.= "
"; + + /* Shorten string if its too long for the tab headers*/ + $title= _($name); + 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); + + /* Take care about notifications */ + if ($this->by_object[$class]->pl_notify){ + $notify= "id=\"notify\""; + } else { + $notify= ""; + } + + if ($_SESSION['js']==FALSE){ + $display.= "
"; + + return($display); } function set_acl($acl) { - /* Set local acl */ - $this->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() { - /* Check if all plugins will ACK for deletion */ - foreach (array_reverse($this->by_object) as $key => $obj){ - $reason= $obj->allow_remove(); - if ($reason != ""){ - print_red(sprintf(_("Delete process has been canceled by plugin '%s': %s"), $key, $reason)); - return; - } - } - - /* Delete for all plugins */ - foreach (array_reverse($this->by_object) as $key => $obj){ - $obj->remove_from_parent(); - } + /* Check if all plugins will ACK for deletion */ + foreach (array_reverse($this->by_object) as $key => $obj){ + $reason= $obj->allow_remove(); + if ($reason != ""){ + print_red(sprintf(_("Delete process has been canceled by plugin '%s': %s"), $key, $reason)); + return; + } + } + + /* Delete for all plugins */ + foreach (array_reverse($this->by_object) as $obj){ + $obj->remove_from_parent(); + } } function password_change_needed() { - /* Ask all plugins for needed password changes */ - foreach ($this->by_object as $key => $obj){ - if ($obj->password_change_needed()){ - return TRUE; - } - } - - return FALSE; + /* Ask all plugins for needed password changes */ + foreach ($this->by_object as &$obj){ + if ($obj->password_change_needed()){ + return TRUE; + } + } + + return FALSE; } 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 (count($msg)){ + $obj->pl_notify= TRUE; + if(!$current_set){ + $current_set = TRUE; + $this->current= $key; + $messages = $msg; + } + }else{ + $obj->pl_notify= FALSE; + } + }else{ + $obj->pl_notify= FALSE; + } + } + return ($messages); } function save($ignore_account= FALSE) { - /* Save all plugins */ - foreach ($this->by_object as $key => $obj){ - @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, - $key, "Saving"); - - $obj->dn= $this->dn; - - if ($obj->is_account || $ignore_account || $obj->ignore_account){ - if ($obj->save() == 1){ - return (1); - } - } else { - $obj->remove_from_parent(); - } - } - return (0); + /* Save all plugins */ + foreach ($this->by_object as $key => &$obj){ + @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, + $key, "Saving"); + + $obj->dn= $this->dn; + + if ($obj->is_account || $ignore_account || $obj->ignore_account){ + if ($obj->save() == 1){ + return (1); + } + } else { + $obj->remove_from_parent(); + } + } + return (0); } function adapt_from_template($dn) { - foreach ($this->by_object as $key => $obj){ - @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, - $key, "Adapting"); - $obj->parent= &$this; - $obj->adapt_from_template($dn); - $this->by_object[$key]= $obj; - } + foreach ($this->by_object as $key => &$obj){ + @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, + $key, "Adapting"); + $obj->parent= &$this; + $obj->adapt_from_template($dn); + } } @@ -273,9 +276,9 @@ class tabs */ function saveCopyDialog() { - foreach ($this->by_object as $key => $obj){ + foreach ($this->by_object as &$obj){ if($obj->is_account){ - $this->by_object[$key]->saveCopyDialog(); + $obj->saveCopyDialog(); } } } @@ -285,49 +288,51 @@ 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 &$obj){ + if($obj->is_account){ + $tmp = $obj->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, $this->dn); - $this->by_object['acl']->parent= &$this; - $this->by_name['reference']= _("References"); - $this->by_object['reference']= new reference($this->config, $this->dn); - $this->by_object['reference']->parent= &$this; + $this->by_name['acl']= _("ACL"); + $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); + $this->by_object['reference']->parent= &$this; } 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; - } - } + /* Update reference, transfer variables */ + $first= ($base == ""); + foreach ($this->by_object as &$obj){ + if ($first){ + $first= FALSE; + $base= $obj->acl_base; + } else { + $obj->set_acl_base($base); + } + } } } - +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>