Files
CTFd/CTFd/templates/admin/chals.html
Christopher Thompson b501561551 Updated CTFd UI to use Bootstrap; makes viewing and adding challenges
much more visually appealing
2016-02-01 22:31:07 -05:00

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">&#215;</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 %}