--- /dev/null
+public_html/includes/config.php
+public_html/dev
+public_html/error_log
+public_html/*/error_log
--- /dev/null
+# .htaccess Apache overrides file.
+
+# Rewrite rules.
+RewriteEngine on
+
+# Temporary redirect to HTTPS
+RewriteCond %{HTTPS} off
+RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L]
+
+# QR code temporary redirects.
+RewriteRule "^qr/sign-up$" "/index.html" [R,L]
+RewriteRule "^qr/useful-links$" "/index.html" [R,L]
+
+# php -- BEGIN cPanel-generated handler, do not edit
+# Set the “ea-php80” package as the default “PHP” programming language.
+<IfModule mime_module>
+ AddHandler application/x-httpd-ea-php80 .php .php8 .phtml
+</IfModule>
+# php -- END cPanel-generated handler, do not edit
--- /dev/null
+div.bio img {
+ float: left;
+ padding-right: 1em;
+}
+/* Keep sections separate when floating occurs. */
+.clear {
+ clear: both;
+}
--- /dev/null
+/*
+ * Generic styling common to all website pages.
+ */
+@import url('https://rsms.me/inter/inter.css');
+html { font-family: 'Inter', sans-serif; }
+@supports (font-variation-settings: normal) {
+ html { font-family: 'Inter var', sans-serif; }
+}
+
+body {
+ margin: 0;
+ padding: 0;
+ min-height: 100vh;
+
+ /* Fix footer at bottom on short pages. */
+ display: flex;
+ flex-direction: column;
+}
+
+/* Sections of page containing text. */
+div#page-content {
+ /* Centre text and pad from page top and sides. */
+ margin: 0 auto;
+ padding: 1% 10%;
+}
+
+/* Justify text in paragraphs. */
+div#page-content p {
+ text-align: justify;
+}
+
+/* Appropriately pad page sections. */
+div.section {
+ padding: 1% 0;
+}
+
+/* General styling for tables. */
+table {
+ /* Centre tables. */
+ margin: 0 auto;
+ width: 100%;
+}
+
+th,td{
+ text-align: center;
+ padding: 0.5em;
+}
+
+/* Styling for figures and captions.*/
+figure {
+ display: table;
+}
+figure figcaption {
+ display: table-caption;
+ caption-side: bottom;
+ text-align: justify;
+}
+
+footer {
+ padding: 2em;
+
+ background-color: #202020;
+ color: white;
+
+ text-align: center;
+ font-size: 75%;
+
+ /* Fix footer at bottom of short pages.*/
+ margin-top: auto;
+}
+
+footer a:link {
+ color: cyan;
+}
+
+/* Conditional styling for small screen devices. */
+@media screen and (max-width: 800px){
+ /* Reduce padding as screen is smaller. */
+ div#page-content {
+ padding: 0.7% 4%;
+ }
+
+ figure {
+ padding: 0;
+ margin: auto;
+ }
+
+ th,td {
+ padding: 0.1em;
+ }
+}
--- /dev/null
+@font-face {
+ font-family: 'fontello';
+ src: url('../font/fontello.eot?34085483');
+ src: url('../font/fontello.eot?34085483#iefix') format('embedded-opentype'),
+ url('../font/fontello.woff2?34085483') format('woff2'),
+ url('../font/fontello.woff?34085483') format('woff'),
+ url('../font/fontello.ttf?34085483') format('truetype'),
+ url('../font/fontello.svg?34085483#fontello') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
+/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
+/*
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+ @font-face {
+ font-family: 'fontello';
+ src: url('../font/fontello.svg?34085483#fontello') format('svg');
+ }
+}
+*/
+[class^="icon-"], [class*=" icon-"] {
+ font-family: "fontello";
+ font-style: normal;
+ font-weight: normal;
+ speak: never;
+
+ display: inline-block;
+ text-decoration: inherit;
+ width: 1em;
+ /*margin-right: .2em;*/
+ text-align: center;
+ /* opacity: .8; */
+
+ /* For safety - reset parent styles, that can break glyph codes*/
+ font-variant: normal;
+ text-transform: none;
+
+ /* fix buttons height, for twitter bootstrap */
+ line-height: 1em;
+
+ /* Animation center compensation - margins should be symmetric */
+ /* remove if not needed */
+ /*margin-left: .2em;*/
+
+ /* you can be more comfortable with increased icons size */
+ /* font-size: 120%; */
+
+ /* Font smoothing. That was taken from TWBS */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+
+ /* Uncomment for 3D effect */
+ /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
+}
+
+/*.icon-menu:before { content: '\2630'; } *//* '☰' */
+/*.icon-cancel:before { content: '\2716'; } *//* '✖' */
--- /dev/null
+/*
+ * Styling for main page banner
+ */
+
+nav {
+ /* Declare navbar colours. */
+ --main-navbar-back: #42ADDB;
+ /*--main-navbar-back: #68246D;*/
+ --sub-navbar-back: #3080A2;
+ /*--sub-navbar-back: #4B1B4E;*/
+ --main-navbar-active: var(--sub-navbar-back);
+ /*--sub-navbar-active: #38133B;*/
+ --sub-navbar-active: #00405C;
+ --navbar-links: white;
+
+ /* Set height and padding of logo.
+ *
+ * If the sum of the combined height and vertical
+ * padding is greater than 1em + 2 * var(--link-vpadding)
+ * this will dictate the main navbar height.
+ *
+ * Make sure units are always specified (even when
+ * the variable height is zero).
+ * */
+ --logo-height: 5em;
+ --logo-top-padding: 0.3em;
+ --logo-bottom-padding: 0.2em;
+
+ /* Set vertical padding (both top and bottom) for links.
+ *
+ * If 1em + 2 * var(--link-vpadding) is greater than the
+ * sum of the height and vertical logo padding this will
+ * dictate the main navbar height.
+ */
+ --link-vpadding: 1em;
+}
+
+nav.navbar {
+ /* Give navbars a fixed position across page. */
+ position:sticky;
+ margin: 0;
+ padding: 0;
+
+ /* Draw over other objects. */
+ z-index: 100;
+
+ /* Use flexbox to position children (logo and ul). */
+ display: flex;
+
+ font-weight: bold;
+}
+
+nav.navbar ul {
+ padding: 0;
+ margin: 0;
+
+ /* Use flexbox to position children (navigation link li). */
+ display: flex;
+ justify-content: space-between;
+
+ list-style-type: none;
+}
+
+nav.navbar li {
+ /* Stretch each link vertically to fill li element. */
+ display: flex;
+}
+
+nav.navbar li a {
+ /* Space links. */
+ padding: var(--link-vpadding) 1em;
+
+ /* Put link text at centre of link element. */
+ display: flex;
+ align-items: center;
+
+ /* Set line-height to font-size to allow sub-navbar position determination.*/
+ line-height: 1.2em;
+
+ text-decoration: none;
+ color: var(--navbar-links);
+ text-align: center;
+}
+
+nav#mainnav {
+ /* Fix navbar position at top of page. */
+ top: 0;
+
+ /* Colouring. */
+ background-color: var(--main-navbar-back);
+}
+
+
+/* Highlight links to current page and section. */
+nav#mainnav li a.nav-active {
+ background-color: var(--main-navbar-active);
+}
+nav#subnav li a.nav-active {
+ background-color: var(--sub-navbar-active);
+}
+
+
+nav#mainnav a.logo {
+ /* Align logo in centre of navbar link and adapt to logo height. */
+ display: flex;
+ align-items: center;
+}
+
+/* Size and positioning of logo. */
+nav#mainnav a.logo img{
+ height: var(--logo-height);
+ /* Give logo some space to breathe. */
+ padding: var(--logo-top-padding) 0.5em var(--logo-bottom-padding) 0.3em;
+}
+
+nav#subnav {
+ /* Fix sub-navbar below main navbar. */
+ top: max(calc(1em + 2 * var(--link-vpadding)),
+ calc(var(--logo-height)
+ + var(--logo-top-padding)
+ + var(--logo-bottom-padding)
+ )
+ );
+
+ /* Colouring. */
+ background-color: var(--sub-navbar-back);
+}
+
+/* Inset sub-navbar links from edge of page.*/
+nav#subnav ul {
+ margin-left: 2%;
+}
+
+/* Quotes styling. */
+nav div#quotes {
+ /* Vertically align quotes.*/
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+
+ /* Put quotes on right hand side of navigation bar. */
+ margin-left: auto;
+
+ /* Pad appropriately. */
+ padding: 1% 2%;
+
+ /* Prevent quotes from affecting navigation controls.*/
+ max-width: 30%;
+
+ /* Style text. */
+ color: var(--navbar-links);
+ text-align: center;
+ font-weight: normal;
+ font-style: italic;
+}
+
+/* Hide collapsible menu checkbox. */
+input#menutoggle {
+ display: none;
+}
+
+/* Style collapsible menu icons. */
+label[for=menutoggle] {
+ /* Hide by default. */
+ display:none;
+
+ margin: 2% 10% 2% auto;
+
+ /* Make mouse pointer behave like this is clickable link. */
+ cursor: pointer;
+
+ color: var(--navbar-links);
+}
+
+/* Put collapse control on same line as logo. */
+nav.navbar div#topline {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+}
+
+/* Conditional styling for small screen devices. */
+@media screen and (max-width: 990px){
+ /* Align navbar elements vertically. */
+ nav.navbar, nav.navbar * {
+ flex-direction: column;
+ }
+
+ /* Hide subnavigation bar. */
+ nav#subnav {
+ display: none;
+ }
+
+ /* Allow quotes to take up all of screen width. */
+ nav div#quotes {
+ max-width: 100%;
+ }
+
+ /* Show collapsible navigation bar. */
+ label[for=menutoggle] {
+ display: block;
+ font-size: calc(var(--logo-height)*0.5);
+ }
+
+ /* Show burger icon and close icon at appropriate times. */
+ label[for=menutoggle] span#menuclose{
+ display:none;
+ }
+ input#menutoggle:checked + div#topline label[for=menutoggle] span#menubars{
+ display: none;
+ }
+ input#menutoggle:checked + div#topline label[for=menutoggle] span#menuclose{
+ display: block;
+ }
+
+ /* Display and hide navigation links when appropriate. */
+ nav#mainnav ul {
+ display: none;
+ }
+ input#menutoggle:checked ~ ul {
+ display: block;
+ }
+
+ nav #quotes {
+ margin-left: auto;
+ margin-right: auto;
+ }
+}
--- /dev/null
+Font license info
+
+
+## Font Awesome
+
+ Copyright (C) 2016 by Dave Gandy
+
+ Author: Dave Gandy
+ License: SIL ()
+ Homepage: http://fortawesome.github.com/Font-Awesome/
+
+
--- /dev/null
+This webfont is generated by https://fontello.com open source project.
+
+
+================================================================================
+Please, note, that you should obey original font licenses, used to make this
+webfont pack. Details available in LICENSE.txt file.
+
+- Usually, it's enough to publish content of LICENSE.txt file somewhere on your
+ site in "About" section.
+
+- If your project is open-source, usually, it will be ok to make LICENSE.txt
+ file publicly available in your repository.
+
+- Fonts, used in Fontello, don't require a clickable link on your site.
+ But any kind of additional authors crediting is welcome.
+================================================================================
+
+
+Comments on archive content
+---------------------------
+
+- /font/* - fonts in different formats
+
+- /css/* - different kinds of css, for all situations. Should be ok with
+ twitter bootstrap. Also, you can skip <i> style and assign icon classes
+ directly to text elements, if you don't mind about IE7.
+
+- demo.html - demo file, to show your webfont content
+
+- LICENSE.txt - license info about source fonts, used to build your one.
+
+- config.json - keeps your settings. You can import it back into fontello
+ anytime, to continue your work
+
+
+Why so many CSS files ?
+-----------------------
+
+Because we like to fit all your needs :)
+
+- basic file, <your_font_name>.css - is usually enough, it contains @font-face
+ and character code definitions
+
+- *-ie7.css - if you need IE7 support, but still don't wish to put char codes
+ directly into html
+
+- *-codes.css and *-ie7-codes.css - if you like to use your own @font-face
+ rules, but still wish to benefit from css generation. That can be very
+ convenient for automated asset build systems. When you need to update font -
+ no need to manually edit files, just override old version with archive
+ content. See fontello source code for examples.
+
+- *-embedded.css - basic css file, but with embedded WOFF font, to avoid
+ CORS issues in Firefox and IE9+, when fonts are hosted on the separate domain.
+ We strongly recommend to resolve this issue by `Access-Control-Allow-Origin`
+ server headers. But if you ok with dirty hack - this file is for you. Note,
+ that data url moved to separate @font-face to avoid problems with <IE9, when
+ string is too long.
+
+- animate.css - use it to get ideas about spinner rotation animation.
+
+
+Attention for server setup
+--------------------------
+
+You MUST setup server to reply with proper `mime-types` for font files -
+otherwise some browsers will fail to show fonts.
+
+Usually, `apache` already has necessary settings, but `nginx` and other
+webservers should be tuned. Here is list of mime types for our file extensions:
+
+- `application/vnd.ms-fontobject` - eot
+- `application/x-font-woff` - woff
+- `application/x-font-ttf` - ttf
+- `image/svg+xml` - svg
--- /dev/null
+{
+ "name": "",
+ "css_prefix_text": "icon-",
+ "css_use_suffix": false,
+ "hinting": true,
+ "units_per_em": 1000,
+ "ascent": 850,
+ "glyphs": [
+ {
+ "uid": "559647a6f430b3aeadbecd67194451dd",
+ "css": "menu",
+ "code": 9776,
+ "src": "fontawesome"
+ },
+ {
+ "uid": "5211af474d3a9848f67f945e2ccaf143",
+ "css": "cancel",
+ "code": 10006,
+ "src": "fontawesome"
+ }
+ ]
+}
\ No newline at end of file
--- /dev/null
+/*
+ Animation example, for spinners
+*/
+.animate-spin {
+ -moz-animation: spin 2s infinite linear;
+ -o-animation: spin 2s infinite linear;
+ -webkit-animation: spin 2s infinite linear;
+ animation: spin 2s infinite linear;
+ display: inline-block;
+}
+@-moz-keyframes spin {
+ 0% {
+ -moz-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -moz-transform: rotate(359deg);
+ -o-transform: rotate(359deg);
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+@-webkit-keyframes spin {
+ 0% {
+ -moz-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -moz-transform: rotate(359deg);
+ -o-transform: rotate(359deg);
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+@-o-keyframes spin {
+ 0% {
+ -moz-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -moz-transform: rotate(359deg);
+ -o-transform: rotate(359deg);
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+@-ms-keyframes spin {
+ 0% {
+ -moz-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -moz-transform: rotate(359deg);
+ -o-transform: rotate(359deg);
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+@keyframes spin {
+ 0% {
+ -moz-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -moz-transform: rotate(359deg);
+ -o-transform: rotate(359deg);
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
--- /dev/null
+
+.icon-menu:before { content: '\2630'; } /* '☰' */
+.icon-cancel:before { content: '\2716'; } /* '✖' */
--- /dev/null
+@font-face {
+ font-family: 'fontello';
+ src: url('../font/fontello.eot?51145827');
+ src: url('../font/fontello.eot?51145827#iefix') format('embedded-opentype'),
+ url('../font/fontello.svg?51145827#fontello') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+@font-face {
+ font-family: 'fontello';
+ src: url('data:application/octet-stream;base64,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') format('woff'),
+ url('data:application/octet-stream;base64,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') format('truetype');
+}
+/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
+/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
+/*
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+ @font-face {
+ font-family: 'fontello';
+ src: url('../font/fontello.svg?51145827#fontello') format('svg');
+ }
+}
+*/
+
+[class^="icon-"]:before, [class*=" icon-"]:before {
+ font-family: "fontello";
+ font-style: normal;
+ font-weight: normal;
+ speak: never;
+
+ display: inline-block;
+ text-decoration: inherit;
+ width: 1em;
+ margin-right: .2em;
+ text-align: center;
+ /* opacity: .8; */
+
+ /* For safety - reset parent styles, that can break glyph codes*/
+ font-variant: normal;
+ text-transform: none;
+
+ /* fix buttons height, for twitter bootstrap */
+ line-height: 1em;
+
+ /* Animation center compensation - margins should be symmetric */
+ /* remove if not needed */
+ margin-left: .2em;
+
+ /* you can be more comfortable with increased icons size */
+ /* font-size: 120%; */
+
+ /* Font smoothing. That was taken from TWBS */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+
+ /* Uncomment for 3D effect */
+ /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
+}
+
+.icon-menu:before { content: '\2630'; } /* '☰' */
+.icon-cancel:before { content: '\2716'; } /* '✖' */
--- /dev/null
+
+.icon-menu { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '☰ '); }
+.icon-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '✖ '); }
--- /dev/null
+[class^="icon-"], [class*=" icon-"] {
+ font-family: 'fontello';
+ font-style: normal;
+ font-weight: normal;
+
+ /* fix buttons height */
+ line-height: 1em;
+
+ /* you can be more comfortable with increased icons size */
+ /* font-size: 120%; */
+}
+
+.icon-menu { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '☰ '); }
+.icon-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '✖ '); }
--- /dev/null
+@font-face {
+ font-family: 'fontello';
+ src: url('../font/fontello.eot?34085483');
+ src: url('../font/fontello.eot?34085483#iefix') format('embedded-opentype'),
+ url('../font/fontello.woff2?34085483') format('woff2'),
+ url('../font/fontello.woff?34085483') format('woff'),
+ url('../font/fontello.ttf?34085483') format('truetype'),
+ url('../font/fontello.svg?34085483#fontello') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
+/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
+/*
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+ @font-face {
+ font-family: 'fontello';
+ src: url('../font/fontello.svg?34085483#fontello') format('svg');
+ }
+}
+*/
+[class^="icon-"]:before, [class*=" icon-"]:before {
+ font-family: "fontello";
+ font-style: normal;
+ font-weight: normal;
+ speak: never;
+
+ display: inline-block;
+ text-decoration: inherit;
+ width: 1em;
+ margin-right: .2em;
+ text-align: center;
+ /* opacity: .8; */
+
+ /* For safety - reset parent styles, that can break glyph codes*/
+ font-variant: normal;
+ text-transform: none;
+
+ /* fix buttons height, for twitter bootstrap */
+ line-height: 1em;
+
+ /* Animation center compensation - margins should be symmetric */
+ /* remove if not needed */
+ margin-left: .2em;
+
+ /* you can be more comfortable with increased icons size */
+ /* font-size: 120%; */
+
+ /* Font smoothing. That was taken from TWBS */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+
+ /* Uncomment for 3D effect */
+ /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
+}
+
+/*.icon-menu:before { content: '\2630'; } *//* '☰' */
+/*.icon-cancel:before { content: '\2716'; } *//* '✖' */
--- /dev/null
+<!DOCTYPE html>
+<html>
+ <head>
+ <!--[if lt IE 9]><script language="javascript" type="text/javascript" src="//html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
+ <meta charset="UTF-8">
+ <style>
+ html {
+ font-size: 100%;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ }
+ a:focus {
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+ }
+ a:hover,
+ a:active {
+ outline: 0;
+ }
+ input {
+ margin: 0;
+ font-size: 100%;
+ vertical-align: middle;
+ *overflow: visible;
+ line-height: normal;
+ }
+ input::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+ }
+ body {
+ margin: 0;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 14px;
+ line-height: 20px;
+ color: #333;
+ background-color: #fff;
+ }
+ a {
+ color: #08c;
+ text-decoration: none;
+ }
+ a:hover {
+ color: #005580;
+ text-decoration: underline;
+ }
+ .row {
+ margin-left: -20px;
+ *zoom: 1;
+ }
+ .row:before,
+ .row:after {
+ display: table;
+ content: "";
+ line-height: 0;
+ }
+ .row:after {
+ clear: both;
+ }
+ .span3 {
+ float: left;
+ min-height: 1px;
+ margin-left: 20px;
+ width: 220px;
+ }
+ .container {
+ width: 940px;
+ margin-right: auto;
+ margin-left: auto;
+ *zoom: 1;
+ }
+ .container:before,
+ .container:after {
+ display: table;
+ content: "";
+ line-height: 0;
+ }
+ .container:after {
+ clear: both;
+ }
+ small {
+ font-size: 85%;
+ }
+ h1 {
+ margin: 10px 0;
+ font-family: inherit;
+ font-weight: bold;
+ line-height: 20px;
+ color: inherit;
+ text-rendering: optimizelegibility;
+ line-height: 40px;
+ font-size: 38.5px;
+ }
+ h1 small {
+ font-weight: normal;
+ line-height: 1;
+ color: #999;
+ font-size: 24.5px;
+ }
+
+ body {
+ margin-top: 90px;
+ }
+ .header {
+ position: fixed;
+ top: 0;
+ left: 50%;
+ margin-left: -480px;
+ background-color: #fff;
+ border-bottom: 1px solid #ddd;
+ padding-top: 10px;
+ z-index: 10;
+ }
+ .footer {
+ color: #ddd;
+ font-size: 12px;
+ text-align: center;
+ margin-top: 20px;
+ }
+ .footer a {
+ color: #ccc;
+ text-decoration: underline;
+ }
+ .the-icons {
+ font-size: 14px;
+ line-height: 24px;
+ }
+ .switch {
+ position: absolute;
+ right: 0;
+ bottom: 10px;
+ color: #666;
+ }
+ .switch input {
+ margin-right: 0.3em;
+ }
+ .codesOn .i-name {
+ display: none;
+ }
+ .codesOn .i-code {
+ display: inline;
+ }
+ .i-code {
+ display: none;
+ }
+ @font-face {
+ font-family: 'fontello';
+ src: url('./font/fontello.eot?17156154');
+ src: url('./font/fontello.eot?17156154#iefix') format('embedded-opentype'),
+ url('./font/fontello.woff?17156154') format('woff'),
+ url('./font/fontello.ttf?17156154') format('truetype'),
+ url('./font/fontello.svg?17156154#fontello') format('svg');
+ font-weight: normal;
+ font-style: normal;
+ }
+ .demo-icon {
+ font-family: "fontello";
+ font-style: normal;
+ font-weight: normal;
+ speak: never;
+
+ display: inline-block;
+ text-decoration: inherit;
+ width: 1em;
+ margin-right: .2em;
+ text-align: center;
+ /* opacity: .8; */
+
+ /* For safety - reset parent styles, that can break glyph codes*/
+ font-variant: normal;
+ text-transform: none;
+
+ /* fix buttons height, for twitter bootstrap */
+ line-height: 1em;
+
+ /* Animation center compensation - margins should be symmetric */
+ /* remove if not needed */
+ margin-left: .2em;
+
+ /* You can be more comfortable with increased icons size */
+ /* font-size: 120%; */
+
+ /* Font smoothing. That was taken from TWBS */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+
+ /* Uncomment for 3D effect */
+ /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
+ }
+ </style>
+ <link rel="stylesheet" href="css/animation.css"><!--[if IE 7]><link rel="stylesheet" href="css/" + font.fontname + "-ie7.css"><![endif]-->
+ <script>
+ function toggleCodes(on) {
+ var obj = document.getElementById('icons');
+
+ if (on) {
+ obj.className += ' codesOn';
+ } else {
+ obj.className = obj.className.replace(' codesOn', '');
+ }
+ }
+ </script>
+ </head>
+ <body>
+ <div class="container header">
+ <h1>fontello <small>font demo</small></h1>
+ <label class="switch">
+ <input type="checkbox" onclick="toggleCodes(this.checked)">show codes
+ </label>
+ </div>
+ <div class="container" id="icons">
+ <div class="row">
+ <div class="span3" title="Code: 0x2630">
+ <i class="demo-icon icon-menu">☰</i> <span class="i-name">icon-menu</span><span class="i-code">0x2630</span>
+ </div>
+ <div class="span3" title="Code: 0x2716">
+ <i class="demo-icon icon-cancel">✖</i> <span class="i-name">icon-cancel</span><span class="i-code">0x2716</span>
+ </div>
+ </div>
+ <div class="container footer">Generated by <a href="https://fontello.com">fontello.com</a></div>
+ </body>
+</html>
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Copyright (C) 2021 by original authors @ fontello.com</metadata>
+<defs>
+<font id="fontello" horiz-adv-x="1000" >
+<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
+<missing-glyph horiz-adv-x="1000" />
+<glyph glyph-name="menu" unicode="☰" d="M857 100v-71q0-15-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 25t25 11h785q15 0 26-11t10-25z m0 286v-72q0-14-10-25t-26-10h-785q-15 0-25 10t-11 25v72q0 14 11 25t25 10h785q15 0 26-10t10-25z m0 285v-71q0-14-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 26t25 10h785q15 0 26-10t10-26z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="cancel" unicode="✖" d="M724 112q0-22-15-38l-76-76q-16-15-38-15t-38 15l-164 165-164-165q-16-15-38-15t-38 15l-76 76q-16 16-16 38t16 38l164 164-164 164q-16 16-16 38t16 38l76 76q16 16 38 16t38-16l164-164 164 164q16 16 38 16t38-16l76-76q15-15 15-38t-15-38l-164-164 164-164q15-15 15-38z" horiz-adv-x="785.7" />
+</font>
+</defs>
+</svg>
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Copyright (C) 2021 by original authors @ fontello.com</metadata>
+<defs>
+<font id="fontello" horiz-adv-x="1000" >
+<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
+<missing-glyph horiz-adv-x="1000" />
+<glyph glyph-name="menu" unicode="☰" d="M857 100v-71q0-15-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 25t25 11h785q15 0 26-11t10-25z m0 286v-72q0-14-10-25t-26-10h-785q-15 0-25 10t-11 25v72q0 14 11 25t25 10h785q15 0 26-10t10-25z m0 285v-71q0-14-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 26t25 10h785q15 0 26-10t10-26z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="cancel" unicode="✖" d="M724 112q0-22-15-38l-76-76q-16-15-38-15t-38 15l-164 165-164-165q-16-15-38-15t-38 15l-76 76q-16 16-16 38t16 38l164 164-164 164q-16 16-16 38t16 38l76 76q16 16 38 16t38-16l164-164 164 164q16 16 38 16t38-16l76-76q15-15 15-38t-15-38l-164-164 164-164q15-15 15-38z" horiz-adv-x="785.7" />
+</font>
+</defs>
+</svg>
--- /dev/null
+<?php
+/*
+ * Functions for printing common HTML boilerplate using PHP.
+ */
+require_once('includes/utils.php');
+require_once('includes/config.php');
+
+/**
+ * Print HTML to include stylesheet with filename $name.css using appropriate
+ * version control GET parameters.
+ *
+ * @param string $name
+ * @return void
+ */
+function stylesheet($name) {
+ $rel_path = "css/$name.css";
+ $suffix = cache_control_suffix($rel_path);?>
+ <link rel="stylesheet" type="text/css" <?php
+ href($rel_path . $suffix);?>"><?php
+}
+
+function javascript($name) {
+ $rel_path = "js/$name.js";
+ $suffix = cache_control_suffix($rel_path);?>
+ <script type="text/javascript" <?php
+ src($rel_path . $suffix);?>"></script><?php
+}
--- /dev/null
+<?php
+require_once('includes/utils.php');
+require_once('includes/html-templating.php');
+
+function get_menu_pages() {
+ return [
+ 'home' => [ 'name' => 'Home',
+ 'path' => 'index.php'
+ ],
+ /*
+ 'about' => [ 'name' => 'About',
+ 'path' => '#'
+ ],
+ 'join' => [ 'name' => 'Join',
+ 'path' => '#'
+ ],
+ 'links' => [ 'name' => 'Useful Links',
+ 'path' => '#'
+ ],
+ 'register' => [ 'name' => 'Register',
+ 'path' => '#'
+ ],
+ 'login' => [ 'name' => 'Login',
+ 'path' => '#'
+ ]*/
+ ];
+}
+
+function navbar() {
+ $pages = get_menu_pages();?>
+ <nav class="navbar" id="mainnav">
+ <!-- Control which makes collapsible navbar work. -->
+ <input type="checkbox" id="menutoggle" />
+
+ <!-- Div for aligning logo and collapsible navbar icons. -->
+ <div id="topline">
+ <a class="logo" <?php href('index.php');?>>
+ <img alt="YCRA logo" <?php src('images/logo/logo.png');?> />
+ </a>
+
+ <!-- Display elements for collapsible navbar. -->
+ <label for="menutoggle">
+ <span class="icon-menubars" id="menubars">☰</span>
+ <span class="icon-menuclose" id="menuclose">✖</span>
+ </label>
+ </div>
+ <ul><?php
+ foreach ($pages as $k=>$page) {?>
+ <li>
+ <a <?php href($page['path']);?> <?php
+ if ($_SERVER['REQUEST_URI'] == rel_url($page['path'])) {?>
+ class="nav-active"<?php
+ }?>><?php
+ esc($page['name']);?>
+ </a>
+ </li><?php
+ }?>
+ </ul>
+ </nav>
+ <!--nav class="navbar" id="subnav">
+ <ul><li><a href="#">About</a></li></ul>
+ </nav--><?php
+}?>
--- /dev/null
+<?php
+require_once('includes/utils.php');
+require_once('includes/html-templating.php');
+require_once('includes/navbar.php');
+?>
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8" />
+
+ <!-- Set FavIcon -->
+ <link rel="icon" type="image/png" href="images/logo/y.png" />
+
+ <?php
+ // Stylesheets.
+ stylesheet('common');
+ stylesheet('navbar');
+ stylesheet('fontello');
+ if (function_exists('additional_stylesheets')) additional_stylesheets();
+
+ javascript('scroll');?>
+
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <title>
+ YCRA<?php
+ if (function_exists('page_title')) esc(' | ' . page_title());?>
+ </title>
+ </head>
+ <body><?php
+ navbar();?>
+ <div id="page-content"><?php
+ content();?>
+ </div>
+ <footer>
+ <p>© Young Change Ringers Association 2021. All rights reserved.</p>
+ <p>Website maintained by <a href="mailto:web@ycra.org.uk">Sam White</a>.</p>
+ <p><a href="#top">Go to Top of Page</a></p>
+ </footer>
+ </body>
+</html>
--- /dev/null
+<?php
+require_once('includes/config.php');
+
+/**
+ * Escape HTML tags in the passed string.
+ *
+ * @param string $s
+ * @return string
+ */
+function esc_str($s) {
+ return htmlspecialchars($s, ENT_COMPAT, 'UTF-8');
+}
+function esc($s) {
+ echo esc_str($s);
+}
+
+// URL helper functions.
+function rel_url($path) {
+ return get_config()['site_root'] . $path;
+}
+function abs_url($path) {
+ return 'https://ycra.org.uk' . rel_url($path);
+}
+function href($path) {
+ echo 'href="';
+ esc(rel_url($path));
+ echo '"';
+}
+function src($path) {
+ echo 'src="';
+ esc(rel_url($path));
+ echo '"';
+}
+
+/** Return cache control file suffix for file at $path
+ *
+ * @param string $path Relative file path.
+ *
+ * @return string Suffix to append to resource URI.
+ */
+function cache_control_suffix($path) {
+ $doc_root = $_SERVER['DOCUMENT_ROOT'];
+ $site_root = get_config()['site_root'];
+ $modified = date('Ymd-His', filemtime($doc_root . $site_root . $path));
+ return "?v=$modified";
+}
--- /dev/null
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Young Change Ringers Association</title>
+ </head>
+ <body>
+ <h1>Young Change Ringers Association</h1>
+ <p>Coming soon...</p>
+ </body>
+</html>
--- /dev/null
+<?php
+require_once('includes/utils.php');
+require_once('includes/html-templating.php');
+require_once('includes/navbar.php');
+
+
+function bio($name, $img_path, $description) {?>
+ <div class="bio">
+ <h3><?php esc($name);?></h3>
+ <img alt="<?php esc($name);?> portrait"
+ <?php src("images/$img_path");?> />
+ <?php echo $description;?>
+ </div>
+ <div class="clear"></div><?php
+}
+
+function founding_member_bio($name, $why_create) {
+ $desc = '<h4>Why did you want to create the YCRA?</h4>'
+ . "<p>$why_create</p>";
+ return bio($name,
+ 'founding-members/'.strtolower(str_replace(' ', '-', $name)).'.jpg',
+ $desc);
+}
+
+function additional_stylesheets() {
+ stylesheet('bio');
+}
+
+function content() {?>
+ <div class="section">
+ <h1>Young Change Ringers Association</h1>
+
+ <p>The Young Change Ringers Association (YCRA) is a non-territorial
+ association for anyone young enough to handle a bell, up to the age of 30.
+ We aim to be an Association for young ringers, by young ringers.</p>
+
+ <p>For more information about us check out our article on
+ <a href="https://bb.ringingworld.co.uk/issues/2021/820">page 2021/820</a> of
+ <i><a href="https://ringingworld.co.uk/">The Ringing World</a></i>.</p>
+
+ <p>Alternatively, come and speak to us on the 11th of September at the
+ <a href="https://rwnyc.ringingworld.co.uk/">Ringing World National Youth
+ Contest</a> in Worcester.</p>
+
+ <!--p>The primary aims are to:</p>
+
+ <ul>
+ <li>Promote young ringing.</li>
+ <li>Recruit ringers.</li>
+ <li>Support the development of young ringers.</li>
+ </ul-->
+ </div>
+
+ <div class="section" id="core-7">
+ <h2>Who are the founding members?</h2>
+
+ <?php
+ $why_create = "I came to the realisation that there were ringers in my area I had
+ never heard of, and that this wasn't just a one off. I wanted to help
+ connect young ringers together so they can derive as much happiness from
+ ringing as I do! Plus, I want people to ring with when I'm old.";
+ founding_member_bio('Matthew Jerome', $why_create);
+
+ $why_create = "I haven't had a lot of chance to participate in many youth ringing
+ activities in the county so I wanted to be a part of something that would
+ give me, and others, this opportunity.";
+ founding_member_bio('Elisha Small', $why_create);
+
+ $why_create = "I was excited about getting involved with YCRA and helping to secure
+ the future of ringing. Young people are the ringing leaders of the future!
+ I had been looking for ways to connect with other young ringers for a
+ while and the opportunity to get involved with YCRA was too good to miss!";
+ founding_member_bio('Elena Brake', $why_create);
+
+ $why_create = "The ringing community is unlike any other, and I believe that it's
+ crucial that we allow young ringers to connect and develop as human
+ beings. If anything, it's for the survival of our art. Young ringers are
+ our future tower captains, teachers, and committee members – the ringing
+ community need to give them the space and tools so that they can, one day,
+ fill those roles. I believe that the YCRA will do just that, with the
+ mentoring scheme being a good opportunity to ease young ringers into roles
+ of responsibility whilst, at the same time, providing a support network.";
+ founding_member_bio('Emily Hall', $why_create);
+
+ $why_create = "As someone without a <q>ringing family</q>, I was
+ really lucky to find a group of friends who supported me in ringing and
+ helped me navigate ringing etiquette. I wanted to help create a group that
+ would create a safe space for other young ringers to find friends
+ like I did.";
+ founding_member_bio('Josephine Leggett', $why_create);
+
+ $why_create = "It's a great way to get more kids involved in the larger
+ ringing community so that everyone has the opportunities that some of us
+ take for granted.";
+ founding_member_bio('Charlie Linford', $why_create);
+
+ $why_create = "To help other young ringers find a group of like-minded
+ people to help, support and encourage them while learning to ring. I was
+ fortunate enough to have this while ringing at university (and when I went
+ to ring elsewhere over the summer) and it is definitely one of the main
+ reasons I enjoy ringing so much.";
+ founding_member_bio('Sam White', $why_create);?>
+ </div>
+
+ <?php
+}
+
+require_once('includes/template.php');
+?>
--- /dev/null
+/*
+ * Scroll to selected navigation link location.
+*/
+
+document.querySelectorAll('a[href^="#"]').forEach(anchor => {
+ // for every in-page link
+ anchor.addEventListener('click', function(e) {
+ // Stop the default behaviour.
+ e.preventDefault();
+
+ // Get body position relative to user's viewport.
+ var bodyPosition = document.body.getBoundingClientRect().top;
+
+ // Handle requests to scroll to top of page.
+ if (this.getAttribute('href') == "#top")
+ elementPosition = bodyPosition;
+ else
+ {
+ // Get element to scroll to and position relative to viewport.
+ var element = document.querySelector(this.getAttribute('href'));
+ var elementPosition = element.getBoundingClientRect().top;
+ }
+
+ // Get position to scroll to relative to top of page, compensating height
+ // of navbars.
+ var headerOffset = document.getElementById('mainnav').scrollHeight
+ + document.getElementById('subnav').scrollHeight;
+ var offsetPosition = elementPosition - bodyPosition - headerOffset;
+
+ // Scroll.
+ window.scrollTo({
+ top: offsetPosition,
+ behavior: "smooth"
+ });
+ });
+});
--- /dev/null
+/*
+ * Sets navigation item to active if in view.
+*/
+
+/* Return the percentage of the elem given visible to the user. Accounts for
+ * header offset if provided. */
+function getPercentVisible(elem, headerOffset = 0)
+{
+ var elementHeight = elem.clientHeight;
+
+ /* Find location of top and bottom of element bounding box relative to top
+ * of viewport accounting for header offset given. */
+ var rect = elem.getBoundingClientRect();
+ var elemTop = rect.top - headerOffset;
+ var elemBottom = rect.bottom - headerOffset;
+
+ // Viewport height excluding headers.
+ var viewHeight = window.innerHeight - headerOffset;
+
+ /* Determine pixels of element visible. */
+ var amountVisble = 0;
+ // Element not in view.
+ if (elemBottom <= 0 || elemTop >= viewHeight)
+ amountVisible = 0;
+ // Top of element not in view.
+ else if (elemTop < 0 && elemBottom > 0)
+ amountVisible = elemBottom;
+ // Element fills entire view.
+ else if (elemTop < 0 && elemBottom > viewHeight)
+ amountVisible = viewHeight;
+ // Whole element in view.
+ else if (elemTop >= 0 && elemBottom <= viewHeight)
+ amountVisible = elementHeight;
+ // Bottom of element not in view.
+ else if (elemTop >= 0 && elemBottom > viewHeight)
+ amountVisible = viewHeight - elemTop;
+
+ // Return the percentage of the element in view.
+ return amountVisible / elementHeight * 100;
+}
+
+
+// Get all sub-navbar elements.
+var subnavbarElem = document.querySelectorAll("nav#subnav a");
+
+// Get height of header.
+var headerOffset = document.getElementById('mainnav').offsetHeight
+ + document.getElementById('subnav').offsetHeight;
+
+// Run whenever page is scrolled.
+window.addEventListener('scroll', function (event) {
+ // Create 2D array.
+ vis = new Array(2);
+ vis[0] = new Array(subnavbarElem.length);
+ vis[1] = new Array(subnavbarElem.length);
+
+ // For each subnavbar element.
+ for (var i = 0; i < subnavbarElem.length; i++)
+ {
+ // Remove any already set active classes.
+ subnavbarElem[i].classList.remove("active");
+
+ // Get the section element the navbar link refers to.
+ sectionId = subnavbarElem[i].getAttribute('href');
+ section = document.querySelector(sectionId);
+
+ // Store the navbar link element and the percentage of the section visible.
+ vis[0][i] = subnavbarElem[i];
+ vis[1][i] = getPercentVisible(section, headerOffset);
+ }
+
+ // Find index of element with greatest percentage visible and make this the active element.
+ let imax = vis[1].indexOf(Math.max(...vis[1]));
+ vis[0][imax].classList.add("active");
+}, false);
+