diff options
Diffstat (limited to 'alphabetlearning/templates')
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">© 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> + £{{ 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 %} |