summaryrefslogtreecommitdiff
path: root/templates/admin
diff options
context:
space:
mode:
authorlxf <sng@luxagraf.net>2021-11-06 09:42:47 -0400
committerlxf <sng@luxagraf.net>2021-11-06 09:42:47 -0400
commitd9f51299809bfb6b3ac589b7c42016d0ef240299 (patch)
treeaa5f945e82fdbf1b66aca82fe5122f6ff5a12eb9 /templates/admin
parentdde9914dbbc6cda18ba59024065727c8dc6bcdf4 (diff)
moved templates to top level directory
Diffstat (limited to 'templates/admin')
-rw-r--r--templates/admin/base.html102
-rw-r--r--templates/admin/birds/birdsighting/change_form.html135
-rw-r--r--templates/admin/buttons.html63
-rw-r--r--templates/admin/ccg_notes/change_form.html152
-rw-r--r--templates/admin/income/monthly.html57
-rw-r--r--templates/admin/income_month.html159
-rw-r--r--templates/admin/index.html174
-rw-r--r--templates/admin/insert_images.html127
-rw-r--r--templates/admin/insert_products.html82
-rwxr-xr-xtemplates/admin/links/link/change_form.html138
-rw-r--r--templates/admin/message.html20
-rw-r--r--templates/admin/pages/change_form.html141
-rw-r--r--templates/admin/photos/luxgallery/change_form.html135
-rw-r--r--templates/admin/save_link.html123
-rw-r--r--templates/admin/upload_zip.html57
15 files changed, 1665 insertions, 0 deletions
diff --git a/templates/admin/base.html b/templates/admin/base.html
new file mode 100644
index 0000000..fd468f1
--- /dev/null
+++ b/templates/admin/base.html
@@ -0,0 +1,102 @@
+{% load i18n static %}<!DOCTYPE html>
+{% get_current_language as LANGUAGE_CODE %}{% get_current_language_bidi as LANGUAGE_BIDI %}
+<html lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
+<head>
+<title>{% block title %}{% endblock %}</title>
+<link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
+{% block extrastyle %}{% endblock %}
+{% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% static "admin/css/rtl.css" %}{% endblock %}" />{% endif %}
+{% block extrahead %}{% endblock %}
+{% block responsive %}
+ <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0">
+ <link rel="stylesheet" type="text/css" href="{% static "admin/css/responsive.css" %}" />
+<style>
+@media (max-width: 1024px) {
+ textarea {
+ max-height: unset;
+ }
+}
+</style>
+ {% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% static "admin/css/responsive_rtl.css" %}" />{% endif %}
+{% endblock %}
+{% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE" />{% endblock %}
+</head>
+{% load i18n %}
+
+<body class="{% if is_popup %}popup {% endif %}{% block bodyclass %}{% endblock %}"
+ data-admin-utc-offset="{% now "Z" %}">
+
+<!-- Container -->
+<div id="container">
+
+ {% if not is_popup %}
+ <!-- Header -->
+ <div id="header">
+ <div id="branding">
+ {% block branding %}{% endblock %}
+ </div>
+ {% block usertools %}
+ {% if has_permission %}
+ <div id="user-tools">
+ {% block welcome-msg %}
+ {% trans 'Welcome,' %}
+ <strong>{% firstof user.get_short_name user.get_username %}</strong>.
+ {% endblock %}
+ {% block userlinks %}
+ {% if site_url %}
+ <a href="{{ site_url }}">{% trans 'View site' %}</a> /
+ {% endif %}
+ {% if user.is_active and user.is_staff %}
+ {% url 'django-admindocs-docroot' as docsroot %}
+ {% if docsroot %}
+ <a href="{{ docsroot }}">{% trans 'Documentation' %}</a> /
+ {% endif %}
+ {% endif %}
+ {% if user.has_usable_password %}
+ <a href="{% url 'admin:password_change' %}">{% trans 'Change password' %}</a> /
+ {% endif %}
+ <a href="{% url 'admin:logout' %}">{% trans 'Log out' %}</a>
+ {% endblock %}
+ </div>
+ {% endif %}
+ {% endblock %}
+ {% block nav-global %}{% endblock %}
+ </div>
+ <!-- END Header -->
+ {% block breadcrumbs %}
+ <div class="breadcrumbs">
+ <a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
+ {% if title %} &rsaquo; {{ title }}{% endif %}
+ </div>
+ {% endblock %}
+ {% endif %}
+
+ {% block messages %}
+ {% if messages %}
+ <ul class="messagelist">{% for message in messages %}
+ <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message|capfirst }}</li>
+ {% endfor %}</ul>
+ {% endif %}
+ {% endblock messages %}
+ <div class="homepage-flex">
+ <!-- Content -->
+ <div id="content" class="{% block coltype %}colM{% endblock %} flex-left">
+ {% block pretitle %}{% endblock %}
+ {% block content_title %}{% if title %}<h1>{{ title }}</h1>{% endif %}{% endblock %}
+ {% block content %}
+ {% block object-tools %}{% endblock %}
+ {{ content }}
+ {% endblock %}
+ {% block sidebar %}{% endblock %}
+ <br class="clear" />
+ </div>
+ {% block adminembed %}{% endblock %}
+ <!-- END Content -->
+ </div>
+
+ {% block footer %}<div id="footer"></div>{% endblock %}
+</div>
+<!-- END Container -->
+
+</body>
+</html>
diff --git a/templates/admin/birds/birdsighting/change_form.html b/templates/admin/birds/birdsighting/change_form.html
new file mode 100644
index 0000000..31c9914
--- /dev/null
+++ b/templates/admin/birds/birdsighting/change_form.html
@@ -0,0 +1,135 @@
+{% extends "admin/base_site.html" %}
+{% load i18n admin_urls admin_static admin_modify %}
+
+{% block extrahead %}{{ block.super }}
+<script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>
+{{ media }}
+<script>
+if (!$) {
+ $ = django.jQuery;
+}
+$(function(){
+ $('#id_images').css('width', '500px').css('height', '400px');
+ $('#id_images option').each(function(){
+ $(this).attr('style', 'background: url('+$(this).text().split("qq")[1]+') no-repeat; background-size: 120px 80px; height: 80px; padding-left: 125px; line-height: 80px; margin-bottom: 4px; padding-bottom: 5px;border-bottom: #eee 1px solid;');
+ $(this).html($(this).text().split("qq")[0] + ' &ndash; <a href="/admin/photos/luximage/'+ $(this).text().split("qq")[2]+'/change/">edit</a>')
+ });
+});
+</script>
+
+{% endblock %}
+
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />{% endblock %}
+
+{% block coltype %}colM{% endblock %}
+
+{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} change-form{% endblock %}
+
+{% if not is_popup %}
+{% block breadcrumbs %}
+<div class="breadcrumbs">
+<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
+&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
+&rsaquo; {% if has_change_permission %}<a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %}
+&rsaquo; {% if add %}{% trans 'Add' %} {{ opts.verbose_name }}{% else %}{{ original|truncatewords:"18" }}{% endif %}
+</div>
+{% endblock %}
+{% endif %}
+
+{% block content %}<div id="content-main">
+{% block object-tools %}
+{% if change %}{% if not is_popup %}
+ <ul class="object-tools">
+ {% block object-tools-items %}
+ <li>
+ {% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
+ <a href="{% add_preserved_filters history_url %}" class="historylink">{% trans "History" %}</a>
+ </li>
+ {% if has_absolute_url %}<li><a href="{{ absolute_url }}" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif %}
+ {% endblock %}
+ </ul>
+{% endif %}{% endif %}
+{% endblock %}
+<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form" novalidate>{% csrf_token %}{% block form_top %}{% endblock %}
+<div>
+{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
+{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}
+{% if save_on_top %}{% block submit_buttons_top %}{% submit_row %}{% endblock %}{% endif %}
+{% if errors %}
+ <p class="errornote">
+ {% if errors|length == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %}
+ </p>
+ {{ adminform.form.non_field_errors }}
+{% endif %}
+
+{% block field_sets %}
+{% for fieldset in adminform %}
+ {% include "admin/includes/fieldset.html" %}
+{% endfor %}
+{% endblock %}
+
+{% block after_field_sets %}{% endblock %}
+
+{% block inline_field_sets %}
+{% for inline_admin_formset in inline_admin_formsets %}
+ {% include inline_admin_formset.opts.template %}
+{% endfor %}
+{% endblock %}
+
+{% block after_related_objects %}{% endblock %}
+
+{% block submit_buttons_bottom %}{% submit_row %}{% endblock %}
+
+{% block admin_change_form_document_ready %}
+ <script type="text/javascript">
+ (function($) {
+ $(document).ready(function() {
+ $('.add-another').click(function(e) {
+ e.preventDefault();
+ var event = $.Event('django:add-another-related');
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ showAddAnotherPopup(this);
+ }
+ });
+ $('.related-lookup').click(function(e) {
+ e.preventDefault();
+ var event = $.Event('django:lookup-related');
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ showRelatedObjectLookupPopup(this);
+ }
+ });
+ $('body').on('click', '.related-widget-wrapper-link', function(e) {
+ e.preventDefault();
+ if (this.href) {
+ var event = $.Event('django:show-related', {href: this.href});
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ showRelatedObjectPopup(this);
+ }
+ }
+ });
+ $('body').on('change', '.related-widget-wrapper select', function(e) {
+ var event = $.Event('django:update-related');
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ updateRelatedObjectLinks(this);
+ }
+ });
+ $('.related-widget-wrapper select').trigger('change');
+
+ {% if adminform and add %}
+ $('form#{{ opts.model_name }}_form :input:visible:enabled:first').focus()
+ {% endif %}
+ });
+ })(django.jQuery);
+ </script>
+{% endblock %}
+
+{# JavaScript for prepopulated fields #}
+{% prepopulated_fields_js %}
+
+</div>
+</form></div>
+{% endblock %}
diff --git a/templates/admin/buttons.html b/templates/admin/buttons.html
new file mode 100644
index 0000000..fbfa400
--- /dev/null
+++ b/templates/admin/buttons.html
@@ -0,0 +1,63 @@
+<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 {
+ text-transform: uppercase;
+ min-width: 180px;
+ font-size: 90%;
+ position: relative;
+ display: inline-block;
+ margin: 0px;
+ padding: 7px 5px;
+ height: 32px;
+ -moz-box-sizing: border-box;
+ cursor: pointer;
+ overflow: hidden;
+ vertical-align: top;
+ color: rgb(255, 255, 255);
+ background: #79aec8;
+ }
+</style>
+
+ <div class="module" id="recent-actions-module">
+ <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=builddetails">Build Writing Details</a></li>
+ <li class="item"><a href="/admin/build/build?id=writingarchives">Build Writing Archives</a></li>
+ <li class="item"><a href="/admin/build/build?id=homepage">Build Homepage</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=buildrss">Build RSS</a></li>
+ <li class="item"><a href="/admin/build/build?id=range">Build Range</a></li>
+ <li class="item"><a href="/admin/build/build?id=guide">Build Guide</a></li>
+ <li class="item"><a href="/admin/build/build?id=pages">Build Pages</a></li>
+ <li class="item"><a href="/admin/build/build?id=discursivepages">Build Discursive Pages</a></li>
+ <li class="item"><a href="/admin/build/build?id=fieldnotes">Build FieldNotes</a></li>
+ <li class="item"><a href="/admin/build/build?id=essays">Build Essays</a></li>
+ <li class="item"><a href="/admin/build/build?id=buildbooks">Build Books</a></li>
+ <li class="item"><a href="/admin/build/build?id=buildsightings">Build Dialogues</a></li>
+ <li class="item"><a href="/admin/build/build?id=pubs">Build Publications</a></li>
+ <li class="item"><a href="/admin/build/build?id=resume">Build Resume</a></li>
+ <li class="item"><a href="/admin/build/build?id=src">Build src</a></li>
+ <li class="item"><a href="/admin/build/build?id=srcrss">Build src RSS</a></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+
diff --git a/templates/admin/ccg_notes/change_form.html b/templates/admin/ccg_notes/change_form.html
new file mode 100644
index 0000000..a240f90
--- /dev/null
+++ b/templates/admin/ccg_notes/change_form.html
@@ -0,0 +1,152 @@
+{% extends "admin/base_site.html" %}
+{% load i18n admin_urls admin_static admin_modify %}
+
+{% block extrahead %}{{ block.super }}
+<script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>
+{{ media }}
+<script>
+if (!$) {
+ $ = django.jQuery;
+}
+$(function(){
+ $('#id_body_markdown').each(function(){
+ $(this).after('<iframe frameborder="0" style="border: #dddddd 1px solid;margin-left: 20px;width:330px; height:340px;" src="/luximages/insert/?textarea='+this.id+'"></iframe>');
+ });
+ $('#id_images').css('width', '500px').css('height', '400px');
+ $('#id_images option').each(function(){
+ $(this).attr('style', 'background: url('+$(this).text().split("qq")[1]+') no-repeat; background-size: 120px 80px; height: 80px; padding-left: 125px; line-height: 80px; margin-bottom: 4px; padding-bottom: 5px;border-bottom: #eee 1px solid;');
+ $(this).html($(this).text().split("qq")[0] + ' &ndash; <a href="/admin/photos/luximage/'+ $(this).text().split("qq")[2]+'/change/">edit</a>')
+ });
+});
+</script>
+
+{% endblock %}
+
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />{% endblock %}
+
+{% block coltype %}colM{% endblock %}
+
+{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} change-form{% endblock %}
+
+{% if not is_popup %}
+{% block breadcrumbs %}
+<div class="breadcrumbs">
+<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
+&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
+&rsaquo; {% if has_change_permission %}<a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %}
+&rsaquo; {% if add %}{% trans 'Add' %} {{ opts.verbose_name }}{% else %}{{ original|truncatewords:"18" }}{% endif %}
+</div>
+{% endblock %}
+{% endif %}
+
+{% block content %}
+ <a class="btn" onclick="geoFindMe();" href="javascript:void(0);" class="historylink">Get Location</a>
+<div id="content-main">
+{% block object-tools %}
+{% if change %}{% if not is_popup %}
+ <ul class="object-tools">
+ {% block object-tools-items %}
+
+ <li>
+ <a onclick="geoFindMe();" href="javascript:void(0);" class="historylink">Get Location</a>
+ </li>
+ <li>
+ <a href="{% url opts|admin_urlname:'history' original.pk|admin_urlquote %}" class="historylink">{% trans "History" %}</a>
+ </li>
+ {% if has_absolute_url %}
+ <li>
+ <a href="{% url 'admin:view_on_site' content_type_id original.pk %}" class="viewsitelink">{% trans "View on site" %}</a>
+ </li>
+ {% endif %}
+ <li>
+ {% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
+ <a href="{% add_preserved_filters history_url %}" class="historylink">{% trans "History" %}</a>
+ </li>
+ {% if has_absolute_url %}<li><a href="{{ absolute_url }}" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif %}
+ {% endblock %}
+ </ul>
+{% endif %}{% endif %}
+{% endblock %}
+<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form" novalidate>{% csrf_token %}{% block form_top %}{% endblock %}
+<div>
+{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
+{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}
+{% if save_on_top %}{% block submit_buttons_top %}{% submit_row %}{% endblock %}{% endif %}
+{% if errors %}
+ <p class="errornote">
+ {% if errors|length == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %}
+ </p>
+ {{ adminform.form.non_field_errors }}
+{% endif %}
+
+{% block field_sets %}
+{% for fieldset in adminform %}
+ {% include "admin/includes/fieldset.html" %}
+{% endfor %}
+{% endblock %}
+
+{% block after_field_sets %}{% endblock %}
+
+{% block inline_field_sets %}
+{% for inline_admin_formset in inline_admin_formsets %}
+ {% include inline_admin_formset.opts.template %}
+{% endfor %}
+{% endblock %}
+
+{% block after_related_objects %}{% endblock %}
+
+{% block submit_buttons_bottom %}{% submit_row %}{% endblock %}
+
+{% block admin_change_form_document_ready %}
+ <script type="text/javascript">
+ (function($) {
+ $(document).ready(function() {
+ $('.add-another').click(function(e) {
+ e.preventDefault();
+ var event = $.Event('django:add-another-related');
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ showAddAnotherPopup(this);
+ }
+ });
+ $('.related-lookup').click(function(e) {
+ e.preventDefault();
+ var event = $.Event('django:lookup-related');
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ showRelatedObjectLookupPopup(this);
+ }
+ });
+ $('body').on('click', '.related-widget-wrapper-link', function(e) {
+ e.preventDefault();
+ if (this.href) {
+ var event = $.Event('django:show-related', {href: this.href});
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ showRelatedObjectPopup(this);
+ }
+ }
+ });
+ $('body').on('change', '.related-widget-wrapper select', function(e) {
+ var event = $.Event('django:update-related');
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ updateRelatedObjectLinks(this);
+ }
+ });
+ $('.related-widget-wrapper select').trigger('change');
+
+ {% if adminform and add %}
+ $('form#{{ opts.model_name }}_form :input:visible:enabled:first').focus()
+ {% endif %}
+ });
+ })(django.jQuery);
+ </script>
+{% endblock %}
+
+{# JavaScript for prepopulated fields #}
+{% prepopulated_fields_js %}
+
+</div>
+</form></div>
+{% endblock %}
diff --git a/templates/admin/income/monthly.html b/templates/admin/income/monthly.html
new file mode 100644
index 0000000..920d074
--- /dev/null
+++ b/templates/admin/income/monthly.html
@@ -0,0 +1,57 @@
+{% extends "admin/base_site.html" %}
+{% load i18n admin_urls admin_static %}
+
+{% block breadcrumbs %}
+ <div class="breadcrumbs">
+ <a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
+ &rsaquo; <a href="/admin/income/">Income</a>
+ &rsaquo; <a href="/admin/income/invoice/">Invoices</a>
+ &rsaquo; <a href="/admin/income/invoice/{{object.id}}/change/">{{object.title}}</a>
+ </div>
+{% endblock %}
+{% block content %}
+
+<h1>{% trans "EDR Invoice for the month of" %} {{object.title}}</h1>
+
+
+<div style="float: left; width: 45%">
+<div class="results">
+<table id="result_list">
+<thead>
+<tr>
+
+<th scope="col" class="sortable column-title">
+ <div class="text"><a href="?o=1">Date</a></div>
+ <div class="clear"></div>
+</th>
+<th scope="col" class="sortable column-status">
+ <div class="text"><a href="?o=5">Time Start</a></div>
+ <div class="clear"></div>
+</th>
+<th scope="col" class="sortable column-status">
+ <div class="text"><a href="?o=5">Time Finish</a></div>
+ <div class="clear"></div>
+</th>
+<th scope="col" class="sortable column-status">
+ <div class="text"><a href="?o=5">Total</a></div>
+ <div class="clear"></div>
+</th>
+<th scope="col" class="sortable column-status">
+ <div class="text"><a href="?o=5">Work Done</a></div>
+ <div class="clear"></div>
+</th>
+</tr>
+</thead>
+<tbody>
+
+ {% for object in object_list %}
+ <tr class="{% cycle 'row1' 'row2' %}"><th class="field-title"><a href="/admin/income/invoiceitem/{{object.id}}/change/">{{object.time_start|date:"M d"}}</a></th><td class="field-status">{{object.time_start|date:"h:i"}}</td><td class="field-payment_status">{{object.time_end|date:"h:i"}}</td><td class="field-pub_date nowrap">{{object.total}}-{{object.rounded_total}}</td><td class="field-payment_status">{{object.work_done}}</td></tr>
+{% endfor %}
+<tr class="row2"><th class="field-title">&nbsp;</th><td class="field-status"></td><td class="field-payment_status"></td><td class="field-pub_date nowrap"></td></tr> <tr class="row2"><th class="field-title">Total Hours:</th><td class="field-status">{{total_hours}}</td><td class="field-payment_status"></td><td class="field-pub_date nowrap"></td></tr>
+<tr class="row2"><th class="field-title">Total Billed:</th><td class="field-status">${{total_billed}}</td><td class="field-payment_status"></td><td class="field-pub_date nowrap"></td></tr>
+</tbody>
+</table>
+</div>
+<p style="margin: 2rem 0; background: #79aec8; width: 120px; padding: 1rem;"><a style="color:white !important;" href="{% url 'download-invoice' object.slug %}">Generate Invoice</a></p>
+
+{% endblock %}
diff --git a/templates/admin/income_month.html b/templates/admin/income_month.html
new file mode 100644
index 0000000..125e435
--- /dev/null
+++ b/templates/admin/income_month.html
@@ -0,0 +1,159 @@
+{% extends "admin/base_site.html" %}
+{% load i18n admin_urls admin_static %}
+
+{# Admin styling code largely taken from http://www.dmertl.com/blog/?p=116 #}
+
+{% block extrastyle %}
+ {{ block.super }}
+<script type="text/javascript" src="/admin/jsi18n/"></script>
+<script type="text/javascript" src="/static/admin/js/core.js"></script>
+<script type="text/javascript" src="/static/admin/js/admin/RelatedObjectLookups.js"></script>
+<script type="text/javascript" src="/static/admin/js/jquery.js"></script>
+<script type="text/javascript" src="/static/admin/js/jquery.init.js"></script>
+<script type="text/javascript" src="/static/admin/js/actions.js"></script>
+<script type="text/javascript" src="/static/admin/js/calendar.js"></script>
+<script type="text/javascript" src="/static/admin/js/admin/DateTimeShortcuts.js"></script>
+ <link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}"/>
+ <style>
+ .field-title {min-width: 200px;}
+ .results {margin-bottom: 4em;}
+ </style>
+{% endblock %}
+
+{% block bodyclass %}{{ opts.app_label }}-{{ opts.object_name.lower }} change-form{% endblock %}
+
+{% block breadcrumbs %}
+ <div class="breadcrumbs">
+ <a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
+ &rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ app_label|capfirst|escape }}</a>
+ &rsaquo; {% if has_change_permission %}<a href="{% url opts|admin_urlname:'changelist' %}">
+ {{ opts.verbose_name_plural|capfirst }}</a>{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %}
+ &rsaquo; {% trans 'Income for' %} {{date|date:"F Y"}}
+ </div>
+{% endblock %}
+
+{% block content_title %}{% endblock %}
+
+{% block content %}
+
+<h1>{% trans "Income for the month of" %} {{date|date:"F Y"}}</h1>
+<h2>{% trans "Billed" %}</h2>
+
+
+<div style="float: left; width: 45%">
+<div class="results">
+<table id="result_list">
+<thead>
+<tr>
+
+<th scope="col" class="sortable column-title">
+ <div class="text"><a href="?o=1">Title</a></div>
+ <div class="clear"></div>
+</th>
+<th scope="col" class="sortable column-status">
+ <div class="text"><a href="?o=5">Amount</a></div>
+ <div class="clear"></div>
+</th>
+<th scope="col" class="sortable column-status">
+ <div class="text"><a href="?o=5">Source</a></div>
+ <div class="clear"></div>
+</th>
+<th scope="col" class="sortable column-status">
+ <div class="text"><a href="?o=5">Date Invoiced</a></div>
+ <div class="clear"></div>
+</th>
+<th scope="col" class="sortable column-status">
+ <div class="text"><a href="?o=5">Expected Pay Date</a></div>
+ <div class="clear"></div>
+</th>
+</tr>
+</thead>
+<tbody>
+
+{% for gig in billed %}
+
+<tr class="{% cycle 'row1' 'row2' %}"><th class="field-title"><a href="/admin/income/gig/{{gig.pk}}/">{{gig.title}}</a></th><td class="field-status">${{gig.payment}}</td><td class="field-payment_status">{{gig.publisher}}</td><td class="field-pub_date nowrap">{{gig.invoice_date|date:"M d, Y"}}</td><td class="field-payment_status">{{gig.get_pay_date|date:"M d, Y"}}</td></tr>
+{%endfor%}
+<tr class="row2"><th class="field-title">&nbsp;</th><td class="field-status"></td><td class="field-payment_status"></td><td class="field-pub_date nowrap"></td></tr>
+<tr class="row2"><th class="field-title">Total Billed:</th><td class="field-status">${{billed_total.total_payment}}</td><td class="field-payment_status"></td><td class="field-pub_date nowrap"></td></tr>
+</tbody>
+</table>
+</div>
+
+<h2>{% trans "Unbilled" %}</h2>
+<div class="results">
+<table id="result_list_2">
+<thead>
+<tr>
+
+<th scope="col" class="sortable column-title">
+ <div class="text"><a href="?o=1">Title</a></div>
+ <div class="clear"></div>
+</th>
+<th scope="col" class="sortable column-status">
+ <div class="text"><a href="?o=5">Amount</a></div>
+ <div class="clear"></div>
+</th>
+<th scope="col" class="sortable column-status">
+ <div class="text"><a href="?o=5">Source</a></div>
+ <div class="clear"></div>
+</th>
+<th scope="col" class="sortable column-status">
+ <div class="text"><a href="?o=5">Article status</a></div>
+ <div class="clear"></div>
+</th>
+</tr>
+</thead>
+<tbody>
+
+{% for gig in unbilled %}
+
+<tr class="{% cycle 'row1' 'row2' %}"><th class="field-title"><a href="/admin/income/gig/{{gig.pk}}/">{{gig.title}}</a></th><td class="field-status">${{gig.payment}}</td><td class="field-payment_status">{{gig.publisher}}</td><td class="field-pub_date nowrap">{{gig.get_status_display}}</td></tr>
+{%endfor%}
+<tr class="row2"><th class="field-title">&nbsp;</th><td class="field-status"></td><td class="field-payment_status"></td><td class="field-pub_date nowrap"></td></tr>
+<tr class="row2"><th class="field-title">Total Billed:</th><td class="field-status">${{unbilled_total.total_payment}}</td><td class="field-payment_status"></td><td class="field-pub_date nowrap"></td></tr>
+</tbody>
+</table>
+</div>
+<h2>{% trans "Total Outstanding:" %} ${{total_outstanding.total_payment}}</h2>
+<h4 style="margin-top: 3em;">Also have these stories pitched, but not accepted</h4>
+<div class="results">
+<table id="result_list_2">
+<thead>
+<tr>
+
+<th scope="col" class="sortable column-title">
+ <div class="text"><a href="?o=1">Title</a></div>
+ <div class="clear"></div>
+</th>
+<th scope="col" class="sortable column-status">
+ <div class="text"><a href="?o=5">Amount</a></div>
+ <div class="clear"></div>
+</th>
+<th scope="col" class="sortable column-status">
+ <div class="text"><a href="?o=5">Source</a></div>
+ <div class="clear"></div>
+</th>
+</tr>
+</thead>
+<tbody>
+
+{% for gig in pitched %}
+
+<tr class="{% cycle 'row1' 'row2' %}"><th class="field-title">{{gig.title}}</th><td class="field-status">${{gig.payment}}</td><td class="field-payment_status">{{gig.publisher}}</td></tr>
+{%endfor%}
+</tbody>
+</table>
+</div>
+
+<h2>{% trans "" %} {% with total_outstanding.total_payment|add:"-2000" as underover %}{% if underover > 0 %}${{underover}} more than budget{%else%}Need to generate another ${{underover|cut:"-"}} to cover expenses{%endif%}{%endwith%}</h2>
+
+</div>
+
+<div style="float:left; margin-left: 4em;">
+<h3>{% trans "Income by Month" %}</h3>
+<ul>{% for month in months %}
+<li><a href="?m={{month|date:"Y-m"|slugify}}">{{month|date:"F Y"}}</a></li>
+{%endfor%}</ul>
+</div>
+{% endblock %}
diff --git a/templates/admin/index.html b/templates/admin/index.html
new file mode 100644
index 0000000..78ada5b
--- /dev/null
+++ b/templates/admin/index.html
@@ -0,0 +1,174 @@
+{% extends "admin/base_site.html" %}
+{% load admin_list static i18n %}
+
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/dashboard.css" %}" />
+<style>
+.module caption {
+ padding: 5px;
+}
+td, th {
+ font-size: 12px;
+ padding: 5px 8px;
+}
+.module {
+ margin-bottom: 20px;
+}
+.homepage-flex {
+ display: flex;
+ flex-direction: row;
+}
+.flex-right{
+ width: 84%;
+ margin-top: 5.5rem;
+}
+.flex-left {
+ width: 15%
+}
+.faux-btns {
+ margin: 0;
+ padding: 0;
+ list-style-type: none;
+}
+.faux-btns li {
+ display: inline-block;
+ margin-right: .6rem;
+}
+.colMS {
+ margin-right: 0;
+}
+</style>
+{% endblock %}
+
+{% block coltype %}colMS{% endblock %}
+
+{% block bodyclass %}dashboard{% endblock %}
+
+{% block breadcrumbs %}{% endblock %}
+
+{% block content %}
+<div id="content-main">
+ <ul class="faux-btns">
+ <li><a href="https://awstats.luxagraf.net/cgi-bin/awstats.pl?config=luxagraf.net" target="_blank">lxf awstats</a></li>
+ <li><a href="https://stats.luxagraf.net/" target="_blank">lxf stats</a></li>
+ <li><a href="/admin/build/build?id=buildbooks">Build Books</a></li>
+ <li><a href="/admin/build/build?id=pubs">Build Publications</a></li>
+ <li><a href="/admin/build/build?id=resume">Build Resume</a></li>
+ </ul>
+{% if app_list %}
+ <div class="module">
+ <table>
+ <caption><a href="{{ app.app_url }}" class="section" title="{% blocktrans with name=app.name %}Models in the {{ name }} application{% endblocktrans %}">Frequently Used</a></caption>
+ <tr>
+ <th scope="row"><a href="/admin/django_comments/comment/">moderate comments</a></th>
+ <td>&nbsp;</td>
+ <td><a href="/admin/build/build?id=builddetails">Build JrnlDetails</a></td>
+ </tr>
+ <tr>
+ <th scope="row"><a href="/admin/posts/post/">posts</a></th>
+ <td><a href="/admin/posts/post/add/" class="addlink">Add</a></td>
+ <td><a href="/admin/build/build?id=writingarchives">Build JrnlArc</a></td>
+ </tr>
+ <th scope="row"><a href="/admin/media/luximage/">images</a></th>
+ <td><a href="/admin/media/luximage/add/" class="addlink">Add</a></td>
+ <td><a href="/admin/build/build?id=homepage">Build Homepage</a></td>
+ </tr>
+ <tr>
+ <th scope="row"><a href="/admin/lttr/newslettermailing/">newsletter mailings</a></th>
+ <td><a href="/admin/lttr/newslettermailing/add/" class="addlink">Add</a></td>
+ <td><a href="/admin/build/build?id=sitemap">Build Sitemap</a></td>
+ </tr>
+ <tr>
+ <th scope="row"><a href="/admin/sightings/sighting/">sightings</a></th>
+ <td><a href="/admin/sightings/sighting/add/" class="addlink">Add</a></td>
+ <td><a href="/admin/build/build?id=buildrss">Build Jrnl RSS</a></td>
+ </tr>
+ <tr>
+ <th scope="row"><a href="/admin/locations/luxcheckin/">check ins</a></th>
+ <td><a href="/admin/locations/checkin/add/" class="addlink">Add</a></td>
+ <td><a href="/admin/build/build?id=range">Build Range</a></td>
+ </tr>
+ <tr>
+ <th scope="row"><a href="/admin/locations/location/">locations</a></th>
+ <td><a href="/admin/locations/location/add/" class="addlink">Add</a></td>
+ <td><a href="/admin/build/build?id=friends">Build Friends</a></td>
+ </tr>
+ <tr>
+ <th scope="row"><a href="/admin/sightings/ap/">dialogue</a></th>
+ <td><a href="/admin/sightings/ap/add/" class="addlink">Add</a></td>
+ <td><a href="/admin/build/build?id=src">Build src</a></td>
+ </tr>
+ <tr>
+ <th scope="row"><a href="/admin/locations/campsite/">campsite</a></th>
+ <td><a href="/admin/locations/campsite/add/" class="addlink">Add</a></td>
+ <td><a href="/admin/build/build?id=pages">Build Pages</a></td>
+ </tr>
+ <tr>
+ <th scope="row"><a href="/admin/pages/homepage/1/change/">homepage</a></th>
+ <td><a href="/admin/locations/homepage/add/" class="addlink">Add</a></td>
+ <td><a href="/admin/build/build?id=essays">Build Essays</a></td>
+ </tr>
+ <tr>
+ <th scope="row"><a href="/admin/lttr/subscriber/">subscribers</a></th>
+ <td><a href="/admin/lttr/subscriber/add/" class="addlink">Add</a></td>
+ <td><a href="/admin/build/build?id=buildsightings">Build Dialogues</a></td>
+ </tr>
+ <tr>
+ <th scope="row"><a href="/admin/pages/page/">pages</a></th>
+ <td><a href="/admin/pages/page/add/" class="addlink">Add</a></td>
+ <td><a href="/admin/build/build?id=fieldnotes">Build FieldNotes</a></td>
+ </tr>
+ <tr>
+ <th scope="row"><a href="/admin/links/link/">link</a></th>
+ <td><a href="/admin/links/link/add/" class="addlink">Add</a></td>
+ <td><a href="/admin/build/build?id=discursivepages">Build Discursive Pages</a></td>
+ </tr>
+ </table>
+ </div>
+ {% for app in app_list %}
+ <div class="module">
+ <table>
+ <caption>
+ <a href="{{ app.app_url }}" class="section" title="{% blocktrans with name=app.name %}Models in the {{ name }} application{% endblocktrans %}">
+ {% blocktrans with name=app.name %}{{ name }}{% endblocktrans %}
+ </a>
+ </caption>
+ {% for model in app.models %}
+ <tr>
+ {% if model.admin_url %}
+ <th scope="row"><a href="{{ model.admin_url }}">{{ model.name }}</a></th>
+ {% else %}
+ <th scope="row">{{ model.name }}</th>
+ {% endif %}
+
+ {% if model.add_url %}
+ <td><a href="{{ model.add_url }}" class="addlink">{% trans 'Add' %}</a></td>
+ {% else %}
+ <td>&nbsp;</td>
+ {% endif %}
+
+ {% if model.admin_url %}
+ <td><a href="{{ model.admin_url }}" class="changelink">{% trans 'Change' %}</a></td>
+ {% else %}
+ <td>&nbsp;</td>
+ {% endif %}
+ </tr>
+ {% if model.name == "Gigs"%}
+ <tr> <th scope="row"><a href="{{ model.admin_url }}monthly/">Income for month</a></th></tr>
+ {% endif %}
+ {% endfor %}
+ </table>
+ </div>
+ {% endfor %}
+{% else %}
+ <p>{% trans "You don't have permission to edit anything." %}</p>
+{% endif %}
+</div>
+{% endblock %}
+
+{% block sidebar %}
+{% endblock %}
+{% block adminembed %}
+<div class="flex-right">
+ <!--<iframe style="border:none;width:98%;height: 40%" src="https://awstats.luxagraf.net/cgi-bin/awstats.pl?config=luxagraf.net&framename=mainright"></iframe>-->
+</div>
+{% endblock %}
diff --git a/templates/admin/insert_images.html b/templates/admin/insert_images.html
new file mode 100644
index 0000000..feaa88f
--- /dev/null
+++ b/templates/admin/insert_images.html
@@ -0,0 +1,127 @@
+{% load get_image_by_size %}
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<head>
+<style>
+.item-wrapper {
+ display: flex;
+ flex-wrap: wrap;
+ margin-bottom: 6px;
+ font-family: sans-serif;
+ font-size: 11px;
+ padding: 6px 0 4px;
+ border-top: #ccc 1px solid;
+}
+.item { margin: 0;}
+.item img { margin: 0 0 4px 0;}
+figure {
+ max-width: 180px;
+}
+.actions {
+ list-style-type: none;
+ margin: 0 0 0 10px;
+ padding: 0;
+}
+.actions li {
+ margin: 3px 0;
+}
+.actions a {
+ color: #666;
+}
+</style>
+</head>
+<body>
+ <input type="button" value="Refresh" onClick="window.location.reload()">
+ <button id="add_id_image" onClick="window.parent.open('/admin/media/luximage/add/?_to_field=id&amp;_popup=1')">Upload Image
+ <img src="/static/admin/img/icon-addlink.svg" alt="Add">
+ </button>
+ <div class="up-wrapper">{% for object in object_list %}
+ <div class="item-wrapper images">
+ {% if object.get_type != "Audio" %}
+ <figure class="item" >
+ <img src="{% if object.get_type == "LuxImage" %}{% get_image_by_size object 'tn' %}{%else%}{{object.video_poster.url}}" style="max-width: 150px{%endif%}" />
+ <figcaption>{{object.id}} {% if object.caption %}&ndash; {{object.caption}}{%endif%}</figcaption>
+ </figure>
+ <ul class="actions">{%if object.get_type == "LuxVideo" %}
+ <li><a data-is-video="true" data-video-mp4="{{object.video_mp4.url}}" data-video-webm="{{object.video_webm.url}}" data-id="{{object.id}}" data-class="vid" data-poster="{{object.video_poster.url}}" data-ytlink="{{object.youtube_url}}" onclick="insertImage(this);return false;" class="insert" href="#">Insert video</a>{%else%}{% get_image_by_size object 'admin_insert' as tn %}
+ <li><a data-src="{{tn}}" data-id="{{object.id}}" data-class="picwide" onclick="insertImage(this);return false;" href="#" >full width</a></li>
+ <li><a data-src="{{tn}}" data-id="{{object.id}}" data-class="picwide" data-caption="true" onclick="insertImage(this);return false;" href="#">full width cap</a></li>
+ <li><a data-src="{{tn}}" data-id="{{object.id}}" data-class="cluster pic66" onclick="insertImage(this);return false;" href="#">cluster</a></li>
+ <li><a data-src="{{tn}}" data-id="{{object.id}}" data-class="picfull" onclick="insertImage(this);return false;" href="#">column width</a></li>
+ <li><a data-src="{{tn}}" data-id="{{object.id}}" data-class="picfull" data-caption="true" onclick="insertImage(this);return false;" href="#">column width cap</a></li>
+ <li><a onclick='openInNewTab("/admin/medij/luximage/{{object.pk}}/change/");' href="#">Edit Image</a></li>{%endif%}
+ </ul>
+ {% else %}
+ <figure class="item" >
+ <img src="/media/img/audio_icon.png" style="max-width: 50px" />
+ </figure>
+ <ul class="actions">
+ <li><a data-is-audio="true" data-mp3="{{object.mp3.url}}" data-ogg="{{object.ogg.url}}" data-id="{{object.id}}" data-class="audio" onclick="insertImage(this);return false;" class="insert" href="#">Insert audio</a>
+ <li><a onclick='openInNewTab("/admin/recordings/audio/{{object.pk}}/change/");' href="#">Edit Recording</a></li>
+ </ul>
+ {% endif %}
+ </div>
+{% endfor %}
+</div>
+
+<!-- "next page" action -->
+<a class="nextPage browse right"></a>
+<script>
+function buildVideo(video_mp4, video_webm, id, c, poster, ytlink) {
+ html = '<div class="self-embed-container">\n\t<video poster="'+poster+'" controls="true" loop="false" preload="auto" id="'+id+'" class="vidauto';
+ if (c) {
+ html += c+'"';
+ } else {
+ html += '"';
+ }
+ html += '>\n\t\t<source src="'+video_webm+'" type="video/webm">\n';
+ html += '\t\t<source src="'+video_mp4+'" type="video/mp4">\n';
+ html += '\t\tYour browser does not support video playback via HTML5.\n\t</video>\n';
+ html += '\t<a class="figcaption" href="'+ytlink+'">Watch on YouTube</a>\n</div>';
+ return html;
+}
+function buildImage(image_url, id, c, caption) {
+ html = '<img src="'+image_url+'" id="image-'+id+'" class="';
+ if (c) {
+ html += c;
+ }
+ if (caption) {
+ html += ' caption" />';
+ }
+ else {
+ html += '" />';
+ }
+ return html;
+}
+function buildAudio(audio_mp3, audio_ogg) {
+ html = '<audio controls="" preload="auto">\n\t<source src="'+audio_mp3+'">\n\t'
+ html += '<source src="'+audio_ogg+'">\n\t'
+ html += 'Sorry, your browser does not support audio in HTML\n</audio>'
+ return html;
+}
+function openInNewTab(url) {
+ var win = window.open(url, '_blank');
+ win.focus();
+ return false;
+}
+function insertImage(item) {
+ if (item.dataset.isVideo) {
+ var code = buildVideo(item.dataset.videoMp4, item.dataset.videoWebm, item.dataset.id, item.dataset.class, item.dataset.poster, item.dataset.ytlink);
+ } else if (item.dataset.isAudio) {
+ var code = buildAudio(item.dataset.mp3, item.dataset.ogg);
+ } else {
+ var code = buildImage(item.dataset.src, item.dataset.id, item.dataset.class, item.dataset.caption);
+ }
+ var el = parent.document.getElementById('{{textarea_id}}');
+ var start = el.selectionStart;
+ var end = el.selectionEnd;
+ var text = el.value;
+ var before = text.substring(0, start);
+ var after = text.substring(end, text.length);
+ el.value = (before + code + after);
+ el.selectionStart = el.selectionEnd = start + code.length;
+ el.focus();
+}
+</script>
+</body>
+</html>
diff --git a/templates/admin/insert_products.html b/templates/admin/insert_products.html
new file mode 100644
index 0000000..b38389e
--- /dev/null
+++ b/templates/admin/insert_products.html
@@ -0,0 +1,82 @@
+{% load get_image_by_size %}
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<head>
+<style>
+.item-wrapper {
+ display: flex;
+ flex-wrap: wrap;
+ margin-bottom: 6px;
+ font-family: sans-serif;
+ font-size: 11px;
+ padding: 6px 0 4px;
+ border-top: #ccc 1px solid;
+}
+.item { }
+.item img { margin: 0 0 4px 0;}
+h5 {
+ max-width: 180px;
+ font-size: 18px;
+ line-height: 22px;
+ margin: 12px;
+}
+.actions {
+ list-style-type: none;
+ margin: 0 0 0 10px;
+ padding: 0;
+}
+.actions li {
+ margin: 3px 0;
+}
+.actions a {
+ color: #666;
+}
+</style>
+<script>
+function buildImage(id, prod_name) {
+ html = '<div id="product-'+id+'">'+prod_name+'</div>';
+ return html;
+}
+function openInNewTab(url) {
+ var win = window.open(url, '_blank');
+ win.focus();
+ return false;
+}
+</script>
+</head>
+<body>
+ <input type="button" value="Refresh" onClick="window.location.reload()">
+ <button id="add_id_image" onClick="window.parent.open('/admin/products/product/add/?_to_field=id&amp;_popup=1')">Add Product
+ <img src="/static/admin/img/icon-addlink.svg" alt="Add">
+ </button>
+ <div class="up-wrapper">{% for object in object_list %}
+ <div class="item-wrapper images">
+ <h5 class="item" >
+ {{object.get_full_name}}
+ </h5>
+ <ul class="actions">
+ <li><a data-id="{{object.id}}" data-name="{{object.get_full_name}}" onclick="insertProduct(this);return false;" href="#" >Insert Product</a></li>
+ <li><a onclick='openInNewTab("/admin/photos/luximage/{{object.pk}}/change/");' href="#">Edit Image</a></li>
+ </ul>
+ </div>
+{% endfor %}
+</div>
+
+<!-- "next page" action -->
+<a class="nextPage browse right"></a>
+<script>
+function insertProduct(item) {
+ var code = buildImage(item.dataset.id, item.dataset.name);
+ var el = parent.document.getElementById('{{textarea_id}}');
+ var start = el.selectionStart;
+ var end = el.selectionEnd;
+ var text = el.value;
+ var before = text.substring(0, start);
+ var after = text.substring(end, text.length);
+ el.value = (before + code + after);
+ el.selectionStart = el.selectionEnd = start + code.length;
+ el.focus();
+}
+</script>
+</body>
+</html>
diff --git a/templates/admin/links/link/change_form.html b/templates/admin/links/link/change_form.html
new file mode 100755
index 0000000..5a5753a
--- /dev/null
+++ b/templates/admin/links/link/change_form.html
@@ -0,0 +1,138 @@
+{% extends "admin/base_site.html" %}
+{% load get_image_by_size %}
+{% load i18n admin_urls static admin_modify %}
+
+{% block extrahead %}{{ block.super }}
+<script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>
+{{ media }}
+<script type="text/javascript">
+function GetURLParameter(sParam){
+ var sPageURL = window.location.search.substring(1);
+ var sURLVariables = sPageURL.split('&');
+ for (var i = 0; i < sURLVariables.length; i++) {
+ var sParameterName = sURLVariables[i].split('=');
+ if (sParameterName[0] == sParam) {
+ return sParameterName[1];
+ }
+ }
+};
+var title = GetURLParameter('title');
+var description = GetURLParameter('description');
+var url = GetURLParameter('url');
+</script>
+{% endblock %}
+
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />{% endblock %}
+
+{% block coltype %}colM{% endblock %}
+
+{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} change-form{% endblock %}
+
+{% if not is_popup %}
+{% block breadcrumbs %}
+<div class="breadcrumbs">
+<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
+&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
+&rsaquo; {% if has_change_permission %}<a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %}
+&rsaquo; {% if add %}{% trans 'Add' %} {{ opts.verbose_name }}{% else %}{{ original|truncatewords:"18" }}{% endif %}
+</div>
+{% endblock %}
+{% endif %}
+
+{% block content %}<div id="content-main">
+{% block object-tools %}
+{% if change %}{% if not is_popup %}
+ <ul class="object-tools">
+ {% block object-tools-items %}
+ <li>
+ {% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
+ <a href="{% add_preserved_filters history_url %}" class="historylink">{% trans "History" %}</a>
+ </li>
+ {% if has_absolute_url %}<li><a href="{{ absolute_url }}" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif %}
+ {% endblock %}
+ </ul>
+{% endif %}{% endif %}
+{% endblock %}
+<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form" novalidate>{% csrf_token %}{% block form_top %}{% endblock %}
+<div>
+{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
+{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}
+{% if save_on_top %}{% block submit_buttons_top %}{% submit_row %}{% endblock %}{% endif %}
+{% if errors %}
+ <p class="errornote">
+ {% if errors|length == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %}
+ </p>
+ {{ adminform.form.non_field_errors }}
+{% endif %}
+
+{% block field_sets %}
+{% for fieldset in adminform %}
+ {% include "admin/includes/fieldset.html" %}
+{% endfor %}
+{% endblock %}
+
+{% block after_field_sets %}{% endblock %}
+
+{% block inline_field_sets %}
+{% for inline_admin_formset in inline_admin_formsets %}
+ {% include inline_admin_formset.opts.template %}
+{% endfor %}
+{% endblock %}
+
+{% block after_related_objects %}{% endblock %}
+
+{% block submit_buttons_bottom %}{% submit_row %}{% endblock %}
+
+{% block admin_change_form_document_ready %}
+ <script type="text/javascript">
+ (function($) {
+ $(document).ready(function() {
+ $('.add-another').click(function(e) {
+ e.preventDefault();
+ var event = $.Event('django:add-another-related');
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ showAddAnotherPopup(this);
+ }
+ });
+ $('.related-lookup').click(function(e) {
+ e.preventDefault();
+ var event = $.Event('django:lookup-related');
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ showRelatedObjectLookupPopup(this);
+ }
+ });
+ $('body').on('click', '.related-widget-wrapper-link', function(e) {
+ e.preventDefault();
+ if (this.href) {
+ var event = $.Event('django:show-related', {href: this.href});
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ showRelatedObjectPopup(this);
+ }
+ }
+ });
+ $('body').on('change', '.related-widget-wrapper select', function(e) {
+ var event = $.Event('django:update-related');
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ updateRelatedObjectLinks(this);
+ }
+ });
+ $('.related-widget-wrapper select').trigger('change');
+
+ {% if adminform and add %}
+ $('form#{{ opts.model_name }}_form :input:visible:enabled:first').focus()
+ {% endif %}
+ });
+ })(django.jQuery);
+ </script>
+{% endblock %}
+
+{# JavaScript for prepopulated fields #}
+{% prepopulated_fields_js %}
+
+</div>
+</form></div>
+{% endblock %}
diff --git a/templates/admin/message.html b/templates/admin/message.html
new file mode 100644
index 0000000..348b15d
--- /dev/null
+++ b/templates/admin/message.html
@@ -0,0 +1,20 @@
+{% extends 'admin/base_site.html' %}
+
+{% block content %}
+{{message}}... <span style="color:red;" id="done"></span>
+{% endblock %}
+
+{% block extrahead %}
+<script type="text/javascript">
+function delayer(){
+ console.log("function fired")
+ document.getElementById('done').innerHTML = 'done'
+ window.location = "/admin/"
+}
+
+document.addEventListener("DOMContentLoaded", function(event) {
+ window.setTimeout(delayer, 1000);
+});
+</script>
+{% endblock %}
+
diff --git a/templates/admin/pages/change_form.html b/templates/admin/pages/change_form.html
new file mode 100644
index 0000000..fcc9302
--- /dev/null
+++ b/templates/admin/pages/change_form.html
@@ -0,0 +1,141 @@
+{% extends "admin/base_site.html" %}
+{% load admin_list static i18n admin_urls admin_modify %}
+{% block extrahead %}{{ block.super }}
+<script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>
+{{ media }}
+<script>
+if (!$) {
+ $ = django.jQuery;
+}
+</script>
+
+{% endblock %}
+
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />{% endblock %}
+
+{% block coltype %}colM{% endblock %}
+
+{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} change-form{% endblock %}
+
+{% if not is_popup %}
+{% block breadcrumbs %}
+<div class="breadcrumbs">
+<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
+&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
+&rsaquo; {% if has_change_permission %}<a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %}
+&rsaquo; {% if add %}{% trans 'Add' %} {{ opts.verbose_name }}{% else %}{{ original|truncatewords:"18" }}{% endif %}
+</div>
+{% endblock %}
+{% endif %}
+
+{% block content %}
+ <a class="btn" onclick="geoFindMe();" href="javascript:void(0);" class="historylink">Get Location</a>
+<div id="content-main">
+{% block object-tools %}
+{% if change %}{% if not is_popup %}
+ <ul class="object-tools">
+ {% block object-tools-items %}
+
+ <li>
+ <a onclick="geoFindMe();" href="javascript:void(0);" class="historylink">Get Location</a>
+ </li>
+ <li>
+ <a href="{% url opts|admin_urlname:'history' original.pk|admin_urlquote %}" class="historylink">{% trans "History" %}</a>
+ </li>
+ {% if has_absolute_url %}
+ <li>
+ <a href="{% url 'admin:view_on_site' content_type_id original.pk %}" class="viewsitelink">{% trans "View on site" %}</a>
+ </li>
+ {% endif %}
+ <li>
+ {% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
+ <a href="{% add_preserved_filters history_url %}" class="historylink">{% trans "History" %}</a>
+ </li>
+ {% if has_absolute_url %}<li><a href="{{ absolute_url }}" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif %}
+ {% endblock %}
+ </ul>
+{% endif %}{% endif %}
+{% endblock %}
+<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form" novalidate>{% csrf_token %}{% block form_top %}{% endblock %}
+<div>
+{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
+{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}
+{% if save_on_top %}{% block submit_buttons_top %}{% submit_row %}{% endblock %}{% endif %}
+{% if errors %}
+ <p class="errornote">
+ {% if errors|length == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %}
+ </p>
+ {{ adminform.form.non_field_errors }}
+{% endif %}
+
+{% block field_sets %}
+{% for fieldset in adminform %}
+ {% include "admin/includes/fieldset.html" %}
+{% endfor %}
+{% endblock %}
+
+{% block after_field_sets %}{% endblock %}
+
+{% block inline_field_sets %}
+{% for inline_admin_formset in inline_admin_formsets %}
+ {% include inline_admin_formset.opts.template %}
+{% endfor %}
+{% endblock %}
+
+{% block after_related_objects %}{% endblock %}
+
+{% block submit_buttons_bottom %}{% submit_row %}{% endblock %}
+
+{% block admin_change_form_document_ready %}
+ <script type="text/javascript">
+ (function($) {
+ $(document).ready(function() {
+ $('.add-another').click(function(e) {
+ e.preventDefault();
+ var event = $.Event('django:add-another-related');
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ showAddAnotherPopup(this);
+ }
+ });
+ $('.related-lookup').click(function(e) {
+ e.preventDefault();
+ var event = $.Event('django:lookup-related');
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ showRelatedObjectLookupPopup(this);
+ }
+ });
+ $('body').on('click', '.related-widget-wrapper-link', function(e) {
+ e.preventDefault();
+ if (this.href) {
+ var event = $.Event('django:show-related', {href: this.href});
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ showRelatedObjectPopup(this);
+ }
+ }
+ });
+ $('body').on('change', '.related-widget-wrapper select', function(e) {
+ var event = $.Event('django:update-related');
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ updateRelatedObjectLinks(this);
+ }
+ });
+ $('.related-widget-wrapper select').trigger('change');
+
+ {% if adminform and add %}
+ $('form#{{ opts.model_name }}_form :input:visible:enabled:first').focus()
+ {% endif %}
+ });
+ })(django.jQuery);
+ </script>
+{% endblock %}
+
+{# JavaScript for prepopulated fields #}
+{% prepopulated_fields_js %}
+
+</div>
+</form></div>
+{% endblock %}
diff --git a/templates/admin/photos/luxgallery/change_form.html b/templates/admin/photos/luxgallery/change_form.html
new file mode 100644
index 0000000..1cdfde0
--- /dev/null
+++ b/templates/admin/photos/luxgallery/change_form.html
@@ -0,0 +1,135 @@
+{% extends "admin/base_site.html" %}
+{% load i18n admin_urls admin_static admin_modify %}
+
+{% block extrahead %}{{ block.super }}
+<script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>
+{{ media }}
+<script>
+if (!$) {
+ $ = django.jQuery;
+}
+$(function(){
+ $('#id_images').css('width', '500px').css('height', '400px');
+ $('#id_images option').each(function(){
+ $(this).attr('style', 'background: url('+$(this).text().split("qq")[1]+') no-repeat; background-size: 120px 80px; height: 80px; padding-left: 125px; line-height: 80px; margin-bottom: 4px; padding-bottom: 5px;border-bottom: #eee 1px solid;');
+ $(this).html($(this).text().split("qq")[0] + ' &ndash; <a href="/admin/media/luximage/'+ $(this).text().split("qq")[2]+'/change/">edit</a>')
+ });
+});
+</script>
+
+{% endblock %}
+
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />{% endblock %}
+
+{% block coltype %}colM{% endblock %}
+
+{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} change-form{% endblock %}
+
+{% if not is_popup %}
+{% block breadcrumbs %}
+<div class="breadcrumbs">
+<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
+&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
+&rsaquo; {% if has_change_permission %}<a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %}
+&rsaquo; {% if add %}{% trans 'Add' %} {{ opts.verbose_name }}{% else %}{{ original|truncatewords:"18" }}{% endif %}
+</div>
+{% endblock %}
+{% endif %}
+
+{% block content %}<div id="content-main">
+{% block object-tools %}
+{% if change %}{% if not is_popup %}
+ <ul class="object-tools">
+ {% block object-tools-items %}
+ <li>
+ {% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
+ <a href="{% add_preserved_filters history_url %}" class="historylink">{% trans "History" %}</a>
+ </li>
+ {% if has_absolute_url %}<li><a href="{{ absolute_url }}" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif %}
+ {% endblock %}
+ </ul>
+{% endif %}{% endif %}
+{% endblock %}
+<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form" novalidate>{% csrf_token %}{% block form_top %}{% endblock %}
+<div>
+{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
+{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}
+{% if save_on_top %}{% block submit_buttons_top %}{% submit_row %}{% endblock %}{% endif %}
+{% if errors %}
+ <p class="errornote">
+ {% if errors|length == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %}
+ </p>
+ {{ adminform.form.non_field_errors }}
+{% endif %}
+
+{% block field_sets %}
+{% for fieldset in adminform %}
+ {% include "admin/includes/fieldset.html" %}
+{% endfor %}
+{% endblock %}
+
+{% block after_field_sets %}{% endblock %}
+
+{% block inline_field_sets %}
+{% for inline_admin_formset in inline_admin_formsets %}
+ {% include inline_admin_formset.opts.template %}
+{% endfor %}
+{% endblock %}
+
+{% block after_related_objects %}{% endblock %}
+
+{% block submit_buttons_bottom %}{% submit_row %}{% endblock %}
+
+{% block admin_change_form_document_ready %}
+ <script type="text/javascript">
+ (function($) {
+ $(document).ready(function() {
+ $('.add-another').click(function(e) {
+ e.preventDefault();
+ var event = $.Event('django:add-another-related');
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ showAddAnotherPopup(this);
+ }
+ });
+ $('.related-lookup').click(function(e) {
+ e.preventDefault();
+ var event = $.Event('django:lookup-related');
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ showRelatedObjectLookupPopup(this);
+ }
+ });
+ $('body').on('click', '.related-widget-wrapper-link', function(e) {
+ e.preventDefault();
+ if (this.href) {
+ var event = $.Event('django:show-related', {href: this.href});
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ showRelatedObjectPopup(this);
+ }
+ }
+ });
+ $('body').on('change', '.related-widget-wrapper select', function(e) {
+ var event = $.Event('django:update-related');
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ updateRelatedObjectLinks(this);
+ }
+ });
+ $('.related-widget-wrapper select').trigger('change');
+
+ {% if adminform and add %}
+ $('form#{{ opts.model_name }}_form :input:visible:enabled:first').focus()
+ {% endif %}
+ });
+ })(django.jQuery);
+ </script>
+{% endblock %}
+
+{# JavaScript for prepopulated fields #}
+{% prepopulated_fields_js %}
+
+</div>
+</form></div>
+{% endblock %}
diff --git a/templates/admin/save_link.html b/templates/admin/save_link.html
new file mode 100644
index 0000000..56047cd
--- /dev/null
+++ b/templates/admin/save_link.html
@@ -0,0 +1,123 @@
+{% extends "admin/base_site.html" %}
+{% load get_image_by_size %}
+{% load i18n admin_urls admin_static admin_modify %}
+
+{% block extrahead %}{{ block.super }}
+<script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>
+{{ media }}
+{% endblock %}
+
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />{% endblock %}
+
+{% block coltype %}colM{% endblock %}
+
+{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} change-form{% endblock %}
+
+{% if not is_popup %}
+{% block breadcrumbs %}
+<div class="breadcrumbs">
+<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
+&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
+&rsaquo; {% if has_change_permission %}<a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %}
+&rsaquo; {% if add %}{% trans 'Add' %} {{ opts.verbose_name }}{% else %}{{ original|truncatewords:"18" }}{% endif %}
+</div>
+{% endblock %}
+{% endif %}
+
+{% block content %}<div id="content-main">
+{% block object-tools %}
+{% if change %}{% if not is_popup %}
+ <ul class="object-tools">
+ {% block object-tools-items %}
+ <li>
+ {% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
+ <a href="{% add_preserved_filters history_url %}" class="historylink">{% trans "History" %}</a>
+ </li>
+ {% if has_absolute_url %}<li><a href="{{ absolute_url }}" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif %}
+ {% endblock %}
+ </ul>
+{% endif %}{% endif %}
+{% endblock %}
+<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form" novalidate>{% csrf_token %}{% block form_top %}{% endblock %}
+<div>
+{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
+{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}
+{% if save_on_top %}{% block submit_buttons_top %}{% submit_row %}{% endblock %}{% endif %}
+{% if errors %}
+ <p class="errornote">
+ {% if errors|length == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %}
+ </p>
+ {{ adminform.form.non_field_errors }}
+{% endif %}
+
+{% block field_sets %}
+{% for fieldset in adminform %}
+ {% include "admin/includes/fieldset.html" %}
+{% endfor %}
+{% endblock %}
+
+{% block after_field_sets %}{% endblock %}
+
+{% block inline_field_sets %}
+{% for inline_admin_formset in inline_admin_formsets %}
+ {% include inline_admin_formset.opts.template %}
+{% endfor %}
+{% endblock %}
+
+{% block after_related_objects %}{% endblock %}
+
+{% block submit_buttons_bottom %}{% submit_row %}{% endblock %}
+
+{% block admin_change_form_document_ready %}
+ <script type="text/javascript">
+ (function($) {
+ $(document).ready(function() {
+ $('.add-another').click(function(e) {
+ e.preventDefault();
+ var event = $.Event('django:add-another-related');
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ showAddAnotherPopup(this);
+ }
+ });
+ $('.related-lookup').click(function(e) {
+ e.preventDefault();
+ var event = $.Event('django:lookup-related');
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ showRelatedObjectLookupPopup(this);
+ }
+ });
+ $('body').on('click', '.related-widget-wrapper-link', function(e) {
+ e.preventDefault();
+ if (this.href) {
+ var event = $.Event('django:show-related', {href: this.href});
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ showRelatedObjectPopup(this);
+ }
+ }
+ });
+ $('body').on('change', '.related-widget-wrapper select', function(e) {
+ var event = $.Event('django:update-related');
+ $(this).trigger(event);
+ if (!event.isDefaultPrevented()) {
+ updateRelatedObjectLinks(this);
+ }
+ });
+ $('.related-widget-wrapper select').trigger('change');
+
+ {% if adminform and add %}
+ $('form#{{ opts.model_name }}_form :input:visible:enabled:first').focus()
+ {% endif %}
+ });
+ })(django.jQuery);
+ </script>
+{% endblock %}
+
+{# JavaScript for prepopulated fields #}
+{% prepopulated_fields_js %}
+
+</div>
+</form></div>
+{% endblock %}
diff --git a/templates/admin/upload_zip.html b/templates/admin/upload_zip.html
new file mode 100644
index 0000000..2a5345a
--- /dev/null
+++ b/templates/admin/upload_zip.html
@@ -0,0 +1,57 @@
+{% extends "admin/base_site.html" %}
+{% load i18n admin_urls admin_static %}
+
+{# Admin styling code largely taken from http://www.dmertl.com/blog/?p=116 #}
+
+{% block extrastyle %}
+ {{ block.super }}
+<script type="text/javascript" src="/admin/jsi18n/"></script>
+<script type="text/javascript" src="/static/admin/js/core.js"></script>
+<script type="text/javascript" src="/static/admin/js/admin/RelatedObjectLookups.js"></script>
+<script type="text/javascript" src="/static/admin/js/jquery.js"></script>
+<script type="text/javascript" src="/static/admin/js/jquery.init.js"></script>
+<script type="text/javascript" src="/static/admin/js/actions.js"></script>
+<script type="text/javascript" src="/static/admin/js/calendar.js"></script>
+<script type="text/javascript" src="/static/admin/js/admin/DateTimeShortcuts.js"></script>
+ <link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}"/>
+{% endblock %}
+
+{% block bodyclass %}{{ opts.app_label }}-{{ opts.object_name.lower }} change-form{% endblock %}
+
+{% block breadcrumbs %}
+ <div class="breadcrumbs">
+ <a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
+ &rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ app_label|capfirst|escape }}</a>
+ &rsaquo; {% if has_change_permission %}<a href="{% url opts|admin_urlname:'changelist' %}">
+ {{ opts.verbose_name_plural|capfirst }}</a>{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %}
+ &rsaquo; {% trans 'Upload' %}
+ </div>
+{% endblock %}
+
+{% block content_title %}{% endblock %}
+
+{% block content %}
+
+ <h1>{% trans "Upload a zip archive of photos" %}</h1>
+
+ {% if form.errors %}
+ <p class="errornote">
+ {% if form.errors|length == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %}
+ </p>
+ {{ form.non_field_errors }}
+ {% endif %}
+
+ <form action="{% url 'admin:upload_zip' %}" method="post" id="zip_upload_form"
+ {% if form.is_multipart %}enctype="multipart/form-data"{% endif %}>
+ {% csrf_token %}
+ <div>
+ {% for fieldset in adminform %}
+ {% include "admin/includes/fieldset.html" %}
+ {% endfor %}
+ </div>
+ <div class="submit-row">
+ <input type="submit" value="{% trans 'Upload' %}" class="default"/>
+ </div>
+ </form>
+
+{% endblock %}