mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-21 15:33:23 +01:00
applied patch #280 from Sebastian Ebling: * removed the "About ..." menu entry from top and sidebox menu
* mostly rewritten the about.php page (added application list) * changed footer eGroupWare link to about.php * moved manual from application menu to top and sidebox menu preserving its special link target
This commit is contained in:
parent
2dce0de48b
commit
cbca417ee6
507
about.php
507
about.php
@ -1,204 +1,343 @@
|
||||
<?php
|
||||
/**************************************************************************\
|
||||
* eGroupWare *
|
||||
* http://www.egroupware.org *
|
||||
* -------------------------------------------- *
|
||||
* 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. *
|
||||
\**************************************************************************/
|
||||
/**************************************************************************\
|
||||
* eGroupWare *
|
||||
* http://www.egroupware.org *
|
||||
* -------------------------------------------- *
|
||||
* 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$ */
|
||||
/* $Id$ */
|
||||
|
||||
$GLOBALS['egw_info'] = array(
|
||||
'flags' => array(
|
||||
'currentapp' => isset($_GET['app']) && $_GET['app'] != 'eGroupWare' ? $_GET['app'] : 'about',
|
||||
'disable_Template_class' => True,
|
||||
'noheader' => True,
|
||||
)
|
||||
);
|
||||
include('header.inc.php');
|
||||
$GLOBALS['egw_info'] = array(
|
||||
'flags' => array(
|
||||
'currentapp' => isset($_GET['app']) && $_GET['app'] != 'eGroupWare' ? $_GET['app'] : 'about',
|
||||
'disable_Template_class' => True,
|
||||
'noheader' => True,
|
||||
)
|
||||
);
|
||||
include('header.inc.php');
|
||||
|
||||
$app = isset($_GET['app']) && $_GET['app'] != 'eGroupWare' ? basename($_GET['app']) : 'about';
|
||||
// create the about page
|
||||
$aboutPage = new about();
|
||||
|
||||
if ($app)
|
||||
|
||||
class about
|
||||
{
|
||||
/**
|
||||
* template object
|
||||
*/
|
||||
var $tpl;
|
||||
|
||||
/**
|
||||
* constructor of class about
|
||||
* sets template and calls list or detail view
|
||||
*/
|
||||
function about()
|
||||
{
|
||||
if (!($included = $GLOBALS['egw']->hooks->single('about',$app)))
|
||||
{
|
||||
$api_only = !($included = file_exists(EGW_INCLUDE_ROOT . "/$app/setup/setup.inc.php"));
|
||||
// create template object
|
||||
$this->tpl =& CreateObject('phpgwapi.Template', $GLOBALS['egw']->common->get_tpl_dir('phpgwapi'));
|
||||
$this->tpl->set_file(array(
|
||||
'phpgw_about' => 'about.tpl',
|
||||
'phpgw_about_unknown' => 'about_unknown.tpl'
|
||||
));
|
||||
|
||||
$title = isset($GLOBALS['egw_info']['apps'][$_GET['app']]) ? $GLOBALS['egw_info']['apps'][$_GET['app']]['title'] : 'eGroupWare';
|
||||
$GLOBALS['egw_info']['flags']['app_header'] = lang('About %1',$title);
|
||||
$GLOBALS['egw']->common->egw_header();
|
||||
|
||||
// list or detail view
|
||||
$app = isset($_GET['app']) && $_GET['app'] != 'eGroupWare' ? basename($_GET['app']) : 'about';
|
||||
if ($app) {
|
||||
if (!($included = $GLOBALS['egw']->hooks->single('about',$app))) {
|
||||
$detail = $included = file_exists(EGW_INCLUDE_ROOT . "/$app/setup/setup.inc.php");
|
||||
}
|
||||
} else {
|
||||
$detail = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$api_only = True;
|
||||
}
|
||||
|
||||
$tpl =& CreateObject('phpgwapi.Template',$GLOBALS['egw']->common->get_tpl_dir('phpgwapi'));
|
||||
$tpl->set_file(array(
|
||||
'phpgw_about' => 'about.tpl',
|
||||
'phpgw_about_unknown' => 'about_unknown.tpl'
|
||||
));
|
||||
|
||||
$title = isset($GLOBALS['egw_info']['apps'][$app]) ? $GLOBALS['egw_info']['apps'][$app]['title'] : 'eGroupWare';
|
||||
$GLOBALS['egw_info']['flags']['app_header'] = lang('About %1',$title);
|
||||
$GLOBALS['egw']->common->egw_header();
|
||||
|
||||
$tpl->set_block('phpgw_about', 'egroupware','egroupware');
|
||||
$tpl->set_block('phpgw_about', 'application','application');
|
||||
|
||||
if ($included)
|
||||
{
|
||||
$tpl->set_var('phpgw_app_about', about_app());
|
||||
$tpl->pparse('phpgw_about', 'application', True);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($api_only)
|
||||
{
|
||||
$tpl->set_var('phpgw_logo',$GLOBALS['egw']->common->image('phpgwapi','logo.gif'));
|
||||
$tpl->set_var('phpgw_version',lang('eGroupWare API version %1',$GLOBALS['egw_info']['server']['versions']['phpgwapi']));
|
||||
$tpl->set_var('phpgw_message',lang('%1eGroupWare%2 is a multi-user, web-based groupware suite written in %3PHP%4.',
|
||||
'<a href="http://www.eGroupWare.org" target="_blank">','</a>','<a href="http://www.php.net" target="_blank">','</a>'));
|
||||
$tpl->pparse('out', 'egroupware');
|
||||
|
||||
$tpl->set_var('phpgw_app_about',about_template());
|
||||
$tpl->pparse('phpgw_about', 'application', True);
|
||||
if ($detail) {
|
||||
$this->_detailView();
|
||||
} else {
|
||||
$this->_listView();
|
||||
}
|
||||
else
|
||||
{
|
||||
$tpl->set_var('app_header',$app);
|
||||
|
||||
$tpl->pparse('out','phpgw_about_unknown');
|
||||
}
|
||||
$GLOBALS['egw']->common->egw_footer();
|
||||
}
|
||||
|
||||
$GLOBALS['egw']->common->egw_footer();
|
||||
|
||||
function about_app()
|
||||
|
||||
/**
|
||||
* output of list view
|
||||
*/
|
||||
function _listView()
|
||||
{
|
||||
// eGW info
|
||||
$this->tpl->set_block('phpgw_about', 'egroupware','egroupware');
|
||||
$this->tpl->set_var('phpgw_logo',$GLOBALS['egw']->common->image('phpgwapi','logo.gif'));
|
||||
$this->tpl->set_var('phpgw_version',lang('eGroupWare API version %1',$GLOBALS['egw_info']['server']['versions']['phpgwapi']));
|
||||
$this->tpl->set_var('phpgw_message',lang('%1eGroupWare%2 is a multi-user, web-based groupware suite written in %3PHP%4.',
|
||||
'<a href="http://www.eGroupWare.org" target="_blank">','</a>','<a href="http://www.php.net" target="_blank">','</a>'));
|
||||
$this->tpl->pparse('overview', 'egroupware');
|
||||
|
||||
// app_list_tablestart
|
||||
$this->tpl->set_block('phpgw_about', 'app_list_tablestart','app_list_tablestart');
|
||||
$this->tpl->set_var('phpgw_app_listinfo', lang('List of your available applications'));
|
||||
$this->tpl->set_var('phpgw_about_th_name', lang('name'));
|
||||
$this->tpl->set_var('phpgw_about_th_author', lang('author'));
|
||||
$this->tpl->set_var('phpgw_about_th_maintainer', lang('maintainer'));
|
||||
$this->tpl->set_var('phpgw_about_th_version', lang('version'));
|
||||
$this->tpl->set_var('phpgw_about_th_license', lang('license'));
|
||||
$this->tpl->set_var('phpgw_about_th_details', lang('details'));
|
||||
$this->tpl->pparse('phpgw_about', 'app_list_tablestart', true);
|
||||
|
||||
// app_list_tablerows
|
||||
$this->tpl->set_block('phpgw_about', 'app_list_tablerow', 'app_list_tablerow');
|
||||
foreach ($GLOBALS['egw_info']['user']['apps'] as $app => $appinfo) {
|
||||
// get additional information about the application
|
||||
$info = $this->_getParsedAppInfo($app);
|
||||
|
||||
$this->tpl->set_var('phpgw_about_td_image', $GLOBALS['egw']->common->image($app,array('navbar','nonav')));
|
||||
$this->tpl->set_var('phpgw_about_td_title', $appinfo['title']);
|
||||
$this->tpl->set_var('phpgw_about_td_author', $info['author']);
|
||||
$this->tpl->set_var('phpgw_about_td_maintainer', $info['maintainer']);
|
||||
$this->tpl->set_var('phpgw_about_td_version', $info['version']);
|
||||
$this->tpl->set_var('phpgw_about_td_license', $info['license']);
|
||||
$this->tpl->set_var('phpgw_about_td_details_img', $GLOBALS['egw']->common->image('phpgwapi','view.png'));
|
||||
$this->tpl->set_var('phpgw_about_td_details_url', $GLOBALS['egw_info']['server']['webserver_url'].'/about.php?app='.$app);
|
||||
$this->tpl->pparse('phpgw_about', 'app_list_tablerow', true);
|
||||
}
|
||||
|
||||
// app_list_table_stop
|
||||
$this->tpl->set_block('phpgw_about', 'app_list_tablestop','app_list_tablestop');
|
||||
$this->tpl->pparse('phpgw_about', 'app_list_tablestop');
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* output of detail view
|
||||
*/
|
||||
function _detailView()
|
||||
{
|
||||
echo '<!-- _detailView -->';
|
||||
$app = basename($_GET['app']);
|
||||
include(EGW_INCLUDE_ROOT . "/$app/setup/setup.inc.php");
|
||||
$info = $setup_info[$app];
|
||||
$info['icon'] = $GLOBALS['egw']->common->image($app,array('navbar','nonav'));
|
||||
$info['title'] = $GLOBALS['egw_info']['apps'][$app]['title'];
|
||||
return about_display($info);
|
||||
}
|
||||
|
||||
function about_template()
|
||||
{
|
||||
$template = $GLOBALS['egw']->common->get_tpl_dir('phpgwapi');
|
||||
|
||||
include ($template . "/setup/setup.inc.php");
|
||||
$s = "";
|
||||
$template_info[] = $GLOBALS['egw_info']['template'][$GLOBALS['egw_info']['user']['preferences']['common']['template_set']];
|
||||
foreach($template_info as $info)
|
||||
{
|
||||
$s .= about_display($info);
|
||||
}
|
||||
return $s;
|
||||
}
|
||||
|
||||
function about_display($info)
|
||||
{
|
||||
include(EGW_INCLUDE_ROOT . "/$app/setup/setup.inc.php");
|
||||
$info = $setup_info[$app];
|
||||
$info['icon'] = $GLOBALS['egw']->common->image($app,array('navbar','nonav'));
|
||||
$info['title'] = $GLOBALS['egw_info']['apps'][$app]['title'];
|
||||
|
||||
$other_infos = array(
|
||||
'author' => lang('Author'),
|
||||
'maintainer' => lang('Maintainer'),
|
||||
'version' => lang('Version'),
|
||||
'license' => lang('License'),
|
||||
'author' => lang('Author'),
|
||||
'maintainer' => lang('Maintainer'),
|
||||
'version' => lang('Version'),
|
||||
'license' => lang('License'),
|
||||
);
|
||||
if($info[icon])
|
||||
{
|
||||
$icon = $info[icon];
|
||||
}
|
||||
$s = "<table width='70%' cellpadding='4'>\n";
|
||||
if(trim($icon) != "")
|
||||
{
|
||||
$s.= "<tr>
|
||||
<td align='left'><img src='$icon' alt=\"$info[title]\" /></td><td align='left'><h2>$info[title]</h2></td></tr>";
|
||||
}
|
||||
else
|
||||
{
|
||||
$s .= "<tr>
|
||||
<td align='left'></td><td align='left'><h2>$info[title]</h2></td></tr>";
|
||||
}
|
||||
if ($info['description'])
|
||||
{
|
||||
$info['description'] = lang($info['description']);
|
||||
$s .= "<tr><td colspan='2' align='left'>$info[description]</td></tr>\n";
|
||||
if ($info['note'])
|
||||
{
|
||||
$info['note'] = lang($info['note']);
|
||||
$s .= "<tr><td colspan='2' align='left'><i>$info[note]</i></td></tr>\n";
|
||||
}
|
||||
|
||||
}
|
||||
foreach ($other_infos as $key => $val)
|
||||
{
|
||||
if (isset($info[$key]))
|
||||
{
|
||||
$s .= "<tr><td width='1%' align='left'>$val</td><td>";
|
||||
$infos = $info[$key];
|
||||
for ($n = 0; is_array($info[$key][$n]) && ($infos = $info[$key][$n]) || !$n; ++$n)
|
||||
{
|
||||
if (!is_array($infos) && isset($info[$key.'_email']))
|
||||
{
|
||||
$infos = array('email' => $info[$key.'_email'],'name' => $infos);
|
||||
}
|
||||
elseif(!is_array($infos) && isset($info[$key.'_url']))
|
||||
{
|
||||
$infos = array('url' => $info[$key.'_url'],'name' => $infos);
|
||||
}
|
||||
if (is_array($infos))
|
||||
{
|
||||
if ($infos['email'])
|
||||
{
|
||||
$names = explode('<br>',$infos['name']);
|
||||
$emails = split('@|<br>',$infos['email']);
|
||||
if (count($names) < count($emails)/2)
|
||||
{
|
||||
$names = '';
|
||||
}
|
||||
$infos = '';
|
||||
while (list($user,$domain) = $emails)
|
||||
{
|
||||
if ($infos) $infos .= '<br>';
|
||||
$name = $names ? array_shift($names) : $user;
|
||||
$infos .= "<a href='mailto:$user at $domain'><span onClick=\"document.location='mailto:$user'+'@'+'$domain'; return false;\">$name</span></a>";
|
||||
array_shift($emails); array_shift($emails);
|
||||
}
|
||||
}
|
||||
elseif($infos['url'])
|
||||
{
|
||||
$img = $info[$key.'_img'];
|
||||
if ($img)
|
||||
{
|
||||
$img_url = $GLOBALS['egw']->common->image('phpgwapi',$img);
|
||||
if (!$img_url)
|
||||
{
|
||||
$img_url = $GLOBALS['egw']->common->image($info['name'],$img);
|
||||
}
|
||||
$infos = '<table border="0"><tr><td style="text-align:center;"><a href="'.$infos['url'].'"><img src="'.$img_url.'" border="0"><br>'.$infos['name'].'</a></td></tr></table>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$infos = '<a href="'.$infos['url'].'">'.$infos['name'].'</a>';
|
||||
}
|
||||
}
|
||||
}
|
||||
$s .= ($n ? '<br>' : '') . $infos;
|
||||
}
|
||||
$s .= "</td></tr>\n";
|
||||
}
|
||||
}
|
||||
|
||||
if ($info['extra_untranslated'])
|
||||
{
|
||||
$s .= "<tr><td colspan='2' align='left'>$info[extra_untranslated]</td></tr>\n";
|
||||
}
|
||||
|
||||
$s .= "</table>\n";
|
||||
|
||||
|
||||
$this->tpl->set_block('phpgw_about', 'application','application');
|
||||
$this->tpl->set_var('phpgw_app_about', $s);
|
||||
$this->tpl->pparse('phpgw_about', 'application', True);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* parse informations from setup.inc.php file
|
||||
*
|
||||
* @param string app application name
|
||||
* @return array html formated informations about author(s),
|
||||
* maintainer(s), version, license of the
|
||||
* given application
|
||||
*/
|
||||
function _getParsedAppInfo($app)
|
||||
{
|
||||
// define the return array
|
||||
$ret = array(
|
||||
'author' => '',
|
||||
'maintainer' => '',
|
||||
'version' => '',
|
||||
'license' => ''
|
||||
);
|
||||
if($info[icon])
|
||||
{
|
||||
$icon = $info[icon];
|
||||
|
||||
if (!file_exists(EGW_INCLUDE_ROOT . "/$app/setup/setup.inc.php")) {
|
||||
return $ret;
|
||||
}
|
||||
$s = "<table width='70%' cellpadding='4'>\n";
|
||||
if(trim($icon) != "")
|
||||
{
|
||||
$s.= "<tr>
|
||||
<td align='left'><img src='$icon' alt=\"$info[title]\" /></td><td align='left'><h2>$info[title]</h2></td></tr>";
|
||||
}
|
||||
else
|
||||
{
|
||||
$s .= "<tr>
|
||||
<td align='left'></td><td align='left'><h2>$info[title]</h2></td></tr>";
|
||||
}
|
||||
if ($info['description'])
|
||||
{
|
||||
$info['description'] = lang($info['description']);
|
||||
$s .= "<tr><td colspan='2' align='left'>$info[description]</td></tr>\n";
|
||||
if ($info['note'])
|
||||
{
|
||||
$info['note'] = lang($info['note']);
|
||||
$s .= "<tr><td colspan='2' align='left'><i>$info[note]</i></td></tr>\n";
|
||||
}
|
||||
|
||||
include(EGW_INCLUDE_ROOT . "/$app/setup/setup.inc.php");
|
||||
|
||||
$ret['license'] = $setup_info[$app]['license'];
|
||||
$ret['version'] = $setup_info[$app]['version'];
|
||||
$ret['author'] = $this->_getHtmlPersonalInfo($setup_info, $app, 'author');
|
||||
$ret['maintainer'] = $this->_getHtmlPersonalInfo($setup_info, $app, 'maintainer');
|
||||
|
||||
}
|
||||
foreach ($other_infos as $key => $val)
|
||||
{
|
||||
if (isset($info[$key]))
|
||||
{
|
||||
$s .= "<tr><td width='1%' align='left'>$val</td><td>";
|
||||
$infos = $info[$key];
|
||||
for ($n = 0; is_array($info[$key][$n]) && ($infos = $info[$key][$n]) || !$n; ++$n)
|
||||
{
|
||||
if (!is_array($infos) && isset($info[$key.'_email']))
|
||||
{
|
||||
$infos = array('email' => $info[$key.'_email'],'name' => $infos);
|
||||
}
|
||||
elseif(!is_array($infos) && isset($info[$key.'_url']))
|
||||
{
|
||||
$infos = array('url' => $info[$key.'_url'],'name' => $infos);
|
||||
}
|
||||
if (is_array($infos))
|
||||
{
|
||||
if ($infos['email'])
|
||||
{
|
||||
$names = explode('<br>',$infos['name']);
|
||||
$emails = split('@|<br>',$infos['email']);
|
||||
if (count($names) < count($emails)/2)
|
||||
{
|
||||
$names = '';
|
||||
}
|
||||
$infos = '';
|
||||
while (list($user,$domain) = $emails)
|
||||
{
|
||||
if ($infos) $infos .= '<br>';
|
||||
$name = $names ? array_shift($names) : $user;
|
||||
$infos .= "<a href='mailto:$user at $domain'><span onClick=\"document.location='mailto:$user'+'@'+'$domain'; return false;\">$name</span></a>";
|
||||
array_shift($emails); array_shift($emails);
|
||||
}
|
||||
}
|
||||
elseif($infos['url'])
|
||||
{
|
||||
$img = $info[$key.'_img'];
|
||||
if ($img)
|
||||
{
|
||||
$img_url = $GLOBALS['egw']->common->image('phpgwapi',$img);
|
||||
if (!$img_url)
|
||||
{
|
||||
$img_url = $GLOBALS['egw']->common->image($info['name'],$img);
|
||||
}
|
||||
$infos = '<table border="0"><tr><td style="text-align:center;"><a href="'.$infos['url'].'"><img src="'.$img_url.'" border="0"><br>'.$infos['name'].'</a></td></tr></table>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$infos = '<a href="'.$infos['url'].'">'.$infos['name'].'</a>';
|
||||
}
|
||||
}
|
||||
}
|
||||
$s .= ($n ? '<br>' : '') . $infos;
|
||||
}
|
||||
$s .= "</td></tr>\n";
|
||||
}
|
||||
}
|
||||
|
||||
if ($info['extra_untranslated'])
|
||||
{
|
||||
$s .= "<tr><td colspan='2' align='left'>$info[extra_untranslated]</td></tr>\n";
|
||||
}
|
||||
|
||||
$s .= "</table>\n";
|
||||
|
||||
return $s;
|
||||
return $ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* helper to parse author and maintainer info
|
||||
*
|
||||
* @param array setup_info setup_info[$app] array
|
||||
* @param string app application name
|
||||
* @param string f 'author' or 'maintainer'
|
||||
*
|
||||
* @return string html formated informations of s
|
||||
*/
|
||||
function _getHtmlPersonalInfo($setup_info, $app, $f = 'author')
|
||||
{
|
||||
$authors = array();
|
||||
// get the author(s)
|
||||
if ($setup_info[$app][$f]) {
|
||||
// author is set
|
||||
if (!is_array($setup_info[$app][$f])) {
|
||||
// author is no array
|
||||
$authors[0]['name'] = $setup_info[$app][$f];
|
||||
if ($setup_info[$app][$f.'_email']) {
|
||||
$authors[0]['email'] = $setup_info[$app][$f.'_email'];
|
||||
}
|
||||
if ($setup_info[$app][$f.'_url']) {
|
||||
$authors[0]['url'] = $setup_info[$app][$f.'_url'];
|
||||
}
|
||||
|
||||
} else {
|
||||
// author is array
|
||||
if ($setup_info[$app][$f]['name']) {
|
||||
// only one author
|
||||
$authors[0]['name'] = $setup_info[$app][$f]['name'];
|
||||
if ($setup_info[$app][$f]['email']) {
|
||||
$authors[0]['email'] = $setup_info[$app][$f]['email'];
|
||||
}
|
||||
if ($setup_info[$app][$f]['url']) {
|
||||
$authors[0]['url'] = $setup_info[$app][$f]['url'];
|
||||
}
|
||||
} else {
|
||||
// may be more authors
|
||||
foreach ($setup_info[$app][$f] as $number => $values) {
|
||||
if ($setup_info[$app][$f][$number]['name']) {
|
||||
$authors[$number]['name'] = $setup_info[$app][$f][$number]['name'];
|
||||
}
|
||||
if ($setup_info[$app][$f][$number]['email']) {
|
||||
$authors[$number]['email'] = $setup_info[$app][$f][$number]['email'];
|
||||
}
|
||||
if ($setup_info[$app][$f][$number]['url']) {
|
||||
$authors[$number]['url'] = $setup_info[$app][$f][$number]['url'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// html format authors
|
||||
$s = '';
|
||||
foreach ($authors as $author) {
|
||||
if ($s != '') {
|
||||
$s .= '<br />';
|
||||
}
|
||||
$s .= lang('name').': '.$author['name'];
|
||||
if ($author['email']) {
|
||||
$s .= '<br />'.lang('email').': <a href="mailto:'.$author['email'].'">'.$author['email'].'</a>';
|
||||
}
|
||||
if ($author['url']) {
|
||||
$s .= '<br />'.lang('url').': <a href="'.$author['url'].'" target="_blank">'.$author['url'].'</a>';
|
||||
}
|
||||
}
|
||||
return $s;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
Loading…
Reference in New Issue
Block a user