Added initial basic version of website.
authorSam White <webmaster@ycra.org.uk>
Fri, 10 Sep 2021 17:38:47 +0000 (17:38 +0000)
committerSam White <webmaster@ycra.org.uk>
Fri, 10 Sep 2021 17:38:47 +0000 (17:38 +0000)
45 files changed:
.gitignore [new file with mode: 0644]
public_html/.htaccess [new file with mode: 0644]
public_html/css/bio.css [new file with mode: 0644]
public_html/css/common.css [new file with mode: 0644]
public_html/css/fontello.css [new file with mode: 0644]
public_html/css/navbar.css [new file with mode: 0644]
public_html/font/fontello-7a886015/LICENSE.txt [new file with mode: 0644]
public_html/font/fontello-7a886015/README.txt [new file with mode: 0644]
public_html/font/fontello-7a886015/config.json [new file with mode: 0644]
public_html/font/fontello-7a886015/css/animation.css [new file with mode: 0644]
public_html/font/fontello-7a886015/css/fontello-codes.css [new file with mode: 0644]
public_html/font/fontello-7a886015/css/fontello-embedded.css [new file with mode: 0644]
public_html/font/fontello-7a886015/css/fontello-ie7-codes.css [new file with mode: 0644]
public_html/font/fontello-7a886015/css/fontello-ie7.css [new file with mode: 0644]
public_html/font/fontello-7a886015/css/fontello.css [new file with mode: 0644]
public_html/font/fontello-7a886015/demo.html [new file with mode: 0644]
public_html/font/fontello-7a886015/font/fontello.eot [new file with mode: 0644]
public_html/font/fontello-7a886015/font/fontello.svg [new file with mode: 0644]
public_html/font/fontello-7a886015/font/fontello.ttf [new file with mode: 0644]
public_html/font/fontello-7a886015/font/fontello.woff [new file with mode: 0644]
public_html/font/fontello-7a886015/font/fontello.woff2 [new file with mode: 0644]
public_html/font/fontello.eot [new file with mode: 0644]
public_html/font/fontello.svg [new file with mode: 0644]
public_html/font/fontello.ttf [new file with mode: 0644]
public_html/font/fontello.woff [new file with mode: 0644]
public_html/font/fontello.woff2 [new file with mode: 0644]
public_html/font/fontello.zip [new file with mode: 0644]
public_html/images/founding-members/charlie-linford.jpg [new file with mode: 0644]
public_html/images/founding-members/elena-brake.jpg [new file with mode: 0644]
public_html/images/founding-members/elisha-small.jpg [new file with mode: 0644]
public_html/images/founding-members/emily-hall.jpg [new file with mode: 0644]
public_html/images/founding-members/josephine-leggett.jpg [new file with mode: 0644]
public_html/images/founding-members/matthew-jerome.jpg [new file with mode: 0644]
public_html/images/founding-members/sam-white.jpg [new file with mode: 0644]
public_html/images/logo/logo.png [new file with mode: 0644]
public_html/images/logo/text.png [new file with mode: 0644]
public_html/images/logo/y.png [new file with mode: 0644]
public_html/includes/html-templating.php [new file with mode: 0644]
public_html/includes/navbar.php [new file with mode: 0644]
public_html/includes/template.php [new file with mode: 0644]
public_html/includes/utils.php [new file with mode: 0644]
public_html/index.html.old [new file with mode: 0644]
public_html/index.php [new file with mode: 0644]
public_html/js/scroll.js [new file with mode: 0644]
public_html/js/scrollactivehighlight.js [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..052fd12
--- /dev/null
@@ -0,0 +1,4 @@
+public_html/includes/config.php
+public_html/dev
+public_html/error_log
+public_html/*/error_log
diff --git a/public_html/.htaccess b/public_html/.htaccess
new file mode 100644 (file)
index 0000000..17c6ad5
--- /dev/null
@@ -0,0 +1,19 @@
+# .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
diff --git a/public_html/css/bio.css b/public_html/css/bio.css
new file mode 100644 (file)
index 0000000..cb4db65
--- /dev/null
@@ -0,0 +1,8 @@
+div.bio img {
+  float: left;
+  padding-right: 1em;
+}
+/* Keep sections separate when floating occurs. */
+.clear {
+    clear: both;
+}
diff --git a/public_html/css/common.css b/public_html/css/common.css
new file mode 100644 (file)
index 0000000..7d1c652
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * 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;
+  }
+}
diff --git a/public_html/css/fontello.css b/public_html/css/fontello.css
new file mode 100644 (file)
index 0000000..9ebed4c
--- /dev/null
@@ -0,0 +1,58 @@
+@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'; } *//* '✖' */
diff --git a/public_html/css/navbar.css b/public_html/css/navbar.css
new file mode 100644 (file)
index 0000000..37460a9
--- /dev/null
@@ -0,0 +1,228 @@
+/*
+ * 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;
+    }
+}
diff --git a/public_html/font/fontello-7a886015/LICENSE.txt b/public_html/font/fontello-7a886015/LICENSE.txt
new file mode 100644 (file)
index 0000000..8fa3da3
--- /dev/null
@@ -0,0 +1,12 @@
+Font license info
+
+
+## Font Awesome
+
+   Copyright (C) 2016 by Dave Gandy
+
+   Author:    Dave Gandy
+   License:   SIL ()
+   Homepage:  http://fortawesome.github.com/Font-Awesome/
+
+
diff --git a/public_html/font/fontello-7a886015/README.txt b/public_html/font/fontello-7a886015/README.txt
new file mode 100644 (file)
index 0000000..d870892
--- /dev/null
@@ -0,0 +1,75 @@
+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
diff --git a/public_html/font/fontello-7a886015/config.json b/public_html/font/fontello-7a886015/config.json
new file mode 100644 (file)
index 0000000..f91ae79
--- /dev/null
@@ -0,0 +1,22 @@
+{
+  "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
diff --git a/public_html/font/fontello-7a886015/css/animation.css b/public_html/font/fontello-7a886015/css/animation.css
new file mode 100644 (file)
index 0000000..ac5a956
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+   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);
+  }
+}
diff --git a/public_html/font/fontello-7a886015/css/fontello-codes.css b/public_html/font/fontello-7a886015/css/fontello-codes.css
new file mode 100644 (file)
index 0000000..dab9a28
--- /dev/null
@@ -0,0 +1,3 @@
+
+.icon-menu:before { content: '\2630'; } /* '☰' */
+.icon-cancel:before { content: '\2716'; } /* '✖' */
diff --git a/public_html/font/fontello-7a886015/css/fontello-embedded.css b/public_html/font/fontello-7a886015/css/fontello-embedded.css
new file mode 100644 (file)
index 0000000..09cf536
--- /dev/null
@@ -0,0 +1,61 @@
+@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'; } /* '✖' */
diff --git a/public_html/font/fontello-7a886015/css/fontello-ie7-codes.css b/public_html/font/fontello-7a886015/css/fontello-ie7-codes.css
new file mode 100644 (file)
index 0000000..b369515
--- /dev/null
@@ -0,0 +1,3 @@
+
+.icon-menu { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x2630;&nbsp;'); }
+.icon-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x2716;&nbsp;'); }
diff --git a/public_html/font/fontello-7a886015/css/fontello-ie7.css b/public_html/font/fontello-7a886015/css/fontello-ie7.css
new file mode 100644 (file)
index 0000000..a11b500
--- /dev/null
@@ -0,0 +1,14 @@
+[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 = '&#x2630;&nbsp;'); }
+.icon-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x2716;&nbsp;'); }
diff --git a/public_html/font/fontello-7a886015/css/fontello.css b/public_html/font/fontello-7a886015/css/fontello.css
new file mode 100644 (file)
index 0000000..afff4bc
--- /dev/null
@@ -0,0 +1,58 @@
+@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'; } *//* '✖' */
diff --git a/public_html/font/fontello-7a886015/demo.html b/public_html/font/fontello-7a886015/demo.html
new file mode 100644 (file)
index 0000000..34d39f3
--- /dev/null
@@ -0,0 +1,223 @@
+<!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">&#x2630;</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">&#x2716;</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>
diff --git a/public_html/font/fontello-7a886015/font/fontello.eot b/public_html/font/fontello-7a886015/font/fontello.eot
new file mode 100644 (file)
index 0000000..3048c87
Binary files /dev/null and b/public_html/font/fontello-7a886015/font/fontello.eot differ
diff --git a/public_html/font/fontello-7a886015/font/fontello.svg b/public_html/font/fontello-7a886015/font/fontello.svg
new file mode 100644 (file)
index 0000000..c45cb7e
--- /dev/null
@@ -0,0 +1,14 @@
+<?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="&#x2630;" 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="&#x2716;" 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>
diff --git a/public_html/font/fontello-7a886015/font/fontello.ttf b/public_html/font/fontello-7a886015/font/fontello.ttf
new file mode 100644 (file)
index 0000000..07a8ca0
Binary files /dev/null and b/public_html/font/fontello-7a886015/font/fontello.ttf differ
diff --git a/public_html/font/fontello-7a886015/font/fontello.woff b/public_html/font/fontello-7a886015/font/fontello.woff
new file mode 100644 (file)
index 0000000..d46a600
Binary files /dev/null and b/public_html/font/fontello-7a886015/font/fontello.woff differ
diff --git a/public_html/font/fontello-7a886015/font/fontello.woff2 b/public_html/font/fontello-7a886015/font/fontello.woff2
new file mode 100644 (file)
index 0000000..6119336
Binary files /dev/null and b/public_html/font/fontello-7a886015/font/fontello.woff2 differ
diff --git a/public_html/font/fontello.eot b/public_html/font/fontello.eot
new file mode 100644 (file)
index 0000000..3048c87
Binary files /dev/null and b/public_html/font/fontello.eot differ
diff --git a/public_html/font/fontello.svg b/public_html/font/fontello.svg
new file mode 100644 (file)
index 0000000..c45cb7e
--- /dev/null
@@ -0,0 +1,14 @@
+<?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="&#x2630;" 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="&#x2716;" 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>
diff --git a/public_html/font/fontello.ttf b/public_html/font/fontello.ttf
new file mode 100644 (file)
index 0000000..07a8ca0
Binary files /dev/null and b/public_html/font/fontello.ttf differ
diff --git a/public_html/font/fontello.woff b/public_html/font/fontello.woff
new file mode 100644 (file)
index 0000000..d46a600
Binary files /dev/null and b/public_html/font/fontello.woff differ
diff --git a/public_html/font/fontello.woff2 b/public_html/font/fontello.woff2
new file mode 100644 (file)
index 0000000..6119336
Binary files /dev/null and b/public_html/font/fontello.woff2 differ
diff --git a/public_html/font/fontello.zip b/public_html/font/fontello.zip
new file mode 100644 (file)
index 0000000..09e0cc8
Binary files /dev/null and b/public_html/font/fontello.zip differ
diff --git a/public_html/images/founding-members/charlie-linford.jpg b/public_html/images/founding-members/charlie-linford.jpg
new file mode 100644 (file)
index 0000000..037deac
Binary files /dev/null and b/public_html/images/founding-members/charlie-linford.jpg differ
diff --git a/public_html/images/founding-members/elena-brake.jpg b/public_html/images/founding-members/elena-brake.jpg
new file mode 100644 (file)
index 0000000..57ce08a
Binary files /dev/null and b/public_html/images/founding-members/elena-brake.jpg differ
diff --git a/public_html/images/founding-members/elisha-small.jpg b/public_html/images/founding-members/elisha-small.jpg
new file mode 100644 (file)
index 0000000..66b34f7
Binary files /dev/null and b/public_html/images/founding-members/elisha-small.jpg differ
diff --git a/public_html/images/founding-members/emily-hall.jpg b/public_html/images/founding-members/emily-hall.jpg
new file mode 100644 (file)
index 0000000..adc5de6
Binary files /dev/null and b/public_html/images/founding-members/emily-hall.jpg differ
diff --git a/public_html/images/founding-members/josephine-leggett.jpg b/public_html/images/founding-members/josephine-leggett.jpg
new file mode 100644 (file)
index 0000000..6778dd1
Binary files /dev/null and b/public_html/images/founding-members/josephine-leggett.jpg differ
diff --git a/public_html/images/founding-members/matthew-jerome.jpg b/public_html/images/founding-members/matthew-jerome.jpg
new file mode 100644 (file)
index 0000000..8ced58c
Binary files /dev/null and b/public_html/images/founding-members/matthew-jerome.jpg differ
diff --git a/public_html/images/founding-members/sam-white.jpg b/public_html/images/founding-members/sam-white.jpg
new file mode 100644 (file)
index 0000000..ac504b6
Binary files /dev/null and b/public_html/images/founding-members/sam-white.jpg differ
diff --git a/public_html/images/logo/logo.png b/public_html/images/logo/logo.png
new file mode 100644 (file)
index 0000000..f68fb11
Binary files /dev/null and b/public_html/images/logo/logo.png differ
diff --git a/public_html/images/logo/text.png b/public_html/images/logo/text.png
new file mode 100644 (file)
index 0000000..a895cd2
Binary files /dev/null and b/public_html/images/logo/text.png differ
diff --git a/public_html/images/logo/y.png b/public_html/images/logo/y.png
new file mode 100644 (file)
index 0000000..68304f8
Binary files /dev/null and b/public_html/images/logo/y.png differ
diff --git a/public_html/includes/html-templating.php b/public_html/includes/html-templating.php
new file mode 100644 (file)
index 0000000..aac4210
--- /dev/null
@@ -0,0 +1,27 @@
+<?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
+}
diff --git a/public_html/includes/navbar.php b/public_html/includes/navbar.php
new file mode 100644 (file)
index 0000000..283b13a
--- /dev/null
@@ -0,0 +1,63 @@
+<?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">&#x2630;</span>
+          <span class="icon-menuclose" id="menuclose">&#x2716;</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
+}?>
diff --git a/public_html/includes/template.php b/public_html/includes/template.php
new file mode 100644 (file)
index 0000000..38ab376
--- /dev/null
@@ -0,0 +1,41 @@
+<?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>&copy; 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>
diff --git a/public_html/includes/utils.php b/public_html/includes/utils.php
new file mode 100644 (file)
index 0000000..ee5bb6c
--- /dev/null
@@ -0,0 +1,46 @@
+<?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";
+}
diff --git a/public_html/index.html.old b/public_html/index.html.old
new file mode 100644 (file)
index 0000000..0f71281
--- /dev/null
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Young Change Ringers Association</title>
+  </head>
+  <body>
+    <h1>Young Change Ringers Association</h1>
+    <p>Coming soon...</p>
+  </body>
+</html>
diff --git a/public_html/index.php b/public_html/index.php
new file mode 100644 (file)
index 0000000..45bfa78
--- /dev/null
@@ -0,0 +1,109 @@
+<?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');
+?>
diff --git a/public_html/js/scroll.js b/public_html/js/scroll.js
new file mode 100644 (file)
index 0000000..3f9d9f7
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * 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"
+    });
+  });
+});
diff --git a/public_html/js/scrollactivehighlight.js b/public_html/js/scrollactivehighlight.js
new file mode 100644 (file)
index 0000000..fdd16db
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * 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);
+