Administration: can edit exercices
This commit is contained in:
parent
868e3403ee
commit
aeb4b5dd52
16
gen_site.sh
16
gen_site.sh
@ -3,6 +3,7 @@
|
|||||||
BASEURL="localhost"
|
BASEURL="localhost"
|
||||||
SALT_TEAM="connected"
|
SALT_TEAM="connected"
|
||||||
OUT_TEAM="./teams"
|
OUT_TEAM="./teams"
|
||||||
|
OUT_HTDOCS="./htdocs"
|
||||||
|
|
||||||
MAX_PARAL=10
|
MAX_PARAL=10
|
||||||
|
|
||||||
@ -85,16 +86,16 @@ do
|
|||||||
do
|
do
|
||||||
OUT=`echo "$m" | sed -E 's#/([^/]+)/([^/]+)/([0-9]+)-[^/]+/([a-zA-Z0-9_]+)/submission#\1/\2/submission-\3-\4#'`
|
OUT=`echo "$m" | sed -E 's#/([^/]+)/([^/]+)/([0-9]+)-[^/]+/([a-zA-Z0-9_]+)/submission#\1/\2/submission-\3-\4#'`
|
||||||
wget $WGET_OPT "http://$BASEURL/$m" -O "$BASEURL/$OUT.html"
|
wget $WGET_OPT "http://$BASEURL/$m" -O "$BASEURL/$OUT.html"
|
||||||
|
wget $WGET_OPT "http://$BASEURL/$m/gerr" -O "$BASEURL/$OUT-bad.html"
|
||||||
|
wget $WGET_OPT "http://$BASEURL/$m/serr" -O "$BASEURL/$OUT-already.html"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Remove /connected/XY
|
# Remove /connected/XY
|
||||||
if sed -Ei "s#/[^/]+/([0-9]+)/#/#" "$BASEURL/$l/"* &&
|
for f in `find "$BASEURL/$l" -type f`
|
||||||
sed -Ei "s#/([0-9]+)-[^/]*/([a-zA-Z0-9_]+)/submission#/submission-\1-\2.html#" "$BASEURL/$l/"*
|
do
|
||||||
then
|
sed -Ei "s#/[^/]+/([0-9]+)/#/#" "$f" &&
|
||||||
exit 0
|
sed -Ei "s#/([0-9]+)-[^/]*/([a-zA-Z0-9_]+)/submission#/submission-\1-\2.html#" "$f"
|
||||||
else
|
done
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
) &
|
) &
|
||||||
|
|
||||||
PIDLIST="$PIDLIST $!"
|
PIDLIST="$PIDLIST $!"
|
||||||
@ -122,6 +123,7 @@ done
|
|||||||
|
|
||||||
# Move connected/ at root
|
# Move connected/ at root
|
||||||
mv "$BASEURL/$SALT_TEAM/" "$OUT_TEAM"
|
mv "$BASEURL/$SALT_TEAM/" "$OUT_TEAM"
|
||||||
|
mv "$BASEURL/" "$OUT_HTDOCS"
|
||||||
|
|
||||||
# Remove all robots.txt
|
# Remove all robots.txt
|
||||||
find . -name robots.txt -exec rm {} \;
|
find . -name robots.txt -exec rm {} \;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
rm /tmp/stop
|
||||||
cd `dirname "$0"`
|
cd `dirname "$0"`
|
||||||
|
|
||||||
if [ "$UID" = "0" ]
|
if [ "$UID" = "0" ]
|
||||||
@ -14,7 +15,7 @@ tail -f ./logs/checks.log &
|
|||||||
|
|
||||||
FULLREGEN=0
|
FULLREGEN=0
|
||||||
|
|
||||||
while true;
|
while ! [ -f /tmp/stop ];
|
||||||
do
|
do
|
||||||
if [ "$FULLREGEN" != "0" ]
|
if [ "$FULLREGEN" != "0" ]
|
||||||
then
|
then
|
||||||
|
@ -74,7 +74,7 @@ server {
|
|||||||
{
|
{
|
||||||
root /var/www/fic2014-server/;
|
root /var/www/fic2014-server/;
|
||||||
include /etc/nginx/fastcgi.conf;
|
include /etc/nginx/fastcgi.conf;
|
||||||
fastcgi_pass unix:/var/run/fastcgi/php-fpm.sock;
|
fastcgi_pass unix:/var/run/php-fpm.sock;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
if(!defined('ONYX')) exit;
|
if(!defined('ONYX')) exit;
|
||||||
|
|
||||||
|
$template->assign("fortyp", array("raw" => "RAW", "sha1" => "SHA-1", "md5" => "MD5", "sha224" => "SHA-224", "sha256" => "SHA-256", "sha384" => "SHA-384", "sha512" => "SHA-512"));
|
||||||
|
|
||||||
$p = $out[0];
|
$p = $out[0];
|
||||||
|
|
||||||
//TODO maybe move the try catch to index.html ?
|
//TODO maybe move the try catch to index.html ?
|
||||||
@ -18,7 +20,28 @@ try
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isset($p[3]))
|
if (isset($p[3]))
|
||||||
$template->assign("ex", new Exercice($p[3], $theme));
|
{
|
||||||
|
$exercice = new Exercice($p[3], $theme);
|
||||||
|
|
||||||
|
if (!empty($_POST))
|
||||||
|
{
|
||||||
|
$exercice->points = intval($_POST["points"]);
|
||||||
|
$exercice->statement = $_POST["desc"];
|
||||||
|
$exercice->require = $_POST["require"];
|
||||||
|
$exercice->level = intval($_POST["level"]);
|
||||||
|
|
||||||
|
$exercice->keys = array();
|
||||||
|
foreach ($_POST as $k => $key)
|
||||||
|
{
|
||||||
|
if (preg_match("/k([0-9]+)_value/", $k, $out) && !empty($key) && !empty($_POST["k".$out[1]."_type"]))
|
||||||
|
$exercice->add_key($_POST["k".$out[1]."_type"], $key);
|
||||||
|
}
|
||||||
|
|
||||||
|
//$exercice->update();
|
||||||
|
}
|
||||||
|
|
||||||
|
$template->assign("ex", $exercice);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (ThemeNotFoundException $e)
|
catch (ThemeNotFoundException $e)
|
||||||
{
|
{
|
||||||
|
@ -102,6 +102,11 @@ class Exercice
|
|||||||
return "Exercice ".$this->number;
|
return "Exercice ".$this->number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function get_statement()
|
||||||
|
{
|
||||||
|
return $this->statement;
|
||||||
|
}
|
||||||
|
|
||||||
// retourne le nombre d'equipes qui ont résolues l'exercice
|
// retourne le nombre d'equipes qui ont résolues l'exercice
|
||||||
// trié par date
|
// trié par date
|
||||||
function get_solved()
|
function get_solved()
|
||||||
@ -177,7 +182,7 @@ class Exercice
|
|||||||
$db->deconnexion();
|
$db->deconnexion();
|
||||||
}
|
}
|
||||||
|
|
||||||
function update($create)
|
function update($create=false)
|
||||||
{
|
{
|
||||||
$id = $this->id;
|
$id = $this->id;
|
||||||
$theme = intval($this->theme->get_id());
|
$theme = intval($this->theme->get_id());
|
||||||
@ -202,7 +207,7 @@ class Exercice
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
$db->query("UPDATE exercices
|
$db->query("UPDATE exercices
|
||||||
SET `theme` = '".$theme."', `require` = '".$require."', `level` = '".$level."', `point` = '".$point."', `statement` = '".$statement."'
|
SET `id_theme` = '".$theme."', `require` = '".$require."', `level` = '".$level."', `points` = '".$points."', `statement` = '".$statement."'
|
||||||
WHERE id = '$id'");
|
WHERE id = '$id'");
|
||||||
|
|
||||||
$aff = $db->affected();
|
$aff = $db->affected();
|
||||||
@ -276,9 +281,16 @@ class Exercice
|
|||||||
|
|
||||||
function add_key($format, $value)
|
function add_key($format, $value)
|
||||||
{
|
{
|
||||||
$this->keys[] = array(
|
if ($format == "raw")
|
||||||
"format" => $format,
|
{
|
||||||
"value" => $value
|
$this->add_key("sha1", hash("sha1", $value));
|
||||||
|
$this->add_key("sha512", hash("sha512", $value));
|
||||||
|
$this->add_key("md5", hash("md5", $value));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
$this->keys[] = array(
|
||||||
|
"format" => $format,
|
||||||
|
"value" => $value
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,15 +1,82 @@
|
|||||||
{extends file="admin/layout.tpl"}
|
{extends file="admin/layout.tpl"}
|
||||||
{block name=content}
|
{block name=content}
|
||||||
|
{if isset($ex)}
|
||||||
|
<h2>{$theme->name} <small>{$ex->id}</small></h2>
|
||||||
|
<form role="form" method="post" action="/{$SALT_ADMIN}/ex/{$theme->id}-{$theme->name}/{$ex->id}">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="desc">Description</label>
|
||||||
|
<textarea class="form-control" name="desc" id="desc">{$ex->statement|escape}</textarea>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="points">Points</label>
|
||||||
|
<input type="text" class="form-control" value="{$ex->points|escape}" name="points" id="points">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="require">Dépendance</label>
|
||||||
|
<input type="text" class="form-control" value="{$ex->require|escape}" name="require" id="require">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="level">Niveau de difficulté</label>
|
||||||
|
<input type="text" class="form-control" value="{$ex->level}" name="level" id="level">
|
||||||
|
</div>
|
||||||
|
{foreach from=$ex->keys item=key key=k}
|
||||||
|
<div class="panel panel-info">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title">Clef {$k}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="k{$k}_type">Type</label>
|
||||||
|
<select name="k{$k}_type" id="k{$k}_type" class="form-control">
|
||||||
|
{html_options options=$fortyp selected=$key.format}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="k{$k}_value">Valeur</label>
|
||||||
|
<input type="text" class="form-control" value="{$key.value|escape}" name="k{$k}_value" id="k{$k}_value">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/foreach}
|
||||||
|
<div class="panel panel-success">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title">Nouvelle clef</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="k{$k+1}_type">Type</label>
|
||||||
|
<input type="text" class="form-control" name="k{$k+1}_type" id="k{$k+1}_type" value="raw">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="k{$k+1}_value">Valeur</label>
|
||||||
|
<input type="text" class="form-control" name="k{$k+1}_value" id="k{$k+1}_value" placeholder="Clef">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel panel-warning">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title">Fichiers</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<ul>
|
||||||
|
{foreach from=$ex->files item=file key=k}
|
||||||
|
<li><a href="{$file.path}">{$file.name}</a>: {$file.sha1}</li>
|
||||||
|
{/foreach}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<button type="submit" class="btn btn-success">Modifier</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{else}
|
||||||
|
<h2>{$theme->name}</h2>
|
||||||
<p>
|
<p>
|
||||||
Theme: {$theme->name} </br>
|
<ul>
|
||||||
{if isset($ex)}
|
{foreach from=$theme->get_exercices_ordered() item=ex}
|
||||||
Exercice: {$ex->id}
|
<li><a href="/{$SALT_ADMIN}/ex/{$theme->id}-{$theme->name}/{$ex->id}">{$ex->get_name()}</a></li>
|
||||||
{else}
|
{/foreach}
|
||||||
<ul>
|
</ul>
|
||||||
{foreach $theme->get_exercices_ordered() as $ex}
|
|
||||||
<li><a href="/{$SALT_ADMIN}/ex/{$theme->id}-{$theme->name}/{$ex->id}">{$ex->get_name()}</a></li>
|
|
||||||
{/foreach}
|
|
||||||
</ul>
|
|
||||||
{/if}
|
|
||||||
</p>
|
</p>
|
||||||
|
{/if}
|
||||||
{/block}
|
{/block}
|
||||||
|
@ -25,7 +25,11 @@
|
|||||||
<li><a href="/{$SALT_ADMIN}/ex/{$t->id}-{$t->name}/{$e->id}">{$e->get_name()}</a></li>
|
<li><a href="/{$SALT_ADMIN}/ex/{$t->id}-{$t->name}/{$e->id}">{$e->get_name()}</a></li>
|
||||||
{/foreach}
|
{/foreach}
|
||||||
</ul></td>
|
</ul></td>
|
||||||
<td>FIXME</td>
|
<td>
|
||||||
|
{foreach from=$t->get_exercices_ordered() item=e}
|
||||||
|
{count($e->get_solved())}<br>
|
||||||
|
{/foreach}
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{/foreach}
|
{/foreach}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
@ -11,7 +11,7 @@ function show($file)
|
|||||||
$file = __DIR__."/submission/".intval($_GET["team"])."-".intval($_GET["theme"])."-".urlencode($_GET["exercice"]);
|
$file = __DIR__."/submission/".intval($_GET["team"])."-".intval($_GET["theme"])."-".urlencode($_GET["exercice"]);
|
||||||
|
|
||||||
if (file_exists($file))
|
if (file_exists($file))
|
||||||
show(__DIR__."/teams/".intval($_GET["team"])."/alreadysubmited-".intval($_GET["theme"])."-".urlencode($_GET["exercice"]).".html");
|
show(__DIR__."/teams/".intval($_GET["team"])."/submission-".intval($_GET["theme"])."-".urlencode($_GET["exercice"])."-already.html");
|
||||||
|
|
||||||
else if (!empty($_POST["solution"]) && !empty($_GET["team"]) && !empty($_GET["theme"]) && !empty($_GET["exercice"]))
|
else if (!empty($_POST["solution"]) && !empty($_GET["team"]) && !empty($_GET["theme"]) && !empty($_GET["exercice"]))
|
||||||
{
|
{
|
||||||
@ -21,4 +21,4 @@ else if (!empty($_POST["solution"]) && !empty($_GET["team"]) && !empty($_GET["th
|
|||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
show(__DIR__."/teams/".intval($_GET["team"])."/badsubmission-".intval($_GET["theme"])."-".urlencode($_GET["exercice"]).".html");
|
show(__DIR__."/teams/".intval($_GET["team"])."/submission-".intval($_GET["theme"])."-".urlencode($_GET["exercice"])."-bad.html");
|
||||||
|
@ -15,14 +15,12 @@ then
|
|||||||
OPTS="$OPTS --delete"
|
OPTS="$OPTS --delete"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rsync -e ssh -av $OPTS out/localhost/* phobos:~/htdocs/
|
rsync -e ssh -av $OPTS out/htdocs phobos:~/
|
||||||
rsync -e ssh -av $OPTS out/teams phobos:~/
|
rsync -e ssh -av $OPTS out/teams phobos:~/
|
||||||
rsync -e ssh -av $OPTS files phobos:~/
|
rsync -e ssh -av $OPTS files phobos:~/
|
||||||
rsync -e ssh -av $OPTS misc phobos:~/
|
rsync -e ssh -av $OPTS misc phobos:~/
|
||||||
scp nginx.conf submission.php phobos:~/
|
scp nginx.conf submission.php phobos:~/
|
||||||
|
|
||||||
rsync -e ssh -av $OPTS out/localhost/* phobos:~/htdocs/
|
|
||||||
|
|
||||||
rsync -e ssh -av phobos:~/submission/ submission/
|
rsync -e ssh -av phobos:~/submission/ submission/
|
||||||
ssh phobos "rm ~/submission/*"
|
ssh phobos "rm ~/submission/*"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user