allow to package templates like applicatons in an own directory, cleand up index.php a bit

This commit is contained in:
Ralf Becker 2010-06-02 09:20:55 +00:00
parent 8589cdd874
commit 472a420231
4 changed files with 47 additions and 40 deletions

View File

@ -1,15 +1,14 @@
<?php <?php
/**************************************************************************\ /**
* eGroupWare * * EGroupware index page
* http://www.egroupware.org * *
* -------------------------------------------- * * Starts all applications using $_GET[menuaction]
* This program is free software; you can redistribute it and/or modify it * *
* under the terms of the GNU General Public License as published by the * * @link http://www.egroupware.org
* Free Software Foundation; either version 2 of the License, or (at your * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* option) any later version. * * @package api
\**************************************************************************/ * @version $Id$
*/
/* $Id$ */
// forward for not existing or empty header to setup // forward for not existing or empty header to setup
if(!file_exists('header.inc.php') || !filesize('header.inc.php')) if(!file_exists('header.inc.php') || !filesize('header.inc.php'))
@ -72,17 +71,17 @@ if (isset($_GET['tz']))
// Check if we are using windows or normal webpage // Check if we are using windows or normal webpage
$windowed = false; $windowed = false;
$tpl_info = EGW_SERVER_ROOT . '/phpgwapi/templates/' . basename($GLOBALS['egw_info']['user']['preferences']['common']['template_set']) . '/setup/setup.inc.php'; $tpl_info = EGW_SERVER_ROOT . '/phpgwapi/templates/' . basename($GLOBALS['egw_info']['user']['preferences']['common']['template_set']) . '/setup/setup.inc.php';
if (!file_exists($tpl_info))
{
$tpl_info = EGW_SERVER_ROOT.'/'.basename($GLOBALS['egw_info']['user']['preferences']['common']['template_set']) . '/setup/setup.inc.php';
}
if(@file_exists($tpl_info)) if(@file_exists($tpl_info))
{ {
include_once($tpl_info); include_once($tpl_info);
// if(isset($template_info)) if($GLOBALS['egw_info']['template'][$GLOBALS['egw_info']['user']['preferences']['common']['template_set']]['windowed'])
// { {
if($GLOBALS['egw_info']['template'][$GLOBALS['egw_info']['user']['preferences']['common']['template_set']]['windowed']) $windowed = true;
{ }
$windowed = true;
}
// }
} }
if($app == 'home' && !$api_requested && !$windowed) if($app == 'home' && !$api_requested && !$windowed)
@ -93,13 +92,13 @@ if($app == 'home' && !$api_requested && !$windowed)
} }
if($GLOBALS['egw_info']['user']['preferences']['common']['default_app'] && !$hasupdates) if($GLOBALS['egw_info']['user']['preferences']['common']['default_app'] && !$hasupdates)
{ {
$GLOBALS['egw']->redirect(egw_framework::index($GLOBALS['egw_info']['user']['preferences']['common']['default_app'])); egw::redirect(egw_framework::index($GLOBALS['egw_info']['user']['preferences']['common']['default_app']));
} }
else else
{ {
$GLOBALS['egw']->redirect_link('/home/index.php'); egw::redirect_link('/home/index.php');
} }
} }
if($windowed && $_GET['cd'] == 'yes') if($windowed && $_GET['cd'] == 'yes')
{ {
@ -108,9 +107,8 @@ if($windowed && $_GET['cd'] == 'yes')
'nonavbar' => False, 'nonavbar' => False,
'currentapp' => 'eGroupWare' 'currentapp' => 'eGroupWare'
); );
$GLOBALS['egw']->common->egw_header(); common::egw_header();
$GLOBALS['egw']->common->egw_footer(); common::egw_footer();
} }
else else
{ {
@ -166,6 +164,6 @@ else
if(!isset($GLOBALS['egw_info']['nofooter'])) if(!isset($GLOBALS['egw_info']['nofooter']))
{ {
$GLOBALS['egw']->common->egw_footer(); common::egw_footer();
} }
} }

View File

@ -644,8 +644,7 @@ class common
* get template dir of an application * get template dir of an application
* *
* @param $appname appication name optional can be derived from $GLOBALS['egw_info']['flags']['currentapp']; * @param $appname appication name optional can be derived from $GLOBALS['egw_info']['flags']['currentapp'];
* @static * @return string|boolean dir or false if no dir is found
* @return string/boolean dir or false if no dir is found
*/ */
static function get_tpl_dir($appname = '') static function get_tpl_dir($appname = '')
{ {
@ -675,7 +674,9 @@ class common
{ {
$GLOBALS['egw_info']['server']['template_set'] = $GLOBALS['egw_info']['user']['preferences']['common']['template_set']; $GLOBALS['egw_info']['server']['template_set'] = $GLOBALS['egw_info']['user']['preferences']['common']['template_set'];
} }
if (!file_exists(EGW_SERVER_ROOT.'/phpgwapi/templates/'.$GLOBALS['egw_info']['server']['template_set'].'/class.'. if (!file_exists(EGW_SERVER_ROOT.'/phpgwapi/templates/'.basename($GLOBALS['egw_info']['server']['template_set']).'/class.'.
$GLOBALS['egw_info']['server']['template_set'].'_framework.inc.php') &&
!file_exists(EGW_SERVER_ROOT.'/'.basename($GLOBALS['egw_info']['server']['template_set']).'/inc/class.'.
$GLOBALS['egw_info']['server']['template_set'].'_framework.inc.php')) $GLOBALS['egw_info']['server']['template_set'].'_framework.inc.php'))
{ {
$GLOBALS['egw_info']['server']['template_set'] = 'idots'; $GLOBALS['egw_info']['server']['template_set'] = 'idots';
@ -691,10 +692,7 @@ class common
{ {
return $tpldir_default; return $tpldir_default;
} }
else return False;
{
return False;
}
} }
/** /**

View File

@ -618,10 +618,13 @@ class egw_minimal
case 'framework': case 'framework':
// setup the new eGW framework (template sets) // setup the new eGW framework (template sets)
$class = $GLOBALS['egw_info']['server']['template_set'].'_framework'; $class = $GLOBALS['egw_info']['server']['template_set'].'_framework';
require_once($file=EGW_INCLUDE_ROOT.'/phpgwapi/templates/'.$GLOBALS['egw_info']['server']['template_set'].'/class.'.$class.'.inc.php'); if (!class_exists($class)) // first try to autoload the class
if (!in_array($file,(array)$_SESSION['egw_required_files']))
{ {
$_SESSION['egw_required_files'][] = $file; // automatic load the used framework class, when the object get's restored require_once($file=EGW_INCLUDE_ROOT.'/phpgwapi/templates/'.$GLOBALS['egw_info']['server']['template_set'].'/class.'.$class.'.inc.php');
if (!in_array($file,(array)$_SESSION['egw_required_files']))
{
$_SESSION['egw_required_files'][] = $file; // automatic load the used framework class, when the object get's restored
}
} }
break; break;
case 'template': // need to be instancated for the current app case 'template': // need to be instancated for the current app

View File

@ -45,6 +45,13 @@ abstract class egw_framework
*/ */
var $template; var $template;
/**
* Path relative to EGW_SERVER_ROOT for the template directory
*
* @var string
*/
var $template_dir;
/** /**
* true if $this->header() was called * true if $this->header() was called
* *
@ -73,6 +80,7 @@ abstract class egw_framework
{ {
$GLOBALS['egw']->framework = $this; $GLOBALS['egw']->framework = $this;
} }
$this->template_dir = '/phpgwapi/templates/'.$template;
} }
/** /**
@ -647,14 +655,14 @@ abstract class egw_framework
} }
} }
#_debug_array($GLOBALS['egw_info']['user']['preferences']['common']); #_debug_array($GLOBALS['egw_info']['user']['preferences']['common']);
$theme_css = '/phpgwapi/templates/'.$this->template.'/css/'.$GLOBALS['egw_info']['user']['preferences']['common']['theme'].'.css'; $theme_css = $this->template_dir.'/css/'.$GLOBALS['egw_info']['user']['preferences']['common']['theme'].'.css';
if(!file_exists(EGW_SERVER_ROOT.$theme_css)) if(!file_exists(EGW_SERVER_ROOT.$theme_css))
{ {
$theme_css = '/phpgwapi/templates/'.$this->template.'/css/'.$this->template.'.css'; $theme_css = $this->template_dir.'/css/'.$this->template.'.css';
} }
$theme_css = $GLOBALS['egw_info']['server']['webserver_url'] . $theme_css .'?'.filemtime(EGW_SERVER_ROOT.$theme_css); $theme_css = $GLOBALS['egw_info']['server']['webserver_url'] . $theme_css .'?'.filemtime(EGW_SERVER_ROOT.$theme_css);
$print_css = '/phpgwapi/templates/'.$this->template.'/print.css'; $print_css = $this->template_dir.'/print.css';
if(!file_exists(EGW_SERVER_ROOT.$print_css)) if(!file_exists(EGW_SERVER_ROOT.$print_css))
{ {
$print_css = '/phpgwapi/templates/idots/print.css'; $print_css = '/phpgwapi/templates/idots/print.css';