Rework common preferences

- Better grouping
- Added preferences for rich text editor
  - Font
  - Font size
Take effect on new, blank editors.  Existing data is untouched.
This commit is contained in:
Nathan Gray 2012-12-04 22:21:59 +00:00
parent 6a2b8882de
commit 3ee18797b0
3 changed files with 187 additions and 112 deletions

View File

@ -18,6 +18,38 @@ class egw_ckeditor_config
private static $enterMode = null;
private static $skin = null;
// Defaults, defined in phpgwapi/js/ckeditor3/_source/plugins/font/plugin.js
public static $font_options = array(
'arial, helvetica, sans-serif' => 'Arial',
'Comic Sans MS, cursive' => 'Comic Sans MS',
'Courier New, Courier, monospace' => 'Courier New',
'Georgia, serif' => 'Georgia',
'Lucida Sans Unicode, Lucida Grande, sans-serif' => 'Lucida Sans Unicode',
'Tahoma, Geneva, sans-serif' => 'Tahoma',
'times new roman, times, serif' => 'Times New Roman',
'Trebuchet MS, Helvetica, sans-serif' => 'Trebuchet MS',
'Verdana, Geneva, sans-serif' => 'Verdana'
);
public static $font_size_options = array(
'8px' => '8',
'9px' => '9',
'10px' => '10',
'11px' => '11',
'12px' => '12',
'14px' => '14',
'16px' => '16',
'18px' => '18',
'20px' => '20',
'22px' => '22',
'24px' => '24',
'26px' => '26',
'28px' => '28',
'36px' => '36',
'48px' => '48',
'72px' => '72'
);
/**
* Read language and country settings for the ckeditor and store them in static
* variables

View File

@ -295,7 +295,7 @@ class html
if($enhanced) {
egw_framework::validate_file('/phpgwapi/js/jquery/chosen/chosen.jquery.js');
egw_framework::includeCSS('/phpgwapi/js/jquery/chosen/chosen.css',null,false);
$out .= "<script>\$j(function() {\$j('select[name=\"$name\"]').chosen();});</script>\n";
$out .= "<script>\$j(function() {if(\$j().chosen) \$j('select[name=\"$name\"]').chosen();});</script>\n";
}
return $out;
}
@ -333,7 +333,7 @@ class html
}
$base_name = substr($name,0,-2);
if($enhanced) return self::select($name, $key, $arr,$no_lang,$options,$multiple,$enhanced);
if($enhanced) return self::select($name, $key, $arr,$no_lang,$options." style=\"$style\" ",$multiple,$enhanced);
if (!is_array($key))
{
@ -544,6 +544,10 @@ class html
$pxheight = (strpos('px', $_height) === false) ?
(empty($_height) ? 400 : $_height) : str_replace('px', '', $_height);
// User preferences
$font = $GLOBALS['egw_info']['user']['preferences']['common']['rte_font'];
+ $font_size = $GLOBALS['egw_info']['user']['preferences']['common']['rte_font_size'];
// we need to enable double encoding here, as ckEditor has to undo one level of encoding
// otherwise < and > chars eg. from html markup entered in regular (not source) input, will turn into html!
return self::textarea($_name,$_content,'id="'.htmlspecialchars($_name).'"',true). // true = double encoding
@ -558,7 +562,8 @@ class html
{
ev.editor.resize("100%", '.str_replace('px', '', $pxheight).');
}
);
);'.
(trim($_content) == '' ? 'CKEDITOR.instances["'.$_name.'"].setData("<span style=\"font-family:'.$font.';font-size:'.$font_size.';\">&#8203;</span>");' : '').'
</script>
';
}

View File

@ -108,6 +108,10 @@ class preferences_hooks
}
// Settings array for this app
$settings = array(
array(
'type' => 'section',
'title' => 'Look & feel'
),
'maxmatchs' => array(
'type' => 'input',
'label' => 'Max matches per page',
@ -184,6 +188,89 @@ class preferences_hooks
'admin' => False,
'default' => 'EGW_SELECTMODE_DEFAULT',
),
'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,
'default'=> 'primary_group'
),
'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,
'default'=> 'lastname',
),
'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,
'forced' => true,
),
'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,
'default'=> True,
),
'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,
'forced' => true,
),
'enable_ie_dropdownmenuhack' => array(
'type' => 'check',
'label' => 'Enable selectbox dropdown resizing for IE (experimental)',
'name' => 'enable_ie_dropdownmenuhack',
'help' => 'Enables or disables selectbox dropdown resizing for IE in all applications. If the browser is not an IE, the option will not apply. This feature is experimental at the moment.',
'xmlrpc' => False,
'admin' => False,
'forced' => false,
),
array(
'type' => 'section',
'title' => 'Formatting & general settings'
),
'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,
'default'=> $lang,
),
'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,
'default'=> strtoupper($country),
),
'tz' => array(
'type' => 'select',
'label' => 'Time zone',
@ -224,25 +311,63 @@ class preferences_hooks
'admin' => False,
'default'=> 24,
),
'country' => array(
'number_format' => 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.',
'label' => 'Number format',
'name' => 'number_format',
'values' => array(
'.' => '1234.56',
',' => '1234,56',
'.,' => '1,234.56',
',.' => '1.234,56',
'. ' => '1 234.56',
', ' => '1 234,56',
),
'help' => 'Thousands separator is only used for displaying and not for editing numbers.',
'xmlrpc' => True,
'admin' => False,
'default'=> strtoupper($country),
'admin' => false,
'default'=> '.',
),
'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.',
'currency' => array(
'type' => 'input',
'label' => 'Currency',
'name' => 'currency',
'help' => 'Which currency symbol or name should be used in eGroupWare.',
'xmlrpc' => True,
'admin' => False,
'default'=> $lang,
'default'=> $lang == 'en' ? '$' : 'EUR',
),
'csv_charset' => array(
'type' => 'select',
'label' => 'Charset for the CSV export/import',
'name' => 'csv_charset',
'values' => translation::get_installed_charsets(),
'help' => 'Which charset should be used for the CSV export. The system default is the charset of this eGroupWare installation.',
'xmlrpc' => True,
'admin' => false,
'default'=> 'iso-8859-1',
),
array(
'type' => 'section',
'title' => 'Text editor settings'
),
'rte_font' => array(
'type' => 'select',
'label' => 'Default font',
'name' => 'rte_font',
'values' => egw_ckeditor_config::$font_options,
'help' => 'Automatically start with this font',
'xmlrpc' => True,
'admin' => false
),
'rte_font_size' => array(
'type' => 'select',
'label' => 'Default font size',
'name' => 'rte_font_size',
'values' => egw_ckeditor_config::$font_size_options,
'help' => 'Automatically start with this font size',
'xmlrpc' => True,
'admin' => false
),
'spellchecker_lang' => array(
'type' => 'select',
@ -274,14 +399,14 @@ class preferences_hooks
'admin' => False,
'forced' => 'office2003',
),
'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,
'forced' => true,
'rte_features' => array(
'type' => 'select',
'label' => 'Features of the editor',
'name' => 'rte_features',
'values' => array('simple'=>'simple','extended'=>'regular','advanced'=>'everything'),
'help' => '',
'admin' => false,
'default'=> 'simple'
),
'default_app' => array(
'type' => 'select',
@ -293,93 +418,6 @@ class preferences_hooks
'admin' => False,
'default'=> '',
),
'currency' => array(
'type' => 'input',
'label' => 'Currency',
'name' => 'currency',
'help' => 'Which currency symbol or name should be used in eGroupWare.',
'xmlrpc' => True,
'admin' => False,
'default'=> $lang == 'en' ? '$' : 'EUR',
),
'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,
'default'=> 'primary_group'
),
'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,
'default'=> 'lastname',
),
'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,
'default'=> True,
),
'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,
'forced' => true,
),
'enable_ie_dropdownmenuhack' => array(
'type' => 'check',
'label' => 'Enable selectbox dropdown resizing for IE (experimental)',
'name' => 'enable_ie_dropdownmenuhack',
'help' => 'Enables or disables selectbox dropdown resizing for IE in all applications. If the browser is not an IE '.
', the option will not apply. This feature is experimental at the moment.',
'xmlrpc' => False,
'admin' => False,
'forced' => false,
),
'csv_charset' => array(
'type' => 'select',
'label' => 'Charset for the CSV export/import',
'name' => 'csv_charset',
'values' => translation::get_installed_charsets(),
'help' => 'Which charset should be used for the CSV export. The system default is the charset of this eGroupWare installation.',
'xmlrpc' => True,
'admin' => false,
'default'=> 'iso-8859-1',
),
'number_format' => array(
'type' => 'select',
'label' => 'Number format',
'name' => 'number_format',
'values' => array(
'.' => '1234.56',
',' => '1234,56',
'.,' => '1,234.56',
',.' => '1.234,56',
'. ' => '1 234.56',
', ' => '1 234,56',
),
'help' => 'Thousands separator is only used for displaying and not for editing numbers.',
'xmlrpc' => True,
'admin' => false,
'default'=> '.',
),
);
// disable thumbnails, if no size configured by admin
if (!$GLOBALS['egw_info']['server']['link_list_thumbnail']) unset($settings['link_list_thumbnail']);