From f86d89a3a3bed4a38bba53e6fd581bb65d94f15d Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Sun, 12 Jul 2009 17:41:44 +0000 Subject: [PATCH] tabs --- lam/templates/config/confmodules.php | 296 +++++++++++++++++---------- 1 file changed, 187 insertions(+), 109 deletions(-) diff --git a/lam/templates/config/confmodules.php b/lam/templates/config/confmodules.php index 53bf6e09..a64ba1b3 100644 --- a/lam/templates/config/confmodules.php +++ b/lam/templates/config/confmodules.php @@ -52,23 +52,35 @@ if (!isset($_SESSION['conf_config'])) { exit; } -$conf = &$_SESSION['conf_config']; - - -// user pressed submit/abort button -if (isset($_POST['submit'])) { - // save new module settings - $_SESSION['conf_accountTypesOld'] = $_SESSION['conf_accountTypes']; - $conf->set_typeSettings($_SESSION['conf_typeSettings']); - //selection ok, back to other settings - metarefresh('confmain.php?modulesback=true'); +// check if user canceled editing +if (isset($_POST['cancelSettings'])) { + metaRefresh("../login.php"); exit; } -elseif (isset($_POST['abort'])) { - // no changes - $_SESSION['conf_accountTypes'] = $_SESSION['conf_accountTypesOld']; - metarefresh('confmain.php?modulesback=true'); - exit; + +$conf = &$_SESSION['conf_config']; + +$errorsToDisplay = checkInput(); + +// check if button was pressed and if we have to save the settings or go to another tab +if (isset($_POST['saveSettings']) || isset($_POST['editmodules']) || isset($_POST['edittypes']) || isset($_POST['generalSettingsButton'])) { + if (sizeof($errorsToDisplay) == 0) { + // go to final page + if (isset($_POST['saveSettings'])) { + metaRefresh("confsave.php"); + exit; + } + // go to modules page + elseif (isset($_POST['edittypes'])) { + metaRefresh("conftypes.php"); + exit; + } + // go to types page + elseif (isset($_POST['generalSettingsButton'])) { + metaRefresh("confmain.php"); + exit; + } + } } $types = $conf->get_ActiveTypes(); @@ -85,10 +97,80 @@ echo "\n"; echo "\n"; echo ("

". - "\"LDAP



\n"); + "\"LDAP


\n

 

\n"); + +// print error messages +for ($i = 0; $i < sizeof($errorsToDisplay); $i++) call_user_func_array('StatusMessage', $errorsToDisplay[$i]); echo ("
\n"); -echo "

" . _("Module selection") . "

"; +echo "\n"; +echo "\n"; + +echo "
"; +// show tabs +echo ""; +echo "\n"; + $buttonWidth = 0; + $buttonTexts = array(_('General settings'), _('Account types'), _('Modules'), _('Save'), _('Cancel')); + for ($b = 0; $b < sizeof($buttonTexts); $b++) { + $tempWidth = round(0.8 * strlen(utf8_decode($buttonTexts[$b]))) + 2; + if ($buttonWidth < $tempWidth) $buttonWidth = $tempWidth; + } + $buttonSpace = '       '; + // general settings + echo "'; + // account types + echo "'; + // module selection + echo "'; + echo ""; + // save button + echo "'; + // cancel button + echo "'; + echo "
\n"; + echo "\n"; + echo "
\n"; + $buttonStyle = 'background-image: url(../../graphics/bigTools.png);width:' . $buttonWidth . 'em;'; + echo "\n"; + echo "
\n"; + echo '
\n"; + echo "\n"; + echo "
\n"; + $buttonStyle = 'background-image: url(../../graphics/gear.png);width:' . $buttonWidth . 'em;'; + echo "\n"; + echo "
\n"; + echo '
\n"; + echo "\n"; + echo "
\n"; + $buttonStyle = 'background-image: url(../../graphics/modules.png);width:' . $buttonWidth . 'em;'; + echo "\n"; + echo "
\n"; + echo '
 \n"; + echo "\n"; + echo "
\n"; + $buttonStyle = 'background-image: url(../../graphics/pass.png);width:' . $buttonWidth . 'em;'; + echo "\n"; + echo "
\n"; + echo '
\n"; + echo "\n"; + echo "
\n"; + $buttonStyle = 'background-image: url(../../graphics/fail.png);width:' . $buttonWidth . 'em;'; + echo "\n"; + echo "
\n"; + echo '
\n"; +// end tabs +echo "


\n"; $account_list = array(); @@ -96,35 +178,21 @@ for ($i = 0; $i < sizeof($types); $i++) { $account_list[] = array($types[$i], getTypeAlias($types[$i])); } -$allDependenciesOk = true; - for ($i = 0; $i < sizeof($account_list); $i++) { - $ret = config_showAccountModules($account_list[$i][0], $account_list[$i][1]); - if (!$ret) { - $allDependenciesOk = false; - } + config_showAccountModules($account_list[$i][0], $account_list[$i][1]); } -// submit buttons echo "

\n"; - // disable button if there are conflicts/depends - if ($allDependenciesOk) { - echo "\n"; - } - else { - echo "\n"; - } - echo " "; - echo "\n"; -echo "

\n"; - -echo "



\n"; echo "(*) " . _("Base module"); // help link echo " "; printHelpLink(getHelp('', '237'), '237'); -echo "


\n"; +echo "




\n"; + +echo '
'; + +echo "\n"; echo "
\n"; echo "\n"; @@ -136,43 +204,20 @@ echo "\n"; * * @param string $scope account type * @param string $title title for module selection (e.g. "User modules") -* @return boolean true if all dependencies are ok */ function config_showAccountModules($scope, $title) { + $conf = &$_SESSION['conf_config']; + $typeSettings = $conf->get_typeSettings(); // account modules - $selected_temp = $_SESSION['conf_typeSettings']['modules_' . $scope]; - if (isset($selected_temp)) $selected_temp = explode(',', $selected_temp); - $available = array(); $available = getAvailableModules($scope); - $selected = array(); - // only use available modules as selected - for ($i = 0; $i < sizeof($selected_temp); $i++) { - if (in_array($selected_temp[$i], $available)) $selected[] = $selected_temp[$i]; + $selected = $typeSettings['modules_' . $scope]; + if (isset($selected) && ($selected != '')) { + $selected = explode(',', $selected); } - $no_conflicts = true; - $no_depends = true; - $no_missing_basemodule = true; - - // remove modules from selection - if (isset($_POST[$scope . '_selected']) && isset($_POST[$scope . '_remove'])) { - $new_selected = array(); - for ($i = 0; $i < sizeof($selected); $i++) { - if (! in_array($selected[$i], $_POST[$scope . '_selected'])) $new_selected[] = $selected[$i]; - } - $selected = $new_selected; - $_SESSION['conf_typeSettings']['modules_' . $scope] = implode(',', $selected); + else { + $selected = array(); } - - // add modules to selection - elseif (isset($_POST[$scope . '_available']) && isset($_POST[$scope . '_add'])) { - $new_selected = $selected; - for ($i = 0; $i < sizeof($_POST[$scope . '_available']); $i++) { - if (! in_array($_POST[$scope . '_available'][$i], $selected)) $new_selected[] = $_POST[$scope . '_available'][$i]; - } - $selected = $new_selected; - $_SESSION['conf_typeSettings']['modules_' . $scope] = implode(',', $selected); - } - + // show account modules $icon = '' . $scope . ' '; echo "
$icon" . $title . "
\n"; @@ -233,52 +278,85 @@ function config_showAccountModules($scope, $title) { echo "\n"; echo "\n"; - // check dependencies - $depends = check_module_depends($selected, getModulesDependencies($scope)); - if ($depends != false) { - $no_depends = false; - echo "

\n"; - for ($i = 0; $i < sizeof($depends); $i++) { - echo "" . _("Unsolved dependency:") . " " . $depends[$i][0] . " (" . - $depends[$i][1] . ")" . "
\n"; - } - echo "

\n"; - } - - // check conflicts - $conflicts = check_module_conflicts($selected, getModulesDependencies($scope)); - if ($conflicts != false) { - $no_conflicts = false; - echo "

\n"; - for ($i = 0; $i < sizeof($conflicts); $i++) { - echo "" . _("Conflicting module:") . " " . $conflicts[$i][0] . " (" . - $conflicts[$i][1] . ")" . "
\n"; - } - echo "

\n"; - } - - // check for base module - $baseCount = 0; - for ($i = 0; $i < sizeof($selected); $i++) { - if (is_base_module($selected[$i], $scope)) { - $baseCount++; - } - } - if ($baseCount != 1) { - $no_missing_basemodule = false; - echo "

\n"; - echo "" . _("No or more than one base module selected!") . "
\n"; - echo "

\n"; - } - echo "

\n"; echo "
\n"; - - return ($no_conflicts & $no_depends & $no_missing_basemodule); - } +/** + * Checks user input and saves the entered settings. + * + * @return array list of errors + */ +function checkInput() { + if (!isset($_POST['postAvailable'])) { + return array(); + } + $errors = array(); + $conf = &$_SESSION['conf_config']; + $typeSettings = $conf->get_typeSettings(); + $accountTypes = $conf->get_ActiveTypes(); + for ($t = 0; $t < sizeof($accountTypes); $t++) { + $scope = $accountTypes[$t]; + $available = getAvailableModules($scope); + $selected_temp = $typeSettings['modules_' . $scope]; + if (isset($selected_temp)) $selected_temp = explode(',', $selected_temp); + $selected = array(); + // only use available modules as selected + for ($i = 0; $i < sizeof($selected_temp); $i++) { + if (in_array($selected_temp[$i], $available)) { + $selected[] = $selected_temp[$i]; + } + } + // remove modules from selection + if (isset($_POST[$scope . '_selected']) && isset($_POST[$scope . '_remove'])) { + $new_selected = array(); + for ($i = 0; $i < sizeof($selected); $i++) { + if (! in_array($selected[$i], $_POST[$scope . '_selected'])) $new_selected[] = $selected[$i]; + } + $selected = $new_selected; + $typeSettings['modules_' . $scope] = implode(',', $selected); + } + // add modules to selection + elseif (isset($_POST[$scope . '_available']) && isset($_POST[$scope . '_add'])) { + $new_selected = $selected; + for ($i = 0; $i < sizeof($_POST[$scope . '_available']); $i++) { + if (! in_array($_POST[$scope . '_available'][$i], $selected)) $new_selected[] = $_POST[$scope . '_available'][$i]; + } + $selected = $new_selected; + $typeSettings['modules_' . $scope] = implode(',', $selected); + } + // check dependencies + $depends = check_module_depends($selected, getModulesDependencies($scope)); + if ($depends != false) { + for ($i = 0; $i < sizeof($depends); $i++) { + $errors[] = array('ERROR', getTypeAlias($scope), _("Unsolved dependency:") . ' ' . + $depends[$i][0] . " (" . $depends[$i][1] . ")"); + } + } + // check conflicts + $conflicts = check_module_conflicts($selected, getModulesDependencies($scope)); + if ($conflicts != false) { + for ($i = 0; $i < sizeof($conflicts); $i++) { + $errors[] = array('ERROR', getTypeAlias($scope), _("Conflicting module:") . ' ' . + $conflicts[$i][0] . " (" . $conflicts[$i][1] . ")"); + } + } + // check for base module + $baseCount = 0; + for ($i = 0; $i < sizeof($selected); $i++) { + if (is_base_module($selected[$i], $scope)) { + $baseCount++; + } + } + if ($baseCount != 1) { + $errors[] = array('ERROR', getTypeAlias($scope), _("No or more than one base module selected!")); + } + } + $conf->set_typeSettings($typeSettings); + + return $errors; +} ?>