Compare commits
4 Commits
5a90174869
...
647f1f001c
Author | SHA1 | Date | |
---|---|---|---|
647f1f001c | |||
4fa529b0a3 | |||
d07b9a0055 | |||
087a9fb055 |
@ -13,6 +13,10 @@ def create_app():
|
||||
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
|
||||
db.init_app(app)
|
||||
|
||||
# Prep basic auth
|
||||
from acks.views import basic_auth
|
||||
basic_auth.init_app(app)
|
||||
|
||||
# Load our views
|
||||
from acks.views import default_views
|
||||
app.register_blueprint(default_views)
|
||||
|
@ -7,6 +7,7 @@ from flask import (
|
||||
Blueprint
|
||||
)
|
||||
|
||||
from acks.views import basic_auth
|
||||
from .quest_manager import (
|
||||
load_quests,
|
||||
get_quest_details,
|
||||
@ -22,16 +23,19 @@ quest_views = Blueprint(
|
||||
)
|
||||
|
||||
@quest_views.route('/list')
|
||||
@basic_auth.required
|
||||
def quest_list():
|
||||
quests = load_quests()
|
||||
return render_template('quest_list.html', quest_map=quests)
|
||||
|
||||
@quest_views.route('/detail/<int:level>/<string:quest_name>')
|
||||
@basic_auth.required
|
||||
def quest_detail(level, quest_name):
|
||||
quest = get_quest_details(level, quest_name)
|
||||
return render_template('quest_detail.html', quest=quest)
|
||||
|
||||
@quest_views.route('/detail/<int:level>/<string:quest_name>/download')
|
||||
@basic_auth.required
|
||||
def quest_download(level, quest_name):
|
||||
archive = get_quest_archive(level, quest_name)
|
||||
return send_file(archive, attachment_filename="acks_{0}.zip".format(quest_name), as_attachment=True)
|
||||
|
@ -1,18 +1,25 @@
|
||||
{% set player_bar = [
|
||||
('/npc/spells', 'spells', 'Spells', false),
|
||||
('/worldmap', 'worldmap', 'Maps', false),
|
||||
('https://reddit.com/r/PalismaACKS/wiki', 'redditwiki', 'Wiki', true),
|
||||
] %}
|
||||
{% set judge_bar = [
|
||||
('/lairs', 'lairs', 'Lairs', false),
|
||||
('http://autarch.co/treasure', 'treasure', 'Treasure', true),
|
||||
('/quest/list', 'questlist', 'Quests', false),
|
||||
('/npc/party', 'npcparty', 'Generate Party', false),
|
||||
('/npc/single', 'npcsingle', 'Generate NPC', false),
|
||||
('/wiki', 'wiki', 'Wiki', false),
|
||||
]%}
|
||||
|
||||
{% set navigation_bar = [
|
||||
('/', 'index', 'Home'),
|
||||
('/handbook', 'handbook', 'Handbook'),
|
||||
('/worldmap', 'worldmap', 'Maps'),
|
||||
('.header', 'generate', 'Generate'),
|
||||
('.header', 'other', 'Other'),
|
||||
('/npc/spells', 'spells', 'Spells'),
|
||||
('/quest/list', 'questlist', 'Quests'),
|
||||
('/api/schema', 'api', 'API'),
|
||||
] %}
|
||||
{% set generation_bar = [
|
||||
('/npc/party', 'npcparty', 'NPC Party'),
|
||||
('/npc/single', 'npcsingle', 'Single NPC'),
|
||||
('http://autarch.co/treasure', 'treasure', 'Treasure'),
|
||||
('/', 'index', 'Home', false),
|
||||
('/handbook', 'handbook', 'Handbook', false),
|
||||
(player_bar, 'section', 'Player Resources', false),
|
||||
(judge_bar, 'section', 'Judge Resources', false),
|
||||
('https://reddit.com/r/PalismaACKS', 'subreddit', '/r/PalismaACKS', true),
|
||||
] %}
|
||||
|
||||
{% set active_page = active_page|default('index') %}
|
||||
|
||||
<!doctype html>
|
||||
@ -32,7 +39,20 @@
|
||||
<script src="https://cdn.jsdelivr.net/npm/uikit@3.2.4/dist/js/uikit.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/uikit@3.2.4/dist/js/uikit-icons.min.js"></script>
|
||||
|
||||
{% block head %} {% endblock %}
|
||||
<style>
|
||||
h1 strong {
|
||||
display: block;
|
||||
font-size: 50%;
|
||||
opacity: 0.65;
|
||||
}
|
||||
|
||||
.uk-navbar-nav > li > a {
|
||||
font-size: 1em;
|
||||
text-transform: none;
|
||||
}
|
||||
</style>
|
||||
{% block head %}
|
||||
{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
<nav class="uk-navbar-container" uk-navbar>
|
||||
@ -42,27 +62,25 @@
|
||||
</div>
|
||||
<div class="uk-navbar-center uk-visible@m">
|
||||
<ul class="uk-navbar-nav">
|
||||
{% for href, id, label in navigation_bar %}
|
||||
<li {% if id == active_page %} class="uk-active" {% endif %}>
|
||||
{% if id == 'generate' %}
|
||||
<a href="">{{ label |e }}</a>
|
||||
<div class="uk-navbar-dropdown">
|
||||
<ul class="uk-nav uk-navbar-dropdown-nav">
|
||||
{% for ghref, gid, glabel in generation_bar %}
|
||||
<li>
|
||||
<a href="{{ ghref | e }}" {% if gid == 'treasure' %}target="_blank"{% endif %}>
|
||||
{{ glabel|e }}
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% for href, id, label, blank in navigation_bar %}
|
||||
{% if id == 'section' %}
|
||||
<li>
|
||||
<a href="" {% if blank is sameas true %} target="_blank" {% endif %}>{{ label|e }}</a>
|
||||
<div class="uk-navbar-dropdown">
|
||||
<ul class="uk-nav uk-navbar-dropdown-nav">
|
||||
{% for phref, pid, plabel, pblank in href %}
|
||||
<li>
|
||||
<a href="{{ phref|e }}" {% if pblank is sameas true %} target="_blank" {% endif %}>{{ plabel|e }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
{% else %}
|
||||
{% if href != '.header' %}
|
||||
<a href="{{ href|e }}">{{ label|e }}</a>
|
||||
{% endif %}
|
||||
<li {% if id == active_page %} class="uk-active" {% endif %}>
|
||||
<a href="{{ href|e }}" {% if blank is sameas true %} target="_blank" {% endif %}>{{ label|e }}</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
@ -70,21 +88,18 @@
|
||||
<div id="offcanvas-nav" uk-offcanvas="overlay: true">
|
||||
<div class="uk-offcanvas-bar uk-flex uk-flex-column">
|
||||
<ul class="uk-nav uk-nav-primary uk-nav-center uk-margin-auto-vertical">
|
||||
{% for href, id, label in navigation_bar %}
|
||||
{% if href == '.header' %}
|
||||
<li class="uk-nav-header">{{ label|e }}</li>
|
||||
{% if id == 'generate' %}
|
||||
{% for ghref, gid, glabel in generation_bar %}
|
||||
<li {% if gid == active_page %} class="uk-active" {% endif %}>
|
||||
<a href="{{ ghref | e }}" {% if gid == 'treasure' %}target="_blank"{% endif %}>
|
||||
{{ glabel|e }}
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% for href, id, label, blank in navigation_bar %}
|
||||
{% if id == 'section' %}
|
||||
<li class="uk-nav-header uk-margin-large-top">{{ label|e }}</li>
|
||||
{% for phref, pid, plabel, pblank in href %}
|
||||
<li {% if pid == active_page %} class="uk-active" {% endif %}>
|
||||
<a href="{{ phref|e }}" {% if pblank is sameas true %} target="_blank" {% endif %}>{{ plabel|e }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
<li class="uk-margin-large-bottom"/>
|
||||
{% else %}
|
||||
<li {% if id == active_page %} class="uk-active" {% endif %}>
|
||||
<a href="{{ href|e }}">{{ label|e }}</a>
|
||||
<a href="{{ href|e }}" {% if blank is sameas true %} target="_blank" {% endif %}>{{ label|e }}</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
@ -100,5 +115,8 @@
|
||||
ACKS & related © <a href="http://www.autarch.co/">Autarch</a>.
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
{% block scripts %}
|
||||
{% endblock %}
|
||||
</body>
|
||||
</html>
|
||||
|
78
acks/templates/lair_gallery.html
Normal file
78
acks/templates/lair_gallery.html
Normal file
@ -0,0 +1,78 @@
|
||||
{% extends "base.html" %}
|
||||
{% set active_page = "lairs" %}
|
||||
|
||||
{% block title %}Dynamic Lairs{% endblock %}
|
||||
{% block content %}
|
||||
<div class="uk-flex uk-flex-center uk-margin-bottom uk-margin-top">
|
||||
<h1 class="uk-text-center"><strong>Adventurer Conqueror King</strong>Dynamic Lairs</h1>
|
||||
</div>
|
||||
<br/>
|
||||
<div class="uk-container uk-container-small">
|
||||
<!-- Animal Lairs -->
|
||||
<h2 class="uk-text-center"><strong>Animal Lairs</strong></h2>
|
||||
<div uk-slider>
|
||||
<ul class="uk-slider-nav uk-dotnav uk-flex-center uk-margin"></ul>
|
||||
<div class="uk-position-relative">
|
||||
<div class="uk-slider-container uk-light">
|
||||
<ul id="animal-lairs" class="uk-slider-items uk-child-width-1-2 uk-child-width-1-3@s uk-child-width-1-4@m">
|
||||
{% for i in animal %}
|
||||
<li data-src="{{ i }}" class="gallery-img-li"><img src="{{ i }}"/></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
<a class="uk-position-center-left-out" href="#" uk-slidenav-previous uk-slider-item="previous"></a>
|
||||
<a class="uk-position-center-right-out" href="#" uk-slidenav-next uk-slider-item="next"></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Humanoid Lairs -->
|
||||
<h2 class="uk-text-center uk-margin-xlarge-top"><strong>Humanoid Lairs</strong></h2>
|
||||
<div uk-slider>
|
||||
<ul class="uk-slider-nav uk-dotnav uk-flex-center uk-margin"></ul>
|
||||
<div class="uk-position-relative">
|
||||
<div class="uk-slider-container uk-light">
|
||||
<ul id="humanoid-lairs" class="uk-slider-items uk-child-width-1-2 uk-child-width-1-3@s uk-child-width-1-4@m">
|
||||
{% for i in humanoid %}
|
||||
<li data-src="{{ i }}" class="gallery-img-li"><img src="{{ i }}"/></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
<a class="uk-position-center-left uk-position-small uk-hidden-hover" href="#" uk-slidenav-previous uk-slider-item="previous"></a>
|
||||
<a class="uk-position-center-right uk-position-small uk-hidden-hover" href="#" uk-slidenav-next uk-slider-item="next"></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block head %}
|
||||
<style>
|
||||
li.gallery-img-li {
|
||||
overflow: hidden;
|
||||
border-radius: 4px;
|
||||
border: 2px solid #fff;
|
||||
height: 300px;
|
||||
width: 300px;
|
||||
}
|
||||
|
||||
li.gallery-img-li > img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
</style>
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/lightgallery.js@1.4.0/dist/css/lightgallery.min.css" integrity="sha256-s47mXWRWvrLQNL9VRQX0ykfkIVSLfNJuingF/SZztsM=" crossorigin="anonymous">
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
<script src="https://cdn.jsdelivr.net/npm/lightgallery.js@1.4.0/dist/js/lightgallery.min.js" integrity="sha256-0Zhc9IDI5elFpwJZlvdAM4u/6qlxi4qIOUlHDVl5wjU=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/lg-thumbnail.js@1.2.0/dist/lg-thumbnail.min.js" integrity="sha256-h70L9O3prxviKHrPHwrId33HakkgnURiB1KBHDyZOJc=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/lg-fullscreen.js@1.2.0/dist/lg-fullscreen.min.js" integrity="sha256-5VFY2GRRpY51CgT/ku3jPvpWybxJ2n+pbDNz05amGwk=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/lg-zoom.js@1.3.0/dist/lg-zoom.min.js" integrity="sha256-pw9GIEB9jGoek+S5xfa2Uz/8dZVjZsIYVJxy3jK3qgI=" crossorigin="anonymous"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
lightGallery(document.getElementById('animal-lairs'));
|
||||
lightGallery(document.getElementById('humanoid-lairs'));
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
34
acks/templates/wiki.html
Normal file
34
acks/templates/wiki.html
Normal file
@ -0,0 +1,34 @@
|
||||
{% extends "base.html" %}
|
||||
{% set active_page = "wiki" %}
|
||||
|
||||
{% block title %}ACKS Judge Wiki{% endblock %}
|
||||
{% block content %}
|
||||
<div class="uk-flex uk-flex-center uk-margin-bottom uk-margin-top">
|
||||
<h1 class="uk-text-center"><strong>Adventurer Conqueror King</strong>Wiki</h1>
|
||||
</div>
|
||||
<div id="frame-container">
|
||||
<iframe id="wiki-frame" src="https://atr0phy.net/acks/wiki"></iframe>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block head %}
|
||||
<style>
|
||||
#frame-container {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
height: 85vh;
|
||||
flex-direction: column:
|
||||
}
|
||||
#wiki-frame {
|
||||
flex-grow: 1;
|
||||
border: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
h1 strong {
|
||||
display: block;
|
||||
font-size: 50%;
|
||||
opacity: 0.65;
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
@ -1,6 +1,11 @@
|
||||
from flask import current_app, Blueprint, render_template, url_for, redirect
|
||||
import os
|
||||
|
||||
from flask import Blueprint, render_template, url_for, redirect
|
||||
from flask_basicauth import BasicAuth
|
||||
|
||||
|
||||
|
||||
basic_auth = BasicAuth()
|
||||
default_views = Blueprint('default_views', __name__, url_prefix='/')
|
||||
|
||||
@default_views.route('/')
|
||||
@ -11,33 +16,26 @@ def index():
|
||||
def handbook():
|
||||
return render_template('handbook.html')
|
||||
|
||||
@default_views.route('/wiki')
|
||||
@basic_auth.required
|
||||
def wiki():
|
||||
return render_template('wiki.html')
|
||||
|
||||
@default_views.route('/worldmap')
|
||||
def worldmap():
|
||||
return render_template('worldmap.html')
|
||||
|
||||
#@default_views.route('/treasure')
|
||||
#@default_views.route('/treasure/<string:treasure_type>')
|
||||
def treasure(treasure_type=None):
|
||||
# import requests
|
||||
# from lxml import html
|
||||
# Unused, we can't tap into Autarch's generator, so just link to a new tab
|
||||
# in navigation bar now
|
||||
if treasure_type is not None:
|
||||
with requests.Session() as s:
|
||||
# First grab the page to pull a fresh form_build_id
|
||||
treasure_page = s.get('http://autarch.co/treasure')
|
||||
dom_tree = html.fromstring(treasure_page.content)
|
||||
form_build_id = dom_tree.find('.//input[@name="form_build_id"]').attrib['value']
|
||||
@default_views.route('/lairs')
|
||||
def lair_gallery():
|
||||
base_path = "/srv/www/atr0phy.net/acks/img/dynamic_lairs/"
|
||||
base_url = "https://www.atr0phy.net/acks/img/dynamic_lairs/"
|
||||
|
||||
# Use that form_build_id to make a request for generated treasure
|
||||
headers = {'content-type': 'application/x-www-form-urlencoded; charset=UTF-8'}
|
||||
payload = {
|
||||
"form_id": "acks_treasure_form",
|
||||
"form_build_id": form_build_id,
|
||||
"treasure_type": treasure_type
|
||||
}
|
||||
response = s.post("http://autarch.co/system/ajax", data=payload, headers=headers)
|
||||
print("TG Response: {}, Payload: {}".format(response.text, payload))
|
||||
generated_treasure = response.json()[1]["data"].replace('class="form-textarea"', 'class="uk-textarea"')
|
||||
return render_template('treasure.html', generated_treasure=generated_treasure, treasure_type=treasure_type)
|
||||
return render_template('treasure.html')
|
||||
animal_lairs = []
|
||||
for filename in os.listdir(base_path + "animal/"):
|
||||
animal_lairs.append(base_url + "animal/" + filename)
|
||||
|
||||
humanoid_lairs = []
|
||||
for filename in os.listdir(base_path + "humanoid/"):
|
||||
humanoid_lairs.append(base_url + "humanoid/" + filename)
|
||||
|
||||
return render_template('lair_gallery.html', animal=animal_lairs, humanoid=humanoid_lairs)
|
||||
|
Loading…
x
Reference in New Issue
Block a user