diff --git a/calefaction/modules/campaigns.py b/calefaction/modules/campaigns.py index 3f88bb4..7a8a899 100644 --- a/calefaction/modules/campaigns.py +++ b/calefaction/modules/campaigns.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -from flask import abort, g +from flask import abort, g, request from flask_mako import render_template from ._provided import blueprint, config @@ -16,7 +16,12 @@ def get_current(): def home(): """Render and return the main campaign page.""" - return render_template("campaigns/campaign.mako", current=get_current()) + current = get_current() + if current: + campaign = config["campaigns"][current] + return render_template( + "campaigns/campaign.mako", name=current, campaign=campaign) + return render_template("campaigns/empty.mako") def navitem(): """Render and return the navigation item for this module.""" @@ -30,10 +35,11 @@ def campaign(): """Render and return the current campaign page.""" return home() -@blueprint.rroute("/settings/campaign/", methods=["POST"]) -def set_campaign(campaign): +@blueprint.rroute("/settings/campaign", methods=["POST"]) +def set_campaign(): """Update the user's currently selected campaign.""" + campaign = request.args.get("campaign") if campaign not in config["enabled"]: - abort(404) + abort(400) g.auth.set_character_modprop("campaigns", "current", campaign) return "", 204 diff --git a/config/modules/campaigns.yml.sample b/config/modules/campaigns.yml.sample index 2256062..824d9fe 100644 --- a/config/modules/campaigns.yml.sample +++ b/config/modules/campaigns.yml.sample @@ -4,12 +4,12 @@ # List of active campaigns, in your preferred order: enabled: - - Foo - - Bar + - foo + - bar campaigns: # ... - Foo: - a: b - Bar: - a: b + foo: + title: Foo + bar: + title: Bar diff --git a/static/main.css b/static/main.css index ecac1f2..494926e 100644 --- a/static/main.css +++ b/static/main.css @@ -322,6 +322,27 @@ footer ul li:not(:last-child)::after { } /* ================================ Modules ================================ */ +/* ------------------------------- Campaigns ------------------------------- */ + +#campaigns-select { + display: inline-block; + padding-right: 1em; + background: transparent 100% 50%/contain no-repeat; + border-width: 1px; +} + +#campaigns-select select { + max-width: 120px; + padding: 0 0.25em; + font-size: 100%; + color: inherit; + background: transparent; + border: none; + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; +} + /* -------------------------------- Members -------------------------------- */ #members-list { diff --git a/static/main.js b/static/main.js index b32252d..45be54a 100644 --- a/static/main.js +++ b/static/main.js @@ -3,6 +3,8 @@ var overlaps = function(needle, haystack) { }; $(function() { + /* ============================= Universal ============================= */ + // Install logout auto-POST form: $("#logout").click(function() { $("
", { @@ -43,4 +45,12 @@ $(function() { .prop("disabled", false); $(this).addClass("cur").find(":submit").prop("disabled", true); }); + + /* ============================== Modules ============================== */ + + // Campaigns: enable form auto-submit on campaign change: + $("#campaigns-select select").change(function() { + this.form.submit(); + }); + $('#campaigns-select input[type="submit"]').hide(); }); diff --git a/static/styles/amarr.css b/static/styles/amarr.css index 2447653..0cf5664 100644 --- a/static/styles/amarr.css +++ b/static/styles/amarr.css @@ -17,3 +17,7 @@ a { a:hover { color: #DDBE68; } + +#campaigns-select { + background-image: url('data:image/svg+xml;utf8,'); +} diff --git a/static/styles/caldari.css b/static/styles/caldari.css index 766d570..85f7258 100644 --- a/static/styles/caldari.css +++ b/static/styles/caldari.css @@ -17,3 +17,7 @@ a { a:hover { color: #88BBDD; } + +#campaigns-select { + background-image: url('data:image/svg+xml;utf8,'); +} diff --git a/static/styles/gallente.css b/static/styles/gallente.css index fe5b878..d3096f8 100644 --- a/static/styles/gallente.css +++ b/static/styles/gallente.css @@ -17,3 +17,7 @@ a { a:hover { color: #60AA90; } + +#campaigns-select { + background-image: url('data:image/svg+xml;utf8,'); +} diff --git a/static/styles/minmatar.css b/static/styles/minmatar.css index 01b125e..e319496 100644 --- a/static/styles/minmatar.css +++ b/static/styles/minmatar.css @@ -17,3 +17,7 @@ a { a:hover { color: #C88070; } + +#campaigns-select { + background-image: url('data:image/svg+xml;utf8,'); +} diff --git a/templates/campaigns/campaign.mako b/templates/campaigns/campaign.mako index a1b5c5d..ad20228 100644 --- a/templates/campaigns/campaign.mako +++ b/templates/campaigns/campaign.mako @@ -1,7 +1,6 @@ <%inherit file="../_default.mako"/> -% if current: -

Campaign: ${current}

-

Hello! ...

-% else: -

No campaigns currently.

-% endif +<%block name="title"> + ${campaign["title"] | h} – Campaign – ${g.config.get("corp.name") | h} + +

Campaign: ${campaign["title"] | h}

+

Hello! ...

diff --git a/templates/campaigns/empty.mako b/templates/campaigns/empty.mako new file mode 100644 index 0000000..553abc6 --- /dev/null +++ b/templates/campaigns/empty.mako @@ -0,0 +1,2 @@ +<%inherit file="../_default.mako"/> +

No campaigns currently.

diff --git a/templates/campaigns/navitem.mako b/templates/campaigns/navitem.mako index 9653051..81ca39c 100644 --- a/templates/campaigns/navitem.mako +++ b/templates/campaigns/navitem.mako @@ -1,6 +1,16 @@ Campaign: % if request.url_rule.endpoint == "campaigns.campaign": - ${current} + + + +
% else: - ${current} + <% campaign = g.config.modules.campaigns.config["campaigns"][current] %> + ${campaign["title"]} % endif diff --git a/templates/members/members.mako b/templates/members/members.mako index 374da37..a030b16 100644 --- a/templates/members/members.mako +++ b/templates/members/members.mako @@ -1,4 +1,7 @@ <%inherit file="../_default.mako"/> +<%block name="title"> + Members – ${g.config.get("corp.name") | h} +

Members

% if members: