mirror of
https://github.com/aljazceru/CTFd.git
synced 2026-02-04 05:44:30 +01:00
284 lines
13 KiB
HTML
284 lines
13 KiB
HTML
{% extends "admin/base.html" %}
|
|
|
|
{% block stylesheets %}
|
|
<style>
|
|
.btn-primary { background-color: #337ab7; }
|
|
.btn-danger { background-color: #d9534f; }
|
|
.col-md-4 { margin-bottom: 15px; }
|
|
.key-remove-button { margin-top: 10px; }
|
|
.delete-tag { color: white; margin-left: 3px; cursor: pointer; }
|
|
</style>
|
|
{% endblock %}
|
|
|
|
{% block content %}
|
|
<div id="email-user" class="modal fade" tabindex="-1">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
</div>
|
|
<div class="modal-body">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<input type="hidden" value="{{ nonce }}" id="nonce">
|
|
|
|
<div id="create-challenge" class="modal fade" tabindex="-1">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h3>New Challenge</h3>
|
|
</div>
|
|
<div class="modal-body">
|
|
<form method="POST" action="/admin/chal/new" enctype="multipart/form-data">
|
|
<div class="form-group">
|
|
<label for="name">Name</label>
|
|
<input type="text" class="form-control" name="name" placeholder="Enter challenge name">
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="category">Category</label>
|
|
<input type="text" class="form-control" name="category" placeholder="Enter challenge category">
|
|
</div>
|
|
|
|
<ul class="nav nav-tabs" role="tablist" id="new-desc-edit">
|
|
<li role="presentation" class="active"><a href="#new-desc-write" aria-controls="home" role="tab" data-toggle="tab">Write</a></li>
|
|
<li role="presentation"><a href="#new-desc-preview" aria-controls="home" role="tab" data-toggle="tab">Preview</a></li>
|
|
</ul>
|
|
<div class="tab-content">
|
|
<div role="tabpanel" class="tab-pane active" id="new-desc-write">
|
|
<div class="form-group">
|
|
<label for="message-text" class="control-label">Message:</label>
|
|
<textarea id="new-desc-editor" class="form-control" name="desc" rows="10"></textarea>
|
|
</div>
|
|
</div>
|
|
<div role="tabpanel" class="tab-pane content" id="new-desc-preview">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="value">Value</label>
|
|
<input type="number" class="form-control" name="value" placeholder="Enter value">
|
|
</div>
|
|
<div class="form-group" style="height:75px">
|
|
<div class="col-md-9" style="padding-left:0px">
|
|
<label for="key">Key</label>
|
|
<input type="text" class="form-control" name="key" placeholder="Enter key">
|
|
</div>
|
|
<div class="col-md-3" style="margin-top:30px;padding-right:0px">
|
|
<div class="radio-inline">
|
|
<input type="radio" name="key_type[0]" value="0" checked>
|
|
Static
|
|
</div>
|
|
<div class="radio-inline">
|
|
<input type="radio" name="key_type[0]" value="1">
|
|
Regex
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="exampleInputFile">Upload challenge files</label>
|
|
<input type="file" name="files[]" multiple="multiple">
|
|
</div>
|
|
|
|
<div style="text-align:center">
|
|
<button class="btn btn-theme btn-outlined create-challenge" type="submit">Create</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="update-challenge" class="modal fade" tabindex="-1">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h3 class="chal-title text-center"></h3>
|
|
</div>
|
|
<div class="modal-body">
|
|
<form method="POST" action="/admin/chal/update">
|
|
<input name='nonce' type='hidden' value="{{ nonce }}">
|
|
|
|
<div class="form-group">
|
|
<label for="name">Name</label>
|
|
<input type="text" class="form-control chal-name" name="name" placeholder="Enter challenge name">
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="category">Category</label>
|
|
<input type="text" class="form-control chal-category" name="category" placeholder="Enter challenge category">
|
|
</div>
|
|
|
|
<ul class="nav nav-tabs" role="tablist" id="desc-edit">
|
|
<li role="presentation" class="active"><a href="#desc-write" aria-controls="home" role="tab" data-toggle="tab">Write</a></li>
|
|
<li role="presentation"><a href="#desc-preview" aria-controls="home" role="tab" data-toggle="tab">Preview</a></li>
|
|
</ul>
|
|
<div class="tab-content">
|
|
<div role="tabpanel" class="tab-pane active" id="desc-write">
|
|
<div class="form-group">
|
|
<label for="message-text" class="control-label">Message:</label>
|
|
<textarea id="desc-editor" class="form-control chal-desc" name="desc" rows="10"></textarea>
|
|
</div>
|
|
</div>
|
|
<div role="tabpanel" class="tab-pane content" id="desc-preview">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="value">Value</label>
|
|
<input type="number" class="form-control chal-value" name="value" placeholder="Enter value">
|
|
</div>
|
|
<input class="chal-id" type='hidden' name='id' placeholder='ID'>
|
|
|
|
<div class="form-group">
|
|
<a href="#" data-toggle="modal" data-target="#update-tags" class="btn btn-primary">Tags</a>
|
|
<a href="#" data-toggle="modal" data-target="#update-files" class="btn btn-primary">Files</a>
|
|
<a href="#" data-toggle="modal" data-target="#update-keys" class="btn btn-primary">Keys</a>
|
|
<a href="#" data-toggle="modal" data-target="#delete-chal" class="btn btn-danger">Delete</a>
|
|
</div>
|
|
<div style="text-align:center">
|
|
<button class="btn btn-theme btn-outlined create-challenge" type="submit">Update</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="delete-chal" class="modal fade" tabindex="-1">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header text-center">
|
|
<h3>Delete Challenge</h3>
|
|
</div>
|
|
<div class="modal-body">
|
|
<form method="POST" action="/admin/chal/delete">
|
|
<input type="hidden" name="nonce" value="{{ nonce }}">
|
|
<input type="hidden" name="id" class="chal-id">
|
|
<div class="small-6 small-centered text-center columns">
|
|
<p>Are you sure you want to delete this challenge?</p>
|
|
<p>Solves, wrong keys, files, tags will all be deleted.</p>
|
|
<a onclick="$('#delete-chal').modal('hide')" class="btn btn-primary">No</a>
|
|
<button class="btn btn-danger" id="delete-user" type="submit">Delete</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="update-keys" class="modal fade" tabindex="-1">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header text-center">
|
|
<h3>Keys</h3>
|
|
</div>
|
|
<div class="modal-body">
|
|
<form method="POST" action="/admin/keys" style="text-align:center">
|
|
<a href="#" id="create-key" class="btn btn-primary" style="margin-bottom:15px;">New Key</a>
|
|
<input name='nonce' type='hidden' value="{{ nonce }}">
|
|
<input id="keys-chal" name='chal' type='hidden'>
|
|
<div id="current-keys" class="row"></div>
|
|
<div class="row">
|
|
<button id="submit-keys" class="btn btn-theme btn-outlined">Update</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="update-files" class="modal fade" tabindex="-1">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header text-center">
|
|
<h3>Files</h3>
|
|
</div>
|
|
<div class="modal-body">
|
|
<form method="POST" action="/admin/files/" enctype="multipart/form-data">
|
|
<input name='nonce' type='hidden' value="{{ nonce }}">
|
|
<input id="files-chal" name='chal' type='hidden'>
|
|
<input name='method' type='hidden' value='upload'>
|
|
|
|
<div id="current-files"></div>
|
|
<input type="hidden" name="method" value="upload">
|
|
<input type="file" name="files[]" multiple="multiple">
|
|
<div class="row" style="text-align:center;margin-top:20px">
|
|
<button class="btn btn-theme btn-outlined" type="submit">Update</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="update-tags" class="modal fade" tabindex="-1">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header text-center">
|
|
<h3>Tags</h3>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="form-group">
|
|
<label for="tag-insert">Value</label>
|
|
<input max-length="80" type="text" class="form-control tag-insert" name="tag-insert" placeholder="Type tag and press Enter">
|
|
</div>
|
|
<input name='nonce' type='hidden' value="{{ nonce }}">
|
|
<input id="tags-chal" name='chal' type='hidden'>
|
|
|
|
<div id="current-tags">
|
|
|
|
</div>
|
|
<br/>
|
|
<div id="chal-tags">
|
|
</div>
|
|
<div class="row" style="text-align:center;margin-top:20px">
|
|
<button class="btn btn-theme btn-outlined" id="submit-tags">Update</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="email-user" class="modal fade" tabindex="-1">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header text-center">
|
|
<h3>Tags</h3>
|
|
</div>
|
|
<div class="modal-body">
|
|
<input type="text" class="tag-insert" maxlength="80" placeholder="Type tag and press Enter">
|
|
<input name='nonce' type='hidden' value="{{ nonce }}">
|
|
<input id="tags-chal" name='chal' type='hidden'>
|
|
|
|
<div id="current-tags">
|
|
|
|
</div>
|
|
<br/>
|
|
<div id="chal-tags">
|
|
|
|
</div>
|
|
<br/>
|
|
|
|
<a href="#" id="submit-tags" class="button">Update</a>
|
|
<a class="close-reveal-modal">×</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div style="text-align:center">
|
|
<h1 class="text-center">Challenges</h1>
|
|
<button class="btn btn-theme btn-outlined create-challenge">New Challenge</button>
|
|
<div>
|
|
<table id='challenges'>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|
|
|
|
{% block scripts %}
|
|
<script src="/static/admin/js/multi-modal.js"></script>
|
|
<script src="/static/admin/js/chalboard.js"></script>
|
|
{% endblock %}
|