diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | design/templates/admin/base.html | 119 | ||||
-rw-r--r-- | design/templates/admin/buttons.html | 59 | ||||
-rw-r--r-- | design/templates/admin/index.html | 79 | ||||
-rw-r--r-- | design/templates/admin/message.html | 21 | ||||
-rw-r--r-- | design/templates/archives/map_data.html | 111 | ||||
-rw-r--r-- | design/templates/archives/writing_date.html | 26 | ||||
-rw-r--r-- | design/templates/details/entry.txt | 8 | ||||
-rw-r--r-- | design/templates/details/gifs.html | 83 | ||||
-rw-r--r-- | design/templates/details/page.html | 18 | ||||
-rw-r--r-- | design/templates/details/page.txt | 8 | ||||
-rw-r--r-- | design/templates/feed.xml | 26 |
12 files changed, 559 insertions, 0 deletions
@@ -14,3 +14,4 @@ Thumbs.db *.pyc venv/ site/ +static/ diff --git a/design/templates/admin/base.html b/design/templates/admin/base.html new file mode 100644 index 0000000..3ed4858 --- /dev/null +++ b/design/templates/admin/base.html @@ -0,0 +1,119 @@ +{% load admin_static %}{% load url from future %}{% load i18n grp_tags %} +<!DOCTYPE html> +<html lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% comment %}{% if LANGUAGE_BIDI %}dir="rtl"{% endif %}{% endcomment %}> +<head> + <title>{% block title %}{% endblock %}</title> + <meta charset="utf-8" /> + {% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE" />{% endblock %} + <!-- STYLESHEETS --> + {% block stylesheets %} + <link href="{% static "grappelli/jquery/ui/css/custom-theme/jquery-ui-1.8.18.custom.css" %}" rel="stylesheet" type="text/css" media="screen" /> + <link href="{% static "grappelli/stylesheets/screen.css" %}" rel="stylesheet" type="text/css" media="screen" /> + <link href="{% static "grappelli/stylesheets/mueller/grid/output.css" %}" rel="stylesheet" type="text/css" media="screen" /> + {% comment %}{% if LANGUAGE_BIDI %}<link href="{% block stylesheet_rtl %}{% static "grappelli/css/rtl.css" %}{% endblock %}" rel="stylesheet" type="text/css" media="screen" />{% endif %}{% endcomment %} + {% endblock %} + <!-- EXTRASTYLES --> + {% block extrastyle %}{% endblock %} + <!-- JAVASCRIPTS --> + {% block javascripts %} + <script type="text/javascript">window.__admin_media_prefix__ = "{% filter escapejs %}{% static "grappelli/" %}{% endfilter %}";</script> + <script type="text/javascript" charset="utf-8"> + // GLOBALS + var grappelli = {}, + ADMIN_URL = "{% url 'admin:index' %}", + MODEL_URL_ARRAY = {% get_content_types %}, + DATE_FORMAT = "{% get_date_format %}", + TIME_FORMAT = "{% get_time_format %}", + DATETIME_FORMAT = "{% get_datetime_format %}"; + </script> + <!-- jQuery, jQuery-UI --> + <script src="{% static "grappelli/jquery/jquery-1.7.2.min.js" %}" type="text/javascript"></script> + <script src="{% static "grappelli/jquery/ui/js/jquery-ui-1.8.18.custom.min.js" %}" type="text/javascript"></script> + {% if debug %} + <!-- Grappelli Main JS --> + <script src="{% static "grappelli/js/grappelli.js" %}" type="text/javascript"></script> + <!-- Grappelli jQuery Plugins, Widgets --> + <script src="{% static "grappelli/js/jquery.grp_collapsible.js" %}" type="text/javascript"></script> + <script src="{% static "grappelli/js/jquery.grp_collapsible_group.js" %}" type="text/javascript"></script> + <script src="{% static "grappelli/js/jquery.grp_timepicker.js" %}" type="text/javascript"></script> + <script src="{% static "grappelli/js/jquery.grp_related_fk.js" %}" type="text/javascript"></script> + <script src="{% static "grappelli/js/jquery.grp_related_m2m.js" %}" type="text/javascript"></script> + <script src="{% static "grappelli/js/jquery.grp_related_generic.js" %}" type="text/javascript"></script> + <script src="{% static "grappelli/js/jquery.grp_autocomplete_fk.js" %}" type="text/javascript"></script> + <script src="{% static "grappelli/js/jquery.grp_autocomplete_m2m.js" %}" type="text/javascript"></script> + <script src="{% static "grappelli/js/jquery.grp_autocomplete_generic.js" %}" type="text/javascript"></script> + <script src="{% static "grappelli/js/jquery.grp_inline.js" %}" type="text/javascript"></script> + {% else %} + <!-- Grappelli Minified --> + <script src="{% static "grappelli/js/grappelli.min.js" %}" type="text/javascript"></script> + {% endif %} + {% endblock %} + <!-- EXTRAHEAD --> + {% block extrahead %}{% endblock %} +</head> +<body {%block onload%}{%endblock%} class="{% if is_popup %}grp-popup {% endif %}{% block bodyclass %}{% endblock %}"> + <div id="grp-container"> + + <!-- HEADER --> + <header id="grp-header" class="{% block header-class %}{% endblock %}"> + {% if not is_popup %} + + <!-- NAVIGATION --> + {% include "admin/includes_grappelli/header.html" %} + + <!-- CONTEXT NAVIGATION --> + <div id="grp-context-navigation"> + <nav id="grp-breadcrumbs" class="{% block breadcrumbs-class %}{% endblock %}"> + <header style="display:none"><h1>Breadcrumbs</h1></header> + {% block breadcrumbs %} + <ul> + <li><a href="/">{% trans 'Home' %}</a></li> + {% if title %} + <li> › {{ title }}</li> + {% endif %} + </ul> + {% endblock %} + </nav> + <nav id="grp-page-tools"> + <header style="display:none"><h1>Page Tools</h1></header> + {% block page-tools %}{% endblock %} + </nav> + </div> + {% endif %} + </header> + + <!-- CONTENT --> + <article id="grp-content" class="{% block content-class %}{% endblock %}"> + + <!-- MESSAGES --> + {% if messages %} + <ul class="grp-messagelist"> + {% for message in messages %} + <li{% if message.tags %} class="grp-{{ message.tags }}"{% endif %}>{{ message }}</li> + {% endfor %} + </ul> + {% endif %} + + <!-- CONTENT TITLE --> + <header id="grp-content-title"> + {% block pretitle %}{% endblock %} + {% block content_title %}{% if title %}<h1>{{ title }}</h1>{% endif %}{% endblock %} + {% block object-tools %}{% endblock %} + </header> + + <!-- CONTENT-CONTAINER --> + <div id="grp-content-container"> + {% block content %} + {{ content }} + {% block filters %}{% endblock %} + {% endblock %} + </div> + + </article> + + <!-- FOOTER --> + {% block footer %}{% endblock %} + + </div> +</body> +</html> diff --git a/design/templates/admin/buttons.html b/design/templates/admin/buttons.html new file mode 100644 index 0000000..e1a7a98 --- /dev/null +++ b/design/templates/admin/buttons.html @@ -0,0 +1,59 @@ +<style> + .cust { + margin-top: 8px; + margin-bottom: 16px; + } + .item { + display: block; + float: none !important; + margin-left: 8px; + margin-top: 6px; + color: #444; + overflow: visible !important; + } + .item a { + min-width: 150px; + font-size: 110%; + border: 1px solid #BDBDBD !important; + position: relative; + display: inline-block; + margin: 0px; + padding: 5px; + height: 28px; + font-weight: bold; + border-radius: 5px 5px 5px 5px !important; + -moz-box-sizing: border-box; + cursor: pointer; + overflow: hidden; + vertical-align: top; + color: rgb(255, 255, 255); + border: 1px solid rgb(43, 138, 171); + background-image: linear-gradient(rgb(79, 178, 211), rgb(48, 155, 191)); + } +</style> + + <div class="g-d-6"> + <div class="grp-module" id="grp-recent-actions-module"> + <h2>Publish Site</h2> + {% if message %} + <ul class="messagelist"> + <li style="font-weight: bold; color: red;">{{message}}...</li> + </ul> + {%endif%} + <div class="grp-module"> + <ul class="grp-listing-small cust"> + <li class="item"><a href="/admin/build/build?id=newpost">Build New Post</a></li> + <li class="item"><a href="/admin/build/build?id=writing">Build Writing Archives</a></li> + <li class="item"><a href="/admin/build/build?id=photos">Build Photo Galleries</a></li> + <li class="item"><a href="/admin/build/build?id=projects">Build Project Pages</a></li> + <li class="item"><a href="/admin/build/build?id=map">Build Map</a></li> + <li class="item"><a href="/admin/build/build?id=pages">Build All Pages</a></li> + <li class="item"><a href="/admin/build/build?id=home">Build Homepage</a></li> + <li class="item"><a href="/admin/build/build?id=feed">Build RSS Feed</a></li> + <li class="item"><a href="/admin/build/build?id=sitemap">Build Sitemap</a></li> + <li class="item"><a href="/admin/build/build?id=all">Build Entire Site</a></li> + </ul> + </div> + </div> + </div> + diff --git a/design/templates/admin/index.html b/design/templates/admin/index.html new file mode 100644 index 0000000..cbb2904 --- /dev/null +++ b/design/templates/admin/index.html @@ -0,0 +1,79 @@ +{% extends "admin/base_site.html" %} + +<!-- LOADING --> +{% load i18n grp_tags log %} + +<!-- JAVASCRIPTS --> +{% block javascripts %} + {{ block.super }} +{% endblock %} + +<!-- COLTYPE/BODYCLASS-- > +{% block bodyclass %}dashboard{% endblock %} +{% block content-class %}content-grid{% endblock %} + + +<!-- BREADCRUMBS --> +{% block breadcrumbs %} + <ul class="grp-horizontal-list"> + <li>{% trans "Home" %}</li> + </ul> +{% endblock %} +{% block content_title %} + {% if title %} + <header><h1>{{ title }}</h1></header> + {% endif %} +{% endblock %} + +<!-- CONTENT --> +{% block content %} + <div class="g-d-c"> + <div class="g-d-12 g-d-f"> + {% for app in app_list %} + <div class="grp-module" id="app_{{ app.name|lower }}"> + <h2><a href="{{ app.app_url }}" class="grp-section">{% trans app.name %}</a></h2> + {% for model in app.models %} + <div class="grp-row"> + {% if model.perms.change %}<a href="{{ model.admin_url }}"><strong>{{ model.name }}</strong></a>{% else %}<span><strong>{{ model.name }}</strong></span>{% endif %} + {% if model.perms.add or model.perms.change %} + <ul class="grp-actions"> + {% if model.perms.add %}<li class="grp-add-link"><a href="{{ model.admin_url }}add/">{% trans 'Add' %}</a></li>{% endif %} + {% if model.perms.change %}<li class="grp-change-link"><a href="{{ model.admin_url }}">{% trans 'Change' %}</a></li>{% endif %} + </ul> + {% endif %} + </div> + {% endfor %} + </div> + {% empty %} + <p>{% trans "You donĀ“t have permission to edit anything." %}</p> + {% endfor %} + </div> +{% include 'admin/buttons.html' %} + <div class="g-d-6 g-d-l"> + <div class="grp-module" id="grp-recent-actions-module"> + <h2>{% trans 'Recent Actions' %}</h2> + <div class="grp-module"> + <h3>{% trans 'My Actions' %}</h3> + {% get_admin_log 10 as admin_log for_user user %} + {% if not admin_log %} + <p>{% trans 'None available' %}</p> + {% else %} + <ul class="grp-listing-small"> + {% for entry in admin_log %} + <li class="grp-row{% if entry.is_addition %} grp-add-link{% endif %}{% if entry.is_change %} grp-change-link{% endif %}{% if entry.is_deletion %} grp-delete-link{% endif %}"> + {% if entry.is_deletion %} + <span>{{ entry.object_repr }}</span> + {% else %} + <a href="{{ entry.get_admin_url }}">{{ entry.object_repr }}</a> + {% endif %} + <span class="grp-font-color-quiet">{% filter capfirst %}{% trans entry.content_type.name %}{% endfilter %}</span> + </li> + {% endfor %} + </ul> + {% endif %} + </div> + </div> + </div> + </div> +{% endblock %} + diff --git a/design/templates/admin/message.html b/design/templates/admin/message.html new file mode 100644 index 0000000..528fb01 --- /dev/null +++ b/design/templates/admin/message.html @@ -0,0 +1,21 @@ +{% extends 'admin/base_site.html' %} + +{% block content %} +{{message}}... <span style="color:red;" id="done"></span> +{% endblock %} + +{% block onload %} +onLoad="setTimeout('delayer()', 1000)" +{% endblock %} + +{% block extrahead %} +<script type="text/javascript"> +<!-- +function delayer(){ + document.getElementById('done').innerHTML = 'done' + window.location = "/admin/" +} +//--> +</script> +{% endblock %} + diff --git a/design/templates/archives/map_data.html b/design/templates/archives/map_data.html new file mode 100644 index 0000000..a58de05 --- /dev/null +++ b/design/templates/archives/map_data.html @@ -0,0 +1,111 @@ +{% load typogrify %} +{% load truncateletters %} +{% load slugify_under %} + + // center on a country + function focusCountry(latitude, longitude, zoom) { + map.setZoom(zoom); + map.panTo(new google.maps.LatLng(latitude, longitude)); + }; + + {% for route in route_list %} + var {{route.template_var_name}} = [ + {% for point in route.geometry.coords%} + new google.maps.LatLng({{point.1}}, {{point.0}}){% if forloop.last%}{%else%},{%endif%} + {% endfor %} + ]; + {% endfor %} + function showRoute(route, zoom, latitude, longitude) { + var routePath = new google.maps.Polyline({ + path: eval(route), + strokeColor: "#FF0000", + strokeOpacity: 1.0, + strokeWeight: 2 + }); + map.setZoom(zoom); + map.panTo(new google.maps.LatLng(latitude, longitude)); + routePath.setMap(map); + return false; + }; +var map; +function initialize() { + + //custom marker + var image = new google.maps.MarkerImage('http://luxagraf.net/media/img/marker-entry.png', + new google.maps.Size(15, 26), + new google.maps.Point(0, 0), + new google.maps.Point(7, 26) + ); + //custom marker shadow + var shadow = new google.maps.MarkerImage('http://luxagraf.net/media/img/shadow.png', + new google.maps.Size(37, 34), + new google.maps.Point(0,0), + new google.maps.Point(8, 34) + ); + + + //check for a permalink + var location = window.location.hash; + //find a centerpoint + var pts = new Array(); + {%for c in country_list%}pts[{{forloop.counter0}}] = ["#{{c.slug}}", {{c.lat}},{{c.lon}},{{c.zoom_level}}];{% endfor %} + {%for c in region_list%}pts[pts.length] = ["#{{c.slug}}", {{c.lat}},{{c.lon}},{{c.zoom_level}}];{% endfor %} + if (location.length>1) { + for (i=0;i<pts.length;i++) { + if (location == pts[i][0]) { + centerCoord = new google.maps.LatLng(pts[i][1],pts[i][2]); + zoom = pts[i][3]; + break; + } else { + centerCoord = new google.maps.LatLng(19.311143,2.460938); + zoom = 2; + } + } + } else { + centerCoord = new google.maps.LatLng(19.311143,2.460938); + zoom = 2; + } + //set up map options + var mapOptions = { + zoom: zoom, + center: centerCoord, + mapTypeId: google.maps.MapTypeId.TERRAIN, + disableDefaultUI: true, + navigationControl: true, + navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL} + }; + //create map + map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); + + + //loop through and set up markers/info windows + + {% for entry in object_list %} + var marker_{{entry.title|truncatewords:2|slugify_under}} = new google.maps.Marker({ + position: new google.maps.LatLng({{entry.latitude}}, {{entry.longitude}}), + map: map, + shadow: shadow, + icon: image + }); + + var c_{{entry.title|truncatewords:2|slugify_under}} = '<div class="infowin"><h4>{{entry.title}}<\/h4><span class="date blok">{{entry.pub_date|date:"F j, Y"}} ({% if entry.location.state.country.name == "United States" %}{{entry.location.name|smartypants|safe}}, {{entry.location.state.name}}){%else%}{{entry.location.name|smartypants|safe}}, {{entry.location.state.country.name}}){%endif%}<\/span><p><img src="{{entry.get_thumbnail_url}}" height="100" alt="{{ entry.title }}" style="float: left; border: #000 10px solid; margin-right: 8px; margin-bottom: 4px; height: 100px;" \/>{{entry.dek|escapejs}} <a href="{{entry.get_absolute_url}}">Read it »<\/a><\/p><\/div>'; + + google.maps.event.addListener(marker_{{entry.title|truncatewords:2|slugify_under}}, 'click', function() { + openWin(c_{{entry.title|truncatewords:2|slugify_under}},marker_{{entry.title|truncatewords:2|slugify_under}}); + }); + + {% endfor %} + // create an empty info window instance, set max width + var infowindow = new google.maps.InfoWindow({ + content: ' ', + maxWidth: 400 + }); + //function to handle click event and display single info window + function openWin(content, marker) { + infowindow.close(); + infowindow.setContent(content); + infowindow.open(map,marker); + }; + + +} diff --git a/design/templates/archives/writing_date.html b/design/templates/archives/writing_date.html new file mode 100644 index 0000000..67144b3 --- /dev/null +++ b/design/templates/archives/writing_date.html @@ -0,0 +1,26 @@ +{% extends 'base.html' %} +{% load typogrify %} +{% load html5_datetime %} +{% block pagetitle %}{{block.super}}: Archive{% endblock %} +{% block bodyid %}id="archive"{%endblock%} +{% block primary %} +<p>How did you get here? You URL chopping maniac you. Right on.</p> + +<h1>{% if type == 'year' %}{{date}}, on luxagraf{%else%} Archive: {{date}} {% endif %}</h1>{% if type == 'year' %} + <ul class="archive">{% regroup object_list by pub_date.month as entries_by_month %}{% for entries in entries_by_month %} + <li><span>{{ entries.list.0.pub_date|date:"F Y" }}</span> + <ul>{% for post in entries.list %} + <li> + <a href="{{post.get_absolute_url}}" title="{{post.title}}">{{post.title|smartypants|widont|safe }}</a> + <time datetime="{{post.pub_date|html5_datetime}}">{{post.pub_date|date:"M d, Y"}}</time> + </li> {% endfor %} + </ul> + </li>{% endfor %} + </ul>{% else %} + <ul class="archive">{% for post in object_list %} + <li><a href="{{post.get_absolute_url}}" title="{{post.title}}">{{post.title|smartypants|widont|safe }}</a> + <time datetime="{{post.pub_date|html5_datetime}}">{{post.pub_date|date:"M d, Y"}}</time> + </li> {% endfor %} + </ul> + {% endif %} +{% endblock%} diff --git a/design/templates/details/entry.txt b/design/templates/details/entry.txt new file mode 100644 index 0000000..547ce79 --- /dev/null +++ b/design/templates/details/entry.txt @@ -0,0 +1,8 @@ +{{object.title|safe}} +{% for letter in object.title %}={%endfor%} + + by Scott Gilbertson + <{{SITE_URL}}{{object.get_absolute_url}}> + {{object.pub_date|date:"l, d F Y"}} + +{{object.body_markdown|safe}} diff --git a/design/templates/details/gifs.html b/design/templates/details/gifs.html new file mode 100644 index 0000000..7dd8208 --- /dev/null +++ b/design/templates/details/gifs.html @@ -0,0 +1,83 @@ +<!DOCTYPE html> +<html dir="ltr" lang="en-US"> +<head> + <meta charset="utf-8" /> + <title>{{object.title|safe}}</title> + <style> + body { + background: #222; + } + + .overlay { + background-color: #000; + opacity: .9; + position: absolute; top: 0; left: 0; + width: 100%; height: 100%; + z-index: 10; + } + .btn { + position: absolute; + z-index: 11; + left: 35%; + top: 40%; + } + @media only screen and (max-device-width: 1024px) { + img#giffy { + width: 100%; + } + } + </style> + <script src="http://luxagraf.net/media/js/jquery.js" type="text/javascript"></script> + <script> + var isiPad = false; + var playing = true; + if (navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i)) { + isiPad = true; + } + $(function() { + function togglebtn() { + if (playing) { + document.getElementById('snd').pause(); + playing = false + } else { + document.getElementById('snd').play(); + playing = true + } + } + document.body.onclick=togglebtn + if (isiPad) { + var overlay = document.createElement("div"); + overlay.setAttribute("id","overlay"); + overlay.setAttribute("class", "overlay"); + document.body.appendChild(overlay); + + // create image and append to page + var img = document.createElement("img"); + img.setAttribute("id","img"); + img.src = "btn.png"; + img.setAttribute("class","btn"); + + // click to restore page + img.onclick=restore; + document.body.appendChild(img); + + function restore() { + document.body.removeChild(document.getElementById("overlay")); + document.body.removeChild(document.getElementById("img")); + playing = false; + document.getElementById('snd').play(); + } + + } + }); + + </script> +</head> +<body id="home"> +<audio id="snd" preload="auto" loop autoplay autobuffer> + <source src="{{object.music_ogg.url}}" type="video/ogg"/> + <source src="{{object.music_mp3.url}}" /> +</audio> +<img id="giffy" src="{{object.gif.url}}" alt="{{object.title}}" /> +</body> +</html> diff --git a/design/templates/details/page.html b/design/templates/details/page.html new file mode 100644 index 0000000..8a79e2c --- /dev/null +++ b/design/templates/details/page.html @@ -0,0 +1,18 @@ +{% extends 'base.html' %} +{% load typogrify %} +{% block pagetitle %}Luxagraf | {{object.title}}{% endblock %} +{% block metadescription %}{{object.metadescription}}{% endblock %} +{%block htmlclass%}class="single"{%endblock%} +{%block bodyid%}id="{{object.title|lower}}"{%endblock%} + +{% block primary %}<ul class="bl" id="breadcrumbs" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"> + <li><a href="/" title="luxagraf homepage" itemprop="url"><span itemprop="title">Home</span></a> → </li> + <li>{{object.title}}</li> + </ul> + <article role="main"> + <h1 class="hide">About Luxagraf</h1> + <div class="post-body-single"> + {{object.body_html|safe}} + </div> + </article> +{% endblock %} diff --git a/design/templates/details/page.txt b/design/templates/details/page.txt new file mode 100644 index 0000000..547ce79 --- /dev/null +++ b/design/templates/details/page.txt @@ -0,0 +1,8 @@ +{{object.title|safe}} +{% for letter in object.title %}={%endfor%} + + by Scott Gilbertson + <{{SITE_URL}}{{object.get_absolute_url}}> + {{object.pub_date|date:"l, d F Y"}} + +{{object.body_markdown|safe}} diff --git a/design/templates/feed.xml b/design/templates/feed.xml new file mode 100644 index 0000000..d70604c --- /dev/null +++ b/design/templates/feed.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!-- RSS generated by luxpub v2.0 on {% now "D, d M Y H:i:00" %} GMT --> +<rss version="2.0"> + <channel> + <title>Luxagraf</title> + <link>http://luxagraf.net/</link> + <description>Latest posts on luxagraf.net</description> + <language>en-us</language> + <copyright>Copyright 2011-{% now "Y" %} Luxagraf</copyright> + <pubDate>{% now "D, d M Y H:i:00" %} GMT</pubDate> + <lastBuildDate>{% now "D, d M Y H:i:00" %} GMT</lastBuildDate> + <docs>http://cyber.law.harvard.edu/rss/rss.html</docs> + <generator>IPpub v2.0</generator> + <managingEditor>contact@luxagraf.net</managingEditor> + <webMaster>contact@luxagraf.net</webMaster>{% for object in object_list %} + <item> + <title>{{object.title|escape}}</title> + <link>{{SITE_URL}}{{object.get_absolute_url}}</link> + <guid>{{SITE_URL}}{{object.get_absolute_url}}</guid> + <description> + {{object.body_html|escape}} + </description> + <pubDate>{{object.pub_date|date:'D, d M Y H:i:00'}} EST</pubDate> + </item>{% endfor %} + </channel> +</rss> |