easyctf-2017/web/js/admin/problems.js
2016-01-02 22:15:23 -05:00

95 lines
3.8 KiB
JavaScript

function render_problems() {
$.post("/api/admin/problem/data", {
}, function(data) {
data = data["data"];
for (var i = 0; i < data.length; i++) {
files = data[i]["files"];
var checked = "";
if (data[i]["disabled"]) {
checked = "checked";
}
problem =
`<div class="panel panel-info">
<form method="POST" onsubmit="return false;">
<input type="hidden" name="pid" value="` + data[i]["pid"] + `">
<div class="panel-heading">
<div class="row">
<div class="col-md-6">
<input type="text" name="name" placeholder="Name" autocomplete="on" class="form-control" value="` + data[i]["name"] + `">
</div>
<div class="col-md-6">
<input type="text" name="category" placeholder="Category" autocomplete="on" class="form-control" value="` + data[i]["category"] + `">
</div>
</div>
</div>
<div class="panel-body">
<textarea type="text" name="description" placeholder="Description" autocomplete="on" class="form-control">` + data[i]["description"] + `</textarea>
<br><br>
<div class="row">
<div class="col-md-6">
<input type="text" name="flag" placeholder="Flag" autocomplete="off" class="form-control">
</div>
<div class="col-md-6">
<input type="text" name="hint" placeholder="Hint" autocomplete="off" class="form-control">
</div>
</div>
<br>
<div class="row">
<input type="number" name="value" placeholder="Value" autocomplete="off" class="form-control-number">
<label><input type="checkbox" name="disabled" value="1"` + checked + `>Disabled</label>
</div>
</div>
<div class="panel-footer">`
for (var j = 0; j < files.length; j++) {
file_name = files[j].split("/").pop();
problem +=
`<a href="` + files[j] + `" class="filelink" target="_blank">
<h4 class="probfile">` + file_name + `</h4>
</a>`
}
problem += `<br>
<div id="hint_` + data[i]["pid"] + `" style="display:none">` + data[i]["hint"] + `</div>
<div class="row" id="status_` + data[i]["pid"] + `"></div><br>
<input class="btn btn-success" type="submit" name="update" value="Update!">
</div></form></div>`
$("#problems").append(problem);
}
$("[name=update]").click(function(e) {
var problem = $(this).parents("form:first");
var pid = $("input[name=pid]", problem).val();
var name = $("input[name=name]", problem).val();
var description = $("textarea[name=description]", problem).val();
var hint = $("input[name=hint]", problem).val();
var category = $("input[name=category]", problem).val();
var value = $("input[name=value]", problem).val();
var flag = $("input[name=flag]", problem).val();
var disabled = $("input[name=disabled]", problem).prop("checked") ? 1 : 0;
update_problem(pid, name, category, description, hint, flag, disabled, value);
});
});
}
function update_problem (pid, name, category, description, hint, flag, disabled, value) {
$.post("/api/problem/update", {
pid: pid,
name: name,
category: category,
description: description,
hint: hint,
flag: flag,
disabled: disabled,
value: value
}, function(data) {
if (data.success == 1) {
display_message("status_" + pid, "success", data.message, function() {});
} else {
display_message("status_" + pid, "danger", data.message, function() {});
}
})
}
$(function() {
render_problems();
});