"fixed topmenu to not query every info again"

This commit is contained in:
Ralf Becker 2008-08-06 07:33:36 +00:00
parent 7beddb6e3b
commit 38bb1c75ca

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* eGW idots template * eGW idots template
* *
* @link http://www.egroupware.org * @link http://www.egroupware.org
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de> rewrite in 12/2006 * @author Ralf Becker <RalfBecker-AT-outdoor-training.de> rewrite in 12/2006
* @author Pim Snel <pim@lingewoud.nl> author of the idots template set * @author Pim Snel <pim@lingewoud.nl> author of the idots template set
@ -14,9 +14,9 @@
/** /**
* eGW idots template * eGW idots template
* *
* The idots_framework class draws the default idots template. It's a phplib template based template-set. * The idots_framework class draws the default idots template. It's a phplib template based template-set.
* *
* Other phplib template based template-sets should extend (not copy!) this class and reimplement methods they which to change. * Other phplib template based template-sets should extend (not copy!) this class and reimplement methods they which to change.
*/ */
class idots_framework extends egw_framework class idots_framework extends egw_framework
@ -45,15 +45,15 @@ class idots_framework extends egw_framework
* @var boolean * @var boolean
*/ */
var $navbar_done; var $navbar_done;
/** /**
* Contains array with linked icons in the topmenu * Contains array with linked icons in the topmenu
* *
* @var mixed * @var mixed
* @access public * @access public
*/ */
var $topmenu_icon_arr = array(); var $topmenu_icon_arr = array();
/** /**
* Constructor * Constructor
* *
@ -64,11 +64,11 @@ class idots_framework extends egw_framework
{ {
$GLOBALS['egw_info']['flags']['include_xajax'] = True; $GLOBALS['egw_info']['flags']['include_xajax'] = True;
$this->egw_framework($template); // call the constructor of the extended class $this->egw_framework($template); // call the constructor of the extended class
$this->tplsav2 =& new tplsavant2(); $this->tplsav2 =& new tplsavant2();
$this->tplsav2->set_tpl_path(EGW_SERVER_ROOT.SEP.'phpgwapi'.SEP.'templates'.SEP.'idots'); $this->tplsav2->set_tpl_path(EGW_SERVER_ROOT.SEP.'phpgwapi'.SEP.'templates'.SEP.'idots');
} }
/** /**
* Returns the html-header incl. the opening body tag * Returns the html-header incl. the opening body tag
* *
@ -78,26 +78,26 @@ class idots_framework extends egw_framework
{ {
// add a content-type header to overwrite an existing default charset in apache (AddDefaultCharset directiv) // add a content-type header to overwrite an existing default charset in apache (AddDefaultCharset directiv)
header('Content-type: text/html; charset='.$GLOBALS['egw']->translation->charset()); header('Content-type: text/html; charset='.$GLOBALS['egw']->translation->charset());
// catch error echo'ed before the header, ob_start'ed in the header.inc.php // catch error echo'ed before the header, ob_start'ed in the header.inc.php
$content = ob_get_contents(); $content = ob_get_contents();
ob_end_clean(); ob_end_clean();
// the instanciation of the template has to be here and not in the constructor, // the instanciation of the template has to be here and not in the constructor,
// as the old Template class has problems if restored from the session (php-restore) // as the old Template class has problems if restored from the session (php-restore)
$this->tpl =& new Template(EGW_TEMPLATE_DIR); $this->tpl =& new Template(EGW_TEMPLATE_DIR);
$this->tpl->set_file(array('_head' => 'head.tpl')); $this->tpl->set_file(array('_head' => 'head.tpl'));
$this->tpl->set_block('_head','head'); $this->tpl->set_block('_head','head');
$this->tpl->set_var($this->_get_header()); $this->tpl->set_var($this->_get_header());
$content .= $this->tpl->fp('out','head'); $content .= $this->tpl->fp('out','head');
$this->sidebox_content = ''; // need to be emptied here, as the object get's stored in the session $this->sidebox_content = ''; // need to be emptied here, as the object get's stored in the session
return $content; return $content;
} }
/** /**
* Returns the html from the body-tag til the main application area (incl. opening div tag) * Returns the html from the body-tag til the main application area (incl. opening div tag)
* *
@ -105,17 +105,11 @@ class idots_framework extends egw_framework
*/ */
function navbar() function navbar()
{ {
if($GLOBALS['egw_info']['user']['preferences']['common']['show_general_menu'] != 'sidebox')
{
$GLOBALS['egw']->hooks->process('topmenu_info');
$content = $this->topmenu();
}
$this->navbar_done = true; $this->navbar_done = true;
// the navbar // the navbar
$this->tpl->set_file(array('navbar' => 'navbar.tpl')); $this->tpl->set_file(array('navbar' => 'navbar.tpl'));
$this->tpl->set_block('navbar','extra_blocks_header','extra_block_header'); $this->tpl->set_block('navbar','extra_blocks_header','extra_block_header');
$this->tpl->set_block('navbar','extra_block_row','extra_block_row'); $this->tpl->set_block('navbar','extra_block_row','extra_block_row');
$this->tpl->set_block('navbar','extra_block_row_raw','extra_block_row_raw'); $this->tpl->set_block('navbar','extra_block_row_raw','extra_block_row_raw');
@ -126,28 +120,35 @@ class idots_framework extends egw_framework
$this->tpl->set_block('navbar','sidebox_hide_footer','sidebox_hide_footer'); $this->tpl->set_block('navbar','sidebox_hide_footer','sidebox_hide_footer');
$this->tpl->set_block('navbar','appbox','appbox'); $this->tpl->set_block('navbar','appbox','appbox');
$this->tpl->set_block('navbar','navbar_footer','navbar_footer'); $this->tpl->set_block('navbar','navbar_footer','navbar_footer');
$this->tpl->set_block('navbar','upper_tab_block','upper_tabs'); $this->tpl->set_block('navbar','upper_tab_block','upper_tabs');
$this->tpl->set_block('navbar','app_icon_block','app_icons'); $this->tpl->set_block('navbar','app_icon_block','app_icons');
$this->tpl->set_block('navbar','app_title_block','app_titles'); $this->tpl->set_block('navbar','app_title_block','app_titles');
$this->tpl->set_block('navbar','app_extra_block','app_extra_icons'); $this->tpl->set_block('navbar','app_extra_block','app_extra_icons');
$this->tpl->set_block('navbar','app_extra_icons_div'); $this->tpl->set_block('navbar','app_extra_icons_div');
$this->tpl->set_block('navbar','app_extra_icons_icon'); $this->tpl->set_block('navbar','app_extra_icons_icon');
$this->tpl->set_block('navbar','navbar_header','navbar_header'); $this->tpl->set_block('navbar','navbar_header','navbar_header');
$apps = $this->_get_navbar_apps(); $apps = $this->_get_navbar_apps();
$vars = $this->_get_navbar($apps); $vars = $this->_get_navbar($apps);
if($GLOBALS['egw_info']['user']['preferences']['common']['show_general_menu'] != 'sidebox')
{
$GLOBALS['egw']->hooks->process('topmenu_info');
$content = $this->topmenu($vars,$apps);
$vars['current_users'] = $vars['quick_add'] = $vars['user_info']='';
}
$this->tpl->set_var($vars); $this->tpl->set_var($vars);
$content .= $this->tpl->fp('out','navbar_header'); $content .= $this->tpl->fp('out','navbar_header');
// general (app-unspecific) sidebox menu // general (app-unspecific) sidebox menu
if($GLOBALS['egw_info']['user']['preferences']['common']['show_general_menu'] == 'sidebox') if($GLOBALS['egw_info']['user']['preferences']['common']['show_general_menu'] == 'sidebox')
//if($GLOBALS['egw_info']['user']['preferences']['common']['show_general_sideboxmenu']!='no') //if($GLOBALS['egw_info']['user']['preferences']['common']['show_general_sideboxmenu']!='no')
{ {
$menu_title = lang('General Menu'); $menu_title = lang('General Menu');
$file['Home'] = $apps['home']['url']; $file['Home'] = $apps['home']['url'];
if($GLOBALS['egw_info']['user']['apps']['preferences']) if($GLOBALS['egw_info']['user']['apps']['preferences'])
{ {
@ -167,22 +168,22 @@ class idots_framework extends egw_framework
); );
$this->sidebox('',$menu_title,$file); $this->sidebox('',$menu_title,$file);
} }
$GLOBALS['egw']->hooks->single('sidebox_menu',$GLOBALS['egw_info']['flags']['currentapp']); $GLOBALS['egw']->hooks->single('sidebox_menu',$GLOBALS['egw_info']['flags']['currentapp']);
if($this->sidebox_content) if($this->sidebox_content)
{ {
if($GLOBALS['egw_info']['user']['preferences']['common']['auto_hide_sidebox']) if($GLOBALS['egw_info']['user']['preferences']['common']['auto_hide_sidebox'])
{ {
$this->tpl->set_var('lang_show_menu',lang('show menu')); $this->tpl->set_var('lang_show_menu',lang('show menu'));
$content .= $this->tpl->parse('out','sidebox_hide_header'); $content .= $this->tpl->parse('out','sidebox_hide_header');
$content .= $this->sidebox_content; // content from calls to $this->sidebox $content .= $this->sidebox_content; // content from calls to $this->sidebox
$content .= $this->tpl->parse('out','sidebox_hide_footer'); $content .= $this->tpl->parse('out','sidebox_hide_footer');
$var['sideboxcolstart']=''; $var['sideboxcolstart']='';
$this->tpl->set_var($var); $this->tpl->set_var($var);
$content .= $this->tpl->parse('out','appbox'); $content .= $this->tpl->parse('out','appbox');
$var['remove_padding'] = 'style="padding-left:0px;"'; $var['remove_padding'] = 'style="padding-left:0px;"';
@ -191,9 +192,9 @@ class idots_framework extends egw_framework
else else
{ {
$GLOBALS['phpgw']->preferences->read_repository(); $GLOBALS['phpgw']->preferences->read_repository();
$prefs = array(); $prefs = array();
if ($GLOBALS['egw_info']['user']['preferences']['common']) if ($GLOBALS['egw_info']['user']['preferences']['common'])
{ {
$sideboxwidth = $GLOBALS['egw_info']['user']['preferences']['common']['idotssideboxwidth']; $sideboxwidth = $GLOBALS['egw_info']['user']['preferences']['common']['idotssideboxwidth'];
@ -202,32 +203,32 @@ class idots_framework extends egw_framework
{ {
$sideboxwidth = 203; $sideboxwidth = 203;
} }
$var['menu_link'] = ''; $var['menu_link'] = '';
$var['sideboxcolstart'] = '<td id="tdSidebox" valign="top"><div id="thesideboxcolumn" style="width:'.$sideboxwidth.'px">'; $var['sideboxcolstart'] = '<td id="tdSidebox" valign="top"><div id="thesideboxcolumn" style="width:'.$sideboxwidth.'px">';
$var['sideboxcolstart'] .= '<div id="sideresize"></div>'; $var['sideboxcolstart'] .= '<div id="sideresize"></div>';
$var['remove_padding'] = ''; $var['remove_padding'] = '';
$this->tpl->set_var($var); $this->tpl->set_var($var);
$content .= $this->tpl->parse('out','appbox'); $content .= $this->tpl->parse('out','appbox');
$content .= $this->sidebox_content; $content .= $this->sidebox_content;
$var['sideboxcolend'] = '</div></td>'; $var['sideboxcolend'] = '</div></td>';
$this->tplsav2->assign('sideboxwidth', $sideboxwidth); $this->tplsav2->assign('sideboxwidth', $sideboxwidth);
$GLOBALS['egw_info']['flags']['need_footer'] .= $this->tplsav2->fetch('sidebox_dhtml.tpl.php'); $GLOBALS['egw_info']['flags']['need_footer'] .= $this->tplsav2->fetch('sidebox_dhtml.tpl.php');
} }
} }
else else
{ {
$var['sideboxcolend']=''; $var['sideboxcolend']='';
} }
$this->tpl->set_var($var); $this->tpl->set_var($var);
$content .= $this->tpl->parse('out','navbar_footer'); $content .= $this->tpl->parse('out','navbar_footer');
// depricated (!) application header, if not disabled // depricated (!) application header, if not disabled
// ToDo: check if it can be removed // ToDo: check if it can be removed
if(!@$GLOBALS['egw_info']['flags']['noappheader'] && @isset($_GET['menuaction'])) if(!@$GLOBALS['egw_info']['flags']['noappheader'] && @isset($_GET['menuaction']))
@ -241,16 +242,16 @@ class idots_framework extends egw_framework
ob_end_clean(); ob_end_clean();
} }
} }
// hook after navbar // hook after navbar
ob_start(); ob_start();
$GLOBALS['egw']->hooks->process('after_navbar'); $GLOBALS['egw']->hooks->process('after_navbar');
$content .= ob_get_contents(); $content .= ob_get_contents();
ob_end_clean(); ob_end_clean();
return $content; return $content;
} }
/** /**
* displays a login screen * displays a login screen
* *
@ -259,13 +260,13 @@ class idots_framework extends egw_framework
function login_screen($extra_vars) function login_screen($extra_vars)
{ {
$tmpl =& new Template($GLOBALS['egw_info']['server']['template_dir']); $tmpl =& new Template($GLOBALS['egw_info']['server']['template_dir']);
$tmpl->set_file(array('login_form' => 'login.tpl')); $tmpl->set_file(array('login_form' => 'login.tpl'));
$tmpl->set_var('lang_message',$GLOBALS['loginscreenmessage']); $tmpl->set_var('lang_message',$GLOBALS['loginscreenmessage']);
$last_loginid = $_COOKIE['last_loginid']; $last_loginid = $_COOKIE['last_loginid'];
if($GLOBALS['egw_info']['server']['show_domain_selectbox']) if($GLOBALS['egw_info']['server']['show_domain_selectbox'])
{ {
foreach($GLOBALS['egw_domain'] as $domain => $data) foreach($GLOBALS['egw_domain'] as $domain => $data)
@ -281,23 +282,23 @@ class idots_framework extends egw_framework
{ {
/* trick to make domain section disapear */ /* trick to make domain section disapear */
$tmpl->set_block('login_form','domain_selection'); $tmpl->set_block('login_form','domain_selection');
$tmpl->set_var('domain_selection',$GLOBALS['egw_info']['user']['domain'] ? $tmpl->set_var('domain_selection',$GLOBALS['egw_info']['user']['domain'] ?
html::input_hidden('logindomain',$GLOBALS['egw_info']['user']['domain']) : ''); html::input_hidden('logindomain',$GLOBALS['egw_info']['user']['domain']) : '');
if($last_loginid !== '') if($last_loginid !== '')
{ {
reset($GLOBALS['egw_domain']); reset($GLOBALS['egw_domain']);
list($default_domain) = each($GLOBALS['egw_domain']); list($default_domain) = each($GLOBALS['egw_domain']);
if($_COOKIE['last_domain'] != $default_domain && !empty($_COOKIE['last_domain'])) if($_COOKIE['last_domain'] != $default_domain && !empty($_COOKIE['last_domain']))
{ {
$last_loginid .= '@' . $_COOKIE['last_domain']; $last_loginid .= '@' . $_COOKIE['last_domain'];
} }
} }
} }
$config_reg = config::read('registration'); $config_reg = config::read('registration');
if($config_reg['enable_registration'] == 'True') if($config_reg['enable_registration'] == 'True')
{ {
if ($config_reg['register_link'] == 'True') if ($config_reg['register_link'] == 'True')
@ -312,7 +313,7 @@ class idots_framework extends egw_framework
{ {
$lostid_link='&nbsp;<a href="'. $GLOBALS['egw']->link('/registration/index.php','menuaction=registration.uireg.lostid_step1_ask_email&lang_code='.$_GET['lang']). '">'.lang('Lost Login Id').'</a><br/>'; $lostid_link='&nbsp;<a href="'. $GLOBALS['egw']->link('/registration/index.php','menuaction=registration.uireg.lostid_step1_ask_email&lang_code='.$_GET['lang']). '">'.lang('Lost Login Id').'</a><br/>';
} }
/* if at least one option of "registration" is activated display the registration section */ /* if at least one option of "registration" is activated display the registration section */
if($config_reg['register_link'] == 'True' || $config_reg['lostpassword_link'] == 'True' || $config_reg['lostid_link'] == 'True') if($config_reg['register_link'] == 'True' || $config_reg['lostpassword_link'] == 'True' || $config_reg['lostid_link'] == 'True')
{ {
@ -329,19 +330,19 @@ class idots_framework extends egw_framework
$tmpl->set_var('registration',''); $tmpl->set_var('registration','');
} }
} }
$tmpl->set_var('login_url', $GLOBALS['egw_info']['server']['webserver_url'] . '/login.php' . $extra_vars); $tmpl->set_var('login_url', $GLOBALS['egw_info']['server']['webserver_url'] . '/login.php' . $extra_vars);
$tmpl->set_var('version',$GLOBALS['egw_info']['server']['versions']['phpgwapi']); $tmpl->set_var('version',$GLOBALS['egw_info']['server']['versions']['phpgwapi']);
$tmpl->set_var('cd',check_logoutcode($_GET['cd'])); $tmpl->set_var('cd',check_logoutcode($_GET['cd']));
$tmpl->set_var('cookie',$last_loginid); $tmpl->set_var('cookie',$last_loginid);
$tmpl->set_var('lang_username',lang('username')); $tmpl->set_var('lang_username',lang('username'));
$tmpl->set_var('lang_password',lang('password')); $tmpl->set_var('lang_password',lang('password'));
$tmpl->set_var('lang_login',lang('login')); $tmpl->set_var('lang_login',lang('login'));
$tmpl->set_var('website_title', $GLOBALS['egw_info']['server']['site_title']); $tmpl->set_var('website_title', $GLOBALS['egw_info']['server']['site_title']);
$tmpl->set_var('template_set',$this->template); $tmpl->set_var('template_set',$this->template);
if (substr($GLOBALS['egw_info']['server']['login_logo_file'],0,4) == 'http') if (substr($GLOBALS['egw_info']['server']['login_logo_file'],0,4) == 'http')
{ {
$var['logo_file'] = $GLOBALS['egw_info']['server']['login_logo_file']; $var['logo_file'] = $GLOBALS['egw_info']['server']['login_logo_file'];
@ -357,7 +358,7 @@ class idots_framework extends egw_framework
} }
$var['logo_title'] = $GLOBALS['egw_info']['server']['login_logo_title']?$GLOBALS['egw_info']['server']['login_logo_title']:'www.eGroupWare.org'; $var['logo_title'] = $GLOBALS['egw_info']['server']['login_logo_title']?$GLOBALS['egw_info']['server']['login_logo_title']:'www.eGroupWare.org';
$tmpl->set_var($var); $tmpl->set_var($var);
/* language section if activated in site config */ /* language section if activated in site config */
if (@$GLOBALS['egw_info']['server']['login_show_language_selection']) if (@$GLOBALS['egw_info']['server']['login_show_language_selection'])
{ {
@ -372,12 +373,12 @@ class idots_framework extends egw_framework
$tmpl->set_block('login_form','language_select'); $tmpl->set_block('login_form','language_select');
$tmpl->set_var('language_select',''); $tmpl->set_var('language_select','');
} }
/********************************************************\ /********************************************************\
* Check if authentification via cookies is allowed * * Check if authentification via cookies is allowed *
* and place a time selectbox, how long cookie is valid * * and place a time selectbox, how long cookie is valid *
\********************************************************/ \********************************************************/
if($GLOBALS['egw_info']['server']['allow_cookie_auth']) if($GLOBALS['egw_info']['server']['allow_cookie_auth'])
{ {
$tmpl->set_block('login_form','remember_me_selection'); $tmpl->set_block('login_form','remember_me_selection');
@ -398,34 +399,34 @@ class idots_framework extends egw_framework
$tmpl->set_var('remember_me_selection',''); $tmpl->set_var('remember_me_selection','');
} }
$tmpl->set_var('autocomplete', ($GLOBALS['egw_info']['server']['autocomplete_login'] ? 'autocomplete="off"' : '')); $tmpl->set_var('autocomplete', ($GLOBALS['egw_info']['server']['autocomplete_login'] ? 'autocomplete="off"' : ''));
$GLOBALS['egw']->js->set_onload('document.login_form.login.focus();'); $GLOBALS['egw']->js->set_onload('document.login_form.login.focus();');
$this->render($tmpl->fp('loginout','login_form'),false,false); $this->render($tmpl->fp('loginout','login_form'),false,false);
} }
/** /**
* displays a login denied message * displays a login denied message
*/ */
function denylogin_screen() function denylogin_screen()
{ {
$tmpl =& new Template($GLOBALS['egw_info']['server']['template_dir']); $tmpl =& new Template($GLOBALS['egw_info']['server']['template_dir']);
$tmpl->set_file(array( $tmpl->set_file(array(
'login_form' => 'login_denylogin.tpl' 'login_form' => 'login_denylogin.tpl'
)); ));
$tmpl->set_var(array( $tmpl->set_var(array(
'template_set' => 'default', 'template_set' => 'default',
'deny_msg' => lang('Oops! You caught us in the middle of system maintainance.'). 'deny_msg' => lang('Oops! You caught us in the middle of system maintainance.').
'<br />'.lang('Please, check back with us shortly.'), '<br />'.lang('Please, check back with us shortly.'),
)); ));
$this->render($tmpl->fp('loginout','login_form'),false,false); $this->render($tmpl->fp('loginout','login_form'),false,false);
} }
/** /**
* Get navbar as array to eg. set as vars for a template (from idots' navbar.inc.php) * Get navbar as array to eg. set as vars for a template (from idots' navbar.inc.php)
* *
* Reimplemented so set the vars for the navbar itself (uses $this->tpl and the blocks a and b) * Reimplemented so set the vars for the navbar itself (uses $this->tpl and the blocks a and b)
* *
* @internal PHP5 protected * @internal PHP5 protected
@ -435,14 +436,7 @@ class idots_framework extends egw_framework
function _get_navbar($apps) function _get_navbar($apps)
{ {
$var = parent::_get_navbar($apps); $var = parent::_get_navbar($apps);
if($GLOBALS['egw_info']['user']['preferences']['common']['show_general_menu'] != 'sidebox')
{
$var['current_users'] = '';
$var['quick_add'] = '';
$var['user_info']='';
}
if($GLOBALS['egw_info']['user']['preferences']['common']['click_or_onmouseover'] == 'onmouseover') if($GLOBALS['egw_info']['user']['preferences']['common']['click_or_onmouseover'] == 'onmouseover')
{ {
$var['show_menu_event'] = 'onMouseOver'; $var['show_menu_event'] = 'onMouseOver';
@ -451,11 +445,11 @@ class idots_framework extends egw_framework
{ {
$var['show_menu_event'] = 'onClick'; $var['show_menu_event'] = 'onClick';
} }
if($GLOBALS['egw_info']['user']['userid'] == 'anonymous') if($GLOBALS['egw_info']['user']['userid'] == 'anonymous')
{ {
$config_reg = config::read('registration'); $config_reg = config::read('registration');
$this->tpl->set_var(array( $this->tpl->set_var(array(
'url' => $GLOBALS['egw']->link('/logout.php'), 'url' => $GLOBALS['egw']->link('/logout.php'),
'title' => lang('Login'), 'title' => lang('Login'),
@ -469,12 +463,12 @@ class idots_framework extends egw_framework
)); ));
} }
} }
if (!($max_icons=$GLOBALS['egw_info']['user']['preferences']['common']['max_icons'])) if (!($max_icons=$GLOBALS['egw_info']['user']['preferences']['common']['max_icons']))
{ {
$max_icons = 30; $max_icons = 30;
} }
if($GLOBALS['egw_info']['user']['preferences']['common']['start_and_logout_icons'] == 'no') if($GLOBALS['egw_info']['user']['preferences']['common']['start_and_logout_icons'] == 'no')
{ {
$tdwidth = 100 / $max_icons; $tdwidth = 100 / $max_icons;
@ -484,7 +478,7 @@ class idots_framework extends egw_framework
$tdwidth = 100 / ($max_icons+1); // +1 for logout $tdwidth = 100 / ($max_icons+1); // +1 for logout
} }
$this->tpl->set_var('tdwidth',round($tdwidth)); $this->tpl->set_var('tdwidth',round($tdwidth));
// not shown in the navbar // not shown in the navbar
foreach($apps as $app => $app_data) foreach($apps as $app => $app_data)
{ {
@ -492,7 +486,7 @@ class idots_framework extends egw_framework
($app != 'home' || $GLOBALS['egw_info']['user']['preferences']['common']['start_and_logout_icons'] != 'no')) ($app != 'home' || $GLOBALS['egw_info']['user']['preferences']['common']['start_and_logout_icons'] != 'no'))
{ {
$this->tpl->set_var($app_data); $this->tpl->set_var($app_data);
if($i < $max_icons) if($i < $max_icons)
{ {
$this->tpl->set_var($app_data); $this->tpl->set_var($app_data);
@ -523,7 +517,7 @@ class idots_framework extends egw_framework
$var['lang_close'] = lang('Close'); $var['lang_close'] = lang('Close');
$var['lang_show_more_apps'] = lang('show_more_apps'); $var['lang_show_more_apps'] = lang('show_more_apps');
} }
if ($GLOBALS['egw_info']['user']['preferences']['common']['start_and_logout_icons'] != 'no' && if ($GLOBALS['egw_info']['user']['preferences']['common']['start_and_logout_icons'] != 'no' &&
$GLOBALS['egw_info']['user']['userid'] != 'anonymous') $GLOBALS['egw_info']['user']['userid'] != 'anonymous')
{ {
$this->tpl->set_var($apps['logout']); $this->tpl->set_var($apps['logout']);
@ -536,35 +530,35 @@ class idots_framework extends egw_framework
$this->tpl->fp('app_titles','app_title_block',true); $this->tpl->fp('app_titles','app_title_block',true);
} }
} }
if($GLOBALS['egw_info']['user']['preferences']['common']['navbar_format'] == 'icons') if($GLOBALS['egw_info']['user']['preferences']['common']['navbar_format'] == 'icons')
{ {
$var['app_titles'] = '<td colspan="'.$max_icons.'">&nbsp;</td>'; $var['app_titles'] = '<td colspan="'.$max_icons.'">&nbsp;</td>';
} }
return $var; return $var;
} }
/** /**
* Add menu items to the topmenu template class to be displayed * Add menu items to the topmenu template class to be displayed
* *
* @param string $app application name * @param array $app application data
* @param mixed $alt_label string with alternative menu item label default value = null * @param mixed $alt_label string with alternative menu item label default value = null
* @param string $urlextra string with alternate additional code inside <a>-tag * @param string $urlextra string with alternate additional code inside <a>-tag
* @access protected * @access protected
* @return void * @return void
*/ */
function _add_topmenu_item($app,$alt_label=null) function _add_topmenu_item(array $app_data,$alt_label=null)
{ {
$_item['url'] = $this->apps[$app]['url']; $_item['url'] = $app_data['url'];
$_item['urlextra'] = $this->apps[$app]['target']; $_item['urlextra'] = $app_data['target'];
$_item['label'] = ($alt_label?$alt_label:$this->apps[$app]['title']); $_item['label'] = ($alt_label?$alt_label:$app_data['title']);
$this->tplsav2->menuitems[$app] = $_item; $this->tplsav2->menuitems[$app_data['name']] = $_item;
$this->tplsav2->icon_or_star = $GLOBALS['egw_info']['server']['webserver_url'] . '/phpgwapi/templates/'.$this->template.'/images'.'/orange-ball.png'; $this->tplsav2->icon_or_star = $GLOBALS['egw_info']['server']['webserver_url'] . '/phpgwapi/templates/'.$this->template.'/images'.'/orange-ball.png';
} }
/** /**
* Add info items to the topmenu template class to be displayed * Add info items to the topmenu template class to be displayed
* *
* @param string $content html of item * @param string $content html of item
* @access protected * @access protected
* @return void * @return void
@ -573,50 +567,50 @@ class idots_framework extends egw_framework
{ {
$this->tplsav2->menuinfoitems[] = $content; $this->tplsav2->menuinfoitems[] = $content;
} }
/** /**
* Display the string with html of the topmenu if its enabled * Display the string with html of the topmenu if its enabled
* *
* @return void * @param array $vars
* @param array $apps
* @return string
*/ */
function topmenu() function topmenu(array &$vars,array &$apps)
{ {
$this->tplsav2->menuitems = array(); $this->tplsav2->menuitems = array();
$this->tplsav2->menuinfoitems = array(); $this->tplsav2->menuinfoitems = array();
$this->apps = $this->_get_navbar_apps(); $this->_add_topmenu_item($apps['home']);
$this->_add_topmenu_item('home');
if($GLOBALS['egw_info']['user']['apps']['preferences']) if($GLOBALS['egw_info']['user']['apps']['preferences'])
{ {
$this->_add_topmenu_item('preferences'); $this->_add_topmenu_item($apps['preferences']);
} }
if($GLOBALS['egw_info']['user']['apps']['manual'] && $this->apps['manual']) if($GLOBALS['egw_info']['user']['apps']['manual'] && isset($apps['manual']))
{ {
$this->_add_topmenu_item('manual'); $this->_add_topmenu_item($apps['manual']);
} }
//$this->_add_topmenu_item('about',lang('About %1',$GLOBALS['egw_info']['apps'][$GLOBALS['egw_info']['flags']['currentapp']]['title'])); //$this->_add_topmenu_item($apps['about'],lang('About %1',$GLOBALS['egw_info']['apps'][$GLOBALS['egw_info']['flags']['currentapp']]['title']));
$this->_add_topmenu_item('logout'); $this->_add_topmenu_item($apps['logout']);
$this->tplsav2->assign('info_icons',$this->topmenu_icon_arr); $this->tplsav2->assign('info_icons',$this->topmenu_icon_arr);
if($GLOBALS['egw_info']['user']['apps']['notifications']) if($GLOBALS['egw_info']['user']['apps']['notifications'])
{ {
$this->_add_topmenu_info_item($this->_get_notification_bell()); $this->_add_topmenu_info_item($this->_get_notification_bell());
} }
$this->_add_topmenu_info_item($this->_user_time_info()); $this->_add_topmenu_info_item($vars['user_info']);
$this->_add_topmenu_info_item($this->_current_users()); $this->_add_topmenu_info_item($vars['current_users']);
$this->_add_topmenu_info_item($this->_get_quick_add()); $this->_add_topmenu_info_item($vars['quick_add']);
return $this->tplsav2->fetch('topmenu.tpl.php'); return $this->tplsav2->fetch('topmenu.tpl.php');
} }
/** /**
* called by hooks to add an icon in the topmenu info location * called by hooks to add an icon in the topmenu info location
* *
* @param string $id unique element id * @param string $id unique element id
* @param string $icon_src src of the icon image. Make sure this nog height then 18pixels * @param string $icon_src src of the icon image. Make sure this nog height then 18pixels
* @param string $iconlink where the icon links to * @param string $iconlink where the icon links to
@ -631,15 +625,15 @@ class idots_framework extends egw_framework
$icon_arr['blink'] = $blink; $icon_arr['blink'] = $blink;
$icon_arr['link'] = $iconlink; $icon_arr['link'] = $iconlink;
$icon_arr['image'] = $icon_src; $icon_arr['image'] = $icon_src;
if(!is_null($tooltip)) if(!is_null($tooltip))
{ {
$icon_arr['tooltip'] = html::tooltip($tooltip); $icon_arr['tooltip'] = html::tooltip($tooltip);
} }
$this->topmenu_icon_arr[]=$icon_arr; $this->topmenu_icon_arr[]=$icon_arr;
} }
/** /**
* Returns the html from the closing div of the main application area to the closing html-tag * Returns the html from the closing div of the main application area to the closing html-tag
* *
@ -649,25 +643,25 @@ class idots_framework extends egw_framework
{ {
static $footer_done; static $footer_done;
if ($footer_done++) return; // prevent multiple footers, not sure we still need this (RalfBecker) if ($footer_done++) return; // prevent multiple footers, not sure we still need this (RalfBecker)
if (!isset($GLOBALS['egw_info']['flags']['nofooter']) || !$GLOBALS['egw_info']['flags']['nofooter']) if (!isset($GLOBALS['egw_info']['flags']['nofooter']) || !$GLOBALS['egw_info']['flags']['nofooter'])
{ {
// get the (depricated) application footer // get the (depricated) application footer
$content = $this->_get_app_footer(); $content = $this->_get_app_footer();
// run the hook navbar_end // run the hook navbar_end
// ToDo: change to return the content // ToDo: change to return the content
ob_start(); ob_start();
$GLOBALS['egw']->hooks->process('navbar_end'); $GLOBALS['egw']->hooks->process('navbar_end');
$content .= ob_get_contents(); $content .= ob_get_contents();
ob_end_clean(); ob_end_clean();
// eg. javascript, which need to be at the end of the page // eg. javascript, which need to be at the end of the page
if ($GLOBALS['egw_info']['flags']['need_footer']) if ($GLOBALS['egw_info']['flags']['need_footer'])
{ {
$content .= $GLOBALS['egw_info']['flags']['need_footer']; $content .= $GLOBALS['egw_info']['flags']['need_footer'];
} }
// do the template sets footer, former parse_navbar_end function // do the template sets footer, former parse_navbar_end function
// this closes the application area AND renders the closing body- and html-tag // this closes the application area AND renders the closing body- and html-tag
if ($this->navbar_done) if ($this->navbar_done)
@ -683,7 +677,7 @@ class idots_framework extends egw_framework
return $content; return $content;
} }
} }
/** /**
* Parses one sidebox menu and add's the html to $this->sidebox_content for later use by $this->navbar * Parses one sidebox menu and add's the html to $this->sidebox_content for later use by $this->navbar
* *
@ -697,7 +691,7 @@ class idots_framework extends egw_framework
{ {
$this->tpl->set_var('lang_title',$menu_title); $this->tpl->set_var('lang_title',$menu_title);
$this->sidebox_content .= $this->tpl->fp('out','extra_blocks_header'); $this->sidebox_content .= $this->tpl->fp('out','extra_blocks_header');
foreach($file as $text => $url) foreach($file as $text => $url)
{ {
$this->sidebox_content .= $this->_sidebox_menu_item($url,$text); $this->sidebox_content .= $this->_sidebox_menu_item($url,$text);
@ -705,7 +699,7 @@ class idots_framework extends egw_framework
$this->sidebox_content .= $this->tpl->parse('out','extra_blocks_footer'); $this->sidebox_content .= $this->tpl->parse('out','extra_blocks_footer');
} }
} }
/** /**
* Return a sidebox menu item * Return a sidebox menu item
* *
@ -720,11 +714,11 @@ class idots_framework extends egw_framework
{ {
return $this->tpl->parse('out','extra_block_spacer'); return $this->tpl->parse('out','extra_block_spacer');
} }
if (strtolower($item_text) == 'grant access' && $GLOBALS['egw_info']['server']['deny_user_grants_access']) if (strtolower($item_text) == 'grant access' && $GLOBALS['egw_info']['server']['deny_user_grants_access'])
{ {
return; return;
} }
$var['icon_or_star']='<img class="sideboxstar" src="'.$GLOBALS['egw_info']['server']['webserver_url'] . '/phpgwapi/templates/'.$this->template.'/images'.'/orange-ball.png" width="9" height="9" alt="ball"/>'; $var['icon_or_star']='<img class="sideboxstar" src="'.$GLOBALS['egw_info']['server']['webserver_url'] . '/phpgwapi/templates/'.$this->template.'/images'.'/orange-ball.png" width="9" height="9" alt="ball"/>';
$var['target'] = ''; $var['target'] = '';
if(is_array($item_link)) if(is_array($item_link))
@ -738,10 +732,10 @@ class idots_framework extends egw_framework
$var['item_link'] = $item_link['link']; $var['item_link'] = $item_link['link'];
if ($item_link['target']) if ($item_link['target'])
{ {
if (strpos($item_link['target'], 'target=') !== false) if (strpos($item_link['target'], 'target=') !== false)
{ {
$var['target'] = $item_link['target']; $var['target'] = $item_link['target'];
} }
else else
{ {
$var['target'] = ' target="' . $item_link['target'] . '"'; $var['target'] = ' target="' . $item_link['target'] . '"';
@ -754,7 +748,7 @@ class idots_framework extends egw_framework
$var['item_link'] = $item_link; $var['item_link'] = $item_link;
} }
$this->tpl->set_var($var); $this->tpl->set_var($var);
$block = 'extra_block_row'; $block = 'extra_block_row';
if ($var['item_link'] === False) if ($var['item_link'] === False)
{ {