Update bootstrap to 4.0-beta

This commit is contained in:
nemunaire 2017-12-14 04:08:43 +01:00
commit 73080d7d0d
23 changed files with 608 additions and 641 deletions

View file

@ -10,55 +10,52 @@ const indextpl = `<!DOCTYPE html>
<script src="/js/d3.v3.min.js"></script>
</head>
<body>
<nav class="navbar navbar-inverse navbar-static-top">
<div class="container">
<nav class="navbar sticky-top navbar-expand-lg navbar-light bg-light" style="margin-bottom: 5px;">
<a class="navbar-brand" href="{{.urlbase}}">
<img alt="FIC" src="{{.urlbase}}img/fic.png" style="height: 30px">
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#adminMenu" aria-controls="adminMenu" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-header">
<a class="navbar-brand" href="{{.urlbase}}">
<img alt="FIC" src="{{.urlbase}}img/fic.png" style="height: 100%">
</a>
</div>
<ul class="nav navbar-nav">
<li><a href="{{.urlbase}}teams">&Eacute;quipes</a></li>
<li><a href="{{.urlbase}}themes">Thèmes</a></li>
<li><a href="{{.urlbase}}exercices">Exercices</a></li>
<li><a href="{{.urlbase}}public">Public</a></li>
<li><a href="{{.urlbase}}events">&Eacute;vénements</a></li>
<li><a href="{{.urlbase}}settings">Paramètres</a></li>
<div class="collapse navbar-collapse" id="adminMenu">
<ul class="navbar-nav mr-auto">
<li class="nav-item"><a class="nav-link" href="{{.urlbase}}teams">&Eacute;quipes</a></li>
<li class="nav-item"><a class="nav-link" href="{{.urlbase}}themes">Thèmes</a></li>
<li class="nav-item"><a class="nav-link" href="{{.urlbase}}exercices">Exercices</a></li>
<li class="nav-item"><a class="nav-link" href="{{.urlbase}}public">Public</a></li>
<li class="nav-item"><a class="nav-link" href="{{.urlbase}}events">&Eacute;vénements</a></li>
<li class="nav-item"><a class="nav-link" href="{{.urlbase}}settings">Paramètres</a></li>
</ul>
<p id="clock" class="navbar-text navbar-right" ng-controller="CountdownController">
<span ng-show="startIn > 0">
Démarrage dans :
<span>{{"{{ startIn }}"}}</span>"
<span class="point">|</span>
</span>
<span id="hours">{{"{{ time.hours | time }}"}}</span>
<span class="point">:</span>
<span id="min">{{"{{ time.minutes | time }}"}}</span>
<span class="point">:</span>
<span id="sec">{{"{{ time.seconds | time }}"}}</span>
</p>
</div>
<span id="clock" class="navbar-text" ng-controller="CountdownController" ng-cloak>
<span ng-show="startIn > 0">
Démarrage dans :
<span>{{"{{ startIn }}"}}</span>"
<span class="point">|</span>
</span>
<span id="hours">{{"{{ time.hours | time }}"}}</span>
<span class="point">:</span>
<span id="min">{{"{{ time.minutes | time }}"}}</span>
<span class="point">:</span>
<span id="sec">{{"{{ time.seconds | time }}"}}</span>
</span>
</nav>
<div class="container">
<div class="row" ng-controller="DIWEBoxController">
<div ng-repeat="box in boxes" class="alert alert-dismissible alert-{{"{{ box.kind }}"}}" ng-cloak>
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<strong ng-if="box.title">{{"{{ box.title }}"}}</strong> {{"{{ box.msg }}"}}
<button class="btn btn-sm btn-success" ng-if="box.yes || box.no" ng-click="box.yes()">Yes</button>
<button class="btn btn-sm btn-danger" ng-if="box.yes || box.no" ng-click="box.no()">No</button>
</div>
</div>
<div class="row">
<div class="col-sm-12" ng-view></div>
<div class="container" ng-controller="DIWEBoxController">
<div ng-repeat="box in boxes" class="alert alert-dismissible alert-{{"{{ box.kind }}"}}" ng-cloak>
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<strong ng-if="box.title">{{"{{ box.title }}"}}</strong> {{"{{ box.msg }}"}}
<button class="btn btn-sm btn-success" ng-if="box.yes || box.no" ng-click="box.yes()">Yes</button>
<button class="btn btn-sm btn-danger" ng-if="box.yes || box.no" ng-click="box.no()">No</button>
</div>
</div>
<div class="container" ng-view></div>
<script src="/js/jquery.min.js"></script>
<script src="/js/popper.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
<script src="/js/angular.min.js"></script>
<script src="{{.urlbase}}js/angular-resource.min.js"></script>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -8,55 +8,52 @@
<script src="/js/d3.v3.min.js"></script>
</head>
<body>
<nav class="navbar navbar-inverse navbar-static-top">
<div class="container">
<nav class="navbar sticky-top navbar-expand-lg navbar-light bg-light" style="margin-bottom: 5px;">
<a class="navbar-brand" href="/">
<img alt="FIC" src="/img/fic.png" style="height: 30px">
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#adminMenu" aria-controls="adminMenu" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-header">
<a class="navbar-brand" href="/">
<img alt="FIC" src="/img/fic.png" style="height: 100%">
</a>
</div>
<ul class="nav navbar-nav">
<li><a href="/teams">&Eacute;quipes</a></li>
<li><a href="/themes">Thèmes</a></li>
<li><a href="/exercices">Exercices</a></li>
<li><a href="/public">Public</a></li>
<li><a href="/events">&Eacute;vénements</a></li>
<li><a href="/settings">Paramètres</a></li>
<div class="collapse navbar-collapse" id="adminMenu">
<ul class="navbar-nav mr-auto">
<li class="nav-item"><a class="nav-link" href="/teams">&Eacute;quipes</a></li>
<li class="nav-item"><a class="nav-link" href="/themes">Thèmes</a></li>
<li class="nav-item"><a class="nav-link" href="/exercices">Exercices</a></li>
<li class="nav-item"><a class="nav-link" href="/public">Public</a></li>
<li class="nav-item"><a class="nav-link" href="/events">&Eacute;vénements</a></li>
<li class="nav-item"><a class="nav-link" href="/settings">Paramètres</a></li>
</ul>
<p id="clock" class="navbar-text navbar-right" ng-controller="CountdownController">
<span ng-show="startIn > 0">
Démarrage dans :
<span>{{ startIn }}</span>"
<span class="point">|</span>
</span>
<span id="hours">{{ time.hours | time }}</span>
<span class="point">:</span>
<span id="min">{{ time.minutes | time }}</span>
<span class="point">:</span>
<span id="sec">{{ time.seconds | time }}</span>
</p>
</div>
<span id="clock" class="navbar-text" ng-controller="CountdownController" ng-cloak>
<span ng-show="startIn > 0">
Démarrage dans :
<span>{{ startIn }}</span>"
<span class="point">|</span>
</span>
<span id="hours">{{ time.hours | time }}</span>
<span class="point">:</span>
<span id="min">{{ time.minutes | time }}</span>
<span class="point">:</span>
<span id="sec">{{ time.seconds | time }}</span>
</span>
</nav>
<div class="container">
<div class="row" ng-controller="DIWEBoxController">
<div ng-repeat="box in boxes" class="alert alert-dismissible alert-{{ box.kind }}" ng-cloak>
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<strong ng-if="box.title">{{ box.title }}</strong> {{ box.msg }}
<button class="btn btn-sm btn-success" ng-if="box.yes || box.no" ng-click="box.yes()">Yes</button>
<button class="btn btn-sm btn-danger" ng-if="box.yes || box.no" ng-click="box.no()">No</button>
</div>
</div>
<div class="row">
<div class="col-sm-12" ng-view></div>
<div class="container" ng-controller="DIWEBoxController">
<div ng-repeat="box in boxes" class="alert alert-dismissible alert-{{ box.kind }}" ng-cloak>
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<strong ng-if="box.title">{{ box.title }}</strong> {{ box.msg }}
<button class="btn btn-sm btn-success" ng-if="box.yes || box.no" ng-click="box.yes()">Yes</button>
<button class="btn btn-sm btn-danger" ng-if="box.yes || box.no" ng-click="box.no()">No</button>
</div>
</div>
<div class="container" ng-view></div>
<script src="/js/jquery.min.js"></script>
<script src="/js/popper.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
<script src="/js/angular.min.js"></script>
<script src="/js/angular-resource.min.js"></script>

1
admin/static/js/popper.min.js vendored Symbolic link
View file

@ -0,0 +1 @@
../../../frontend/static/js/popper.min.js

View file

@ -1,8 +1,9 @@
<div class="well well-lg">
<h3>Interface d'administration du challenge</h3>
<p>
<div class="jumbotron text-light bg-primary">
<h1 class="display-4">Interface d'administration du challenge</h1>
<p class="lead">
Sélectionnez une action dans le menu ci-dessus.
</p>
<hr class="my-4">
<p ng-controller="VersionController">
Version de l'API : {{ v.version }}
</p>

View file

@ -1,121 +1,114 @@
<h2>Paramètres<a ng-click="regenerate()" class="pull-right btn btn-info" role="button"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span> Regénérer les fichiers statiques</a></h2>
<div class="jumbotron text-light bg-primary">
<h2>Paramètres<button ng-click="regenerate()" class="float-right btn btn-info" type="button"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span> Regénérer les fichiers statiques</a></h2>
<hr>
<form ng-submit="saveSettings()" class="form-horizontal well">
<form ng-submit="saveSettings()">
<input type="hidden" class="form-control" id="lastRegeneration" ng-model="config.generation">
<input type="hidden" class="form-control form-control-sm" id="lastRegeneration" ng-model="config.generation">
<div class="form-group">
<label for="challengeName" class="col-sm-2 control-label">Nom du challenge</label>
<div class="form-group row">
<label for="challengeName" class="col-sm-2 col-form-label col-form-label-sm">Nom du challenge</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="challengeName" ng-model="config.title">
<input type="text" class="form-control form-control-sm" id="challengeName" ng-model="config.title">
</div>
</div>
<div class="form-group">
<label for="challengeAuthors" class="col-sm-2 control-label">Auteurs du challenge</label>
<div class="form-group row">
<label for="challengeAuthors" class="col-sm-2 col-form-label col-form-label-sm">Auteurs du challenge</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="challengeAuthors" ng-model="config.authors">
<input type="text" class="form-control form-control-sm" id="challengeAuthors" ng-model="config.authors">
</div>
</div>
<div class="form-group">
<label for="startTime" class="col-sm-2 control-label">Début du challenge</label>
<div class="col-sm-8">
<input type="text" class="form-control" id="startTime" ng-model="config.start">
</div>
<div class="col-sm-2 text-right">
<a ng-click="launchChallenge()" class="btn btn-warning" role="button"><span class="glyphicon glyphicon-play" aria-hidden="true"></span> Lancer le challenge</a>
<div class="form-group row">
<label for="startTime" class="col-sm-2 col-form-label col-form-label-sm">Début du challenge</label>
<div class="col-sm-10">
<div class="input-group">
<input type="text" class="form-control form-control-sm" id="startTime" ng-model="config.start">
<span class="input-group-btn">
<button ng-click="launchChallenge()" class="btn btn-sm btn-secondary" type="button"><span class="glyphicon glyphicon-play" aria-hidden="true"></span> Lancer le challenge</button>
</span>
</div>
</div>
</div>
<div class="form-group">
<label for="endTime" class="col-sm-2 control-label">Fin du challenge</label>
<div class="form-group row">
<label for="endTime" class="col-sm-2 col-form-label col-form-label-sm">Fin du challenge</label>
<div class="col-sm-7">
<input type="text" class="form-control" id="endTime" ng-model="config.end">
<input type="text" class="form-control form-control-sm" id="endTime" ng-model="config.end">
</div>
<div class="col-sm-1 text-right">
<label for="duration" class="control-label">Durée</label>
<label for="duration" class="col-form-label col-form-label-sm">Durée</label>
</div>
<div class="col-sm-2">
<div class="input-group">
<input type="text" class="form-control" id="duration" ng-model="duration" integer>
<div class="input-group-addon">min</div>
<div class="input-group input-group-sm">
<input type="text" class="form-control form-control-sm" id="duration" ng-model="duration" integer>
<span class="input-group-addon">min</span>
</div>
</div>
</div>
<hr>
<div class="form-group">
<label for="firstBlood" class="col-sm-2 control-label">Bonus premier sang</label>
<div class="form-group row">
<label for="firstBlood" class="col-sm-2 col-form-label col-form-label-sm">Bonus premier sang</label>
<div class="col-sm-1">
<input type="text" class="form-control" id="firstBlood" ng-model="config.firstBlood" float>
<input type="text" class="form-control form-control-sm" id="firstBlood" ng-model="config.firstBlood" float>
</div>
</div>
<div class="form-group">
<label for="submissionCostBase" class="col-sm-2 control-label">Coût de base d'une soumission</label>
<div class="form-group row">
<label for="submissionCostBase" class="col-sm-2 col-form-label col-form-label-sm">Coût de base d'une soumission</label>
<div class="col-sm-1">
<input type="text" class="form-control" id="submissionCostBase" ng-model="config.submissionCostBase" float>
<input type="text" class="form-control form-control-sm" id="submissionCostBase" ng-model="config.submissionCostBase" float>
</div>
</div>
<hr>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<div class="checkbox">
<label>
<input type="checkbox" ng-model="config.allowRegistration"> Activer les inscriptions
</label>
</div>
</div>
</div>
<fieldset class="form-group">
<div class="row">
<legend class="col-form-legend col-sm-2">Options</legend>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<div class="checkbox">
<label>
<input type="checkbox" ng-model="config.denyNameChange"> Interdire les changements de nom d'équipe
</label>
</div>
</div>
</div>
<div class="col-sm-10">
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" ng-model="config.allowRegistration"> Activer les inscriptions
</label>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<div class="checkbox">
<label>
<input type="checkbox" ng-model="config.enableResolutionRoute"> Activer la route montrant les solutions
</label>
</div>
</div>
</div>
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" ng-model="config.denyNameChange"> Interdire les changements de nom d'équipe
</label>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<div class="checkbox">
<label>
<input type="checkbox" ng-model="config.partialValidation"> Activer la validation partielle des challenges
</label>
</div>
</div>
</div>
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" ng-model="config.enableResolutionRoute"> Activer la route montrant les solutions
</label>
</div>
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" ng-model="config.partialValidation"> Activer la validation partielle des challenges
</label>
</div>
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" ng-model="config.enableExerciceDepend"> Activer les dépendances des exercices
</label>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<div class="checkbox">
<label>
<input type="checkbox" ng-model="config.enableExerciceDepend"> Activer les dépendances des exercices
</label>
</div>
</div>
</div>
</fieldset>
<hr>
<div class="form-group">
<label class="col-sm-2 control-label">Synchronisation</label>
<div class="form-group row">
<label class="col-sm-2 col-form-label col-form-label-sm">Synchronisation</label>
<div class="col-sm-10">{{ configro.sync }}</div>
</div>
@ -123,16 +116,16 @@
<button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-save" aria-hidden="true"></span> Propager ces paramètres</button>
</div>
</form>
<div class="well">
<div class="col-sm-4 center">
<a ng-click="reset('challenges')" class="btn btn-warning" role="button"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Effacer les challenges et les thèmes</a>
</div>
<div class="col-sm-4 center">
<a ng-click="reset('teams');" class="btn btn-warning" role="button"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Effacer les équipes</a>
</div>
<div class="col-sm-4 center">
<a ng-click="reset('game');" class="btn btn-warning" role="button"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Effacer la partie (tentatives, indices, ...)</a>
</div>
<div class="clearfix"></div>
</div>
<div class="card-deck">
<div class="card">
<button ng-click="reset('challenges')" class="btn btn-secondary" type="button"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Effacer les challenges et les thèmes</button>
</div>
<div class="card">
<button ng-click="reset('teams');" class="btn btn-secondary" type="button"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Effacer les équipes</button>
</div>
<div class="card">
<button ng-click="reset('game');" class="btn btn-secondary" type="button"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Effacer la partie (tentatives, indices, ...)</button>
</div>
</div>