summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEudyptula <eitan@mosenkis.net>2009-07-15 16:16:23 -0400
committerEudyptula <eitan@mosenkis.net>2009-07-15 16:16:23 -0400
commit709c490155509f4c18f79f4d0632ab22ad32cc1a (patch)
tree5836ab01b99be05a05a254eca2e50de51237ae5d /frontend/pages/configurations
parentAdded 'Show checked' link for package adder, fixed package selector verificat... (diff)
downloadingenue-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.php9
-rw-r--r--frontend/pages/configurations/status.php47
-rw-r--r--frontend/pages/configurations/verifier.php39
-rw-r--r--frontend/pages/configurations/wizard.php13
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'];