merge from trunk(revision 23948:23958) to 1.4 branch

This commit is contained in:
Lars Kneschke 2007-05-27 07:51:16 +00:00
commit c34ff4d0f2
11 changed files with 458 additions and 47 deletions

View File

@ -23,7 +23,7 @@ if ($GLOBALS['egw_info']['user']['apps']['addressbook'] &&
if (($month_end = date('*-m-*',$contacts->now_su+$days*24*3600)) != $month_start)
{
if (($bdays2 =& $contacts->search(array('bday' => $month_start),array('id','n_family','n_given','bday'),'n_given,n_family')))
if (($bdays2 =& $contacts->search(array('bday' => $month_end),array('id','n_family','n_given','bday'),'n_given,n_family')))
{
$bdays = !$bdays ? $bdays2 : array_merge($bdays,$bdays2);
}

View File

@ -2,7 +2,7 @@
/**
* eGroupWare - eTemplates for Application calendar
* http://www.egroupware.org
* generated by soetemplate::dump4setup() 2007-05-07 20:30
* generated by soetemplate::dump4setup() 2007-05-27 08:35
*
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @package calendar
@ -50,6 +50,8 @@ $templ_data[] = array('name' => 'calendar.edit.participants','template' => '','l
$templ_data[] = array('name' => 'calendar.edit.participants','template' => '','lang' => '','group' => '0','version' => '1.3.002','data' => 'a:1:{i:0;a:7:{s:4:"type";s:4:"grid";s:4:"data";a:4:{i:0;a:6:{s:1:"A";s:2:"95";s:2:"c3";s:4:",top";s:2:"c1";s:3:"row";s:2:"c2";s:2:"th";s:2:"h1";s:8:",@no_add";s:1:"D";s:24:",@hide_status_recurrence";}i:1;a:6:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:3:"New";}s:1:"B";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"2,,0,0";i:1;a:4:{s:4:"type";s:14:"select-account";s:4:"size";s:22:"User or group,both,,10";s:4:"name";s:7:"account";s:4:"help";s:13:"User or group";}i:2;a:3:{s:4:"type";s:10:"link-entry";s:4:"name";s:8:"resource";s:4:"size";s:14:"@cal_resources";}}s:1:"C";a:3:{s:4:"type";s:3:"int";s:4:"size";s:4:"1,,3";s:4:"name";s:8:"quantity";}s:1:"D";a:1:{s:4:"type";s:5:"label";}s:1:"E";a:3:{s:4:"type";s:6:"button";s:5:"label";s:3:"Add";s:4:"name";s:3:"add";}s:1:"F";a:1:{s:4:"type";s:5:"label";}}i:2;a:6:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"Type";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:12:"Participants";}s:1:"C";a:2:{s:4:"type";s:5:"label";s:5:"label";s:8:"Quantity";}s:1:"D";a:2:{s:4:"type";s:5:"label";s:5:"label";s:10:"All future";}s:1:"E";a:2:{s:4:"type";s:5:"label";s:5:"label";s:6:"Status";}s:1:"F";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"Actions";}}i:3;a:6:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:4:"name";s:11:"${row}[app]";}s:1:"B";a:6:{s:4:"type";s:5:"label";s:4:"data";a:2:{i:0;a:0:{}i:1;a:2:{s:1:"A";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:6:"${row}";s:8:"readonly";s:1:"1";}s:1:"B";a:5:{s:4:"type";s:6:"select";s:4:"name";s:26:"accounts_status[$row_cont]";s:8:"onchange";s:1:"1";s:4:"help";s:30:"Accept or reject an invitation";s:7:"no_lang";s:1:"1";}}}s:4:"rows";i:1;s:4:"cols";i:2;s:4:"name";s:13:"${row}[title]";s:7:"no_lang";s:1:"1";}s:1:"C";a:3:{s:4:"type";s:3:"int";s:4:"name";s:16:"${row}[quantity]";s:4:"size";s:4:"1,,3";}s:1:"D";a:3:{s:4:"type";s:8:"checkbox";s:4:"name";s:25:"${row}[status_recurrence]";s:5:"align";s:6:"center";}s:1:"E";a:4:{s:4:"type";s:6:"select";s:4:"name";s:14:"${row}[status]";s:7:"no_lang";s:1:"1";s:8:"onchange";i:1;}s:1:"F";a:9:{s:4:"type";s:6:"button";s:4:"data";a:2:{i:0;a:1:{s:2:"h1";s:19:",!@resources_status";}i:1;a:2:{s:1:"A";a:4:{s:4:"type";s:16:"resources_select";s:4:"name";s:6:"${row}";s:8:"readonly";s:1:"1";s:7:"no_lang";s:1:"1";}s:1:"B";a:5:{s:4:"type";s:6:"select";s:4:"name";s:27:"resources_status[$row_cont]";s:8:"onchange";s:1:"1";s:4:"help";s:30:"Accept or reject an invitation";s:7:"no_lang";s:1:"1";}}}s:4:"rows";i:1;s:4:"cols";i:2;s:4:"name";s:22:"delete[$row_cont[uid]]";s:5:"align";s:6:"center";s:5:"label";s:6:"Delete";s:8:"onchange";i:1;s:4:"size";s:6:"delete";}}}s:4:"rows";i:3;s:4:"cols";i:6;s:4:"size";s:17:"100%,200,,,,,auto";s:4:"name";s:12:"participants";s:7:"options";a:3:{i:0;s:4:"100%";i:1;s:3:"200";i:6;s:4:"auto";}}}','size' => '100%,200,,,,,auto','style' => '','modified' => '1172430059',);
$templ_data[] = array('name' => 'calendar.edit.participants','template' => '','lang' => '','group' => '0','version' => '1.3.003','data' => 'a:1:{i:0;a:7:{s:4:"type";s:4:"grid";s:4:"data";a:4:{i:0;a:6:{s:1:"A";s:2:"95";s:2:"c3";s:4:",top";s:2:"c1";s:3:"row";s:2:"c2";s:2:"th";s:2:"h1";s:8:",@no_add";s:1:"D";s:24:",@hide_status_recurrence";}i:1;a:6:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:3:"New";}s:1:"B";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"2,,0,0";i:1;a:4:{s:4:"type";s:14:"select-account";s:4:"size";s:27:"User or group,calendar+,,10";s:4:"name";s:7:"account";s:4:"help";s:13:"User or group";}i:2;a:3:{s:4:"type";s:10:"link-entry";s:4:"name";s:8:"resource";s:4:"size";s:14:"@cal_resources";}}s:1:"C";a:3:{s:4:"type";s:3:"int";s:4:"size";s:4:"1,,3";s:4:"name";s:8:"quantity";}s:1:"D";a:1:{s:4:"type";s:5:"label";}s:1:"E";a:3:{s:4:"type";s:6:"button";s:5:"label";s:3:"Add";s:4:"name";s:3:"add";}s:1:"F";a:1:{s:4:"type";s:5:"label";}}i:2;a:6:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"Type";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:12:"Participants";}s:1:"C";a:2:{s:4:"type";s:5:"label";s:5:"label";s:8:"Quantity";}s:1:"D";a:2:{s:4:"type";s:5:"label";s:5:"label";s:10:"All future";}s:1:"E";a:2:{s:4:"type";s:5:"label";s:5:"label";s:6:"Status";}s:1:"F";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"Actions";}}i:3;a:6:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:4:"name";s:11:"${row}[app]";}s:1:"B";a:6:{s:4:"type";s:5:"label";s:4:"data";a:2:{i:0;a:0:{}i:1;a:2:{s:1:"A";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:6:"${row}";s:8:"readonly";s:1:"1";}s:1:"B";a:5:{s:4:"type";s:6:"select";s:4:"name";s:26:"accounts_status[$row_cont]";s:8:"onchange";s:1:"1";s:4:"help";s:30:"Accept or reject an invitation";s:7:"no_lang";s:1:"1";}}}s:4:"rows";i:1;s:4:"cols";i:2;s:4:"name";s:13:"${row}[title]";s:7:"no_lang";s:1:"1";}s:1:"C";a:3:{s:4:"type";s:3:"int";s:4:"name";s:16:"${row}[quantity]";s:4:"size";s:4:"1,,3";}s:1:"D";a:3:{s:4:"type";s:8:"checkbox";s:4:"name";s:25:"${row}[status_recurrence]";s:5:"align";s:6:"center";}s:1:"E";a:4:{s:4:"type";s:6:"select";s:4:"name";s:14:"${row}[status]";s:7:"no_lang";s:1:"1";s:8:"onchange";i:1;}s:1:"F";a:9:{s:4:"type";s:6:"button";s:4:"data";a:2:{i:0;a:1:{s:2:"h1";s:19:",!@resources_status";}i:1;a:2:{s:1:"A";a:4:{s:4:"type";s:16:"resources_select";s:4:"name";s:6:"${row}";s:8:"readonly";s:1:"1";s:7:"no_lang";s:1:"1";}s:1:"B";a:5:{s:4:"type";s:6:"select";s:4:"name";s:27:"resources_status[$row_cont]";s:8:"onchange";s:1:"1";s:4:"help";s:30:"Accept or reject an invitation";s:7:"no_lang";s:1:"1";}}}s:4:"rows";i:1;s:4:"cols";i:2;s:4:"name";s:22:"delete[$row_cont[uid]]";s:5:"align";s:6:"center";s:5:"label";s:6:"Delete";s:8:"onchange";i:1;s:4:"size";s:6:"delete";}}}s:4:"rows";i:3;s:4:"cols";i:6;s:4:"size";s:17:"100%,200,,,,,auto";s:4:"name";s:12:"participants";s:7:"options";a:3:{i:0;s:4:"100%";i:1;s:3:"200";i:6;s:4:"auto";}}}','size' => '100%,200,,,,,auto','style' => '','modified' => '1172430059',);
$templ_data[] = array('name' => 'calendar.edit.recurrence','template' => '','lang' => '','group' => '0','version' => '','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:2:{s:2:"c1";s:3:"row";s:1:"A";s:2:"95";}i:1;a:1:{s:1:"A";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:1;s:4:"cols";i:1;s:4:"size";s:8:"100%,200";s:7:"options";a:2:{i:0;s:4:"100%";i:1;s:3:"200";}}}','size' => '100%,200','style' => '','modified' => '1118737412',);
$templ_data[] = array('name' => 'calendar.edit.recurrence','template' => '','lang' => '','group' => '0','version' => '1.0.1.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:5:{i:0;a:6:{s:2:"c1";s:2:"th";s:1:"A";s:2:"95";s:2:"c2";s:3:"row";s:2:"c3";s:3:"row";s:2:"c4";s:3:"row";s:1:"D";s:3:"50%";}i:1;a:4:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:5:"label";s:27:"Repeating Event Information";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:16:"be back soon ;-)";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}}i:2;a:4:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:13:",,,recur_type";s:5:"label";s:11:"Repeat type";}s:1:"B";a:2:{s:4:"type";s:6:"select";s:4:"name";s:10:"recur_type";}s:1:"C";a:3:{s:4:"type";s:5:"label";s:4:"size";s:17:",,,recur_interval";s:5:"label";s:8:"Interval";}s:1:"D";a:4:{s:4:"type";s:13:"select-number";s:4:"name";s:14:"recur_interval";s:4:"help";s:53:"repeating interval, eg. 2 to repeat every second week";s:4:"size";s:9:"None,2,10";}}i:3;a:4:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:16:",,,recur_enddate";s:5:"label";s:8:"End date";}s:1:"B";a:3:{s:4:"type";s:4:"date";s:4:"name";s:13:"recur_enddate";s:4:"help";s:57:"repeat the event until which date (empty means unlimited)";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}}i:4;a:4:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:13:",,,recur_data";s:5:"label";s:11:"Repeat days";}s:1:"B";a:4:{s:4:"type";s:10:"select-dow";s:4:"size";s:3:"5,1";s:4:"name";s:10:"recur_data";s:4:"help";s:44:"Days of the week for a weekly repeated event";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:4;s:4:"cols";i:4;s:4:"size";s:8:"100%,200";s:7:"options";a:2:{i:0;s:4:"100%";i:1;s:3:"200";}}}','size' => '100%,200','style' => '','modified' => '1118737412',);

View File

@ -62,7 +62,7 @@
</rows>
</grid>
</template>
<template id="calendar.edit.participants" template="" lang="" group="0" version="1.3.002">
<template id="calendar.edit.participants" template="" lang="" group="0" version="1.3.003">
<grid width="100%" height="200" overflow="auto" id="participants">
<columns>
<column width="95"/>
@ -77,7 +77,7 @@
<description value="New"/>
<vbox options="0,0">
<menulist>
<menupopup type="select-account" options="User or group,both,,10" id="account" statustext="User or group"/>
<menupopup type="select-account" options="User or group,calendar+,,10" id="account" statustext="User or group"/>
</menulist>
<link-entry id="resource" options="@cal_resources"/>
</vbox>

View File

@ -42,7 +42,7 @@ class Net_IMAP extends Net_IMAPProtocol {
function Net_IMAP($host = 'localhost', $port = 143, $enableSTARTTLS = true)
{
$this->Net_IMAPProtocol();
$ret = $this->connect( $host , $port, $disableSTARTTLS);
$ret = $this->connect( $host , $port, $enableSTARTTLS);
}
@ -1358,7 +1358,6 @@ class Net_IMAP extends Net_IMAPProtocol {
if( PEAR::isError( $ret = $this->cmdList($reference, $mailbox) ) ){
return $ret;
}
if(strtoupper($ret["RESPONSE"]["CODE"]) != "OK"){
return new PEAR_Error($ret["RESPONSE"]["CODE"] . ", " . $ret["RESPONSE"]["STR_CODE"]);
}
@ -1369,7 +1368,7 @@ class Net_IMAP extends Net_IMAPProtocol {
//If the folder has the \NoSelect atribute we don't put in the list
// it solves a bug in wu-imap that crash the IMAP server if we select that mailbox
if( isset($mbox["EXT"]["LIST"]["NAME_ATTRIBUTES"]) ){
if( !in_array('\NoSelect',$mbox["EXT"]["LIST"]["NAME_ATTRIBUTES"]) ){
#if( !in_array('\NoSelect',$mbox["EXT"]["LIST"]["NAME_ATTRIBUTES"]) ){
if( $returnAttributes){
$ret_aux[]=array( 'MAILBOX' => $mbox["EXT"]["LIST"]["MAILBOX_NAME"],
'ATTRIBUTES' => $mbox["EXT"]["LIST"]["NAME_ATTRIBUTES"] ,
@ -1377,7 +1376,7 @@ class Net_IMAP extends Net_IMAPProtocol {
}else{
$ret_aux[]=$mbox["EXT"]["LIST"]["MAILBOX_NAME"];
}
}
#}
}
}
}

View File

@ -830,45 +830,37 @@
#_debug_array($folders);
$nameSpace = $this->icServer->getNameSpaces();
#_debug_array($nameSpace);
// uw imap does not return the attribute of a folder, when requesting subscribed folders only
if(isset($nameSpace['#mh/'])) {
$mailboxString = $this->icServer->getMailboxString();
// detected uw-imap! the most worst imap server ever!!!!
// we support only the personal namespace on uwimap
$foldersNameSpace['personal']['subscribed'] = imap_getsubscribed($this->mbox, $mailboxString, $icServer->mailboxPrefix.'/*');
foreach($foldersNameSpace['personal']['subscribed'] as $id => $folderInfo) {
$shortName = preg_replace("/{.*}/",'',$folderInfo->name);
$mailBoxInfo = imap_getmailboxes($this->mbox,$mailboxString, $shortName);
if(is_a($mailBoxInfo[0], 'stdClass')) {
$foldersNameSpace['personal']['subscribed'][$id] = $mailBoxInfo[0];
}
}
if(!$_subscribedOnly) {
$foldersNameSpace['personal']['all'] = imap_getmailboxes($this->mbox, $mailboxString, $icServer->mailboxPrefix.'/*');
}
$foldersNameSpace['personal']['prefix'] = '';
$foldersNameSpace['personal']['delimiter'] = '/';
$isUWIMAP = TRUE;
// removed the uwimap code
// but we need to reintroduce him later
// uw imap does not return the attribute of a folder, when requesting subscribed folders only
// dovecot has the same problem too
} else {
foreach($nameSpace as $type => $singleNameSpace) {
$foldersNameSpace[$type]['prefix'] = $singleNameSpace[0]['name'];
if($type == 'personal' && ($singleNameSpace[2]['name'] == '#mh/' || count($nameSpace) == 1) && $this->icServer->mailboxExist('Mail')) {
// uw-imap server with mailbox prefix or dovecot maybe
$foldersNameSpace[$type]['prefix'] = 'Mail';
} elseif($type == 'personal' && ($singleNameSpace[2]['name'] == '#mh/' || count($nameSpace) == 1) && $this->icServer->mailboxExist('mail')) {
// uw-imap server with mailbox prefix or dovecot maybe
$foldersNameSpace[$type]['prefix'] = 'mail';
} else {
$foldersNameSpace[$type]['prefix'] = $singleNameSpace[0]['name'];
}
$foldersNameSpace[$type]['delimiter'] = $delimiter;
if(is_array($singleNameSpace[0])) {
// fetch and sort the subscribed folders
$subscribedMailboxes = $this->icServer->listsubscribedMailboxes($singleNameSpace[0]['name']);
$subscribedMailboxes = $this->icServer->listsubscribedMailboxes($foldersNameSpace[$type]['prefix']);
if( PEAR::isError($subscribedMailboxes) ) {
continue;
}
$foldersNameSpace[$type]['subscribed'] = $subscribedMailboxes;
sort($foldersNameSpace[$type]['subscribed']);
// fetch and sort all folders
$foldersNameSpace[$type]['all'] = $this->icServer->getMailboxes($singleNameSpace[0]['name']);
$foldersNameSpace[$type]['all'] = $this->icServer->getMailboxes($foldersNameSpace[$type]['prefix']);
sort($foldersNameSpace[$type]['all']);
}
@ -885,13 +877,14 @@
$folderPrefix = $personalPrefix;
}
}
foreach(array('Drafts', 'Junk', 'Sent', 'Trash', 'Templates') as $personalFolderName) {
$folderName = (!empty($personalPrefix)) ? $folderPrefix.$personalFolderName : $personalFolderName;
if(!is_array($foldersNameSpace['personal']['all']) || !in_array($folderName, $foldersNameSpace['personal']['all'])) {
if($this->createFolder('', $folderName, true)) {
$foldersNameSpace['personal']['all'][] = $folderName;
$foldersNameSpace['personal']['subscribed'][] = $folderName;
} else {
# print "FOLDERNAME failed: $folderName<br>";
}
}
}

View File

@ -0,0 +1,384 @@
<?php
/**
* eGroupWare: About informations
*
* rewrite of the old PHPLib based about page
* it now uses eTemplate
*
* This is NO typical eTemplate application as it is not stored in the
* correct namespace
*
* LICENSE: GPL.
*
* @package api
* @subpackage about
* @author Sebastian Ebling <hudeldudel@php.net>
* @author Ralf Becker <RalfBecker@outdoor-training.de>
* @license http://www.gnu.org/copyleft/gpl.html
* @link http://www.egroupware.org
* @version SVN: $Id$
*/
/**
* Shows informations about eGroupWare
* - general information
* - installed applications
* - installed templates
* - installed languages
*
* Usage:
* <code>
* $aboutPage = new about();
* </code>
* The constuctor will do all
*
* There is no typical so, bo ui structure, this class is all in one
*
* @since 1.4
*/
class about
{
/**
* constructor of about class
* decides to show tab- or detail view
*
* @since 1.4
*/
function about()
{
// list or detail view
$name = 'eGroupWare';
$detail = false;
$nonavbar = false;
// application detail?
if (isset($_GET['app']) && $_GET['app'] != 'eGroupWare') {
$name = basename($_GET['app']);
$type = 'application';
$detail = true;
}
// template detail?
if (isset($_GET['template']) && $_GET['template'] != 'eGroupWare') {
$name = basename($_GET['template']);
$type = 'template';
$detail = true;
}
// navbar or not
if (isset($_GET['nonavbar'])) {
$nonavbar = $_GET['nonavbar'];
}
if ($detail) {
$this->_detailView($name, $type, $nonavbar);
} else {
$this->_listView();
}
}
/**
* output of list view
* collects data and shows a tabbed view that lists
* - general informations
* - installed applications
* - installed templates
* - installed languages
*
* @return nothing
*
* @access private
* @since 1.4
*/
function _listView()
{
// get informations about the applications
$apps = array();
$apps[] = ''; // first empty row for eTemplate
foreach ($GLOBALS['egw_info']['user']['apps'] as $app => $appinfo) {
$info = $this->_getParsedAppInfo($app);
$apps[] = array(
'appImage' => '<img src="'.$info['image'].'" />',
'appName' => $appinfo['title'],
'appAuthor' => $info['author'],
'appMaintainer' => $info['maintainer'],
'appVersion' => $info['version'],
'appLicense' => $this->_linkLicense($info['license']),
'appDetails' => '<a href="'.$GLOBALS['egw_info']['server']['webserver_url'].'/about.php?app='.$app.'&nonavbar=true" onclick="egw_openWindowCentered2(this.href,this.target,750,410,'."'yes'".'); return false;"><img src="'.$GLOBALS['egw']->common->image('phpgwapi','view.png').'" /></a>'
);
}
// get informations about the templates
$templates = array();
$templates[] = ''; // first empty row for eTemplate
foreach($GLOBALS['egw']->common->list_templates() as $template => $templateinfo) {
$info = $this->_getParsedTemplateInfo($template);
$templates[] = array(
'templateImage' => '<img src="'.$info['image'].'" />',
'templateName' => $templateinfo['name'],
'templateAuthor' => $info['author'],
'templateMaintainer'=> $info['maintainer'],
'templateVersion' => $info['version'],
'templateLicense' => $this->_linkLicense($info['license']),
'templateDetails' => '<a href="'.$GLOBALS['egw_info']['server']['webserver_url'].'/about.php?template='.$template.'&nonavbar=true" onclick="egw_openWindowCentered2(this.href,this.target,750,410,'."'yes'".'); return false;"><img src="'.$GLOBALS['egw']->common->image('phpgwapi','view.png').'" /></a>'
);
}
// get informations about installed languages
$translations = array();
$translations[] = ''; // first empty row for eTemplate
$langs = $GLOBALS['egw']->translation->get_installed_langs();
foreach($GLOBALS['egw']->translation->get_installed_langs() as $translation => $translationinfo) {
$translations[] = array(
'langName' => $translationinfo.' ('.$translation.')'
);
}
// fill content array for eTemplate
$content = array(
'apiVersion' => '<p>'.lang('eGroupWare API version').' '.$GLOBALS['egw_info']['server']['versions']['phpgwapi'].'</p>',
'applications' => $apps,
'templates' => $templates,
'translations' => $translations
);
$tmpl =& CreateObject('etemplate.etemplate', 'phpgwapi.about.index');
$tmpl->exec('phpgwapi.about.index', $content);
}
/**
* output of detail view for applications or templates
*
* @param string $name application/template name
* @param string $type can be 'application' or 'template' :default $type='application'
* @param string $nonavbar don't show navbar :default $nonavbar=false
* @return nothing
*
* @access private
* @since 1.4
*/
function _detailView($name, $type='application', $nonavbar=false)
{
// get the informations
switch ($type) {
case 'application':
$info = $this->_getParsedAppInfo($name);
break;
case 'template':
$info = $this->_getParsedTemplateInfo($name);
break;
}
// app names are translated, template names not...
if ($type == 'application') {
$translatedName = lang($name);
} else {
$translatedName = $name;
}
// fill content array
$content = array(
'image' => '<img src="'.$info['image'].'" />',
'name' => '<h2>'.$translatedName.'</h2>',
'description' => '<p>'.$info['description'].'</p>',
'note' => $info['note'],
'author' => $info['author'],
'maintainer' => $info['maintainer'],
'version' => $info['version'],
'license' => $this->_linkLicense($info['license'])
);
$tmpl =& CreateObject('etemplate.etemplate', 'phpgwapi.about.detail');
if ($nonavbar) {
$tmpl->exec('phpgwapi.about.detail', $content, array(), array(), array(), 2);
} else {
$GLOBALS['egw_info']['flags']['app_header'] = lang('About %1', $translatedName);
$tmpl->exec('phpgwapi.about.detail', $content);
}
}
/**
* parse template informations from setup.inc.php file
*
* @param string $template template template name
* @return array html formated informations about author(s),
* maintainer(s), version, license of the
* given application
*
* @access private
* @since 1.4
*/
function _getParsedTemplateInfo($template)
{
// define the return array
$ret = array(
'image' => (file_exists($GLOBALS['egw_info']['template'][$template]['icon'])) ? $GLOBALS['egw_info']['template'][$template]['icon'] : $GLOBALS['egw']->common->image('thisdoesnotexist',array('navbar','nonav')),
'author' => '',
'maintainer' => '',
'version' => '',
'license' => '',
'description' => '',
'note' => ''
);
if (!file_exists(EGW_INCLUDE_ROOT . "/phpgwapi/templates/$template/setup/setup.inc.php")) {
return $ret;
}
include(EGW_INCLUDE_ROOT . "/phpgwapi/templates/$template/setup/setup.inc.php");
$ret['author'] = $this->_getHtmlPersonalInfo($GLOBALS['egw_info']['template'][$template], 'author');
$ret['maintainer'] = $this->_getHtmlPersonalInfo($GLOBALS['egw_info']['template'][$template], 'maintainer');
$ret['version'] = $GLOBALS['egw_info']['template'][$template]['version'];
$ret['license'] = $GLOBALS['egw_info']['template'][$template]['license'];
$ret['description'] = $GLOBALS['egw_info']['template'][$template]['description'];
$ret['note'] = $GLOBALS['egw_info']['template'][$template]['note'];
return $ret;
}
/**
* parse application 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
*
* @access private
* @since 1.4
*/
function _getParsedAppInfo($app)
{
// define the return array
$ret = array(
'image' => $GLOBALS['egw']->common->image($app,array('navbar','nonav')),
'author' => '',
'maintainer' => '',
'version' => '',
'license' => '',
'description' => '',
'note' => ''
);
if (!file_exists(EGW_INCLUDE_ROOT . "/$app/setup/setup.inc.php")) {
return $ret;
}
include(EGW_INCLUDE_ROOT . "/$app/setup/setup.inc.php");
$ret['author'] = $this->_getHtmlPersonalInfo($setup_info[$app], 'author');
$ret['maintainer'] = $this->_getHtmlPersonalInfo($setup_info[$app], 'maintainer');
$ret['version'] = $setup_info[$app]['version'];
$ret['license'] = $setup_info[$app]['license'];
$ret['description'] = $setup_info[$app]['description'];
$ret['note'] = $setup_info[$app]['note'];
return $ret;
}
/**
* helper to parse author and maintainer info from setup_info array
*
* @param array $setup_info setup_info[$app] array
* ($GLOBALS['egw_info']['template'][$template] array for template informations)
* @param string $f 'author' or 'maintainer', default='author'
* @return string html formated informations about author/maintainer
*
* @access private
* @since 1.4
*/
function _getHtmlPersonalInfo($setup_info, $f = 'author')
{
$authors = array();
// get the author(s)
if ($setup_info[$f]) {
// author is set
if (!is_array($setup_info[$f])) {
// author is no array
$authors[0]['name'] = $setup_info[$f];
if ($setup_info[$f.'_email']) {
$authors[0]['email'] = $setup_info[$f.'_email'];
}
if ($setup_info[$f.'_url']) {
$authors[0]['url'] = $setup_info[$f.'_url'];
}
} else {
// author is array
if ($setup_info[$f]['name']) {
// only one author
$authors[0]['name'] = $setup_info[$f]['name'];
if ($setup_info[$f]['email']) {
$authors[0]['email'] = $setup_info[$f]['email'];
}
if ($setup_info[$f]['url']) {
$authors[0]['url'] = $setup_info[$f]['url'];
}
} else {
// may be more authors
foreach ($setup_info[$f] as $number => $values) {
if ($setup_info[$f][$number]['name']) {
$authors[$number]['name'] = $setup_info[$f][$number]['name'];
}
if ($setup_info[$f][$number]['email']) {
$authors[$number]['email'] = $setup_info[$f][$number]['email'];
}
if ($setup_info[$f][$number]['url']) {
$authors[$number]['url'] = $setup_info[$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;
}
/**
* surround license string with link to license if it is known
*
* @param string $license the license to surround with link
* @return string linked licence if known, $licence if not known
*
* @access private
* @since 1.4
*/
function _linkLicense($license)
{
// toupper known licenses
$knownLicenses = array(
'GPL' => 'http://www.gnu.org/copyleft/gpl.html'
);
if (array_key_exists(strtoupper($license), $knownLicenses)) {
$license = '<a href="'.$knownLicenses[strtoupper($license)].'" target="_blank">'.$license.'</a>';
}
return $license;
}
}
?>

View File

@ -97,7 +97,7 @@ class uiaccountsel extends accounts
*/
function selection($name,$element_id,$selected,$use='accounts',$lines=0,$not=False,$options='',$onchange='',$select=False,$nohtml=false)
{
//echo "<p align=right>uiaccountsel::selection('$name',".print_r($selected,True).",'$use',rows=$lines,$not,'$options','$onchange',".print_r($select,True).") account_selection=$this->account_selection</p>\n";
//echo "<p align=right>uiaccountsel::selection('$name','$element_id',".print_r($selected,True).",'$use',rows=$lines,$not,'$options','$onchange',".print_r($select,True).") account_selection=$this->account_selection</p>\n";
$multi_size=4;
if ($lines < 0)
{
@ -138,6 +138,7 @@ class uiaccountsel extends accounts
// fall-through
case 'owngroups':
$only_groups = true;
$account_sel = 'selectbox'; // groups always use only the selectbox
break;
}
@ -243,7 +244,7 @@ class uiaccountsel extends accounts
));
$popup_options = 'width=600,height=400,toolbar=no,scrollbars=yes,resizable=yes';
$app = $GLOBALS['egw_info']['flags']['currentapp'];
if ($lines <= 1 && $this->account_selection == 'popup' || !$lines && $this->account_selection == 'primary_group')
if (!$only_groups && ($lines <= 1 && $this->account_selection == 'popup' || !$lines && $this->account_selection == 'primary_group'))
{
if (!$lines)
{
@ -279,14 +280,14 @@ class uiaccountsel extends accounts
//echo "<p>html::select('$name',".print_r($selected,True).",".print_r($select,True).",True,'$options')</p>\n";
$html = $this->html->select($name,$selected,$select,True,$options.' id="'.$element_id.'"',$lines > 1 ? $lines : 0);
if ($lines > 0 && $this->account_selection == 'popup' || $lines > 1 && $this->account_selection == 'primary_group')
if (!$only_groups && ($lines > 0 && $this->account_selection == 'popup' || $lines > 1 && $this->account_selection == 'primary_group'))
{
$js = "window.open('$link','uiaccountsel','$popup_options'); return false;";
$html .= $this->html->submit_button('search','Search accounts',$js,false,
' title="'.$this->html->htmlspecialchars(lang('Search accounts')).'"','search','phpgwapi');
$need_js_popup = True;
}
elseif ($lines == 1 || $lines > 0 && $this->account_selection == 'primary_group')
elseif (!$only_groups && ($lines == 1 || $lines > 0 && $this->account_selection == 'primary_group'))
{
$js = "if (selectBox = document.getElementById('$element_id')) if (!selectBox.multiple) {selectBox.size=$multi_size; selectBox.multiple=true; if (selectBox.options[0].value=='') selectBox.options[0] = null;";
if (!in_array($this->account_selection,array('groupmembers','selectbox'))) // no popup!

View File

@ -0,0 +1,26 @@
<?php
/**
* eGroupWare - eTemplates for Application phpgwapi
* http://www.egroupware.org
* generated by soetemplate::dump4setup() 2007-04-07 14:58
*
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @package phpgwapi
* @subpackage setup
* @version $Id$
*/
$templ_version=1;
$templ_data[] = array('name' => 'phpgwapi.about.detail','template' => '','lang' => '','group' => '0','version' => '1.4.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:7:{s:4:"type";s:4:"grid";s:7:"no_lang";s:1:"1";s:4:"size";s:9:"70%,,,,,4";s:4:"data";a:5:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:6:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:0:{}i:1;a:2:{s:1:"A";a:2:{s:4:"type";s:4:"html";s:4:"name";s:5:"image";}s:1:"B";a:3:{s:4:"type";s:4:"html";s:4:"name";s:4:"name";s:7:"no_lang";s:1:"1";}}}s:4:"rows";i:1;s:4:"cols";i:2;s:4:"size";s:6:",,,,,4";s:7:"options";a:1:{i:5;s:1:"4";}}}i:2;a:1:{s:1:"A";a:2:{s:4:"type";s:4:"html";s:4:"name";s:11:"description";}}i:3;a:1:{s:1:"A";a:3:{s:4:"type";s:4:"html";s:4:"name";s:4:"note";s:7:"no_lang";s:1:"1";}}i:4;a:1:{s:1:"A";a:6:{s:4:"type";s:4:"grid";s:4:"data";a:5:{i:0;a:4:{s:2:"c1";s:7:"row,top";s:2:"c2";s:7:"row,top";s:2:"c3";s:7:"row,top";s:2:"c4";s:7:"row,top";}i:1;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:6:"author";s:4:"span";s:2:"th";}s:1:"B";a:3:{s:4:"type";s:4:"html";s:4:"name";s:6:"author";s:7:"no_lang";s:1:"1";}}i:2;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:10:"maintainer";s:4:"span";s:2:"th";}s:1:"B";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:10:"maintainer";}}i:3;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"version";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:4:"name";s:7:"version";s:7:"no_lang";s:1:"1";}}i:4;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"license";}s:1:"B";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:7:"license";}}}s:4:"rows";i:4;s:4:"cols";i:2;s:4:"size";s:6:",,,,,3";s:7:"options";a:1:{i:5;s:1:"3";}}}}s:4:"rows";i:4;s:4:"cols";i:1;s:7:"options";a:2:{i:0;s:3:"70%";i:5;s:1:"4";}}}}s:4:"rows";i:1;s:4:"cols";i:1;s:4:"size";s:5:",,,,5";s:7:"options";a:1:{i:4;s:1:"5";}}}','size' => ',,,,5','style' => '','modified' => '1175950403',);
$templ_data[] = array('name' => 'phpgwapi.about.index','template' => '','lang' => '','group' => '0','version' => '1.4.001','data' => 'a:2:{i:0;a:3:{s:4:"type";s:3:"tab";s:4:"name";s:40:"general|applications|templates|languages";s:5:"label";s:40:"general|applications|templates|languages";}i:1;a:7:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:2:{s:2:"c1";s:2:"th";s:2:"c2";s:3:"row";}i:1;a:7:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"name";}s:1:"C";a:2:{s:4:"type";s:5:"label";s:5:"label";s:6:"author";}s:1:"D";a:2:{s:4:"type";s:5:"label";s:5:"label";s:10:"maintainer";}s:1:"E";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"version";}s:1:"F";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"license";}s:1:"G";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"details";}}i:2;a:7:{s:1:"A";a:3:{s:4:"type";s:4:"html";s:4:"name";s:16:"${row}[appImage]";s:7:"no_lang";s:1:"1";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:4:"name";s:15:"${row}[appName]";s:7:"no_lang";s:1:"1";}s:1:"C";a:3:{s:4:"type";s:4:"html";s:4:"name";s:17:"${row}[appAuthor]";s:7:"no_lang";s:1:"1";}s:1:"D";a:3:{s:4:"type";s:4:"html";s:4:"name";s:21:"${row}[appMaintainer]";s:7:"no_lang";s:1:"1";}s:1:"E";a:3:{s:4:"type";s:5:"label";s:4:"name";s:18:"${row}[appVersion]";s:7:"no_lang";s:1:"1";}s:1:"F";a:3:{s:4:"type";s:4:"text";s:4:"name";s:18:"${row}[appLicense]";s:7:"no_lang";s:1:"1";}s:1:"G";a:4:{s:4:"type";s:4:"html";s:5:"align";s:6:"center";s:4:"name";s:17:"${row}[appDetail]";s:7:"no_lang";s:1:"1";}}}s:4:"rows";i:2;s:4:"cols";i:7;s:4:"name";s:4:"rows";s:8:"disabled";s:1:"1";s:7:"options";a:0:{}}}','size' => '','style' => '','modified' => '1175950383',);
$templ_data[] = array('name' => 'phpgwapi.about.index.applications','template' => '','lang' => '','group' => '0','version' => '1.4.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:236:"<strong>This is a list of your available applications.</strong><br />For a complete list of applications available for eGroupWare visit <a href="http://www.egroupware.org/applications" target="_blank">www.egroupware.org/applications</a>";}}i:2;a:1:{s:1:"A";a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:2:{s:2:"c1";s:2:"th";s:2:"c2";s:7:"row,top";}i:1;a:7:{s:1:"A";a:5:{s:4:"type";s:5:"label";s:4:"data";a:2:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:7:{s:4:"type";s:4:"grid";s:4:"size";s:3:",,1";s:4:"name";s:12:"applications";s:4:"data";a:2:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:1;s:4:"cols";i:1;s:7:"options";a:1:{i:2;s:1:"1";}}}}s:4:"rows";i:1;s:4:"cols";i:1;s:4:"name";s:12:"applications";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"name";}s:1:"C";a:2:{s:4:"type";s:5:"label";s:5:"label";s:6:"author";}s:1:"D";a:2:{s:4:"type";s:5:"label";s:5:"label";s:10:"maintainer";}s:1:"E";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"version";}s:1:"F";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"license";}s:1:"G";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"details";}}i:2;a:7:{s:1:"A";a:4:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[appImage]";s:5:"align";s:6:"center";}s:1:"B";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:15:"${row}[appName]";}s:1:"C";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:17:"${row}[appAuthor]";}s:1:"D";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:21:"${row}[appMaintainer]";}s:1:"E";a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:18:"${row}[appVersion]";}s:1:"F";a:4:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:18:"${row}[appLicense]";s:5:"align";s:6:"center";}s:1:"G";a:4:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:5:"align";s:6:"center";s:4:"name";s:18:"${row}[appDetails]";}}}s:4:"rows";i:2;s:4:"cols";i:7;s:4:"name";s:12:"applications";s:7:"options";a:0:{}}}}s:4:"rows";i:2;s:4:"cols";i:1;s:4:"size";s:6:",,0,,5";s:7:"options";a:2:{i:4;s:1:"5";i:2;s:1:"0";}}}','size' => ',,0,,5','style' => '','modified' => '1175950363',);
$templ_data[] = array('name' => 'phpgwapi.about.index.general','template' => '','lang' => '','group' => '0','version' => '1.4.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:5:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:4:"logo";}}i:2;a:1:{s:1:"A";a:2:{s:4:"type";s:4:"html";s:4:"name";s:10:"apiVersion";}}i:3;a:1:{s:1:"A";a:1:{s:4:"type";s:5:"hrule";}}i:4;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:1208:"<p><b>eGroupWare is a <a href="http://www.egroupware.org/philosophy" title="read more about open source and the GPL" target="_blank">free</a> enterprise ready groupware software</b> for your network. It enables you to manage contacts, appointments, todos and many more for your whole business.<br /> <br /> <b>eGroupWare is a groupware server.</b> It comes with a native web-interface which allowes to access your data from any platform all over the planet. Moreover you also have the choice to access the eGroupWare server with your favorite groupware client (Kontact, Evolution, Outlook) and also with your mobile or PDA via SyncML.<br /> <br /> <b>eGroupWare is international.</b> At the time, it supports more than <a href="http://www.egroupware.org/languages" target="_blank">25 languages</a> including rtl support.<br /> <br /> <b>eGroupWare is platform independent.</b> The server runs on Linux, Mac, Windows and many more other operating systems. On the client side, all you need is a internetbrowser such as Firefox, Konqueror, Internet Explorer and many more.</p><br /><p>For more informations visit the <a href="http://www.egroupware.org" target="_blank">eGroupWare Website</a></p>";}}}s:4:"rows";i:4;s:4:"cols";i:1;s:4:"size";s:8:"600,,,,5";s:7:"options";a:2:{i:0;s:3:"600";i:4;s:1:"5";}}}','size' => '600,,,,5','style' => '','modified' => '1175950348',);
$templ_data[] = array('name' => 'phpgwapi.about.index.languages','template' => '','lang' => '','group' => '0','version' => '1.4.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:213:"<b>This is a list of your available languages</b><br />For a complete list of languages available for eGroupWare visit <a href="http://www.egroupware.org/languages" target="_blank">www.egroupware.org/languages</a>";}}i:2;a:1:{s:1:"A";a:7:{s:4:"type";s:4:"grid";s:4:"size";s:3:",,0";s:4:"data";a:3:{i:0;a:2:{s:2:"c1";s:2:"th";s:2:"c2";s:3:"row";}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:8:"language";}}i:2;a:1:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[langName]";}}}s:4:"rows";i:2;s:4:"cols";i:1;s:4:"name";s:12:"translations";s:7:"options";a:1:{i:2;s:1:"0";}}}}s:4:"rows";i:2;s:4:"cols";i:1;s:4:"size";s:5:",,,,5";s:7:"options";a:1:{i:4;s:1:"5";}}}','size' => ',,,,5','style' => '','modified' => '1175950333',);
$templ_data[] = array('name' => 'phpgwapi.about.index.templates','template' => '','lang' => '','group' => '0','version' => '1.4.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:223:"<strong>This is a list of your available templates</strong><br />For a complete list of templates available for eGroupWare visit <a href="http://www.egroupware.org/templates" target="_blank">www.egroupware.org/templates</a>";}}i:2;a:1:{s:1:"A";a:6:{s:4:"type";s:4:"grid";s:4:"name";s:9:"templates";s:4:"data";a:3:{i:0;a:2:{s:2:"c1";s:2:"th";s:2:"c2";s:7:"row,top";}i:1;a:7:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"name";}s:1:"C";a:2:{s:4:"type";s:5:"label";s:5:"label";s:6:"author";}s:1:"D";a:2:{s:4:"type";s:5:"label";s:5:"label";s:10:"maintainer";}s:1:"E";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"version";}s:1:"F";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"license";}s:1:"G";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"details";}}i:2;a:7:{s:1:"A";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:21:"${row}[templateImage]";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:20:"${row}[templateName]";}s:1:"C";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:22:"${row}[templateAuthor]";}s:1:"D";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:26:"${row}[templateMaintainer]";}s:1:"E";a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:23:"${row}[templateVersion]";}s:1:"F";a:4:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:23:"${row}[templateLicense]";s:5:"align";s:6:"center";}s:1:"G";a:3:{s:4:"type";s:4:"html";s:4:"name";s:23:"${row}[templateDetails]";s:5:"align";s:6:"center";}}}s:4:"rows";i:2;s:4:"cols";i:7;s:7:"options";a:0:{}}}}s:4:"rows";i:2;s:4:"cols";i:1;s:4:"size";s:5:",,,,5";s:7:"options";a:1:{i:4;s:1:"5";}}}','size' => ',,,,5','style' => '','modified' => '1175950302',);

View File

@ -14,7 +14,7 @@
/* Basic information about this app */
$setup_info['phpgwapi']['name'] = 'phpgwapi';
$setup_info['phpgwapi']['title'] = 'eGroupWare API';
$setup_info['phpgwapi']['version'] = '1.3.022';
$setup_info['phpgwapi']['version'] = '1.3.023';
$setup_info['phpgwapi']['versions']['current_header'] = '1.28';
$setup_info['phpgwapi']['enable'] = 3;
$setup_info['phpgwapi']['app_order'] = 1;

View File

@ -782,7 +782,13 @@
$test[] = '1.3.021';
function phpgwapi_upgrade1_3_021()
{
# 1.4 Beta RC 1
# 1.4 RC 1
return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.3.022';
}
?>
$test[] = '1.3.022';
function phpgwapi_upgrade1_3_022()
{
# 1.4 RC 2
return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.3.023';
}

View File

@ -100,7 +100,7 @@
<div id="divMain">
<table border="0" width="100%">
<tr>
<td width="20%" rowspan="3">{accountsel_icon}</td>
<td width="25%" rowspan="3">{accountsel_icon}</td>
<td align="right" colspan="5">
<form method="POST" action="{search_action}">
{query_type}
@ -127,8 +127,8 @@
<table border="0" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td valign="top" width="20%">
<table border="0" width="100%" cellpadding="2" cellspacing="2">
<td valign="top" width="25%">
<table border="0" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td class="th" colspan="2" align="center"><b>{lang_groups}</b></td>
</tr>
@ -149,7 +149,7 @@
<tr class="{tr_color}">
<td><a href="{link_user_group}" title="{lang_list_members}">{name_user_group}</a></td>
<td align="center">
<input type="image" src="{img}" onclick="{onclick}; return false;" title="{lang_select_group}">
<input type="image" src="{img}" style="width: 16px;" onclick="{onclick}; return false;" title="{lang_select_group}">
</td>
</tr>
<!-- END group_cal -->
@ -184,7 +184,7 @@
</table>
</td>
<td valign="top">
<table border="0" width="100%" cellpadding="2" cellspacing="2">
<table border="0" width="100%" cellpadding="0" cellspacing="2">
<tr class="th">
<td width="100%" class="th" align="center" colspan="4"><b>{lang_accounts}</b></td>
</tr>
@ -202,7 +202,7 @@
<td>{firstname}</td>
<td>{lastname}</td>
<td align="center">
<input type="image" src="{img}" onclick="{onclick}; return false;" title="{lang_select_user}">
<input type="image" src="{img}" style="width: 16px;" onclick="{onclick}; return false;" title="{lang_select_user}">
</td>
</tr>