forked from extern/egroupware
first step for real timezones in EGroupware
This commit is contained in:
parent
1353ae511a
commit
610b629325
@ -204,6 +204,8 @@ class egw extends egw_minimal
|
||||
// init the translation class, necessary as own wakeup would run before our's
|
||||
translation::init();
|
||||
|
||||
$this->unset_datetime();
|
||||
|
||||
// verify the session
|
||||
$GLOBALS['egw']->verify_session();
|
||||
$GLOBALS['egw']->check_app_rights();
|
||||
@ -211,6 +213,14 @@ class egw extends egw_minimal
|
||||
$this->load_optional_classes();
|
||||
}
|
||||
|
||||
/**
|
||||
* Unsetting datetime object, so time gets updated
|
||||
*/
|
||||
function unset_datetime()
|
||||
{
|
||||
unset($this->datetime);
|
||||
}
|
||||
|
||||
/**
|
||||
* load optional classes by mentioning them in egw_info[flags][enable_CLASS_class] => true
|
||||
*
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/**
|
||||
* eGroupWare API - Preferences
|
||||
*
|
||||
*
|
||||
* @link http://www.egroupware.org
|
||||
* @author Joseph Engo <jengo@phpgroupware.org>
|
||||
* @author Mark Peters <skeeter@phpgroupware.org>
|
||||
@ -15,7 +15,7 @@
|
||||
/**
|
||||
* preferences class used for setting application preferences
|
||||
*
|
||||
* the prefs are read into 4 arrays:
|
||||
* the prefs are read into 4 arrays:
|
||||
* $data the effective prefs used everywhere in phpgw, they are merged from the other 3 arrays
|
||||
* $user the stored user prefs, only used for manipulating and storeing the user prefs
|
||||
* $default the default preferences, always used when the user has no own preference set
|
||||
@ -34,17 +34,17 @@ class preferences
|
||||
*/
|
||||
var $account_type;
|
||||
/**
|
||||
* effectiv user prefs, used by all apps
|
||||
* effectiv user prefs, used by all apps
|
||||
* @var array
|
||||
*/
|
||||
var $data = array();
|
||||
/**
|
||||
* set user prefs for saveing (no defaults/forced prefs merged)
|
||||
* set user prefs for saveing (no defaults/forced prefs merged)
|
||||
* @var array
|
||||
*/
|
||||
var $user = array();
|
||||
/**
|
||||
* default prefs
|
||||
* default prefs
|
||||
* @var array
|
||||
*/
|
||||
var $default = array();
|
||||
@ -59,7 +59,7 @@ class preferences
|
||||
*/
|
||||
var $session = array();
|
||||
/**
|
||||
* @var egw_db
|
||||
* @var egw_db
|
||||
*/
|
||||
var $db;
|
||||
/**
|
||||
@ -116,7 +116,7 @@ class preferences
|
||||
}
|
||||
return str_replace($replace,$with,$msg);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* replaces the english key's with translated ones, or if $un_lang the opposite
|
||||
*
|
||||
@ -313,11 +313,36 @@ class preferences
|
||||
echo 'user<pre>'; print_r($this->user); echo "</pre>\n";
|
||||
echo 'forced<pre>'; print_r($this->forced); echo "</pre>\n";
|
||||
echo 'default<pre>'; print_r($this->default); echo "</pre>\n";
|
||||
echo 'effectiv<pre>'; print_r($this->data); echo "</pre>\n";
|
||||
echo 'effectiv<pre>'; print_r($this->data); echo "</pre>\n";
|
||||
}
|
||||
$this->check_set_tz_offset();
|
||||
|
||||
return $this->data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checking new timezoen ('tz') pref and setting old tz_offset pref from it
|
||||
*
|
||||
*/
|
||||
function check_set_tz_offset()
|
||||
{
|
||||
$prefs =& $this->data['common'];
|
||||
|
||||
if (isset($prefs['tz']))
|
||||
{
|
||||
$GLOBALS['egw']->datetimezone = new DateTimeZone($prefs['tz']);
|
||||
$server_offset = date('Z');
|
||||
$GLOBALS['egw']->datetime_now = new DateTime('now',$GLOBALS['egw']->datetimezone);
|
||||
$utc_offset = $GLOBALS['egw']->datetime_now->getOffset();
|
||||
$user_now = $GLOBALS['egw']->datetime_now->format('Y-m-d H:i:s e (T)');
|
||||
$GLOBALS['egw_info']['user']['preferences']['common']['tz_offset'] = $prefs['tz_offset'] = ($utc_offset - $server_offset)/3600;
|
||||
|
||||
//echo "<p>".__METHOD__."() tz='{$prefs['tz']}'=$utc_offset=$user_now, server=date('Z')=$server_offset --> $prefs[tz_offset]</p>\n";
|
||||
|
||||
$GLOBALS['egw']->unset_datetime(); // to force an update
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* read preferences from repository and stores in an array
|
||||
*
|
||||
@ -452,7 +477,7 @@ class preferences
|
||||
reset ($this->data);
|
||||
return $this->data;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* delete all prefs of a given user
|
||||
*
|
||||
@ -653,41 +678,41 @@ class preferences
|
||||
$GLOBALS['egw_info']['user']['preferences'] = array();
|
||||
}
|
||||
/* This takes care of new users who don't have proper default prefs setup */
|
||||
if (!isset($GLOBALS['egw_info']['flags']['nocommon_preferences']) ||
|
||||
if (!isset($GLOBALS['egw_info']['flags']['nocommon_preferences']) ||
|
||||
!$GLOBALS['egw_info']['flags']['nocommon_preferences'])
|
||||
{
|
||||
$preferences_update = False;
|
||||
if (!isset($GLOBALS['egw_info']['user']['preferences']['common']['maxmatchs']) ||
|
||||
if (!isset($GLOBALS['egw_info']['user']['preferences']['common']['maxmatchs']) ||
|
||||
!$GLOBALS['egw_info']['user']['preferences']['common']['maxmatchs'])
|
||||
{
|
||||
$this->add('common','maxmatchs',15);
|
||||
$preferences_update = True;
|
||||
}
|
||||
if (!isset($GLOBALS['egw_info']['user']['preferences']['common']['theme']) ||
|
||||
if (!isset($GLOBALS['egw_info']['user']['preferences']['common']['theme']) ||
|
||||
!$GLOBALS['egw_info']['user']['preferences']['common']['theme'])
|
||||
{
|
||||
$this->add('common','theme','default');
|
||||
$preferences_update = True;
|
||||
}
|
||||
if (!isset($GLOBALS['egw_info']['user']['preferences']['common']['template_set']) ||
|
||||
if (!isset($GLOBALS['egw_info']['user']['preferences']['common']['template_set']) ||
|
||||
!$GLOBALS['egw_info']['user']['preferences']['common']['template_set'])
|
||||
{
|
||||
$this->add('common','template_set','default');
|
||||
$preferences_update = True;
|
||||
}
|
||||
if (!isset($GLOBALS['egw_info']['user']['preferences']['common']['dateformat']) ||
|
||||
if (!isset($GLOBALS['egw_info']['user']['preferences']['common']['dateformat']) ||
|
||||
!$GLOBALS['egw_info']['user']['preferences']['common']['dateformat'])
|
||||
{
|
||||
$this->add('common','dateformat','m/d/Y');
|
||||
$preferences_update = True;
|
||||
}
|
||||
if (!isset($GLOBALS['egw_info']['user']['preferences']['common']['timeformat']) ||
|
||||
if (!isset($GLOBALS['egw_info']['user']['preferences']['common']['timeformat']) ||
|
||||
!$GLOBALS['egw_info']['user']['preferences']['common']['timeformat'])
|
||||
{
|
||||
$this->add('common','timeformat',12);
|
||||
$preferences_update = True;
|
||||
}
|
||||
if (!isset($GLOBALS['egw_info']['user']['preferences']['common']['lang']) ||
|
||||
if (!isset($GLOBALS['egw_info']['user']['preferences']['common']['lang']) ||
|
||||
!$GLOBALS['egw_info']['user']['preferences']['common']['lang'])
|
||||
{
|
||||
$this->add('common','lang',$GLOBALS['egw']->common->getPreferredLanguage());
|
||||
@ -712,8 +737,8 @@ class preferences
|
||||
* mail server of type pop3, pop3s, imap, imaps users value from
|
||||
* $phpgw_info['user']['preferences']['email']['mail_port'].
|
||||
* if that value is not set, it generates a default port for the given $server_type.
|
||||
* Someday, this *MAY* be
|
||||
* (a) a se4rver wide admin setting, or
|
||||
* Someday, this *MAY* be
|
||||
* (a) a se4rver wide admin setting, or
|
||||
* (b)user custom preference
|
||||
* Until then, simply set the port number based on the mail_server_type, thereof
|
||||
* ONLY call this function AFTER ['email']['mail_server_type'] has been set.
|
||||
@ -757,7 +782,7 @@ class preferences
|
||||
$port_number = 993;
|
||||
break;
|
||||
case 'imap':
|
||||
// IMAP normal connection, No SSL
|
||||
// IMAP normal connection, No SSL
|
||||
default:
|
||||
// UNKNOWN SERVER in Preferences, return a
|
||||
// default value that is likely to work
|
||||
@ -794,8 +819,8 @@ class preferences
|
||||
/**
|
||||
* returns the custom email-address (if set) or generates a default one
|
||||
*
|
||||
* This will generate the appropriate email address used as the "From:"
|
||||
* email address when the user sends email, the localpert * part. The "personal"
|
||||
* This will generate the appropriate email address used as the "From:"
|
||||
* email address when the user sends email, the localpert * part. The "personal"
|
||||
* part is generated elsewhere.
|
||||
* In the absence of a custom ['email']['address'], this function should be used to set it.
|
||||
*
|
||||
@ -836,9 +861,9 @@ class preferences
|
||||
* $GLOBALS['egw_info']['user']['preferences'] = $GLOBALS['egw']->preferences->create_email_preferences();
|
||||
* which fills an array based at:
|
||||
* $GLOBALS['egw_info']['user']['preferences']['email'][prefs_are_elements_here]
|
||||
* Reading the raw preference DB data and comparing to the email preference schema defined in
|
||||
* /email/class.bopreferences.inc.php (see discussion there and below) to create default preference values
|
||||
* for the in the ['email'][] pref data array in cases where the user has not supplied
|
||||
* Reading the raw preference DB data and comparing to the email preference schema defined in
|
||||
* /email/class.bopreferences.inc.php (see discussion there and below) to create default preference values
|
||||
* for the in the ['email'][] pref data array in cases where the user has not supplied
|
||||
* a preference value for any particular preference item available to the user.
|
||||
* @access Public
|
||||
*/
|
||||
@ -878,7 +903,7 @@ class preferences
|
||||
// prefs are actually a sub-element of the main email prefs
|
||||
// at location [email][ex_accounts][X][...pref names] => pref values
|
||||
// make this look like "prefs[email] so the code below code below will do its job transparently
|
||||
|
||||
|
||||
// obtain the desired sub-array of extra account prefs
|
||||
$sub_prefs = array();
|
||||
$sub_prefs['email'] = $prefs['email']['ex_accounts'][$acctnum];
|
||||
@ -893,7 +918,7 @@ class preferences
|
||||
// Default Preferences info that is:
|
||||
// (a) not controlled by email prefs itself (mostly api and/or server level stuff)
|
||||
// (b) too complicated to be described in the email prefs data array instructions
|
||||
|
||||
|
||||
// --- [server][mail_server_type] ---
|
||||
// Set API Level Server Mail Type if not defined
|
||||
// if for some reason the API didnot have a mail server type set during initialization
|
||||
@ -960,11 +985,11 @@ class preferences
|
||||
|
||||
// --- make the schema-based pref data for this user ---
|
||||
// user defined values and/or user specified custom email prefs are read from the
|
||||
// prefs DB with mininal manipulation of the data. Currently the only change to
|
||||
// prefs DB with mininal manipulation of the data. Currently the only change to
|
||||
// users raw data is related to reversing the encoding of "database un-friendly" chars
|
||||
// which itself may become unnecessary if and when the database handlers can reliably
|
||||
// which itself may become unnecessary if and when the database handlers can reliably
|
||||
// take care of this for us. Of course, password data requires special decoding,
|
||||
// but the password in the array [email][paswd] should be left in encrypted form
|
||||
// but the password in the array [email][paswd] should be left in encrypted form
|
||||
// and only decrypted seperately when used to login in to an email server.
|
||||
|
||||
// --- generating a default value if necessary ---
|
||||
@ -983,7 +1008,7 @@ class preferences
|
||||
// default value for a particular preference if one is needed (i.e. if no user custom
|
||||
// email preference exists that should override that default value, in which case we
|
||||
// do not even need to obtain such a default value as described in ['init_default'] anyway).
|
||||
|
||||
|
||||
// --- loop thru $avail_pref_array and process each pref item ---
|
||||
$c_prefs = count($avail_pref_array);
|
||||
for($i=0;$i<$c_prefs;$i++)
|
||||
@ -994,7 +1019,7 @@ class preferences
|
||||
|
||||
// --- is there a value in the DB for this preference item ---
|
||||
// if the prefs DB has no value for this defined available preference, we must make one.
|
||||
// This occurs if (a) this is user's first login, or (b) this is a custom pref which the user
|
||||
// This occurs if (a) this is user's first login, or (b) this is a custom pref which the user
|
||||
// has not overriden, do a default (non-custom) value is needed.
|
||||
if (!isset($prefs['email'][$this_avail_pref['id']]))
|
||||
{
|
||||
@ -1034,7 +1059,7 @@ class preferences
|
||||
}
|
||||
else
|
||||
{
|
||||
// opposite of boolean not_set = string "True" which simply sets a
|
||||
// opposite of boolean not_set = string "True" which simply sets a
|
||||
// value it exists in the users session [email][] preference array
|
||||
$prefs['email'][$this_avail_pref['id']] = 'True';
|
||||
}
|
||||
@ -1058,7 +1083,7 @@ class preferences
|
||||
// INIT_NO_FILL
|
||||
elseif ($set_proc[0] == 'init_no_fill')
|
||||
{
|
||||
// we have an available preference item that we may NOT fill with a default
|
||||
// we have an available preference item that we may NOT fill with a default
|
||||
// value. Only the user may supply a value for this pref item.
|
||||
print_debug('* handle "init_no_fill" set_proc:', serialize($set_proc),'api');
|
||||
// we are FORBADE from filling this at this time!
|
||||
@ -1066,7 +1091,7 @@ class preferences
|
||||
// varEVAL
|
||||
elseif ($set_proc[0] == 'varEVAL')
|
||||
{
|
||||
// similar to "function" but used for array references, the string in $set_proc[1]
|
||||
// similar to "function" but used for array references, the string in $set_proc[1]
|
||||
// represents code which typically is an array referencing a system/api property
|
||||
print_debug('* handle "GLOBALS" set_proc:', serialize($set_proc),'api');
|
||||
$evaled = '';
|
||||
@ -1092,8 +1117,8 @@ class preferences
|
||||
/// here until the next OFFICIAL submit email prefs function, where it
|
||||
// will again get this preparation before being written to the database.
|
||||
|
||||
// NOTE: if database de-fanging is eventually handled deeper in the
|
||||
// preferences class, then the following code would become depreciated
|
||||
// NOTE: if database de-fanging is eventually handled deeper in the
|
||||
// preferences class, then the following code would become depreciated
|
||||
// and should be removed in that case.
|
||||
if (($this_avail_pref['type'] == 'user_string') &&
|
||||
(stristr($this_avail_pref['write_props'], 'no_db_defang') == False))
|
||||
@ -1107,7 +1132,7 @@ class preferences
|
||||
}
|
||||
// users preferences are now established to known structured values...
|
||||
|
||||
// SANITY CHECK
|
||||
// SANITY CHECK
|
||||
// --- [email][use_trash_folder] ---
|
||||
// --- [email][use_sent_folder] ---
|
||||
// is it possible to use Trash and Sent folders - i.e. using IMAP server
|
||||
@ -1127,7 +1152,7 @@ class preferences
|
||||
|
||||
// DEBUG : force some settings to test stuff
|
||||
//$prefs['email']['p_persistent'] = 'True';
|
||||
|
||||
|
||||
print_debug('class.preferences: $acctnum: ['.$acctnum.'] ; create_email_preferences: $prefs[email]', $prefs['email'],'api');
|
||||
print_debug('class.preferences: create_email_preferences: LEAVING', 'messageonly','api');
|
||||
return $prefs;
|
||||
|
@ -1,321 +1,365 @@
|
||||
<?php
|
||||
/**************************************************************************\
|
||||
* eGroupWare - Preferences *
|
||||
* 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 - Preferences
|
||||
*
|
||||
* @link http://www.egroupware.org
|
||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||
* @package preferences
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/* $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'];
|
||||
}
|
||||
|
||||
/* Setup some values to fill the array of this app's settings below */
|
||||
$templates = $GLOBALS['egw']->common->list_templates();
|
||||
foreach($templates as $var => $value)
|
||||
$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).' '.$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)
|
||||
{
|
||||
$_templates[$var] = $templates[$var]['title'];
|
||||
$user_apps[$app] = $GLOBALS['egw_info']['apps'][$app]['title'] ? $GLOBALS['egw_info']['apps'][$app]['title'] : lang($app);
|
||||
}
|
||||
}
|
||||
|
||||
$themes = $GLOBALS['egw']->common->list_themes();
|
||||
foreach($themes as $value)
|
||||
{
|
||||
$_themes[$value] = $value;
|
||||
}
|
||||
$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'),
|
||||
);
|
||||
|
||||
$navbar_format = array(
|
||||
'icons' => lang('Icons only'),
|
||||
'icons_and_text' => lang('Icons and text'),
|
||||
'text' => lang('Text only')
|
||||
);
|
||||
$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'),
|
||||
);
|
||||
|
||||
$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);
|
||||
}
|
||||
|
||||
$date_formats = array(
|
||||
'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',
|
||||
'Y.m.d' => 'Y.m.d',
|
||||
'd/m/Y' => 'd/m/Y',
|
||||
'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')
|
||||
);
|
||||
|
||||
$langs = $GLOBALS['egw']->translation->get_installed_langs();
|
||||
|
||||
$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
|
||||
/* 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'),
|
||||
),
|
||||
'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
|
||||
),
|
||||
'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']);
|
||||
'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']);
|
||||
|
Loading…
Reference in New Issue
Block a user