Finished common section of app
This commit is contained in:
		
							
								
								
									
										78
									
								
								ref-test/app/templates/components/base.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								ref-test/app/templates/components/base.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,78 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
        <meta charset="utf8" />
 | 
			
		||||
        <meta name="viewport" content="width=device-width, initial-scale=1" />
 | 
			
		||||
        <link
 | 
			
		||||
            href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"
 | 
			
		||||
            rel="stylesheet"
 | 
			
		||||
            integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC"
 | 
			
		||||
            crossorigin="anonymous">
 | 
			
		||||
        <link
 | 
			
		||||
            rel="stylesheet"
 | 
			
		||||
            href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.7.1/font/bootstrap-icons.css">
 | 
			
		||||
        <link 
 | 
			
		||||
            rel="stylesheet"
 | 
			
		||||
            href="{{ url_for('.static', filename='css/style.css') }}"
 | 
			
		||||
        />
 | 
			
		||||
        {% block style %}
 | 
			
		||||
        {% endblock %}
 | 
			
		||||
        <title>{% block title %} SKA Referee Test Beta {% endblock %}</title>
 | 
			
		||||
        {% include "components/og-meta.html" %}
 | 
			
		||||
    </head>
 | 
			
		||||
    <body class="bg-light">
 | 
			
		||||
 | 
			
		||||
        {% block navbar %}
 | 
			
		||||
            {% include "components/navbar.html" %}
 | 
			
		||||
        {% endblock %}
 | 
			
		||||
        
 | 
			
		||||
        <div class="container quiz-container">
 | 
			
		||||
            {% block top_alerts %}
 | 
			
		||||
                {% include "components/server-alerts.html" %}
 | 
			
		||||
            {% endblock %}
 | 
			
		||||
            {% block content %}{% endblock %}
 | 
			
		||||
 | 
			
		||||
            <footer class="container site-footer">
 | 
			
		||||
                {% include "components/footer.html" %}
 | 
			
		||||
            </footer>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <!-- JQuery, Popper, and Bootstrap js dependencies -->
 | 
			
		||||
        <script
 | 
			
		||||
            src="https://code.jquery.com/jquery-3.6.0.min.js"
 | 
			
		||||
            integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4="
 | 
			
		||||
            crossorigin="anonymous">
 | 
			
		||||
        </script>
 | 
			
		||||
        <script>
 | 
			
		||||
            window.jQuery || document.write(`<script src="{{ url_for('.static', filename='js/jquery-3.6.0.min.js') }}"><\/script>`)
 | 
			
		||||
        </script>
 | 
			
		||||
        <script
 | 
			
		||||
            src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.10.2/dist/umd/popper.min.js"
 | 
			
		||||
            integrity="sha384-7+zCNj/IqJ95wo16oMtfsKbZ9ccEh31eOz1HGyDuCQ6wgnyJNSYdrPa03rtR1zdB"
 | 
			
		||||
            crossorigin="anonymous">
 | 
			
		||||
        </script>
 | 
			
		||||
        <script
 | 
			
		||||
            src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.min.js"
 | 
			
		||||
            integrity="sha384-QJHtvGhmr9XOIpI6YVutG+2QOK9T+ZnN4kzFN1RtK3zEFEIsxhlmWl5/YESvpZ13"
 | 
			
		||||
            crossorigin="anonymous"
 | 
			
		||||
        ></script>
 | 
			
		||||
        <!-- Custom js -->
 | 
			
		||||
        <script type="text/javascript">
 | 
			
		||||
            var csrf_token = "{{ csrf_token() }}";
 | 
			
		||||
        
 | 
			
		||||
            $.ajaxSetup({
 | 
			
		||||
                beforeSend: function(xhr, settings) {
 | 
			
		||||
                    if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) {
 | 
			
		||||
                        xhr.setRequestHeader("X-CSRFToken", csrf_token);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        </script>
 | 
			
		||||
        <script
 | 
			
		||||
            type="text/javascript"
 | 
			
		||||
            src="{{ url_for('.static', filename='js/script.js') }}"
 | 
			
		||||
        ></script>
 | 
			
		||||
        {% block script %}
 | 
			
		||||
        {% endblock %}
 | 
			
		||||
    </body>
 | 
			
		||||
</html>
 | 
			
		||||
							
								
								
									
										3
									
								
								ref-test/app/templates/components/footer.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								ref-test/app/templates/components/footer.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
<p>This web app was developed by Vivek Santayana. The source code for the web app, excluding any data pertaining to the questions in the quiz, is freely available at <a href="https://git.vsnt.uk/viveksantayana/ska-referee-test">Vivek’s personal GIT repository</a> under an MIT License.</p>
 | 
			
		||||
<p>All questions in the test are © The Scottish Korfball Association {{ now.year }}. All rights are reserved.</p>
 | 
			
		||||
<p>OpenDyslexic 3 is an open source typeface created by Abbie Gonzalez, licensed under a <a href="https://scripts.sil.org/OFL">SIL-OFL</a>. More information about OpenDyslexic is available <a href="https://opendyslexic.org/">on the project web site</a>.</p>
 | 
			
		||||
							
								
								
									
										14
									
								
								ref-test/app/templates/components/navbar.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								ref-test/app/templates/components/navbar.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
<nav class="navbar fixed-top navbar-expand-md navbar-dark bg-dark" id="primary-nav">
 | 
			
		||||
    <div class="container">
 | 
			
		||||
        <p class="navbar-brand mb-0 h1">SKA Refereeing Test (Beta)</p>
 | 
			
		||||
        <div class="quiz-console w-100" style="display: none;" id="q-topbar">
 | 
			
		||||
            <div class="d-flex justify-content align-middle">
 | 
			
		||||
                <div class="container d-flex justify-content-center">
 | 
			
		||||
                    <span class="text-light q-timer" id="q-timer-widget" style="display: none;"><i class="bi bi-stopwatch-fill"></i> <span id="q-timer-display"></span></span>
 | 
			
		||||
                </div>
 | 
			
		||||
                <a href="#" class="btn btn-warning" aria-title="Question Grid" title="Question Grid" id="btn-toggle-navigator"><i class="bi bi-table"></i></a>
 | 
			
		||||
                <a href="#" class="btn btn-danger" aria-title="Settings" title="Settings" id="btn-toggle-settings"><i class="bi bi-gear-fill"></i></a>
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
</nav>
 | 
			
		||||
							
								
								
									
										17
									
								
								ref-test/app/templates/components/og-meta.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								ref-test/app/templates/components/og-meta.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
<meta name="description" content="A web app for taking the Scottish Korfball Association Refereeing Theory Exam on-line." />
 | 
			
		||||
<meta property="og:locale" content="en_UK" />
 | 
			
		||||
<meta property="og:type" content="website" />
 | 
			
		||||
<meta property="og:description" content="A web app for taking the Scottish Korfball Association Refereeing Theory Exam on-line." />
 | 
			
		||||
<meta property="og:url" content="{{ url_for(request.endpoint, _external = True, **request.view_args) }}" />
 | 
			
		||||
<meta property="og:site_name" content="Scottish Korfball Association Referee Theory Exam" />
 | 
			
		||||
<meta property="og:image" content="{{ url_for('static', filename='favicon.png', _external = True) }}" />
 | 
			
		||||
<meta property="og:image:alt" content="Logo of the SKA Refereeing Exam App" />
 | 
			
		||||
<meta property="og:image:width" content="512" />
 | 
			
		||||
<meta property="og:image:height" content="512" />
 | 
			
		||||
<meta name="twitter:card" content="summary" />
 | 
			
		||||
<meta name="twitter:description" content="A web app for taking the Scottish Korfball Association Refereeing Theory Exam on-line." />
 | 
			
		||||
<meta name="twitter:image" content="{{ url_for('static', filename='favicon.png', _external = True) }}" />
 | 
			
		||||
<meta name="twitter:image:alt" content="Logo of the SKA Refereeing Exam App" />
 | 
			
		||||
<meta name="twitter:creator" content="@viveksantayana" />
 | 
			
		||||
<meta name="twitter:site" content="@viveksantayana" />
 | 
			
		||||
<meta name="theme-color" content="#343a40" />
 | 
			
		||||
							
								
								
									
										43
									
								
								ref-test/app/templates/components/server-alerts.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								ref-test/app/templates/components/server-alerts.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
{% with messages = get_flashed_messages(with_categories=true) %}
 | 
			
		||||
    {% if messages %}
 | 
			
		||||
        {% set cookie_flash_flag = namespace(value=False) %}
 | 
			
		||||
        {% for category, message in messages %}
 | 
			
		||||
            {% if category == "error" %}
 | 
			
		||||
                <div class="alert alert-danger alert-dismissible fade show" role="alert">
 | 
			
		||||
                    <i class="bi bi-exclamation-triangle-fill" title="Error" aria-title="Error"></i>
 | 
			
		||||
                    {{ message|safe }}
 | 
			
		||||
                    <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
 | 
			
		||||
                </div>
 | 
			
		||||
            {% elif category == "success" %}
 | 
			
		||||
                <div class="alert alert-success alert-dismissible fade show" role="alert">
 | 
			
		||||
                    <i class="bi bi-check2-circle" title="Success" aria-title="Success"></i>
 | 
			
		||||
                    {{ message|safe }}
 | 
			
		||||
                    <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
 | 
			
		||||
                </div>
 | 
			
		||||
            {% elif category == "warning" %}
 | 
			
		||||
                <div class="alert alert-warning alert-dismissible fade show" role="alert">
 | 
			
		||||
                    <i class="bi bi-info-circle-fill" aria-title="Warning" title="Warning"></i>
 | 
			
		||||
                    {{ message|safe }}
 | 
			
		||||
                    <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
 | 
			
		||||
                </div>
 | 
			
		||||
            {% elif category == "cookie_alert" %}
 | 
			
		||||
                {% if not cookie_flash_flag.value %}
 | 
			
		||||
                    <div class="alert alert-primary alert-dismissible fade show" id="cookie-alert" role="alert">
 | 
			
		||||
                        <i class="bi bi-info-circle-fill" title="Cookie Alert" aria-title="Cookie Alert"></i>
 | 
			
		||||
                        {{ message|safe }}
 | 
			
		||||
                        <div class="d-flex justify-content-center w-100">
 | 
			
		||||
                            <button type="button" id="dismiss-cookie-alert" class="btn btn-success" data-bs-dismiss="alert" aria-label="Close">Accept</button>
 | 
			
		||||
                        </div>
 | 
			
		||||
                    </div>
 | 
			
		||||
                    {% set cookie_flash_flag.value = True %}
 | 
			
		||||
                {% endif %}
 | 
			
		||||
            {% else %}
 | 
			
		||||
                <div class="alert alert-primary alert-dismissible fade show" role="alert">
 | 
			
		||||
                    <i class="bi bi-info-circle-fill" title="Alert"></i>
 | 
			
		||||
                    {{ message|safe }}
 | 
			
		||||
                    <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
 | 
			
		||||
                </div>
 | 
			
		||||
            {% endif %}
 | 
			
		||||
        {% endfor %}
 | 
			
		||||
    {% endif %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
		Reference in New Issue
	
	Block a user