aboutsummaryrefslogtreecommitdiffstats
path: root/alphabetlearning/templates
diff options
context:
space:
mode:
Diffstat (limited to 'alphabetlearning/templates')
-rw-r--r--alphabetlearning/templates/403.html15
-rw-r--r--alphabetlearning/templates/403_csrf.html15
-rw-r--r--alphabetlearning/templates/404.html15
-rw-r--r--alphabetlearning/templates/500.html12
-rw-r--r--alphabetlearning/templates/account/base_manage_password.html10
-rw-r--r--alphabetlearning/templates/account/signup.html37
-rw-r--r--alphabetlearning/templates/allauth/elements/alert.html7
-rw-r--r--alphabetlearning/templates/allauth/elements/badge.html6
-rw-r--r--alphabetlearning/templates/allauth/elements/button.html20
-rw-r--r--alphabetlearning/templates/allauth/elements/field.html66
-rw-r--r--alphabetlearning/templates/allauth/elements/fields.html3
-rw-r--r--alphabetlearning/templates/allauth/elements/h1.html5
-rw-r--r--alphabetlearning/templates/allauth/elements/h2.html5
-rw-r--r--alphabetlearning/templates/allauth/elements/panel.html19
-rw-r--r--alphabetlearning/templates/allauth/elements/table.html6
-rw-r--r--alphabetlearning/templates/allauth/layouts/entrance.html44
-rw-r--r--alphabetlearning/templates/allauth/layouts/manage.html6
-rw-r--r--alphabetlearning/templates/base.html199
-rw-r--r--alphabetlearning/templates/pages/about.html1
-rw-r--r--alphabetlearning/templates/pages/home.html350
-rw-r--r--alphabetlearning/templates/payments/cancel.html10
-rw-r--r--alphabetlearning/templates/payments/cart_detail.html32
-rw-r--r--alphabetlearning/templates/payments/cart_lineitem.html17
-rw-r--r--alphabetlearning/templates/payments/cart_sidepanel.html28
-rw-r--r--alphabetlearning/templates/payments/landingpage.html29
-rw-r--r--alphabetlearning/templates/payments/success.html11
-rw-r--r--alphabetlearning/templates/resources/admin_bar.html21
-rw-r--r--alphabetlearning/templates/resources/create_featured_resource.html26
-rw-r--r--alphabetlearning/templates/resources/hx_download_button.html3
-rw-r--r--alphabetlearning/templates/resources/resource_card_featured.html49
-rw-r--r--alphabetlearning/templates/resources/resource_card_standard.html56
-rw-r--r--alphabetlearning/templates/resources/resource_create.html22
-rw-r--r--alphabetlearning/templates/resources/resource_detail.html82
-rw-r--r--alphabetlearning/templates/resources/resource_list.html110
-rw-r--r--alphabetlearning/templates/resources/resource_metadata_update.html25
-rw-r--r--alphabetlearning/templates/resources/update_pdfs.html27
-rw-r--r--alphabetlearning/templates/resources/update_thumbnails.html29
-rw-r--r--alphabetlearning/templates/users/user_detail.html31
-rw-r--r--alphabetlearning/templates/users/user_form.html21
39 files changed, 1470 insertions, 0 deletions
diff --git a/alphabetlearning/templates/403.html b/alphabetlearning/templates/403.html
new file mode 100644
index 0000000..40954bb
--- /dev/null
+++ b/alphabetlearning/templates/403.html
@@ -0,0 +1,15 @@
+{% extends "base.html" %}
+
+{% block title %}
+ Forbidden (403)
+{% endblock title %}
+{% block content %}
+ <h1>Forbidden (403)</h1>
+ <p>
+ {% if exception %}
+ {{ exception }}
+ {% else %}
+ You're not allowed to access this page.
+ {% endif %}
+ </p>
+{% endblock content %}
diff --git a/alphabetlearning/templates/403_csrf.html b/alphabetlearning/templates/403_csrf.html
new file mode 100644
index 0000000..40954bb
--- /dev/null
+++ b/alphabetlearning/templates/403_csrf.html
@@ -0,0 +1,15 @@
+{% extends "base.html" %}
+
+{% block title %}
+ Forbidden (403)
+{% endblock title %}
+{% block content %}
+ <h1>Forbidden (403)</h1>
+ <p>
+ {% if exception %}
+ {{ exception }}
+ {% else %}
+ You're not allowed to access this page.
+ {% endif %}
+ </p>
+{% endblock content %}
diff --git a/alphabetlearning/templates/404.html b/alphabetlearning/templates/404.html
new file mode 100644
index 0000000..2399b79
--- /dev/null
+++ b/alphabetlearning/templates/404.html
@@ -0,0 +1,15 @@
+{% extends "base.html" %}
+
+{% block title %}
+ Page not found
+{% endblock title %}
+{% block content %}
+ <h1>Page not found</h1>
+ <p>
+ {% if exception %}
+ {{ exception }}
+ {% else %}
+ This is not the page you were looking for.
+ {% endif %}
+ </p>
+{% endblock content %}
diff --git a/alphabetlearning/templates/500.html b/alphabetlearning/templates/500.html
new file mode 100644
index 0000000..c4e2fa3
--- /dev/null
+++ b/alphabetlearning/templates/500.html
@@ -0,0 +1,12 @@
+{% extends "base.html" %}
+
+{% block title %}
+ Server Error
+{% endblock title %}
+{% block content %}
+ <h1>Ooops!!! 500</h1>
+ <h3>Looks like something went wrong!</h3>
+ <p>
+ We track these errors automatically, but if the problem persists feel free to contact us. In the meantime, try refreshing.
+ </p>
+{% endblock content %}
diff --git a/alphabetlearning/templates/account/base_manage_password.html b/alphabetlearning/templates/account/base_manage_password.html
new file mode 100644
index 0000000..20c44f7
--- /dev/null
+++ b/alphabetlearning/templates/account/base_manage_password.html
@@ -0,0 +1,10 @@
+{% extends "account/base_manage.html" %}
+
+{% block main %}
+ <div class="card">
+ <div class="card-body">
+ {% block content %}
+ {% endblock content %}
+ </div>
+ </div>
+{% endblock main %}
diff --git a/alphabetlearning/templates/account/signup.html b/alphabetlearning/templates/account/signup.html
new file mode 100644
index 0000000..9dd81fd
--- /dev/null
+++ b/alphabetlearning/templates/account/signup.html
@@ -0,0 +1,37 @@
+ {% extends "account/base_entrance.html" %}
+ {% load allauth i18n %}
+ {% block head_title %}
+ {% trans "Signup" %}
+ {% endblock head_title %}
+ {% block content %}
+ {% element h1 %}
+ {% trans "Sign Up" %}
+ <p>There are lots of benefits to signing up!</p>
+ {% endelement %}
+ {% setvar link %}
+ <a href="{{ login_url }}">
+ {% endsetvar %}
+ {% setvar end_link %}
+ </a>
+ {% endsetvar %}
+ <p>{% blocktranslate %}Already have an account? Then please {{ link }}sign in{{ end_link }}.{% endblocktranslate %}</p>
+ {% if not SOCIALACCOUNT_ONLY %}
+ {% url 'account_signup' as action_url %}
+ {% element form form=form method="post" action=action_url tags="entrance,signup" %}
+ {% slot body %}
+ {% csrf_token %}
+ {% element fields form=form unlabeled=True %}
+ {% endelement %}
+ {{ redirect_field }}
+ {% endslot %}
+ {% slot actions %}
+ {% element button tags="prominent,signup" type="submit" %}
+ {% trans "Sign Up" %}
+ {% endelement %}
+ {% endslot %}
+ {% endelement %}
+ {% endif %}
+ {% if SOCIALACCOUNT_ENABLED %}
+ {% include "socialaccount/snippets/login.html" with page_layout="entrance" %}
+ {% endif %}
+ {% endblock content %}
diff --git a/alphabetlearning/templates/allauth/elements/alert.html b/alphabetlearning/templates/allauth/elements/alert.html
new file mode 100644
index 0000000..535d394
--- /dev/null
+++ b/alphabetlearning/templates/allauth/elements/alert.html
@@ -0,0 +1,7 @@
+{% load i18n %}
+{% load allauth %}
+
+<div class="alert alert-error">
+ {% slot message %}
+{% endslot %}
+</div>
diff --git a/alphabetlearning/templates/allauth/elements/badge.html b/alphabetlearning/templates/allauth/elements/badge.html
new file mode 100644
index 0000000..e86669b
--- /dev/null
+++ b/alphabetlearning/templates/allauth/elements/badge.html
@@ -0,0 +1,6 @@
+{% load allauth %}
+
+<span class="badge {% if 'success' in attrs.tags %}bg-success{% endif %} {% if 'warning' in attrs.tags %}bg-warning{% endif %} {% if 'secondary' in attrs.tags %}bg-secondary{% endif %} {% if 'danger' in attrs.tags %}bg-danger{% endif %} {% if 'primary' in attrs.tags %}bg-primary{% endif %}">
+ {% slot %}
+{% endslot %}
+</span>
diff --git a/alphabetlearning/templates/allauth/elements/button.html b/alphabetlearning/templates/allauth/elements/button.html
new file mode 100644
index 0000000..b88a209
--- /dev/null
+++ b/alphabetlearning/templates/allauth/elements/button.html
@@ -0,0 +1,20 @@
+{% load allauth %}
+
+{% comment %} djlint:off {% endcomment %}
+<{% if attrs.href %}a href="{{ attrs.href }}"{% else %}button{% endif %}
+ {% if attrs.form %}form="{{ attrs.form }}"{% endif %}
+ {% if attrs.id %}id="{{ attrs.id }}"{% endif %}
+ {% if attrs.name %}name="{{ attrs.name }}"{% endif %}
+ {% if attrs.type %}type="{{ attrs.type }}"{% endif %}
+ class="btn
+{% if 'success' in attrs.tags %}btn-success
+{% elif 'warning' in attrs.tags %}btn-warning
+{% elif 'secondary' in attrs.tags %}btn-secondary
+{% elif 'danger' in attrs.tags %}btn-danger
+{% elif 'primary' in attrs.tags %}btn-primary
+{% else %}btn-primary
+{% endif %}"
+>
+ {% slot %}
+ {% endslot %}
+ </{% if attrs.href %}a{% else %}button{% endif %}>
diff --git a/alphabetlearning/templates/allauth/elements/field.html b/alphabetlearning/templates/allauth/elements/field.html
new file mode 100644
index 0000000..dc5f303
--- /dev/null
+++ b/alphabetlearning/templates/allauth/elements/field.html
@@ -0,0 +1,66 @@
+{% load allauth %}
+{% load crispy_forms_tags %}
+
+{% if attrs.type == "textarea" %}
+ <div class="row mb-3">
+ <div class="col-sm-10">
+ <label for="{{ attrs.id }}">
+ {% slot label %}
+ {% endslot %}
+ </label>
+ </div>
+ <textarea {% if attrs.required %}required{% endif %}
+ {% if attrs.rows %}rows="{{ attrs.rows }}"{% endif %}
+ {% if attrs.disabled %}disabled{% endif %}
+ {% if attrs.readonly %}readonly{% endif %}
+ {% if attrs.checked %}checked{% endif %}
+ {% if attrs.name %}name="{{ attrs.name }}"{% endif %}
+ {% if attrs.id %}id="{{ attrs.id }}"{% endif %}
+ {% if attrs.placeholder %}placeholder="{{ attrs.placeholder }}"{% endif %}
+ class="form-control">{% slot value %}{% endslot %}</textarea>
+</div>
+{% elif attrs.type == "radio" %}
+<div class="row mb-3">
+ <div class="col-sm-10">
+ <div class="form-check">
+ <input {% if attrs.required %}required{% endif %}
+ {% if attrs.disabled %}disabled{% endif %}
+ {% if attrs.readonly %}readonly{% endif %}
+ {% if attrs.checked %}checked{% endif %}
+ {% if attrs.name %}name="{{ attrs.name }}"{% endif %}
+ {% if attrs.id %}id="{{ attrs.id }}"{% endif %}
+ {% if attrs.placeholder %}placeholder="{{ attrs.placeholder }}"{% endif %}
+ {% if attrs.autocomplete %}autocomplete="{{ attrs.autocomplete }}"{% endif %}
+ value="{{ attrs.value|default_if_none:"" }}"
+ type="{{ attrs.type }}" />
+ <label class="form-check-label" for="{{ attrs.id }}">
+ {% slot label %}
+ {% endslot %}
+ </label>
+ </div>
+</div>
+</div>
+{% else %}
+<div class="col-sm-10">
+ <label for="{{ attrs.id }}">
+ {% slot label %}
+ {% endslot %}
+</label>
+</div>
+<div class="col-sm-10">
+ <input {% if attrs.required %}required{% endif %}
+ {% if attrs.disabled %}disabled{% endif %}
+ {% if attrs.readonly %}readonly{% endif %}
+ {% if attrs.checked %}checked{% endif %}
+ {% if attrs.name %}name="{{ attrs.name }}"{% endif %}
+ {% if attrs.id %}id="{{ attrs.id }}"{% endif %}
+ {% if attrs.placeholder %}placeholder="{{ attrs.placeholder }}"{% endif %}
+ {% if attrs.autocomplete %}autocomplete="{{ attrs.autocomplete }}"{% endif %}
+ value="{{ attrs.value|default_if_none:"" }}"
+ type="{{ attrs.type }}"
+ class="form-control" />
+</div>
+{% endif %}
+{% if slots.help_text %}
+ <div class="form-text">{% slot help_text %}{% endslot %}</div>
+{% endif %}
diff --git a/alphabetlearning/templates/allauth/elements/fields.html b/alphabetlearning/templates/allauth/elements/fields.html
new file mode 100644
index 0000000..ae8e104
--- /dev/null
+++ b/alphabetlearning/templates/allauth/elements/fields.html
@@ -0,0 +1,3 @@
+{% load crispy_forms_tags %}
+
+{{ attrs.form|crispy }}
diff --git a/alphabetlearning/templates/allauth/elements/h1.html b/alphabetlearning/templates/allauth/elements/h1.html
new file mode 100644
index 0000000..40ebed8
--- /dev/null
+++ b/alphabetlearning/templates/allauth/elements/h1.html
@@ -0,0 +1,5 @@
+{% load allauth %}
+<h1>
+ {% slot default %}
+ {% endslot %}
+</h1>
diff --git a/alphabetlearning/templates/allauth/elements/h2.html b/alphabetlearning/templates/allauth/elements/h2.html
new file mode 100644
index 0000000..e2b412a
--- /dev/null
+++ b/alphabetlearning/templates/allauth/elements/h2.html
@@ -0,0 +1,5 @@
+{% load allauth %}
+<h2>
+ {% slot default %}
+ {% endslot %}
+</h2>
diff --git a/alphabetlearning/templates/allauth/elements/panel.html b/alphabetlearning/templates/allauth/elements/panel.html
new file mode 100644
index 0000000..43a7a54
--- /dev/null
+++ b/alphabetlearning/templates/allauth/elements/panel.html
@@ -0,0 +1,19 @@
+{% load allauth %}
+
+<section>
+ <div class="card mb-4">
+ <div class="card-body">
+ <h2 class="card-title">
+ {% slot title %}
+ {% endslot %}
+ </h2>
+ {% slot body %}
+ {% endslot %}
+ {% if slots.actions %}
+ <ul>
+ {% for action in slots.actions %}<li>{{ action }}</li>{% endfor %}
+ </ul>
+ {% endif %}
+</div>
+</div>
+</section>
diff --git a/alphabetlearning/templates/allauth/elements/table.html b/alphabetlearning/templates/allauth/elements/table.html
new file mode 100644
index 0000000..13cc5da
--- /dev/null
+++ b/alphabetlearning/templates/allauth/elements/table.html
@@ -0,0 +1,6 @@
+{% load allauth %}
+
+<table class="table">
+ {% slot %}
+{% endslot %}
+</table>
diff --git a/alphabetlearning/templates/allauth/layouts/entrance.html b/alphabetlearning/templates/allauth/layouts/entrance.html
new file mode 100644
index 0000000..fedeb31
--- /dev/null
+++ b/alphabetlearning/templates/allauth/layouts/entrance.html
@@ -0,0 +1,44 @@
+{% extends "base.html" %}
+
+{% load allauth %}
+
+{% load i18n %}
+
+{% block bodyclass %}
+ bg-light
+{% endblock bodyclass %}
+{% block css %}
+ {{ block.super }}
+{% endblock css %}
+{% block title %}
+ {% block head_title %}
+ {% trans "Sign In" %}
+ {% endblock head_title %}
+{% endblock title %}
+{% block body %}
+ <div class="d-flex justify-content-center h-100 py-4">
+ <div class="col-md-4 py-4 my-4 px-4">
+ {% if messages %}
+ {% for message in messages %}
+ <div class="alert alert-dismissible {% if message.tags %}alert-{{ message.tags }}{% endif %}">
+ {{ message }}
+ <button type="button"
+ class="btn-close"
+ data-bs-dismiss="alert"
+ aria-label="Close"></button>
+ </div>
+ {% endfor %}
+ {% endif %}
+
+ {% element h2 %}Coming soon!{% endelement %}
+
+ <p>Alphabet Learning is a brand new platform selling high quality educational resources. As of October 2024, the site is currently in active development
+ and will be launched soon.</p>
+
+ <hr>
+
+ {% block content %}
+ {% endblock content %}
+ </div>
+ </div>
+{% endblock body %}
diff --git a/alphabetlearning/templates/allauth/layouts/manage.html b/alphabetlearning/templates/allauth/layouts/manage.html
new file mode 100644
index 0000000..75b4959
--- /dev/null
+++ b/alphabetlearning/templates/allauth/layouts/manage.html
@@ -0,0 +1,6 @@
+{% extends "base.html" %}
+
+{% block main %}
+ {% block content %}
+ {% endblock content %}
+{% endblock main %}
diff --git a/alphabetlearning/templates/base.html b/alphabetlearning/templates/base.html
new file mode 100644
index 0000000..ded8675
--- /dev/null
+++ b/alphabetlearning/templates/base.html
@@ -0,0 +1,199 @@
+{% load static i18n %}
+
+<!DOCTYPE html>
+{% get_current_language as LANGUAGE_CODE %}
+<html lang="{{ LANGUAGE_CODE }}">
+<head>
+ <meta charset="utf-8"/>
+ <meta http-equiv="x-ua-compatible" content="ie=edge"/>
+ <title>
+ {% block title %}
+ Alphabet Learning
+ {% endblock title %}
+ </title>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+ <meta name="description" content="Joanna Lemon Resources"/>
+ <meta name="author" content="Matthew Lemon"/>
+ <link rel="icon" href="{% static 'images/favicons/al.png' %}"/>
+ {% block extra_css %}
+ {% endblock extra_css %}
+ {% block css %}
+ <!--Latest compiled and minified Bootstrap CSS -->
+ {# <link rel="stylesheet"#}
+ {# href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.2.3/css/bootstrap.min.css"#}
+ {# integrity="sha512-SbiR/eusphKoMVVXysTKG/7VseWii+Y3FdHrt0EpKgpToZeemhqHeZeLWLhJutz/2ut2Vw1uQEj2MbRF+TVBUA=="#}
+ {# crossorigin="anonymous"#}
+ {# referrerpolicy="no-referrer" />#}
+ <!-- Your stuff: Third-party CSS libraries go here -->
+ <!-- This file stores project-specific CSS -->
+ <link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.css' %}"/>
+ <link rel="stylesheet" href="{% static 'css/custom.css' %}"/>
+ <link rel="stylesheet" href="{% static 'css/project.css' %}"/>
+ <link rel="stylesheet" href="{% static 'css/features.css' %}">
+ {# <link rel="stylesheet" href="{% static "css/wrapper.css" %}" type="text/css" media="screen" charset="utf-8" />#}
+ {% endblock css %}
+ <!-- Le javascript
+ ================================================== -->
+ {# Placed at the top of the document so pages load faster with defer #}
+ {% block javascript %}
+ <!-- Bootstrap JS -->
+ {# <script defer#}
+ {# src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.2.3/js/bootstrap.min.js"#}
+ {# integrity="sha512-1/RvZTcCDEUjY/CypiMz+iqqtaoQfAITmNSJY17Myp4Ms5mdxPS5UV7iOfdZoxcGhzFbOm6sntTKJppjvuhg4g=="#}
+ {# crossorigin="anonymous"#}
+ {# referrerpolicy="no-referrer"></script>#}
+ <!-- Your stuff: Third-party javascript libraries go here -->
+ <!-- place project specific Javascript in this file -->
+ <script defer src="{% static 'js/project.js' %}"></script>
+ <script src="{% static "bootstrap/js/bootstrap.js" %}"></script>
+ <script src="{% static "js/htmx.min.js" %}"></script>
+ <script src="https://js.stripe.com/v3/"></script>
+ {% endblock javascript %}
+</head>
+<body>
+
+
+<header>
+ <nav class="navbar navbar-expand-lg navbar-light bg-white">
+ <div class="container-fluid">
+ <a class="navbar-brand" href="{% url "home" %}">
+ <img src="{% static "images/AL_long_logo_black_grey.png" %}" width=300px alt="Alphabet Learning Logo">
+ </a>
+ <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
+ aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
+ <span class="navbar-toggler-icon"></span>
+ </button>
+
+
+ <div class="collapse navbar-collapse" id="navbarNav">
+
+ <ul class="navbar-nav ms-auto">
+ <li class="nav-item">
+ <!-- <div class="d-flex align-items-end mx-1 p-1 px-3 text-white rounded rounded-sm bg-primary"> -->
+ <!-- <div> -->
+ <!-- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-2" width="32" height="32"> -->
+ <!-- <path stroke-linecap="round" stroke-linejoin="round" d="M2.25 3h1.386c.51 0 .955.343 1.087.835l.383 1.437M7.5 14.25a3 3 0 0 0-3 3h15.75m-12.75-3h11.218c1.121-2.3 2.1-4.684 2.924-7.138a60.114 60.114 0 0 0-16.536-1.84M7.5 14.25 5.106 5.272M6 20.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Zm12.75 0a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Z" /> -->
+ <!-- </svg> -->
+ <!-- </div> -->
+ <!-- <div class="fw-bold"> -->
+ <!-- Cart -->
+ <!-- </div> -->
+ <!-- </div> -->
+ </li>
+ <li class="nav-item">
+ <a class="nav-link text-dark fw-bold" href="{% url "resources:resource_list" %}">Resources</a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link text-dark fw-bold"
+ href="https://www.tes.com/teaching-resources/shop/joannalemon"
+ target="_blank">TES Shop</a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link text-dark fw-bold" href="https://joannalemon.etsy.com/"
+ target="_blank">Etsy</a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link text-dark fw-bold" href="https://blog.joannalemon.com"
+ target="_blank">Blog</a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </nav>
+ <div class="border-bottom border-dark border-1"></div>
+</header>
+<main>
+ {% block body %}
+ {% if messages %}
+ {% for message in messages %}
+ <div class="alert alert-dismissible {% if message.tags %}alert-{{ message.tags }}{% endif %}">
+ {{ message }}
+ <button type="button"
+ class="btn-close"
+ data-bs-dismiss="alert"
+ aria-label="Close"></button>
+ </div>
+ {% endfor %}
+ {% endif %}
+ {% block main %}
+ <div class="container">
+ {% block content %}
+ {% endblock content %}
+ <footer class="pt-4 my-md-5 pt-md-5 border-top">
+ <div class="row">
+ <div class="col-12 col-md">
+ <img class="mb-2" src="#" alt="" width="24" height="19">
+ <small class="d-block mb-3 text-muted">&copy; 2024</small>
+ </div>
+ <div class="col-6 col-md">
+ <h5>Features</h5>
+ <ul class="list-unstyled text-small">
+ <li class="mb-1"><a class="link-secondary text-decoration-none" href="#">Cool stuff</a>
+ </li>
+ <li class="mb-1"><a class="link-secondary text-decoration-none" href="#">Random
+ feature</a></li>
+ <li class="mb-1"><a class="link-secondary text-decoration-none" href="#">Team
+ feature</a></li>
+ <li class="mb-1"><a class="link-secondary text-decoration-none" href="#">Stuff for
+ developers</a></li>
+ <li class="mb-1"><a class="link-secondary text-decoration-none" href="#">Another one</a>
+ </li>
+ <li class="mb-1"><a class="link-secondary text-decoration-none" href="#">Last time</a>
+ </li>
+ </ul>
+ </div>
+ <div class="col-6 col-md">
+ <h5>Pages on this site</h5>
+ <ul class="list-unstyled text-small">
+ <li class="mb-1"><a class="link-secondary text-decoration-none"
+ href="{% url "resources:resource_list" %}">Resources</a></li>
+ <li class="mb-1"><a class="link-secondary text-decoration-none" href="#">Resource
+ name</a></li>
+ <li class="mb-1"><a class="link-secondary text-decoration-none" href="#">Another
+ resource</a></li>
+ <li class="mb-1"><a class="link-secondary text-decoration-none" href="#">Final
+ resource</a></li>
+ </ul>
+ </div>
+ <div class="col-6 col-md">
+ <h5>About</h5>
+ <ul class="list-unstyled text-small">
+ <li class="mb-1"><a class="link-secondary text-decoration-none" href="#">Team</a></li>
+ <li class="mb-1"><a class="link-secondary text-decoration-none" href="#">Locations</a>
+ </li>
+ <li class="mb-1"><a class="link-secondary text-decoration-none" href="#">Privacy</a>
+ </li>
+ <li class="mb-1"><a class="link-secondary text-decoration-none" href="#">Terms</a></li>
+ </ul>
+ </div>
+ </div>
+ </footer>
+
+ </div>
+ {% endblock main %}
+ {% endblock body %}
+</main>
+<!-- /container -->
+{% block modal %}
+{% endblock modal %}
+{% block inline_javascript %}
+{% comment %}
+Script tags with only code, no src (defer by default). To run
+with a "defer" so that you run inline code:
+<script>
+ #
+ } {
+ # window.addEventListener('DOMContentLoaded', () => {
+ #
+ } {
+ # /* Run whatever you want */ #
+ } {
+ #
+ });
+ #
+ }
+</script>
+{% endcomment %}
+{% endblock inline_javascript %}
+</body>
+</html>
diff --git a/alphabetlearning/templates/pages/about.html b/alphabetlearning/templates/pages/about.html
new file mode 100644
index 0000000..94d9808
--- /dev/null
+++ b/alphabetlearning/templates/pages/about.html
@@ -0,0 +1 @@
+{% extends "base.html" %}
diff --git a/alphabetlearning/templates/pages/home.html b/alphabetlearning/templates/pages/home.html
new file mode 100644
index 0000000..aa206f3
--- /dev/null
+++ b/alphabetlearning/templates/pages/home.html
@@ -0,0 +1,350 @@
+{% extends "base.html" %}
+
+{% load static %}
+{% block content %}
+
+ <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
+ <symbol id="check" viewBox="0 0 16 16">
+ <title>Check</title>
+ <path d="M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z"/>
+ </symbol>
+ <symbol id="bootstrap" viewBox="0 0 118 94">
+ <title>Bootstrap</title>
+ <path fill-rule="evenodd" clip-rule="evenodd"
+ d="M24.509 0c-6.733 0-11.715 5.893-11.492 12.284.214 6.14-.064 14.092-2.066 20.577C8.943 39.365 5.547 43.485 0 44.014v5.972c5.547.529 8.943 4.649 10.951 11.153 2.002 6.485 2.28 14.437 2.066 20.577C12.794 88.106 17.776 94 24.51 94H93.5c6.733 0 11.714-5.893 11.491-12.284-.214-6.14.064-14.092 2.066-20.577 2.009-6.504 5.396-10.624 10.943-11.153v-5.972c-5.547-.529-8.934-4.649-10.943-11.153-2.002-6.484-2.28-14.437-2.066-20.577C105.214 5.894 100.233 0 93.5 0H24.508zM80 57.863C80 66.663 73.436 72 62.543 72H44a2 2 0 01-2-2V24a2 2 0 012-2h18.437c9.083 0 15.044 4.92 15.044 12.474 0 5.302-4.01 10.049-9.119 10.88v.277C75.317 46.394 80 51.21 80 57.863zM60.521 28.34H49.948v14.934h8.905c6.884 0 10.68-2.772 10.68-7.727 0-4.643-3.264-7.207-9.012-7.207zM49.948 49.2v16.458H60.91c7.167 0 10.964-2.876 10.964-8.281 0-5.406-3.903-8.178-11.425-8.178H49.948z"></path>
+ </symbol>
+ <symbol id="home" viewBox="0 0 16 16">
+ <path d="M8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4.5a.5.5 0 0 0 .5-.5v-4h2v4a.5.5 0 0 0 .5.5H14a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146zM2.5 14V7.707l5.5-5.5 5.5 5.5V14H10v-4a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v4H2.5z"/>
+ </symbol>
+ <symbol id="speedometer2" viewBox="0 0 16 16">
+ <path d="M8 4a.5.5 0 0 1 .5.5V6a.5.5 0 0 1-1 0V4.5A.5.5 0 0 1 8 4zM3.732 5.732a.5.5 0 0 1 .707 0l.915.914a.5.5 0 1 1-.708.708l-.914-.915a.5.5 0 0 1 0-.707zM2 10a.5.5 0 0 1 .5-.5h1.586a.5.5 0 0 1 0 1H2.5A.5.5 0 0 1 2 10zm9.5 0a.5.5 0 0 1 .5-.5h1.5a.5.5 0 0 1 0 1H12a.5.5 0 0 1-.5-.5zm.754-4.246a.389.389 0 0 0-.527-.02L7.547 9.31a.91.91 0 1 0 1.302 1.258l3.434-4.297a.389.389 0 0 0-.029-.518z"/>
+ <path fill-rule="evenodd"
+ d="M0 10a8 8 0 1 1 15.547 2.661c-.442 1.253-1.845 1.602-2.932 1.25C11.309 13.488 9.475 13 8 13c-1.474 0-3.31.488-4.615.911-1.087.352-2.49.003-2.932-1.25A7.988 7.988 0 0 1 0 10zm8-7a7 7 0 0 0-6.603 9.329c.203.575.923.876 1.68.63C4.397 12.533 6.358 12 8 12s3.604.532 4.923.96c.757.245 1.477-.056 1.68-.631A7 7 0 0 0 8 3z"/>
+ </symbol>
+ <symbol id="table" viewBox="0 0 16 16">
+ <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm15 2h-4v3h4V4zm0 4h-4v3h4V8zm0 4h-4v3h3a1 1 0 0 0 1-1v-2zm-5 3v-3H6v3h4zm-5 0v-3H1v2a1 1 0 0 0 1 1h3zm-4-4h4V8H1v3zm0-4h4V4H1v3zm5-3v3h4V4H6zm4 4H6v3h4V8z"/>
+ </symbol>
+ <symbol id="people-circle" viewBox="0 0 16 16">
+ <path d="M11 6a3 3 0 1 1-6 0 3 3 0 0 1 6 0z"/>
+ <path fill-rule="evenodd"
+ d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8zm8-7a7 7 0 0 0-5.468 11.37C3.242 11.226 4.805 10 8 10s4.757 1.225 5.468 2.37A7 7 0 0 0 8 1z"/>
+ </symbol>
+ <symbol id="grid" viewBox="0 0 16 16">
+ <path d="M1 2.5A1.5 1.5 0 0 1 2.5 1h3A1.5 1.5 0 0 1 7 2.5v3A1.5 1.5 0 0 1 5.5 7h-3A1.5 1.5 0 0 1 1 5.5v-3zM2.5 2a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5h-3zm6.5.5A1.5 1.5 0 0 1 10.5 1h3A1.5 1.5 0 0 1 15 2.5v3A1.5 1.5 0 0 1 13.5 7h-3A1.5 1.5 0 0 1 9 5.5v-3zm1.5-.5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5h-3zM1 10.5A1.5 1.5 0 0 1 2.5 9h3A1.5 1.5 0 0 1 7 10.5v3A1.5 1.5 0 0 1 5.5 15h-3A1.5 1.5 0 0 1 1 13.5v-3zm1.5-.5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5h-3zm6.5.5A1.5 1.5 0 0 1 10.5 9h3a1.5 1.5 0 0 1 1.5 1.5v3a1.5 1.5 0 0 1-1.5 1.5h-3A1.5 1.5 0 0 1 9 13.5v-3zm1.5-.5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5h-3z"/>
+ </symbol>
+ <symbol id="collection" viewBox="0 0 16 16">
+ <path d="M2.5 3.5a.5.5 0 0 1 0-1h11a.5.5 0 0 1 0 1h-11zm2-2a.5.5 0 0 1 0-1h7a.5.5 0 0 1 0 1h-7zM0 13a1.5 1.5 0 0 0 1.5 1.5h13A1.5 1.5 0 0 0 16 13V6a1.5 1.5 0 0 0-1.5-1.5h-13A1.5 1.5 0 0 0 0 6v7zm1.5.5A.5.5 0 0 1 1 13V6a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-13z"/>
+ </symbol>
+ <symbol id="calendar3" viewBox="0 0 16 16">
+ <path d="M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857V3.857z"/>
+ <path d="M6.5 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-9 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-9 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/>
+ </symbol>
+ <symbol id="chat-quote-fill" viewBox="0 0 16 16">
+ <path d="M16 8c0 3.866-3.582 7-8 7a9.06 9.06 0 0 1-2.347-.306c-.584.296-1.925.864-4.181 1.234-.2.032-.352-.176-.273-.362.354-.836.674-1.95.77-2.966C.744 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7zM7.194 6.766a1.688 1.688 0 0 0-.227-.272 1.467 1.467 0 0 0-.469-.324l-.008-.004A1.785 1.785 0 0 0 5.734 6C4.776 6 4 6.746 4 7.667c0 .92.776 1.666 1.734 1.666.343 0 .662-.095.931-.26-.137.389-.39.804-.81 1.22a.405.405 0 0 0 .011.59c.173.16.447.155.614-.01 1.334-1.329 1.37-2.758.941-3.706a2.461 2.461 0 0 0-.227-.4zM11 9.073c-.136.389-.39.804-.81 1.22a.405.405 0 0 0 .012.59c.172.16.446.155.613-.01 1.334-1.329 1.37-2.758.942-3.706a2.466 2.466 0 0 0-.228-.4 1.686 1.686 0 0 0-.227-.273 1.466 1.466 0 0 0-.469-.324l-.008-.004A1.785 1.785 0 0 0 10.07 6c-.957 0-1.734.746-1.734 1.667 0 .92.777 1.666 1.734 1.666.343 0 .662-.095.931-.26z"/>
+ </symbol>
+ <symbol id="cpu-fill" viewBox="0 0 16 16">
+ <path d="M6.5 6a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 0-.5-.5h-3z"/>
+ <path d="M5.5.5a.5.5 0 0 0-1 0V2A2.5 2.5 0 0 0 2 4.5H.5a.5.5 0 0 0 0 1H2v1H.5a.5.5 0 0 0 0 1H2v1H.5a.5.5 0 0 0 0 1H2v1H.5a.5.5 0 0 0 0 1H2A2.5 2.5 0 0 0 4.5 14v1.5a.5.5 0 0 0 1 0V14h1v1.5a.5.5 0 0 0 1 0V14h1v1.5a.5.5 0 0 0 1 0V14h1v1.5a.5.5 0 0 0 1 0V14a2.5 2.5 0 0 0 2.5-2.5h1.5a.5.5 0 0 0 0-1H14v-1h1.5a.5.5 0 0 0 0-1H14v-1h1.5a.5.5 0 0 0 0-1H14v-1h1.5a.5.5 0 0 0 0-1H14A2.5 2.5 0 0 0 11.5 2V.5a.5.5 0 0 0-1 0V2h-1V.5a.5.5 0 0 0-1 0V2h-1V.5a.5.5 0 0 0-1 0V2h-1V.5zm1 4.5h3A1.5 1.5 0 0 1 11 6.5v3A1.5 1.5 0 0 1 9.5 11h-3A1.5 1.5 0 0 1 5 9.5v-3A1.5 1.5 0 0 1 6.5 5z"/>
+ </symbol>
+ <symbol id="gear-fill" viewBox="0 0 16 16">
+ <path d="M9.405 1.05c-.413-1.4-2.397-1.4-2.81 0l-.1.34a1.464 1.464 0 0 1-2.105.872l-.31-.17c-1.283-.698-2.686.705-1.987 1.987l.169.311c.446.82.023 1.841-.872 2.105l-.34.1c-1.4.413-1.4 2.397 0 2.81l.34.1a1.464 1.464 0 0 1 .872 2.105l-.17.31c-.698 1.283.705 2.686 1.987 1.987l.311-.169a1.464 1.464 0 0 1 2.105.872l.1.34c.413 1.4 2.397 1.4 2.81 0l.1-.34a1.464 1.464 0 0 1 2.105-.872l.31.17c1.283.698 2.686-.705 1.987-1.987l-.169-.311a1.464 1.464 0 0 1 .872-2.105l.34-.1c1.4-.413 1.4-2.397 0-2.81l-.34-.1a1.464 1.464 0 0 1-.872-2.105l.17-.31c.698-1.283-.705-2.686-1.987-1.987l-.311.169a1.464 1.464 0 0 1-2.105-.872l-.1-.34zM8 10.93a2.929 2.929 0 1 1 0-5.86 2.929 2.929 0 0 1 0 5.858z"/>
+ </symbol>
+ <symbol id="speedometer" viewBox="0 0 16 16">
+ <path d="M8 2a.5.5 0 0 1 .5.5V4a.5.5 0 0 1-1 0V2.5A.5.5 0 0 1 8 2zM3.732 3.732a.5.5 0 0 1 .707 0l.915.914a.5.5 0 1 1-.708.708l-.914-.915a.5.5 0 0 1 0-.707zM2 8a.5.5 0 0 1 .5-.5h1.586a.5.5 0 0 1 0 1H2.5A.5.5 0 0 1 2 8zm9.5 0a.5.5 0 0 1 .5-.5h1.5a.5.5 0 0 1 0 1H12a.5.5 0 0 1-.5-.5zm.754-4.246a.389.389 0 0 0-.527-.02L7.547 7.31A.91.91 0 1 0 8.85 8.569l3.434-4.297a.389.389 0 0 0-.029-.518z"/>
+ <path fill-rule="evenodd"
+ d="M6.664 15.889A8 8 0 1 1 9.336.11a8 8 0 0 1-2.672 15.78zm-4.665-4.283A11.945 11.945 0 0 1 8 10c2.186 0 4.236.585 6.001 1.606a7 7 0 1 0-12.002 0z"/>
+ </symbol>
+ <symbol id="toggles2" viewBox="0 0 16 16">
+ <path d="M9.465 10H12a2 2 0 1 1 0 4H9.465c.34-.588.535-1.271.535-2 0-.729-.195-1.412-.535-2z"/>
+ <path d="M6 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 1a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm.535-10a3.975 3.975 0 0 1-.409-1H4a1 1 0 0 1 0-2h2.126c.091-.355.23-.69.41-1H4a2 2 0 1 0 0 4h2.535z"/>
+ <path d="M14 4a4 4 0 1 1-8 0 4 4 0 0 1 8 0z"/>
+ </symbol>
+ <symbol id="tools" viewBox="0 0 16 16">
+ <path d="M1 0L0 1l2.2 3.081a1 1 0 0 0 .815.419h.07a1 1 0 0 1 .708.293l2.675 2.675-2.617 2.654A3.003 3.003 0 0 0 0 13a3 3 0 1 0 5.878-.851l2.654-2.617.968.968-.305.914a1 1 0 0 0 .242 1.023l3.356 3.356a1 1 0 0 0 1.414 0l1.586-1.586a1 1 0 0 0 0-1.414l-3.356-3.356a1 1 0 0 0-1.023-.242L10.5 9.5l-.96-.96 2.68-2.643A3.005 3.005 0 0 0 16 3c0-.269-.035-.53-.102-.777l-2.14 2.141L12 4l-.364-1.757L13.777.102a3 3 0 0 0-3.675 3.68L7.462 6.46 4.793 3.793a1 1 0 0 1-.293-.707v-.071a1 1 0 0 0-.419-.814L1 0zm9.646 10.646a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708zM3 11l.471.242.529.026.287.445.445.287.026.529L5 13l-.242.471-.026.529-.445.287-.287.445-.529.026L3 15l-.471-.242L2 14.732l-.287-.445L1.268 14l-.026-.529L1 13l.242-.471.026-.529.445-.287.287-.445.529-.026L3 11z"/>
+ </symbol>
+ <symbol id="chevron-right" viewBox="0 0 16 16">
+ <path fill-rule="evenodd"
+ d="M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z"/>
+ </symbol>
+ <symbol id="geo-fill" viewBox="0 0 16 16">
+ <path fill-rule="evenodd"
+ d="M4 4a4 4 0 1 1 4.5 3.969V13.5a.5.5 0 0 1-1 0V7.97A4 4 0 0 1 4 3.999zm2.493 8.574a.5.5 0 0 1-.411.575c-.712.118-1.28.295-1.655.493a1.319 1.319 0 0 0-.37.265.301.301 0 0 0-.057.09V14l.002.008a.147.147 0 0 0 .016.033.617.617 0 0 0 .145.15c.165.13.435.27.813.395.751.25 1.82.414 3.024.414s2.273-.163 3.024-.414c.378-.126.648-.265.813-.395a.619.619 0 0 0 .146-.15.148.148 0 0 0 .015-.033L12 14v-.004a.301.301 0 0 0-.057-.09 1.318 1.318 0 0 0-.37-.264c-.376-.198-.943-.375-1.655-.493a.5.5 0 1 1 .164-.986c.77.127 1.452.328 1.957.594C12.5 13 13 13.4 13 14c0 .426-.26.752-.544.977-.29.228-.68.413-1.116.558-.878.293-2.059.465-3.34.465-1.281 0-2.462-.172-3.34-.465-.436-.145-.826-.33-1.116-.558C3.26 14.752 3 14.426 3 14c0-.599.5-1 .961-1.243.505-.266 1.187-.467 1.957-.594a.5.5 0 0 1 .575.411z"/>
+ </symbol>
+ </svg>
+
+
+ <div class="container">
+ <div class="row">
+ <div class="px-4 py-5 my-5 text-center">
+
+ <h1 class="display-5 fw-bold">High quality educational resources</h1>
+ <div class="col-lg-6 mx-auto">
+ <p class="lead mb-4">I am very good at making resources for young children and here I am, selling
+ them to you.
+ You will find that these are some of the best educational resoures on the internet.</p>
+ <div class="d-grid gap-2 d-sm-flex justify-content-sm-center">
+ <button type="button" class="btn btn-primary btn-lg px-4 gap-3">Sign up for access</button>
+ <button type="button" class="btn btn-outline-secondary btn-lg px-4">More information</button>
+ </div>
+ </div>
+ </div>
+ </div>
+
+
+ {# Image section#}
+ <div class="container my-5">
+ <div class="row">
+ <div class="col-lg-6 mx-auto">
+ <h2 class="display-5 fw-bold text-center mb-4">Sample Resources</h2>
+ <div class="ratio ratio-16x9 mb-4">
+ <img src="#" class="img-fluid rounded"
+ alt="Sample Resource">
+ </div>
+ <p class="lead text-center">This is a sample of the high-quality educational resources you can
+ access with our membership plans. Our resources are carefully crafted by experienced educators
+ to engage and inspire young learners.</p>
+ </div>
+ </div>
+ </div>
+
+
+ <div class="feature-divider"></div>
+
+ <div class="row">
+
+ <div class="container px-4 py-5" id="hanging-icons">
+ <div class="row g-4 py-5 row-cols-1 row-cols-lg-3">
+ <div class="col d-flex align-items-start">
+ <div class="icon-square bg-light text-dark flex-shrink-0 me-3">
+ <svg class="bi" width="1em" height="1em">
+ <use xlink:href="#toggles2"/>
+ </svg>
+ </div>
+ <div>
+ <h2>First benefit</h2>
+ <p>Some nice descriptive text about the feature here. Sell it and make
+ it really exciting!</p>
+ <a href="#" class="icon-link">
+ Call to action
+ <svg class="bi" width="1em" height="1em">
+ <use xlink:href="#chevron-right"/>
+ </svg>
+ </a>
+ </div>
+ </div>
+ <div class="col d-flex align-items-start">
+ <div class="icon-square bg-light text-dark flex-shrink-0 me-3">
+ <svg class="bi" width="1em" height="1em">
+ <use xlink:href="#cpu-fill"/>
+ </svg>
+ </div>
+ <div>
+ <h2>Featured title</h2>
+ <p>Some nice descriptive text about the feature here. Sell it and make
+ it really exciting!</p>
+ <a href="#" class="icon-link">
+ Call to action
+ <svg class="bi" width="1em" height="1em">
+ <use xlink:href="#chevron-right"/>
+ </svg>
+ </a>
+ </div>
+ </div>
+ <div class="col d-flex align-items-start">
+ <div class="icon-square bg-light text-dark flex-shrink-0 me-3">
+ <svg class="bi" width="1em" height="1em">
+ <use xlink:href="#tools"/>
+ </svg>
+ </div>
+ <div>
+ <h2>Featured title</h2>
+ <p>Some nice descriptive text about the feature here. Sell it and make
+ it really exciting!</p>
+
+ <a href="#" class="icon-link">
+ Call to action
+ <svg class="bi" width="1em" height="1em">
+ <use xlink:href="#chevron-right"/>
+ </svg>
+ </a>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="feature-divider"></div>
+
+ <div class="pricing-header p-3 pb-md-4 mx-auto text-center">
+ <h1 class="display-4 fw-normal">Pricing</h1>
+ <p class="fs-5 text-muted">Quickly build an effective pricing table for your potential customers with this
+ Bootstrap example. It’s built with default Bootstrap components and utilities with little customization.</p>
+ </div>
+
+
+ <div class="row row-cols-1 row-cols-md-3 mb-3 text-center">
+ <div class="col">
+ <div class="card mb-4 rounded-3 shadow-sm">
+ <div class="card-header py-3">
+ <h4 class="my-0 fw-normal">Starter</h4>
+ </div>
+ <div class="card-body">
+ <h1 class="card-title pricing-card-title">£0<small class="text-muted fw-light">/mo</small></h1>
+ <ul class="list-unstyled mt-3 mb-4">
+ <li>20 resources included</li>
+ <li>Something else that is basic</li>
+ <li>Email support</li>
+ <li>Help center access</li>
+ </ul>
+ <button type="button" class="w-100 btn btn-lg btn-outline-primary">Sign up for free</button>
+ </div>
+ </div>
+ </div>
+ <div class="col">
+ <div class="card mb-4 rounded-3 shadow-sm">
+ <div class="card-header py-3">
+ <h4 class="my-0 fw-normal">Learner</h4>
+ </div>
+ <div class="card-body">
+ <h1 class="card-title pricing-card-title">£4.99<small class="text-muted fw-light">/mo</small></h1>
+ <ul class="list-unstyled mt-3 mb-4">
+ <li>100 resources included</li>
+ <li>Something else that is pro</li>
+ <li>Email support</li>
+ <li>Help center access</li>
+ </ul>
+ <button type="button" class="w-100 btn btn-lg btn-primary">Get started</button>
+ </div>
+ </div>
+ </div>
+ <div class="col">
+ <div class="card mb-4 rounded-3 shadow-sm border-primary">
+ <div class="card-header py-3 text-white bg-primary border-primary">
+ <h4 class="my-0 fw-normal">Member</h4>
+ </div>
+ <div class="card-body">
+ <h1 class="card-title pricing-card-title">£8.99<small class="text-muted fw-light">/mo</small></h1>
+ <ul class="list-unstyled mt-3 mb-4">
+ <li>All resources included</li>
+ <li>Something else that is really good</li>
+ <li>Email support</li>
+ <li>Help center access</li>
+ </ul>
+ <button type="button" class="w-100 btn btn-lg btn-primary">Get Started</button>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <h2 class="display-6 text-center mb-4">Compare plans</h2>
+
+ <div class="table-responsive">
+ <table class="table text-center">
+ <thead>
+ <tr>
+ <th style="width: 34%;"></th>
+ <th style="width: 22%;">Starter</th>
+ <th style="width: 22%;">Learner</th>
+ <th style="width: 22%;">Member</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row" class="text-start">Public</th>
+ <td>
+ <svg class="bi" width="24" height="24">
+ <use xlink:href="#check"/>
+ </svg>
+ </td>
+ <td>
+ <svg class="bi" width="24" height="24">
+ <use xlink:href="#check"/>
+ </svg>
+ </td>
+ <td>
+ <svg class="bi" width="24" height="24">
+ <use xlink:href="#check"/>
+ </svg>
+ </td>
+ </tr>
+ <tr>
+ <th scope="row" class="text-start">Private</th>
+ <td></td>
+ <td>
+ <svg class="bi" width="24" height="24">
+ <use xlink:href="#check"/>
+ </svg>
+ </td>
+ <td>
+ <svg class="bi" width="24" height="24">
+ <use xlink:href="#check"/>
+ </svg>
+ </td>
+ </tr>
+ </tbody>
+
+ <tbody>
+ <tr>
+ <th scope="row" class="text-start">Permissions</th>
+ <td>
+ <svg class="bi" width="24" height="24">
+ <use xlink:href="#check"/>
+ </svg>
+ </td>
+ <td>
+ <svg class="bi" width="24" height="24">
+ <use xlink:href="#check"/>
+ </svg>
+ </td>
+ <td>
+ <svg class="bi" width="24" height="24">
+ <use xlink:href="#check"/>
+ </svg>
+ </td>
+ </tr>
+ <tr>
+ <th scope="row" class="text-start">Sharing</th>
+ <td></td>
+ <td>
+ <svg class="bi" width="24" height="24">
+ <use xlink:href="#check"/>
+ </svg>
+ </td>
+ <td>
+ <svg class="bi" width="24" height="24">
+ <use xlink:href="#check"/>
+ </svg>
+ </td>
+ </tr>
+ <tr>
+ <th scope="row" class="text-start">Unlimited members</th>
+ <td></td>
+ <td>
+ <svg class="bi" width="24" height="24">
+ <use xlink:href="#check"/>
+ </svg>
+ </td>
+ <td>
+ <svg class="bi" width="24" height="24">
+ <use xlink:href="#check"/>
+ </svg>
+ </td>
+ </tr>
+ <tr>
+ <th scope="row" class="text-start">Extra security</th>
+ <td></td>
+ <td></td>
+ <td>
+ <svg class="bi" width="24" height="24">
+ <use xlink:href="#check"/>
+ </svg>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+
+
+{% endblock content %}
diff --git a/alphabetlearning/templates/payments/cancel.html b/alphabetlearning/templates/payments/cancel.html
new file mode 100644
index 0000000..efe0fd3
--- /dev/null
+++ b/alphabetlearning/templates/payments/cancel.html
@@ -0,0 +1,10 @@
+{% extends "base.html" %}
+
+{% block content %}
+ <div class="container my-5">
+ <div class="row">
+ <h2>Transaction Cancelled</h2>
+ <p>Your transaction was cancelled.</p>
+ </div>
+ </div>
+{% endblock content %} \ No newline at end of file
diff --git a/alphabetlearning/templates/payments/cart_detail.html b/alphabetlearning/templates/payments/cart_detail.html
new file mode 100644
index 0000000..8c6c01b
--- /dev/null
+++ b/alphabetlearning/templates/payments/cart_detail.html
@@ -0,0 +1,32 @@
+{% extends "base.html" %}
+{% load static %}
+
+{% block content %}
+<div class="container my-5">
+ <h1 class="mb-4">My basket</h1>
+ <p class="text-body-secondary">{% lorem %}</p>
+ {% if cart %}
+ <div class="row">
+ <div class="col-8 my-5 bg-secondary-subtle border border-1 rounded border-dark">
+ <div class="my-4 bg-white rounded">
+
+ <div>
+ {% for item in cart.items.all %}
+ <div class="my-3">
+ {% include "payments/cart_lineitem.html" with item=item %}
+ </div>
+ {% endfor %}
+ </div>
+ </div>
+ </div>
+
+ <div class="col-4 my-5">
+ {% include "payments/cart_sidepanel.html" with cart=cart %}
+ </div>
+
+ </div>
+ {% else %}
+ <p>Your cart is empty.</p>
+ {% endif %}
+</div>
+{% endblock %}
diff --git a/alphabetlearning/templates/payments/cart_lineitem.html b/alphabetlearning/templates/payments/cart_lineitem.html
new file mode 100644
index 0000000..0ef8a97
--- /dev/null
+++ b/alphabetlearning/templates/payments/cart_lineitem.html
@@ -0,0 +1,17 @@
+<div class="container my-2">
+ <div class="col">
+ <div class="p-2 border border-1 border-success">
+ {{ item.resource.name }}
+ </div>
+ <div class="p-2 border border-1 border-success">
+ {{ item.resource.card_description }}
+ </div>
+ <div class="d-flex flex-row border border-2 border-danger p-1">
+ {% for tn_url in item.resource.thumbnail_urls %}
+ <div class="flex-shrink border border-2 border-alert p-1">
+ <img class="img-fluid rounded" src="{{ tn_url }}" alt="unknown"/>
+ </div>
+ {% endfor %}
+ </div>
+ </div>
+</div>
diff --git a/alphabetlearning/templates/payments/cart_sidepanel.html b/alphabetlearning/templates/payments/cart_sidepanel.html
new file mode 100644
index 0000000..7742c9a
--- /dev/null
+++ b/alphabetlearning/templates/payments/cart_sidepanel.html
@@ -0,0 +1,28 @@
+<div class="p-2 border border-2 rounded rounded-2 border-light-subtle">
+ <div class="p-1 d-flex justify-content-between">
+ <div>
+ <strong>Subtotal:</strong>
+ </div>
+ <div>
+ &#163;{{ cart_total }} 10.24
+ </div>
+ </div>
+ <div class="p-1 d-flex justify-content-between">
+ <div>
+ <strong>Shipping and handling:</strong>
+ </div>
+ <div>
+ <p class="text-end">There is nothing to say here</p>
+ </div>
+ </div>
+ <hr>
+ <div class="my-1">
+ <p class="p-1 text-secondary">After payment, links to your download will be generated.
+ <a class="p-1 text-sm" href="#">Help</a>
+ </p>
+
+ </div>
+ <div class="d-grid gap-2 mx-auto col-11">
+ <button class="btn btn-primary btn-lg">Checkout now</button>
+ </div>
+</div>
diff --git a/alphabetlearning/templates/payments/landingpage.html b/alphabetlearning/templates/payments/landingpage.html
new file mode 100644
index 0000000..9897301
--- /dev/null
+++ b/alphabetlearning/templates/payments/landingpage.html
@@ -0,0 +1,29 @@
+{% extends "base.html" %}
+{% block content %}
+ <div class="container my-5">
+ <div class="row">
+ <h2>Welcome to PyBlackbird - Buy this</h2>
+
+ <section>
+ <div class="product">
+ <div class="description">
+ <h3>{{ product.name }}</h3>
+ <hr/>
+ {% for price in prices %}
+
+ <div>
+ <h5>${{ price.get_display_price }}</h5>
+ <form action="{% url 'payments:create-checkout-session' price.id %}" method="POST">
+ {% csrf_token %}
+ <button type="submit" class="btn btn-primary">Checkout</button>
+ </form>
+ </div>
+
+ {% endfor %}
+ </div>
+ </div>
+ </section>
+
+
+ </div>
+{% endblock content %} \ No newline at end of file
diff --git a/alphabetlearning/templates/payments/success.html b/alphabetlearning/templates/payments/success.html
new file mode 100644
index 0000000..c1fb089
--- /dev/null
+++ b/alphabetlearning/templates/payments/success.html
@@ -0,0 +1,11 @@
+{% extends "base.html" %}
+
+{% load static %}
+
+{% block content %}
+ <div class="container my-5">
+ <div class="row">
+ <h2>Thanks for your order!</h2>
+ <p>You have successfully transacted.</p>
+ </div>
+{% endblock content %} \ No newline at end of file
diff --git a/alphabetlearning/templates/resources/admin_bar.html b/alphabetlearning/templates/resources/admin_bar.html
new file mode 100644
index 0000000..ddb8e00
--- /dev/null
+++ b/alphabetlearning/templates/resources/admin_bar.html
@@ -0,0 +1,21 @@
+ {# admin block #}
+ {% if request.user.is_authenticated and request.user.is_staff %}
+ <div class="row p-4 rounded border border-danger border-opacity-50 border-3">
+ <h5 class="bg-primary text-white px-2 py-1 rounded">Admin bar</h5>
+ <p>
+ Only you will see this bar - normal users will not see it. It allows us to
+ include buttons for adding new resources, etc.
+ </p>
+ <div class="col d-flex flex-column flex-md-row justify-content-between align-items-md-center">
+ <a class="btn btn-primary my-2" href="{% url 'resources:create_resource' %}">Add a new resource</a>
+ <div class="bg-danger p-2 my-2 text-dark bg-white border border-1 border-danger">
+ Logged in as
+ <strong>{{ request.user.email }}</strong>
+ </div>
+ <form action="{% url 'account_logout' %}" method="post" class="my-2">
+ {% csrf_token %}
+ <button type="submit" class="btn btn-primary">Log out</button>
+ </form>
+ </div>
+ </div>
+ {% endif %}
diff --git a/alphabetlearning/templates/resources/create_featured_resource.html b/alphabetlearning/templates/resources/create_featured_resource.html
new file mode 100644
index 0000000..19022fc
--- /dev/null
+++ b/alphabetlearning/templates/resources/create_featured_resource.html
@@ -0,0 +1,26 @@
+{% extends "base.html" %}
+
+{% load static %}
+
+{% block title %}
+ Add featured resource
+{% endblock title %}
+{% block content %}
+ {% if messages %}
+ <ul class="messages">
+ {% for message in messages %}
+ <li {% if message.tags %}class="{{ message.tags }}"{% endif %}>{{ message }}</li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+ {% if request.user.is_authenticated and request.user.is_staff %}
+ <div class="row d-flex justify-content-center">
+ <div class="col bg-light mt-lg-4 p-4 border border-success border-opacity-25 rounded">
+ <h2>Configure featured resources</h2>
+ <p>You can select three resources to be "featured" on the main page</p>
+ </div>
+ </div>
+ {% else %}
+ <p>You must be a super-user to access this page.</p>
+ {% endif %}
+{% endblock content %}
diff --git a/alphabetlearning/templates/resources/hx_download_button.html b/alphabetlearning/templates/resources/hx_download_button.html
new file mode 100644
index 0000000..1c956a5
--- /dev/null
+++ b/alphabetlearning/templates/resources/hx_download_button.html
@@ -0,0 +1,3 @@
+<p>
+ <a href="{{ pdf_url }}">Download the resource</a>
+</p>
diff --git a/alphabetlearning/templates/resources/resource_card_featured.html b/alphabetlearning/templates/resources/resource_card_featured.html
new file mode 100644
index 0000000..8a92729
--- /dev/null
+++ b/alphabetlearning/templates/resources/resource_card_featured.html
@@ -0,0 +1,49 @@
+{% load static %}
+{% load markdown_extras %}
+
+<div class="card mx-2 mt-2 my-card-shadow-sm" style="border-color: {{ resource.main_resource_category_colour_css_class }}; border-width: 1px;" onmouseover="this.classList.add('my-card-shadow-lg')" onmouseout="this.classList.remove('my-card-shadow-lg')">
+ <img class="card-img-top"
+ src="{{ resource.thumbnail_urls|first }}"
+ alt="{{ resource.thumbnail_filename }}">
+ <div class="card-body">
+ <div class="d-flex flex-row justify-content-start align-content-center">
+ <h5 class="card-title"><a
+ href="{% url 'resources:resource_detail' resource_id=resource.id %}">{{ resource.name }}</a></h5>
+ </div>
+ <div class="d-flex flex-row justify-content-start align-items-center mt-2">
+ <span class="badge bg-secondary me-2">{{ resource.age_range }}</span>
+ {% if resource.main_resource_category_name == "English as a Foreign Language (EFL)" %}
+ <span class="badge me-2"
+ style="background-color: {{ resource.main_resource_category_colour_css_class }}; color: {{ resource.main_resource_badge_foreground_colour }}">EFL</span>
+ {% else %}
+ <span class="badge me-2"
+ style="background-color: {{ resource.main_resource_category_colour_css_class }}; color: {{ resource.main_resource_badge_foreground_colour }}">{{ resource.main_resource_category_name }}</span>
+ {% endif %}
+ {% if request.user.is_authenticated and request.user.is_staff %}
+ <span class="badge bg-info me-2">Feature slot: {{ resource.feature_slot }}</span>
+ {% endif %}
+ </div>
+ {% if resource.card_description %}
+ <div class="text-body-secondary my-2">
+ <p>{{ resource.card_description | markdown | safe }}</p>
+ </div>
+ {% else %}
+ <p class="card-text my-2">{{ resource.description | markdown | safe }}</p>
+ {% endif %}
+ <div class="d-flex flex-row justify-content-between align-items-end mt-2">
+ <p class="card-text m-1"><small class="text-muted">1 credit</small></p>
+ <button type="button" class="btn btn-success fs-6 px-2 py-0">Add to basket</button>
+ </div>
+ </div>
+
+ {% if request.user.is_authenticated and request.user.is_staff %}
+ <div class="card-footer">
+ <a href="{% url 'resources:resource_update_metadata' resource.id %}"
+ class="btn btn-outline-primary btn-sm">Edit</a>
+ <a href="{% url 'resources:resource_update_thumbnails' resource.id %}"
+ class="btn btn-outline-primary btn-sm">Edit Feature Images</a>
+ <a href="{% url 'resources:resource_update_pdfs' resource.id %}"
+ class="btn btn-outline-primary btn-sm">Add PDFs</a>
+ </div>
+ {% endif %}
+</div>
diff --git a/alphabetlearning/templates/resources/resource_card_standard.html b/alphabetlearning/templates/resources/resource_card_standard.html
new file mode 100644
index 0000000..f8a557b
--- /dev/null
+++ b/alphabetlearning/templates/resources/resource_card_standard.html
@@ -0,0 +1,56 @@
+{% load static %}
+{% load markdown_extras %}
+
+<!-- Card 1 -->
+
+<div class="card mx-2 mt-2 my-card-shadow-sm"
+ style="border-color: {{ resource.main_resource_category_colour_css_class }}; border-width: 1px;"
+ onmouseover="this.classList.add('my-card-shadow-lg')" onmouseout="this.classList.remove('my-card-shadow-lg')">
+ <div class="row g-0">
+ <div class="col-4">
+ <img class="img-fluid rounded-start"
+ src="{{ resource.thumbnail_urls|first }}"
+ alt="{{ resource.thumbnail_filename }}">
+ </div>
+ <div class="col-8">
+ <div class="card-body">
+ <div class="d-flex flex-row justify-content-start align-items-center">
+ <h5 class="card-title"><a
+ href="{% url 'resources:resource_detail' resource_id=resource.id %}">{{ resource.name }}</a>
+ </h5>
+ </div>
+ <div class="d-flex flex-row justify-content-start align-items-center mt-2">
+ <span class="badge bg-secondary me-2">{{ resource.age_range }}</span>
+ {% if resource.main_resource_category_name == "English as a Foreign Language (EFL)" %}
+ <span class="badge me-2"
+ style="background-color: {{ resource.main_resource_category_colour_css_class }}; color: {{ resource.main_resource_badge_foreground_colour }}">EFL</span>
+ {% else %}
+ <span class="badge me-2"
+ style="background-color: {{ resource.main_resource_category_colour_css_class }}; color: {{ resource.main_resource_badge_foreground_colour }}">{{ resource.main_resource_category_name }}</span>
+ {% endif %}
+ {% if request.user.is_authenticated and request.user.is_staff %}
+ <span class="badge bg-info me-2">Feature slot: {{ resource.feature_slot }}</span>
+ {% endif %}
+ </div>
+ <div class="text-body-secondary my-2">
+ <p>{{ resource.card_description }}</p>
+ </div>
+ <div class="d-flex flex-row justify-content-between align-items-end mt-2">
+ <p class="card-text m-1"><small class="text-muted">1 credit</small></p>
+ <button type="button" class="btn btn-success fs-6 px-2 py-0">Add to basket</button>
+ </div>
+ </div>
+ </div>
+ {% if request.user.is_authenticated and request.user.is_staff %}
+ <div class="card-footer">
+ <a href="{% url 'resources:resource_update_metadata' resource.id %}"
+ class="btn btn-outline-primary btn-sm">Edit</a>
+ <a href="{% url 'resources:resource_update_thumbnails' resource.id %}"
+ class="btn btn-outline-primary btn-sm">Edit Feature Images</a>
+ <a href="{% url 'resources:resource_update_pdfs' resource.id %}"
+ class="btn btn-outline-primary btn-sm">Add PDFs</a>
+ </div>
+ {% endif %}
+ </div>
+
+</div>
diff --git a/alphabetlearning/templates/resources/resource_create.html b/alphabetlearning/templates/resources/resource_create.html
new file mode 100644
index 0000000..d428e46
--- /dev/null
+++ b/alphabetlearning/templates/resources/resource_create.html
@@ -0,0 +1,22 @@
+{% extends "base.html" %}
+
+{% load static %}
+{% load crispy_forms_tags %}
+
+{# {% block extra_css %}#}
+{# <link rel="stylesheet" href="{% static 'css/forms.css' %}">#}
+{# {% endblock %}#}
+{% block content %}
+ <div class="row d-flex justify-content-center">
+ <div class="col bg-light mt-lg-4 p-4 border border-success border-opacity-25 rounded">
+ <h2>Upload a new resource</h2>
+ <p>{% lorem %}</p>
+ <form action="{% url 'resources:create_resource' %}"
+ method="post"
+ enctype="multipart/form-data">
+ {% csrf_token %}
+ {% crispy form form.helper %}
+ </form>
+ </div>
+ </div>
+{% endblock content %}
diff --git a/alphabetlearning/templates/resources/resource_detail.html b/alphabetlearning/templates/resources/resource_detail.html
new file mode 100644
index 0000000..6c6ceda
--- /dev/null
+++ b/alphabetlearning/templates/resources/resource_detail.html
@@ -0,0 +1,82 @@
+{% extends 'base.html' %}
+
+{% load markdown_extras %}
+
+{% block content %}
+
+<div class="row my-4">
+ <div class="col-md-7">
+ {% for tn_url, tn_filename in resource.thumbnails %}
+ <div>
+ <img class="img-fluid rounded mx-1" src="{{ tn_url }}" alt="{{ tn_filename }}"/>
+ </div>
+ {% endfor %}
+ </div>
+ <div class="col-md-5">
+ <div class="row">
+ <div class="col">
+ <p class="my-1 fw-bold fs-3">{{ resource.name }}</p>
+ </div>
+ </div>
+ <div class="d-flex justify-content-between align-items-center">
+ <div>
+ <p class="boo-magenta my-1 fw-semibold fs-5">{{ resource.main_resource_category }}</p>
+ </div>
+ <div>
+ <p class="text-secondary my-1 fw-semibold fs-5">{{ resource.age_range }}</p>
+ </div>
+ </div>
+
+ <div class="col">
+ {% if resource.pdf_filenames|length > 1 %}
+ <p class="text-secondary my-1">Contains {{ resource.pdf_filenames|length }} PDF files.</p>
+ {% else %}
+ <p class="text-secondary my-1">Contains {{ resource.pdf_filenames|length }} PDF file.</p>
+ {% endif %}
+ </div>
+ <div class="col">
+ <p class="fs-3 fw-semibold">£1.50 (or 1 credit)</p>
+ </div>
+
+ <hr>
+
+ <div class="row">
+ <div class="col">
+ <p class="my-1 fw-semibold fs-5">Product summary</p>
+ <p>{{resource.card_description}}</p>
+ </div>
+ </div>
+ <div class="row align-items-end">
+ <div class="my-4 d-flex justify-content-center">
+ <form action="{% url 'payments:add_to_cart' resource.id %}" method="get" accept-charset="utf-8">
+ <button class="btn btn-primary w-100">
+ Add to cart
+ </button>
+ </form>
+ </div>
+ </div>
+ </div>
+</div>
+
+<!-- Here be the carousel stuff -->
+<!-- except we are doing away with the carousel in this design -->
+<div class="d-flex justify-content-start">
+ {% for snapshot_filename, snapshot_urls in resource.snapshot_urls.items %}
+ {% for snapshot_url in snapshot_urls %}
+ <div>
+ <img src="{{ snapshot_url }}" class="d-block mx-auto img-thumbnail rounded" alt="{{ snapshot_name }}">
+ </div>
+ {% endfor %}
+ {% endfor %}
+</div>
+
+<!-- detailed description row -->
+<div class="row py-4">
+ <div class="col-12">
+ <h4>Product detail</h4>
+ {{ resource.description | markdown | safe }}
+ </div>
+</div>
+
+{% endblock content %}
+
diff --git a/alphabetlearning/templates/resources/resource_list.html b/alphabetlearning/templates/resources/resource_list.html
new file mode 100644
index 0000000..fdd0394
--- /dev/null
+++ b/alphabetlearning/templates/resources/resource_list.html
@@ -0,0 +1,110 @@
+{% extends "base.html" %}
+{% load static %}
+{% load markdown_extras %}
+{% block title %}
+ Alphabet Learning - Resource List
+{% endblock title %}
+{% block content %}
+
+ <div class="row my-4">
+ {% include "resources/admin_bar.html" %}
+ </div>
+
+ {# featured resources #}
+ {% if featured_resources %}
+ <div class="row my-4 text-center">
+ <h5 class="display-6">Featured resources</h5>
+ </div>
+
+ <div class="row">
+ {% for featured_resource in featured_resources %}
+ {% if featured_resources|length == 1 %}
+ <div class="col-lg-12 col-md-12 col-sm-12 mb-4 resource-card">
+ {% elif featured_resources|length == 2 %}
+ <div class="col-lg-6 col-md-6 col-sm-12 mb-4 resource-card">
+ {% elif featured_resources|length == 3 %}
+ <div class="col-lg-4 col-md-6 col-sm-12 mb-4 resource-card">
+ {% endif %}
+ {% include "resources/resource_card_featured.html" with resource=featured_resource %}
+ </div>
+ {% endfor %}
+ </div>
+ {% else %}
+ <p>There are no featured resources</p>
+ {% endif %}
+
+ {# standard resources #}
+ <div class="row my-4 text-center">
+ <div class="col">
+ <h5 class="display-6 text-display-secondary">Standard resources</h5>
+ </div>
+ </div>
+
+ <!-- Tabbed navigation bar for filtering -->
+ <ul class="nav nav-tabs mb-4" id="resourceTabs" role="tablist">
+ <li class="nav-item">
+ <a class="nav-link {% if selected_category == 'all' %}active{% endif %}" href="?category=all">All</a>
+ </li>
+ {% for category in categories %}
+ <li class="nav-item">
+ <a class="nav-link {% if selected_category == category.name %}active{% endif %}"
+ href="?category={{ category.name }}">{{ category.name|title }}</a>
+ </li>
+ {% endfor %}
+ </ul>
+
+
+ <div class="row">
+ {% for resource in page_obj.object_list %}
+ <div class="col-md-6 mb-4" data-type="{{ resource.main_resource_category_name }}">
+ {% include "resources/resource_card_standard.html" with resource=resource %}
+ </div>
+ {% endfor %}
+ </div>
+
+ {# Pagination #}
+ {% if page_obj.has_other_pages %}
+ <div class="row my-4">
+ <div class="col">
+ <nav aria-label="Page navigation">
+ <ul class="pagination justify-content-center">
+ {% if page_obj.has_previous %}
+ <li class="page-item">
+ <a class="page-link" href="?page=
+ {{ page_obj.previous_page_number }}{% if selected_category != 'all' %}&category={{ selected_category }}{% endif %}">Previous</a>
+ </li>
+ {% else %}
+ <li class="page-item disabled">
+ <span class="page-link">Previous</span>
+ </li>
+ {% endif %}
+
+ {% for page_num in page_obj.paginator.page_range %}
+ {% if page_obj.number == page_num %}
+ <li class="page-item active">
+ <span class="page-link">{{ page_num }}</span>
+ </li>
+ {% else %}
+ <li class="page-item">
+ <a class="page-link" href="?page=
+ {{ page_num }}{% if selected_category != 'all' %}&category={{ selected_category }}{% endif %}">{{ page_num }}</a>
+ </li>
+ {% endif %}
+ {% endfor %}
+
+ {% if page_obj.has_next %}
+ <li class="page-item">
+ <a class="page-link" href="?page=
+ {{ page_obj.next_page_number }}{% if selected_category != 'all' %}&category={{ selected_category }}{% endif %}">Next</a>
+ </li>
+ {% else %}
+ <li class="page-item disabled">
+ <span class="page-link">Next</span>
+ </li>
+ {% endif %}
+ </ul>
+ </nav>
+ </div>
+ </div>
+ {% endif %}
+{% endblock content %}
diff --git a/alphabetlearning/templates/resources/resource_metadata_update.html b/alphabetlearning/templates/resources/resource_metadata_update.html
new file mode 100644
index 0000000..2c6daa1
--- /dev/null
+++ b/alphabetlearning/templates/resources/resource_metadata_update.html
@@ -0,0 +1,25 @@
+{% extends "base.html" %}
+
+{% load static %}
+{% load crispy_forms_tags %}
+
+{% block title %}
+ Joanna Lemon Learning - Update Resource
+{% endblock title %}
+{# {% block extra_css %}#}
+{# <link rel="stylesheet" href="{% static 'css/forms.css' %}">#}
+{# {% endblock %}#}
+{% block content %}
+ <div class="row d-flex justify-content-center">
+ <div class="col bg-light mt-lg-4 p-4 border border-success border-opacity-25 rounded">
+ <h2>Update this resource</h2>
+ <p>{% lorem %}</p>
+ <form action="{% url 'resources:resource_update_metadata' resource.id %}"
+ method="post">
+ {% csrf_token %}
+ {% crispy form form.helper %}
+ {# now for the submit button #}
+ </form>
+ </div>
+ </div>
+{% endblock content %}
diff --git a/alphabetlearning/templates/resources/update_pdfs.html b/alphabetlearning/templates/resources/update_pdfs.html
new file mode 100644
index 0000000..b490b4f
--- /dev/null
+++ b/alphabetlearning/templates/resources/update_pdfs.html
@@ -0,0 +1,27 @@
+{% extends "base.html" %}
+{% load static %}
+{% load crispy_forms_tags %}
+
+{% block content %}
+ <div class="row d-flex justify-content-center">
+ <div class="col bg-light mt-lg-4 p-4 border border-success border-opacity-25 rounded">
+ <h1>Update PDFs for <strong>{{ resource.name }}</strong> resource</h1>
+
+ <p>The current PDFs for this resource are:</p>
+
+ <ul>
+ {% for pdf in resource.get_pdf_file_names %}
+ <li><em>{{ pdf }}</em></li>
+ {% endfor %}
+ </ul>
+
+ <form action="{% url "resources:resource_update_pdfs" resource.id %}"
+ method="post" enctype="multipart/form-data">
+ {% csrf_token %}
+ {% crispy form form.helper %}
+ </form>
+ </div>
+ </div>
+
+
+{% endblock %}
diff --git a/alphabetlearning/templates/resources/update_thumbnails.html b/alphabetlearning/templates/resources/update_thumbnails.html
new file mode 100644
index 0000000..e473a00
--- /dev/null
+++ b/alphabetlearning/templates/resources/update_thumbnails.html
@@ -0,0 +1,29 @@
+{% extends "base.html" %}
+{% load static %}
+{% load crispy_forms_tags %}
+
+{% block content %}
+ <div class="row d-flex justify-content-center">
+ <div class="col bg-light mt-lg-4 p-4 border border-success border-opacity-25 rounded">
+ <h1>Update feature images for <strong>{{ resource.name }}</strong> resource</h1>
+
+ <p>The current thumbnails for this resource are:</p>
+
+ <ul>
+ {% for t in resource.thumbnail_filenames %}
+ <li><em>{{ t }}</em></li>
+ {% endfor %}
+ </ul>
+
+ <form action="{% url "resources:resource_update_thumbnails" resource.id %}"
+ method="post" enctype="multipart/form-data">
+ {% csrf_token %}
+ {% crispy form form.helper %}
+ </form>
+
+ <button class="btn btn-danger" onclick="location.href='{{ resource.get_absolute_url }}';">Cancel</button>
+ </div>
+ </div>
+
+
+{% endblock %}
diff --git a/alphabetlearning/templates/users/user_detail.html b/alphabetlearning/templates/users/user_detail.html
new file mode 100644
index 0000000..7d52259
--- /dev/null
+++ b/alphabetlearning/templates/users/user_detail.html
@@ -0,0 +1,31 @@
+{% extends "base.html" %}
+
+{% load static %}
+
+{% block title %}
+ User:
+ {{ object.name }}
+{% endblock title %}
+{% block content %}
+ <div class="container">
+ <div class="row">
+ <div class="col-sm-12">
+ <h2>{{ object.name }}</h2>
+ </div>
+ </div>
+ {% if object == request.user %}
+ <!-- Action buttons -->
+ <div class="row">
+ <div class="col-sm-12">
+ <a class="btn btn-primary" href="{% url 'users:update' %}" role="button">My Info</a>
+ <a class="btn btn-primary"
+ href="{% url 'account_email' %}"
+ role="button">E-Mail</a>
+ <a class="btn btn-primary" href="{% url 'mfa_index' %}" role="button">MFA</a>
+ <!-- Your Stuff: Custom user template urls -->
+ </div>
+ </div>
+ <!-- End Action buttons -->
+ {% endif %}
+ </div>
+{% endblock content %}
diff --git a/alphabetlearning/templates/users/user_form.html b/alphabetlearning/templates/users/user_form.html
new file mode 100644
index 0000000..a53b304
--- /dev/null
+++ b/alphabetlearning/templates/users/user_form.html
@@ -0,0 +1,21 @@
+{% extends "base.html" %}
+
+{% load crispy_forms_tags %}
+
+{% block title %}
+ {{ user.name }}
+{% endblock title %}
+{% block content %}
+ <h1>{{ user.name }}</h1>
+ <form class="form-horizontal"
+ method="post"
+ action="{% url 'users:update' %}">
+ {% csrf_token %}
+ {{ form|crispy }}
+ <div class="control-group">
+ <div class="controls">
+ <button type="submit" class="btn btn-primary">Update</button>
+ </div>
+ </div>
+ </form>
+{% endblock content %}