egroupware/home/index.php

241 lines
7.0 KiB
PHP
Executable File

<?php
/**************************************************************************\
* eGroupWare *
* http://www.egroupware.org *
* The file written by Joseph Engo <jengo@phpgroupware.org> *
* This file modified by Greg Haygood <shrykedude@bellsouth.net> *
* This file modified by Edo van Bruggend <edovanbruggen@raketnet.nl> *
* -------------------------------------------- *
* 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 *
* Free Software Foundation; either version 2 of the License, or (at your *
* option) any later version. *
\**************************************************************************/
/* $Id$ */
/*
** Initializing the home application
*/
$GLOBALS['egw_info'] = array(
'flags' => array(
'noheader' => true,//False,
'nonavbar' => true,//False,
'currentapp' => 'home',
'enable_network_class' => False,
'enable_contacts_class' => False,
'enable_nextmatchs_class' => False,
'include_xajax' => True,
)
);
include('../header.inc.php');
auth::check_password_age('home','index');
$GLOBALS['egw_info']['flags']['nonavbar']=false;
// Display the header which contains all includes etc.
common::egw_header();
/*
** Initializing the template
*/
$GLOBALS['tpl'] = new Template(common::get_tpl_dir('home'));
$GLOBALS['tpl']->set_unknowns('remove');
$GLOBALS['tpl']->set_file(
array(
'home' => 'home.tpl'
)
);
$GLOBALS['tpl']->set_block('home','notify_window','notify_window');
$GLOBALS['tpl']->set_block('home','begin_table','begin_table');
$GLOBALS['tpl']->set_block('home','end_table','end_table');
$GLOBALS['tpl']->set_block('home','begin_row','begin_row');
$GLOBALS['tpl']->set_block('home','end_row','end_row');
$GLOBALS['tpl']->set_block('home','cell','cell');
if ($GLOBALS['egw']->session->session_flags == 'A')
{
if ($_SERVER['HTTP_REFERER'] && strstr($_SERVER['HTTP_REFERER'],'home.php') === False)
{
$GLOBALS['egw']->redirect($_SERVER['HTTP_REFERER']);
}
else
{
// redirect to the login-page, better then giving an empty page
$GLOBALS['egw']->redirect('login.php');
}
exit;
}
/*
** Show the updates
*/
$GLOBALS['egw']->hooks->single('showUpdates','home');
/*
** Display the mainscreen message
*/
translation::add_app('mainscreen');
$greeting = translation::translate('mainscreen_message',false,'');
if($greeting == 'mainscreen_message'|| empty($greeting))
{
translation::add_app('mainscreen','en'); // trying the en one
$greeting = translation::translate('mainscreen_message',false,'');
}
if(!($greeting == 'mainscreen_message'|| empty($greeting)))
{
echo '<div style="text-align: center;">' . $greeting . "</div>\n";
}
/*
** Display the notification window
*/
if (isset($GLOBALS['egw_info']['user']['apps']['notifywindow']) && $GLOBALS['egw_info']['user']['apps']['notifywindow'])
{
$var['link'] = $GLOBALS['egw']->link('/notify.php');
$var['notifywindow'] = lang('Open notify window');
$GLOBALS['tpl']->set_var($var);
$GLOBALS['tpl']->pfp('out','notify_window');
}
if (is_array($GLOBALS['egw_info']['user']['preferences']['portal_order']))
{
$sorted_apps = array();
ksort($GLOBALS['egw_info']['user']['preferences']['portal_order']);
foreach($GLOBALS['egw_info']['user']['preferences']['portal_order'] as $order => $app)
{
$sorted_apps[$app] = $GLOBALS['egw']->applications->id2name((int)$app);
}
}
else
{
$sorted_apps = Array(
'calendar',
'email',
'infolog',
'news_admin'
);
}
// Now add the rest of the user's apps, to make sure we pick up any additions to the home display
foreach($GLOBALS['egw_info']['user']['apps'] as $app)
{
if(!in_array($app['name'], $sorted_apps))
{
$sorted_apps[] = $app['name'];
}
}
// make sure to show only apps user has rights to
$sorted_apps = array_intersect($sorted_apps, array_keys($GLOBALS['egw_info']['user']['apps']));
$portal_oldvarnames = array('mainscreen_showevents', 'homeShowEvents','homeShowLatest','mainscreen_showmail','mainscreen_showbirthdays','mainscreen_show_new_updated');
$neworder = array();
$done = array();
/*
** Display application hooks
**
*/
$GLOBALS['tpl']->pfp('out','begin_table');
$tropen=0;
$tdopen=0;
$lastd = 0;
$numcols = 2;
$curcol = 1;
$searchlist = array();
foreach($sorted_apps as $appname)
{
if((int)$done[$appname] == 1 || empty($appname))
{
continue;
}
$varnames = $portal_oldvarnames;
$varnames[] = 'homepage_display';
foreach($varnames as $varcheck)
{
//echo "$appname:$varcheck=".$GLOBALS['egw_info']['user']['preferences'][$appname][$varcheck]."<br>";
$thisd = (int)$GLOBALS['egw_info']['user']['preferences'][$appname][$varcheck];
if (!$thisd && $GLOBALS['egw_info']['user']['preferences'][$appname][$varcheck]) $thisd = 1;
if($thisd>0)
{
//echo "Found $appname=$_thisd through $varcheck<br>";
break;
}
}
//echo "$appname: $thisd<br>";
if($thisd>0)
{
$searchlist[$appname] = $thisd;
$neworder[] = $appname;
$done[$appname] = 1;
}
}
foreach($neworder as $index => $appname)
{
$thisd = $searchlist[$appname];
//echo "$appname: $thisd<br>";
if((($curcol++>$numcols) || ($thisd==1)) && $tropen==1)
{
$GLOBALS['tpl']->pfp('out','end_row');
$tropen = 0;
//$curcol = 1;
}
if(!$tropen)
{
$GLOBALS['tpl']->pfp('out','begin_row');
$tropen=1;
}
$small = ($thisd>1) && (count($neworder) >= $index + 1) && ($searchlist[$neworder[$index + 1]] > 1 || $searchlist[$neworder[$index - 1]] > 1);
$var['tdwidth'] = $small ? '50' : '100';
$var['colspan'] = $small ? '1' : '2';
ob_start();
$var['content'] = $GLOBALS['egw']->hooks->single('home',$appname);
if (!$var['content'] || $var['content'] == 1) // content has been echoed and not returned
{
$var['content'] = ob_get_contents();
ob_end_clean();
}
$GLOBALS['tpl']->set_var($var);
$GLOBALS['tpl']->pfp('out','cell');
if(($thisd<=1 || ($thisd>1&&$lastd>1)) && $tropen && $var['content'])
{
$GLOBALS['tpl']->pfp('out','end_row');
$tropen = 0;
$lastd = 0;
$curcol = 1;
}
else
{
$lastd = $thisd;
}
}
$GLOBALS['tpl']->pfp('out','end_table');
// Update stored value of order
//_debug_array($neworder);
if(count($neworder)>0)//$GLOBALS['portal_order'])
{
$GLOBALS['egw']->preferences->delete('portal_order');
foreach($neworder as $app_order => $app_name)
{
$app_id = $GLOBALS['egw']->applications->name2id($app_name);
//echo "neworder: $app_order=$app_id:$app_name<br>";
$GLOBALS['egw']->preferences->add('portal_order',$app_order,$app_id);
}
$GLOBALS['egw_info']['user']['preferences'] = $GLOBALS['egw']->preferences->save_repository();
}
//_debug_array($GLOBALS['egw_info']['user']['preferences']);
common::egw_footer();