Commit 62c1db45 authored by Grzegorz Pietrusza's avatar Grzegorz Pietrusza

Merge branch 'antek'

parents 028c8790 3da031b0
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en" ng-app="ctfApp">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>CTF</title> <title>CTF</title>
...@@ -9,24 +9,24 @@ ...@@ -9,24 +9,24 @@
<link rel="stylesheet" href="/page/statics/css/main.css"> <link rel="stylesheet" href="/page/statics/css/main.css">
</head> </head>
<nav> <nav >
<div class="nav-wrapper container"> <div class="nav-wrapper container">
<a href="#" class="brand-logo"> <a href="#" class="brand-logo">
<span class="title"></span> <span class="title"></span>
</a> </a>
<ul id="nav-mobile" class="right hide-on-med-and-down"> <ul id="nav-mobile" class="right hide-on-med-and-down">
<li><a href="page#/home">Początek</a></li> <li><a href="page#/home">Początek</a></li>
<li><a href="page#/tasks">Zadania</a></li> <li ><a href="page#/tasks">Zadania</a></li>
<li><a href="page#/scores">Wyniki</a></li> <li ><a href="page#/scores">Wyniki</a></li>
</ul> </ul>
</div> </div>
</nav> </nav>
<body> <body>
<div ng-app="ctfApp" class="container"> <div class="container">
<div ui-view></div> <div ui-view></div>
</div> </div>
</body> </body>
<script type="text/javascript" src="/webjars/jquery/jquery.min.js"></script> <script type="text/javascript" src="/webjars/jquery/jquery.min.js"></script>
<script type="text/javascript" src="/webjars/materializecss/js/materialize.min.js"></script> <script type="text/javascript" src="/webjars/materializecss/js/materialize.min.js"></script>
......
...@@ -77,4 +77,16 @@ p { ...@@ -77,4 +77,16 @@ p {
direction: ltr; direction: ltr;
-webkit-font-feature-settings: 'liga'; -webkit-font-feature-settings: 'liga';
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
}
.toast-success {
background-color: green;
color: black;
font-weight: bold;
}
.toast-error {
background-color: red;
color: black;
font-weight: bold;
} }
\ No newline at end of file
...@@ -37,37 +37,39 @@ ...@@ -37,37 +37,39 @@
} }
}); });
app.factory('APIProvider', ['$http', 'AppSettings', function($http, AppSettings){ app.factory('APIProvider', ['$http', 'AppSettings', function($http, AppSettings){
var tasks, teams, scores; var tasks, teams, scores;
var getTasks = function(callback){
$http.get(AppSettings.apiAddress + '/tasks').
success(function(data) {
tasks = data;
if (callback) callback(data);
});
};
var getScores = function(){};
var getTaskById = function(id, callback){
var result;
if (!tasks) {
getTasks(function(data){
result = getTaskById(id, callback)
});
}
else {
result = tasks.filter(function(task){
return task.level == id;
})[0];
}
callback(result);
};
return { return {
getScores: getScores, getScores: function(){},
getTasks: getTasks, getTasks: function(callback){
getTaskById: getTaskById $http.get(AppSettings.apiAddress + '/tasks').
success(function(data) {
tasks = data;
if (callback) callback(data);
});
},
getTaskById: function(id, callback){
var result;
if (!tasks) {
this.getTasks(function(data){
result = this.getTaskById(id, callback)
}.bind(this));
}
else {
result = tasks.filter(function(task){
return task.level == id;
})[0];
}
callback(result);
},
submitFlag: function(flag){
return $http.post(AppSettings.apiAddress + '/tasks', flag);
}
}; };
}]); }]);
app.controller('TasksController', ['$scope', '$http', 'APIProvider', 'AppSettings', function($scope, $http, APIProvider, AppSettings) { app.controller('TasksController', ['$scope', '$http', 'APIProvider', 'AppSettings', function($scope, $http, APIProvider, AppSettings) {
$scope.apiAddress = AppSettings.apiAddress; $scope.apiAddress = AppSettings.apiAddress;
APIProvider.getTasks(function(data){ APIProvider.getTasks(function(data){
...@@ -76,7 +78,8 @@ ...@@ -76,7 +78,8 @@
}); });
}]); }]);
app.controller('TaskController', ['$scope', '$http', '$stateParams', 'APIProvider', 'AppSettings', function($scope, $http, $stateParams, APIProvider, AppSettings) { app.controller('TaskController', ['$scope', '$stateParams', 'APIProvider', 'AppSettings', function($scope, $stateParams, APIProvider, AppSettings) {
$scope.submitUnknown = false;
$scope.apiAddress = AppSettings.apiAddress; $scope.apiAddress = AppSettings.apiAddress;
$scope.selectedTaskId = $stateParams.taskLevel; $scope.selectedTaskId = $stateParams.taskLevel;
console.log('SELECTED TASK ID', $scope.selectedTaskId); console.log('SELECTED TASK ID', $scope.selectedTaskId);
...@@ -84,6 +87,19 @@ ...@@ -84,6 +87,19 @@
console.log(data); console.log(data);
$scope.task = data; $scope.task = data;
}); });
$scope.submitFlag = function(){
var flag = $('input#flag-to-submit').val();
$scope.submitUnknown = true;
APIProvider.submitFlag(flag).success(function(){
Materialize.toast('Poprawna flaga! :)', 5000, 'toast-success');
$scope.submitUnknown = false;
}).error(function(){
console.log("Flaga zla!");
Materialize.toast('Błędna flaga! :(', 5000 ,'toast-error');
$scope.submitUnknown = false;
});
};
}]); }]);
app.controller('ScoreboardController', ['$scope', '$http', 'AppSettings', function($scope, $http, AppSettings) { app.controller('ScoreboardController', ['$scope', '$http', 'AppSettings', function($scope, $http, AppSettings) {
......
<div ng-controller="TaskController"> <div ng-controller="TaskController">
<div class="row"> <div class="row">
<div class="s12"> <div class="col s12">
<a href="/page#/tasks" class="breadcrumb"><i class="fa fa-angle-left" style="margin-right:20px"></i> Powrót</a> <a href="/page#/tasks" class="breadcrumb"><i class="fa fa-angle-left" style="margin-right:20px"></i> Powrót</a>
<h1>{{task.name}}</h1> <h1 class="left-align">{{task.name}}</h1>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col s12 m8"> <div class="col s12 m8">
<h4>
<div class="row"> <div class="card blue-grey darken-1">
<div class="col s1"><i class="fa fa-question"></i></div> <div class="card-content white-text">
<div class="col s11">Opis</div> <span class="card-title">
</div> <div class="row">
</h4> <div class="col s1"> <i class="fa fa-question"></i></div>
<p> <div class="col s11">Opis</div>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et </div>
dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip </span>
ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu <p>
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum
deserunt mollit anim id est laborum </p>
</p>
<h4>
<div class="row">
<div class="col s1"><i class="fa fa-flag"></i></div>
<div class="col s11">Flagi</div>
</div> </div>
</h4> </div>
<p>
Nie dodano żadnych flag.
</p> <div class="card blue-grey darken-1">
<div class="card-content white-text">
<span class="card-title">
<div class="row">
<div class="col s1"> <i class="fa fa-flag"></i></div>
<div class="col s11">Flagi</div>
</div>
</span>
<p>
Nie dodano żadnych flag.
</p>
<button ng-click="submitFlag()" class="btn waves-effect waves-light" type="submit" name="action" style="float:right" ng-if="!submitUnknown">Submit
<i class="material-icons right">send</i>
</button>
<div class="preloader-wrapper small active" style="float:right" ng-if="submitUnknown">
<div class="spinner-layer spinner-green-only">
<div class="circle-clipper left">
<div class="circle"></div>
</div><div class="gap-patch">
<div class="circle"></div>
</div><div class="circle-clipper right">
<div class="circle"></div>
</div>
</div>
</div>
<div class="input-field" style="overflow:hidden" >
<input placeholder="Wpisz flagę" id="flag-to-submit" type="text" class="validate">
</div>
</div>
</div>
</div> </div>
<div class="col s12 m4" style="text-align:center"> <div class="col s12 m4" style="text-align:center">
<img src="http://lorempixel.com/400/300/"/> <img src="http://lorempixel.com/400/300/" />
<a class="waves-effect waves-light btn" target="_blank" href="{{apiAddress}}/task/{{task.level}}">Otwórz <a class="waves-effect waves-light btn" target="_blank" href="{{apiAddress}}/task/{{task.level}}" style="width:100%;margin-top:15px">Otwórz stronę z zadaniem</a>
stronę z zadaniem</a>
</div> </div>
</div> </div>
</div> </div>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment