<?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. * \**************************************************************************/ /* $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'); // create the about page $aboutPage = new about(); class about { /** * template object */ var $tpl; /** * constructor of class about * sets template and calls list or detail view */ function about() { // 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; } if ($detail) { $this->_detailView(); } else { $this->_listView(); } $GLOBALS['egw']->common->egw_footer(); } /** * 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']; $other_infos = array( '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 (!file_exists(EGW_INCLUDE_ROOT . "/$app/setup/setup.inc.php")) { return $ret; } 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'); 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; } } ?>