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}
- - 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 @@