Templates (finished?) (#22)

* Adds inset_illustration as a drop-down of svg data rather than as an uploady thing.

* Adds external link types to the homepage models

* Migrations

* Initial site template with our new shiny templates

* Moves all lca2017-specific assets to lca2017 subdirectory; symlinks from dist

* Reflects changes in site_base

* Deletes most of new assets in dist/

* WIP home page

* Adds external link list support

* Adds white-right panel type to the home page

* Removes an oops

* Adds copyright text to the site.

* Updates the remaining illustrations to be more compact.

* Adds illustration field to content_page, and adds fields into the news page.

* News index page

* News page is done!

* Formats the dates properly

* Commits migrations

* Optimises SVG files

* better logo

* oops

* Removes margin on logo.

* Optimises svgs, and uses tania’s originals

* One more
This commit is contained in:
Christopher Neugebauer 2016-06-27 08:01:42 +10:00 committed by Scott Bragg
parent ca329c1c90
commit 4f106a0cd4
56 changed files with 2306 additions and 172 deletions

View file

@ -0,0 +1,82 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2016-06-26 04:31
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
import wagtail.wagtailcore.blocks
import wagtail.wagtailcore.fields
import wagtail.wagtailimages.blocks
class Migration(migrations.Migration):
replaces = [(b'cms_pages', '0004_auto_20160626_0110'), (b'cms_pages', '0005_auto_20160626_0127'), (b'cms_pages', '0006_auto_20160626_0222'), (b'cms_pages', '0007_auto_20160626_0335')]
dependencies = [
('cms_pages', '0003_auto_20160625_0337'),
('wagtailimages', '0013_make_rendition_upload_callable'),
]
operations = [
migrations.AlterField(
model_name='homepage',
name='body',
field=wagtail.wagtailcore.fields.StreamField([('basic_content', wagtail.wagtailcore.blocks.StructBlock([(b'panel_type', wagtail.wagtailcore.blocks.ChoiceBlock(choices=[(1, 'Left-aligned image, blue-filtered image BG'), (2, 'Right-aligned image, white background')])), (b'heading', wagtail.wagtailcore.blocks.CharBlock(required=True)), (b'inset_illustration', wagtail.wagtailcore.blocks.ChoiceBlock(choices=[('antarctica.svg', 'Antarctica'), ('bridge.svg', 'Bridge'), ('casino.svg', 'Casino'), ('cradle.svg', 'Cradle Mountain'), ('devil.svg', 'Tasmanian Devil'), ('falls.svg', 'Waterfall'), ('hobart.svg', 'Hobart'), ('lavender.svg', 'Lavender'), ('tuz.svg', 'Tuz'), ('wineglass.svg', 'Wineglass')])), (b'background_image', wagtail.wagtailimages.blocks.ImageChooserBlock(help_text="This is used as the background image of a blue-left block. It's not used for white-right.", required=False)), (b'body', wagtail.wagtailcore.blocks.RichTextBlock(required=True)), (b'link', wagtail.wagtailcore.blocks.StructBlock([('page', wagtail.wagtailcore.blocks.PageChooserBlock()), ('title', wagtail.wagtailcore.blocks.CharBlock(required=True))])), (b'external_links', wagtail.wagtailcore.blocks.ListBlock(wagtail.wagtailcore.blocks.StructBlock([('alt', wagtail.wagtailcore.blocks.CharBlock(required=True)), ('icon', wagtail.wagtailcore.blocks.ChoiceBlock(choices=[('twitter.svg', 'Twitter'), ('facebook.svg', 'Facebook'), ('linkedin.svg', 'LinkedIn'), ('generic.svg', 'Generic URL')])), ('url', wagtail.wagtailcore.blocks.URLBlock(required=True))])))]))]),
),
migrations.AlterField(
model_name='homepage',
name='body',
field=wagtail.wagtailcore.fields.StreamField([('basic_content', wagtail.wagtailcore.blocks.StructBlock([(b'panel_type', wagtail.wagtailcore.blocks.ChoiceBlock(choices=[('blue_left', 'Left-aligned image, blue-filtered image BG'), ('white_right', 'Right-aligned image, white background')])), (b'heading', wagtail.wagtailcore.blocks.CharBlock(required=True)), (b'inset_illustration', wagtail.wagtailcore.blocks.ChoiceBlock(choices=[('antarctica.svg', 'Antarctica'), ('bridge.svg', 'Bridge'), ('casino.svg', 'Casino'), ('cradle.svg', 'Cradle Mountain'), ('devil.svg', 'Tasmanian Devil'), ('falls.svg', 'Waterfall'), ('hobart.svg', 'Hobart'), ('lavender.svg', 'Lavender'), ('tuz.svg', 'Tuz'), ('wineglass.svg', 'Wineglass')])), (b'background_image', wagtail.wagtailimages.blocks.ImageChooserBlock(help_text="This is used as the background image of a blue-left block. It's not used for white-right.", required=False)), (b'body', wagtail.wagtailcore.blocks.RichTextBlock(required=True)), (b'link', wagtail.wagtailcore.blocks.StructBlock([('page', wagtail.wagtailcore.blocks.PageChooserBlock()), ('title', wagtail.wagtailcore.blocks.CharBlock(required=True))])), (b'external_links', wagtail.wagtailcore.blocks.ListBlock(wagtail.wagtailcore.blocks.StructBlock([('alt', wagtail.wagtailcore.blocks.CharBlock(required=True)), ('icon', wagtail.wagtailcore.blocks.ChoiceBlock(choices=[('twitter.svg', 'Twitter'), ('facebook.svg', 'Facebook'), ('linkedin.svg', 'LinkedIn'), ('generic.svg', 'Generic URL')])), ('url', wagtail.wagtailcore.blocks.URLBlock(required=True))])))]))]),
),
migrations.AlterField(
model_name='homepage',
name='body',
field=wagtail.wagtailcore.fields.StreamField([('basic_content', wagtail.wagtailcore.blocks.StructBlock([(b'panel_type', wagtail.wagtailcore.blocks.ChoiceBlock(choices=[('blue_left', 'Left-aligned image, blue-filtered image BG'), ('white_right', 'Right-aligned image, white background')])), (b'heading', wagtail.wagtailcore.blocks.CharBlock(required=True)), (b'inset_illustration', wagtail.wagtailcore.blocks.ChoiceBlock(choices=[('antarctica.svg', 'Antarctica'), ('bridge.svg', 'Bridge'), ('casino.svg', 'Casino'), ('cradle.svg', 'Cradle Mountain'), ('devil.svg', 'Tasmanian Devil'), ('falls.svg', 'Waterfall'), ('hobart.svg', 'Hobart'), ('lavender.svg', 'Lavender'), ('tuz.svg', 'Tuz'), ('wineglass.svg', 'Wineglass')])), (b'background_image', wagtail.wagtailimages.blocks.ImageChooserBlock(help_text="This is used as the background image of a blue-left block. It's not used for white-right.", required=False)), (b'body', wagtail.wagtailcore.blocks.RichTextBlock(required=True)), (b'link', wagtail.wagtailcore.blocks.StructBlock([('page', wagtail.wagtailcore.blocks.PageChooserBlock()), ('title', wagtail.wagtailcore.blocks.CharBlock(required=True))])), (b'external_links', wagtail.wagtailcore.blocks.ListBlock(wagtail.wagtailcore.blocks.StructBlock([('alt', wagtail.wagtailcore.blocks.CharBlock(required=True)), ('icon', wagtail.wagtailcore.blocks.ChoiceBlock(choices=[('twitter.svg', 'Twitter'), ('generic.svg', 'Generic URL')])), ('url', wagtail.wagtailcore.blocks.URLBlock(required=True))])))]))]),
),
migrations.RenameField(
model_name='contentpage',
old_name='main_image',
new_name='background_image',
),
migrations.RenameField(
model_name='newspage',
old_name='main_image',
new_name='background_image',
),
migrations.RemoveField(
model_name='contentpage',
name='image_display',
),
migrations.AddField(
model_name='contentpage',
name='inset_illustration',
field=models.CharField(choices=[('antarctica.svg', 'Antarctica'), ('bridge.svg', 'Bridge'), ('casino.svg', 'Casino'), ('cradle.svg', 'Cradle Mountain'), ('devil.svg', 'Tasmanian Devil'), ('falls.svg', 'Waterfall'), ('hobart.svg', 'Hobart'), ('lavender.svg', 'Lavender'), ('tuz.svg', 'Tuz'), ('wineglass.svg', 'Wineglass')], default=0, max_length=256),
preserve_default=False,
),
migrations.AddField(
model_name='newsindexpage',
name='background_image',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.Image'),
),
migrations.AddField(
model_name='newsindexpage',
name='body',
field=wagtail.wagtailcore.fields.RichTextField(blank=True),
),
migrations.AddField(
model_name='newspage',
name='portrait_image',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.Image'),
),
migrations.AlterField(
model_name='homepage',
name='body',
field=wagtail.wagtailcore.fields.StreamField([('basic_content', wagtail.wagtailcore.blocks.StructBlock([(b'panel_type', wagtail.wagtailcore.blocks.ChoiceBlock(choices=[('blue_left', 'Left-aligned image, blue-filtered image BG'), ('white_right', 'Right-aligned image, white background')])), (b'heading', wagtail.wagtailcore.blocks.CharBlock(required=True)), (b'inset_illustration', wagtail.wagtailcore.blocks.ChoiceBlock(choices=[('antarctica.svg', 'Antarctica'), ('bridge.svg', 'Bridge'), ('casino.svg', 'Casino'), ('cradle.svg', 'Cradle Mountain'), ('devil.svg', 'Tasmanian Devil'), ('falls.svg', 'Waterfall'), ('hobart.svg', 'Hobart'), ('lavender.svg', 'Lavender'), ('tuz.svg', 'Tuz'), ('wineglass.svg', 'Wineglass')])), (b'background_image', wagtail.wagtailimages.blocks.ImageChooserBlock(help_text="This is used as the background image of a blue-left block. It's not used for white-right.", required=False)), (b'body', wagtail.wagtailcore.blocks.RichTextBlock(required=True)), (b'link', wagtail.wagtailcore.blocks.StructBlock([('page', wagtail.wagtailcore.blocks.PageChooserBlock()), ('title', wagtail.wagtailcore.blocks.CharBlock(required=True))])), (b'external_links', wagtail.wagtailcore.blocks.ListBlock(wagtail.wagtailcore.blocks.StructBlock([('alt', wagtail.wagtailcore.blocks.CharBlock(required=True)), ('icon', wagtail.wagtailcore.blocks.ChoiceBlock(choices=[('twitter', 'Twitter'), ('generic', 'Generic URL')])), ('url', wagtail.wagtailcore.blocks.URLBlock(required=True))])))]))]),
),
migrations.AlterField(
model_name='newsindexpage',
name='intro',
field=models.CharField(max_length=250),
),
]

View file

@ -18,83 +18,85 @@ from wagtail.wagtailadmin.edit_handlers import StreamFieldPanel
from wagtail.wagtailsearch import index
class HomePage(Page):
ILLUSTRATION_ANTARCTICA = "antarctica.svg"
ILLUSTRATION_BRIDGE = "bridge.svg"
ILLUSTRATION_CASINO = "casino.svg"
ILLUSTRATION_CRADLE = "cradle.svg"
ILLUSTRATION_DEVIL = "devil.svg"
ILLUSTRATION_FALLS = "falls.svg"
ILLUSTRATION_HOBART = "hobart.svg"
ILLUSTRATION_LAVENDER = "lavender.svg"
ILLUSTRATION_TUZ = "tuz.svg"
ILLUSTRATION_WINEGLASS = "wineglass.svg"
BASIC_CONTENT_BLUE_LEFT = 1
BASIC_CONTENT_WHITE_RIGHT = 2
BASIC_CONTENT_TYPES = (
(BASIC_CONTENT_BLUE_LEFT, "Left-aligned image, blue-filtered image BG"),
(BASIC_CONTENT_WHITE_RIGHT, "Right-aligned image, white background"),
ILLUSTRATION_TYPES = (
(ILLUSTRATION_ANTARCTICA, "Antarctica"),
(ILLUSTRATION_BRIDGE, "Bridge"),
(ILLUSTRATION_CASINO, "Casino"),
(ILLUSTRATION_CRADLE, "Cradle Mountain"),
(ILLUSTRATION_DEVIL, "Tasmanian Devil"),
(ILLUSTRATION_FALLS, "Waterfall"),
(ILLUSTRATION_HOBART, "Hobart"),
(ILLUSTRATION_LAVENDER, "Lavender"),
(ILLUSTRATION_TUZ, "Tuz"),
(ILLUSTRATION_WINEGLASS, "Wineglass"),
)
class BasicContentBlock(blocks.StructBlock):
class Meta:
template = "cms_pages/home_page_blocks/basic_content.html"
PANEL_BLUE_LEFT = "blue_left"
PANEL_WHITE_RIGHT = "white_right"
PANEL_TYPES = (
(PANEL_BLUE_LEFT, "Left-aligned image, blue-filtered image BG"),
(PANEL_WHITE_RIGHT, "Right-aligned image, white background"),
)
ILLUSTRATION_ANTARCTICA = "antarctica.svg"
ILLUSTRATION_BRIDGE = "bridge.svg"
ILLUSTRATION_CASINO = "casino.svg"
ILLUSTRATION_CRADLE = "cradle.svg"
ILLUSTRATION_DEVIL = "devil.svg"
ILLUSTRATION_FALLS = "falls.svg"
ILLUSTRATION_HOBART = "hobart.svg"
ILLUSTRATION_LAVENDER = "lavender.svg"
ILLUSTRATION_TUZ = "tuz.svg"
ILLUSTRATION_WINEGLASS = "wineglass.svg"
ILLUSTRATION_TYPES = (
(ILLUSTRATION_ANTARCTICA, "Antarctica"),
(ILLUSTRATION_BRIDGE, "Bridge"),
(ILLUSTRATION_CASINO, "Casino"),
(ILLUSTRATION_CRADLE, "Cradle Mountain"),
(ILLUSTRATION_DEVIL, "Tasmanian Devil"),
(ILLUSTRATION_FALLS, "Waterfall"),
(ILLUSTRATION_HOBART, "Hobart"),
(ILLUSTRATION_LAVENDER, "Lavender"),
(ILLUSTRATION_TUZ, "Tuz"),
(ILLUSTRATION_WINEGLASS, "Wineglass"),
)
EXTERNAL_LINK_TWITTER = "twitter.svg"
EXTERNAL_LINK_FACEBOOK = "facebook.svg"
EXTERNAL_LINK_LINKEDIN = "linkedin.svg"
EXTERNAL_LINK_GENERIC = "generic.svg"
EXTERNAL_LINK_TWITTER = "twitter"
EXTERNAL_LINK_GENERIC = "generic"
EXTERNAL_LINK_TYPES = (
(EXTERNAL_LINK_TWITTER, "Twitter"),
(EXTERNAL_LINK_FACEBOOK, "Facebook"),
(EXTERNAL_LINK_LINKEDIN, "LinkedIn"),
(EXTERNAL_LINK_GENERIC, "Generic URL"),
)
panel_type = blocks.ChoiceBlock(
choices=PANEL_TYPES,
required=True,
)
heading = blocks.CharBlock(required=True)
inset_illustration = blocks.ChoiceBlock(
choices=ILLUSTRATION_TYPES,
required=True,
)
background_image = imageblocks.ImageChooserBlock(
required=False,
help_text="This is used as the background image of a "
"blue-left block. It's not used for white-right."
)
body = blocks.RichTextBlock(required=True)
link = blocks.StructBlock([
("page", blocks.PageChooserBlock()),
("title", blocks.CharBlock(required=True)),
])
external_links = blocks.ListBlock(
blocks.StructBlock([
("alt", blocks.CharBlock(required=True)),
("icon", blocks.ChoiceBlock(
choices=EXTERNAL_LINK_TYPES,
required=True,
)),
("url", blocks.URLBlock(required=True)
)])
)
class HomePage(Page):
body = StreamField([
("basic_content", blocks.StructBlock([
("type", blocks.ChoiceBlock(
choices=BASIC_CONTENT_TYPES,
required=True,
)),
("heading", blocks.CharBlock(required=True)),
("inset_illustration", blocks.ChoiceBlock(
choices=ILLUSTRATION_TYPES,
required=True,
)),
("background_image", imageblocks.ImageChooserBlock(
required=False,
help_text="This is used as the background image of a "
"blue-left block. It's not used for white-right."
)),
("body", blocks.RichTextBlock(required=True)),
("link", blocks.StructBlock([
("page", blocks.PageChooserBlock()),
("title", blocks.CharBlock(required=True)),
])),
("external_links", blocks.ListBlock(
blocks.StructBlock([
("alt", blocks.CharBlock(required=True)),
("icon", blocks.ChoiceBlock(
choices=EXTERNAL_LINK_TYPES,
required=True,
)),
("url", blocks.URLBlock(required=True)
)])
)),
])),
("basic_content", BasicContentBlock()),
# TODO: keynotes
# TODO: other bits
])
@ -112,7 +114,7 @@ class AbstractContentPage(Page):
intro = models.CharField(max_length=250)
body = RichTextField(blank=True)
main_image = models.ForeignKey(
background_image = models.ForeignKey(
'wagtailimages.Image',
null=True,
blank=True,
@ -126,7 +128,7 @@ class AbstractContentPage(Page):
]
content_panels = Page.content_panels + [
ImageChooserPanel('main_image'),
ImageChooserPanel('background_image'),
FieldPanel('intro'),
FieldPanel('body', classname="full")
]
@ -134,50 +136,47 @@ class AbstractContentPage(Page):
class ContentPage(AbstractContentPage):
IMAGE_DISPLAY_FEATURE = 1
IMAGE_DISPLAY_VIGNETTE = 2
IMAGE_DISPLAY = (
(IMAGE_DISPLAY_FEATURE, "Banner with background feature image"),
(IMAGE_DISPLAY_VIGNETTE, "No banner, circular vignette"),
inset_illustration = models.CharField(
choices=ILLUSTRATION_TYPES,
max_length=256,
)
image_display = models.IntegerField(
choices=IMAGE_DISPLAY,
)
def image_display_feature(self):
return self.image_display == IMAGE_DISPLAY_FEATURE
def image_display_vignette(self):
return self.image_display == IMAGE_DISPLAY_VIGNETTE
content_panels = [
FieldPanel('image_display')
] + AbstractContentPage.content_panels
content_panels = AbstractContentPage.content_panels + [
FieldPanel('inset_illustration')
]
# News pages
class NewsIndexPage(Page):
intro = RichTextField(blank=True)
class NewsIndexPage(AbstractContentPage):
def child_pages(self):
return NewsPage.objects.live().child_of(self).specific().order_by("-date")
subpage_types = [
"NewsPage",
]
content_panels = Page.content_panels + [
FieldPanel('intro', classname="full"),
]
content_panels = AbstractContentPage.content_panels
class NewsPage(AbstractContentPage):
date = models.DateField("Post date")
portrait_image = models.ForeignKey(
'wagtailimages.Image',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+'
)
parent_page_types = [
NewsIndexPage,
]
content_panels = AbstractContentPage.content_panels + [
FieldPanel('date'),
ImageChooserPanel('portrait_image'),
]

View file

@ -1,7 +1,6 @@
{% extends "site_base.html" %}
{% load staticfiles %}
{% load wagtailcore_tags %}
{% load wagtailimages_tags %}
{% load sitetree %}
{% load i18n %}
@ -12,14 +11,11 @@
{% block body %}
{% block content %}
<h1>{{ page.title }}</h1>
{% if page.main_image %}
{% image page.main_image width-400 %}
{% endif %}
<div class="intro">{{ page.intro }}</div>
{{ page.body|richtext }}
{% include "cms_pages/content_page_header_panel.html" %}
<div class="l-content-page">
<div class="l-content-page--richtext">
{{ page.body|richtext }}
</div>
</div>
{% endblock %}
{% endblock %}

View file

@ -0,0 +1,33 @@
{% load staticfiles %}
{% load wagtailimages_tags %}
<div class="panel panel__compact panel__bg">
{% if page.background_image %}
{% image page.background_image width-2000 as background_image %}
<div style="background-image: url('{{ background_image.url }}');" class="panel--bg"></div>
{% else %}
<div class="panel--bg"></div>
{% endif %}
<div class="panel--content">
<div class="panel--2-3">
<h2>{{ page.title }}</h2>
<p class="lede">{{ page.intro }}</p>
</div>
{% if page.inset_illustration or page.portrait_image %}
<div class="panel--1-3">
{% if page.inset_illustration %}
<div class="illustration">
<img
src="{% static 'lca2017/images/svgs/illustrations/' %}{{ page.inset_illustration }}"
/>
</div>
{% elif page.portrait_image %}
<div class="portrait">
{% image page.portrait_image width-640 as portrait_image %}
<div style="background-image: url('{{ portrait_image.url }}');" class="portrait--img"></div>
</div>
{% endif %}
</div>
{% endif %}
</div>
</div>

View file

@ -7,5 +7,7 @@
{% block head_title %}{% trans "Welcome" %}{% endblock %}
{% block body %}
{{ page.body }}
{{ page.body }}
{% endblock %}

View file

@ -0,0 +1,25 @@
{% load staticfiles %}
{% load wagtailcore_tags %}
{% load wagtailimages_tags %}
{% if value.panel_type == "blue_left" %}
<div class="panel panel__bg">
{% image value.background_image width-2000 as background_image %}
<div style="background-image: url('{{ background_image.url }}');" class="panel--bg"></div>
<div class="panel--content">
{% include "cms_pages/home_page_blocks/basic_content_illustration.html" %}
{% include "cms_pages/home_page_blocks/basic_content_text_and_links.html" %}
</div>
</div>
{% elif value.panel_type == "white_right" %}
<div class="panel">
<div class="panel--content">
{% include "cms_pages/home_page_blocks/basic_content_text_and_links.html" %}
{% include "cms_pages/home_page_blocks/basic_content_illustration.html" %}
</div>
</div>
{% endif %}

View file

@ -0,0 +1,8 @@
{% load staticfiles %}
<div class="panel--1-3">
<div class="illustration">
<img
src="{% static 'lca2017/images/svgs/illustrations/' %}{{ value.inset_illustration }}"
/>
</div>
</div>

View file

@ -0,0 +1,16 @@
<div class="panel--2-3">
<h2>{{ value.heading }}</h2>
<p class="lede">{{ value.body }}</p>
<div class="btn-group">
{% if value.panel_type == "blue_left" %}
<a href="{{ value.link.page.url }}" class="btn btn__white">{{ value.link.title }}</a>
{% elif value.panel_type == "white_right" %}
<a href="{{ value.link.page.url }}" class="btn">{{ value.link.title }}</a>
{% endif %}
{% for link in value.external_links %}
<a href="{{ link.url }}" title="{{ link.alt }}" class="btn-svg">
{% include "cms_pages/home_page_blocks/btn_svg.html" %}
</a>
{% endfor %}
</div>
</div>

View file

@ -0,0 +1,24 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 57 57">
<defs>
<style>
.web-cls-1 {
fill: none;
}
.web-cls-2 {
clip-path: url(#clip-path);
}
.web-cls-3 {
fill: currentColor;
}
</style>
<clipPath id="clip-path">
<rect class="web-cls-1" width="57" height="57"></rect>
</clipPath>
</defs>
<title>website</title>
<g class="web-cls-2">
<path class="web-cls-3" d="M33.78,43.33A9.74,9.74,0,0,1,27,40.49l-2.84-2.84a1.1,1.1,0,0,1,0-1.59l1.59-1.59a1.09,1.09,0,0,1,1.59,0l2.84,2.84a5,5,0,1,0,7-7l-2.84-2.84a1.1,1.1,0,0,1,0-1.59l1.59-1.59a1.1,1.1,0,0,1,1.59,0l2.84,2.84a9.56,9.56,0,0,1,2.84,6.82,9.41,9.41,0,0,1-9.44,9.44M23.21,24.81l1.59-1.59a1.09,1.09,0,0,1,1.59,0l7.5,7.5a1.09,1.09,0,0,1,0,1.59L32.3,33.9a1.09,1.09,0,0,1-1.59,0l-7.5-7.5a1.09,1.09,0,0,1,0-1.59m-0.57,6.48-1.59,1.59a1.1,1.1,0,0,1-1.59,0L16.62,30a9.56,9.56,0,0,1,6.71-16.37,9.72,9.72,0,0,1,6.82,2.84L33,19.35a1.09,1.09,0,0,1,0,1.59L31.4,22.53a1.1,1.1,0,0,1-1.6,0L27,19.69a5,5,0,0,0-3.52-1.48,5,5,0,0,0-5,5,5,5,0,0,0,1.48,3.52l2.84,2.84a1.81,1.81,0,0,1-.11,1.7M28.5,0A28.5,28.5,0,1,0,57,28.5,28.5,28.5,0,0,0,28.5,0"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,5 @@
{% if link.icon == "twitter" %}
{% include "cms_pages/home_page_blocks/btn_twitter.html" %}
{% elif link.icon == "generic" %}
{% include "cms_pages/home_page_blocks/btn_generic_link.html" %}
{% endif %}

View file

@ -0,0 +1,24 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 57 57">
<defs>
<style>
.twtr-cls-1 {
fill: none;
}
.twtr-cls-2 {
clip-path: url(#clip-path);
}
.twtr-cls-3 {
fill: currentColor;
}
</style>
<clipPath id="clip-path" transform="translate(0 0)">
<rect class="twtr-cls-1" width="57" height="57"></rect>
</clipPath>
</defs>
<title>twitter</title>
<g class="twtr-cls-2">
<path class="twtr-cls-3" d="M39.83,22.69c0,0.25,0,.5,0,0.75,0,7.73-5.88,16.64-16.64,16.64a16.55,16.55,0,0,1-9-2.63,12.38,12.38,0,0,0,1.4.08A11.72,11.72,0,0,0,22.91,35,5.86,5.86,0,0,1,17.45,31a6,6,0,0,0,1.1.1,5.89,5.89,0,0,0,1.54-.2,5.86,5.86,0,0,1-4.69-5.73V25.07A5.82,5.82,0,0,0,18,25.8,5.85,5.85,0,0,1,16.23,18,16.59,16.59,0,0,0,28.29,24.1a5.85,5.85,0,0,1,10-5.33A11.66,11.66,0,0,0,42,17.35a5.87,5.87,0,0,1-2.57,3.24,11.65,11.65,0,0,0,3.36-.92,11.84,11.84,0,0,1-2.92,3M28.5,0A28.5,28.5,0,1,0,57,28.5,28.5,28.5,0,0,0,28.5,0" transform="translate(0 0)"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -1,5 +1,6 @@
{% extends "site_base.html" %}
{% load staticfiles %}
{% load wagtailcore_tags %}
{% load wagtailimages_tags %}
@ -12,24 +13,28 @@
{% block body %}
{% block content %}
<h1>{{ page.title }}</h1>
{% if page.main_image %}
{% image page.main_image width-400 %}
{% endif %}
<p class="meta">{{ page.date }}</p>
<div class="intro">{{ page.intro }}</div>
{% if page.get_children.specific %}
<ul>
{% for item in page.get_children.specific %}
<li><a href="{{ item.url }}">{{ item.title }}</a></li>
{% endfor %}
</ul>
{% endif %}
{% include "cms_pages/content_page_header_panel.html" %}
{% if page.child_pages %}
{% for item in page.child_pages %}
<div class="panel panel__compact">
<div class="panel--content">
<div class="panel--1-3">
<div class="portrait">
{% image item.portrait_image width-640 as portrait_image %}
<div style="background-image: url('{{ portrait_image.url }}');" class="portrait--img"></div>
</div>
</div>
<div class="panel--2-3">
<h2>{{ item.title }}</h2>
<p class="lede"><em>{{ item.date|date:"j F Y" }}</em> {{ item.intro }}</p>
<a href="{{ item.url }}" class="btn">Read more</a>
</div>
</div>
</div>
{% endfor %}
<div class="panel panel__compact"></div>
{% endif %}
{% endblock %}
{% endblock %}

View file

@ -12,16 +12,12 @@
{% block body %}
{% block content %}
<h1>{{ page.title }}</h1>
{% if page.main_image %}
{% image page.main_image width-400 %}
{% endif %}
<p class="meta">{{ page.date }}</p>
<div class="intro">{{ page.intro }}</div>
{{ page.body|richtext }}
{% include "cms_pages/content_page_header_panel.html" %}
<div class="l-content-page">
<div class="l-content-page--richtext">
<p><em>{{ page.date|date:"j F Y" }}</em></p>
{{ page.body|richtext }}
</div>
</div>
{% endblock %}
{% endblock %}

121
pinaxcon/templates/site_base.html Normal file → Executable file
View file

@ -1,57 +1,100 @@
{% extends "theme_bootstrap/base.html" %}
{% load staticfiles %}
{% load metron_tags %}
{% load i18n %}
{% load sitetree %}
{# <!-- https://gist.github.com/geedmo/5682742--> #}
<!DOCTYPE html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="description" content="">
{% block viewport %}
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
{% endblock %}
<title>{% block head_title_base %}{% if SITE_NAME %}{{ SITE_NAME }} | {% endif %}{% block head_title %}{% endblock %}{% endblock %}</title>
{% block styles %}
{% include "_styles.html" %}
<link rel="stylesheet" href="{% static 'lca2017/css/app.css' %}">
<link rel="stylesheet" href="{% static 'lca2017/css/print.css' %}" media="print">
<!--FIXME: download-->
<link href="https://fonts.googleapis.com/css?family=Titillium+Web:700,900|Roboto:400italic,400,700,700italic" rel="stylesheet" type="text/css">
<!--Meta tags-->
<meta name="theme-color" content="#0c486c">
{% endblock %}
{% block extra_head_base %}
{% block extra_head %}{% endblock %}
{% endblock %}
{% block nav %}
{% sitetree_menu from "main" include "trunk" template "sitetree/menu_bootstrap3.html" %}
<!--Twitter-->
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@linuxconfau">
<meta name="twitter:creator" content="@linuxconfau">
<meta name="twitter:description" content="Linux Conf Hobart 16-20 January 2017">
<meta name="twitter:image:src" content="TODO">
<!--Open Graph-->
<meta property="og:url" content="https://linux.conf.au/">
<meta property="og:title" content="Linux.Conf.Au">
<meta property="og:description" content="Linux Conf Hobart 16-20 January 2017">
<meta property="og:type" content="website">
<meta property="fb:admins" content="TODO">
<meta property="fb:profile_id" content="TODO">
{% block extra_head_base %}
{% block extra_head %}{% endblock %}
{% endblock %}
</head>
<body class="{% block body_class %}{% endblock %}">
{% block topbar_base %}
<header role="banner" class="l-header">
<div class="l-header--logo">
{% block site_brand %}
<img src="{% static 'lca2017/images/svgs/lca2017-website-logo.svg' %}" width="300px" />
{% endblock %}
</div>
{% block nav %}
{% sitetree_menu from "main" include "trunk" template "sitetree_header.html" %}
<a href="#" data-menu-opener="" class="l-header--menu-opener"></a>
</header>
{% sitetree_menu from "main" include "trunk" template "sitetree_opener.html" %}
{% endblock %}
{% endblock %}
{% block body_base %}
<section id="content_body">
<div class="container">
{% include "_messages.html" %}
<div class="row">
<div class="col-md-9">
{% block body %}
{% endblock %}
</div>
<div class="col-md-3">
{% block sidebar %}
{% include "_default_sidebar.html" %}
{% endblock %}
</div>
</div>
<main role="main">
{% block body %}
{% block content %}
{% endblock %}
{% endblock %}
</div>
</section>
{% endblock %}
{% block footer %}
{% include "_footer.html" %}
{% block footer_base %}
<div class="panel panel__compact panel__bg">
<div style="background-image: url('');" class="panel--bg"></div>
<div class="panel--content">
<div class="panel--2-3">
<!-- TODO: put something here. -->
</div>
</div>
</div>
<!-- https://gist.github.com/geedmo/5682742-->
<footer class="l-footer">
{% block footer %}
<div class="l-footer--text">
<h3>Sponsors</h3>
<p class="lede">Magna morbi aliquet commodo arcu odio dui imperdiet blandit est.
</p><a href="#" class="btn">See sponsors</a>
</div>
<div class="l-footer--logos">
<img src="{% static 'lca2017/images/HPE.jpg' %}" role="presentation">
<img src="{% static 'lca2017/images/IBM.jpg' %}" role="presentation"></div>
<p class="lede">© 2016 linux.conf.au 2017 and Linux Australia. Linux is a registered trademark of Linus Torvalds. Site design by <a href="http://takeflight.com.au" >Takeflight</a>. <a href="/colophon">Colophon</a>.</p>
{% endblock %}
</footer>
{% endblock %}
{% block scripts %}
{% include "_scripts.html" %}
<script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.2.0/ace.js"></script>
</main>
{% block scripts %}
<script src="{% static 'lca2017/js/app.js' %}"></script>
{% block extra_script %}{% endblock %}
{% endblock %}
{% endblock %}
{% block extra_body_base %}
{% analytics %}
{% block extra_body %}{% endblock %}
{% endblock %}
</body>
</html>

View file

@ -0,0 +1,10 @@
{% load sitetree %}
<nav role="navigation" class="l-header--links">
{% for item in sitetree_items %}
<!-- FIXME: NEeds a dropdown mechanism -->
<a href="{% if item.has_children %}#{% else %}{% sitetree_url for item %}{% endif %}" {% if item.has_children %}class="l-header--nav dropdown-toggle {% if item.is_current or item.in_current_branch %}active{% endif %}" data-toggle="dropdown" {% else %}class="l-header--nav {% if item.is_current or item.in_current_branch %}active{% endif %}"{% endif %}>{{ item.title_resolved }}</a>
<!-- {% if item.has_children %}
{% sitetree_children of item for menu template "sitetree_header_dropdown.html" %}
{% endif %} -->
{% endfor %}
</nav>

View file

@ -0,0 +1,8 @@
{% load sitetree %}
<ul class="dropdown-menu" role="menu">
{% for item in sitetree_items %}
<li role="presentation" {% if item.is_current or item.in_current_branch %}class="active"{% endif %}>
<a role="menuitem" href="{% sitetree_url for item %}" {% if item.hint %}title="{{ item.hint }}"{% endif %}>{{ item.title_resolved }}</a>
</li>
{% endfor %}
</ul>

View file

@ -0,0 +1,14 @@
{% load sitetree %}
<div data-menu="" class="l-header--menu">
<ul class="link-list">
{% for item in sitetree_items %}
<!-- FIXME: NEeds a dropdown mechanism -->
<li class="link-list--item"><a href="{% if item.has_children %}#{% else %}{% sitetree_url for item %}{% endif %}" {% if item.has_children %}class="l-header--nav dropdown-toggle {% if item.is_current or item.in_current_branch %}active{% endif %}" data-toggle="dropdown" {% else %}class="l-header--nav {% if item.is_current or item.in_current_branch %}active{% endif %}"{% endif %}>{{ item.title_resolved }}</a></li>
<!-- {% if item.has_children %}
{% sitetree_children of item for menu template "sitetree_opener_dropdown.html" %}
{% endif %} -->
{% endfor %}
</ul>
</div>
</nav>

View file

@ -0,0 +1,8 @@
{% load sitetree %}
<ul class="dropdown-menu" role="menu">
{% for item in sitetree_items %}
<li role="presentation" {% if item.is_current or item.in_current_branch %}class="active"{% endif %}>
<a role="menuitem" href="{% sitetree_url for item %}" {% if item.hint %}title="{{ item.hint }}"{% endif %}>{{ item.title_resolved }}</a>
</li>
{% endfor %}
</ul>

1
static/dist/lca2017 vendored Symbolic link
View file

@ -0,0 +1 @@
../src/lca2017/

1419
static/src/lca2017/css/app.css Executable file

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
{"version":3,"sources":["print.css"],"names":[],"mappings":"AAAA;;GAEG;AACH;;GAEG;AACH;;GAEG;AACH;;;GAGG;AACH;;EAEE;AACF;;GAEG;AACH;;GAEG;AACH;;GAEG;AACH;EACE,cAAc;CACf;;AAED;EACE,WAAW;CACZ;;AAED;EACE,cAAc;EACd,WAAW;CACZ;;AAED;EACE,sBAAsB;CACvB;;AAED;EACE,cAAc;CACf;;AAED;EACE,cAAc;CACf;;AAED;EACE,eAAe;CAChB;;AAED;EACE,eAAe;EACf,sBAAsB;CACvB;;AAED;EACE,kCAAkC;EAClC,0BAA0B;CAC3B","file":"print.css","sourcesContent":["/**\n * Media Queries - *Try* and make everything fit within these - use @from/to/between\n */\n/**\n * Font definitions\n */\n/**\n * Transitions\n */\n/**\n * Padding\n * Usage: padding: $padding-rythm*2\n */\n/*\n* Colours\n*/\n/**\n * Purpose-based colors\n */\n/**\n * z-index stack\n */\n/**\n * Misc\n */\n.l-header--menu-opener {\n display: none;\n}\n\n.l-header--logo {\n width: 25%;\n}\n\n.l-header--menu-opener {\n display: none;\n opacity: 0;\n}\n\n.l-header--links {\n display: inline-block;\n}\n\n.illustration {\n display: none;\n}\n\n.portrait {\n display: none;\n}\n\n.panel__bg {\n color: #0c486c;\n}\n\n.btn__white {\n color: #0c486c;\n border-color: #0c486c;\n}\n\n* {\n -webkit-print-color-adjust: exact;\n print-color-adjust: exact;\n}\n"],"sourceRoot":"/source/"}

View file

@ -0,0 +1,65 @@
/**
* Media Queries - *Try* and make everything fit within these - use @from/to/between
*/
/**
* Font definitions
*/
/**
* Transitions
*/
/**
* Padding
* Usage: padding: $padding-rythm*2
*/
/*
* Colours
*/
/**
* Purpose-based colors
*/
/**
* z-index stack
*/
/**
* Misc
*/
.l-header--menu-opener {
display: none;
}
.l-header--logo {
width: 25%;
}
.l-header--menu-opener {
display: none;
opacity: 0;
}
.l-header--links {
display: inline-block;
}
.illustration {
display: none;
}
.portrait {
display: none;
}
.panel__bg {
color: #0c486c;
}
.btn__white {
color: #0c486c;
border-color: #0c486c;
}
* {
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}
/*# sourceMappingURL=maps/print.css.map */

BIN
static/src/lca2017/images/404.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
static/src/lca2017/images/HPE.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/src/lca2017/images/IBM.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 522 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 821 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 MiB

View file

@ -0,0 +1,12 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 57 55.76">
<defs>
<style>
.squid {
fill: currentColor;
}
</style>
</defs>
<title>gitlab</title>
<path class="squid" d="M57,28.5A28.5,28.5,0,1,0,20.17,55.76l0-.06a1.47,1.47,0,0,0,1.29-.82V49.23s-3.84.59-5.61-.08-3-1.65-4.35-4.9-3.45-2.67-3.69-3.84,2.27-.67,3.13-0.16a8.88,8.88,0,0,1,2.24,2.16c0.71,0.86,1.69,3.3,5.06,3.3a5.2,5.2,0,0,0,2.31-.08A11.15,11.15,0,0,1,21.86,45a4.64,4.64,0,0,1,1.49-4S11,40.84,10.56,28.21c0,0-.08-5.33,3.06-8.55a13.43,13.43,0,0,1,.08-7.43s3.82-.47,7.79,3a19.3,19.3,0,0,1,6.9-1.15,24.15,24.15,0,0,1,7.48,1.2,13.29,13.29,0,0,1,7.58-3.09,12.45,12.45,0,0,1,.21,7.32,11.54,11.54,0,0,1,3,8.05c0,5.23-1.78,12.5-12.86,13.39,0,0,1.88,2.51,1.88,4.71s-0.1,8.47-.1,8.47a1.76,1.76,0,0,0,1.35,1.61A28.51,28.51,0,0,0,57,28.5Z"
transform="translate(0)" />
</svg>

After

Width:  |  Height:  |  Size: 934 B

View file

@ -0,0 +1,6 @@
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 28.9 29" style="enable-background:new 0 0 28.9 29;" xml:space="preserve">
<line id="bottom" fill="none" stroke="currentColor" stroke-width="3" x1="0" y1="27.5" x2="28.9" y2="27.5"/>
<line id="top" fill="none" stroke="currentColor" stroke-width="3" x1="0" y1="1.5" x2="28.9" y2="1.5"/>
<line id="middle" fill="none" stroke="currentColor" stroke-width="3" x1="0" y1="14.5" x2="28.9" y2="14.5"/>
</svg>

After

Width:  |  Height:  |  Size: 541 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 10 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 24 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 30 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.6 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 26 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 18 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -0,0 +1,25 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 57 57">
<defs>
<style>
.li-cls-1 {
fill: none;
}
.li-cls-2 {
clip-path: url(#clip-path);
}
.li-cls-3 {
fill: currentColor;
}
</style>
<clipPath id="clip-path">
<rect class="li-cls-1" width="57" height="57" />
</clipPath>
</defs>
<title>linked in</title>
<g class="li-cls-2">
<path class="li-cls-3" d="M41.48,38.41H36.07V29.7c0-2.19-.78-3.68-2.74-3.68a3,3,0,0,0-2.78,2,3.68,3.68,0,0,0-.18,1.32v9.09H25S25,23.66,25,22.13h5.41v2.3a5.37,5.37,0,0,1,4.88-2.69c3.56,0,6.23,2.32,6.23,7.32v9.33ZM19.26,19.91h0a2.82,2.82,0,1,1,.07-5.63,2.82,2.82,0,1,1,0,5.63M22,38.41H16.55V22.13H22V38.41ZM28.5,0A28.5,28.5,0,1,0,57,28.5,28.5,28.5,0,0,0,28.5,0"
/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 981 B

View file

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 352.7 98.6" enable-background="new 0 0 352.7 98.6" xml:space="preserve">
<g>
<path fill="#3BB0C9" d="M212.7,88.8v0.5l-3.5,8.3l4.7,1l3.7-9.5v-4.7h-9.6v4.4H212.7z M201.4,84.4l-4.9,2.9l1.3,3.4l2.9-1.2v8.8
h4.8V84.4H201.4z M189.4,88.7c0.1,0.2,0.1,0.6,0.1,1c0,0.4,0,1.1,0,2.2c0,1.1,0,1.8-0.1,2.2c-0.1,0.4-0.3,0.6-0.6,0.6
s-0.5-0.2-0.6-0.6c-0.1-0.4-0.1-1.3-0.1-2.7c0-1.4,0-2.3,0.1-2.7c0.1-0.2,0.1-0.4,0.2-0.5c0.1-0.1,0.2-0.1,0.4-0.1s0.3,0,0.4,0.1
C189.3,88.3,189.4,88.4,189.4,88.7 M184.6,96.9c0.8,1.1,2.2,1.7,4.3,1.7c2.1,0,3.5-0.6,4.3-1.7c0.8-1.1,1.2-3,1.2-5.6
c0-2.6-0.4-4.4-1.2-5.5c-0.8-1.1-2.2-1.7-4.3-1.7s-3.5,0.6-4.3,1.7c-0.8,1.1-1.2,3-1.2,5.5C183.3,93.9,183.7,95.8,184.6,96.9
M181.1,94.5h-4.3l1.4-1c1.2-0.8,1.9-1.6,2.4-2.3c0.4-0.7,0.6-1.7,0.6-3c0-1.3-0.5-2.3-1.4-3c-0.9-0.7-2.2-1.1-3.8-1.1
s-3.1,0.3-4.6,0.8l0.2,3.6l0.4-0.1c0.8-0.2,1.8-0.2,2.8-0.2c0.5,0,0.9,0,1.1,0.1c0.2,0.1,0.3,0.3,0.3,0.7c0,0.2,0,0.3-0.1,0.5
c0,0.1-0.2,0.4-0.3,0.7c-0.2,0.3-0.4,0.6-0.7,0.8l-0.9,0.9c-0.4,0.4-0.7,0.7-1.1,1.1l-1.8,1.8v3.6h9.7V94.5z M159.9,93.9l4.1-9.7
h-5.2l-1.4,4.2l-1.3-4.2H151l4,9.7v4.4h4.9V93.9z M142.5,90.8V88h1.1c0.8,0,1.2,0.5,1.2,1.4c0,0.9-0.3,1.4-1,1.4H142.5z
M144.5,98.3h5l-1.4-4.8c1-0.8,1.6-2.3,1.6-4.2c0-2-0.5-3.3-1.4-4s-2.5-1.1-4.7-1.1h-6v14.2h4.9v-3.7h1.2L144.5,98.3z M129.2,88
L130,93h-2.1l0.8-4.9H129.2z M126.9,98.3l0.3-1.6h3.2l0.4,1.6h4.9l-3.2-14.2h-7.4l-3.1,14.2H126.9z M107.9,84.2v9.1
c0,2,0.5,3.4,1.5,4.2c1,0.8,2.6,1.2,4.7,1.2c2.1,0,3.7-0.4,4.7-1.2c1-0.8,1.5-2.2,1.5-4.2v-9h-4.9v9.3c0,0.4-0.1,0.7-0.3,0.9
s-0.5,0.3-1,0.3c-0.5,0-0.8-0.1-1-0.3c-0.2-0.2-0.3-0.5-0.3-0.9v-9.3H107.9z M97.1,98.3v-5.8h0.3l3.2,5.8h4.8V84.2h-4.9v5.4h-0.3
L97,84.2h-4.8v14.2H97.1z M83.8,88l0.8,4.9h-2.1l0.8-4.9H83.8z M81.5,98.3l0.3-1.6h3.2l0.4,1.6h4.9l-3.2-14.2h-7.4l-3.1,14.2H81.5z
M70,84.2v7.4c0,1,0,1.7-0.1,2.1c0,0.3-0.1,0.4-0.1,0.5c0,0.1-0.1,0.2-0.2,0.3c-0.1,0.1-0.2,0.1-0.3,0.1c-0.1,0-0.2,0-0.4,0v4
c0.8,0,1.5,0,2.1-0.1c1.4-0.1,2.3-0.4,2.8-0.9c0.7-0.6,1-1.7,1-3V84.2H70z M56.7,88.7c0.1,0.2,0.1,0.6,0.1,1c0,0.4,0,1.1,0,2.2
c0,1.1,0,1.8-0.1,2.2c-0.1,0.4-0.3,0.6-0.6,0.6c-0.3,0-0.5-0.2-0.6-0.6c-0.1-0.4-0.1-1.3-0.1-2.7c0-1.4,0-2.3,0.1-2.7
c0.1-0.2,0.1-0.4,0.2-0.5c0.1-0.1,0.2-0.1,0.4-0.1s0.3,0,0.4,0.1C56.6,88.3,56.7,88.4,56.7,88.7 M51.8,96.9
c0.8,1.1,2.2,1.7,4.3,1.7s3.5-0.6,4.3-1.7c0.8-1.1,1.2-3,1.2-5.6c0-2.6-0.4-4.4-1.2-5.5c-0.8-1.1-2.2-1.7-4.3-1.7
c-2,0-3.5,0.6-4.3,1.7c-0.8,1.1-1.2,3-1.2,5.5C50.6,93.9,51,95.8,51.8,96.9 M48.3,94.5h-4.3l1.4-1c1.2-0.8,1.9-1.6,2.4-2.3
c0.4-0.7,0.6-1.7,0.6-3c0-1.3-0.5-2.3-1.4-3c-0.9-0.7-2.2-1.1-3.8-1.1c-1.6,0-3.1,0.3-4.6,0.8l0.2,3.6l0.4-0.1
c0.8-0.2,1.8-0.2,2.8-0.2c0.5,0,0.9,0,1.1,0.1c0.2,0.1,0.3,0.3,0.3,0.7c0,0.2,0,0.3-0.1,0.5c0,0.1-0.2,0.4-0.3,0.7
c-0.2,0.3-0.4,0.6-0.7,0.8l-0.9,0.9c-0.4,0.4-0.7,0.7-1.1,1.1l-1.8,1.8v3.6h9.7V94.5z M35.9,89.1H25.3v4.2h10.6V89.1z M18.9,93.8
c0,0.7-0.3,1-1,1c-0.5,0-0.8-0.1-0.9-0.4c-0.2-0.3-0.2-0.7-0.2-1.4c0.4-0.2,0.8-0.3,1.2-0.3C18.6,92.8,18.9,93.1,18.9,93.8
M22.5,88.3l0.3-3.5l-0.8-0.2c-1.6-0.4-3-0.5-4.2-0.5c-0.7,0-1.4,0.1-2.1,0.3c-0.7,0.2-1.3,0.6-1.8,1.1c-1.2,1.1-1.7,3.1-1.7,5.9
c0,2.4,0.5,4.1,1.4,5.3c0.9,1.2,2.3,1.8,4.3,1.8c1.6,0,2.9-0.4,3.9-1.2c0.9-0.8,1.4-2,1.4-3.6c0-1.6-0.4-2.8-1.1-3.6
c-0.8-0.8-1.9-1.2-3.6-1.2c-0.5,0-1,0.1-1.5,0.3l-0.2,0.1c0-0.5,0.2-0.8,0.4-1.1c0.2-0.2,0.6-0.4,1.2-0.4
C19.6,88,21,88.1,22.5,88.3 M5.1,84.4l-4.9,2.9l1.3,3.4l2.9-1.2v8.8h4.8V84.4H5.1z"/>
<path fill="#0B486B" d="M325.3,42.4v20c0,4.4,1.1,7.4,3.3,9.2c2.2,1.7,5.7,2.6,10.4,2.6c4.7,0,8.2-0.9,10.4-2.7
c2.2-1.8,3.3-4.9,3.3-9.3V42.4h-10.8v20.4c0,0.9-0.2,1.5-0.7,1.9c-0.4,0.4-1.2,0.6-2.2,0.6c-1.1,0-1.8-0.2-2.3-0.6
c-0.4-0.4-0.7-1-0.7-1.9V42.4H325.3z M307,50.9l1.7,10.9h-4.6l1.8-10.9H307z M302,73.5l0.7-3.6h7.1l0.9,3.6h10.9l-7-31.1h-16.3
l-6.9,31.1H302z M287.8,64.3h-10.6v9.2h10.6V64.3z M261.4,73.5V65h8.9v-8.8h-8.9v-5h11.7v-8.8h-22.4v31.1H261.4z M226.6,73.5V60.9
h0.7l7.1,12.7h10.6V42.4h-10.8v11.8h-0.7l-7.2-11.8h-10.6v31.1H226.6z M207.4,45.6c-2.4-2.6-6.1-3.8-11.3-3.8
c-5.2,0-8.9,1.3-11.3,3.8c-2.4,2.6-3.5,6.7-3.5,12.3c0,5.7,1.2,9.8,3.6,12.3c2.4,2.6,6.1,3.9,11.3,3.9c5.2,0,8.9-1.3,11.3-3.8
c2.4-2.6,3.5-6.7,3.5-12.3C211,52.3,209.8,48.2,207.4,45.6 M192.9,52.3c0.5-1.2,1.6-1.7,3.2-1.7s2.7,0.6,3.2,1.7
c0.5,1.1,0.7,3,0.7,5.7c0,2.7-0.2,4.6-0.7,5.7c-0.5,1.1-1.6,1.7-3.2,1.7c-1.6,0-2.7-0.6-3.2-1.7c-0.5-1.2-0.8-3.1-0.8-5.7
C192.2,55.3,192.4,53.4,192.9,52.3 M177,64.8l-7.3,0.3c-1.5,0-2.5-0.2-3.2-0.5c-0.7-0.3-1.1-1-1.4-2c-0.3-1-0.4-2.8-0.4-5.3
c0-2.6,0.3-4.3,0.9-5.1c0.6-0.8,2-1.2,4.2-1.2c2.2,0,4.5,0.2,7,0.5l0.3-8.3l-1.6-0.3c-3-0.6-5.7-0.9-7.9-0.9c-5.4,0-9,1.1-10.9,3.4
c-1.9,2.3-2.9,6.5-2.9,12.7c0,4.3,0.4,7.6,1.2,9.9s2.2,3.9,4,4.9c1.9,1,4.5,1.5,7.9,1.5c3.4,0,6.8-0.4,10.1-1.2L177,64.8z
M149.2,64.3h-10.6v9.2h10.6V64.3z M107.4,42.4l6.6,16.2l-6.6,14.9h11l2.8-8.3l2.7,8.3H135l-6.3-16.3l6.7-14.8h-10.6l-3.6,8.6
l-2.8-8.6H107.4z M76.4,42.4v20c0,4.4,1.1,7.4,3.3,9.2c2.2,1.7,5.7,2.6,10.4,2.6s8.2-0.9,10.4-2.7c2.2-1.8,3.3-4.9,3.3-9.3V42.4H93
v20.4c0,0.9-0.2,1.5-0.7,1.9c-0.4,0.4-1.2,0.6-2.2,0.6c-1.1,0-1.8-0.2-2.3-0.6c-0.4-0.4-0.7-1-0.7-1.9V42.4H76.4z M52.6,73.5V60.9
h0.7l7.1,12.7H71V42.4H60.2v11.8h-0.7l-7.2-11.8H41.8v31.1H52.6z M36.3,42.4H25.5v31.1h10.8V42.4z M20.9,64.8H10.8V42.4H0v31.1
h20.9V64.8z"/>
<path fill="#0B486B" d="M167.3,9.4v22.4h10.8V9.4h6V0.6h-23.2v8.8H167.3z M141.2,15.2V9.1h2.4c1.7,0,2.6,1,2.6,3c0,2-0.8,3-2.3,3
H141.2z M145.7,31.7h11l-3.1-10.6c2.3-1.9,3.4-4.9,3.4-9.3c0-4.3-1-7.3-3.1-8.9c-2.1-1.6-5.5-2.4-10.3-2.4h-13.1v31.1h10.8v-8h2.6
L145.7,31.7z M112.1,9.1l1.7,10.9h-4.6l1.8-10.9H112.1z M107,31.7l0.7-3.6h7.1l0.9,3.6h10.9l-7-31.1h-16.3l-6.9,31.1H107z
M82.2,8.3c0.4,0.4,0.6,1,0.6,1.9s-0.2,1.5-0.6,1.9c-0.4,0.4-1,0.6-2,0.6h-2.4v-5h2.4C81.1,7.7,81.8,7.9,82.2,8.3 M82.5,20
c0.4,0.4,0.6,1,0.6,2c0,1-0.2,1.6-0.6,2c-0.4,0.4-1.1,0.5-2.2,0.5h-2.5v-5.1h2.5C81.4,19.4,82.1,19.6,82.5,20 M67.1,31.7h14.3
c8,0,12-2.9,12-8.8c0-2.2-0.3-3.8-0.9-4.7c-0.6-0.9-1.6-1.7-3.1-2.4c1.3-0.9,2.2-1.9,2.6-3c0.4-1.1,0.6-2.6,0.6-4.5
c0-5.1-3.8-7.7-11.4-7.7H67.1V31.7z M58.7,3.8C56.3,1.3,52.5,0,47.4,0c-5.2,0-8.9,1.3-11.3,3.8c-2.4,2.6-3.5,6.7-3.5,12.3
c0,5.7,1.2,9.8,3.6,12.3c2.4,2.6,6.1,3.9,11.3,3.9c5.2,0,8.9-1.3,11.3-3.8c2.4-2.6,3.5-6.7,3.5-12.3C62.2,10.5,61,6.4,58.7,3.8
M44.2,10.5c0.5-1.2,1.6-1.7,3.2-1.7s2.7,0.6,3.2,1.7c0.5,1.1,0.7,3,0.7,5.7s-0.2,4.6-0.7,5.7c-0.5,1.1-1.6,1.7-3.2,1.7
c-1.6,0-2.7-0.6-3.2-1.7c-0.5-1.2-0.8-3.1-0.8-5.7C43.4,13.5,43.7,11.6,44.2,10.5 M27.7,31.7V0.6H16.9v11.5h-6.1V0.6H0v31.1h10.8
V20.9h6.1v10.9H27.7z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

View file

@ -0,0 +1,25 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 57 57">
<defs>
<style>
.twtr-cls-1 {
fill: none;
}
.twtr-cls-2 {
clip-path: url(#clip-path);
}
.twtr-cls-3 {
fill: currentColor;
}
</style>
<clipPath id="clip-path" transform="translate(0 0)">
<rect class="twtr-cls-1" width="57" height="57" />
</clipPath>
</defs>
<title>twitter</title>
<g class="twtr-cls-2">
<path class="twtr-cls-3" d="M39.83,22.69c0,0.25,0,.5,0,0.75,0,7.73-5.88,16.64-16.64,16.64a16.55,16.55,0,0,1-9-2.63,12.38,12.38,0,0,0,1.4.08A11.72,11.72,0,0,0,22.91,35,5.86,5.86,0,0,1,17.45,31a6,6,0,0,0,1.1.1,5.89,5.89,0,0,0,1.54-.2,5.86,5.86,0,0,1-4.69-5.73V25.07A5.82,5.82,0,0,0,18,25.8,5.85,5.85,0,0,1,16.23,18,16.59,16.59,0,0,0,28.29,24.1a5.85,5.85,0,0,1,10-5.33A11.66,11.66,0,0,0,42,17.35a5.87,5.87,0,0,1-2.57,3.24,11.65,11.65,0,0,0,3.36-.92,11.84,11.84,0,0,1-2.92,3M28.5,0A28.5,28.5,0,1,0,57,28.5,28.5,28.5,0,0,0,28.5,0"
transform="translate(0 0)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,25 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 57 57">
<defs>
<style>
.web-cls-1 {
fill: none;
}
.web-cls-2 {
clip-path: url(#clip-path);
}
.web-cls-3 {
fill: currentColor;
}
</style>
<clipPath id="clip-path">
<rect class="web-cls-1" width="57" height="57" />
</clipPath>
</defs>
<title>website</title>
<g class="web-cls-2">
<path class="web-cls-3" d="M33.78,43.33A9.74,9.74,0,0,1,27,40.49l-2.84-2.84a1.1,1.1,0,0,1,0-1.59l1.59-1.59a1.09,1.09,0,0,1,1.59,0l2.84,2.84a5,5,0,1,0,7-7l-2.84-2.84a1.1,1.1,0,0,1,0-1.59l1.59-1.59a1.1,1.1,0,0,1,1.59,0l2.84,2.84a9.56,9.56,0,0,1,2.84,6.82,9.41,9.41,0,0,1-9.44,9.44M23.21,24.81l1.59-1.59a1.09,1.09,0,0,1,1.59,0l7.5,7.5a1.09,1.09,0,0,1,0,1.59L32.3,33.9a1.09,1.09,0,0,1-1.59,0l-7.5-7.5a1.09,1.09,0,0,1,0-1.59m-0.57,6.48-1.59,1.59a1.1,1.1,0,0,1-1.59,0L16.62,30a9.56,9.56,0,0,1,6.71-16.37,9.72,9.72,0,0,1,6.82,2.84L33,19.35a1.09,1.09,0,0,1,0,1.59L31.4,22.53a1.1,1.1,0,0,1-1.6,0L27,19.69a5,5,0,0,0-3.52-1.48,5,5,0,0,0-5,5,5,5,0,0,0,1.48,3.52l2.84,2.84a1.81,1.81,0,0,1-.11,1.7M28.5,0A28.5,28.5,0,1,0,57,28.5,28.5,28.5,0,0,0,28.5,0"
/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

183
static/src/lca2017/js/app.js Executable file
View file

@ -0,0 +1,183 @@
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
'use strict';
var u = require('./includes/utils');
var debug = function debug(msg) {
return console.log(msg);
};
var setupTabs = require('./components/tabbed-panel');
u.documentReady(function () {
if (document.querySelector('[data-tab-control]')) {
setupTabs();
}
var menuOpener = document.querySelector('[data-menu-opener]');
u.addEventListener(menuOpener, 'click', function (e) {
e.preventDefault();
u.toggleClass(this, 'is-active');
u.toggleClass(document.querySelector('[data-menu]'), 'is-active');
});
});
},{"./components/tabbed-panel":2,"./includes/utils":3}],2:[function(require,module,exports){
'use strict';
var u = require('../includes/utils');
function setupTabs() {
var elements = document.querySelectorAll('[data-tab-control]');
for (var x = 0; x < elements.length; x++) {
u.addEventListener(elements[x], 'click', tabClickhandler);
}
//Activate the first
var event = document.createEvent('Events');
event.initEvent('click', true, false);
elements[0].dispatchEvent(event);
}
function tabClickhandler(e) {
e.preventDefault();
var active = document.querySelectorAll('[data-tab-control].is-active, [data-tab-content].is-active');
if (active) {
for (var y = 0; y < active.length; y++) {
u.removeClass(active[y], 'is-active');
}
}
u.addClass(this, 'is-active');
var targetData = this.dataset.tabControl;
var targetContent = document.querySelectorAll('[data-tab-content="' + targetData + '"]');
for (var z = 0; z < targetContent.length; z++) {
u.addClass(targetContent[z], 'is-active');
}
}
module.exports = setupTabs;
},{"../includes/utils":3}],3:[function(require,module,exports){
"use strict";
module.exports = {
getRandomInRange: getRandomInRange,
getAnchorTarget: getAnchorTarget,
documentReady: documentReady,
addClass: addClass,
hasClass: hasClass,
removeClass: removeClass,
toggleClass: toggleClass,
addEventListener: addEventListener,
getUrl: getUrl
};
function getRandomInRange(from, to) {
return (Math.random() * (to - from) + from).toFixed(0) * 1;
}
function getAnchorTarget(link) {
var id = link.hash.replace("#", "");
return document.getElementById(id) || null;
}
function addClass(element, className) {
if (element instanceof SVGElement) {
element.setAttribute('class', element.getAttribute('class') + ' ' + className);
} else {
if (element.classList) {
element.classList.add(className);
} else {
element.className += ' ' + className;
}
}
}
function removeClass(element, className) {
if (element instanceof SVGElement) {
var updatedClassListString = element.getAttribute('class').replace(new RegExp('(\\s|^)' + className + '(\\s|$)', 'g'), '$2');
element.setAttribute('class', updatedClassListString);
} else {
if (element.classList) {
element.classList.remove(className);
} else {
var classes = element.className.split(' ');
var existingIndex = classes.indexOf(className);
if (existingIndex >= 0) {
classes.splice(existingIndex, 1);
}
element.className = classes.join(' ');
}
}
}
function hasClass(element, className) {
if (element instanceof SVGElement) {
return new RegExp('(\\s|^)' + className + '(\\s|$)').test(element.getAttribute('class'));
} else {
if (element.classList) {
return element.classList.contains(className);
} else {
return element.className.indexOf(className) !== -1;
}
}
}
function toggleClass(element, className) {
if (element.classList) {
element.classList.toggle(className);
} else {
var classes = element.className.split(' ');
var existingIndex = classes.indexOf(className);
if (existingIndex >= 0) {
classes.splice(existingIndex, 1);
} else {
classes.push(className);
}
element.className = classes.join(' ');
}
}
function addEventListener(el, eventName, handler) {
if (el.addEventListener) {
el.addEventListener(eventName, handler);
} else {
el.attachEvent('on' + eventName, function () {
handler.call(el);
});
}
}
function getUrl(path) {
if (!window.location.origin) {
window.location.origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port : '');
}
if (path.indexOf('./') === 0) {
path = path.slice(1); // Remove the .
var existingPath = window.location.pathname || '';
return window.location.origin + existingPath + path;
} else if (path) {
return window.location.origin + path;
} else {
return window.location.origin + window.location.pathname;
}
}
function documentReady(fn) {
if (document.readyState != 'loading') {
fn();
} else if (document.addEventListener) {
document.addEventListener('DOMContentLoaded', fn);
} else {
document.attachEvent('onreadystatechange', function () {
if (document.readyState != 'loading') fn();
});
}
}
},{}]},{},[1]);