X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=setup%2Fclass_setup.inc;h=fabac97a9ef526c2198f9767d737ab23e6794079;hb=1136e57c6caea14fc33e35256bbb523e28fb38a5;hp=89949ecd27416681bd33c0f1d6a99f13df939aca;hpb=2847407c21d5b5bffc413bb62271394c822094a6;p=gosa.git diff --git a/setup/class_setup.inc b/setup/class_setup.inc index 89949ecd2..fabac97a9 100644 --- a/setup/class_setup.inc +++ b/setup/class_setup.inc @@ -20,27 +20,51 @@ require_once("class_setupStep.inc"); -class setup extends plugin +class setup { - - var $i_steps = 5; // Number of setup steps + var $i_steps = 9; // Number of setup steps var $i_current= 1; // Current step var $i_last = 1; // Last setup step; var $o_steps = array(); - var $captured_values = array(); function setup() { - for($i = 1 ; $i <= $this->i_steps; $i ++ ){ - $class= "setup_step_".$i; - $this->o_steps[$i] = new $class(); + $i = 1; + $this->o_steps[$i++] = new Step_Welcome(); + $this->o_steps[$i++] = new Step_Language(); + $this->o_steps[$i++] = new Step_Checks(); + $this->o_steps[$i++] = new Step_License(); + $this->o_steps[$i++] = new Step_Ldap(); + $this->o_steps[$i++] = new Step_Schema(); + $this->o_steps[$i++] = new Step_Config1(); + $this->o_steps[$i++] = new Step_Config2(); + $this->o_steps[$i++] = new Step_Config3(); + $this->o_steps[$i++] = new Step_Migrate(); + $this->o_steps[$i++] = new Step_Finish(); + $this->i_steps = $i-1; + + /* Ensure that setup is not reachable if gosa.conf (CONFIG_FILE) */ + if(file_exists(CONFIG_DIR."/".CONFIG_FILE)){ + session_destroy(); + header("Location: index.php") ; + exit(); + } + + foreach($this->o_steps as $key => $step){ + $this->o_steps[$key]->parent = $this; } } + function execute() { - $smarty = get_smarty(); + /* display step error msgs */ + $msgs = $this->o_steps[$this->i_current]->check(); + foreach($msgs as $msg){ + print_red($msg); + } + $this->o_steps[$this->i_last]->set_active(FALSE); $this->o_steps[$this->i_current]->set_active(); $content = $this->o_steps[$this->i_current]->execute(); @@ -60,23 +84,84 @@ class setup extends plugin $this->captured_values[$name] = $value; } - /* check if current setup step is completed now - and activate the next step if possible */ + /* Set parent */ + foreach($this->o_steps as $key => $value){ + $this->o_steps[$key]->parent = $this; + } + + /* Check if image button requests next page */ + foreach($_POST as $name => $value){ + if(preg_match("/^next_(x|y)/",$name)){ + $_POST['next'] = TRUE; + } + if(preg_match("/^last_(x|y)/",$name)){ + $_POST['last'] = TRUE; + } + } + + /* Check if step was selected */ + if(isset($_GET['step']) || isset($_POST['next']) || isset($_POST['last'])){ + + /* check if current setup step is completed now + and activate the next step if possible */ + for($i = 1 ; $i <= $this->i_steps ; $i ++ ){ + if($this->o_steps[$i]->is_completed()){ + if(isset($this->o_steps[($i+1)])){ + $this->o_steps[($i+1)]->set_enabled(); + } + }else{ + $this->disable_steps_from($i+1); + } + } + } + + /* Disable all following steps, if one step isn't compelted right now .*/ for($i = 1 ; $i <= $this->i_steps ; $i ++ ){ if($this->o_steps[$i]->is_completed()){ - if(isset($this->o_steps[($i+1)])){ - $this->o_steps[($i+1)]->set_enabled(); - } + }else{ + $this->disable_steps_from($i+1); } } + + $step = -1; + + if(isset($_POST['setup_goto_step'])){ + $step= $_POST['setup_goto_step']; + } - /* Check if step was selected */ if(isset($_GET['step'])){ $step = $_GET['step']; + }elseif(isset($_POST['next'])){ + $step = $this->i_current + 1; + }elseif(isset($_POST['last'])){ + $step = $this->i_current - 1; + } + + $once = true; + foreach($_POST as $name => $value){ + if(preg_match("/^step_[0-9]*$/",$name) && $once ){ + $step = preg_replace("/^step_/","",$name); + } + } - if($this->selectable_step($step)){ - $this->i_last = $this->i_current; - $this->i_current = $_GET['step']; + if($this->selectable_step($step)){ + $this->i_last = $this->i_current; + $this->i_current = $step; + } + } + + + function disable_steps_from($start) + { + $found = false; + foreach($this->o_steps as $key => $step){ + if($key == $start){ + $found = true; + } + + if($found){ + $this->o_steps[$key]->set_enabled(false); + $this->o_steps[$key]->set_completed(false); } } } @@ -85,32 +170,95 @@ class setup extends plugin /* Create navigation menu */ function get_navigation_html() { - $str = "