From 8e6837762ae2bc8cba54aded468cb2882d89fbdd Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Mon, 31 Mar 2003 18:16:33 +0000 Subject: [PATCH] update preferences: helptexts --- preferences/inc/hook_settings.inc.php | 66 ++- preferences/preferences.php | 384 +++++++++++------- preferences/templates/default/preferences.tpl | 50 ++- 3 files changed, 302 insertions(+), 198 deletions(-) diff --git a/preferences/inc/hook_settings.inc.php b/preferences/inc/hook_settings.inc.php index 6faa1b1c3c..c6a1203f13 100755 --- a/preferences/inc/hook_settings.inc.php +++ b/preferences/inc/hook_settings.inc.php @@ -23,22 +23,41 @@ $_themes[$value] = $value; } - create_input_box('Max matches per page','maxmatchs'); - create_select_box('Interface/Template Selection','template_set',$_templates); - create_select_box('Theme (colors/fonts) Selection','theme',$_themes); + create_input_box('Max matches per page','maxmatchs', + 'Any listing in phpGW will show you this number or entries or lines per page.
+ To many slow down the page display, to less will cost you the overview.',15,3); + create_select_box('Interface/Template Selection','template_set',$_templates, + 'A template defines the layout of phpGroupWare and it contains icons vor each application.'); + create_select_box('Theme (colors/fonts) Selection','theme',$_themes, + 'A theme defines the colors and fonts used by the template.'); $navbar_format = array( 'icons' => lang('Icons only'), 'icons_and_text' => lang('Icons and text'), 'text' => lang('Text only') ); - create_select_box('Show navigation bar as','navbar_format',$navbar_format); + create_select_box('Show navigation bar as','navbar_format',$navbar_format, + 'You can show the applications as icons only, icons with app-name or both.'); + $format = $GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat']; + $format = ($format ? $format : 'Y/m/d') . ', '; + if ($GLOBALS['phpgw_info']['user']['preferences']['common']['timeformat'] == '12') + { + $format .= 'h:i a'; + } + else + { + $format .= 'H:i'; + } for ($i = -23; $i<24; $i++) { - $tz_offset[$i] = $i; + $t = time() + $i * 60*60; + $tz_offset[$i] = $i . ' ' . lang('hours').': ' . date($format,$t); } - create_select_box('Time zone offset','tz_offset',$tz_offset); + create_select_box('Time zone offset','tz_offset',$tz_offset, + 'How many hours are you in front or after the timezone of the server.
+ If you are in the same time zone as the server select 0 hours, + else select your locale date and time.',0); $date_formats = array( 'm/d/Y' => 'm/d/Y', @@ -54,16 +73,19 @@ 'd-m-Y' => 'd-m-Y', 'd.m.Y' => 'd.m.Y' ); - create_select_box('Date format','dateformat',$date_formats); + create_select_box('Date format','dateformat',$date_formats, + 'How should phpGroupWare display dates for you.'); $time_formats = array( '12' => lang('12 hour'), '24' => lang('24 hour') ); - create_select_box('Time format','timeformat',$time_formats); + create_select_box('Time format','timeformat',$time_formats, + 'Do you prefer a 24 hour time format, or a 12 hour one with am/pm attached.'); $sbox = createobject('phpgwapi.sbox'); - create_select_box('Country','country',$sbox->country_array); + create_select_box('Country','country',$sbox->country_array, + 'In which country are you. This is used to set certain defaults for you.'); $db2 = $GLOBALS['phpgw']->db; $GLOBALS['phpgw']->db->query("select distinct lang from phpgw_lang",__LINE__,__FILE__); @@ -90,17 +112,15 @@ $langs[$key] = $trans; } } - create_select_box('Language','lang',$langs); - + create_select_box('Language','lang',$langs, + 'Select the language of texts and messages within phpGroupWare.
+ Some languages may not contain all messages, in that case you will see an english message.'); + // preference.php handles this function if (is_admin()) { - // The 'True' is *NOT* being used as a constant, don't change it - $yes_and_no = array( - 'True' => lang('Yes'), - '' => lang('No') - ); - create_select_box('Show current users on navigation bar','show_currentusers',$yes_and_no); + create_check_box('Show current users on navigation bar','show_currentusers', + 'Should the number of active sessions be displayed for you all the time.'); } reset($GLOBALS['phpgw_info']['user']['apps']); @@ -111,6 +131,14 @@ $user_apps[$app] = $GLOBALS['phpgw_info']['apps'][$app]['title'] ? $GLOBALS['phpgw_info']['apps'][$app]['title'] : lang($app); } } - create_select_box('Default application','default_app',$user_apps); + create_select_box('Default application','default_app',$user_apps, + "This is the application which will be started when you enter phpGroupWare or click on the homepage icon.
+ You can also have more than one applications showing up on the homepage, if you don't + choose a specific application here (has to be configured in the preferences of + each applicaton)."); - create_input_box('Currency','currency'); + create_input_box('Currency','currency', + 'Which currency symbole or name should be used in phpGroupWare.'); + + create_check_box('Show helpmessages by default','show_help', + 'Should the help messages always be shown when you enter the preferences or only on request.'); diff --git a/preferences/preferences.php b/preferences/preferences.php index 50f3357953..3f8892832f 100755 --- a/preferences/preferences.php +++ b/preferences/preferences.php @@ -11,62 +11,55 @@ /* $Id$ */ - $user = (@isset($GLOBALS['HTTP_POST_VARS']['user'])?$GLOBALS['HTTP_POST_VARS']['user']:''); - $forced = (@isset($GLOBALS['HTTP_POST_VARS']['forced'])?$GLOBALS['HTTP_POST_VARS']['forced']:''); - $default = (@isset($GLOBALS['HTTP_POST_VARS']['default'])?$GLOBALS['HTTP_POST_VARS']['default']:''); - $GLOBALS['phpgw_info']['flags'] = array( 'noheader' => True, 'noappheader' => True, 'nonavbar' => True, - 'currentapp' => $GLOBALS['HTTP_GET_VARS']['appname'], + 'currentapp' => $_GET['appname'], 'enable_nextmatchs_class' => True ); include('../header.inc.php'); - + + if ($_POST['cancel']) + { + $GLOBALS['phpgw']->redirect_link('/preferences/index.php'); + } + $user = get_var('user',Array('POST')); $forced = get_var('forced',Array('POST')); $default = get_var('default',Array('POST')); - $GLOBALS['appname'] = get_var('appname',Array('GET')); - - if(get_var('cancel',Array('POST'))) - { - Header('Location: ' . $GLOBALS['phpgw']->link('/preferences/index.php')); - } - $t = CreateObject('phpgwapi.Template',$GLOBALS['phpgw']->common->get_tpl_dir('preferences')); $t->set_file(array( - '_preferences' => 'preferences.tpl' + 'preferences' => 'preferences.tpl' )); - $t->set_block('_preferences','list'); - $t->set_block('_preferences','row'); - - $t->set_block('_preferences','header'); - $t->set_block('_preferences','footer'); - $t->set_block('_preferences','row_error'); - - if ($GLOBALS['HTTP_GET_VARS']['appname'] != 'preverences') + $t->set_block('preferences','list','lists'); + $t->set_block('preferences','row','rowhandle'); + $t->set_block('preferences','help_row','help_rowhandle'); + $t->set_var(array('rowhandle' => '','help_rowhandle' => '','messages' => '')); + + if ($_GET['appname'] != 'preverences') { $GLOBALS['phpgw']->translation->add_app('preferences'); // we need the prefs translations too } + /* Make things a little easier to follow */ /* Some places we will need to change this if there in common */ function check_app() { - if ($GLOBALS['appname'] == 'preferences') + if ($_GET['appname'] == 'preferences') { return 'common'; } else { - return $GLOBALS['appname']; + return $_GET['appname']; } } function is_forced_value($_appname,$preference_name) { - if ($GLOBALS['gp']->data[$_appname][$preference_name] && $GLOBALS['type'] != 'forced') + if (isset($GLOBALS['gp']->data[$_appname][$preference_name]) && $GLOBALS['type'] != 'forced') { return True; } @@ -76,60 +69,89 @@ } } - function create_input_box($label_name,$preference_name,$size = '',$max_size = '') + function create_password_box($label_name,$preference_name,$help='',$size = '',$max_size = '') { - global $t; - + global $user,$forced,$default; + $_appname = check_app(); - $GLOBALS['phpgw']->nextmatchs->template_alternate_row_color($t); - $t->set_var('row_name',lang($label_name)); - if (is_forced_value($_appname,$preference_name)) { return True; } + create_input_box($label_name,$preference_name.'][pw',$help,'',$size,$max_size,'password'); + } + + function create_input_box($label,$name,$help='',$default='',$size = '',$max_size = '',$type='') + { + global $t,$prefs; - switch ($GLOBALS['type']) + $_appname = check_app(); + if (is_forced_value($_appname,$name)) { - case 'user': - $s = ''; - break; - case 'default': - $s = ''; - break; - case 'forced': - $s = ''; - break; + return True; } - $t->set_var('row_value',$s); - $t->fp('rows','row',True); + if ($type) // used to specify password + { + $options = " TYPE='$type'"; + } + if ($size) + { + $options .= " SIZE='$size'"; + } + if ($maxsize) + { + $options .= " MAXSIZE='$maxsize'"; + } + + if (isset($prefs[$name]) || $GLOBALS['type'] != 'user') + { + $default = $prefs[$name]; + } + + $t->set_var('row_value',""); + $t->set_var('row_name',lang($label)); + $GLOBALS['phpgw']->nextmatchs->template_alternate_row_color($t); + + $t->fp('rows',process_help($help) ? 'help_row' : 'row',True); + } + + function process_help($help) + { + global $t,$show_help,$has_help; + + if (!empty($help)) + { + $has_help = True; + + if ($show_help) + { + $t->set_var('help_value',lang($help)); + + return True; + } + } + return False; } - function create_check_box($label_name,$preference_name) + function create_check_box($label,$name,$help='',$default='') { - global $t; - - if ($GLOBALS['type'] != 'user') // for default and forced we need a 3. setting + // checkboxes itself can't be use as they return nothing if uncheckt !!! + global $prefs; + + if ($GLOBALS['type'] != 'user') { - return create_select_box($label_name,$preference_name,array( - '0' => lang('No'), - '1' => lang('Yes') - )); + $default = ''; // no defaults for default or forced prefs } - $_appname = check_app(); - $GLOBALS['phpgw']->nextmatchs->template_alternate_row_color($t); - $t->set_var('row_name',lang($label_name)); - - if (is_forced_value($_appname,$preference_name)) + if (isset($prefs[$name])) { - return True; + $prefs[$name] = intval(!!$prefs[$name]); // to care for '' and 'True' } - - $s = ''; - $t->set_var('row_value',$s); - - $t->fp('rows','row',True); + + return create_select_box($label,$name,array( + '0' => lang('No'), + '1' => lang('Yes') + ),$help,$default); } function create_option_string($selected,$values) @@ -137,7 +159,7 @@ while (is_array($values) && list($var,$value) = each($values)) { $s .= '' - . create_option_string($GLOBALS['phpgw_info']['user']['preferences'][$_appname][$preference_name],$values); - $t->set_var('row_value',''); + $s = ''; break; case 'default': - $s = '' - . create_option_string($GLOBALS['dp']->data[$_appname][$preference_name],$values); - $t->set_var('row_value',''); + $s = ''; break; case 'forced': - $s = '' - . create_option_string($GLOBALS['gp']->data[$_appname][$preference_name],$values); - $t->set_var('row_value',''); + $s = ''; break; } + $s .= create_option_string($default,$values); + $t->set_var('row_value',""); + $t->set_var('row_name',lang($label)); + $GLOBALS['phpgw']->nextmatchs->template_alternate_row_color($t); - $t->fp('rows','row',True); + $t->fp('rows',process_help($help) ? 'help_row' : 'row',True); } - function create_text_area($label_name,$preference_name,$rows,$cols) + function create_text_area($label,$name,$rows,$cols,$help='',$default='') { - global $t; + global $t,$prefs; $_appname = check_app(); - $GLOBALS['phpgw']->nextmatchs->template_alternate_row_color($t); - $t->set_var('row_name',lang($label_name)); - - if (is_forced_value($_appname,$preference_name)) + if (is_forced_value($_appname,$name)) { return True; } - - switch ($GLOBALS['type']) + + if (isset($prefs[$name]) || $GLOBALS['type'] != 'user') { - case 'user': - $s = ''; - break; - case 'default': - $s = ''; - break; - case 'forced': - $s = ''; - break; + $default = $prefs[$name]; } - $t->set_var('row_value',$s); - $t->fp('rows','row',True); + $t->set_var('row_value',""); + $t->set_var('row_name',lang($label)); + $GLOBALS['phpgw']->nextmatchs->template_alternate_row_color($t); + + $t->fp('rows',process_help($help) ? 'help_row' : 'row',True); } function process_array(&$_p, $array) @@ -220,6 +233,14 @@ { if (isset($value) && $value != '' && $value != '**NULL**') { + if (is_array($value)) + { + $value = $value['pw']; + if (empty($value)) + { + continue; // dont write empty password-fields + } + } $_p->add($_appname,$var,$value); } else @@ -230,9 +251,6 @@ $_p->save_repository(True); } - $p = createobject('phpgwapi.preferences'); - $p->read_repository(); - /* So we can check if the admin is allowing users to make there own choices */ /* in life. */ $GLOBALS['gp'] = createobject('phpgwapi.preferences',-1); @@ -249,7 +267,7 @@ /* and is able to create less powerfull admins. This will handle the ACL checks for that (jengo) */ function is_admin() { - if (HAS_ADMIN_RIGHTS == 1) + if (HAS_ADMIN_RIGHTS == 1 && !isset($_GET['prefix'])) // tabs only without prefix { return True; } @@ -258,50 +276,46 @@ return False; } } + + function show_list($header = ' ') + { + global $t,$list_shown; + + $t->set_var('list_header',$header); + $t->parse('lists','list',$list_shown); + + $t->set_var('rows',''); + $list_shown = True; + } + + $session_data = $GLOBALS['phpgw']->session->appsession('session_data','preferences'); if (is_admin()) { /* This is where we will keep track of our postion. */ /* Developers won't have to pass around a variable then */ - $session_data = $GLOBALS['phpgw']->session->appsession('session_data','preferences'); - if (!($GLOBALS['type'] = get_var('type',Array('GET','POST')))) - { - $GLOBALS['type'] = is_array($session_data) ? $session_data['type'] : 'user'; - } + $GLOBALS['type'] = get_var('type',Array('GET','POST'),$session_data['type']); + if (empty($GLOBALS['type'])) { $GLOBALS['type'] = 'user'; } - $GLOBALS['phpgw']->session->appsession('session_data','preferences',array( - 'type' => $GLOBALS['type'] - )); - - $tabs[] = array( - 'label' => lang('Your preferences'), - 'link' => $GLOBALS['phpgw']->link('/preferences/preferences.php','appname=' . $GLOBALS['appname'] . '&type=user') - ); - $tabs[] = array( - 'label' => lang('Default preferences'), - 'link' => $GLOBALS['phpgw']->link('/preferences/preferences.php','appname=' . $GLOBALS['appname'] . '&type=default') - ); - $tabs[] = array( - 'label' => lang('Forced preferences'), - 'link' => $GLOBALS['phpgw']->link('/preferences/preferences.php','appname=' . $GLOBALS['appname'] . '&type=forced') - ); - - switch($GLOBALS['type']) - { - case 'user': $selected = 0; break; - case 'default': $selected = 1; break; - case 'forced': $selected = 2; break; - } - $t->set_var('tabs',$GLOBALS['phpgw']->common->create_tabs($tabs,$selected)); } else { $GLOBALS['type'] = 'user'; } + $prefix = get_var('prefix',array('GET'),$session_data['prefix']); + + $show_help = "$session_data[show_help]" != '' ? $session_data['show_help'] : + intval($GLOBALS['phpgw_info']['user']['preferences']['common']['show_help']); + + if ($toggle_help = get_var('toggle_help','POST')) + { + $show_help = intval(!$show_help); + } + $has_help = 0; /* Only load if there working on the default preferences */ if ($GLOBALS['type'] == 'default') @@ -310,12 +324,12 @@ $GLOBALS['dp']->read_repository(); } - if (get_var('submit',Array('POST'))) + if ($_POST['submit']) { /* Don't use a switch here, we need to check some permissions durring the ifs */ if ($GLOBALS['type'] == 'user' || !($GLOBALS['type'])) { - process_array($p, $user); + process_array($GLOBALS['phpgw']->preferences, $user); } if ($GLOBALS['type'] == 'default' && is_admin()) @@ -328,29 +342,56 @@ process_array($GLOBALS['gp'], $forced); } - Header('Location: ' . $GLOBALS['phpgw']->link('/preferences/index.php')); - $GLOBALS['phpgw_info']['flags']['nodisplay'] = True; - exit; + if (!is_admin()) + { + $GLOBALS['phpgw']->redirect_link('/preferences/index.php'); + } + + if ($GLOBALS['type'] == 'user' && $_GET['appname'] == 'preferences' && $user['show_help'] != '') + { + $show_help = $user['show_help']; // use it, if admin changes his help-prefs + } } + $GLOBALS['phpgw']->session->appsession('session_data','preferences',array( + 'type' => $GLOBALS['type'], // save our state in the app-session + 'show_help' => $show_help, + 'prefix' => $prefix + )); - $GLOBALS['phpgw']->common->phpgw_header(); - - if ($GLOBALS['appname'] == 'preferences') + if ($_GET['appname'] == 'preferences') { $t->set_var('lang_title',lang('Preferences')); } else { - $t->set_var('lang_title',lang('%1 - Preferences',$GLOBALS['phpgw_info']['apps'][$GLOBALS['HTTP_GET_VARS']['appname']]['title'])); + $t->set_var('lang_title',lang('%1 - Preferences',$GLOBALS['phpgw_info']['apps'][$_GET['appname']]['title'])); } - $t->set_var('action_url',$GLOBALS['phpgw']->link('/preferences/preferences.php','appname=' . $GLOBALS['appname'])); - $t->set_var('th_bg', $GLOBALS['phpgw_info']['theme']['th_bg']); - $t->set_var('th_text',$GLOBALS['phpgw_info']['theme']['th_text']); - $t->set_var('row_on', $GLOBALS['phpgw_info']['theme']['row_on']); - $t->set_var('row_off',$GLOBALS['phpgw_info']['theme']['row_off']); + $t->set_var('action_url',$GLOBALS['phpgw']->link('/preferences/preferences.php','appname=' . $_GET['appname'])); - if ($GLOBALS['appname'] == 'preferences') + switch ($GLOBALS['type']) // set up some globals to be used by the hooks + { + case 'forced': + $prefs = &$GLOBALS['gp']->data[check_app()]; + break; + case 'default': + $prefs = &$GLOBALS['dp']->data[check_app()]; + break; + default: + $prefs = &$GLOBALS['phpgw']->preferences->data[check_app()]; + // use prefix if given in the url, used for email extra-accounts + if ($_GET['prefix'] != '') + { + $prefix = explode('/',$_GET['prefix']); + foreach ($prefix as $pre) + { + $prefs = &$prefs[$pre]; + } + } + } + //echo "prefs=
"; print_r($prefs); echo "
\n"; + + if ($_GET['appname'] == 'preferences') { if (! $GLOBALS['phpgw']->hooks->single('settings','preferences',True)) { @@ -359,7 +400,7 @@ } else { - if (! $GLOBALS['phpgw']->hooks->single('settings',$GLOBALS['appname'])) + if (! $GLOBALS['phpgw']->hooks->single('settings',$_GET['appname'])) { $error = True; } @@ -367,19 +408,46 @@ if ($error) { + $t->set_block('preferences','form','formhandle'); // skip the form + $t->set_var('formhandle',''); + $t->set_var('messages',lang('Error: There was a problem finding the preference file for %1 in %2', - $GLOBALS['phpgw_info']['navbar'][$GLOBALS['appname']]['title'],PHPGW_SERVER_ROOT . SEP - . $GLOBALS['appname'] . SEP . 'inc' . SEP . 'hook_settings.inc.php')); + $GLOBALS['phpgw_info']['navbar'][$_GET['appname']]['title'],PHPGW_SERVER_ROOT . SEP + . $_GET['appname'] . SEP . 'inc' . SEP . 'hook_settings.inc.php')); } - $t->pfp('out','header'); - $t->set_var('lang_submit', lang('submit')); - $t->set_var('lang_cancel', lang('cancel')); - - if (! $error) + if (is_admin()) { - $t->pfp('out','list'); - $t->pfp('out','footer'); + $tabs[] = array( + 'label' => lang('Your preferences'), + 'link' => $GLOBALS['phpgw']->link('/preferences/preferences.php','appname=' . $_GET['appname'] . "&type=user") + ); + $tabs[] = array( + 'label' => lang('Default preferences'), + 'link' => $GLOBALS['phpgw']->link('/preferences/preferences.php','appname=' . $_GET['appname'] . "&type=default") + ); + $tabs[] = array( + 'label' => lang('Forced preferences'), + 'link' => $GLOBALS['phpgw']->link('/preferences/preferences.php','appname=' . $_GET['appname'] . "&type=forced") + ); + + switch($GLOBALS['type']) + { + case 'user': $selected = 0; break; + case 'default': $selected = 1; break; + case 'forced': $selected = 2; break; + } + $t->set_var('tabs',$GLOBALS['phpgw']->common->create_tabs($tabs,$selected)); } - $GLOBALS['phpgw']->common->phpgw_footer(); + $t->set_var('lang_submit', lang('save')); + $t->set_var('lang_cancel', lang('cancel')); + $t->set_var('show_help',intval($show_help)); + $t->set_var('help_button',$has_help ? '' : ''); + + if (!$list_shown) + { + show_list(); + } + $t->parse('phpgw_body','preferences'); ?> diff --git a/preferences/templates/default/preferences.tpl b/preferences/templates/default/preferences.tpl index 3faf2156f3..128275d971 100644 --- a/preferences/templates/default/preferences.tpl +++ b/preferences/templates/default/preferences.tpl @@ -1,40 +1,48 @@ - {lang_title} -

- -

{messages}
- - - - - -
{tabs}
+
+
+
{messages}
+
- - - - -
- +
- - + -
{tabs}
- -   + {list_header} {rows} + + +   + + +   {help_button} + + + +
+ + {row_name} {row_value} + + + + {row_name} + {row_value} + + + {help_value} + +