From 37f61b1f03ca6eb1eead2fd45bfe4f169c307069 Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Thu, 21 Apr 2016 16:39:59 +0000 Subject: [PATCH] move admin >> Site config to new et2 based site-config --- admin/inc/class.admin_config.inc.php | 43 ++- admin/inc/class.admin_hooks.inc.php | 18 +- admin/inc/class.uiconfig.inc.php | 6 + admin/setup/setup.inc.php | 1 + admin/templates/default/app.css | 11 +- admin/templates/default/config.tpl | 337 ------------------------ admin/templates/default/config.xet | 14 +- admin/templates/default/site-config.xet | 14 + admin/templates/pixelegg/app.css | 11 +- doc/config2xet.php | 8 - 10 files changed, 91 insertions(+), 372 deletions(-) delete mode 100644 admin/templates/default/config.tpl create mode 100644 admin/templates/default/site-config.xet diff --git a/admin/inc/class.admin_config.inc.php b/admin/inc/class.admin_config.inc.php index 30b1f767e7..84af3c86a9 100644 --- a/admin/inc/class.admin_config.inc.php +++ b/admin/inc/class.admin_config.inc.php @@ -35,7 +35,7 @@ class admin_config } if ($GLOBALS['egw']->acl->check('site_config_acce',1,'admin')) { - egw::redirect_link('/index.php'); + Api\Framework::redirect_link('/index.php'); } // load the translations of the app we show too, so they dont need to be in admin! @@ -56,7 +56,7 @@ class admin_config case 'phpgwapi': case '': /* This keeps the admin from getting into what is a setup-only config */ - egw::redirect_link('/admin/index.php'); + Api\Framework::redirect_link('/admin/index.php'); break; default: $appname = $_appname; @@ -68,7 +68,7 @@ class admin_config $c->read_repository(); if ($_content['cancel'] || ($_content['save'] || $_content['apply']) && $GLOBALS['egw']->acl->check('site_config_acce',2,'admin')) { - egw::redirect_link('/admin/index.php?ajax=true'); + Api\Framework::redirect_link('/admin/index.php?ajax=true'); } if ($_content['save'] || $_content['apply']) @@ -118,8 +118,8 @@ class admin_config if(!$errors && !$_content['apply']) { - egw_framework::message(lang('Configuration saved.'), 'success'); - egw::redirect_link('/index.php', array( + Api\Framework::message(lang('Configuration saved.'), 'success'); + Api\Framework::redirect_link('/index.php', array( 'menuaction' => 'admin.admin_ui.index', 'ajax' => 'true' ), 'admin'); @@ -128,21 +128,34 @@ class admin_config if($errors) { - egw_framework::message(lang('Error') . ': ' . $errors, 'error'); + Api\Framework::message(lang('Error') . ': ' . $errors, 'error'); unset($errors); unset($GLOBALS['config_error']); } elseif ($_content['apply']) { - egw_framework::message(lang('Configuration saved.'), 'success'); + Api\Framework::message(lang('Configuration saved.'), 'success'); } - Api\Hooks::single('config', $appname); + $sel_options = $readonlys = array(); + $config = $c->read_repository(); + + // call "config" hook, allowing apps to overwrite config, eg. set default values, + // or return options in "sel_options" keys + $config['location'] = 'config'; + $ret = Api\Hooks::single($config, $appname); + if (is_array($ret)) + { + if (isset($ret['sel_options'])) $sel_options = $ret['sel_options']; + $config = array_merge($config, $ret); + } $tmpl = new Api\Etemplate($appname.'.config'); $path = (parse_url($tmpl->rel_path, PHP_URL_SCHEME) !== 'vfs' ? EGW_SERVER_ROOT : '').$tmpl->rel_path; - $content = array('newsettings' => array()); - $config = $c->read_repository(); + $content = array( + 'template' => $appname.'.config', + 'newsettings' => array(), + ); // for security reasons we do not send all config to client-side, but only ones mentioned in templates $matches = null; @@ -152,6 +165,14 @@ class admin_config $content['newsettings'][$name] = $config[$name]; } - $tmpl->exec('admin.admin_config.index', $content, array(), array(), array('appname' => $appname)); + // make everything readonly and remove save/apply button, if user has not rights to store config + if ($GLOBALS['egw']->acl->check('site_config_acce',2,'admin')) + { + $readonlys[__ALL__] = true; + $readonlys['cancel'] = false; + } + + $tmpl->read('admin.site-config'); + $tmpl->exec('admin.admin_config.index', $content, $sel_options, $readonlys, array('appname' => $appname)); } } diff --git a/admin/inc/class.admin_hooks.inc.php b/admin/inc/class.admin_hooks.inc.php index a7c879a368..24f66c143c 100644 --- a/admin/inc/class.admin_hooks.inc.php +++ b/admin/inc/class.admin_hooks.inc.php @@ -57,7 +57,7 @@ class admin_hooks if (! $GLOBALS['egw']->acl->check('site_config_acce',1,'admin')) { - $file['Site Configuration'] = egw::link('/index.php','menuaction=admin.uiconfig.index&appname=admin'); + $file['Site Configuration'] = egw::link('/index.php','menuaction=admin.admin_config.index&appname=admin&ajax=true'); } if (! $GLOBALS['egw']->acl->check('account_access',1,'admin')) @@ -251,4 +251,20 @@ class admin_hooks } return $actions; } + + /** + * Called before displaying site configuration + * + * @param array $config + * @return array with additional config to merge + */ + public static function config(array $config) + { + $ret = array(); + if (empty($config['fw_mobile_app_list']) && class_exists('jdots_framework')) + { + $ret['fw_mobile_app_list'] = jdots_framework::DEFAULT_MOBILE_APPS; + } + return $ret; + } } diff --git a/admin/inc/class.uiconfig.inc.php b/admin/inc/class.uiconfig.inc.php index 4060f05115..a17740e186 100644 --- a/admin/inc/class.uiconfig.inc.php +++ b/admin/inc/class.uiconfig.inc.php @@ -20,6 +20,12 @@ class uiconfig function index($params=null) { + // if we have a xet file, run new et2 config + if (file_exists(EGW_SERVER_ROOT.'/'.$_GET['appname'].'/templates/default/config.xet')) + { + $new_config = new admin_config(); + return $new_config->index(); + } // allowing inline js egw_framework::csp_script_src_attrs('unsafe-inline'); diff --git a/admin/setup/setup.inc.php b/admin/setup/setup.inc.php index d257262150..de0b9b9ff2 100755 --- a/admin/setup/setup.inc.php +++ b/admin/setup/setup.inc.php @@ -38,6 +38,7 @@ $setup_info['admin']['hooks'] = array( $setup_info['admin']['hooks']['admin'] = 'admin_hooks::all_hooks'; $setup_info['admin']['hooks']['sidebox_menu'] = 'admin_hooks::all_hooks'; $setup_info['admin']['hooks']['edit_user'] = 'admin_hooks::edit_user'; +$setup_info['admin']['hooks']['config'] = 'admin_hooks::config'; // add account tab to addressbook.edit $setup_info['admin']['hooks']['addressbook_edit'] = 'admin.admin_account.addressbook_edit'; diff --git a/admin/templates/default/app.css b/admin/templates/default/app.css index 306a0d259a..7146915be4 100644 --- a/admin/templates/default/app.css +++ b/admin/templates/default/app.css @@ -157,7 +157,14 @@ select#admin-mailaccount_ident_id { /** * new et2 site configuration */ -table.admin-config td.subHeader span { +#admin-site-config > div > span.subHeader { + border-bottom: 3px solid #696969; + padding-left: 3px; + padding-bottom: 3px; + display: block; + margin-bottom: 5px; +} +#admin-site-config span.subHeader { font-weight: bold; font-size: 110%; -} \ No newline at end of file +} diff --git a/admin/templates/default/config.tpl b/admin/templates/default/config.tpl deleted file mode 100644 index 1e43ca785d..0000000000 --- a/admin/templates/default/config.tpl +++ /dev/null @@ -1,337 +0,0 @@ - - -

{error}

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 {title}
{lang_Should_the_login_page_include_a_language_selectbox_(useful_for_demo-sites)_?}: - -
{lang_How_should_EMail_addresses_for_new_users_be_constructed?}: - -
{lang_Enter_the_VFS-Path_where_additional_images,_icons_or_logos_can be_placed_(and_found_by_EGroupwares_applications)._The_path_MUST_start_with_/,and_be_readable_by_all_users}:
{lang_Log_user-agent_and_action_of_changes_in_history-log_of_entries}: - -
 {lang_appearance}
{lang_Enter_the_title_for_your_site}:
{lang_Enter_the_URL_or_filename_(in_phpgwapi/templates/default/images)_of_your_logo}:
{lang_Enter_the_url_where_your_logo_should_link_to}:
{lang_Enter_the_title_of_your_logo}:
{lang_Enter_the_URL_or_filename_(in_your_templates_image_directory)_of_your_favicon_(the_little_icon_that_appears_in_the_browsers_tabs)}:
{lang_How_big_should_thumbnails_for_linked_images_be_(maximum_in_pixels)_?}: - -
{lang_Enable_spellcheck_in_rich_text_editor}: - -
{lang_EGroupware_Tutorial}: - -
{lang_Applications_available_on_mobile_devices}: - {call_jdots_framework::mobile_app_list} -
 {lang_security}
{lang_Cookie_path_(allows_multiple_eGW_sessions_with_different_directories,_has_problemes_with_SiteMgr!)}: - -
{lang_Cookie_domain_(default_empty_means_use_full_domain_name,_for_SiteMgr_eg._".domain.com"_allows_to_use_the_same_cookie_for_egw.domain.com_and_www.domain.com)}: - -
{lang_check_ip_address_of_all_sessions} ({lang_switch_it_off,_if_users_are_randomly_thrown_out}: "{lang_Your_session_could_not_be_verified.}") - -
{lang_Use_secure_cookies_(transmitted_only_via_https)} - -
{lang_Deny_all_users_access_to_grant_other_users_access_to_their_entries_?}: - -
{lang_How_many_days_should_entries_stay_in_the_access_log,_before_they_get_deleted_(default_90)_?}: - -
{lang_After_how_many_unsuccessful_attempts_to_login,_an_account_should_be_blocked_(default_3)_?}: - -
{lang_After_how_many_unsuccessful_attempts_to_login,_an_IP_should_be_blocked_(default_3)_?}: - -
{lang_How_many_minutes_should_an_account_or_IP_be_blocked_(default_30)_?}: - -
{lang_Force_users_to_change_their_password_regularily?(empty_for_no,number_for_after_that_number_of_days}: - -
{lang_Warn_users_about_the_need_to_change_their_password?_The_number_set_here_should_be_lower_than_the_value_used_to_enforce_the_change_of_passwords_every_X_days._Only_effective_when_enforcing_of_password_change_is_enabled._(empty_for_no,number_for_number_of_days_before_they_must_change)}: - -
{lang_Passwords_require_a_minimum_number_of_characters}: - -
{lang_Passwords_requires_this_number_of_different_character_classes}:
({lang_Uppercase,_lowercase,_number,_special_char})
- -
{lang_Reject_passwords_containing_part_of_username_or_full_name_(3_or_more_characters_long)}: - -
{lang_Admin_email_addresses_(comma-separated)_to_be_notified_about_the_blocking_(empty_for_no_notify)}: - -
{lang_How_many_entries_should_non-admins_be_able_to_export_(empty_=_no_limit,_no_=_no_export)}:
{lang_This_controls_exports_and_merging.}
{lang_Group_excepted_from_above_export_limit_(admins_are_always_excepted)}:{call_bo_merge::hook_export_limit_excepted}
{lang_Allow_remote_administration_from_following_install_ID's_(comma_separated)}:
{lang_Own_install_ID:_}{value_install_id}
{lang_Should_exceptions_contain_a_trace_(including_function_arguments)}: - -
{lang_Disable_minifying_of_javascript_and_CSS_files}: - -
-  -
- - -
-
-
- diff --git a/admin/templates/default/config.xet b/admin/templates/default/config.xet index 615e839c45..66ff747b30 100644 --- a/admin/templates/default/config.xet +++ b/admin/templates/default/config.xet @@ -9,9 +9,6 @@ - - - - + @@ -228,7 +225,7 @@ - + @@ -254,10 +251,5 @@ - -