- added an optional timezone quick selection in top menu (it shows up

only if you select more then one timezone to display in it)
- moved generation of beautified timezone array to egw_time
- moved all preferences hooks to a new class preferences_hooks (updated
  version so setup updates hook data, or you need to call admin>>update
  hooks)
This commit is contained in:
Ralf Becker 2009-10-12 09:41:46 +00:00
parent e3c468361d
commit 587bd2bc95
7 changed files with 454 additions and 441 deletions

View File

@ -23,10 +23,10 @@
* e) footer
* It replaces several methods in the common class and the diverse templates.
*
* Existing apps either set $GLOBALS['egw_info']['flags']['noheader'] and call $GLOBALS['egw']->common->egw_header() and
* Existing apps either set $GLOBALS['egw_info']['flags']['noheader'] and call common::egw_header() and
* (if $GLOBALS['egw_info']['flags']['nonavbar'] is true) parse_navbar() or it's done by the header.inc.php include.
* The app's hook_sidebox then calls the public function display_sidebox().
* And the app calls $GLOBALS['egw']->common->egw_footer().
* And the app calls common::egw_footer().
*
* This are the authors (and their copyrights) of the original egw_header, egw_footer methods of the common class:
* This file written by Dan Kuykendall <seek3r@phpgroupware.org>
@ -247,7 +247,7 @@ abstract class egw_framework
}
else
{
$var['favicon_file'] = $GLOBALS['egw']->common->image('phpgwapi',$GLOBALS['egw_info']['server']['favicon_file']?$GLOBALS['egw_info']['server']['favicon_file']:'favicon.ico');
$var['favicon_file'] = common::image('phpgwapi',$GLOBALS['egw_info']['server']['favicon_file']?$GLOBALS['egw_info']['server']['favicon_file']:'favicon.ico');
}
return $this->_get_css()+array(
@ -259,7 +259,7 @@ abstract class egw_framework
'slider_effects' => $slider_effects,
'simple_show_hide' => $simple_show_hide,
'lang_code' => $lang_code,
'charset' => $GLOBALS['egw']->translation->charset(),
'charset' => translation::charset(),
'website_title' => strip_tags($GLOBALS['egw_info']['server']['site_title']. ($app ? " [$app]" : '')),
'body_tags' => self::_get_body_attribs(),
'java_script' => self::_get_js(),
@ -298,7 +298,7 @@ abstract class egw_framework
if($GLOBALS['egw_info']['user']['lastpasswd_change'] == 0)
{
$api_messages = lang('You are required to change your password during your first login').'<br />'.
lang('Click this image on the navbar: %1','<img src="'.$GLOBALS['egw']->common->image('preferences','navbar.gif').'">');
lang('Click this image on the navbar: %1','<img src="'.common::image('preferences','navbar.gif').'">');
}
elseif($GLOBALS['egw_info']['user']['lastpasswd_change'] < time() - (86400*30))
{
@ -317,7 +317,7 @@ abstract class egw_framework
}
else
{
$var['logo_file'] = $GLOBALS['egw']->common->image('phpgwapi',$GLOBALS['egw_info']['server']['login_logo_file']?$GLOBALS['egw_info']['server']['login_logo_file']:'logo');
$var['logo_file'] = common::image('phpgwapi',$GLOBALS['egw_info']['server']['login_logo_file']?$GLOBALS['egw_info']['server']['login_logo_file']:'logo');
}
$var['logo_url'] = $GLOBALS['egw_info']['server']['login_logo_url']?$GLOBALS['egw_info']['server']['login_logo_url']:'http://www.eGroupWare.org';
@ -337,12 +337,23 @@ abstract class egw_framework
*/
protected static function _user_time_info()
{
$now = time();
$user_info = '<b>'.$GLOBALS['egw']->common->display_fullname() .'</b>'. ' - '
. lang($GLOBALS['egw']->common->show_date($now,'l')) . ' '
. $GLOBALS['egw']->common->show_date($now,$GLOBALS['egw_info']['user']['preferences']['common']['dateformat']);
$now = new egw_time();
$user_info = '<b>'.common::display_fullname() .'</b>'. ' - ' . lang($now->format('l')) . ' ' . $now->format(true);
return $user_info;
$tz = explode(',',$GLOBALS['egw_info']['user']['preferences']['common']['tz']);
$tz_selection = explode(',',$GLOBALS['egw_info']['user']['preferences']['common']['tz_selection']);
if (count($tz_selection) > 1)
{
if (!in_array($tz,$tz_selection)) $tz_selection = array_merge((array)$tz,$tz_selection);
$tz_selection = array_combine($tz_selection,$tz_selection);
foreach($tz_selection as $name => &$label)
{
$label = str_replace(array('_','/'),array(' ',' / '),$label);
}
$user_info .= html::form(html::select('tz',$tz,$tz_selection,true,' onchange="this.form.submit();"'),array(),
'/index.php','','tz_selection',' style="display: inline;"','GET');
}
return $user_info;
}
/**
@ -354,7 +365,7 @@ abstract class egw_framework
{
if( $GLOBALS['egw_info']['user']['apps']['admin'] && $GLOBALS['egw_info']['user']['preferences']['common']['show_currentusers'])
{
$current_users = '<a href="' . $GLOBALS['egw']->link('/index.php','menuaction=admin.uicurrentsessions.list_sessions') . '">' .
$current_users = '<a href="' . egw::link('/index.php','menuaction=admin.uicurrentsessions.list_sessions') . '">' .
lang('Current users') . ': ' . $GLOBALS['egw']->session->session_count() . '</a>';
return $current_users;
}
@ -373,7 +384,7 @@ abstract class egw_framework
$options = array(lang('Add').' ...');
foreach($apps as $app => $label)
{
$link = $GLOBALS['egw']->link('/index.php',egw_link::add($app,$GLOBALS['egw_info']['flags']['currentapp'],$GLOBALS['egw_info']['flags']['currentid'])+
$link = egw::link('/index.php',egw_link::add($app,$GLOBALS['egw_info']['flags']['currentapp'],$GLOBALS['egw_info']['flags']['currentid'])+
(is_array($GLOBALS['egw_info']['flags']['quick_add']) ? $GLOBALS['egw_info']['flags']['quick_add'] : array()));
if (($popup = egw_link::is_popup($app,'add')))
{
@ -432,7 +443,7 @@ abstract class egw_framework
$index = '/index.php?menuaction='.$data['index'];
}
}
return $GLOBALS['egw']->link($index,$GLOBALS['egw_info']['flags']['params'][$app]);
return egw::link($index,$GLOBALS['egw_info']['flags']['params'][$app]);
}
/**
@ -496,13 +507,13 @@ abstract class egw_framework
$icon_app = isset($data['icon_app']) ? $data['icon_app'] : $app;
if ($app != $GLOBALS['egw_info']['flags']['currentapp'])
{
$apps[$app]['icon'] = $GLOBALS['egw']->common->image($icon_app,Array($icon,'nonav'));
$apps[$app]['icon_hover'] = $GLOBALS['egw']->common->image_on($icon_app,Array($icon,'nonav'),'-over');
$apps[$app]['icon'] = common::image($icon_app,Array($icon,'nonav'));
$apps[$app]['icon_hover'] = common::image_on($icon_app,Array($icon,'nonav'),'-over');
}
else
{
$apps[$app]['icon'] = $GLOBALS['egw']->common->image_on($icon_app,Array($icon,'nonav'),'-over');
$apps[$app]['icon_hover'] = $GLOBALS['egw']->common->image($icon_app,Array($icon,'nonav'));
$apps[$app]['icon'] = common::image_on($icon_app,Array($icon,'nonav'),'-over');
$apps[$app]['icon_hover'] = common::image($icon_app,Array($icon,'nonav'));
}
}
}
@ -526,14 +537,14 @@ abstract class egw_framework
// We handle this here becuase its special
$apps['about']['title'] = lang('About %1',$app_title);
$apps['about']['url'] = $GLOBALS['egw']->link('/about.php','app='.$app);
$apps['about']['icon'] = $GLOBALS['egw']->common->image('phpgwapi',Array('about','nonav'));
$apps['about']['icon_hover'] = $GLOBALS['egw']->common->image_on('phpgwapi',Array('about','nonav'),'-over');
$apps['about']['url'] = egw::link('/about.php','app='.$app);
$apps['about']['icon'] = common::image('phpgwapi',Array('about','nonav'));
$apps['about']['icon_hover'] = common::image_on('phpgwapi',Array('about','nonav'),'-over');
$apps['logout']['title'] = lang('Logout');
$apps['logout']['url'] = $GLOBALS['egw']->link('/logout.php');
$apps['logout']['icon'] = $GLOBALS['egw']->common->image('phpgwapi',Array('logout','nonav'));
$apps['logout']['icon_hover'] = $GLOBALS['egw']->common->image_on('phpgwapi',Array('logout','nonav'),'-over');
$apps['logout']['url'] = egw::link('/logout.php');
$apps['logout']['icon'] = common::image('phpgwapi',Array('logout','nonav'));
$apps['logout']['icon_hover'] = common::image_on('phpgwapi',Array('logout','nonav'),'-over');
return $apps;
}
@ -651,7 +662,7 @@ abstract class egw_framework
{
require_once(EGW_SERVER_ROOT.'/phpgwapi/inc/xajax.inc.php');
$xajax = new xajax($GLOBALS['egw']->link('/xajax.php'), 'xajax_', $GLOBALS['egw']->translation->charset());
$xajax = new xajax(egw::link('/xajax.php'), 'xajax_', translation::charset());
$xajax->waitCursorOff();
$xajax->registerFunction("doXMLHTTP");

View File

@ -311,19 +311,21 @@ class egw_time extends DateTime
* Setter for user timezone, should be called after reading user preferences
*
* @param string $tz timezone, eg. 'Europe/Berlin' or 'UTC'
* @param string $dateformat eg. 'Y-m-d' or 'd.m.Y'
* @param string|int $timeformat integer 12, 24, or format string eg. 'H:i'
* @param string $dateformat='' eg. 'Y-m-d' or 'd.m.Y'
* @param string|int $timeformat='' integer 12, 24, or format string eg. 'H:i'
* @throws egw_exception_wrong_userinput if invalid $tz parameter
* @return DateTimeZone
*/
public static function setUserPrefs($tz,$dateformat,$timeformat)
public static function setUserPrefs($tz,$dateformat='',$timeformat='')
{
//echo "<p>".__METHOD__."('$tz','$dateformat','$timeformat') ".function_backtrace()."</p>\n";
if (!empty($dateformat)) self::$user_dateformat = $dateformat;
switch($timeformat)
{
case '24':
case '':
break;
case '24':
self::$user_timeformat = 'H:i';
break;
case '12':
@ -377,6 +379,54 @@ class egw_time extends DateTime
self::$user_timezone = clone(self::$server_timezone);
}
}
/**
* Return "beautified" timezone list:
* - no depricated timezones
* - return UTC and oceans at the end
* - if (user lang is a european language), move Europe to top
*
* @return array continent|ocean => array(tz-name => tz-label incl. current time)
*/
public static function getTimezones()
{
// prepare list of timezones from php, ignoring depricated ones and sort as follows
$tzs = array(
'Africa' => array(), // Contients
'America' => array(),
'Asia' => array(),
'Australia' => array(),
'Europe' => array(),
'Atlantic' => array(), // Oceans
'Pacific' => array(),
'Indian' => array(),
'Antarctica' => array(), // Poles
'Arctic' => array(),
'UTC' => array('UTC' => 'UTC'),
);
foreach(DateTimeZone::listIdentifiers() as $name)
{
list($continent,$rest) = explode('/',$name,2);
if (!isset($tzs[$continent])) continue; // old depricated timezones
$datetime = new egw_time('now',new DateTimeZone($name));
$tzs[$continent][$name] = str_replace(array('_','/'),array(' ',' / '),$name).' &nbsp; '.$datetime->format();
unset($datetime);
}
foreach($tzs as $continent => &$data)
{
natcasesort($data); // sort cities
}
unset($data);
// if user lang or installed langs contain a european language --> move Europe to top of tz list
$langs = $GLOBALS['egw']->translation->get_installed_langs();
if (array_intersect(array($GLOBALS['egw_info']['user']['preferences']['common']['lang'])+array_keys($langs),
array('de','fr','it','nl','bg','ca','cs','da','el','es-es','et','eu','fi','hr','hu','lt','no','pl','pt','sk','sl','sv','tr','uk')))
{
$tzs = array_merge(array('Europe' => $tzs['Europe']),$tzs);
}
return $tzs;
}
}
egw_time::init();

View File

@ -0,0 +1,359 @@
<?php
/**
* EGroupware - Preferences hooks
*
* @link http://www.egroupware.org
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @package preferences
* @version $Id$
*/
/**
* Static hooks for preferences class
*/
class preferences_hooks
{
/**
* Hook return common preferences settings
*
* @param string|array $hook_data
* @return array
*/
static public function settings($hook_data)
{
// Setup some values to fill the array of this app's settings below
$templates = common::list_templates();
foreach($templates as $var => $value)
{
$_templates[$var] = $templates[$var]['title'];
}
$themes = common::list_themes();
foreach($themes as $value)
{
$_themes[$value] = $value;
}
$navbar_format = array(
'icons' => lang('Icons only'),
'icons_and_text' => lang('Icons and text'),
'text' => lang('Text only')
);
$link_list_format = array(
'icons' => lang('Icons only'),
'icons_and_text' => lang('Icons and text'),
'text' => lang('Text only')
);
$langs = translation::get_installed_langs();
$tzs = egw_time::getTimezones();
$date_formats = array(
'd.m.Y' => 'd.m.Y',
'Y-m-d' => 'Y-m-d',
'm/d/Y' => 'm/d/Y',
'm-d-Y' => 'm-d-Y',
'm.d.Y' => 'm.d.Y',
'Y/d/m' => 'Y/d/m',
'Y-d-m' => 'Y-d-m',
'Y.d.m' => 'Y.d.m',
'Y/m/d' => 'Y/m/d',
'Y.m.d' => 'Y.m.d',
'd/m/Y' => 'd/m/Y',
'd-m-Y' => 'd-m-Y',
'd-M-Y' => 'd-M-Y'
);
$time_formats = array(
'12' => lang('12 hour'),
'24' => lang('24 hour')
);
$html_enter_mode = array(
'p' => lang('p: Paragraph'),
'div' => lang('div'),
'br' => lang('br')
);
$rich_text_editor_skins = array(
'default' => lang ('Default theme'),
'office2003' => lang ('Office 2003 theme'),
'silver' => lang ('Silver theme')
);
$user_apps = array();
foreach($GLOBALS['egw_info']['user']['apps'] as $app => $data)
{
if($GLOBALS['egw_info']['apps'][$app]['status'] != 2 && $app)
{
$user_apps[$app] = $GLOBALS['egw_info']['apps'][$app]['title'] ? $GLOBALS['egw_info']['apps'][$app]['title'] : lang($app);
}
}
$account_sels = array(
'selectbox' => lang('Selectbox'),
'primary_group' => lang('Selectbox with primary group and search'),
'popup' => lang('Popup with search'),
'groupmembers' => lang('Selectbox with groupmembers'),
'none' => lang('No user-selection at all'),
);
$account_display = array(
'firstname' => lang('Firstname'). ' '.lang('Lastname'),
'lastname' => lang('Lastname').', '.lang('Firstname'),
'username' => lang('username'),
'firstall' => lang('Firstname').' '.lang('Lastname').' ['.lang('username').']',
'lastall' => lang('Lastname').', '.lang('Firstname').' ['.lang('username').']',
'allfirst' => '['.lang('username').'] '.lang('Firstname').' '.lang('Lastname'),
'all' => '['.lang('username').'] '.lang('Lastname').','.lang('Firstname'),
);
// Settings array for this app
$settings = array(
'maxmatchs' => array(
'type' => 'input',
'label' => 'Max matches per page',
'name' => 'maxmatchs',
'help' => 'Any listing in eGW will show you this number of entries or lines per page.<br>To many slow down the page display, to less will cost you the overview.',
'size' => 3,
'xmlrpc' => True,
'admin' => False
),
'template_set' => array(
'type' => 'select',
'label' => 'Interface/Template Selection',
'name' => 'template_set',
'values' => $_templates,
'help' => 'A template defines the layout of eGroupWare and it contains icons for each application.',
'xmlrpc' => True,
'admin' => False
),
'theme' => array(
'type' => 'select',
'label' => 'Theme (colors/fonts) Selection',
'name' => 'theme',
'values' => $_themes,
'help' => 'A theme defines the colors and fonts used by the template.',
'xmlrpc' => True,
'admin' => False
),
'navbar_format' => array(
'type' => 'select',
'label' => 'Show navigation bar as',
'name' => 'navbar_format',
'values' => $navbar_format,
'help' => 'You can show the applications as icons only, icons with app-name or both.',
'xmlrpc' => True,
'admin' => False
),
'link_list_format' => array(
'type' => 'select',
'label' => 'Show links between eGroupWare aps as',
'name' => 'link_list_format',
'values' => $link_list_format,
'help' => 'You can show the linked entries with icons only, icons with app-name or both.',
'xmlrpc' => True,
'admin' => False
),
'link_list_thumbnail' => array(
'type' => 'select',
'label' => 'Display thumbnails for linked images',
'name' => 'link_list_thumbnail',
'values' => array(
'1' => lang('Yes'),
'0' => lang('No'),
),
'help' => 'Images linked to an entry can be displayed as thumbnails. You can turn this off to speed up page display.',
'xmlrpc' => True,
'admin' => False
),
'tz' => array(
'type' => 'select',
'label' => 'Time zone',
'name' => 'tz',
'values' => $tzs,
'help' => 'Please select your timezone.',
'xmlrpc' => True,
'admin' => False
),
'tz_selection' => array(
'type' => 'multiselect',
'label' => 'Permanent time zone selection',
'name' => 'tz_selection',
'values' => call_user_func_array('array_merge',$tzs), // only flat arrays supported
'help' => 'Please select timezones, you want to be able to quickly switch between. Switch is NOT shown, if less then two are selected.',
'xmlrpc' => True,
'admin' => False
),
'dateformat' => array(
'type' => 'select',
'label' => 'Date format',
'name' => 'dateformat',
'values' => $date_formats,
'help' => 'How should eGroupWare display dates for you.',
'xmlrpc' => True,
'admin' => False
),
'timeformat' => array(
'type' => 'select',
'label' => 'Time format',
'name' => 'timeformat',
'values' => $time_formats,
'help' => 'Do you prefer a 24 hour time format, or a 12 hour one with am/pm attached.',
'xmlrpc' => True,
'admin' => False
),
'country' => array(
'type' => 'select',
'label' => 'Country',
'name' => 'country',
'values' => ExecMethod('phpgwapi.country.countries'),
'help' => 'In which country are you. This is used to set certain defaults for you.',
'xmlrpc' => True,
'admin' => False
),
'lang' => array(
'type' => 'select',
'label' => 'Language',
'name' => 'lang',
'values' => $langs,
'help' => 'Select the language of texts and messages within eGroupWare.<br>Some languages may not contain all messages, in that case you will see an english message.',
'xmlrpc' => True,
'admin' => False
),
'spellchecker_lang' => array(
'type' => 'select',
'label' => 'Spellchecker language',
'name' => 'spellchecker_lang',
'values' => $langs,
'help' => 'Select the language of the spellchecker integrated into the rich text editor.',
'xmlrpc' => True,
'admin' => False
),
'rte_enter_mode' => array(
'type' => 'select',
'label' => 'Rich text editor enter mode',
'name' => 'rte_enter_mode',
'values' => $html_enter_mode,
'help' => 'Select how the rich text editor will generate the enter (linebreak) tag.',
'xmlrpc' => True,
'admin' => False
),
'rte_skin' => array(
'type' => 'select',
'label' => 'Rich text editor theme',
'name' => 'rte_skin',
'values' => $rich_text_editor_skins,
'help' => 'Select the theme (visualization) of the rich text editor.',
'xmlrpc' => True,
'admin' => False
),
'show_currentusers' => array(
'type' => 'check',
'label' => 'Show number of current users',
'name' => 'show_currentusers',
'help' => 'Should the number of active sessions be displayed for you all the time.',
'xmlrpc' => False,
'admin' => True
),
'default_app' => array(
'type' => 'select',
'label' => 'Default application',
'name' => 'default_app',
'values' => $user_apps,
'help' => "The default application will be started when you enter eGroupWare or click on the homepage icon.<br>You can also have more than one application showing up on the homepage, if you don't choose a specific application here (has to be configured in the preferences of each application).",
'xmlrpc' => False,
'admin' => False
),
'currency' => array(
'type' => 'input',
'label' => 'Currency',
'name' => 'currency',
'help' => 'Which currency symbol or name should be used in eGroupWare.',
'xmlrpc' => True,
'admin' => False
),
'account_selection' => array(
'type' => 'select',
'label' => 'How do you like to select accounts',
'name' => 'account_selection',
'values' => $account_sels,
'help' => lang('The selectbox shows all available users (can be very slow on big installs with many users). The popup can search users by name or group.').' '.
lang('The two last options limit the visibility of other users. Therefore they should be forced and apply NOT to administrators.'),
'run_lang' => false,
'xmlrpc' => True,
'admin' => False
),
'account_display' => array(
'type' => 'select',
'label' => 'How do you like to display accounts',
'name' => 'account_display',
'values' => $account_display,
'help' => 'Set this to your convenience. For security reasons, you might not want to show your Loginname in public.',
'xmlrpc' => True,
'admin' => False
),
'show_help' => array(
'type' => 'check',
'label' => 'Show helpmessages by default',
'name' => 'show_help',
'help' => 'Should this help messages shown up always, when you enter the preferences or only on request.',
'xmlrpc' => False,
'admin' => False
),
'enable_dragdrop' => array(
'type' => 'check',
'label' => 'Enable drag and drop functionality (experimental)',
'name' => 'enable_dragdrop',
'help' => 'Enables or disables drag and drop functions in all applications. If the browser does not support '.
'drag and drop, it will be disabled automatically. This feature is experimental at the moment.',
'xmlrpc' => False,
'admin' => False
),
'csv_charset' => array(
'type' => 'select',
'label' => 'Charset for the CSV export',
'name' => 'csv_charset',
'values' => translation::get_installed_charsets()+array('utf-8' => 'utf-8 (Unicode)'),
'help' => 'Which charset should be used for the CSV export. The system default is the charset of this eGroupWare installation.',
'xmlrpc' => True,
'admin' => false,
),
);
// disable thumbnails, if no size configured by admin
if (!$GLOBALS['egw_info']['server']['link_list_thumbnail']) unset($settings['link_list_thumbnail']);
return $settings;
}
/**
* Hook to return preferences menu items
*
* @param string|array $hook_data
*/
public static function preferences($hook_data)
{
if (!$GLOBALS['egw']->acl->check('nopasswordchange',1))
{
$file['Change your Password'] = $GLOBALS['egw']->link('/index.php','menuaction=preferences.uipassword.change');
}
$file['common preferences'] = $GLOBALS['egw']->link('/index.php','menuaction=preferences.uisettings.index&appname=preferences');
display_section('preferences',$file);
}
/**
* Hook called when a user gets deleted, to delete his preferences
*
* @param string|array $hook_data
*/
public static function deleteaccount($hook_data)
{
if((int)$GLOBALS['hook_values']['account_id'] > 0)
{
$GLOBALS['egw']->preferences->delete_user($GLOBALS['hook_values']['account_id']);
}
}
}

View File

@ -1,19 +0,0 @@
<?php
/**************************************************************************\
* eGroupWare *
* http://www.egroupware.org *
* Written by Mark Peters <skeeter@phpgroupware.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$ */
// Delete all prefs of a user
if((int)$GLOBALS['hook_values']['account_id'] > 0)
{
$GLOBALS['egw']->preferences->delete_user($GLOBALS['hook_values']['account_id']);
}

View File

@ -1,22 +0,0 @@
<?php
/**************************************************************************\
* eGroupWare *
* http://www.egroupware.org *
* Written by Joseph Engo <jengo@phpgroupware.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$ */
if (!$GLOBALS['egw']->acl->check('nopasswordchange',1))
{
$file['Change your Password'] = $GLOBALS['egw']->link('/index.php','menuaction=preferences.uipassword.change');
}
$file['common preferences'] = $GLOBALS['egw']->link('/index.php','menuaction=preferences.uisettings.index&appname=preferences');
display_section('preferences',$file);
?>

View File

@ -1,365 +0,0 @@
<?php
/**
* EGroupware - Preferences
*
* @link http://www.egroupware.org
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @package preferences
* @version $Id$
*/
/* Setup some values to fill the array of this app's settings below */
$templates = $GLOBALS['egw']->common->list_templates();
foreach($templates as $var => $value)
{
$_templates[$var] = $templates[$var]['title'];
}
$themes = $GLOBALS['egw']->common->list_themes();
foreach($themes as $value)
{
$_themes[$value] = $value;
}
$navbar_format = array(
'icons' => lang('Icons only'),
'icons_and_text' => lang('Icons and text'),
'text' => lang('Text only')
);
$link_list_format = array(
'icons' => lang('Icons only'),
'icons_and_text' => lang('Icons and text'),
'text' => lang('Text only')
);
$format = $GLOBALS['egw_info']['user']['preferences']['common']['dateformat'];
$format = ($format ? $format : 'Y/m/d') . ', ';
if($GLOBALS['egw_info']['user']['preferences']['common']['timeformat'] == '12')
{
$format .= 'h:i a';
}
else
{
$format .= 'H:i';
}
/*
for($i = -23.5; $i < 24.0; $i += 0.5)
{
$t = time() + round($i * 3600);
$tz_offset[(string)$i] = sprintf('%3.1lf',$i) . ' ' . lang('hours').': ' . date($format,$t);
}
*/
// prepare list of timezones from php, ignoring depricated ones and sort as follows
$tzs = array(
'Africa' => array(), // Contients
'America' => array(),
'Asia' => array(),
'Australia' => array(),
'Europe' => array(),
'Atlantic' => array(), // Oceans
'Pacific' => array(),
'Indian' => array(),
'Antarctica' => array(), // Poles
'Arctic' => array(),
'UTC' => array('UTC' => 'UTC'),
);
foreach(DateTimeZone::listIdentifiers() as $name)
{
list($continent,$rest) = explode('/',$name,2);
if (!isset($tzs[$continent])) continue; // old depricated timezones
$datetime = new DateTime('now',new DateTimeZone($name));
$tzs[$continent][$name] = str_replace(array('_','/'),array(' ',' / '),$name).' &nbsp; '.$datetime->format($format);
unset($datetime);
}
foreach($tzs as $continent => &$data)
{
natcasesort($data); // sort cities
}
unset($data);
// if user lang or installed langs contain a european language --> move Europe to top of tz list
$langs = $GLOBALS['egw']->translation->get_installed_langs();
if (array_intersect(array($GLOBALS['egw_info']['user']['preferences']['common']['lang'])+array_keys($langs),
array('de','fr','it','nl','bg','ca','cs','da','el','es-es','et','eu','fi','hr','hu','lt','no','pl','pt','sk','sl','sv','tr','uk')))
{
$tzs = array_merge(array('Europe' => $tzs['Europe']),$tzs);
}
$date_formats = array(
'd.m.Y' => 'd.m.Y',
'Y-m-d' => 'Y-m-d',
'm/d/Y' => 'm/d/Y',
'm-d-Y' => 'm-d-Y',
'm.d.Y' => 'm.d.Y',
'Y/d/m' => 'Y/d/m',
'Y-d-m' => 'Y-d-m',
'Y.d.m' => 'Y.d.m',
'Y/m/d' => 'Y/m/d',
'Y.m.d' => 'Y.m.d',
'd/m/Y' => 'd/m/Y',
'd-m-Y' => 'd-m-Y',
'd-M-Y' => 'd-M-Y'
);
$time_formats = array(
'12' => lang('12 hour'),
'24' => lang('24 hour')
);
$html_enter_mode = array(
'p' => lang('p: Paragraph'),
'div' => lang('div'),
'br' => lang('br')
);
$rich_text_editor_skins = array(
'default' => lang ('Default theme'),
'office2003' => lang ('Office 2003 theme'),
'silver' => lang ('Silver theme')
);
$user_apps = array();
foreach($GLOBALS['egw_info']['user']['apps'] as $app => $data)
{
if($GLOBALS['egw_info']['apps'][$app]['status'] != 2 && $app)
{
$user_apps[$app] = $GLOBALS['egw_info']['apps'][$app]['title'] ? $GLOBALS['egw_info']['apps'][$app]['title'] : lang($app);
}
}
$account_sels = array(
'selectbox' => lang('Selectbox'),
'primary_group' => lang('Selectbox with primary group and search'),
'popup' => lang('Popup with search'),
'groupmembers' => lang('Selectbox with groupmembers'),
'none' => lang('No user-selection at all'),
);
$account_display = array(
'firstname' => lang('Firstname'). ' '.lang('Lastname'),
'lastname' => lang('Lastname').', '.lang('Firstname'),
'username' => lang('username'),
'firstall' => lang('Firstname').' '.lang('Lastname').' ['.lang('username').']',
'lastall' => lang('Lastname').', '.lang('Firstname').' ['.lang('username').']',
'allfirst' => '['.lang('username').'] '.lang('Firstname'). ' '.lang('Lastname'),
'all' => '['.lang('username').'] '.lang('Lastname').',
'.lang('Firstname'),
);
/* Settings array for this app */
$GLOBALS['settings'] = array(
'maxmatchs' => array(
'type' => 'input',
'label' => 'Max matches per page',
'name' => 'maxmatchs',
'help' => 'Any listing in eGW will show you this number of entries or lines per page.<br>To many slow down the page display, to less will cost you the overview.',
'size' => 3,
'xmlrpc' => True,
'admin' => False
),
'template_set' => array(
'type' => 'select',
'label' => 'Interface/Template Selection',
'name' => 'template_set',
'values' => $_templates,
'help' => 'A template defines the layout of eGroupWare and it contains icons for each application.',
'xmlrpc' => True,
'admin' => False
),
'theme' => array(
'type' => 'select',
'label' => 'Theme (colors/fonts) Selection',
'name' => 'theme',
'values' => $_themes,
'help' => 'A theme defines the colors and fonts used by the template.',
'xmlrpc' => True,
'admin' => False
),
'navbar_format' => array(
'type' => 'select',
'label' => 'Show navigation bar as',
'name' => 'navbar_format',
'values' => $navbar_format,
'help' => 'You can show the applications as icons only, icons with app-name or both.',
'xmlrpc' => True,
'admin' => False
),
'link_list_format' => array(
'type' => 'select',
'label' => 'Show links between eGroupWare aps as',
'name' => 'link_list_format',
'values' => $link_list_format,
'help' => 'You can show the linked entries with icons only, icons with app-name or both.',
'xmlrpc' => True,
'admin' => False
),
'link_list_thumbnail' => array(
'type' => 'select',
'label' => 'Display thumbnails for linked images',
'name' => 'link_list_thumbnail',
'values' => array(
'1' => lang('Yes'),
'0' => lang('No'),
),
'help' => 'Images linked to an entry can be displayed as thumbnails. You can turn this off to speed up page display.',
'xmlrpc' => True,
'admin' => False
),
/*
'tz_offset' => array(
'type' => 'select',
'label' => 'Time zone offset',
'name' => 'tz_offset',
'values' => $tz_offset,
'help' => 'How many hours are you in front or after the timezone of the server.<br>If you are in the same time zone as the server select 0 hours, else select your locale date and time.',
'xmlrpc' => True,
'admin' => False
),
*/
'tz' => array(
'type' => 'select',
'label' => 'Time zone',
'name' => 'tz',
'values' => $tzs,
'help' => 'Please select your timezone.',
'xmlrpc' => True,
'admin' => False
),
'dateformat' => array(
'type' => 'select',
'label' => 'Date format',
'name' => 'dateformat',
'values' => $date_formats,
'help' => 'How should eGroupWare display dates for you.',
'xmlrpc' => True,
'admin' => False
),
'timeformat' => array(
'type' => 'select',
'label' => 'Time format',
'name' => 'timeformat',
'values' => $time_formats,
'help' => 'Do you prefer a 24 hour time format, or a 12 hour one with am/pm attached.',
'xmlrpc' => True,
'admin' => False
),
'country' => array(
'type' => 'select',
'label' => 'Country',
'name' => 'country',
'values' => ExecMethod('phpgwapi.country.countries'),
'help' => 'In which country are you. This is used to set certain defaults for you.',
'xmlrpc' => True,
'admin' => False
),
'lang' => array(
'type' => 'select',
'label' => 'Language',
'name' => 'lang',
'values' => $langs,
'help' => 'Select the language of texts and messages within eGroupWare.<br>Some languages may not contain all messages, in that case you will see an english message.',
'xmlrpc' => True,
'admin' => False
),
'spellchecker_lang' => array(
'type' => 'select',
'label' => 'Spellchecker language',
'name' => 'spellchecker_lang',
'values' => $langs,
'help' => 'Select the language of the spellchecker integrated into the rich text editor.',
'xmlrpc' => True,
'admin' => False
),
'rte_enter_mode' => array(
'type' => 'select',
'label' => 'Rich text editor enter mode',
'name' => 'rte_enter_mode',
'values' => $html_enter_mode,
'help' => 'Select how the rich text editor will generate the enter (linebreak) tag.',
'xmlrpc' => True,
'admin' => False
),
'rte_skin' => array(
'type' => 'select',
'label' => 'Rich text editor theme',
'name' => 'rte_skin',
'values' => $rich_text_editor_skins,
'help' => 'Select the theme (visualization) of the rich text editor.',
'xmlrpc' => True,
'admin' => False
),
'show_currentusers' => array(
'type' => 'check',
'label' => 'Show number of current users',
'name' => 'show_currentusers',
'help' => 'Should the number of active sessions be displayed for you all the time.',
'xmlrpc' => False,
'admin' => True
),
'default_app' => array(
'type' => 'select',
'label' => 'Default application',
'name' => 'default_app',
'values' => $user_apps,
'help' => "The default application will be started when you enter eGroupWare or click on the homepage icon.<br>You can also have more than one application showing up on the homepage, if you don't choose a specific application here (has to be configured in the preferences of each application).",
'xmlrpc' => False,
'admin' => False
),
'currency' => array(
'type' => 'input',
'label' => 'Currency',
'name' => 'currency',
'help' => 'Which currency symbol or name should be used in eGroupWare.',
'xmlrpc' => True,
'admin' => False
),
'account_selection' => array(
'type' => 'select',
'label' => 'How do you like to select accounts',
'name' => 'account_selection',
'values' => $account_sels,
'help' => lang('The selectbox shows all available users (can be very slow on big installs with many users). The popup can search users by name or group.').' '.
lang('The two last options limit the visibility of other users. Therefore they should be forced and apply NOT to administrators.'),
'run_lang' => false,
'xmlrpc' => True,
'admin' => False
),
'account_display' => array(
'type' => 'select',
'label' => 'How do you like to display accounts',
'name' => 'account_display',
'values' => $account_display,
'help' => 'Set this to your convenience. For security reasons, you might not want to show your Loginname in public.',
'xmlrpc' => True,
'admin' => False
),
'show_help' => array(
'type' => 'check',
'label' => 'Show helpmessages by default',
'name' => 'show_help',
'help' => 'Should this help messages shown up always, when you enter the preferences or only on request.',
'xmlrpc' => False,
'admin' => False
),
'enable_dragdrop' => array(
'type' => 'check',
'label' => 'Enable drag and drop functionality (experimental)',
'name' => 'enable_dragdrop',
'help' => 'Enables or disables drag and drop functions in all applications. If the browser does not support '.
'drag and drop, it will be disabled automatically. This feature is experimental at the moment.',
'xmlrpc' => False,
'admin' => False
),
'csv_charset' => array(
'type' => 'select',
'label' => 'Charset for the CSV export',
'name' => 'csv_charset',
'values' => $GLOBALS['egw']->translation->get_installed_charsets()+array('utf-8' => 'utf-8 (Unicode)'),
'help' => 'Which charset should be used for the CSV export. The system default is the charset of this eGroupWare installation.',
'xmlrpc' => True,
'admin' => false,
),
);
// disable thumbnails, if no size configured by admin
if (!$GLOBALS['egw_info']['server']['link_list_thumbnail']) unset($GLOBALS['settings']['link_list_thumbnail']);

View File

@ -11,17 +11,16 @@
$setup_info['preferences']['name'] = 'preferences';
$setup_info['preferences']['title'] = 'Preferences';
$setup_info['preferences']['version'] = '1.6';
$setup_info['preferences']['version'] = '1.7';
$setup_info['preferences']['app_order'] = 1;
$setup_info['preferences']['tables'] = '';
$setup_info['preferences']['enable'] = 2;
/* The hooks this app includes, needed for hooks registration */
$setup_info['preferences']['hooks'][] = 'deleteaccount';
$setup_info['preferences']['hooks'][] = 'config';
$setup_info['preferences']['hooks'][] = 'preferences';
$setup_info['preferences']['hooks'][] = 'settings';
$setup_info['preferences']['hooks']['edit_user'] = 'preferences.uisettings.edit_user';
$setup_info['preferences']['hooks']['deleteaccount'] = 'preferences_hooks::deleteaccount';
$setup_info['preferences']['hooks']['preferences'] = 'preferences_hooks::preferences';
$setup_info['preferences']['hooks']['settings'] = 'preferences_hooks::settings';
$setup_info['preferences']['hooks']['edit_user'] = 'preferences.uisettings.edit_user';
/* Dependencies for this app to work */
$setup_info['preferences']['depends'][] = array(