diff options
author | 2009-07-15 16:16:23 -0400 | |
---|---|---|
committer | 2009-07-15 16:16:23 -0400 | |
commit | 709c490155509f4c18f79f4d0632ab22ad32cc1a (patch) | |
tree | 5836ab01b99be05a05a254eca2e50de51237ae5d /frontend/pages/configurations | |
parent | Added 'Show checked' link for package adder, fixed package selector verificat... (diff) | |
download | ingenue-709c490155509f4c18f79f4d0632ab22ad32cc1a.tar.gz ingenue-709c490155509f4c18f79f4d0632ab22ad32cc1a.tar.bz2 ingenue-709c490155509f4c18f79f4d0632ab22ad32cc1a.zip |
Added config status page, moving forward and back in config wizard; added config control of user registration and invites; added 'No results' in wlca search; cleaned up use of configuration object in wizard API; added step names to module metadata; check configurations for validity before building
Diffstat (limited to 'frontend/pages/configurations')
-rw-r--r-- | frontend/pages/configurations/manager.php | 9 | ||||
-rw-r--r-- | frontend/pages/configurations/status.php | 47 | ||||
-rw-r--r-- | frontend/pages/configurations/verifier.php | 39 | ||||
-rw-r--r-- | frontend/pages/configurations/wizard.php | 13 |
4 files changed, 59 insertions, 49 deletions
diff --git a/frontend/pages/configurations/manager.php b/frontend/pages/configurations/manager.php index 15ab529..148a470 100644 --- a/frontend/pages/configurations/manager.php +++ b/frontend/pages/configurations/manager.php @@ -20,7 +20,10 @@ function body_configurations_manager() { } else { $name=isset($request['name'])?$request['name']:null; $build=$c->build($name); - echo print_success('Submitted for build - <a href="'.url('logs/'.$build->id).'">Logs</a>'); + if (is_object($build)) + echo print_success('Submitted for build - <a href="'.url('logs/'.$build->id).'">Logs</a>'); + else + echo print_error('Invalid configuration', 'Your configuration could not be submitted for build. Please return to <a href="'.url("config/$c->id/$build").'">step '.$build.'</a> and continue configuration from there.'); } } echo '<form action="'.url('configurations').'" method="post"><table><tr><th>ID</th><th>Name</th>'.(count($conf['modules']) > 1?'<th>Module</th>':'').'<th>Status</th><th>Options</th><th>Builds</th></tr>'."\n"; @@ -39,9 +42,9 @@ function body_configurations_manager() { echo "$c->module</td><td>"; } if ($c->status > 0) { - echo '<a href="'.url("config/$c->id")."\">Step $c->status</a>'"; + echo '<a href="'.url("config/$c->id")."\">Step $c->status</a>"; } elseif ($c->status == 0) { - echo '<b>Ready</b> (<a href="'.url('verify/'.$c->id).'">verify</a>)'; + echo '<b>Ready</b> (<a href="'.url("config/$c->id/status").'">modify</a>)'; } else { echo $c->status; } diff --git a/frontend/pages/configurations/status.php b/frontend/pages/configurations/status.php new file mode 100644 index 0000000..ebeeab3 --- /dev/null +++ b/frontend/pages/configurations/status.php @@ -0,0 +1,47 @@ +<?php +function init_configurations_status() { + global $S, $request; + if (!isset($S['user'])) { + return 'login'; + } + if (!(isset($request['configuration']) && strlen($request['configuration']) == 6 && ctype_alnum($request['configuration']))) { + return '404'; + } + $r=$S['pdo']->query('SELECT * FROM `configurations` WHERE `id`=\''.$request['configuration'].'\''); + if ($r->rowCount() == 0) { + return '404'; + } + $S['status']['configuration']=new sql_configuration($r->fetch(PDO::FETCH_ASSOC)); + if ($S['status']['configuration']->owner != $S['user']->id) { + return '404'; + } + return array('title' => 'Status'); +} +function body_configurations_status() { + global $S; + $c=&$S['status']['configuration']; + $module=new module($c->module); + $status=true; + $good=0; + for ($i=1; $i<=$module->numsteps; $i++) { + $r[$i]='<li>'; + $step=new wizard_step($c, $i, !$status); + $r[$i].=($status?'<a href="'.url("config/$c->id/$i")."\">$step->title</a>":$step->title); + if ($status) { + $r[$i].=' - '; + $good+=($status=$step->verify())?1:0; + if ($status === null) + $r[$i].='<span style="color: yellow; background-color: black">Incomplete</span>'; + elseif ($status) + $r[$i].='<span style="color: green">Complete</span>'; + else + $r[$i].='<span style="color: red">INVALID</span>'; + } + $r[$i].='</li>'; + } + echo '<h3>'.($c->name?htmlentities($c->name):$c->id).": $good of $module->numsteps steps complete</h3>\n"; + echo '<ol>'.implode('', $r).'</ol>'; + if ($good < $module->numsteps) + echo '<a href="'.url("config/$c->id/".($good+1)).'">Finish configuration</a>'; +} +?> diff --git a/frontend/pages/configurations/verifier.php b/frontend/pages/configurations/verifier.php deleted file mode 100644 index ae27c3c..0000000 --- a/frontend/pages/configurations/verifier.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php -function init_configurations_verifier() { - global $S, $request; - if (!isset($S['user'])) { - return 'login'; - } - if (!(isset($request['configuration']) && strlen($request['configuration']) == 6 && ctype_alnum($request['configuration']))) { - return '404'; - } - $r=$S['pdo']->query('SELECT * FROM `configurations` WHERE `id`=\''.$request['configuration'].'\''); - if ($r->rowCount() == 0) { - return '404'; - } - $S['verifier']['configuration']=new sql_configuration($r->fetch(PDO::FETCH_ASSOC)); - if ($S['verifier']['configuration']->owner != $S['user']->id) { - return '404'; - } - return array('title' => 'Verify'); -} -function body_configurations_verifier() { - global $S; - $c=&$S['verifier']['configuration']; - wizard::set_configuration($c); - $module=new module($c->module); - $status=true; - echo '<ol>'; - for ($i=1; $i<=$module->steps; $i++) { - echo '<li>'; - if ($status) { - $step=new wizard_step($c->module, $i); - $status=$status && ($r=$step->verify()); - echo $r?'Valid':'INVALID'; - } else { - echo 'Unavailable'; - } - echo '</li>'; - } -} -?> diff --git a/frontend/pages/configurations/wizard.php b/frontend/pages/configurations/wizard.php index 571f803..cc46405 100644 --- a/frontend/pages/configurations/wizard.php +++ b/frontend/pages/configurations/wizard.php @@ -10,7 +10,6 @@ function init_configurations_wizard() { if ($configuration->owner != $S['user']->id) { return '404'; } - wizard::set_configuration($S['wizard']['configuration']); if (isset($request['wizard_submit'])) { $steps=array_keys($request['wizard_submit']); $step=$steps[0]; @@ -22,6 +21,7 @@ function init_configurations_wizard() { } elseif ($result === null) { debug('wizard', "$configuration->module step $step returned <i>null</i> - config finished"); $configuration->status=0; + unset($S['wizard']['step']); $configuration->write(); } else { $configuration->status=$result; @@ -45,7 +45,7 @@ function init_configurations_wizard() { wizard_load_step(1); } if (isset($S['wizard']['step'])) { - return array('title' => $S['wizard']['step']->title); + return array('title' => "Step {$S['wizard']['step']->step}: {$S['wizard']['step']->title}"); } else { return array('title' => 'Create'); } @@ -54,11 +54,10 @@ function body_configurations_wizard() { global $S, $conf; if (isset($S['wizard']['configuration'])) { $configuration=&$S['wizard']['configuration']; - if ($configuration->status == 0) { - echo print_success('Config finished!', '<form action="'.url('configurations').'" method="post"><input type="hidden" name="configuration" value="'.$configuration->id.'" />Name (optional): <input name="name" value="'.($configuration->name?htmlentities($configuration->name):'').'" /> <input type="submit" name="build" value="Build" /></form>'); - } else { + if (isset($S['wizard']['step'])) $S['wizard']['step']->output(); - } + else + echo print_success('Config finished!', '<form action="'.url('configurations').'" method="post"><input type="hidden" name="configuration" value="'.$configuration->id.'" />Name (optional): <input name="name" value="'.($configuration->name?htmlentities($configuration->name):'').'" /> <input type="submit" name="build" value="Build" /></form>'); } else { echo '<form action="'.url('create').'" method="post"><h3>Request an image built</h3>Name of your configuration (optional): <input name="name" /><br/>'; if (count($conf['modules']) > 1) { @@ -76,7 +75,7 @@ function body_configurations_wizard() { function &wizard_load_step($step) { global $S; if (!isset($S['wizard']['steps'][$step])) { - $S['wizard']['steps'][$step]=new wizard_step($S['wizard']['configuration']->module, $step); + $S['wizard']['steps'][$step]=new wizard_step($S['wizard']['configuration'], $step); } $S['wizard']['step']=&$S['wizard']['steps'][$step]; return $S['wizard']['steps']; |