First commit
@ -0,0 +1,6 @@
|
||||
---
|
||||
title: "{{ replace .Name "-" " " | title }}"
|
||||
date: {{ .Date }}
|
||||
draft: true
|
||||
---
|
||||
|
@ -0,0 +1,3 @@
|
||||
baseURL = "http://example.org/"
|
||||
languageCode = "en-us"
|
||||
title = "My New Hugo Site"
|
@ -0,0 +1,175 @@
|
||||
# Saturday, 23 November 2019
|
||||
* Support for sub-submenus. See `exampleSite/config.toml` for an idea of how to implement this. Note that these sub-sub-menus *will not have a visual prompt for users*, so don't hide essential navigation in them. (This is because I couldn't work out a way to implement this attractively in the UI, as well as to discourage burying essential navigation.)
|
||||
Note: this is the last update which will be reported in this changelog. This project will move to use [github tags](https://developer.github.com/v3/git/tags/).
|
||||
|
||||
# Saturday, 16 November 2019
|
||||
On the home page (\_index.html), feature_icons tiles can have an optional `url` specified. This will make the whole tile clickable. The text of that tile will turn into the link accent colour. (Thanks @ryanclarke)
|
||||
|
||||
# Sunday, 3 November 2019
|
||||
I've made it possible for a sermon to have multiple preachers. Now, 99% of the time a sermon will only be preached by one person, so why the change?
|
||||
1. It makes [the taxonomies](https://gohugo.io/content-management/taxonomies/#readout) more consistent with pluralisation.
|
||||
2. There is a potential *use case* for having multiple preachers, such as a panel discussion, or a sermon where one person does an exegetical portion and another person applies the passage.
|
||||
|
||||
This is a **breaking change**: you'll need to change all your sermons to have the `preachers:` parameter an array. If you're using TOML frontmatter you can do this with a regular expression. In [atom](//atom.io) I ran a regex find-and-replace over my whole project *Finding* `preachers: "([A-z ]+)"` and replacing it with `preachers: ["$1"]`.
|
||||
|
||||
# Tuesday, 13 August 2019
|
||||
* Thanks to [@Anaeijon](https://github.com/Anaeijon) who [provided a PR](https://github.com/funkydan2/alpha-church/pull/15) with some improved SCSS process.
|
||||
* Banner Image is now set in `config.toml` by the variable `Params.banner_image` so it can be processed through Hugo Pipes.
|
||||
* _Optional_ more google fonts can be loaded through `config.toml` (See `config.toml` in exampleSite)
|
||||
* _Optional_ some plain text contact information can be included above the contact form.
|
||||
|
||||
# Tuesday, 9 July 2019
|
||||
* Fix to Contact form when using Formspree (thanks [@sjloregonwi](https://github.com/funkydan2/alpha-church/commit/e04873db2d36bf73ead1de4cd1dd887b0313cd71))
|
||||
|
||||
Friday, 5 July 2019
|
||||
* Using some caching to speed up build time.
|
||||
* Added an image to the `exampleSite` contact page.
|
||||
|
||||
# Thursday, 27 June 2019
|
||||
* Thanks @fabianying for notices a few problems.
|
||||
** Gone back to distributing FontAwesome with the site, so that mobile UI is complete.
|
||||
** Increased size of the Map box to make it visible on mobile screens (thanks to @theofruitrouge)
|
||||
|
||||
# Monday, 17 June 2019
|
||||
Moved audio player for the sermons into the same <div> as the content because I didn't like where the download button was being placed.
|
||||
|
||||
# Wednesday, 5 June 2019
|
||||
Now using the [FontAwesome kit](https://blog.fontawesome.com/introducing-font-awesome-kits-7134d1d59959) to load icons.
|
||||
|
||||
# Thursday, 30 May 2019
|
||||
* Merged [PR from Clint Davis](https://github.com/funkydan2/alpha-church/pull/11) to improve accessibility of the theme.
|
||||
|
||||
# Tuesday, 28 May 2019
|
||||
* Netlify now uses [Akismet spam filtering](https://www.netlify.com/blog/2019/02/12/improved-netlify-forms-spam-filtering-using-akismet/), so no more need for a honeypot.
|
||||
|
||||
# Wednesday, 15 May 2019
|
||||
Big change to configuration. Options for the landing/home page are now defined in `/content/_index.md` (This is a [homepage template](https://gohugo.io/templates/homepage/)b). The reason for this is to make the main configuration smaller and neater—`config.toml` should mainly have whole-site configuration values.
|
||||
|
||||
# Wednesday, 17 April 2019
|
||||
Added *optional* setting for Google Maps to be localised due to [this issue](https://github.com/funkydan2/alpha-church/issues/10). Under `[params.map]` there are two *optional* settings `language` and `region`. These will force Google Maps to be displayed for the given localisation. See [here for a list of supported languages](https://developers.google.com/maps/faq#languagesupport) and [here for a list of valid regions](https://www.iso.org/obp/ui/#search) (Google uses the two-letter, Alpha-2 code).
|
||||
|
||||
# Saturday, 13 April 2019
|
||||
* Shortcode {{< osmap >}} is now {{< map >}} because it could be google or OSM.
|
||||
|
||||
# Thursday, 11 April 2019
|
||||
* New option - maps can be either from Google or Open Street Maps.
|
||||
* New setting in `config.toml` under [Params.Map] you need to set `service = "osm"` or `service="google"`
|
||||
* To use Google Maps, you also need to define `api_key` https://developers.google.com/maps/documentation/embed/get-api-key
|
||||
|
||||
# Tuesday, 9 April 2019
|
||||
* There's now an option to use either [Faithlife Reftagger](https://faithlife.com/products/reftagger) or the [Blue Letter Bible ScriptTagger](https://faithlife.com/products/reftagger). I think Faithlife's reftagger looks much better, ~~but its incompatibility with [adblock plus](https://community.logos.com/forums/p/139517/890932.aspx) may be a deal-breaker for some websites~~. (Actually, I've no idea what causes the site to break with adblock plus. It's javascript, but I can't work out which one.)
|
||||
|
||||
# Wednesday, 3 April 2019
|
||||
Big change - really version 2 now!
|
||||
* Updated a bunch of SCSS and js to newer version from html5up.
|
||||
|
||||
# Monday, 1 April 2019
|
||||
* A bunch of changes to javascript libraries. Fewer are now pulled from CDN, and there are a few more libraries loaded which weren't being before (my mistake) with the hope of improving sites using Safari.
|
||||
|
||||
# Monday, 4 March 2019
|
||||
* Changed podcast feed so passage is displayed in brackets following the sermon title.
|
||||
|
||||
# Tuesday, 19 February 2019
|
||||
* [Plyr 3.5.0](https://github.com/sampotts/plyr/releases/tag/v3.5.0)
|
||||
|
||||
# Monday, 18 February 2019
|
||||
* Somehow `overlay.png` got lost (probably when I converted to using Hugo Pipes). It's not found.
|
||||
|
||||
# Monday, 11 February 2019
|
||||
* Added optional [instant.page](//instant.page) support. This allows for prefetching of pages in some modern browsers and should increase the speed of the site for users. To enable, set `instant_page = true` in the `[params]` section of `config.toml`.
|
||||
* Only load [plyr](//plyr.io) on *pages*. This should slightly improve loading time, but it would be even better to only load the library when `<audio>` is on a page - I'm not sure how to do that.
|
||||
|
||||
# Tuesday, 29 January 2019
|
||||
* [FontAwesome 5.7.0](https://github.com/FortAwesome/Font-Awesome/releases/tag/5.7.0)
|
||||
|
||||
# Monday, 14 January 2019
|
||||
* Added a small space between icon and word in download button for sermon recordings.
|
||||
|
||||
# Monday, 5 November 2018
|
||||
* FontAwesome 5.5
|
||||
* Fixed pluralised titles for sermon series.
|
||||
|
||||
# Saturday, 13 October 2018
|
||||
* FontAwesome 5.4.1
|
||||
* [Leaflet JS 1.3.4](https://leafletjs.com/2018/08/21/leaflet-1.3.4.html)
|
||||
|
||||
# Wednesday, 3 October 2018
|
||||
* A small change to the single sermon partial to make code more [DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself).
|
||||
* Discovered the [`rssLimit` configuration setting](https://gohugo.io/getting-started/configuration/#all-configuration-settings) so removed `.Params.Podcast.num_episodes` setting and code which used it. So now, to set how many episodes use the built-in setting. (This does mean all feeds, e.g. blog and podcast, will have the same number of entries.)
|
||||
|
||||
# Wednesday, 26 September 2018
|
||||
* Bugfix: Custom CSS variable was incorrect. To enable custom CSS, see the updated config.toml in the exampleSite. Place your custom CSS file in `/static`.
|
||||
* Updated to [plyr 3.4.4](https://github.com/sampotts/plyr/releases/tag/v3.4.4)
|
||||
|
||||
# Monday, 17 September 2018
|
||||
Big changes for podcast discovery.
|
||||
* Added 'Subscribe on Android' and 'Subscribe in iTunes' link to list of sermons.
|
||||
To make this work, there's been a few variables changed in `config.toml` - see the `exampleSite config for details.
|
||||
|
||||
# Monday, 10 September 2018
|
||||
* Added meta tag for linking to Apple Podcasts on iOS ([see this page for more information](https://blog.pacific-content.com/optimize-your-podcast-website-for-ios-with-a-single-line-of-code-cf56a7a3f486))
|
||||
** `.Site.Params.Podcast.iTunesID` in config.toml required for this feature. **NB changes on 17/9/18**
|
||||
|
||||
# Sunday, 9 September 2018
|
||||
* Changed to Relative Permalinks for assets to ensure the `exampleSite` builds on //themes.gohugo.io.
|
||||
|
||||
# Thursday, 30 August 2018
|
||||
* FontAwesome 5.3.1 now has some ['religious' icons](https://fontawesome.com/icons?d=gallery&c=religion)
|
||||
|
||||
# Saturday, 18 August 2018
|
||||
* Added scss for `input:not([type]),` to deal with `hugo --minify` in 0.47
|
||||
|
||||
# Friday, 17 August 2018
|
||||
* Added [honeypot spam protection for netlify forms](https://www.netlify.com/docs/form-handling/#honeypot-field)
|
||||
* Updated to use scss to hide the field (hopefully trickier for bots).
|
||||
|
||||
# Tuesday, 14 August 2018
|
||||
* [Plyr 3.4.0](https://github.com/sampotts/plyr/releases/tag/v3.4.0)
|
||||
|
||||
# Wednesday, 8 August 2018
|
||||
* Limit podcast episodes to 50 by default. This can be changed by setting num_episodes in the [Podcast] section of config.toml.
|
||||
|
||||
# Tuesday, 24 July 2018
|
||||
* Update FontAwesome to 5.2
|
||||
|
||||
# Monday, 23 July 2018
|
||||
* Change preachers from an array, since sermons are (normally) only preached by one person.
|
||||
|
||||
# Friday, 20 July 2018
|
||||
* Include OpenGraph and Twitter Card meta-data.
|
||||
* **Note: this breaks previous frontmatter.** feature_image is now deprecated and replaced with images, which is an array.
|
||||
|
||||
# Thursday, 12 July 2018
|
||||
* Updated SCSS processing for Hugo 0.43
|
||||
|
||||
# Sunday, 24 June 2018
|
||||
* Made copyright an array of options
|
||||
* Separate copyright notice for podcast
|
||||
|
||||
# Saturday, 23 June 2018
|
||||
* Updated [fontawesome to 5.1.0](https://blog.fontawesome.com/font-awesome-5-1-409-new-icons-more-4c1e407fae49?gi=22b3b04bdc95)
|
||||
* Updated [plyr to 3.3.20](https://github.com/sampotts/plyr/releases/tag/v3.3.20)
|
||||
|
||||
# Friday, 22 June 2018
|
||||
* Changed CSS to keep images inside boxes.
|
||||
|
||||
# Friday, 22 June 2018
|
||||
* Moved the 'featured image' for sermons into a left-hand column. The reason for this is to have the audio controls show up 'before the fold'
|
||||
|
||||
# Friday, 22 June 2018
|
||||
* Put anchor points (#services, #feature-icons, #feature-images, #call-to-action) within index.html layout.
|
||||
|
||||
# 21 June 2018
|
||||
* Added plyr.io audio player
|
||||
* Changed sermon single to work with new plyr
|
||||
|
||||
# 18 June 2018
|
||||
* Changes to CSS so that h1 now looks like a heading.
|
||||
* Changes to CSS so h1 use in Nav Bar fits with the theme
|
||||
|
||||
# 28 May 2018
|
||||
* Added bible popups using refTagger
|
||||
|
||||
# 18 May 2018
|
||||
* First Release
|
||||
* Basic functionality
|
@ -0,0 +1,63 @@
|
||||
Creative Commons Attribution 3.0 Unported
|
||||
https://creativecommons.org/licenses/by/3.0/
|
||||
|
||||
License
|
||||
|
||||
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
|
||||
|
||||
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
|
||||
|
||||
1. Definitions
|
||||
|
||||
1. "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License.
|
||||
2. "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined above) for the purposes of this License.
|
||||
3. "Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership.
|
||||
4. "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License.
|
||||
5. "Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast.
|
||||
6. "Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work.
|
||||
7. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
|
||||
8. "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images.
|
||||
9. "Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium.
|
||||
|
||||
2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws.
|
||||
|
||||
3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
|
||||
|
||||
1. to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections;
|
||||
2. to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified.";
|
||||
3. to Distribute and Publicly Perform the Work including as incorporated in Collections; and,
|
||||
4. to Distribute and Publicly Perform Adaptations.
|
||||
5.
|
||||
|
||||
For the avoidance of doubt:
|
||||
1. Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License;
|
||||
2. Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and,
|
||||
3. Voluntary License Schemes. The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License.
|
||||
|
||||
The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved.
|
||||
|
||||
4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
|
||||
|
||||
1. You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(b), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(b), as requested.
|
||||
2. If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and (iv) , consistent with Section 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4 (b) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties.
|
||||
3. Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise.
|
||||
|
||||
5. Representations, Warranties and Disclaimer
|
||||
|
||||
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
|
||||
|
||||
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
7. Termination
|
||||
|
||||
1. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
|
||||
2. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
|
||||
|
||||
8. Miscellaneous
|
||||
|
||||
1. Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
|
||||
2. Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.
|
||||
3. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
|
||||
4. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
|
||||
5. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.
|
||||
6. The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law.
|
@ -0,0 +1,44 @@
|
||||
# Alpha-Church by Daniel Saunders
|
||||
|
||||
This theme is based on [Alpha by HTML5 UP](//html5up.net/alpha) [@ajlkn](//twitter.com/ajlkn). Free for personal and commercial use under the [CCA 3.0 license](//github.com/funkydan2/alpha-church/blob/master/LICENSE.md).
|
||||
|
||||
A clean, super minimal responsive template geared towards churches though it could be adapted for other community groups. This theme includes a landing page, open street maps, blog posts and a sermon podcast.
|
||||
|
||||

|
||||
|
||||
You can see this theme 'in the wild' at https://gympiepresbyterian.org.au.
|
||||
|
||||
Demo images courtesy of [freelyphotos](//freelyphotos.com), totally free high-quality stock photography available under the fantastic [CC0 (public domain)](//creativecommons.org/publicdomain/zero/1.0/) license.
|
||||
|
||||
[Feedback, bug reports, and comments](//github.com/funkydan2/alpha-church/issues) are not only welcome but encouraged :)
|
||||
|
||||
## Settings
|
||||
If you need some help setting up your website, instructions are available [here](//github.com/funkydan2/alpha-church/blob/master/SETUP.md). Hugo also has a friendly and informative [forum](https://discourse.gohugo.io) where you'll find answers to many common questions.
|
||||
|
||||
## Credits:
|
||||
- Design based on [Alpha by HTML5 UP](//html5up.net/alpha) [@ajlkn](//twitter.com/ajlkn)
|
||||
|
||||
### Demo Images:
|
||||
|
||||
- [FreelyPhotos](//freelyphotos.com):
|
||||
- [Banner Image (Church Building)](//freelyphotos.com/church-building-2/)
|
||||
- [Old Bible](//freelyphotos.com/old-bible-3/)
|
||||
- [Running Child](//freelyphotos.com/running/)
|
||||
- [Group of People](//freelyphotos.com/group-of-people/)
|
||||
- [Microphone (podcast cover)](//freelyphotos.com/microphone/)
|
||||
- [Unsplash](//unsplash.com):
|
||||
- [Old Phones](https://unsplash.com/@ptrikutam?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) by Pavan Trikutam
|
||||
|
||||
### Icons:
|
||||
|
||||
* [Font Awesome](//fortawesome.github.com/Font-Awesome)
|
||||
|
||||
### Other:
|
||||
|
||||
* [jQuery](//jquery.com)
|
||||
* [html5shiv.js](//github.com/aFarkas/html5shiv) (@afarkas @jdalton @jon_neal @rem)
|
||||
* [CSS3 Pie](//css3pie.com)
|
||||
* [background-size polyfill](//github.com/louisremi)
|
||||
* [Respond.js](//j.mp/respondjs)
|
||||
* [Skel](//skel.io)
|
||||
* [Plyr](//plyr.io)
|
@ -0,0 +1,242 @@
|
||||
# Setup Instructions
|
||||
|
||||
## Get the theme
|
||||
|
||||
If you have `git` installed, you can do the following at the command-line-interface within the Hugo directory:
|
||||
|
||||
```
|
||||
$ mkdir themes
|
||||
$ cd themes
|
||||
$ git submodule add https://github.com/funkydan2/alpha-church.git
|
||||
```
|
||||
|
||||
You should see a folder called `alpha-church` inside the `themes` directory that we created a few moments ago. For more information read the official [setup guide](//gohugo.io/overview/installing/) of Hugo.
|
||||
|
||||
## Update the theme
|
||||
If the theme has been updated, you can use `git` to merge latest commits to the submodule by running `git submodule update --rebase --remote` in root directory of your project.
|
||||
|
||||
## Configuration
|
||||
|
||||
In the next step navigate to the `exampleSite` folder at `themes/alpha-church/exampleSite/` and copy `config.toml` from the exampleSite folder into the root folder of your Hugo site. Then delete the line which says `themesDir = "../.."`.
|
||||
|
||||
(Please refer to https://gohugo.io/overview/quickstart/ for installing a Hugo theme.)
|
||||
|
||||
## The `config` file
|
||||
|
||||
Now, let us take a look at `config.toml`. Let's take a look at some of the settings.
|
||||
|
||||
### 1. Custom CSS
|
||||
The easiest way to change the look of your site is by overriding the included style sheet. You can do this by putting your css file in `static/css/my.css` and entering `customCSS = ["/css/my.css"]` in the config file.
|
||||
|
||||
### 2. Google Analytics
|
||||
Enable by putting your Analytics key here.
|
||||
```
|
||||
GoogleAnalytics = ""
|
||||
```
|
||||
|
||||
### 3. Menu & Nested Menus
|
||||
|
||||
The entries in the items menu can be customised. The structure of the menu is defined in `config.toml`.
|
||||
|
||||
```
|
||||
[menu]
|
||||
[[menu.main]]
|
||||
name = "Home"
|
||||
url = "/"
|
||||
weight = 1
|
||||
```
|
||||
|
||||
Define a label and enter the URL of the resource you want to link. The `weight` value determines the order of menu items. Lower weighted entries appear to the *left* of higher weighted entries.
|
||||
|
||||
For sub-menus, you can use the following format:
|
||||
|
||||
```
|
||||
[[menu.main]]
|
||||
name = "About"
|
||||
url = "/about"
|
||||
weight = 2
|
||||
|
||||
[[menu.main]]
|
||||
name = "About Us"
|
||||
parent = "About"
|
||||
url = "/about"
|
||||
weight = 1
|
||||
```
|
||||
In this example, *About* is in the main menu, but *About Us* is in the *About* sub-menu. In *Alpha Church* the sub-menu is a drop-down menu.
|
||||
|
||||
### 4. Podcasting
|
||||
In `config.toml` there are settings which are used to generate the podcast RSS feed.
|
||||
|
||||
```
|
||||
[params.podcast]
|
||||
title = "Listen to Alpha Church"
|
||||
subtitle = ""
|
||||
summary = "Alpha-Church sermons, talks, messages—podcasted."
|
||||
email = "test@example.com"
|
||||
image = "Link to 1400*1400 (or larger) file"
|
||||
category = "Religion & Spirituality"
|
||||
sub_category = "Christianity"
|
||||
#num_episodes = 50
|
||||
#iTunesID = 12345677
|
||||
```
|
||||
Almost all of these need to be set or else the feed will not be valid. You can leave the `subtitle` entry blank. You don't need to set `num_episodes` unless you want your feed to include a number other than the default (50).
|
||||
|
||||
Some of these entries look like site-wide settings (e.g. `title`). They need to be set here as you may which to use a title for your site which is different from your podcast.
|
||||
|
||||
The `iTunedID` setting is used to create a subscribe banner for users of the Safari web browser on iOS. Only set this variable if your sermon podcast feed has been submitted to iTunes. [Click here to read instructions on how to find the ID number](https://www.podigee.com/en/help/how-to-find-your-podcasts-itunes-id/).
|
||||
|
||||
As you're developing your site, you'll need to check the podcast feed is valid by entering the feed's URL into [a podcast feed validator](https://castfeedvalidator.com).
|
||||
|
||||
The podcast feed is found at `/sermons/index.xml`.
|
||||
|
||||
### 5. Landing (Home) page
|
||||
The landing page is quite customisable. It consists of five blocks: a banner, an area for information about services (including a map), featured icons, featured images, and a contact form.
|
||||
|
||||
Settings for the landing page are configured in the frontmatter of `/content/_index.md`. There is an example configuration in the `exampleSite` folder.
|
||||
|
||||
#### a. Banner
|
||||
The banner section requires a background image to be set. This image should be 1800*1200 px, and a relatively simple image will probably look best. The filename of this banner is set in `config.toml`
|
||||
```
|
||||
[params.banner]
|
||||
image = "/img/banner.jpg"
|
||||
```
|
||||
|
||||
You can place link buttons in this area by using the following settings.
|
||||
|
||||
```
|
||||
[[banner.button]]
|
||||
url = "/contact"
|
||||
text = "Get in touch"
|
||||
type = "primary"
|
||||
```
|
||||
|
||||
#### b. Service information
|
||||
Below the banner is an area which could be used for highlight service location and times. The settings for the [open street map](https://openstreetmap.org) in this area are detailed below.
|
||||
|
||||
#### c. Feature Icons
|
||||
These feature icons are pulled from [fontawesome](https://fontawesome.com). The layout requires an even number of these blocks (well, you could have an odd number, but it would look, well, odd). To find items [search around on the fontawesome site](https://fontawesome.com/icons?d=gallery)
|
||||
|
||||
```
|
||||
[[feature_icons.tile]]
|
||||
icon = "fa-users"
|
||||
icon_pack = "fas"
|
||||
accent = "2"
|
||||
title = "Meet"
|
||||
text = "Meeting together to hear."
|
||||
```
|
||||
The value of the `icon` and `icon_pack` setting is found on the FontAwesome site. `Accent` is a colour scheme set in the css (there are 5 accent colours).
|
||||
|
||||
#### d. Feature Images
|
||||
Like the *Feature Icons* this section looks best with an even number of entries.
|
||||
|
||||
### 6. Map
|
||||
This theme makes use of [open street maps](https://openstreetmap.org) on the landing page and as a shortcode.
|
||||
|
||||
To set your organisations' location edit `config.toml`.
|
||||
```
|
||||
[params.map]
|
||||
service = "osm"
|
||||
latitude = "48.8530"
|
||||
longitude = "2.3498"
|
||||
zoom = "18"
|
||||
```
|
||||
To find the appropriate values, visit https://openstreetmap.org and find the location you want to be shown on your map. Then look at the URL in your browser's location bar. You'll see something like `https://www.openstreetmap.org/search?query=New%20York#map=14/40.6971/-73.9796`. The final three numbers in this URL give the values of Zoom/Latitude/Longitude.
|
||||
|
||||
If you'd like a map on another page, you can use an inline shortcode `{{< map.inline >}}{{ partial "map" . }}{{< /map.inline >}}`. **N.B. inline shortcodes must be [enabled in your config file](https://gohugo.io/templates/shortcode-templates/#inline-shortcodes).**
|
||||
|
||||
You can also use Google Maps. To do this, you'll need an [API Key from Google](https://developers.google.com/maps/documentation/embed/get-api-key) and set it in `config.toml`:
|
||||
```
|
||||
[params.map]
|
||||
service = "google"
|
||||
latitude = "48.8530"
|
||||
longitude = "2.3498"
|
||||
zoom = "18"
|
||||
api_key = "XXXXXXXX"
|
||||
```
|
||||
If you're using Google Maps there are two *optional* settings `langauge` and `region`. Without these settings, Google Maps will display in the language of the user's browser. Using these settings will force Google Maps to be displayed for the given localisation. See [here for a list of supported languages](https://developers.google.com/maps/faq#languagesupport) and [here for a list of valid regions](https://www.iso.org/obp/ui/#search).
|
||||
|
||||
e.g.
|
||||
```
|
||||
language = "fr"
|
||||
region = "FR"
|
||||
```
|
||||
|
||||
You can also use Mapbox. To do this you'll need an [API Key from Mapbox](https://docs.mapbox.com/help/how-mapbox-works/access-tokens/) and set it in `config.toml`. You can also define your custom map style using [Mapbox Studio](https://www.mapbox.com/mapbox-studio/).
|
||||
|
||||
```
|
||||
[params.map]
|
||||
service = "mapbox"
|
||||
latitude = "48.137232"
|
||||
longitude = "11.575503"
|
||||
zoom = "13"
|
||||
api_key = "XXXXXXXX"
|
||||
style_url = "mapbox://LINK_TO_MAPBOXP_STYLE"
|
||||
marker_title = "Popup Marker Title"
|
||||
marker_address= "Streetname <br> Postcode Town"
|
||||
```
|
||||
|
||||
> If `marker_title` and `marker_address` are not set, the popup will not be rendered in the map.
|
||||
|
||||
### 7. Contact Form
|
||||
You can have a contact form using either a [netlify form](https://www.netlify.com/docs/form-handling/) (if you're deploying with netlify) or [formspree](https://formspree.io)
|
||||
```
|
||||
[params.contact]
|
||||
service = ""
|
||||
confirm_page = "/contact_thanks"
|
||||
formspree_email=""
|
||||
```
|
||||
With these setting, set *service* to either `service = "netlify"` or `service = "formspree"`.
|
||||
|
||||
If you're using formspree, you'll also need to set `formspree_email` to your email address.
|
||||
|
||||
If you're using netlify, you'll also want to set the `confirm_page = "url"` to a page on your site. That way after a user submits the form they'll be sent to a page with your customised thank you message, rather than a generic netlify page.
|
||||
|
||||
If you'd like a contact form on another page, use an inline shortcode `{{< contact.inline >}}{{ partial "contact" . }}{{< /contact.inline >}}` **N.B. inline shortcodes must be [enabled in your config file](https://gohugo.io/templates/shortcode-templates/#inline-shortcodes).**
|
||||
|
||||
### 8. Links
|
||||
At the very bottom of each page is a bunch of icons (from FontAwesome) which can be used for links to social media, RSS feeds, or whatever you like!
|
||||
```
|
||||
[[params.links]]
|
||||
service = "Facebook"
|
||||
icon = "fa-facebook"
|
||||
icon_pack = "fab"
|
||||
link = "//facebook.com/"
|
||||
|
||||
[[params.links]]
|
||||
service = "Podcast"
|
||||
icon = "fa-podcast"
|
||||
icon_pack = "fas"
|
||||
link = "/sermons/index.xml"
|
||||
|
||||
[[params.links]]
|
||||
service = "Full RSS Feed"
|
||||
icon = "fa-rss"
|
||||
icon_pack = "fas"
|
||||
link = "/index.xml"
|
||||
```
|
||||
|
||||
### 8. Bible Popups
|
||||
*Changed on Tuesday, 9 April 2019..*
|
||||
Configuration in [params]. Set `bible_popups = "faithlife"` to include Bible reference popups from [Faithlife](https://faithlife.com/products/reftagger), or `bible_popups = "blb"` to use the [Blue Letter Bible](https://www.blueletterbible.org/webtools/BLB_ScriptTagger.cfm) popups.
|
||||
|
||||
You may also set the bible translation by defining `bible_version = "ESV"` (or NLT, KJV, CSB, etc.). If you don't define a translation, the default *ESV* will be used.
|
||||
|
||||
## Nearly finished
|
||||
|
||||
To preview your site, run Hugo's built-in local server.
|
||||
|
||||
```
|
||||
$ hugo server -D
|
||||
```
|
||||
|
||||
Now enter [`localhost:1313`](http://localhost:1313) in the address bar of your browser.
|
||||
|
||||
# Usage Instructions
|
||||
## Image Dimensions
|
||||
This theme makes use of 'hero' images for regular and sermon/podcast pages. Images need to be the right dimesions in order to display properly.
|
||||
|
||||
|Page Type|Width|Height|
|
||||
|---|---|---|
|
||||
|Sermon|768px|644px|
|
||||
|Regular page|1280px| |
|
||||
|Front page feature images|618px|412px|
|
@ -0,0 +1,14 @@
|
||||
# Alpha-Church TODO
|
||||
## Soon
|
||||
- [x] Fix the landing page which breaks when using Adblock Plus in Safari. The problem is somehow related to the OpenStreetMap being loaded through leafletjs.
|
||||
- Possible solution - create option to use Google Maps or OSM.
|
||||
- [x] Look at [BLB Plugin](https://www.blueletterbible.org/webtools/BLB_ScriptTagger.cfm) for bible popups since reftagger is blocked by [adblock plus](https://community.logos.com/forums/p/139517/890932.aspx) which causes strange behaviour of index.html.
|
||||
- [x] Bible Verse popups using [bib.ly](//bib.ly) or [reftagger](//reftagger.com).
|
||||
- Went with reftagger because it worked straight away. Bib.ly was causing some CSS issues.
|
||||
- [x] Setting in config.toml
|
||||
- [x] Javascript
|
||||
|
||||
## Dreams
|
||||
- [ ] Break up home page (index.html) into widgets
|
||||
- [x] Look at [audio.js](https://kolber.github.io/audiojs/) or [Plyr](https://plyr.io/) for sermon podcast player.
|
||||
- [ ] Allow the map shortcode to display other locations by passing lat/long parameters
|
@ -0,0 +1,8 @@
|
||||
---
|
||||
title: "{{ replace .Name "-" " " | title }}"
|
||||
subtitle: ""
|
||||
date: {{ .Date }}
|
||||
images: [""]
|
||||
tags: []
|
||||
draft: true
|
||||
---
|
@ -0,0 +1,13 @@
|
||||
---
|
||||
title: "{{ replace .Name "-" " " | title }}"
|
||||
passage: ""
|
||||
date: {{ .Date }}
|
||||
audio: [""]
|
||||
audio_duration: "1:00"
|
||||
audio_size: 1
|
||||
preachers: [""]
|
||||
images: [""]
|
||||
series: []
|
||||
tags: []
|
||||
draft: true
|
||||
---
|
@ -0,0 +1,2 @@
|
||||
/* breakpoints.js v1.0 | @ajlkn | MIT licensed */
|
||||
var breakpoints=function(){"use strict";function e(e){t.init(e)}var t={list:null,media:{},events:[],init:function(e){t.list=e,window.addEventListener("resize",t.poll),window.addEventListener("orientationchange",t.poll),window.addEventListener("load",t.poll),window.addEventListener("fullscreenchange",t.poll)},active:function(e){var n,a,s,i,r,d,c;if(!(e in t.media)){if(">="==e.substr(0,2)?(a="gte",n=e.substr(2)):"<="==e.substr(0,2)?(a="lte",n=e.substr(2)):">"==e.substr(0,1)?(a="gt",n=e.substr(1)):"<"==e.substr(0,1)?(a="lt",n=e.substr(1)):"!"==e.substr(0,1)?(a="not",n=e.substr(1)):(a="eq",n=e),n&&n in t.list)if(i=t.list[n],Array.isArray(i)){if(r=parseInt(i[0]),d=parseInt(i[1]),isNaN(r)){if(isNaN(d))return;c=i[1].substr(String(d).length)}else c=i[0].substr(String(r).length);if(isNaN(r))switch(a){case"gte":s="screen";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: -1px)";break;case"not":s="screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (max-width: "+d+c+")"}else if(isNaN(d))switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen";break;case"gt":s="screen and (max-width: -1px)";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+")";break;default:s="screen and (min-width: "+r+c+")"}else switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+"), screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (min-width: "+r+c+") and (max-width: "+d+c+")"}}else s="("==i.charAt(0)?"screen and "+i:i;t.media[e]=!!s&&s}return t.media[e]!==!1&&window.matchMedia(t.media[e]).matches},on:function(e,n){t.events.push({query:e,handler:n,state:!1}),t.active(e)&&n()},poll:function(){var e,n;for(e=0;e<t.events.length;e++)n=t.events[e],t.active(n.query)?n.state||(n.state=!0,n.handler()):n.state&&(n.state=!1)}};return e._=t,e.on=function(e,n){t.on(e,n)},e.active=function(e){return t.active(e)},e}();!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():e.breakpoints=t()}(this,function(){return breakpoints});
|
@ -0,0 +1,2 @@
|
||||
/* browser.js v1.0 | @ajlkn | MIT licensed */
|
||||
var browser=function(){"use strict";var e={name:null,version:null,os:null,osVersion:null,touch:null,mobile:null,_canUse:null,canUse:function(n){e._canUse||(e._canUse=document.createElement("div"));var o=e._canUse.style,r=n.charAt(0).toUpperCase()+n.slice(1);return n in o||"Moz"+r in o||"Webkit"+r in o||"O"+r in o||"ms"+r in o},init:function(){var n,o,r,i,t=navigator.userAgent;for(n="other",o=0,r=[["firefox",/Firefox\/([0-9\.]+)/],["bb",/BlackBerry.+Version\/([0-9\.]+)/],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/],["opera",/OPR\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)/],["edge",/Edge\/([0-9\.]+)/],["safari",/Version\/([0-9\.]+).+Safari/],["chrome",/Chrome\/([0-9\.]+)/],["ie",/MSIE ([0-9]+)/],["ie",/Trident\/.+rv:([0-9]+)/]],i=0;i<r.length;i++)if(t.match(r[i][1])){n=r[i][0],o=parseFloat(RegExp.$1);break}for(e.name=n,e.version=o,n="other",o=0,r=[["ios",/([0-9_]+) like Mac OS X/,function(e){return e.replace("_",".").replace("_","")}],["ios",/CPU like Mac OS X/,function(e){return 0}],["wp",/Windows Phone ([0-9\.]+)/,null],["android",/Android ([0-9\.]+)/,null],["mac",/Macintosh.+Mac OS X ([0-9_]+)/,function(e){return e.replace("_",".").replace("_","")}],["windows",/Windows NT ([0-9\.]+)/,null],["bb",/BlackBerry.+Version\/([0-9\.]+)/,null],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/,null],["linux",/Linux/,null],["bsd",/BSD/,null],["unix",/X11/,null]],i=0;i<r.length;i++)if(t.match(r[i][1])){n=r[i][0],o=parseFloat(r[i][2]?r[i][2](RegExp.$1):RegExp.$1);break}e.os=n,e.osVersion=o,e.touch="wp"==e.os?navigator.msMaxTouchPoints>0:!!("ontouchstart"in window),e.mobile="wp"==e.os||"android"==e.os||"ios"==e.os||"bb"==e.os}};return e.init(),e}();!function(e,n){"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?module.exports=n():e.browser=n()}(this,function(){return browser});
|
@ -0,0 +1,96 @@
|
||||
<!--
|
||||
PIE: CSS3 rendering for IE
|
||||
Version 1.0.0
|
||||
http://css3pie.com
|
||||
Dual-licensed for use under the Apache License Version 2.0 or the General Public License (GPL) Version 2.
|
||||
-->
|
||||
<PUBLIC:COMPONENT lightWeight="true">
|
||||
<!-- saved from url=(0014)about:internet -->
|
||||
<PUBLIC:ATTACH EVENT="oncontentready" FOR="element" ONEVENT="init()" />
|
||||
<PUBLIC:ATTACH EVENT="ondocumentready" FOR="element" ONEVENT="init()" />
|
||||
<PUBLIC:ATTACH EVENT="ondetach" FOR="element" ONEVENT="cleanup()" />
|
||||
|
||||
<script type="text/javascript">
|
||||
var doc = element.document;var f=window.PIE;
|
||||
if(!f){f=window.PIE={F:"-pie-",nb:"Pie",La:"pie_",Ac:{TD:1,TH:1},cc:{TABLE:1,THEAD:1,TBODY:1,TFOOT:1,TR:1,INPUT:1,TEXTAREA:1,SELECT:1,OPTION:1,IMG:1,HR:1},fc:{A:1,INPUT:1,TEXTAREA:1,SELECT:1,BUTTON:1},Gd:{submit:1,button:1,reset:1},aa:function(){}};try{doc.execCommand("BackgroundImageCache",false,true)}catch(aa){}for(var ba=4,Z=doc.createElement("div"),ca=Z.getElementsByTagName("i"),ga;Z.innerHTML="<!--[if gt IE "+ ++ba+"]><i></i><![endif]--\>",ca[0];);f.O=ba;if(ba===6)f.F=f.F.replace(/^-/,"");f.ja=
|
||||
doc.documentMode||f.O;Z.innerHTML='<v:shape adj="1"/>';ga=Z.firstChild;ga.style.behavior="url(#default#VML)";f.zc=typeof ga.adj==="object";(function(){var a,b=0,c={};f.p={Za:function(d){if(!a){a=doc.createDocumentFragment();a.namespaces.add("css3vml","urn:schemas-microsoft-com:vml")}return a.createElement("css3vml:"+d)},Ba:function(d){return d&&d._pieId||(d._pieId="_"+ ++b)},Eb:function(d){var e,g,j,i,h=arguments;e=1;for(g=h.length;e<g;e++){i=h[e];for(j in i)if(i.hasOwnProperty(j))d[j]=i[j]}return d},
|
||||
Rb:function(d,e,g){var j=c[d],i,h;if(j)Object.prototype.toString.call(j)==="[object Array]"?j.push([e,g]):e.call(g,j);else{h=c[d]=[[e,g]];i=new Image;i.onload=function(){j=c[d]={h:i.width,f:i.height};for(var k=0,n=h.length;k<n;k++)h[k][0].call(h[k][1],j);i.onload=null};i.src=d}}}})();f.Na={gc:function(a,b,c,d){function e(){k=j>=90&&j<270?b:0;n=j<180?c:0;m=b-k;p=c-n}function g(){for(;j<0;)j+=360;j%=360}var j=d.sa;d=d.zb;var i,h,k,n,m,p,r,t;if(d){d=d.coords(a,b,c);i=d.x;h=d.y}if(j){j=j.jd();g();e();
|
||||
if(!d){i=k;h=n}d=f.Na.tc(i,h,j,m,p);a=d[0];d=d[1]}else if(d){a=b-i;d=c-h}else{i=h=a=0;d=c}r=a-i;t=d-h;if(j===void 0){j=!r?t<0?90:270:!t?r<0?180:0:-Math.atan2(t,r)/Math.PI*180;g();e()}return{sa:j,xc:i,yc:h,td:a,ud:d,Wd:k,Xd:n,rd:m,sd:p,kd:r,ld:t,rc:f.Na.dc(i,h,a,d)}},tc:function(a,b,c,d,e){if(c===0||c===180)return[d,b];else if(c===90||c===270)return[a,e];else{c=Math.tan(-c*Math.PI/180);a=c*a-b;b=-1/c;d=b*d-e;e=b-c;return[(d-a)/e,(c*d-b*a)/e]}},dc:function(a,b,c,d){a=c-a;b=d-b;return Math.abs(a===0?
|
||||
b:b===0?a:Math.sqrt(a*a+b*b))}};f.ea=function(){this.Gb=[];this.oc={}};f.ea.prototype={ba:function(a){var b=f.p.Ba(a),c=this.oc,d=this.Gb;if(!(b in c)){c[b]=d.length;d.push(a)}},Ha:function(a){a=f.p.Ba(a);var b=this.oc;if(a&&a in b){delete this.Gb[b[a]];delete b[a]}},xa:function(){for(var a=this.Gb,b=a.length;b--;)a[b]&&a[b]()}};f.Oa=new f.ea;f.Oa.Rd=function(){var a=this,b;if(!a.Sd){b=doc.documentElement.currentStyle.getAttribute(f.F+"poll-interval")||250;(function c(){a.xa();setTimeout(c,b)})();
|
||||
a.Sd=1}};(function(){function a(){f.L.xa();window.detachEvent("onunload",a);window.PIE=null}f.L=new f.ea;window.attachEvent("onunload",a);f.L.ta=function(b,c,d){b.attachEvent(c,d);this.ba(function(){b.detachEvent(c,d)})}})();f.Qa=new f.ea;f.L.ta(window,"onresize",function(){f.Qa.xa()});(function(){function a(){f.mb.xa()}f.mb=new f.ea;f.L.ta(window,"onscroll",a);f.Qa.ba(a)})();(function(){function a(){c=f.kb.md()}function b(){if(c){for(var d=0,e=c.length;d<e;d++)f.attach(c[d]);c=0}}var c;if(f.ja<9){f.L.ta(window,
|
||||
"onbeforeprint",a);f.L.ta(window,"onafterprint",b)}})();f.lb=new f.ea;f.L.ta(doc,"onmouseup",function(){f.lb.xa()});f.he=function(){function a(h){this.Y=h}var b=doc.createElement("length-calc"),c=doc.body||doc.documentElement,d=b.style,e={},g=["mm","cm","in","pt","pc"],j=g.length,i={};d.position="absolute";d.top=d.left="-9999px";for(c.appendChild(b);j--;){d.width="100"+g[j];e[g[j]]=b.offsetWidth/100}c.removeChild(b);d.width="1em";a.prototype={Kb:/(px|em|ex|mm|cm|in|pt|pc|%)$/,ic:function(){var h=
|
||||
this.Jd;if(h===void 0)h=this.Jd=parseFloat(this.Y);return h},yb:function(){var h=this.ae;if(!h)h=this.ae=(h=this.Y.match(this.Kb))&&h[0]||"px";return h},a:function(h,k){var n=this.ic(),m=this.yb();switch(m){case "px":return n;case "%":return n*(typeof k==="function"?k():k)/100;case "em":return n*this.xb(h);case "ex":return n*this.xb(h)/2;default:return n*e[m]}},xb:function(h){var k=h.currentStyle.fontSize,n,m;if(k.indexOf("px")>0)return parseFloat(k);else if(h.tagName in f.cc){m=this;n=h.parentNode;
|
||||
return f.n(k).a(n,function(){return m.xb(n)})}else{h.appendChild(b);k=b.offsetWidth;b.parentNode===h&&h.removeChild(b);return k}}};f.n=function(h){return i[h]||(i[h]=new a(h))};return a}();f.Ja=function(){function a(e){this.X=e}var b=f.n("50%"),c={top:1,center:1,bottom:1},d={left:1,center:1,right:1};a.prototype={zd:function(){if(!this.ac){var e=this.X,g=e.length,j=f.v,i=j.qa,h=f.n("0");i=i.na;h=["left",h,"top",h];if(g===1){e.push(new j.ob(i,"center"));g++}if(g===2){i&(e[0].k|e[1].k)&&e[0].d in c&&
|
||||
e[1].d in d&&e.push(e.shift());if(e[0].k&i)if(e[0].d==="center")h[1]=b;else h[0]=e[0].d;else if(e[0].W())h[1]=f.n(e[0].d);if(e[1].k&i)if(e[1].d==="center")h[3]=b;else h[2]=e[1].d;else if(e[1].W())h[3]=f.n(e[1].d)}this.ac=h}return this.ac},coords:function(e,g,j){var i=this.zd(),h=i[1].a(e,g);e=i[3].a(e,j);return{x:i[0]==="right"?g-h:h,y:i[2]==="bottom"?j-e:e}}};return a}();f.Ka=function(){function a(b,c){this.h=b;this.f=c}a.prototype={a:function(b,c,d,e,g){var j=this.h,i=this.f,h=c/d;e=e/g;if(j===
|
||||
"contain"){j=e>h?c:d*e;i=e>h?c/e:d}else if(j==="cover"){j=e<h?c:d*e;i=e<h?c/e:d}else if(j==="auto"){i=i==="auto"?g:i.a(b,d);j=i*e}else{j=j.a(b,c);i=i==="auto"?j/e:i.a(b,d)}return{h:j,f:i}}};a.Kc=new a("auto","auto");return a}();f.Ec=function(){function a(b){this.Y=b}a.prototype={Kb:/[a-z]+$/i,yb:function(){return this.ad||(this.ad=this.Y.match(this.Kb)[0].toLowerCase())},jd:function(){var b=this.Vc,c;if(b===undefined){b=this.yb();c=parseFloat(this.Y,10);b=this.Vc=b==="deg"?c:b==="rad"?c/Math.PI*180:
|
||||
b==="grad"?c/400*360:b==="turn"?c*360:0}return b}};return a}();f.Jc=function(){function a(c){this.Y=c}var b={};a.Qd=/\s*rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d+|\d*\.\d+)\s*\)\s*/;a.Fb={aliceblue:"F0F8FF",antiquewhite:"FAEBD7",aqua:"0FF",aquamarine:"7FFFD4",azure:"F0FFFF",beige:"F5F5DC",bisque:"FFE4C4",black:"000",blanchedalmond:"FFEBCD",blue:"00F",blueviolet:"8A2BE2",brown:"A52A2A",burlywood:"DEB887",cadetblue:"5F9EA0",chartreuse:"7FFF00",chocolate:"D2691E",coral:"FF7F50",cornflowerblue:"6495ED",
|
||||
cornsilk:"FFF8DC",crimson:"DC143C",cyan:"0FF",darkblue:"00008B",darkcyan:"008B8B",darkgoldenrod:"B8860B",darkgray:"A9A9A9",darkgreen:"006400",darkkhaki:"BDB76B",darkmagenta:"8B008B",darkolivegreen:"556B2F",darkorange:"FF8C00",darkorchid:"9932CC",darkred:"8B0000",darksalmon:"E9967A",darkseagreen:"8FBC8F",darkslateblue:"483D8B",darkslategray:"2F4F4F",darkturquoise:"00CED1",darkviolet:"9400D3",deeppink:"FF1493",deepskyblue:"00BFFF",dimgray:"696969",dodgerblue:"1E90FF",firebrick:"B22222",floralwhite:"FFFAF0",
|
||||
forestgreen:"228B22",fuchsia:"F0F",gainsboro:"DCDCDC",ghostwhite:"F8F8FF",gold:"FFD700",goldenrod:"DAA520",gray:"808080",green:"008000",greenyellow:"ADFF2F",honeydew:"F0FFF0",hotpink:"FF69B4",indianred:"CD5C5C",indigo:"4B0082",ivory:"FFFFF0",khaki:"F0E68C",lavender:"E6E6FA",lavenderblush:"FFF0F5",lawngreen:"7CFC00",lemonchiffon:"FFFACD",lightblue:"ADD8E6",lightcoral:"F08080",lightcyan:"E0FFFF",lightgoldenrodyellow:"FAFAD2",lightgreen:"90EE90",lightgrey:"D3D3D3",lightpink:"FFB6C1",lightsalmon:"FFA07A",
|
||||
lightseagreen:"20B2AA",lightskyblue:"87CEFA",lightslategray:"789",lightsteelblue:"B0C4DE",lightyellow:"FFFFE0",lime:"0F0",limegreen:"32CD32",linen:"FAF0E6",magenta:"F0F",maroon:"800000",mediumauqamarine:"66CDAA",mediumblue:"0000CD",mediumorchid:"BA55D3",mediumpurple:"9370D8",mediumseagreen:"3CB371",mediumslateblue:"7B68EE",mediumspringgreen:"00FA9A",mediumturquoise:"48D1CC",mediumvioletred:"C71585",midnightblue:"191970",mintcream:"F5FFFA",mistyrose:"FFE4E1",moccasin:"FFE4B5",navajowhite:"FFDEAD",
|
||||
navy:"000080",oldlace:"FDF5E6",olive:"808000",olivedrab:"688E23",orange:"FFA500",orangered:"FF4500",orchid:"DA70D6",palegoldenrod:"EEE8AA",palegreen:"98FB98",paleturquoise:"AFEEEE",palevioletred:"D87093",papayawhip:"FFEFD5",peachpuff:"FFDAB9",peru:"CD853F",pink:"FFC0CB",plum:"DDA0DD",powderblue:"B0E0E6",purple:"800080",red:"F00",rosybrown:"BC8F8F",royalblue:"4169E1",saddlebrown:"8B4513",salmon:"FA8072",sandybrown:"F4A460",seagreen:"2E8B57",seashell:"FFF5EE",sienna:"A0522D",silver:"C0C0C0",skyblue:"87CEEB",
|
||||
slateblue:"6A5ACD",slategray:"708090",snow:"FFFAFA",springgreen:"00FF7F",steelblue:"4682B4",tan:"D2B48C",teal:"008080",thistle:"D8BFD8",tomato:"FF6347",turquoise:"40E0D0",violet:"EE82EE",wheat:"F5DEB3",white:"FFF",whitesmoke:"F5F5F5",yellow:"FF0",yellowgreen:"9ACD32"};a.prototype={parse:function(){if(!this.Ua){var c=this.Y,d;if(d=c.match(a.Qd)){this.Ua="rgb("+d[1]+","+d[2]+","+d[3]+")";this.Yb=parseFloat(d[4])}else{if((d=c.toLowerCase())in a.Fb)c="#"+a.Fb[d];this.Ua=c;this.Yb=c==="transparent"?0:
|
||||
1}}},U:function(c){this.parse();return this.Ua==="currentColor"?c.currentStyle.color:this.Ua},fa:function(){this.parse();return this.Yb}};f.ha=function(c){return b[c]||(b[c]=new a(c))};return a}();f.v=function(){function a(c){this.$a=c;this.ch=0;this.X=[];this.Ga=0}var b=a.qa={Ia:1,Wb:2,z:4,Lc:8,Xb:16,na:32,K:64,oa:128,pa:256,Ra:512,Tc:1024,URL:2048};a.ob=function(c,d){this.k=c;this.d=d};a.ob.prototype={Ca:function(){return this.k&b.K||this.k&b.oa&&this.d==="0"},W:function(){return this.Ca()||this.k&
|
||||
b.Ra}};a.prototype={de:/\s/,Kd:/^[\+\-]?(\d*\.)?\d+/,url:/^url\(\s*("([^"]*)"|'([^']*)'|([!#$%&*-~]*))\s*\)/i,nc:/^\-?[_a-z][\w-]*/i,Yd:/^("([^"]*)"|'([^']*)')/,Bd:/^#([\da-f]{6}|[\da-f]{3})/i,be:{px:b.K,em:b.K,ex:b.K,mm:b.K,cm:b.K,"in":b.K,pt:b.K,pc:b.K,deg:b.Ia,rad:b.Ia,grad:b.Ia},fd:{rgb:1,rgba:1,hsl:1,hsla:1},next:function(c){function d(p,r){p=new a.ob(p,r);if(!c){k.X.push(p);k.Ga++}return p}function e(){k.Ga++;return null}var g,j,i,h,k=this;if(this.Ga<this.X.length)return this.X[this.Ga++];for(;this.de.test(this.$a.charAt(this.ch));)this.ch++;
|
||||
if(this.ch>=this.$a.length)return e();j=this.ch;g=this.$a.substring(this.ch);i=g.charAt(0);switch(i){case "#":if(h=g.match(this.Bd)){this.ch+=h[0].length;return d(b.z,h[0])}break;case '"':case "'":if(h=g.match(this.Yd)){this.ch+=h[0].length;return d(b.Tc,h[2]||h[3]||"")}break;case "/":case ",":this.ch++;return d(b.pa,i);case "u":if(h=g.match(this.url)){this.ch+=h[0].length;return d(b.URL,h[2]||h[3]||h[4]||"")}}if(h=g.match(this.Kd)){i=h[0];this.ch+=i.length;if(g.charAt(i.length)==="%"){this.ch++;
|
||||
return d(b.Ra,i+"%")}if(h=g.substring(i.length).match(this.nc)){i+=h[0];this.ch+=h[0].length;return d(this.be[h[0].toLowerCase()]||b.Lc,i)}return d(b.oa,i)}if(h=g.match(this.nc)){i=h[0];this.ch+=i.length;if(i.toLowerCase()in f.Jc.Fb||i==="currentColor"||i==="transparent")return d(b.z,i);if(g.charAt(i.length)==="("){this.ch++;if(i.toLowerCase()in this.fd){g=function(p){return p&&p.k&b.oa};h=function(p){return p&&p.k&(b.oa|b.Ra)};var n=function(p,r){return p&&p.d===r},m=function(){return k.next(1)};
|
||||
if((i.charAt(0)==="r"?h(m()):g(m()))&&n(m(),",")&&h(m())&&n(m(),",")&&h(m())&&(i==="rgb"||i==="hsa"||n(m(),",")&&g(m()))&&n(m(),")"))return d(b.z,this.$a.substring(j,this.ch));return e()}return d(b.Xb,i)}return d(b.na,i)}this.ch++;return d(b.Wb,i)},D:function(){return this.X[this.Ga-- -2]},all:function(){for(;this.next(););return this.X},ma:function(c,d){for(var e=[],g,j;g=this.next();){if(c(g)){j=true;this.D();break}e.push(g)}return d&&!j?null:e}};return a}();var ha=function(a){this.e=a};ha.prototype=
|
||||
{Z:0,Od:function(){var a=this.qb,b;return!a||(b=this.o())&&(a.x!==b.x||a.y!==b.y)},Td:function(){var a=this.qb,b;return!a||(b=this.o())&&(a.h!==b.h||a.f!==b.f)},hc:function(){var a=this.e,b=a.getBoundingClientRect(),c=f.ja===9,d=f.O===7,e=b.right-b.left;return{x:b.left,y:b.top,h:c||d?a.offsetWidth:e,f:c||d?a.offsetHeight:b.bottom-b.top,Hd:d&&e?a.offsetWidth/e:1}},o:function(){return this.Z?this.Va||(this.Va=this.hc()):this.hc()},Ad:function(){return!!this.qb},cb:function(){++this.Z},hb:function(){if(!--this.Z){if(this.Va)this.qb=
|
||||
this.Va;this.Va=null}}};(function(){function a(b){var c=f.p.Ba(b);return function(){if(this.Z){var d=this.$b||(this.$b={});return c in d?d[c]:(d[c]=b.call(this))}else return b.call(this)}}f.B={Z:0,ka:function(b){function c(d){this.e=d;this.Zb=this.ia()}f.p.Eb(c.prototype,f.B,b);c.$c={};return c},j:function(){var b=this.ia(),c=this.constructor.$c;return b?b in c?c[b]:(c[b]=this.la(b)):null},ia:a(function(){var b=this.e,c=this.constructor,d=b.style;b=b.currentStyle;var e=this.wa,g=this.Fa,j=c.Yc||(c.Yc=
|
||||
f.F+e);c=c.Zc||(c.Zc=f.nb+g.charAt(0).toUpperCase()+g.substring(1));return d[c]||b.getAttribute(j)||d[g]||b.getAttribute(e)}),i:a(function(){return!!this.j()}),H:a(function(){var b=this.ia(),c=b!==this.Zb;this.Zb=b;return c}),va:a,cb:function(){++this.Z},hb:function(){--this.Z||delete this.$b}}})();f.Sb=f.B.ka({wa:f.F+"background",Fa:f.nb+"Background",cd:{scroll:1,fixed:1,local:1},fb:{"repeat-x":1,"repeat-y":1,repeat:1,"no-repeat":1},sc:{"padding-box":1,"border-box":1,"content-box":1},Pd:{top:1,right:1,
|
||||
bottom:1,left:1,center:1},Ud:{contain:1,cover:1},eb:{Ma:"backgroundClip",z:"backgroundColor",da:"backgroundImage",Pa:"backgroundOrigin",S:"backgroundPosition",T:"backgroundRepeat",Sa:"backgroundSize"},la:function(a){function b(s){return s&&s.W()||s.k&k&&s.d in t}function c(s){return s&&(s.W()&&f.n(s.d)||s.d==="auto"&&"auto")}var d=this.e.currentStyle,e,g,j,i=f.v.qa,h=i.pa,k=i.na,n=i.z,m,p,r=0,t=this.Pd,v,l,q={M:[]};if(this.wb()){e=new f.v(a);for(j={};g=e.next();){m=g.k;p=g.d;if(!j.P&&m&i.Xb&&p===
|
||||
"linear-gradient"){v={ca:[],P:p};for(l={};g=e.next();){m=g.k;p=g.d;if(m&i.Wb&&p===")"){l.color&&v.ca.push(l);v.ca.length>1&&f.p.Eb(j,v);break}if(m&n){if(v.sa||v.zb){g=e.D();if(g.k!==h)break;e.next()}l={color:f.ha(p)};g=e.next();if(g.W())l.db=f.n(g.d);else e.D()}else if(m&i.Ia&&!v.sa&&!l.color&&!v.ca.length)v.sa=new f.Ec(g.d);else if(b(g)&&!v.zb&&!l.color&&!v.ca.length){e.D();v.zb=new f.Ja(e.ma(function(s){return!b(s)},false))}else if(m&h&&p===","){if(l.color){v.ca.push(l);l={}}}else break}}else if(!j.P&&
|
||||
m&i.URL){j.Ab=p;j.P="image"}else if(b(g)&&!j.$){e.D();j.$=new f.Ja(e.ma(function(s){return!b(s)},false))}else if(m&k)if(p in this.fb&&!j.bb)j.bb=p;else if(p in this.sc&&!j.Wa){j.Wa=p;if((g=e.next())&&g.k&k&&g.d in this.sc)j.ub=g.d;else{j.ub=p;e.D()}}else if(p in this.cd&&!j.bc)j.bc=p;else return null;else if(m&n&&!q.color)q.color=f.ha(p);else if(m&h&&p==="/"&&!j.Xa&&j.$){g=e.next();if(g.k&k&&g.d in this.Ud)j.Xa=new f.Ka(g.d);else if(g=c(g)){m=c(e.next());if(!m){m=g;e.D()}j.Xa=new f.Ka(g,m)}else return null}else if(m&
|
||||
h&&p===","&&j.P){j.Hb=a.substring(r,e.ch-1);r=e.ch;q.M.push(j);j={}}else return null}if(j.P){j.Hb=a.substring(r);q.M.push(j)}}else this.Bc(f.ja<9?function(){var s=this.eb,o=d[s.S+"X"],u=d[s.S+"Y"],x=d[s.da],y=d[s.z];if(y!=="transparent")q.color=f.ha(y);if(x!=="none")q.M=[{P:"image",Ab:(new f.v(x)).next().d,bb:d[s.T],$:new f.Ja((new f.v(o+" "+u)).all())}]}:function(){var s=this.eb,o=/\s*,\s*/,u=d[s.da].split(o),x=d[s.z],y,z,B,E,D,C;if(x!=="transparent")q.color=f.ha(x);if((E=u.length)&&u[0]!=="none"){x=
|
||||
d[s.T].split(o);y=d[s.S].split(o);z=d[s.Pa].split(o);B=d[s.Ma].split(o);s=d[s.Sa].split(o);q.M=[];for(o=0;o<E;o++)if((D=u[o])&&D!=="none"){C=s[o].split(" ");q.M.push({Hb:D+" "+x[o]+" "+y[o]+" / "+s[o]+" "+z[o]+" "+B[o],P:"image",Ab:(new f.v(D)).next().d,bb:x[o],$:new f.Ja((new f.v(y[o])).all()),Wa:z[o],ub:B[o],Xa:new f.Ka(C[0],C[1])})}}});return q.color||q.M[0]?q:null},Bc:function(a){var b=f.ja>8,c=this.eb,d=this.e.runtimeStyle,e=d[c.da],g=d[c.z],j=d[c.T],i,h,k,n;if(e)d[c.da]="";if(g)d[c.z]="";if(j)d[c.T]=
|
||||
"";if(b){i=d[c.Ma];h=d[c.Pa];n=d[c.S];k=d[c.Sa];if(i)d[c.Ma]="";if(h)d[c.Pa]="";if(n)d[c.S]="";if(k)d[c.Sa]=""}a=a.call(this);if(e)d[c.da]=e;if(g)d[c.z]=g;if(j)d[c.T]=j;if(b){if(i)d[c.Ma]=i;if(h)d[c.Pa]=h;if(n)d[c.S]=n;if(k)d[c.Sa]=k}return a},ia:f.B.va(function(){return this.wb()||this.Bc(function(){var a=this.e.currentStyle,b=this.eb;return a[b.z]+" "+a[b.da]+" "+a[b.T]+" "+a[b.S+"X"]+" "+a[b.S+"Y"]})}),wb:f.B.va(function(){var a=this.e;return a.style[this.Fa]||a.currentStyle.getAttribute(this.wa)}),
|
||||
qc:function(){var a=0;if(f.O<7){a=this.e;a=""+(a.style[f.nb+"PngFix"]||a.currentStyle.getAttribute(f.F+"png-fix"))==="true"}return a},i:f.B.va(function(){return(this.wb()||this.qc())&&!!this.j()})});f.Vb=f.B.ka({wc:["Top","Right","Bottom","Left"],Id:{thin:"1px",medium:"3px",thick:"5px"},la:function(){var a={},b={},c={},d=false,e=true,g=true,j=true;this.Cc(function(){for(var i=this.e.currentStyle,h=0,k,n,m,p,r,t,v;h<4;h++){m=this.wc[h];v=m.charAt(0).toLowerCase();k=b[v]=i["border"+m+"Style"];n=i["border"+
|
||||
m+"Color"];m=i["border"+m+"Width"];if(h>0){if(k!==p)g=false;if(n!==r)e=false;if(m!==t)j=false}p=k;r=n;t=m;c[v]=f.ha(n);m=a[v]=f.n(b[v]==="none"?"0":this.Id[m]||m);if(m.a(this.e)>0)d=true}});return d?{J:a,Zd:b,gd:c,ee:j,hd:e,$d:g}:null},ia:f.B.va(function(){var a=this.e,b=a.currentStyle,c;a.tagName in f.Ac&&a.offsetParent.currentStyle.borderCollapse==="collapse"||this.Cc(function(){c=b.borderWidth+"|"+b.borderStyle+"|"+b.borderColor});return c}),Cc:function(a){var b=this.e.runtimeStyle,c=b.borderWidth,
|
||||
d=b.borderColor;if(c)b.borderWidth="";if(d)b.borderColor="";a=a.call(this);if(c)b.borderWidth=c;if(d)b.borderColor=d;return a}});(function(){f.jb=f.B.ka({wa:"border-radius",Fa:"borderRadius",la:function(b){var c=null,d,e,g,j,i=false;if(b){e=new f.v(b);var h=function(){for(var k=[],n;(g=e.next())&&g.W();){j=f.n(g.d);n=j.ic();if(n<0)return null;if(n>0)i=true;k.push(j)}return k.length>0&&k.length<5?{tl:k[0],tr:k[1]||k[0],br:k[2]||k[0],bl:k[3]||k[1]||k[0]}:null};if(b=h()){if(g){if(g.k&f.v.qa.pa&&g.d===
|
||||
"/")d=h()}else d=b;if(i&&b&&d)c={x:b,y:d}}}return c}});var a=f.n("0");a={tl:a,tr:a,br:a,bl:a};f.jb.Dc={x:a,y:a}})();f.Ub=f.B.ka({wa:"border-image",Fa:"borderImage",fb:{stretch:1,round:1,repeat:1,space:1},la:function(a){var b=null,c,d,e,g,j,i,h=0,k=f.v.qa,n=k.na,m=k.oa,p=k.Ra;if(a){c=new f.v(a);b={};for(var r=function(l){return l&&l.k&k.pa&&l.d==="/"},t=function(l){return l&&l.k&n&&l.d==="fill"},v=function(){g=c.ma(function(l){return!(l.k&(m|p))});if(t(c.next())&&!b.fill)b.fill=true;else c.D();if(r(c.next())){h++;
|
||||
j=c.ma(function(l){return!l.W()&&!(l.k&n&&l.d==="auto")});if(r(c.next())){h++;i=c.ma(function(l){return!l.Ca()})}}else c.D()};a=c.next();){d=a.k;e=a.d;if(d&(m|p)&&!g){c.D();v()}else if(t(a)&&!b.fill){b.fill=true;v()}else if(d&n&&this.fb[e]&&!b.repeat){b.repeat={f:e};if(a=c.next())if(a.k&n&&this.fb[a.d])b.repeat.Ob=a.d;else c.D()}else if(d&k.URL&&!b.src)b.src=e;else return null}if(!b.src||!g||g.length<1||g.length>4||j&&j.length>4||h===1&&j.length<1||i&&i.length>4||h===2&&i.length<1)return null;if(!b.repeat)b.repeat=
|
||||
{f:"stretch"};if(!b.repeat.Ob)b.repeat.Ob=b.repeat.f;a=function(l,q){return{t:q(l[0]),r:q(l[1]||l[0]),b:q(l[2]||l[0]),l:q(l[3]||l[1]||l[0])}};b.slice=a(g,function(l){return f.n(l.k&m?l.d+"px":l.d)});if(j&&j[0])b.J=a(j,function(l){return l.W()?f.n(l.d):l.d});if(i&&i[0])b.Da=a(i,function(l){return l.Ca()?f.n(l.d):l.d})}return b}});f.Ic=f.B.ka({wa:"box-shadow",Fa:"boxShadow",la:function(a){var b,c=f.n,d=f.v.qa,e;if(a){e=new f.v(a);b={Da:[],Bb:[]};for(a=function(){for(var g,j,i,h,k,n;g=e.next();){i=g.d;
|
||||
j=g.k;if(j&d.pa&&i===",")break;else if(g.Ca()&&!k){e.D();k=e.ma(function(m){return!m.Ca()})}else if(j&d.z&&!h)h=i;else if(j&d.na&&i==="inset"&&!n)n=true;else return false}g=k&&k.length;if(g>1&&g<5){(n?b.Bb:b.Da).push({fe:c(k[0].d),ge:c(k[1].d),blur:c(k[2]?k[2].d:"0"),Vd:c(k[3]?k[3].d:"0"),color:f.ha(h||"currentColor")});return true}return false};a(););}return b&&(b.Bb.length||b.Da.length)?b:null}});f.Uc=f.B.ka({ia:f.B.va(function(){var a=this.e.currentStyle;return a.visibility+"|"+a.display}),la:function(){var a=
|
||||
this.e,b=a.runtimeStyle;a=a.currentStyle;var c=b.visibility,d;b.visibility="";d=a.visibility;b.visibility=c;return{ce:d!=="hidden",nd:a.display!=="none"}},i:function(){return false}});f.u={R:function(a){function b(c,d,e,g){this.e=c;this.s=d;this.g=e;this.parent=g}f.p.Eb(b.prototype,f.u,a);return b},Cb:false,Q:function(){return false},Ea:f.aa,Lb:function(){this.m();this.i()&&this.V()},ib:function(){this.Cb=true},Mb:function(){this.i()?this.V():this.m()},sb:function(a,b){this.vc(a);for(var c=this.ra||
|
||||
(this.ra=[]),d=a+1,e=c.length,g;d<e;d++)if(g=c[d])break;c[a]=b;this.I().insertBefore(b,g||null)},za:function(a){var b=this.ra;return b&&b[a]||null},vc:function(a){var b=this.za(a),c=this.Ta;if(b&&c){c.removeChild(b);this.ra[a]=null}},Aa:function(a,b,c,d){var e=this.rb||(this.rb={}),g=e[a];if(!g){g=e[a]=f.p.Za("shape");if(b)g.appendChild(g[b]=f.p.Za(b));if(d){c=this.za(d);if(!c){this.sb(d,doc.createElement("group"+d));c=this.za(d)}}c.appendChild(g);a=g.style;a.position="absolute";a.left=a.top=0;a.behavior=
|
||||
"url(#default#VML)"}return g},vb:function(a){var b=this.rb,c=b&&b[a];if(c){c.parentNode.removeChild(c);delete b[a]}return!!c},kc:function(a){var b=this.e,c=this.s.o(),d=c.h,e=c.f,g,j,i,h,k,n;c=a.x.tl.a(b,d);g=a.y.tl.a(b,e);j=a.x.tr.a(b,d);i=a.y.tr.a(b,e);h=a.x.br.a(b,d);k=a.y.br.a(b,e);n=a.x.bl.a(b,d);a=a.y.bl.a(b,e);d=Math.min(d/(c+j),e/(i+k),d/(n+h),e/(g+a));if(d<1){c*=d;g*=d;j*=d;i*=d;h*=d;k*=d;n*=d;a*=d}return{x:{tl:c,tr:j,br:h,bl:n},y:{tl:g,tr:i,br:k,bl:a}}},ya:function(a,b,c){b=b||1;var d,e,
|
||||
g=this.s.o();e=g.h*b;g=g.f*b;var j=this.g.G,i=Math.floor,h=Math.ceil,k=a?a.Jb*b:0,n=a?a.Ib*b:0,m=a?a.tb*b:0;a=a?a.Db*b:0;var p,r,t,v,l;if(c||j.i()){d=this.kc(c||j.j());c=d.x.tl*b;j=d.y.tl*b;p=d.x.tr*b;r=d.y.tr*b;t=d.x.br*b;v=d.y.br*b;l=d.x.bl*b;b=d.y.bl*b;e="m"+i(a)+","+i(j)+"qy"+i(c)+","+i(k)+"l"+h(e-p)+","+i(k)+"qx"+h(e-n)+","+i(r)+"l"+h(e-n)+","+h(g-v)+"qy"+h(e-t)+","+h(g-m)+"l"+i(l)+","+h(g-m)+"qx"+i(a)+","+h(g-b)+" x e"}else e="m"+i(a)+","+i(k)+"l"+h(e-n)+","+i(k)+"l"+h(e-n)+","+h(g-m)+"l"+i(a)+
|
||||
","+h(g-m)+"xe";return e},I:function(){var a=this.parent.za(this.N),b;if(!a){a=doc.createElement(this.Ya);b=a.style;b.position="absolute";b.top=b.left=0;this.parent.sb(this.N,a)}return a},mc:function(){var a=this.e,b=a.currentStyle,c=a.runtimeStyle,d=a.tagName,e=f.O===6,g;if(e&&(d in f.cc||d==="FIELDSET")||d==="BUTTON"||d==="INPUT"&&a.type in f.Gd){c.borderWidth="";d=this.g.w.wc;for(g=d.length;g--;){e=d[g];c["padding"+e]="";c["padding"+e]=f.n(b["padding"+e]).a(a)+f.n(b["border"+e+"Width"]).a(a)+(f.O!==
|
||||
8&&g%2?1:0)}c.borderWidth=0}else if(e){if(a.childNodes.length!==1||a.firstChild.tagName!=="ie6-mask"){b=doc.createElement("ie6-mask");d=b.style;d.visibility="visible";for(d.zoom=1;d=a.firstChild;)b.appendChild(d);a.appendChild(b);c.visibility="hidden"}}else c.borderColor="transparent"},ie:function(){},m:function(){this.parent.vc(this.N);delete this.rb;delete this.ra}};f.Rc=f.u.R({i:function(){var a=this.ed;for(var b in a)if(a.hasOwnProperty(b)&&a[b].i())return true;return false},Q:function(){return this.g.Pb.H()},
|
||||
ib:function(){if(this.i()){var a=this.jc(),b=a,c;a=a.currentStyle;var d=a.position,e=this.I().style,g=0,j=0;j=this.s.o();var i=j.Hd;if(d==="fixed"&&f.O>6){g=j.x*i;j=j.y*i;b=d}else{do b=b.offsetParent;while(b&&b.currentStyle.position==="static");if(b){c=b.getBoundingClientRect();b=b.currentStyle;g=(j.x-c.left)*i-(parseFloat(b.borderLeftWidth)||0);j=(j.y-c.top)*i-(parseFloat(b.borderTopWidth)||0)}else{b=doc.documentElement;g=(j.x+b.scrollLeft-b.clientLeft)*i;j=(j.y+b.scrollTop-b.clientTop)*i}b="absolute"}e.position=
|
||||
b;e.left=g;e.top=j;e.zIndex=d==="static"?-1:a.zIndex;this.Cb=true}},Mb:f.aa,Nb:function(){var a=this.g.Pb.j();this.I().style.display=a.ce&&a.nd?"":"none"},Lb:function(){this.i()?this.Nb():this.m()},jc:function(){var a=this.e;return a.tagName in f.Ac?a.offsetParent:a},I:function(){var a=this.Ta,b;if(!a){b=this.jc();a=this.Ta=doc.createElement("css3-container");a.style.direction="ltr";this.Nb();b.parentNode.insertBefore(a,b)}return a},ab:f.aa,m:function(){var a=this.Ta,b;if(a&&(b=a.parentNode))b.removeChild(a);
|
||||
delete this.Ta;delete this.ra}});f.Fc=f.u.R({N:2,Ya:"background",Q:function(){var a=this.g;return a.C.H()||a.G.H()},i:function(){var a=this.g;return a.q.i()||a.G.i()||a.C.i()||a.ga.i()&&a.ga.j().Bb},V:function(){var a=this.s.o();if(a.h&&a.f){this.od();this.pd()}},od:function(){var a=this.g.C.j(),b=this.s.o(),c=this.e,d=a&&a.color,e,g;if(d&&d.fa()>0){this.lc();a=this.Aa("bgColor","fill",this.I(),1);e=b.h;b=b.f;a.stroked=false;a.coordsize=e*2+","+b*2;a.coordorigin="1,1";a.path=this.ya(null,2);g=a.style;
|
||||
g.width=e;g.height=b;a.fill.color=d.U(c);c=d.fa();if(c<1)a.fill.opacity=c}else this.vb("bgColor")},pd:function(){var a=this.g.C.j(),b=this.s.o();a=a&&a.M;var c,d,e,g,j;if(a){this.lc();d=b.h;e=b.f;for(j=a.length;j--;){b=a[j];c=this.Aa("bgImage"+j,"fill",this.I(),2);c.stroked=false;c.fill.type="tile";c.fillcolor="none";c.coordsize=d*2+","+e*2;c.coordorigin="1,1";c.path=this.ya(0,2);g=c.style;g.width=d;g.height=e;if(b.P==="linear-gradient")this.bd(c,b);else{c.fill.src=b.Ab;this.Nd(c,j)}}}for(j=a?a.length:
|
||||
0;this.vb("bgImage"+j++););},Nd:function(a,b){var c=this;f.p.Rb(a.fill.src,function(d){var e=c.e,g=c.s.o(),j=g.h;g=g.f;if(j&&g){var i=a.fill,h=c.g,k=h.w.j(),n=k&&k.J;k=n?n.t.a(e):0;var m=n?n.r.a(e):0,p=n?n.b.a(e):0;n=n?n.l.a(e):0;h=h.C.j().M[b];e=h.$?h.$.coords(e,j-d.h-n-m,g-d.f-k-p):{x:0,y:0};h=h.bb;p=m=0;var r=j+1,t=g+1,v=f.O===8?0:1;n=Math.round(e.x)+n+0.5;k=Math.round(e.y)+k+0.5;i.position=n/j+","+k/g;i.size.x=1;i.size=d.h+"px,"+d.f+"px";if(h&&h!=="repeat"){if(h==="repeat-x"||h==="no-repeat"){m=
|
||||
k+1;t=k+d.f+v}if(h==="repeat-y"||h==="no-repeat"){p=n+1;r=n+d.h+v}a.style.clip="rect("+m+"px,"+r+"px,"+t+"px,"+p+"px)"}}})},bd:function(a,b){var c=this.e,d=this.s.o(),e=d.h,g=d.f;a=a.fill;d=b.ca;var j=d.length,i=Math.PI,h=f.Na,k=h.tc,n=h.dc;b=h.gc(c,e,g,b);h=b.sa;var m=b.xc,p=b.yc,r=b.Wd,t=b.Xd,v=b.rd,l=b.sd,q=b.kd,s=b.ld;b=b.rc;e=h%90?Math.atan2(q*e/g,s)/i*180:h+90;e+=180;e%=360;v=k(r,t,h,v,l);g=n(r,t,v[0],v[1]);i=[];v=k(m,p,h,r,t);n=n(m,p,v[0],v[1])/g*100;k=[];for(h=0;h<j;h++)k.push(d[h].db?d[h].db.a(c,
|
||||
b):h===0?0:h===j-1?b:null);for(h=1;h<j;h++){if(k[h]===null){m=k[h-1];b=h;do p=k[++b];while(p===null);k[h]=m+(p-m)/(b-h+1)}k[h]=Math.max(k[h],k[h-1])}for(h=0;h<j;h++)i.push(n+k[h]/g*100+"% "+d[h].color.U(c));a.angle=e;a.type="gradient";a.method="sigma";a.color=d[0].color.U(c);a.color2=d[j-1].color.U(c);if(a.colors)a.colors.value=i.join(",");else a.colors=i.join(",")},lc:function(){var a=this.e.runtimeStyle;a.backgroundImage="url(about:blank)";a.backgroundColor="transparent"},m:function(){f.u.m.call(this);
|
||||
var a=this.e.runtimeStyle;a.backgroundImage=a.backgroundColor=""}});f.Gc=f.u.R({N:4,Ya:"border",Q:function(){var a=this.g;return a.w.H()||a.G.H()},i:function(){var a=this.g;return a.G.i()&&!a.q.i()&&a.w.i()},V:function(){var a=this.e,b=this.g.w.j(),c=this.s.o(),d=c.h;c=c.f;var e,g,j,i,h;if(b){this.mc();b=this.wd(2);i=0;for(h=b.length;i<h;i++){j=b[i];e=this.Aa("borderPiece"+i,j.stroke?"stroke":"fill",this.I());e.coordsize=d*2+","+c*2;e.coordorigin="1,1";e.path=j.path;g=e.style;g.width=d;g.height=c;
|
||||
e.filled=!!j.fill;e.stroked=!!j.stroke;if(j.stroke){e=e.stroke;e.weight=j.Qb+"px";e.color=j.color.U(a);e.dashstyle=j.stroke==="dashed"?"2 2":j.stroke==="dotted"?"1 1":"solid";e.linestyle=j.stroke==="double"&&j.Qb>2?"ThinThin":"Single"}else e.fill.color=j.fill.U(a)}for(;this.vb("borderPiece"+i++););}},wd:function(a){var b=this.e,c,d,e,g=this.g.w,j=[],i,h,k,n,m=Math.round,p,r,t;if(g.i()){c=g.j();g=c.J;r=c.Zd;t=c.gd;if(c.ee&&c.$d&&c.hd){if(t.t.fa()>0){c=g.t.a(b);k=c/2;j.push({path:this.ya({Jb:k,Ib:k,
|
||||
tb:k,Db:k},a),stroke:r.t,color:t.t,Qb:c})}}else{a=a||1;c=this.s.o();d=c.h;e=c.f;c=m(g.t.a(b));k=m(g.r.a(b));n=m(g.b.a(b));b=m(g.l.a(b));var v={t:c,r:k,b:n,l:b};b=this.g.G;if(b.i())p=this.kc(b.j());i=Math.floor;h=Math.ceil;var l=function(o,u){return p?p[o][u]:0},q=function(o,u,x,y,z,B){var E=l("x",o),D=l("y",o),C=o.charAt(1)==="r";o=o.charAt(0)==="b";return E>0&&D>0?(B?"al":"ae")+(C?h(d-E):i(E))*a+","+(o?h(e-D):i(D))*a+","+(i(E)-u)*a+","+(i(D)-x)*a+","+y*65535+","+2949075*(z?1:-1):(B?"m":"l")+(C?d-
|
||||
u:u)*a+","+(o?e-x:x)*a},s=function(o,u,x,y){var z=o==="t"?i(l("x","tl"))*a+","+h(u)*a:o==="r"?h(d-u)*a+","+i(l("y","tr"))*a:o==="b"?h(d-l("x","br"))*a+","+i(e-u)*a:i(u)*a+","+h(e-l("y","bl"))*a;o=o==="t"?h(d-l("x","tr"))*a+","+h(u)*a:o==="r"?h(d-u)*a+","+h(e-l("y","br"))*a:o==="b"?i(l("x","bl"))*a+","+i(e-u)*a:i(u)*a+","+i(l("y","tl"))*a;return x?(y?"m"+o:"")+"l"+z:(y?"m"+z:"")+"l"+o};b=function(o,u,x,y,z,B){var E=o==="l"||o==="r",D=v[o],C,F;if(D>0&&r[o]!=="none"&&t[o].fa()>0){C=v[E?o:u];u=v[E?u:
|
||||
o];F=v[E?o:x];x=v[E?x:o];if(r[o]==="dashed"||r[o]==="dotted"){j.push({path:q(y,C,u,B+45,0,1)+q(y,0,0,B,1,0),fill:t[o]});j.push({path:s(o,D/2,0,1),stroke:r[o],Qb:D,color:t[o]});j.push({path:q(z,F,x,B,0,1)+q(z,0,0,B-45,1,0),fill:t[o]})}else j.push({path:q(y,C,u,B+45,0,1)+s(o,D,0,0)+q(z,F,x,B,0,0)+(r[o]==="double"&&D>2?q(z,F-i(F/3),x-i(x/3),B-45,1,0)+s(o,h(D/3*2),1,0)+q(y,C-i(C/3),u-i(u/3),B,1,0)+"x "+q(y,i(C/3),i(u/3),B+45,0,1)+s(o,i(D/3),1,0)+q(z,i(F/3),i(x/3),B,0,0):"")+q(z,0,0,B-45,1,0)+s(o,0,1,
|
||||
0)+q(y,0,0,B,1,0),fill:t[o]})}};b("t","l","r","tl","tr",90);b("r","t","b","tr","br",0);b("b","r","l","br","bl",-90);b("l","b","t","bl","tl",-180)}}return j},m:function(){if(this.ec||!this.g.q.i())this.e.runtimeStyle.borderColor="";f.u.m.call(this)}});f.Tb=f.u.R({N:5,Md:["t","tr","r","br","b","bl","l","tl","c"],Q:function(){return this.g.q.H()},i:function(){return this.g.q.i()},V:function(){this.I();var a=this.g.q.j(),b=this.g.w.j(),c=this.s.o(),d=this.e,e=this.uc;f.p.Rb(a.src,function(g){function j(s,
|
||||
o,u,x,y){s=e[s].style;var z=Math.max;s.width=z(o,0);s.height=z(u,0);s.left=x;s.top=y}function i(s,o,u){for(var x=0,y=s.length;x<y;x++)e[s[x]].imagedata[o]=u}var h=c.h,k=c.f,n=f.n("0"),m=a.J||(b?b.J:{t:n,r:n,b:n,l:n});n=m.t.a(d);var p=m.r.a(d),r=m.b.a(d);m=m.l.a(d);var t=a.slice,v=t.t.a(d),l=t.r.a(d),q=t.b.a(d);t=t.l.a(d);j("tl",m,n,0,0);j("t",h-m-p,n,m,0);j("tr",p,n,h-p,0);j("r",p,k-n-r,h-p,n);j("br",p,r,h-p,k-r);j("b",h-m-p,r,m,k-r);j("bl",m,r,0,k-r);j("l",m,k-n-r,0,n);j("c",h-m-p,k-n-r,m,n);i(["tl",
|
||||
"t","tr"],"cropBottom",(g.f-v)/g.f);i(["tl","l","bl"],"cropRight",(g.h-t)/g.h);i(["bl","b","br"],"cropTop",(g.f-q)/g.f);i(["tr","r","br"],"cropLeft",(g.h-l)/g.h);i(["l","r","c"],"cropTop",v/g.f);i(["l","r","c"],"cropBottom",q/g.f);i(["t","b","c"],"cropLeft",t/g.h);i(["t","b","c"],"cropRight",l/g.h);e.c.style.display=a.fill?"":"none"},this)},I:function(){var a=this.parent.za(this.N),b,c,d,e=this.Md,g=e.length;if(!a){a=doc.createElement("border-image");b=a.style;b.position="absolute";this.uc={};for(d=
|
||||
0;d<g;d++){c=this.uc[e[d]]=f.p.Za("rect");c.appendChild(f.p.Za("imagedata"));b=c.style;b.behavior="url(#default#VML)";b.position="absolute";b.top=b.left=0;c.imagedata.src=this.g.q.j().src;c.stroked=false;c.filled=false;a.appendChild(c)}this.parent.sb(this.N,a)}return a},Ea:function(){if(this.i()){var a=this.e,b=a.runtimeStyle,c=this.g.q.j().J;b.borderStyle="solid";if(c){b.borderTopWidth=c.t.a(a)+"px";b.borderRightWidth=c.r.a(a)+"px";b.borderBottomWidth=c.b.a(a)+"px";b.borderLeftWidth=c.l.a(a)+"px"}this.mc()}},
|
||||
m:function(){var a=this.e.runtimeStyle;a.borderStyle="";if(this.ec||!this.g.w.i())a.borderColor=a.borderWidth="";f.u.m.call(this)}});f.Hc=f.u.R({N:1,Ya:"outset-box-shadow",Q:function(){var a=this.g;return a.ga.H()||a.G.H()},i:function(){var a=this.g.ga;return a.i()&&a.j().Da[0]},V:function(){function a(C,F,O,H,M,P,I){C=b.Aa("shadow"+C+F,"fill",d,j-C);F=C.fill;C.coordsize=n*2+","+m*2;C.coordorigin="1,1";C.stroked=false;C.filled=true;F.color=M.U(c);if(P){F.type="gradienttitle";F.color2=F.color;F.opacity=
|
||||
0}C.path=I;l=C.style;l.left=O;l.top=H;l.width=n;l.height=m;return C}var b=this,c=this.e,d=this.I(),e=this.g,g=e.ga.j().Da;e=e.G.j();var j=g.length,i=j,h,k=this.s.o(),n=k.h,m=k.f;k=f.O===8?1:0;for(var p=["tl","tr","br","bl"],r,t,v,l,q,s,o,u,x,y,z,B,E,D;i--;){t=g[i];q=t.fe.a(c);s=t.ge.a(c);h=t.Vd.a(c);o=t.blur.a(c);t=t.color;u=-h-o;if(!e&&o)e=f.jb.Dc;u=this.ya({Jb:u,Ib:u,tb:u,Db:u},2,e);if(o){x=(h+o)*2+n;y=(h+o)*2+m;z=x?o*2/x:0;B=y?o*2/y:0;if(o-h>n/2||o-h>m/2)for(h=4;h--;){r=p[h];E=r.charAt(0)==="b";
|
||||
D=r.charAt(1)==="r";r=a(i,r,q,s,t,o,u);v=r.fill;v.focusposition=(D?1-z:z)+","+(E?1-B:B);v.focussize="0,0";r.style.clip="rect("+((E?y/2:0)+k)+"px,"+(D?x:x/2)+"px,"+(E?y:y/2)+"px,"+((D?x/2:0)+k)+"px)"}else{r=a(i,"",q,s,t,o,u);v=r.fill;v.focusposition=z+","+B;v.focussize=1-z*2+","+(1-B*2)}}else{r=a(i,"",q,s,t,o,u);q=t.fa();if(q<1)r.fill.opacity=q}}}});f.Pc=f.u.R({N:6,Ya:"imgEl",Q:function(){var a=this.g;return this.e.src!==this.Xc||a.G.H()},i:function(){var a=this.g;return a.G.i()||a.C.qc()},V:function(){this.Xc=
|
||||
j;this.Cd();var a=this.Aa("img","fill",this.I()),b=a.fill,c=this.s.o(),d=c.h;c=c.f;var e=this.g.w.j(),g=e&&e.J;e=this.e;var j=e.src,i=Math.round,h=e.currentStyle,k=f.n;if(!g||f.O<7){g=f.n("0");g={t:g,r:g,b:g,l:g}}a.stroked=false;b.type="frame";b.src=j;b.position=(d?0.5/d:0)+","+(c?0.5/c:0);a.coordsize=d*2+","+c*2;a.coordorigin="1,1";a.path=this.ya({Jb:i(g.t.a(e)+k(h.paddingTop).a(e)),Ib:i(g.r.a(e)+k(h.paddingRight).a(e)),tb:i(g.b.a(e)+k(h.paddingBottom).a(e)),Db:i(g.l.a(e)+k(h.paddingLeft).a(e))},
|
||||
2);a=a.style;a.width=d;a.height=c},Cd:function(){this.e.runtimeStyle.filter="alpha(opacity=0)"},m:function(){f.u.m.call(this);this.e.runtimeStyle.filter=""}});f.Oc=f.u.R({ib:f.aa,Mb:f.aa,Nb:f.aa,Lb:f.aa,Ld:/^,+|,+$/g,Fd:/,+/g,gb:function(a,b){(this.pb||(this.pb=[]))[a]=b||void 0},ab:function(){var a=this.pb,b;if(a&&(b=a.join(",").replace(this.Ld,"").replace(this.Fd,","))!==this.Wc)this.Wc=this.e.runtimeStyle.background=b},m:function(){this.e.runtimeStyle.background="";delete this.pb}});f.Mc=f.u.R({ua:1,
|
||||
Q:function(){return this.g.C.H()},i:function(){var a=this.g;return a.C.i()||a.q.i()},V:function(){var a=this.g.C.j(),b,c,d=0,e,g;if(a){b=[];if(c=a.M)for(;e=c[d++];)if(e.P==="linear-gradient"){g=this.vd(e.Wa);g=(e.Xa||f.Ka.Kc).a(this.e,g.h,g.f,g.h,g.f);b.push("url(data:image/svg+xml,"+escape(this.xd(e,g.h,g.f))+") "+this.dd(e.$)+" / "+g.h+"px "+g.f+"px "+(e.bc||"")+" "+(e.Wa||"")+" "+(e.ub||""))}else b.push(e.Hb);a.color&&b.push(a.color.Y);this.parent.gb(this.ua,b.join(","))}},dd:function(a){return a?
|
||||
a.X.map(function(b){return b.d}).join(" "):"0 0"},vd:function(a){var b=this.e,c=this.s.o(),d=c.h;c=c.f;var e;if(a!=="border-box")if((e=this.g.w.j())&&(e=e.J)){d-=e.l.a(b)+e.l.a(b);c-=e.t.a(b)+e.b.a(b)}if(a==="content-box"){a=f.n;e=b.currentStyle;d-=a(e.paddingLeft).a(b)+a(e.paddingRight).a(b);c-=a(e.paddingTop).a(b)+a(e.paddingBottom).a(b)}return{h:d,f:c}},xd:function(a,b,c){var d=this.e,e=a.ca,g=e.length,j=f.Na.gc(d,b,c,a);a=j.xc;var i=j.yc,h=j.td,k=j.ud;j=j.rc;var n,m,p,r,t;n=[];for(m=0;m<g;m++)n.push(e[m].db?
|
||||
e[m].db.a(d,j):m===0?0:m===g-1?j:null);for(m=1;m<g;m++)if(n[m]===null){r=n[m-1];p=m;do t=n[++p];while(t===null);n[m]=r+(t-r)/(p-m+1)}b=['<svg width="'+b+'" height="'+c+'" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="g" gradientUnits="userSpaceOnUse" x1="'+a/b*100+'%" y1="'+i/c*100+'%" x2="'+h/b*100+'%" y2="'+k/c*100+'%">'];for(m=0;m<g;m++)b.push('<stop offset="'+n[m]/j+'" stop-color="'+e[m].color.U(d)+'" stop-opacity="'+e[m].color.fa()+'"/>');b.push('</linearGradient></defs><rect width="100%" height="100%" fill="url(#g)"/></svg>');
|
||||
return b.join("")},m:function(){this.parent.gb(this.ua)}});f.Nc=f.u.R({T:"repeat",Sc:"stretch",Qc:"round",ua:0,Q:function(){return this.g.q.H()},i:function(){return this.g.q.i()},V:function(){var a=this,b=a.g.q.j(),c=a.g.w.j(),d=a.s.o(),e=b.repeat,g=e.f,j=e.Ob,i=a.e,h=0;f.p.Rb(b.src,function(k){function n(Q,R,U,V,W,Y,X,S,w,A){K.push('<pattern patternUnits="userSpaceOnUse" id="pattern'+G+'" x="'+(g===l?Q+U/2-w/2:Q)+'" y="'+(j===l?R+V/2-A/2:R)+'" width="'+w+'" height="'+A+'"><svg width="'+w+'" height="'+
|
||||
A+'" viewBox="'+W+" "+Y+" "+X+" "+S+'" preserveAspectRatio="none"><image xlink:href="'+v+'" x="0" y="0" width="'+r+'" height="'+t+'" /></svg></pattern>');J.push('<rect x="'+Q+'" y="'+R+'" width="'+U+'" height="'+V+'" fill="url(#pattern'+G+')" />');G++}var m=d.h,p=d.f,r=k.h,t=k.f,v=a.Dd(b.src,r,t),l=a.T,q=a.Sc;k=a.Qc;var s=Math.ceil,o=f.n("0"),u=b.J||(c?c.J:{t:o,r:o,b:o,l:o});o=u.t.a(i);var x=u.r.a(i),y=u.b.a(i);u=u.l.a(i);var z=b.slice,B=z.t.a(i),E=z.r.a(i),D=z.b.a(i);z=z.l.a(i);var C=m-u-x,F=p-o-
|
||||
y,O=r-z-E,H=t-B-D,M=g===q?C:O*o/B,P=j===q?F:H*x/E,I=g===q?C:O*y/D;q=j===q?F:H*u/z;var K=[],J=[],G=0;if(g===k){M-=(M-(C%M||M))/s(C/M);I-=(I-(C%I||I))/s(C/I)}if(j===k){P-=(P-(F%P||P))/s(F/P);q-=(q-(F%q||q))/s(F/q)}k=['<svg width="'+m+'" height="'+p+'" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">'];n(0,0,u,o,0,0,z,B,u,o);n(u,0,C,o,z,0,O,B,M,o);n(m-x,0,x,o,r-E,0,E,B,x,o);n(0,o,u,F,0,B,z,H,u,q);if(b.fill)n(u,o,C,F,z,B,O,H,M||I||O,q||P||H);n(m-x,o,x,F,r-E,B,E,H,x,P);n(0,
|
||||
p-y,u,y,0,t-D,z,D,u,y);n(u,p-y,C,y,z,t-D,O,D,I,y);n(m-x,p-y,x,y,r-E,t-D,E,D,x,y);k.push("<defs>"+K.join("\n")+"</defs>"+J.join("\n")+"</svg>");a.parent.gb(a.ua,"url(data:image/svg+xml,"+escape(k.join(""))+") no-repeat border-box border-box");h&&a.parent.ab()},a);h=1},Dd:function(){var a={};return function(b,c,d){var e=a[b],g;if(!e){e=new Image;g=doc.createElement("canvas");e.src=b;g.width=c;g.height=d;g.getContext("2d").drawImage(e,0,0);e=a[b]=g.toDataURL()}return e}}(),Ea:f.Tb.prototype.Ea,m:function(){var a=
|
||||
this.e.runtimeStyle;this.parent.gb(this.ua);a.borderColor=a.borderStyle=a.borderWidth=""}});f.kb=function(){function a(l,q){l.className+=" "+q}function b(l){var q=v.slice.call(arguments,1),s=q.length;setTimeout(function(){if(l)for(;s--;)a(l,q[s])},0)}function c(l){var q=v.slice.call(arguments,1),s=q.length;setTimeout(function(){if(l)for(;s--;){var o=q[s];o=t[o]||(t[o]=new RegExp("\\b"+o+"\\b","g"));l.className=l.className.replace(o,"")}},0)}function d(l){function q(){if(!U){var w,A,L=f.ja,T=l.currentStyle,
|
||||
N=T.getAttribute(g)==="true",da=T.getAttribute(i)!=="false",ea=T.getAttribute(h)!=="false";S=T.getAttribute(j);S=L>7?S!=="false":S==="true";if(!R){R=1;l.runtimeStyle.zoom=1;T=l;for(var fa=1;T=T.previousSibling;)if(T.nodeType===1){fa=0;break}fa&&a(l,p)}J.cb();if(N&&(A=J.o())&&(w=doc.documentElement||doc.body)&&(A.y>w.clientHeight||A.x>w.clientWidth||A.y+A.f<0||A.x+A.h<0)){if(!Y){Y=1;f.mb.ba(q)}}else{U=1;Y=R=0;f.mb.Ha(q);if(L===9){G={C:new f.Sb(l),q:new f.Ub(l),w:new f.Vb(l)};Q=[G.C,G.q];K=new f.Oc(l,
|
||||
J,G);w=[new f.Mc(l,J,G,K),new f.Nc(l,J,G,K)]}else{G={C:new f.Sb(l),w:new f.Vb(l),q:new f.Ub(l),G:new f.jb(l),ga:new f.Ic(l),Pb:new f.Uc(l)};Q=[G.C,G.w,G.q,G.G,G.ga,G.Pb];K=new f.Rc(l,J,G);w=[new f.Hc(l,J,G,K),new f.Fc(l,J,G,K),new f.Gc(l,J,G,K),new f.Tb(l,J,G,K)];l.tagName==="IMG"&&w.push(new f.Pc(l,J,G,K));K.ed=w}I=[K].concat(w);if(w=l.currentStyle.getAttribute(f.F+"watch-ancestors")){w=parseInt(w,10);A=0;for(N=l.parentNode;N&&(w==="NaN"||A++<w);){H(N,"onpropertychange",C);H(N,"onmouseenter",x);
|
||||
H(N,"onmouseleave",y);H(N,"onmousedown",z);if(N.tagName in f.fc){H(N,"onfocus",E);H(N,"onblur",D)}N=N.parentNode}}if(S){f.Oa.ba(o);f.Oa.Rd()}o(1)}if(!V){V=1;L<9&&H(l,"onmove",s);H(l,"onresize",s);H(l,"onpropertychange",u);ea&&H(l,"onmouseenter",x);if(ea||da)H(l,"onmouseleave",y);da&&H(l,"onmousedown",z);if(l.tagName in f.fc){H(l,"onfocus",E);H(l,"onblur",D)}f.Qa.ba(s);f.L.ba(M)}J.hb()}}function s(){J&&J.Ad()&&o()}function o(w){if(!X)if(U){var A,L=I.length;F();for(A=0;A<L;A++)I[A].Ea();if(w||J.Od())for(A=
|
||||
0;A<L;A++)I[A].ib();if(w||J.Td())for(A=0;A<L;A++)I[A].Mb();K.ab();O()}else R||q()}function u(){var w,A=I.length,L;w=event;if(!X&&!(w&&w.propertyName in r))if(U){F();for(w=0;w<A;w++)I[w].Ea();for(w=0;w<A;w++){L=I[w];L.Cb||L.ib();L.Q()&&L.Lb()}K.ab();O()}else R||q()}function x(){b(l,k)}function y(){c(l,k,n)}function z(){b(l,n);f.lb.ba(B)}function B(){c(l,n);f.lb.Ha(B)}function E(){b(l,m)}function D(){c(l,m)}function C(){var w=event.propertyName;if(w==="className"||w==="id")u()}function F(){J.cb();for(var w=
|
||||
Q.length;w--;)Q[w].cb()}function O(){for(var w=Q.length;w--;)Q[w].hb();J.hb()}function H(w,A,L){w.attachEvent(A,L);W.push([w,A,L])}function M(){if(V){for(var w=W.length,A;w--;){A=W[w];A[0].detachEvent(A[1],A[2])}f.L.Ha(M);V=0;W=[]}}function P(){if(!X){var w,A;M();X=1;if(I){w=0;for(A=I.length;w<A;w++){I[w].ec=1;I[w].m()}}S&&f.Oa.Ha(o);f.Qa.Ha(o);I=J=G=Q=l=null}}var I,K,J=new ha(l),G,Q,R,U,V,W=[],Y,X,S;this.Ed=q;this.update=o;this.m=P;this.qd=l}var e={},g=f.F+"lazy-init",j=f.F+"poll",i=f.F+"track-active",
|
||||
h=f.F+"track-hover",k=f.La+"hover",n=f.La+"active",m=f.La+"focus",p=f.La+"first-child",r={background:1,bgColor:1,display:1},t={},v=[];d.yd=function(l){var q=f.p.Ba(l);return e[q]||(e[q]=new d(l))};d.m=function(l){l=f.p.Ba(l);var q=e[l];if(q){q.m();delete e[l]}};d.md=function(){var l=[],q;if(e){for(var s in e)if(e.hasOwnProperty(s)){q=e[s];l.push(q.qd);q.m()}e={}}return l};return d}();f.supportsVML=f.zc;f.attach=function(a){f.ja<10&&f.zc&&f.kb.yd(a).Ed()};f.detach=function(a){f.kb.m(a)}};
|
||||
var $=element;function init(){if(doc.media!=="print"){var a=window.PIE;a&&a.attach($)}}function cleanup(){if(doc.media!=="print"){var a=window.PIE;if(a){a.detach($);$=0}}}$.readyState==="complete"&&init();
|
||||
</script>
|
||||
</PUBLIC:COMPONENT>
|
@ -0,0 +1,7 @@
|
||||
<component lightWeight="true">
|
||||
<attach event="onpropertychange" onevent="handlePropertychange()" />
|
||||
<attach event="ondetach" onevent="restore()" />
|
||||
<attach event="onresize" for="window" onevent="handleResize()" />
|
||||
<script type="text/javascript">
|
||||
var rsrc=/url\(["']?(.*?)["']?\)/,positions={top:0,left:0,bottom:1,right:1,center:0.5},doc=element.document;init(); function init(){var b=doc.createElement("div"),a=doc.createElement("img"),c,d;b.style.position="absolute";b.style.zIndex=-1;b.style.top=0;b.style.right=0;b.style.left=0;b.style.bottom=0;b.style.overflow="hidden";a.style.position="absolute";a.style.width=a.style.width="auto";b.appendChild(a);element.insertBefore(b,element.firstChild);d=[element.currentStyle.backgroundPositionX,element.currentStyle.backgroundPositionY];element.bgsExpando=c={wrapper:b,img:a,backgroundSize:element.currentStyle["background-size"], backgroundPositionX:positions[d[0]]||parseFloat(d[0])/100,backgroundPositionY:positions[d[1]]||parseFloat(d[1])/100};"auto"==element.currentStyle.zIndex&&(element.style.zIndex=0);"static"==element.currentStyle.position&&(element.style.position="relative");refreshDisplay(element,c)&&(refreshDimensions(element,c),refreshBackgroundImage(element,c,function(){updateBackground(element,c)}))} function refreshDisplay(b,a){var c=b.currentStyle.display;c!=a.display&&(a.display=c,a.somethingChanged=!0);return"none"!=c}function refreshDimensions(b,a){var c=b.offsetWidth-(parseFloat(b.currentStyle.borderLeftWidth)||0)-(parseFloat(b.currentStyle.borderRightWidth)||0),d=b.offsetHeight-(parseFloat(b.currentStyle.borderTopWidth)||0)-(parseFloat(b.currentStyle.borderBottomWidth)||0);if(c!=a.innerWidth||d!=a.innerHeight)a.innerWidth=c,a.innerHeight=d,a.somethingChanged=!0} function refreshBackgroundImage(b,a,c){var d=a.img,e=(rsrc.exec(b.currentStyle.backgroundImage)||[])[1];if(e&&e!=a.backgroundSrc){a.backgroundSrc=e;a.somethingChanged=!0;d.onload=function(){var b=d.width,e=d.height;1==b&&1==e||(a.imgWidth=b,a.imgHeight=e,a.constrain=!1,c(),d.style.visibility="visible",d.onload=null)};d.style.visibility="hidden";d.src=a.backgroundSrc;if(d.readyState||d.complete)d.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==",d.src=a.backgroundSrc;a.ignoreNextPropertyChange= !0;b.style.backgroundImage="none"}else c()} function updateBackground(b,a){if(a.somethingChanged){var c=a.img,d=a.innerWidth/a.innerHeight,e=a.imgWidth/a.imgHeight,f=a.constrain;"contain"==a.backgroundSize?e>d?(a.constrain=d="width",e=Math.floor((a.innerHeight-a.innerWidth/e)*a.backgroundPositionY),c.style.top=e+"px",d!=f&&(c.style.width="100%",c.style.height="auto",c.style.left=0)):(a.constrain=d="height",e=Math.floor((a.innerWidth-a.innerHeight*e)*a.backgroundPositionX),c.style.left=e+"px",d!=f&&(c.style.width="auto",c.style.height="100%", c.style.top=0)):"cover"==a.backgroundSize&&(e>d?(a.constrain=d="height",e=Math.floor((a.innerHeight*e-a.innerWidth)*a.backgroundPositionX),c.style.left=-e+"px",d!=f&&(c.style.width="auto",c.style.height="100%",c.style.top=0)):(a.constrain=d="width",e=Math.floor((a.innerWidth/e-a.innerHeight)*a.backgroundPositionY),c.style.top=-e+"px",d!=f&&(c.style.width="100%",c.style.height="auto",c.style.left=0)));a.somethingChanged=!1}} function handlePropertychange(){var b=element.bgsExpando;b.ignoreNextPropertyChange?b.ignoreNextPropertyChange=!1:refreshDisplay(element,b)&&(refreshDimensions(element,b),refreshBackgroundImage(element,b,function(){updateBackground(element,b)}))}function handleResize(){var b=element.bgsExpando;"none"!=b.display&&(refreshDimensions(element,b),updateBackground(element,b))} function restore(){var b=element.bgsExpando;try{element.style.backgroundImage="url('"+b.backgroundSrc+"')",element.removeChild(b.wrapper),element.bgsExpando=null}catch(a){}};
|
||||
</script>
|
@ -0,0 +1,115 @@
|
||||
/*
|
||||
HTML5 Shiv v3.6.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
|
||||
*/
|
||||
(function(l, f) {
|
||||
function m() {
|
||||
var a = e.elements;
|
||||
return "string" == typeof a ? a.split(" ") : a;
|
||||
}
|
||||
function i(a) {
|
||||
var b = n[a[o]];
|
||||
b || ((b = {}), h++, (a[o] = h), (n[h] = b));
|
||||
return b;
|
||||
}
|
||||
function p(a, b, c) {
|
||||
b || (b = f);
|
||||
if (g) return b.createElement(a);
|
||||
c || (c = i(b));
|
||||
b = c.cache[a]
|
||||
? c.cache[a].cloneNode()
|
||||
: r.test(a)
|
||||
? (c.cache[a] = c.createElem(a)).cloneNode()
|
||||
: c.createElem(a);
|
||||
return b.canHaveChildren && !s.test(a) ? c.frag.appendChild(b) : b;
|
||||
}
|
||||
function t(a, b) {
|
||||
if (!b.cache)
|
||||
(b.cache = {}),
|
||||
(b.createElem = a.createElement),
|
||||
(b.createFrag = a.createDocumentFragment),
|
||||
(b.frag = b.createFrag());
|
||||
a.createElement = function(c) {
|
||||
return !e.shivMethods ? b.createElem(c) : p(c, a, b);
|
||||
};
|
||||
a.createDocumentFragment = Function(
|
||||
"h,f",
|
||||
"return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(" +
|
||||
m()
|
||||
.join()
|
||||
.replace(/\w+/g, function(a) {
|
||||
b.createElem(a);
|
||||
b.frag.createElement(a);
|
||||
return 'c("' + a + '")';
|
||||
}) +
|
||||
");return n}"
|
||||
)(e, b.frag);
|
||||
}
|
||||
function q(a) {
|
||||
a || (a = f);
|
||||
var b = i(a);
|
||||
if (e.shivCSS && !j && !b.hasCSS) {
|
||||
var c,
|
||||
d = a;
|
||||
c = d.createElement("p");
|
||||
d = d.getElementsByTagName("head")[0] || d.documentElement;
|
||||
c.innerHTML =
|
||||
"x<style>article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}</style>";
|
||||
c = d.insertBefore(c.lastChild, d.firstChild);
|
||||
b.hasCSS = !!c;
|
||||
}
|
||||
g || t(a, b);
|
||||
return a;
|
||||
}
|
||||
var k = l.html5 || {},
|
||||
s = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,
|
||||
r = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,
|
||||
j,
|
||||
o = "_html5shiv",
|
||||
h = 0,
|
||||
n = {},
|
||||
g;
|
||||
(function() {
|
||||
try {
|
||||
var a = f.createElement("a");
|
||||
a.innerHTML = "<xyz></xyz>";
|
||||
j = "hidden" in a;
|
||||
var b;
|
||||
if (!(b = 1 == a.childNodes.length)) {
|
||||
f.createElement("a");
|
||||
var c = f.createDocumentFragment();
|
||||
b =
|
||||
"undefined" == typeof c.cloneNode ||
|
||||
"undefined" == typeof c.createDocumentFragment ||
|
||||
"undefined" == typeof c.createElement;
|
||||
}
|
||||
g = b;
|
||||
} catch (d) {
|
||||
g = j = !0;
|
||||
}
|
||||
})();
|
||||
var e = {
|
||||
elements:
|
||||
k.elements ||
|
||||
"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video",
|
||||
version: "3.6.2",
|
||||
shivCSS: !1 !== k.shivCSS,
|
||||
supportsUnknownElements: g,
|
||||
shivMethods: !1 !== k.shivMethods,
|
||||
type: "default",
|
||||
shivDocument: q,
|
||||
createElement: p,
|
||||
createDocumentFragment: function(a, b) {
|
||||
a || (a = f);
|
||||
if (g) return a.createDocumentFragment();
|
||||
for (
|
||||
var b = b || i(a), c = b.frag.cloneNode(), d = 0, e = m(), h = e.length;
|
||||
d < h;
|
||||
d++
|
||||
)
|
||||
c.createElement(e[d]);
|
||||
return c;
|
||||
}
|
||||
};
|
||||
l.html5 = e;
|
||||
q(f);
|
||||
})(this, document);
|
@ -0,0 +1,248 @@
|
||||
/*! Respond.js v1.4.2: min/max-width media query polyfill
|
||||
* Copyright 2014 Scott Jehl
|
||||
* Licensed under MIT
|
||||
* http://j.mp/respondjs */
|
||||
|
||||
!(function(a) {
|
||||
"use strict";
|
||||
a.matchMedia =
|
||||
a.matchMedia ||
|
||||
(function(a) {
|
||||
var b,
|
||||
c = a.documentElement,
|
||||
d = c.firstElementChild || c.firstChild,
|
||||
e = a.createElement("body"),
|
||||
f = a.createElement("div");
|
||||
return (
|
||||
(f.id = "mq-test-1"),
|
||||
(f.style.cssText = "position:absolute;top:-100em"),
|
||||
(e.style.background = "none"),
|
||||
e.appendChild(f),
|
||||
function(a) {
|
||||
return (
|
||||
(f.innerHTML =
|
||||
'­<style media="' +
|
||||
a +
|
||||
'"> #mq-test-1 { width: 42px; }</style>'),
|
||||
c.insertBefore(e, d),
|
||||
(b = 42 === f.offsetWidth),
|
||||
c.removeChild(e),
|
||||
{ matches: b, media: a }
|
||||
);
|
||||
}
|
||||
);
|
||||
})(a.document);
|
||||
})(this),
|
||||
(function(a) {
|
||||
"use strict";
|
||||
function b() {
|
||||
v(!0);
|
||||
}
|
||||
var c = {};
|
||||
(a.respond = c), (c.update = function() {});
|
||||
var d = [],
|
||||
e = (function() {
|
||||
var b = !1;
|
||||
try {
|
||||
b = new a.XMLHttpRequest();
|
||||
} catch (c) {
|
||||
b = new a.ActiveXObject("Microsoft.XMLHTTP");
|
||||
}
|
||||
return function() {
|
||||
return b;
|
||||
};
|
||||
})(),
|
||||
f = function(a, b) {
|
||||
var c = e();
|
||||
c &&
|
||||
(c.open("GET", a, !0),
|
||||
(c.onreadystatechange = function() {
|
||||
4 !== c.readyState ||
|
||||
(200 !== c.status && 304 !== c.status) ||
|
||||
b(c.responseText);
|
||||
}),
|
||||
4 !== c.readyState && c.send(null));
|
||||
},
|
||||
g = function(a) {
|
||||
return a.replace(c.regex.minmaxwh, "").match(c.regex.other);
|
||||
};
|
||||
if (
|
||||
((c.ajax = f),
|
||||
(c.queue = d),
|
||||
(c.unsupportedmq = g),
|
||||
(c.regex = {
|
||||
media: /@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,
|
||||
keyframes: /@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,
|
||||
comments: /\/\*[^*]*\*+([^/][^*]*\*+)*\//gi,
|
||||
urls: /(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,
|
||||
findStyles: /@media *([^\{]+)\{([\S\s]+?)$/,
|
||||
only: /(only\s+)?([a-zA-Z]+)\s?/,
|
||||
minw: /\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,
|
||||
maxw: /\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,
|
||||
minmaxwh: /\(\s*m(in|ax)\-(height|width)\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/gi,
|
||||
other: /\([^\)]*\)/g
|
||||
}),
|
||||
(c.mediaQueriesSupported =
|
||||
a.matchMedia &&
|
||||
null !== a.matchMedia("only all") &&
|
||||
a.matchMedia("only all").matches),
|
||||
!c.mediaQueriesSupported)
|
||||
) {
|
||||
var h,
|
||||
i,
|
||||
j,
|
||||
k = a.document,
|
||||
l = k.documentElement,
|
||||
m = [],
|
||||
n = [],
|
||||
o = [],
|
||||
p = {},
|
||||
q = 30,
|
||||
r = k.getElementsByTagName("head")[0] || l,
|
||||
s = k.getElementsByTagName("base")[0],
|
||||
t = r.getElementsByTagName("link"),
|
||||
u = function() {
|
||||
var a,
|
||||
b = k.createElement("div"),
|
||||
c = k.body,
|
||||
d = l.style.fontSize,
|
||||
e = c && c.style.fontSize,
|
||||
f = !1;
|
||||
return (
|
||||
(b.style.cssText = "position:absolute;font-size:1em;width:1em"),
|
||||
c ||
|
||||
((c = f = k.createElement("body")),
|
||||
(c.style.background = "none")),
|
||||
(l.style.fontSize = "100%"),
|
||||
(c.style.fontSize = "100%"),
|
||||
c.appendChild(b),
|
||||
f && l.insertBefore(c, l.firstChild),
|
||||
(a = b.offsetWidth),
|
||||
f ? l.removeChild(c) : c.removeChild(b),
|
||||
(l.style.fontSize = d),
|
||||
e && (c.style.fontSize = e),
|
||||
(a = j = parseFloat(a))
|
||||
);
|
||||
},
|
||||
v = function(b) {
|
||||
var c = "clientWidth",
|
||||
d = l[c],
|
||||
e = ("CSS1Compat" === k.compatMode && d) || k.body[c] || d,
|
||||
f = {},
|
||||
g = t[t.length - 1],
|
||||
p = new Date().getTime();
|
||||
if (b && h && q > p - h)
|
||||
return a.clearTimeout(i), (i = a.setTimeout(v, q)), void 0;
|
||||
h = p;
|
||||
for (var s in m)
|
||||
if (m.hasOwnProperty(s)) {
|
||||
var w = m[s],
|
||||
x = w.minw,
|
||||
y = w.maxw,
|
||||
z = null === x,
|
||||
A = null === y,
|
||||
B = "em";
|
||||
x && (x = parseFloat(x) * (x.indexOf(B) > -1 ? j || u() : 1)),
|
||||
y && (y = parseFloat(y) * (y.indexOf(B) > -1 ? j || u() : 1)),
|
||||
(w.hasquery &&
|
||||
((z && A) || !(z || e >= x) || !(A || y >= e))) ||
|
||||
(f[w.media] || (f[w.media] = []),
|
||||
f[w.media].push(n[w.rules]));
|
||||
}
|
||||
for (var C in o)
|
||||
o.hasOwnProperty(C) &&
|
||||
o[C] &&
|
||||
o[C].parentNode === r &&
|
||||
r.removeChild(o[C]);
|
||||
o.length = 0;
|
||||
for (var D in f)
|
||||
if (f.hasOwnProperty(D)) {
|
||||
var E = k.createElement("style"),
|
||||
F = f[D].join("\n");
|
||||
(E.type = "text/css"),
|
||||
(E.media = D),
|
||||
r.insertBefore(E, g.nextSibling),
|
||||
E.styleSheet
|
||||
? (E.styleSheet.cssText = F)
|
||||
: E.appendChild(k.createTextNode(F)),
|
||||
o.push(E);
|
||||
}
|
||||
},
|
||||
w = function(a, b, d) {
|
||||
var e = a
|
||||
.replace(c.regex.comments, "")
|
||||
.replace(c.regex.keyframes, "")
|
||||
.match(c.regex.media),
|
||||
f = (e && e.length) || 0;
|
||||
b = b.substring(0, b.lastIndexOf("/"));
|
||||
var h = function(a) {
|
||||
return a.replace(c.regex.urls, "$1" + b + "$2$3");
|
||||
},
|
||||
i = !f && d;
|
||||
b.length && (b += "/"), i && (f = 1);
|
||||
for (var j = 0; f > j; j++) {
|
||||
var k, l, o, p;
|
||||
i
|
||||
? ((k = d), n.push(h(a)))
|
||||
: ((k = e[j].match(c.regex.findStyles) && RegExp.$1),
|
||||
n.push(RegExp.$2 && h(RegExp.$2))),
|
||||
(o = k.split(",")),
|
||||
(p = o.length);
|
||||
for (var q = 0; p > q; q++)
|
||||
(l = o[q]),
|
||||
g(l) ||
|
||||
m.push({
|
||||
media:
|
||||
(l.split("(")[0].match(c.regex.only) && RegExp.$2) ||
|
||||
"all",
|
||||
rules: n.length - 1,
|
||||
hasquery: l.indexOf("(") > -1,
|
||||
minw:
|
||||
l.match(c.regex.minw) &&
|
||||
parseFloat(RegExp.$1) + (RegExp.$2 || ""),
|
||||
maxw:
|
||||
l.match(c.regex.maxw) &&
|
||||
parseFloat(RegExp.$1) + (RegExp.$2 || "")
|
||||
});
|
||||
}
|
||||
v();
|
||||
},
|
||||
x = function() {
|
||||
if (d.length) {
|
||||
var b = d.shift();
|
||||
f(b.href, function(c) {
|
||||
w(c, b.href, b.media),
|
||||
(p[b.href] = !0),
|
||||
a.setTimeout(function() {
|
||||
x();
|
||||
}, 0);
|
||||
});
|
||||
}
|
||||
},
|
||||
y = function() {
|
||||
for (var b = 0; b < t.length; b++) {
|
||||
var c = t[b],
|
||||
e = c.href,
|
||||
f = c.media,
|
||||
g = c.rel && "stylesheet" === c.rel.toLowerCase();
|
||||
e &&
|
||||
g &&
|
||||
!p[e] &&
|
||||
(c.styleSheet && c.styleSheet.rawCssText
|
||||
? (w(c.styleSheet.rawCssText, e, f), (p[e] = !0))
|
||||
: ((!/^([a-zA-Z:]*\/\/)/.test(e) && !s) ||
|
||||
e.replace(RegExp.$1, "").split("/")[0] ===
|
||||
a.location.host) &&
|
||||
("//" === e.substring(0, 2) && (e = a.location.protocol + e),
|
||||
d.push({ href: e, media: f })));
|
||||
}
|
||||
x();
|
||||
};
|
||||
y(),
|
||||
(c.update = y),
|
||||
(c.getEmValue = u),
|
||||
a.addEventListener
|
||||
? a.addEventListener("resize", b, !1)
|
||||
: a.attachEvent && a.attachEvent("onresize", b);
|
||||
}
|
||||
})(this);
|
@ -0,0 +1,2 @@
|
||||
/* jquery.scrollex v0.2.1 | (c) @ajlkn | github.com/ajlkn/jquery.scrollex | MIT licensed */
|
||||
!function(t){function e(t,e,n){return"string"==typeof t&&("%"==t.slice(-1)?t=parseInt(t.substring(0,t.length-1))/100*e:"vh"==t.slice(-2)?t=parseInt(t.substring(0,t.length-2))/100*n:"px"==t.slice(-2)&&(t=parseInt(t.substring(0,t.length-2)))),t}var n=t(window),i=1,o={};n.on("scroll",function(){var e=n.scrollTop();t.map(o,function(t){window.clearTimeout(t.timeoutId),t.timeoutId=window.setTimeout(function(){t.handler(e)},t.options.delay)})}).on("load",function(){n.trigger("scroll")}),jQuery.fn.scrollex=function(l){var s=t(this);if(0==this.length)return s;if(this.length>1){for(var r=0;r<this.length;r++)t(this[r]).scrollex(l);return s}if(s.data("_scrollexId"))return s;var a,u,h,c,p;switch(a=i++,u=jQuery.extend({top:0,bottom:0,delay:0,mode:"default",enter:null,leave:null,initialize:null,terminate:null,scroll:null},l),u.mode){case"top":h=function(t,e,n,i,o){return t>=i&&o>=t};break;case"bottom":h=function(t,e,n,i,o){return n>=i&&o>=n};break;case"middle":h=function(t,e,n,i,o){return e>=i&&o>=e};break;case"top-only":h=function(t,e,n,i,o){return i>=t&&n>=i};break;case"bottom-only":h=function(t,e,n,i,o){return n>=o&&o>=t};break;default:case"default":h=function(t,e,n,i,o){return n>=i&&o>=t}}return c=function(t){var i,o,l,s,r,a,u=this.state,h=!1,c=this.$element.offset();i=n.height(),o=t+i/2,l=t+i,s=this.$element.outerHeight(),r=c.top+e(this.options.top,s,i),a=c.top+s-e(this.options.bottom,s,i),h=this.test(t,o,l,r,a),h!=u&&(this.state=h,h?this.options.enter&&this.options.enter.apply(this.element):this.options.leave&&this.options.leave.apply(this.element)),this.options.scroll&&this.options.scroll.apply(this.element,[(o-r)/(a-r)])},p={id:a,options:u,test:h,handler:c,state:null,element:this,$element:s,timeoutId:null},o[a]=p,s.data("_scrollexId",p.id),p.options.initialize&&p.options.initialize.apply(this),s},jQuery.fn.unscrollex=function(){var e=t(this);if(0==this.length)return e;if(this.length>1){for(var n=0;n<this.length;n++)t(this[n]).unscrollex();return e}var i,l;return(i=e.data("_scrollexId"))?(l=o[i],window.clearTimeout(l.timeoutId),delete o[i],e.removeData("_scrollexId"),l.options.terminate&&l.options.terminate.apply(this),e):e}}(jQuery);
|
@ -0,0 +1,2 @@
|
||||
/* jquery.scrollgress vx.x | (c) @ajlkn | MIT licensed */
|
||||
(function(){var e="scrollwatchResume",t="length",n="removeData",r="data",i="scrollwatch-state",s="scrollwatch-suspended",o="scrollgress-suspended",u="setTimeout",a="trigger",f="scroll",l="scrollwatchSuspend",c=!0,h="scrollwatch",p=null,d="top",v="rangeMin",m="rangeMax",g="scrollgress",y=!1,b="anchor",w="unscrollwatch",E="unscrollgress",S="element",x="-id",T="scroll.",N="height",C="scrollTop",k="center",L="bottom",A=$(window),O=$(document),M=1e3;jQuery.fn[e]=function(){var l,c;if(this[t]==0)return $(this);if(this[t]>1){for(l=0;l<this[t];l++)$(this[l])[e]();return this}return c=$(this),c[r](i,-1)[n](s)[n](o),window[u](function(){A[a](f)},50),c},jQuery.fn[l]=function(){var e,n;if(this[t]==0)return $(this);if(this[t]>1){for(e=0;e<this[t];e++)$(this[e])[l]();return this}return n=$(this),n[r](s,c),window[u](function(){A[a](f)},50),n},jQuery.fn[h]=function(e){var n,a,f,l,w;if(this[t]==0)return $(this);if(this[t]>1){for(n=0;n<this[t];n++)$(this[n])[h](e);return this}return a=jQuery.extend({range:.5,rangeMin:p,rangeMax:p,anchor:d,init:p,on:p,off:p,delay:0},e),a[v]===p&&(a[v]=-1*a.range),a[m]===p&&(a[m]=a.range),f=$(this),a.init&&(w=a.init),f[r](s,y)[r](i,-1)[g](function(e){if(f[r](s)===c){a.on&&a.on(f),f[r](o,c);return}window.clearTimeout(l),l=window[u](function(){var t,n,s=parseInt(f[r](i));if(s==0||s==-1){t=a[v]===y||e>=a[v],n=a[m]===y||e<=a[m];if(t&&n){f[r](i,1),a.on&&a.on(f),w&&(w(f,c),w=p);return}}if(s==1||s==-1){t=a[v]!==y&&e<a[v],n=a[m]!==y&&e>a[m];if(t||n){f[r](i,0),a.off&&a.off(f),w&&(w(f,y),w=p);return}}},w?0:a.delay)},{anchor:a[b]},h),f},jQuery.fn[w]=function(){var e,r;if(this[t]==0)return $(this);if(this[t]>1){for(e=0;e<this[t];e++)$(this[e])[w]();return this}return r=$(this),r[n](i)[E](h),r},jQuery.fn[g]=function(e,n,i){var s,u,l,h,p;if(this[t]==0)return $(this);if(this[t]>1){for(s=0;s<this[t];s++)$(this[s])[g](e,n,i);return $(this)}return i||(i=g),u=jQuery.extend({anchor:d,direction:"both",scope:S,easing:0},n),l=$(this),l[r](i+x)||l[r](i+x,M++),h=l[r](i+x),p=T+i+"-"+h,A.off(p).on(p,function(){var t,n,i,s;if(l[r](o)===c)return;t=l.offset()[d],n=l.outerHeight(),i=O[N]();switch(u.scope){default:case S:switch(u[b]){default:case d:s=(t-A[C]())/n*-1;break;case k:s=(t-A[C]()-(A[N]()-n)/2)/n*-1;break;case L:s=(t-A[C]()-(A[N]()-n))/n*-1}break;case"window":switch(u[b]){default:case d:s=(t-A[C]())/A[N]()*-1;break;case k:s=(t-A[C]()-(A[N]()-n)/2)/A[N]()*-1;break;case L:s=(t-A[C]()-(A[N]()-n))/A[N]()*-1}}u.direction=="forwards"?s=Math.max(0,s):u.direction=="backwards"&&(s=Math.min(0,s)),s>0?s=Math.max(0,s-u.easing/100):s<0&&(s=Math.min(0,s+u.easing/100)),e(s,l)})[a](f),l},jQuery.fn[E]=function(e){var i,s,o,u;if(this[t]==0)return $(this);if(this[t]>1){for(i=0;i<this[t];i++)$(this[i])[E](e);return $(this)}return e||(e=g),s=$(this),s[r](e+x)?(o=s[r](e+x),u=T+e+"-"+o,A.off(u),s[n](e+x),s):s}})();
|
@ -0,0 +1,84 @@
|
||||
/*
|
||||
Alpha by HTML5 UP
|
||||
html5up.net | @ajlkn
|
||||
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
|
||||
*/
|
||||
|
||||
(function($) {
|
||||
|
||||
var $window = $(window),
|
||||
$body = $('body'),
|
||||
$header = $('#header'),
|
||||
$banner = $('#banner');
|
||||
|
||||
// Breakpoints.
|
||||
breakpoints({
|
||||
wide: ( '1281px', '1680px' ),
|
||||
normal: ( '981px', '1280px' ),
|
||||
narrow: ( '737px', '980px' ),
|
||||
narrower: ( '737px', '840px' ),
|
||||
mobile: ( '481px', '736px' ),
|
||||
mobilep: ( null, '480px' )
|
||||
});
|
||||
|
||||
// Play initial animations on page load.
|
||||
$window.on('load', function() {
|
||||
window.setTimeout(function() {
|
||||
$body.removeClass('is-preload');
|
||||
}, 100);
|
||||
});
|
||||
|
||||
// Dropdowns.
|
||||
$('#nav > ul').dropotron({
|
||||
alignment: 'right'
|
||||
});
|
||||
|
||||
// NavPanel.
|
||||
|
||||
// Button.
|
||||
$(
|
||||
'<div id="navButton">' +
|
||||
'<a href="#navPanel" class="toggle"></a>' +
|
||||
'</div>'
|
||||
)
|
||||
.appendTo($body);
|
||||
|
||||
// Panel.
|
||||
$(
|
||||
'<div id="navPanel">' +
|
||||
'<nav>' +
|
||||
$('#nav').navList() +
|
||||
'</nav>' +
|
||||
'</div>'
|
||||
)
|
||||
.appendTo($body)
|
||||
.panel({
|
||||
delay: 500,
|
||||
hideOnClick: true,
|
||||
hideOnSwipe: true,
|
||||
resetScroll: true,
|
||||
resetForms: true,
|
||||
side: 'left',
|
||||
target: $body,
|
||||
visibleClass: 'navPanel-visible'
|
||||
});
|
||||
|
||||
// Header.
|
||||
if (!browser.mobile
|
||||
&& $header.hasClass('alt')
|
||||
&& $banner.length > 0) {
|
||||
|
||||
$window.on('load', function() {
|
||||
|
||||
$banner.scrollex({
|
||||
bottom: $header.outerHeight(),
|
||||
terminate: function() { $header.removeClass('alt'); },
|
||||
enter: function() { $header.addClass('alt reveal'); },
|
||||
leave: function() { $header.removeClass('alt'); }
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
})(jQuery);
|
@ -0,0 +1,5 @@
|
||||
$(document).ready(function() {
|
||||
if ($("#player").length) {
|
||||
const player = new Plyr('#player', {settings: ['speed']});
|
||||
}
|
||||
});
|
@ -0,0 +1,587 @@
|
||||
(function($) {
|
||||
|
||||
/**
|
||||
* Generate an indented list of links from a nav. Meant for use with panel().
|
||||
* @return {jQuery} jQuery object.
|
||||
*/
|
||||
$.fn.navList = function() {
|
||||
|
||||
var $this = $(this);
|
||||
$a = $this.find('a'),
|
||||
b = [];
|
||||
|
||||
$a.each(function() {
|
||||
|
||||
var $this = $(this),
|
||||
indent = Math.max(0, $this.parents('li').length - 1),
|
||||
href = $this.attr('href'),
|
||||
target = $this.attr('target');
|
||||
|
||||
b.push(
|
||||
'<a ' +
|
||||
'class="link depth-' + indent + '"' +
|
||||
( (typeof target !== 'undefined' && target != '') ? ' target="' + target + '"' : '') +
|
||||
( (typeof href !== 'undefined' && href != '') ? ' href="' + href + '"' : '') +
|
||||
'>' +
|
||||
'<span class="indent-' + indent + '"></span>' +
|
||||
$this.text() +
|
||||
'</a>'
|
||||
);
|
||||
|
||||
});
|
||||
|
||||
return b.join('');
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Panel-ify an element.
|
||||
* @param {object} userConfig User config.
|
||||
* @return {jQuery} jQuery object.
|
||||
*/
|
||||
$.fn.panel = function(userConfig) {
|
||||
|
||||
// No elements?
|
||||
if (this.length == 0)
|
||||
return $this;
|
||||
|
||||
// Multiple elements?
|
||||
if (this.length > 1) {
|
||||
|
||||
for (var i=0; i < this.length; i++)
|
||||
$(this[i]).panel(userConfig);
|
||||
|
||||
return $this;
|
||||
|
||||
}
|
||||
|
||||
// Vars.
|
||||
var $this = $(this),
|
||||
$body = $('body'),
|
||||
$window = $(window),
|
||||
id = $this.attr('id'),
|
||||
config;
|
||||
|
||||
// Config.
|
||||
config = $.extend({
|
||||
|
||||
// Delay.
|
||||
delay: 0,
|
||||
|
||||
// Hide panel on link click.
|
||||
hideOnClick: false,
|
||||
|
||||
// Hide panel on escape keypress.
|
||||
hideOnEscape: false,
|
||||
|
||||
// Hide panel on swipe.
|
||||
hideOnSwipe: false,
|
||||
|
||||
// Reset scroll position on hide.
|
||||
resetScroll: false,
|
||||
|
||||
// Reset forms on hide.
|
||||
resetForms: false,
|
||||
|
||||
// Side of viewport the panel will appear.
|
||||
side: null,
|
||||
|
||||
// Target element for "class".
|
||||
target: $this,
|
||||
|
||||
// Class to toggle.
|
||||
visibleClass: 'visible'
|
||||
|
||||
}, userConfig);
|
||||
|
||||
// Expand "target" if it's not a jQuery object already.
|
||||
if (typeof config.target != 'jQuery')
|
||||
config.target = $(config.target);
|
||||
|
||||
// Panel.
|
||||
|
||||
// Methods.
|
||||
$this._hide = function(event) {
|
||||
|
||||
// Already hidden? Bail.
|
||||
if (!config.target.hasClass(config.visibleClass))
|
||||
return;
|
||||
|
||||
// If an event was provided, cancel it.
|
||||
if (event) {
|
||||
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
||||
}
|
||||
|
||||
// Hide.
|
||||
config.target.removeClass(config.visibleClass);
|
||||
|
||||
// Post-hide stuff.
|
||||
window.setTimeout(function() {
|
||||
|
||||
// Reset scroll position.
|
||||
if (config.resetScroll)
|
||||
$this.scrollTop(0);
|
||||
|
||||
// Reset forms.
|
||||
if (config.resetForms)
|
||||
$this.find('form').each(function() {
|
||||
this.reset();
|
||||
});
|
||||
|
||||
}, config.delay);
|
||||
|
||||
};
|
||||
|
||||
// Vendor fixes.
|
||||
$this
|
||||
.css('-ms-overflow-style', '-ms-autohiding-scrollbar')
|
||||
.css('-webkit-overflow-scrolling', 'touch');
|
||||
|
||||
// Hide on click.
|
||||
if (config.hideOnClick) {
|
||||
|
||||
$this.find('a')
|
||||
.css('-webkit-tap-highlight-color', 'rgba(0,0,0,0)');
|
||||
|
||||
$this
|
||||
.on('click', 'a', function(event) {
|
||||
|
||||
var $a = $(this),
|
||||
href = $a.attr('href'),
|
||||
target = $a.attr('target');
|
||||
|
||||
if (!href || href == '#' || href == '' || href == '#' + id)
|
||||
return;
|
||||
|
||||
// Cancel original event.
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
||||
// Hide panel.
|
||||
$this._hide();
|
||||
|
||||
// Redirect to href.
|
||||
window.setTimeout(function() {
|
||||
|
||||
if (target == '_blank')
|
||||
window.open(href);
|
||||
else
|
||||
window.location.href = href;
|
||||
|
||||
}, config.delay + 10);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
// Event: Touch stuff.
|
||||
$this.on('touchstart', function(event) {
|
||||
|
||||
$this.touchPosX = event.originalEvent.touches[0].pageX;
|
||||
$this.touchPosY = event.originalEvent.touches[0].pageY;
|
||||
|
||||
})
|
||||
|
||||
$this.on('touchmove', function(event) {
|
||||
|
||||
if ($this.touchPosX === null
|
||||
|| $this.touchPosY === null)
|
||||
return;
|
||||
|
||||
var diffX = $this.touchPosX - event.originalEvent.touches[0].pageX,
|
||||
diffY = $this.touchPosY - event.originalEvent.touches[0].pageY,
|
||||
th = $this.outerHeight(),
|
||||
ts = ($this.get(0).scrollHeight - $this.scrollTop());
|
||||
|
||||
// Hide on swipe?
|
||||
if (config.hideOnSwipe) {
|
||||
|
||||
var result = false,
|
||||
boundary = 20,
|
||||
delta = 50;
|
||||
|
||||
switch (config.side) {
|
||||
|
||||
case 'left':
|
||||
result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX > delta);
|
||||
break;
|
||||
|
||||
case 'right':
|
||||
result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX < (-1 * delta));
|
||||
break;
|
||||
|
||||
case 'top':
|
||||
result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY > delta);
|
||||
break;
|
||||
|
||||
case 'bottom':
|
||||
result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY < (-1 * delta));
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
if (result) {
|
||||
|
||||
$this.touchPosX = null;
|
||||
$this.touchPosY = null;
|
||||
$this._hide();
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Prevent vertical scrolling past the top or bottom.
|
||||
if (($this.scrollTop() < 0 && diffY < 0)
|
||||
|| (ts > (th - 2) && ts < (th + 2) && diffY > 0)) {
|
||||
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// Event: Prevent certain events inside the panel from bubbling.
|
||||
$this.on('click touchend touchstart touchmove', function(event) {
|
||||
event.stopPropagation();
|
||||
});
|
||||
|
||||
// Event: Hide panel if a child anchor tag pointing to its ID is clicked.
|
||||
$this.on('click', 'a[href="#' + id + '"]', function(event) {
|
||||
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
||||
config.target.removeClass(config.visibleClass);
|
||||
|
||||
});
|
||||
|
||||
// Body.
|
||||
|
||||
// Event: Hide panel on body click/tap.
|
||||
$body.on('click touchend', function(event) {
|
||||
$this._hide(event);
|
||||
});
|
||||
|
||||
// Event: Toggle.
|
||||
$body.on('click', 'a[href="#' + id + '"]', function(event) {
|
||||
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
||||
config.target.toggleClass(config.visibleClass);
|
||||
|
||||
});
|
||||
|
||||
// Window.
|
||||
|
||||
// Event: Hide on ESC.
|
||||
if (config.hideOnEscape)
|
||||
$window.on('keydown', function(event) {
|
||||
|
||||
if (event.keyCode == 27)
|
||||
$this._hide(event);
|
||||
|
||||
});
|
||||
|
||||
return $this;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Apply "placeholder" attribute polyfill to one or more forms.
|
||||
* @return {jQuery} jQuery object.
|
||||
*/
|
||||
$.fn.placeholder = function() {
|
||||
|
||||
// Browser natively supports placeholders? Bail.
|
||||
if (typeof (document.createElement('input')).placeholder != 'undefined')
|
||||
return $(this);
|
||||
|
||||
// No elements?
|
||||
if (this.length == 0)
|
||||
return $this;
|
||||
|
||||
// Multiple elements?
|
||||
if (this.length > 1) {
|
||||
|
||||
for (var i=0; i < this.length; i++)
|
||||
$(this[i]).placeholder();
|
||||
|
||||
return $this;
|
||||
|
||||
}
|
||||
|
||||
// Vars.
|
||||
var $this = $(this);
|
||||
|
||||
// Text, TextArea.
|
||||
$this.find('input[type=text],textarea')
|
||||
.each(function() {
|
||||
|
||||
var i = $(this);
|
||||
|
||||
if (i.val() == ''
|
||||
|| i.val() == i.attr('placeholder'))
|
||||
i
|
||||
.addClass('polyfill-placeholder')
|
||||
.val(i.attr('placeholder'));
|
||||
|
||||
})
|
||||
.on('blur', function() {
|
||||
|
||||
var i = $(this);
|
||||
|
||||
if (i.attr('name').match(/-polyfill-field$/))
|
||||
return;
|
||||
|
||||
if (i.val() == '')
|
||||
i
|
||||
.addClass('polyfill-placeholder')
|
||||
.val(i.attr('placeholder'));
|
||||
|
||||
})
|
||||
.on('focus', function() {
|
||||
|
||||
var i = $(this);
|
||||
|
||||
if (i.attr('name').match(/-polyfill-field$/))
|
||||
return;
|
||||
|
||||
if (i.val() == i.attr('placeholder'))
|
||||
i
|
||||
.removeClass('polyfill-placeholder')
|
||||
.val('');
|
||||
|
||||
});
|
||||
|
||||
// Password.
|
||||
$this.find('input[type=password]')
|
||||
.each(function() {
|
||||
|
||||
var i = $(this);
|
||||
var x = $(
|
||||
$('<div>')
|
||||
.append(i.clone())
|
||||
.remove()
|
||||
.html()
|
||||
.replace(/type="password"/i, 'type="text"')
|
||||
.replace(/type=password/i, 'type=text')
|
||||
);
|
||||
|
||||
if (i.attr('id') != '')
|
||||
x.attr('id', i.attr('id') + '-polyfill-field');
|
||||
|
||||
if (i.attr('name') != '')
|
||||
x.attr('name', i.attr('name') + '-polyfill-field');
|
||||
|
||||
x.addClass('polyfill-placeholder')
|
||||
.val(x.attr('placeholder')).insertAfter(i);
|
||||
|
||||
if (i.val() == '')
|
||||
i.hide();
|
||||
else
|
||||
x.hide();
|
||||
|
||||
i
|
||||
.on('blur', function(event) {
|
||||
|
||||
event.preventDefault();
|
||||
|
||||
var x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]');
|
||||
|
||||
if (i.val() == '') {
|
||||
|
||||
i.hide();
|
||||
x.show();
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
x
|
||||
.on('focus', function(event) {
|
||||
|
||||
event.preventDefault();
|
||||
|
||||
var i = x.parent().find('input[name=' + x.attr('name').replace('-polyfill-field', '') + ']');
|
||||
|
||||
x.hide();
|
||||
|
||||
i
|
||||
.show()
|
||||
.focus();
|
||||
|
||||
})
|
||||
.on('keypress', function(event) {
|
||||
|
||||
event.preventDefault();
|
||||
x.val('');
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
// Events.
|
||||
$this
|
||||
.on('submit', function() {
|
||||
|
||||
$this.find('input[type=text],input[type=password],textarea')
|
||||
.each(function(event) {
|
||||
|
||||
var i = $(this);
|
||||
|
||||
if (i.attr('name').match(/-polyfill-field$/))
|
||||
i.attr('name', '');
|
||||
|
||||
if (i.val() == i.attr('placeholder')) {
|
||||
|
||||
i.removeClass('polyfill-placeholder');
|
||||
i.val('');
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
})
|
||||
.on('reset', function(event) {
|
||||
|
||||
event.preventDefault();
|
||||
|
||||
$this.find('select')
|
||||
.val($('option:first').val());
|
||||
|
||||
$this.find('input,textarea')
|
||||
.each(function() {
|
||||
|
||||
var i = $(this),
|
||||
x;
|
||||
|
||||
i.removeClass('polyfill-placeholder');
|
||||
|
||||
switch (this.type) {
|
||||
|
||||
case 'submit':
|
||||
case 'reset':
|
||||
break;
|
||||
|
||||
case 'password':
|
||||
i.val(i.attr('defaultValue'));
|
||||
|
||||
x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]');
|
||||
|
||||
if (i.val() == '') {
|
||||
i.hide();
|
||||
x.show();
|
||||
}
|
||||
else {
|
||||
i.show();
|
||||
x.hide();
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'checkbox':
|
||||
case 'radio':
|
||||
i.attr('checked', i.attr('defaultValue'));
|
||||
break;
|
||||
|
||||
case 'text':
|
||||
case 'textarea':
|
||||
i.val(i.attr('defaultValue'));
|
||||
|
||||
if (i.val() == '') {
|
||||
i.addClass('polyfill-placeholder');
|
||||
i.val(i.attr('placeholder'));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
i.val(i.attr('defaultValue'));
|
||||
break;
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
return $this;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Moves elements to/from the first positions of their respective parents.
|
||||
* @param {jQuery} $elements Elements (or selector) to move.
|
||||
* @param {bool} condition If true, moves elements to the top. Otherwise, moves elements back to their original locations.
|
||||
*/
|
||||
$.prioritize = function($elements, condition) {
|
||||
|
||||
var key = '__prioritize';
|
||||
|
||||
// Expand $elements if it's not already a jQuery object.
|
||||
if (typeof $elements != 'jQuery')
|
||||
$elements = $($elements);
|
||||
|
||||
// Step through elements.
|
||||
$elements.each(function() {
|
||||
|
||||
var $e = $(this), $p,
|
||||
$parent = $e.parent();
|
||||
|
||||
// No parent? Bail.
|
||||
if ($parent.length == 0)
|
||||
return;
|
||||
|
||||
// Not moved? Move it.
|
||||
if (!$e.data(key)) {
|
||||
|
||||
// Condition is false? Bail.
|
||||
if (!condition)
|
||||
return;
|
||||
|
||||
// Get placeholder (which will serve as our point of reference for when this element needs to move back).
|
||||
$p = $e.prev();
|
||||
|
||||
// Couldn't find anything? Means this element's already at the top, so bail.
|
||||
if ($p.length == 0)
|
||||
return;
|
||||
|
||||
// Move element to top of parent.
|
||||
$e.prependTo($parent);
|
||||
|
||||
// Mark element as moved.
|
||||
$e.data(key, $p);
|
||||
|
||||
}
|
||||
|
||||
// Moved already?
|
||||
else {
|
||||
|
||||
// Condition is true? Bail.
|
||||
if (condition)
|
||||
return;
|
||||
|
||||
$p = $e.data(key);
|
||||
|
||||
// Move element back to its original location (using our placeholder).
|
||||
$e.insertAfter($p);
|
||||
|
||||
// Unmark element as moved.
|
||||
$e.removeData(key);
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
})(jQuery);
|
@ -0,0 +1,194 @@
|
||||
@import 'libs/vars';
|
||||
@import 'libs/functions';
|
||||
@import 'libs/mixins';
|
||||
@import 'libs/vendor';
|
||||
@import 'libs/breakpoints';
|
||||
@import 'libs/html-grid';
|
||||
|
||||
/*
|
||||
Alpha by HTML5 UP
|
||||
html5up.net | @ajlkn
|
||||
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
|
||||
*/
|
||||
|
||||
/* Basic */
|
||||
|
||||
pre, code {
|
||||
position: relative;
|
||||
-ms-behavior: url('assets/js/ie/PIE.htc');
|
||||
}
|
||||
|
||||
/* Form */
|
||||
|
||||
input[type="text"],
|
||||
input[type="password"],
|
||||
input[type="email"],
|
||||
select,
|
||||
textarea {
|
||||
position: relative;
|
||||
-ms-behavior: url('assets/js/ie/PIE.htc');
|
||||
line-height: 3em;
|
||||
}
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"], {
|
||||
opacity: 1;
|
||||
z-index: auto;
|
||||
|
||||
& + label {
|
||||
&:before {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Button */
|
||||
|
||||
input[type="submit"],
|
||||
input[type="reset"],
|
||||
input[type="button"],
|
||||
.button {
|
||||
position: relative;
|
||||
-ms-behavior: url('assets/js/ie/PIE.htc');
|
||||
|
||||
&.alt {
|
||||
border: solid 2px _palette(border);
|
||||
}
|
||||
}
|
||||
|
||||
/* Box */
|
||||
|
||||
.box {
|
||||
position: relative;
|
||||
-ms-behavior: url('assets/js/ie/PIE.htc');
|
||||
|
||||
.image {
|
||||
&.featured {
|
||||
margin: 2em 0;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Icon */
|
||||
|
||||
.icon {
|
||||
&.major {
|
||||
position: relative;
|
||||
-ms-behavior: url('assets/js/ie/PIE.htc');
|
||||
}
|
||||
}
|
||||
|
||||
/* Image */
|
||||
|
||||
.image {
|
||||
position: relative;
|
||||
-ms-behavior: url('assets/js/ie/PIE.htc');
|
||||
|
||||
img {
|
||||
position: relative;
|
||||
-ms-behavior: url('assets/js/ie/PIE.htc');
|
||||
}
|
||||
}
|
||||
|
||||
/* Header */
|
||||
|
||||
#header {
|
||||
nav {
|
||||
> ul {
|
||||
> li {
|
||||
a {
|
||||
color: #fff;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
border: 0;
|
||||
|
||||
&.icon {
|
||||
&:before {
|
||||
color: #fff;
|
||||
margin-right: 0.5em;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.alt {
|
||||
color: #fff;
|
||||
|
||||
nav {
|
||||
> ul {
|
||||
> li {
|
||||
a:not(.button) {
|
||||
&.icon {
|
||||
&:before {
|
||||
color: rgba(255,255,255,0.75);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.active {
|
||||
a:not(.button) {
|
||||
background-color: rgba(255,255,255,0.2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dropotron {
|
||||
border: solid 1px _palette(border);
|
||||
|
||||
&.level-0 {
|
||||
margin-top: 0;
|
||||
|
||||
&:before {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Banner */
|
||||
|
||||
#banner {
|
||||
background-attachment: scroll;
|
||||
background-image: url('../../images/banner.jpg');
|
||||
background-position: auto;
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
-ms-behavior: url('assets/js/ie/backgroundsize.min.htc');
|
||||
|
||||
input[type="submit"],
|
||||
input[type="reset"],
|
||||
input[type="button"],
|
||||
.button {
|
||||
border: solid 2px #fff;
|
||||
}
|
||||
}
|
||||
|
||||
/* Main */
|
||||
|
||||
#main {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
/* CTA */
|
||||
|
||||
#cta {
|
||||
input[type="text"],
|
||||
input[type="password"],
|
||||
input[type="email"],
|
||||
select,
|
||||
textarea {
|
||||
background: _palette(accent2, bg);
|
||||
border: solid 2px #fff;
|
||||
}
|
||||
|
||||
.formerize-placeholder {
|
||||
color: #fff !important;
|
||||
}
|
||||
}
|
@ -0,0 +1,223 @@
|
||||
// breakpoints.scss v1.0 | @ajlkn | MIT licensed */
|
||||
|
||||
// Vars.
|
||||
|
||||
/// Breakpoints.
|
||||
/// @var {list}
|
||||
$breakpoints: null;
|
||||
|
||||
// Mixins.
|
||||
|
||||
/// Sets breakpoints.
|
||||
/// @param {map} $x Breakpoints.
|
||||
@mixin breakpoints($x: ()) {
|
||||
$breakpoints: $x !global;
|
||||
}
|
||||
|
||||
/// Wraps @content in a @media block targeting a specific orientation.
|
||||
/// @param {string} $orientation Orientation.
|
||||
@mixin orientation($orientation) {
|
||||
@media screen and (orientation: #{$orientation}) {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
|
||||
/// Wraps @content in a @media block using a given query.
|
||||
/// @param {string} $query Query.
|
||||
@mixin breakpoint($query: null) {
|
||||
|
||||
$breakpoint: null;
|
||||
$op: null;
|
||||
$media: null;
|
||||
|
||||
// Determine operator, breakpoint.
|
||||
|
||||
// Greater than or equal.
|
||||
@if (str-slice($query, 0, 2) == '>=') {
|
||||
|
||||
$op: 'gte';
|
||||
$breakpoint: str-slice($query, 3);
|
||||
|
||||
}
|
||||
|
||||
// Less than or equal.
|
||||
@elseif (str-slice($query, 0, 2) == '<=') {
|
||||
|
||||
$op: 'lte';
|
||||
$breakpoint: str-slice($query, 3);
|
||||
|
||||
}
|
||||
|
||||
// Greater than.
|
||||
@elseif (str-slice($query, 0, 1) == '>') {
|
||||
|
||||
$op: 'gt';
|
||||
$breakpoint: str-slice($query, 2);
|
||||
|
||||
}
|
||||
|
||||
// Less than.
|
||||
@elseif (str-slice($query, 0, 1) == '<') {
|
||||
|
||||
$op: 'lt';
|
||||
$breakpoint: str-slice($query, 2);
|
||||
|
||||
}
|
||||
|
||||
// Not.
|
||||
@elseif (str-slice($query, 0, 1) == '!') {
|
||||
|
||||
$op: 'not';
|
||||
$breakpoint: str-slice($query, 2);
|
||||
|
||||
}
|
||||
|
||||
// Equal.
|
||||
@else {
|
||||
|
||||
$op: 'eq';
|
||||
$breakpoint: $query;
|
||||
|
||||
}
|
||||
|
||||
// Build media.
|
||||
@if ($breakpoint and map-has-key($breakpoints, $breakpoint)) {
|
||||
|
||||
$a: map-get($breakpoints, $breakpoint);
|
||||
|
||||
// Range.
|
||||
@if (type-of($a) == 'list') {
|
||||
|
||||
$x: nth($a, 1);
|
||||
$y: nth($a, 2);
|
||||
|
||||
// Max only.
|
||||
@if ($x == null) {
|
||||
|
||||
// Greater than or equal (>= 0 / anything)
|
||||
@if ($op == 'gte') {
|
||||
$media: 'screen';
|
||||
}
|
||||
|
||||
// Less than or equal (<= y)
|
||||
@elseif ($op == 'lte') {
|
||||
$media: 'screen and (max-width: ' + $y + ')';
|
||||
}
|
||||
|
||||
// Greater than (> y)
|
||||
@elseif ($op == 'gt') {
|
||||
$media: 'screen and (min-width: ' + ($y + 1) + ')';
|
||||
}
|
||||
|
||||
// Less than (< 0 / invalid)
|
||||
@elseif ($op == 'lt') {
|
||||
$media: 'screen and (max-width: -1px)';
|
||||
}
|
||||
|
||||
// Not (> y)
|
||||
@elseif ($op == 'not') {
|
||||
$media: 'screen and (min-width: ' + ($y + 1) + ')';
|
||||
}
|
||||
|
||||
// Equal (<= y)
|
||||
@else {
|
||||
$media: 'screen and (max-width: ' + $y + ')';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Min only.
|
||||
@else if ($y == null) {
|
||||
|
||||
// Greater than or equal (>= x)
|
||||
@if ($op == 'gte') {
|
||||
$media: 'screen and (min-width: ' + $x + ')';
|
||||
}
|
||||
|
||||
// Less than or equal (<= inf / anything)
|
||||
@elseif ($op == 'lte') {
|
||||
$media: 'screen';
|
||||
}
|
||||
|
||||
// Greater than (> inf / invalid)
|
||||
@elseif ($op == 'gt') {
|
||||
$media: 'screen and (max-width: -1px)';
|
||||
}
|
||||
|
||||
// Less than (< x)
|
||||
@elseif ($op == 'lt') {
|
||||
$media: 'screen and (max-width: ' + ($x - 1) + ')';
|
||||
}
|
||||
|
||||
// Not (< x)
|
||||
@elseif ($op == 'not') {
|
||||
$media: 'screen and (max-width: ' + ($x - 1) + ')';
|
||||
}
|
||||
|
||||
// Equal (>= x)
|
||||
@else {
|
||||
$media: 'screen and (min-width: ' + $x + ')';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Min and max.
|
||||
@else {
|
||||
|
||||
// Greater than or equal (>= x)
|
||||
@if ($op == 'gte') {
|
||||
$media: 'screen and (min-width: ' + $x + ')';
|
||||
}
|
||||
|
||||
// Less than or equal (<= y)
|
||||
@elseif ($op == 'lte') {
|
||||
$media: 'screen and (max-width: ' + $y + ')';
|
||||
}
|
||||
|
||||
// Greater than (> y)
|
||||
@elseif ($op == 'gt') {
|
||||
$media: 'screen and (min-width: ' + ($y + 1) + ')';
|
||||
}
|
||||
|
||||
// Less than (< x)
|
||||
@elseif ($op == 'lt') {
|
||||
$media: 'screen and (max-width: ' + ($x - 1) + ')';
|
||||
}
|
||||
|
||||
// Not (< x and > y)
|
||||
@elseif ($op == 'not') {
|
||||
$media: 'screen and (max-width: ' + ($x - 1) + '), screen and (min-width: ' + ($y + 1) + ')';
|
||||
}
|
||||
|
||||
// Equal (>= x and <= y)
|
||||
@else {
|
||||
$media: 'screen and (min-width: ' + $x + ') and (max-width: ' + $y + ')';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// String.
|
||||
@else {
|
||||
|
||||
// Missing a media type? Prefix with "screen".
|
||||
@if (str-slice($a, 0, 1) == '(') {
|
||||
$media: 'screen and ' + $a;
|
||||
}
|
||||
|
||||
// Otherwise, use as-is.
|
||||
@else {
|
||||
$media: $a;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Output.
|
||||
@media #{$media} {
|
||||
@content;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,90 @@
|
||||
/// Removes a specific item from a list.
|
||||
/// @author Hugo Giraudel
|
||||
/// @param {list} $list List.
|
||||
/// @param {integer} $index Index.
|
||||
/// @return {list} Updated list.
|
||||
@function remove-nth($list, $index) {
|
||||
|
||||
$result: null;
|
||||
|
||||
@if type-of($index) != number {
|
||||
@warn "$index: #{quote($index)} is not a number for `remove-nth`.";
|
||||
}
|
||||
@else if $index == 0 {
|
||||
@warn "List index 0 must be a non-zero integer for `remove-nth`.";
|
||||
}
|
||||
@else if abs($index) > length($list) {
|
||||
@warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`.";
|
||||
}
|
||||
@else {
|
||||
|
||||
$result: ();
|
||||
$index: if($index < 0, length($list) + $index + 1, $index);
|
||||
|
||||
@for $i from 1 through length($list) {
|
||||
|
||||
@if $i != $index {
|
||||
$result: append($result, nth($list, $i));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@return $result;
|
||||
|
||||
}
|
||||
|
||||
/// Gets a value from a map.
|
||||
/// @author Hugo Giraudel
|
||||
/// @param {map} $map Map.
|
||||
/// @param {string} $keys Key(s).
|
||||
/// @return {string} Value.
|
||||
@function val($map, $keys...) {
|
||||
|
||||
@if nth($keys, 1) == null {
|
||||
$keys: remove-nth($keys, 1);
|
||||
}
|
||||
|
||||
@each $key in $keys {
|
||||
$map: map-get($map, $key);
|
||||
}
|
||||
|
||||
@return $map;
|
||||
|
||||
}
|
||||
|
||||
/// Gets a duration value.
|
||||
/// @param {string} $keys Key(s).
|
||||
/// @return {string} Value.
|
||||
@function _duration($keys...) {
|
||||
@return val($duration, $keys...);
|
||||
}
|
||||
|
||||
/// Gets a font value.
|
||||
/// @param {string} $keys Key(s).
|
||||
/// @return {string} Value.
|
||||
@function _font($keys...) {
|
||||
@return val($font, $keys...);
|
||||
}
|
||||
|
||||
/// Gets a misc value.
|
||||
/// @param {string} $keys Key(s).
|
||||
/// @return {string} Value.
|
||||
@function _misc($keys...) {
|
||||
@return val($misc, $keys...);
|
||||
}
|
||||
|
||||
/// Gets a palette value.
|
||||
/// @param {string} $keys Key(s).
|
||||
/// @return {string} Value.
|
||||
@function _palette($keys...) {
|
||||
@return val($palette, $keys...);
|
||||
}
|
||||
|
||||
/// Gets a size value.
|
||||
/// @param {string} $keys Key(s).
|
||||
/// @return {string} Value.
|
||||
@function _size($keys...) {
|
||||
@return val($size, $keys...);
|
||||
}
|
@ -0,0 +1,149 @@
|
||||
// html-grid.scss v1.0 | @ajlkn | MIT licensed */
|
||||
|
||||
// Mixins.
|
||||
|
||||
/// Initializes the current element as an HTML grid.
|
||||
/// @param {mixed} $gutters Gutters (either a single number to set both column/row gutters, or a list to set them individually).
|
||||
/// @param {mixed} $suffix Column class suffix (optional; either a single suffix or a list).
|
||||
@mixin html-grid($gutters: 1.5em, $suffix: '') {
|
||||
|
||||
// Initialize.
|
||||
$cols: 12;
|
||||
$multipliers: 0, 0.25, 0.5, 1, 1.50, 2.00;
|
||||
$unit: 100% / $cols;
|
||||
|
||||
// Suffixes.
|
||||
$suffixes: null;
|
||||
|
||||
@if (type-of($suffix) == 'list') {
|
||||
$suffixes: $suffix;
|
||||
}
|
||||
@else {
|
||||
$suffixes: ($suffix);
|
||||
}
|
||||
|
||||
// Gutters.
|
||||
$guttersCols: null;
|
||||
$guttersRows: null;
|
||||
|
||||
@if (type-of($gutters) == 'list') {
|
||||
|
||||
$guttersCols: nth($gutters, 1);
|
||||
$guttersRows: nth($gutters, 2);
|
||||
|
||||
}
|
||||
@else {
|
||||
|
||||
$guttersCols: $gutters;
|
||||
$guttersRows: 0;
|
||||
|
||||
}
|
||||
|
||||
// Row.
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
box-sizing: border-box;
|
||||
align-items: stretch;
|
||||
|
||||
// Columns.
|
||||
> * {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
// Gutters.
|
||||
&.gtr-uniform {
|
||||
> * {
|
||||
> :last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Alignment.
|
||||
&.aln-left {
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
&.aln-center {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
&.aln-right {
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
&.aln-top {
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
&.aln-middle {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
&.aln-bottom {
|
||||
align-items: flex-end;
|
||||
}
|
||||
|
||||
// Step through suffixes.
|
||||
@each $suffix in $suffixes {
|
||||
|
||||
// Suffix.
|
||||
@if ($suffix != '') {
|
||||
$suffix: '-' + $suffix;
|
||||
}
|
||||
@else {
|
||||
$suffix: '';
|
||||
}
|
||||
|
||||
// Row.
|
||||
|
||||
// Important.
|
||||
> .imp#{$suffix} {
|
||||
order: -1;
|
||||
}
|
||||
|
||||
// Columns, offsets.
|
||||
@for $i from 1 through $cols {
|
||||
> .col-#{$i}#{$suffix} {
|
||||
width: $unit * $i;
|
||||
}
|
||||
|
||||
> .off-#{$i}#{$suffix} {
|
||||
margin-left: $unit * $i;
|
||||
}
|
||||
}
|
||||
|
||||
// Step through multipliers.
|
||||
@each $multiplier in $multipliers {
|
||||
|
||||
// Gutters.
|
||||
$class: null;
|
||||
|
||||
@if ($multiplier != 1) {
|
||||
$class: '.gtr-' + ($multiplier * 100);
|
||||
}
|
||||
|
||||
&#{$class} {
|
||||
margin-top: ($guttersRows * $multiplier * -1);
|
||||
margin-left: ($guttersCols * $multiplier * -1);
|
||||
|
||||
> * {
|
||||
padding: ($guttersRows * $multiplier) 0 0 ($guttersCols * $multiplier);
|
||||
}
|
||||
|
||||
// Uniform.
|
||||
&.gtr-uniform {
|
||||
margin-top: $guttersCols * $multiplier * -1;
|
||||
|
||||
> * {
|
||||
padding-top: $guttersCols * $multiplier;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
/// Makes an element's :before pseudoelement a FontAwesome icon.
|
||||
/// @param {string} $content Optional content value to use.
|
||||
/// @param {string} $where Optional pseudoelement to target (before or after).
|
||||
@mixin icon($content: false, $where: before) {
|
||||
|
||||
text-decoration: none;
|
||||
|
||||
&:#{$where} {
|
||||
|
||||
@if $content {
|
||||
content: $content;
|
||||
}
|
||||
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
//Not needed because they're defined in the imported FontAwesome.css
|
||||
//font-family: ('FontAwesome 5 Free');
|
||||
//font-style: normal;
|
||||
//font-weight: normal;
|
||||
text-transform: none !important;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// Applies padding to an element, taking the current element-margin value into account.
|
||||
/// @param {mixed} $tb Top/bottom padding.
|
||||
/// @param {mixed} $lr Left/right padding.
|
||||
/// @param {list} $pad Optional extra padding (in the following order top, right, bottom, left)
|
||||
/// @param {bool} $important If true, adds !important.
|
||||
@mixin padding($tb, $lr, $pad: (0,0,0,0), $important: null) {
|
||||
|
||||
@if $important {
|
||||
$important: '!important';
|
||||
}
|
||||
|
||||
$x: 0.1em;
|
||||
|
||||
@if unit(_size(element-margin)) == 'rem' {
|
||||
$x: 0.1rem;
|
||||
}
|
||||
|
||||
padding: ($tb + nth($pad,1)) ($lr + nth($pad,2)) max($x, $tb - _size(element-margin) + nth($pad,3)) ($lr + nth($pad,4)) #{$important};
|
||||
|
||||
}
|
||||
|
||||
/// Encodes a SVG data URL so IE doesn't choke (via codepen.io/jakob-e/pen/YXXBrp).
|
||||
/// @param {string} $svg SVG data URL.
|
||||
/// @return {string} Encoded SVG data URL.
|
||||
@function svg-url($svg) {
|
||||
|
||||
$svg: str-replace($svg, '"', '\'');
|
||||
$svg: str-replace($svg, '%', '%25');
|
||||
$svg: str-replace($svg, '<', '%3C');
|
||||
$svg: str-replace($svg, '>', '%3E');
|
||||
$svg: str-replace($svg, '&', '%26');
|
||||
$svg: str-replace($svg, '#', '%23');
|
||||
$svg: str-replace($svg, '{', '%7B');
|
||||
$svg: str-replace($svg, '}', '%7D');
|
||||
$svg: str-replace($svg, ';', '%3B');
|
||||
|
||||
@return url("data:image/svg+xml;charset=utf8,#{$svg}");
|
||||
|
||||
}
|
@ -0,0 +1,78 @@
|
||||
// Misc.
|
||||
$misc: (
|
||||
z-index-base: 10000
|
||||
);
|
||||
|
||||
// Duration.
|
||||
$duration: (
|
||||
navPanel: 0.5s,
|
||||
transition: 0.2s
|
||||
);
|
||||
|
||||
// Size.
|
||||
$size: (
|
||||
navPanel: 275px,
|
||||
border-radius: 6px,
|
||||
element-height: 3em,
|
||||
element-margin: 2em,
|
||||
container-width: 60em
|
||||
);
|
||||
|
||||
// Font.
|
||||
$font: (
|
||||
family: (
|
||||
"Source Sans Pro",
|
||||
sans-serif
|
||||
),
|
||||
family-fixed: monospace,
|
||||
weight: 300,
|
||||
weight-bold: 400
|
||||
);
|
||||
|
||||
// Palette.
|
||||
$palette: (
|
||||
bg: #f5f5f5,
|
||||
fg: #777,
|
||||
fg-bold: #646464,
|
||||
fg-light: #999,
|
||||
border: #e5e5e5,
|
||||
border-bg: #f8f8f8,
|
||||
border2: #dddddd,
|
||||
border2-bg: #f0f0f0,
|
||||
header: (
|
||||
bg: #444,
|
||||
fg: #bbb,
|
||||
fg-bold: #fff,
|
||||
fg-light: #999
|
||||
),
|
||||
accent1: (
|
||||
bg: #666,
|
||||
fg: mix(#666, #ffffff, 25%),
|
||||
fg-bold: #ffffff,
|
||||
fg-light: mix(#666, #ffffff, 40%)
|
||||
),
|
||||
accent2: (
|
||||
bg: #e89980,
|
||||
fg: mix(#e89980, #ffffff, 25%),
|
||||
fg-bold: #ffffff,
|
||||
fg-light: mix(#e89980, #ffffff, 40%)
|
||||
),
|
||||
accent3: (
|
||||
bg: #7fcdb8,
|
||||
fg: mix(#7fcdb8, #ffffff, 25%),
|
||||
fg-bold: #ffffff,
|
||||
fg-light: mix(#7fcdb8, #ffffff, 40%)
|
||||
),
|
||||
accent4: (
|
||||
bg: #90b0ba,
|
||||
fg: mix(#90b0ba, #ffffff, 25%),
|
||||
fg-bold: #ffffff,
|
||||
fg-light: mix(#90b0ba, #ffffff, 40%)
|
||||
),
|
||||
accent5: (
|
||||
bg: #e5cb95,
|
||||
fg: mix(#e5cb95, #ffffff, 25%),
|
||||
fg-bold: #ffffff,
|
||||
fg-light: mix(#e5cb95, #ffffff, 40%)
|
||||
)
|
||||
);
|
@ -0,0 +1,376 @@
|
||||
// vendor.scss v1.0 | @ajlkn | MIT licensed */
|
||||
|
||||
// Vars.
|
||||
|
||||
/// Vendor prefixes.
|
||||
/// @var {list}
|
||||
$vendor-prefixes: (
|
||||
'-moz-',
|
||||
'-webkit-',
|
||||
'-ms-',
|
||||
''
|
||||
);
|
||||
|
||||
/// Properties that should be vendorized.
|
||||
/// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org
|
||||
/// @var {list}
|
||||
$vendor-properties: (
|
||||
|
||||
// Animation.
|
||||
'animation',
|
||||
'animation-delay',
|
||||
'animation-direction',
|
||||
'animation-duration',
|
||||
'animation-fill-mode',
|
||||
'animation-iteration-count',
|
||||
'animation-name',
|
||||
'animation-play-state',
|
||||
'animation-timing-function',
|
||||
|
||||
// Appearance.
|
||||
'appearance',
|
||||
|
||||
// Backdrop filter.
|
||||
'backdrop-filter',
|
||||
|
||||
// Background image options.
|
||||
'background-clip',
|
||||
'background-origin',
|
||||
'background-size',
|
||||
|
||||
// Box sizing.
|
||||
'box-sizing',
|
||||
|
||||
// Clip path.
|
||||
'clip-path',
|
||||
|
||||
// Filter effects.
|
||||
'filter',
|
||||
|
||||
// Flexbox.
|
||||
'align-content',
|
||||
'align-items',
|
||||
'align-self',
|
||||
'flex',
|
||||
'flex-basis',
|
||||
'flex-direction',
|
||||
'flex-flow',
|
||||
'flex-grow',
|
||||
'flex-shrink',
|
||||
'flex-wrap',
|
||||
'justify-content',
|
||||
'order',
|
||||
|
||||
// Font feature.
|
||||
'font-feature-settings',
|
||||
'font-language-override',
|
||||
'font-variant-ligatures',
|
||||
|
||||
// Font kerning.
|
||||
'font-kerning',
|
||||
|
||||
// Fragmented borders and backgrounds.
|
||||
'box-decoration-break',
|
||||
|
||||
// Grid layout.
|
||||
'grid-column',
|
||||
'grid-column-align',
|
||||
'grid-column-end',
|
||||
'grid-column-start',
|
||||
'grid-row',
|
||||
'grid-row-align',
|
||||
'grid-row-end',
|
||||
'grid-row-start',
|
||||
'grid-template-columns',
|
||||
'grid-template-rows',
|
||||
|
||||
// Hyphens.
|
||||
'hyphens',
|
||||
'word-break',
|
||||
|
||||
// Masks.
|
||||
'mask',
|
||||
'mask-border',
|
||||
'mask-border-outset',
|
||||
'mask-border-repeat',
|
||||
'mask-border-slice',
|
||||
'mask-border-source',
|
||||
'mask-border-width',
|
||||
'mask-clip',
|
||||
'mask-composite',
|
||||
'mask-image',
|
||||
'mask-origin',
|
||||
'mask-position',
|
||||
'mask-repeat',
|
||||
'mask-size',
|
||||
|
||||
// Multicolumn.
|
||||
'break-after',
|
||||
'break-before',
|
||||
'break-inside',
|
||||
'column-count',
|
||||
'column-fill',
|
||||
'column-gap',
|
||||
'column-rule',
|
||||
'column-rule-color',
|
||||
'column-rule-style',
|
||||
'column-rule-width',
|
||||
'column-span',
|
||||
'column-width',
|
||||
'columns',
|
||||
|
||||
// Object fit.
|
||||
'object-fit',
|
||||
'object-position',
|
||||
|
||||
// Regions.
|
||||
'flow-from',
|
||||
'flow-into',
|
||||
'region-fragment',
|
||||
|
||||
// Scroll snap points.
|
||||
'scroll-snap-coordinate',
|
||||
'scroll-snap-destination',
|
||||
'scroll-snap-points-x',
|
||||
'scroll-snap-points-y',
|
||||
'scroll-snap-type',
|
||||
|
||||
// Shapes.
|
||||
'shape-image-threshold',
|
||||
'shape-margin',
|
||||
'shape-outside',
|
||||
|
||||
// Tab size.
|
||||
'tab-size',
|
||||
|
||||
// Text align last.
|
||||
'text-align-last',
|
||||
|
||||
// Text decoration.
|
||||
'text-decoration-color',
|
||||
'text-decoration-line',
|
||||
'text-decoration-skip',
|
||||
'text-decoration-style',
|
||||
|
||||
// Text emphasis.
|
||||
'text-emphasis',
|
||||
'text-emphasis-color',
|
||||
'text-emphasis-position',
|
||||
'text-emphasis-style',
|
||||
|
||||
// Text size adjust.
|
||||
'text-size-adjust',
|
||||
|
||||
// Text spacing.
|
||||
'text-spacing',
|
||||
|
||||
// Transform.
|
||||
'transform',
|
||||
'transform-origin',
|
||||
|
||||
// Transform 3D.
|
||||
'backface-visibility',
|
||||
'perspective',
|
||||
'perspective-origin',
|
||||
'transform-style',
|
||||
|
||||
// Transition.
|
||||
'transition',
|
||||
'transition-delay',
|
||||
'transition-duration',
|
||||
'transition-property',
|
||||
'transition-timing-function',
|
||||
|
||||
// Unicode bidi.
|
||||
'unicode-bidi',
|
||||
|
||||
// User select.
|
||||
'user-select',
|
||||
|
||||
// Writing mode.
|
||||
'writing-mode',
|
||||
|
||||
);
|
||||
|
||||
/// Values that should be vendorized.
|
||||
/// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org
|
||||
/// @var {list}
|
||||
$vendor-values: (
|
||||
|
||||
// Cross fade.
|
||||
'cross-fade',
|
||||
|
||||
// Element function.
|
||||
'element',
|
||||
|
||||
// Filter function.
|
||||
'filter',
|
||||
|
||||
// Flexbox.
|
||||
'flex',
|
||||
'inline-flex',
|
||||
|
||||
// Grab cursors.
|
||||
'grab',
|
||||
'grabbing',
|
||||
|
||||
// Gradients.
|
||||
'linear-gradient',
|
||||
'repeating-linear-gradient',
|
||||
'radial-gradient',
|
||||
'repeating-radial-gradient',
|
||||
|
||||
// Grid layout.
|
||||
'grid',
|
||||
'inline-grid',
|
||||
|
||||
// Image set.
|
||||
'image-set',
|
||||
|
||||
// Intrinsic width.
|
||||
'max-content',
|
||||
'min-content',
|
||||
'fit-content',
|
||||
'fill',
|
||||
'fill-available',
|
||||
'stretch',
|
||||
|
||||
// Sticky position.
|
||||
'sticky',
|
||||
|
||||
// Transform.
|
||||
'transform',
|
||||
|
||||
// Zoom cursors.
|
||||
'zoom-in',
|
||||
'zoom-out',
|
||||
|
||||
);
|
||||
|
||||
// Functions.
|
||||
|
||||
/// Removes a specific item from a list.
|
||||
/// @author Hugo Giraudel
|
||||
/// @param {list} $list List.
|
||||
/// @param {integer} $index Index.
|
||||
/// @return {list} Updated list.
|
||||
@function remove-nth($list, $index) {
|
||||
|
||||
$result: null;
|
||||
|
||||
@if type-of($index) != number {
|
||||
@warn "$index: #{quote($index)} is not a number for `remove-nth`.";
|
||||
}
|
||||
@else if $index == 0 {
|
||||
@warn "List index 0 must be a non-zero integer for `remove-nth`.";
|
||||
}
|
||||
@else if abs($index) > length($list) {
|
||||
@warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`.";
|
||||
}
|
||||
@else {
|
||||
|
||||
$result: ();
|
||||
$index: if($index < 0, length($list) + $index + 1, $index);
|
||||
|
||||
@for $i from 1 through length($list) {
|
||||
|
||||
@if $i != $index {
|
||||
$result: append($result, nth($list, $i));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@return $result;
|
||||
|
||||
}
|
||||
|
||||
/// Replaces a substring within another string.
|
||||
/// @author Hugo Giraudel
|
||||
/// @param {string} $string String.
|
||||
/// @param {string} $search Substring.
|
||||
/// @param {string} $replace Replacement.
|
||||
/// @return {string} Updated string.
|
||||
@function str-replace($string, $search, $replace: '') {
|
||||
|
||||
$index: str-index($string, $search);
|
||||
|
||||
@if $index {
|
||||
@return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
|
||||
}
|
||||
|
||||
@return $string;
|
||||
|
||||
}
|
||||
|
||||
/// Replaces a substring within each string in a list.
|
||||
/// @param {list} $strings List of strings.
|
||||
/// @param {string} $search Substring.
|
||||
/// @param {string} $replace Replacement.
|
||||
/// @return {list} Updated list of strings.
|
||||
@function str-replace-all($strings, $search, $replace: '') {
|
||||
|
||||
@each $string in $strings {
|
||||
$strings: set-nth($strings, index($strings, $string), str-replace($string, $search, $replace));
|
||||
}
|
||||
|
||||
@return $strings;
|
||||
|
||||
}
|
||||
|
||||
// Mixins.
|
||||
|
||||
/// Wraps @content in vendorized keyframe blocks.
|
||||
/// @param {string} $name Name.
|
||||
@mixin keyframes($name) {
|
||||
|
||||
@-moz-keyframes #{$name} { @content; }
|
||||
@-webkit-keyframes #{$name} { @content; }
|
||||
@-ms-keyframes #{$name} { @content; }
|
||||
@keyframes #{$name} { @content; }
|
||||
|
||||
}
|
||||
|
||||
/// Vendorizes a declaration's property and/or value(s).
|
||||
/// @param {string} $property Property.
|
||||
/// @param {mixed} $value String/list of value(s).
|
||||
@mixin vendor($property, $value) {
|
||||
|
||||
// Determine if property should expand.
|
||||
$expandProperty: index($vendor-properties, $property);
|
||||
|
||||
// Determine if value should expand (and if so, add '-prefix-' placeholder).
|
||||
$expandValue: false;
|
||||
|
||||
@each $x in $value {
|
||||
@each $y in $vendor-values {
|
||||
@if $y == str-slice($x, 1, str-length($y)) {
|
||||
|
||||
$value: set-nth($value, index($value, $x), '-prefix-' + $x);
|
||||
$expandValue: true;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Expand property?
|
||||
@if $expandProperty {
|
||||
@each $vendor in $vendor-prefixes {
|
||||
#{$vendor}#{$property}: #{str-replace-all($value, '-prefix-', $vendor)};
|
||||
}
|
||||
}
|
||||
|
||||
// Expand just the value?
|
||||
@elseif $expandValue {
|
||||
@each $vendor in $vendor-prefixes {
|
||||
#{$property}: #{str-replace-all($value, '-prefix-', $vendor)};
|
||||
}
|
||||
}
|
||||
|
||||
// Neither? Treat them as a normal declaration.
|
||||
@else {
|
||||
#{$property}: #{$value};
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
baseURL = "http://example.org/"
|
||||
languageCode = "en-us"
|
||||
title = "Alpha Church"
|
||||
|
||||
ignoreFiles = [".*"]
|
||||
disableKinds = ["section","taxonomy","taxonomyTerm","RSS","404","sitemap"]
|
||||
defaultContentLanguage = "cli"
|
||||
|
||||
[outputs]
|
||||
home = ["CLI"]
|
||||
|
||||
[mediaTypes."text/custom"]
|
||||
suffixes = [""]
|
||||
delimiter = ""
|
||||
|
||||
[outputFormats."CLI"]
|
||||
mediaType = "text/custom"
|
||||
isHTML = "false"
|
||||
baseName = "hugo.log"
|
||||
|
||||
[taxonomies]
|
||||
tag = "tags"
|
||||
preacher = "preachers"
|
||||
series = "series"
|
@ -0,0 +1,28 @@
|
||||
# Versioning and Subresource Integrity (SRI) for Alpha-Church's JavaScript and CSS dependencies
|
||||
|
||||
# When updating the version of an asset below, please also update the corresponding SRI.
|
||||
# To update the SRI for an entry visit https://www.srihash.org/
|
||||
# Or, the SRI for the appropriate asset can be copied from https://cdnjs.com/ .
|
||||
|
||||
# JavaScript
|
||||
[js.leaflet]
|
||||
version = "1.7.1"
|
||||
integrity = "sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA=="
|
||||
|
||||
[js.plyr]
|
||||
#Make sure the hash is for the polyfilled version
|
||||
version = "3.6.3"
|
||||
integrity = "sha384-pjdJdX22j79Dad+talS8QAz8CsXB1v9F6bnwk89YEEaKrMJpuAsg2kGRYiIxhLHU"
|
||||
|
||||
[js.instantpage]
|
||||
version = "5.1.0"
|
||||
integrity = "sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"
|
||||
|
||||
# CSS
|
||||
[css.leaflet]
|
||||
version = "1.7.1"
|
||||
integrity = "sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A=="
|
||||
|
||||
[css.plyr]
|
||||
version = "3.6.3"
|
||||
integrity = "sha384-m45O5d2TuOZgtLQsdrmTJccVOtFFSEYIWmwa5SGfFl+EHJwkH4XE+dBehXgGq9An"
|
@ -0,0 +1,172 @@
|
||||
baseURL = "http://example.org/"
|
||||
languageCode = "en-us"
|
||||
title = "Alpha Church"
|
||||
theme = "alpha-church"
|
||||
themesDir = "../.."
|
||||
|
||||
rssLimit = 5
|
||||
paginate = 4
|
||||
|
||||
enableEmoji = true
|
||||
|
||||
# Enter your tracking code to enable Google Analytics
|
||||
googleAnalytics = ""
|
||||
|
||||
enableInlineShortcodes = true
|
||||
|
||||
[markup.goldmark.renderer]
|
||||
unsafe = true
|
||||
|
||||
[taxonomies]
|
||||
tag = "tags"
|
||||
preacher = "preachers"
|
||||
series = "series"
|
||||
|
||||
#This theme can generate a multi-level menu.
|
||||
#Use weight= to specify the order of menu items, and parent= to create a submenu item.
|
||||
[menu]
|
||||
[[menu.main]]
|
||||
name = "Home"
|
||||
url = "/"
|
||||
weight = 1
|
||||
|
||||
[[menu.main]]
|
||||
name = "About"
|
||||
url = "/about"
|
||||
weight = 2
|
||||
|
||||
[[menu.main]]
|
||||
name = "About Us"
|
||||
parent = "About"
|
||||
url = "/about"
|
||||
weight = 1
|
||||
|
||||
[[menu.main]]
|
||||
name = "Leaders"
|
||||
parent = "About"
|
||||
url = "/leaders"
|
||||
weight = 2
|
||||
|
||||
[[menu.main]]
|
||||
name = "Resources"
|
||||
url = "#"
|
||||
weight = 3
|
||||
|
||||
[[menu.main]]
|
||||
name = "Sermons"
|
||||
url = "/sermons"
|
||||
parent = "Resources"
|
||||
weight = 1
|
||||
|
||||
[[menu.main]]
|
||||
name = "Preachers"
|
||||
url = "/preachers"
|
||||
parent = "Sermons"
|
||||
weight = 1
|
||||
|
||||
[[menu.main]]
|
||||
name = "Best Ever"
|
||||
url = "#"
|
||||
parent = "Sermons"
|
||||
weight = 1
|
||||
|
||||
[[menu.main]]
|
||||
name = "Blog"
|
||||
url = "/posts"
|
||||
parent = "Resources"
|
||||
weight = 2
|
||||
|
||||
[[menu.main]]
|
||||
name = "Contact"
|
||||
url = "/contact"
|
||||
weight = 4
|
||||
|
||||
# Paramaters for the whole site
|
||||
[params]
|
||||
title = "Alpha Church"
|
||||
subtitle = "Another Church Theme"
|
||||
author = "Daniel Saunders"
|
||||
keywords = ["theme", "hugo", "podcast"]
|
||||
languageCode = "en" # For accessibility this needs to be set. You can find all language codes at https://www.w3schools.com/tags/ref_language_codes.asp
|
||||
|
||||
bible_popups = "faithlife" #faithlife, blb
|
||||
bible_version = "CSB" #HCSB, NIV, NLT, ESV, etc.
|
||||
instant_page = true
|
||||
|
||||
customCSS = ["example.css"]
|
||||
|
||||
[params.banner]
|
||||
image = "img/banner.jpg"
|
||||
|
||||
# [params.style]
|
||||
# googleFonts = ["Cardo", "Crimson+Text", "Merriweather", "Playfair+Display:400,700", "Roboto+Slab"]
|
||||
|
||||
[params.podcast]
|
||||
title = "Listen to Alpha Church"
|
||||
subtitle = ""
|
||||
summary = "Alpha-Church sermons, talks, messages—podcasted."
|
||||
email = "test@example.com"
|
||||
copyright = "Podcast: [CC0 (public domain)](//creativecommons.org/publicdomain/zero/1.0/)"
|
||||
image = "img/podcast-cover.jpg"
|
||||
category = "Religion & Spirituality"
|
||||
sub_category = "Christianity"
|
||||
iTunes = "https://itunes.apple.com/us/podcast/tgc-word-of-the-week/id1034013280"
|
||||
feed = "https://www.thegospelcoalition.org/podcasts/word-of-the-week/feed/?feed=podcast"
|
||||
|
||||
[params.map]
|
||||
service = "osm" #"osm" for OpenStreetMaps, "google" for Google Maps, or "mapbox" for Mapbox, see SETUP.md
|
||||
# For Open Street Map widgets
|
||||
latitude = "48.8530"
|
||||
longitude = "2.3498"
|
||||
zoom = "18"
|
||||
# If you want to use google maps you'll need an API Key from Google https://developers.google.com/maps/documentation/embed/get-api-key
|
||||
#service = "google"
|
||||
#api_key = "XXXXXXXX"
|
||||
#language = "fr" #Optional
|
||||
#region = "FR" #Optional
|
||||
|
||||
[params.contact]
|
||||
#Use this section to automate contact form.
|
||||
#Set service to either "netlify", "formspree" or "php"
|
||||
#For formspree, please setup an account at https://formspree.io/
|
||||
#For netlify, please read https://www.netlify.com/docs/form-handling/
|
||||
#
|
||||
#If you use netlify, you'll need to set the confirm_page value (or else users will see a generic netlify response)
|
||||
#If you use formspree, you'll need to set your formspree email address.
|
||||
#
|
||||
#If you use php, you need to host this site on a Server capable of running php.
|
||||
# Please edit the /static/contact_mail.php file from the exampleSite.
|
||||
service = "netlify"
|
||||
confirm_page = "/contact_thanks"
|
||||
# formspree_email=""
|
||||
|
||||
|
||||
[params.footer]
|
||||
copyright = ["[CC0 (public domain)](//creativecommons.org/publicdomain/zero/1.0/)",
|
||||
"Design: [HTML5 UP](//html5up.net/alpha)",
|
||||
"[Hugo Port](//gohugo.io) by [Daniel Saunders](//github.com/funkydan2)"
|
||||
]
|
||||
|
||||
[[params.links]]
|
||||
service = "Twitter"
|
||||
icon = "fa-twitter"
|
||||
icon_pack = "fab"
|
||||
link = "//twitter.com/"
|
||||
|
||||
[[params.links]]
|
||||
service = "Facebook"
|
||||
icon = "fa-facebook"
|
||||
icon_pack = "fab"
|
||||
link = "//facebook.com/"
|
||||
|
||||
[[params.links]]
|
||||
service = "Podcast"
|
||||
icon = "fa-podcast"
|
||||
icon_pack = "fas"
|
||||
link = "/sermons/index.xml"
|
||||
|
||||
[[params.links]]
|
||||
service = "Full RSS Feed"
|
||||
icon = "fa-rss"
|
||||
icon_pack = "fas"
|
||||
link = "/index.xml"
|
@ -0,0 +1,73 @@
|
||||
+++
|
||||
[banner]
|
||||
[[banner.button]]
|
||||
url = "/contact"
|
||||
text = "Get in touch"
|
||||
type = "primary"
|
||||
|
||||
[[banner.button]]
|
||||
url = "#feature-icons"
|
||||
text = "Find out more"
|
||||
|
||||
#Details for the box below the banner
|
||||
[services]
|
||||
title = "Church on Sunday"
|
||||
text = "We meet at 5 am and 2 pm at [6 Parvis Notre-Dame - Pl. Jean-Paul II, 75004 Paris](https://www.openstreetmap.org/way/201611261)."
|
||||
map_location = "Cathédrale Notre-Dame de Paris"
|
||||
|
||||
[feature_icons]
|
||||
#These feature icons look best if there's an even number of them.
|
||||
enable = true
|
||||
|
||||
#Accent is a colour defined in the CSS file. Choose between 1 and 5
|
||||
[[feature_icons.tile]]
|
||||
icon = "fa-hands-helping"
|
||||
icon_pack = "fas"
|
||||
accent = "1"
|
||||
title = "Serve"
|
||||
text = "Growing people who serve our community."
|
||||
url = "/kids"
|
||||
|
||||
[[feature_icons.tile]]
|
||||
icon = "fa-church"
|
||||
icon_pack = "fas"
|
||||
accent = "2"
|
||||
title = "Meet"
|
||||
text = "Meeting together to hear."
|
||||
|
||||
[[feature_icons.tile]]
|
||||
icon = "fa-comments"
|
||||
icon_pack = "fas"
|
||||
accent = "5"
|
||||
title = "Speak"
|
||||
text = "Speaking encouragement to one-another."
|
||||
|
||||
[[feature_icons.tile]]
|
||||
icon = "fa-heartbeat"
|
||||
icon_pack = "fas"
|
||||
accent = "3"
|
||||
title = "Loved"
|
||||
text = "Knowing Love. Being Loved."
|
||||
|
||||
[feature_images]
|
||||
#These feature images look best if there's an even number of them.
|
||||
enable = true
|
||||
|
||||
[[feature_images.tile]]
|
||||
image = "img/freely-10057.jpg"
|
||||
title = "Childrens' Ministry"
|
||||
text = "A church for the family."
|
||||
url = "/kids"
|
||||
button_text = "Learn more"
|
||||
|
||||
[[feature_images.tile]]
|
||||
image = "img/freely-26905.jpg"
|
||||
title = "Midweek Ministries"
|
||||
text = "Want more during the week?"
|
||||
url = "#"
|
||||
button_text="Join a group today!"
|
||||
|
||||
[CTA]
|
||||
heading = "Get in touch!"
|
||||
message = "We'd love to hear from you."
|
||||
+++
|
@ -0,0 +1,10 @@
|
||||
---
|
||||
title: "Contact"
|
||||
subtitle: ""
|
||||
date: 2018-05-12T13:49:50+10:00
|
||||
images: ["img/pavan-trikutam-71CjSSB83Wo-unsplash.jpg"]
|
||||
tags: ""
|
||||
draft: false
|
||||
---
|
||||
|
||||
{{< contact.inline >}}{{ partial "contact" . }}{{< /contact.inline >}}
|
@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "Thanks for Contacting Us"
|
||||
subtitle: ""
|
||||
date: 2018-05-12T13:38:38+10:00
|
||||
images: ["img/pavan-trikutam-71CjSSB83Wo-unsplash.jpg"]
|
||||
tags: ""
|
||||
draft: false
|
||||
---
|
||||
Thanks for touching base with us. Someone from **Alpha** *Church* will be in touch soon.
|
@ -0,0 +1,21 @@
|
||||
---
|
||||
title: "Kids"
|
||||
subtitle: "Ministry with Children"
|
||||
date: 2018-05-01T07:39:12+10:00
|
||||
images: [img/freely-10057.jpg]
|
||||
tags: ["two_column","ministry"]
|
||||
draft: false
|
||||
---
|
||||
This is an example of multiple columns.
|
||||
|
||||
Unfortunately it needs the author to write html to work (though I could put everything in the front matter!)
|
||||
<div class="row">
|
||||
<div class="col-6 col-12-mobilep">
|
||||
<h3>Left Column</h3>
|
||||
<p>You can fill this in with <i>html</i> or *markdown* </p>
|
||||
</div>
|
||||
<div class="col-6 col-12-mobilep">
|
||||
<h3>And another subheading</h3>
|
||||
<p>Adipiscing faucibus nunc placerat. Tempus adipiscing turpis non blandit accumsan eget lacinia nunc integer interdum amet aliquam ut orci non col ut ut praesent. Semper amet interdum mi. Phasellus enim laoreet ac ac commodo faucibus faucibus. Curae lorem ipsum adipiscing ac. Vivamus ornare laoreet odio vis praesent.</p>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,8 @@
|
||||
---
|
||||
title: "Leaders"
|
||||
date: 2018-04-30T14:27:13+10:00
|
||||
draft: false
|
||||
---
|
||||
# This is a page about leaders
|
||||
|
||||

|
@ -0,0 +1,344 @@
|
||||
+++
|
||||
title = "(Hu)go Template Primer"
|
||||
description = ""
|
||||
tags = [
|
||||
"go",
|
||||
"golang",
|
||||
"templates",
|
||||
"themes",
|
||||
"development",
|
||||
]
|
||||
date = "2014-04-02"
|
||||
categories = [
|
||||
"Development",
|
||||
"golang",
|
||||
]
|
||||
images = []
|
||||
+++
|
||||
|
||||
Hugo uses the excellent [go][] [html/template][gohtmltemplate] library for
|
||||
its template engine. It is an extremely lightweight engine that provides a very
|
||||
small amount of logic. In our experience that it is just the right amount of
|
||||
logic to be able to create a good static website. If you have used other
|
||||
template systems from different languages or frameworks you will find a lot of
|
||||
similarities in go templates.
|
||||
|
||||
This document is a brief primer on using go templates. The [go docs][gohtmltemplate]
|
||||
provide more details.
|
||||
|
||||
## Introduction to Go Templates
|
||||
|
||||
Go templates provide an extremely simple template language. It adheres to the
|
||||
belief that only the most basic of logic belongs in the template or view layer.
|
||||
One consequence of this simplicity is that go templates parse very quickly.
|
||||
|
||||
A unique characteristic of go templates is they are content aware. Variables and
|
||||
content will be sanitized depending on the context of where they are used. More
|
||||
details can be found in the [go docs][gohtmltemplate].
|
||||
|
||||
## Basic Syntax
|
||||
|
||||
Go lang templates are html files with the addition of variables and
|
||||
functions.
|
||||
|
||||
**Go variables and functions are accessible within {{ }}**
|
||||
|
||||
Accessing a predefined variable "foo":
|
||||
|
||||
{{ foo }}
|
||||
|
||||
**Parameters are separated using spaces**
|
||||
|
||||
Calling the add function with input of 1, 2:
|
||||
|
||||
{{ add 1 2 }}
|
||||
|
||||
**Methods and fields are accessed via dot notation**
|
||||
|
||||
Accessing the Page Parameter "bar"
|
||||
|
||||
{{ .Params.bar }}
|
||||
|
||||
**Parentheses can be used to group items together**
|
||||
|
||||
{{ if or (isset .Params "alt") (isset .Params "caption") }} Caption {{ end }}
|
||||
|
||||
|
||||
## Variables
|
||||
|
||||
Each go template has a struct (object) made available to it. In hugo each
|
||||
template is passed either a page or a node struct depending on which type of
|
||||
page you are rendering. More details are available on the
|
||||
[variables](/layout/variables) page.
|
||||
|
||||
A variable is accessed by referencing the variable name.
|
||||
|
||||
<title>{{ .Title }}</title>
|
||||
|
||||
Variables can also be defined and referenced.
|
||||
|
||||
{{ $address := "123 Main St."}}
|
||||
{{ $address }}
|
||||
|
||||
|
||||
## Functions
|
||||
|
||||
Go template ship with a few functions which provide basic functionality. The go
|
||||
template system also provides a mechanism for applications to extend the
|
||||
available functions with their own. [Hugo template
|
||||
functions](/layout/functions) provide some additional functionality we believe
|
||||
are useful for building websites. Functions are called by using their name
|
||||
followed by the required parameters separated by spaces. Template
|
||||
functions cannot be added without recompiling hugo.
|
||||
|
||||
**Example:**
|
||||
|
||||
{{ add 1 2 }}
|
||||
|
||||
## Includes
|
||||
|
||||
When including another template you will pass to it the data it will be
|
||||
able to access. To pass along the current context please remember to
|
||||
include a trailing dot. The templates location will always be starting at
|
||||
the /layout/ directory within Hugo.
|
||||
|
||||
**Example:**
|
||||
|
||||
{{ template "chrome/header.html" . }}
|
||||
|
||||
|
||||
## Logic
|
||||
|
||||
Go templates provide the most basic iteration and conditional logic.
|
||||
|
||||
### Iteration
|
||||
|
||||
Just like in go, the go templates make heavy use of range to iterate over
|
||||
a map, array or slice. The following are different examples of how to use
|
||||
range.
|
||||
|
||||
**Example 1: Using Context**
|
||||
|
||||
{{ range array }}
|
||||
{{ . }}
|
||||
{{ end }}
|
||||
|
||||
**Example 2: Declaring value variable name**
|
||||
|
||||
{{range $element := array}}
|
||||
{{ $element }}
|
||||
{{ end }}
|
||||
|
||||
**Example 2: Declaring key and value variable name**
|
||||
|
||||
{{range $index, $element := array}}
|
||||
{{ $index }}
|
||||
{{ $element }}
|
||||
{{ end }}
|
||||
|
||||
### Conditionals
|
||||
|
||||
If, else, with, or, & and provide the framework for handling conditional
|
||||
logic in Go Templates. Like range, each statement is closed with `end`.
|
||||
|
||||
|
||||
Go Templates treat the following values as false:
|
||||
|
||||
* false
|
||||
* 0
|
||||
* any array, slice, map, or string of length zero
|
||||
|
||||
**Example 1: If**
|
||||
|
||||
{{ if isset .Params "title" }}<h4>{{ index .Params "title" }}</h4>{{ end }}
|
||||
|
||||
**Example 2: If -> Else**
|
||||
|
||||
{{ if isset .Params "alt" }}
|
||||
{{ index .Params "alt" }}
|
||||
{{else}}
|
||||
{{ index .Params "caption" }}
|
||||
{{ end }}
|
||||
|
||||
**Example 3: And & Or**
|
||||
|
||||
{{ if and (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}}
|
||||
|
||||
**Example 4: With**
|
||||
|
||||
An alternative way of writing "if" and then referencing the same value
|
||||
is to use "with" instead. With rebinds the context `.` within its scope,
|
||||
and skips the block if the variable is absent.
|
||||
|
||||
The first example above could be simplified as:
|
||||
|
||||
{{ with .Params.title }}<h4>{{ . }}</h4>{{ end }}
|
||||
|
||||
**Example 5: If -> Else If**
|
||||
|
||||
{{ if isset .Params "alt" }}
|
||||
{{ index .Params "alt" }}
|
||||
{{ else if isset .Params "caption" }}
|
||||
{{ index .Params "caption" }}
|
||||
{{ end }}
|
||||
|
||||
## Pipes
|
||||
|
||||
One of the most powerful components of go templates is the ability to
|
||||
stack actions one after another. This is done by using pipes. Borrowed
|
||||
from unix pipes, the concept is simple, each pipeline's output becomes the
|
||||
input of the following pipe.
|
||||
|
||||
Because of the very simple syntax of go templates, the pipe is essential
|
||||
to being able to chain together function calls. One limitation of the
|
||||
pipes is that they only can work with a single value and that value
|
||||
becomes the last parameter of the next pipeline.
|
||||
|
||||
A few simple examples should help convey how to use the pipe.
|
||||
|
||||
**Example 1 :**
|
||||
|
||||
{{ if eq 1 1 }} Same {{ end }}
|
||||
|
||||
is the same as
|
||||
|
||||
{{ eq 1 1 | if }} Same {{ end }}
|
||||
|
||||
It does look odd to place the if at the end, but it does provide a good
|
||||
illustration of how to use the pipes.
|
||||
|
||||
**Example 2 :**
|
||||
|
||||
{{ index .Params "disqus_url" | html }}
|
||||
|
||||
Access the page parameter called "disqus_url" and escape the HTML.
|
||||
|
||||
**Example 3 :**
|
||||
|
||||
{{ if or (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}}
|
||||
Stuff Here
|
||||
{{ end }}
|
||||
|
||||
Could be rewritten as
|
||||
|
||||
{{ isset .Params "caption" | or isset .Params "title" | or isset .Params "attr" | if }}
|
||||
Stuff Here
|
||||
{{ end }}
|
||||
|
||||
|
||||
## Context (aka. the dot)
|
||||
|
||||
The most easily overlooked concept to understand about go templates is that {{ . }}
|
||||
always refers to the current context. In the top level of your template this
|
||||
will be the data set made available to it. Inside of a iteration it will have
|
||||
the value of the current item. When inside of a loop the context has changed. .
|
||||
will no longer refer to the data available to the entire page. If you need to
|
||||
access this from within the loop you will likely want to set it to a variable
|
||||
instead of depending on the context.
|
||||
|
||||
**Example:**
|
||||
|
||||
{{ $title := .Site.Title }}
|
||||
{{ range .Params.tags }}
|
||||
<li> <a href="{{ $baseurl }}/tags/{{ . | urlize }}">{{ . }}</a> - {{ $title }} </li>
|
||||
{{ end }}
|
||||
|
||||
Notice how once we have entered the loop the value of {{ . }} has changed. We
|
||||
have defined a variable outside of the loop so we have access to it from within
|
||||
the loop.
|
||||
|
||||
# Hugo Parameters
|
||||
|
||||
Hugo provides the option of passing values to the template language
|
||||
through the site configuration (for sitewide values), or through the meta
|
||||
data of each specific piece of content. You can define any values of any
|
||||
type (supported by your front matter/config format) and use them however
|
||||
you want to inside of your templates.
|
||||
|
||||
|
||||
## Using Content (page) Parameters
|
||||
|
||||
In each piece of content you can provide variables to be used by the
|
||||
templates. This happens in the [front matter](/content/front-matter).
|
||||
|
||||
An example of this is used in this documentation site. Most of the pages
|
||||
benefit from having the table of contents provided. Sometimes the TOC just
|
||||
doesn't make a lot of sense. We've defined a variable in our front matter
|
||||
of some pages to turn off the TOC from being displayed.
|
||||
|
||||
Here is the example front matter:
|
||||
|
||||
```
|
||||
---
|
||||
title: "Permalinks"
|
||||
date: "2013-11-18"
|
||||
aliases:
|
||||
- "/doc/permalinks/"
|
||||
groups: ["extras"]
|
||||
groups_weight: 30
|
||||
notoc: true
|
||||
---
|
||||
```
|
||||
|
||||
Here is the corresponding code inside of the template:
|
||||
|
||||
{{ if not .Params.notoc }}
|
||||
<div id="toc" class="well col-md-4 col-sm-6">
|
||||
{{ .TableOfContents }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
|
||||
|
||||
## Using Site (config) Parameters
|
||||
In your top-level configuration file (eg, `config.yaml`) you can define site
|
||||
parameters, which are values which will be available to you in chrome.
|
||||
|
||||
For instance, you might declare:
|
||||
|
||||
```yaml
|
||||
params:
|
||||
CopyrightHTML: "Copyright © 2013 John Doe. All Rights Reserved."
|
||||
TwitterUser: "spf13"
|
||||
SidebarRecentLimit: 5
|
||||
```
|
||||
|
||||
Within a footer layout, you might then declare a `<footer>` which is only
|
||||
provided if the `CopyrightHTML` parameter is provided, and if it is given,
|
||||
you would declare it to be HTML-safe, so that the HTML entity is not escaped
|
||||
again. This would let you easily update just your top-level config file each
|
||||
January 1st, instead of hunting through your templates.
|
||||
|
||||
```
|
||||
{{if .Site.Params.CopyrightHTML}}<footer>
|
||||
<div class="text-center">{{.Site.Params.CopyrightHTML | safeHtml}}</div>
|
||||
</footer>{{end}}
|
||||
```
|
||||
|
||||
An alternative way of writing the "if" and then referencing the same value
|
||||
is to use "with" instead. With rebinds the context `.` within its scope,
|
||||
and skips the block if the variable is absent:
|
||||
|
||||
```
|
||||
{{with .Site.Params.TwitterUser}}<span class="twitter">
|
||||
<a href="//twitter.com/{{.}}" rel="author">
|
||||
<img src="/images/twitter.png" width="48" height="48" title="Twitter: {{.}}"
|
||||
alt="Twitter"></a>
|
||||
</span>{{end}}
|
||||
```
|
||||
|
||||
Finally, if you want to pull "magic constants" out of your layouts, you can do
|
||||
so, such as in this example:
|
||||
|
||||
```
|
||||
<nav class="recent">
|
||||
<h1>Recent Posts</h1>
|
||||
<ul>{{range first .Site.Params.SidebarRecentLimit .Site.Recent}}
|
||||
<li><a href="{{.RelPermalink}}">{{.Title}}</a></li>
|
||||
{{end}}</ul>
|
||||
</nav>
|
||||
```
|
||||
|
||||
|
||||
[go]: <//golang.org/>
|
||||
[gohtmltemplate]: <//golang.org/pkg/html/template/>
|
@ -0,0 +1,8 @@
|
||||
---
|
||||
title: "Hello World!"
|
||||
subtitle: "Just wanted to say..."
|
||||
date: 2018-05-03T21:08:01+10:00
|
||||
images: ["img/freely-26905.jpg"]
|
||||
tags: ["testing"]
|
||||
---
|
||||
Just saying *hi*!
|
@ -0,0 +1,89 @@
|
||||
+++
|
||||
title = "Getting Started with Hugo"
|
||||
description = ""
|
||||
tags = [
|
||||
"go",
|
||||
"golang",
|
||||
"hugo",
|
||||
"development",
|
||||
]
|
||||
date = "2014-04-02"
|
||||
categories = [
|
||||
"Development",
|
||||
"golang",
|
||||
]
|
||||
images = []
|
||||
+++
|
||||
|
||||
## Step 1. Install Hugo
|
||||
|
||||
Goto [hugo releases](https://github.com/spf13/hugo/releases) and download the
|
||||
appropriate version for your os and architecture.
|
||||
|
||||
Save it somewhere specific as we will be using it in the next step.
|
||||
|
||||
More complete instructions are available at [installing hugo](/overview/installing/)
|
||||
|
||||
## Step 2. Build the Docs
|
||||
|
||||
Hugo has its own example site which happens to also be the documentation site
|
||||
you are reading right now.
|
||||
|
||||
Follow the following steps:
|
||||
|
||||
1. Clone the [hugo repository](//github.com/spf13/hugo)
|
||||
2. Go into the repo
|
||||
3. Run hugo in server mode and build the docs
|
||||
4. Open your browser to http://localhost:1313
|
||||
|
||||
Corresponding pseudo commands:
|
||||
|
||||
git clone https://github.com/spf13/hugo
|
||||
cd hugo
|
||||
/path/to/where/you/installed/hugo server --source=./docs
|
||||
> 29 pages created
|
||||
> 0 tags index created
|
||||
> in 27 ms
|
||||
> Web Server is available at http://localhost:1313
|
||||
> Press ctrl+c to stop
|
||||
|
||||
Once you've gotten here, follow along the rest of this page on your local build.
|
||||
|
||||
## Step 3. Change the docs site
|
||||
|
||||
Stop the Hugo process by hitting ctrl+c.
|
||||
|
||||
Now we are going to run hugo again, but this time with hugo in watch mode.
|
||||
|
||||
/path/to/hugo/from/step/1/hugo server --source=./docs --watch
|
||||
> 29 pages created
|
||||
> 0 tags index created
|
||||
> in 27 ms
|
||||
> Web Server is available at http://localhost:1313
|
||||
> Watching for changes in /Users/spf13/Code/hugo/docs/content
|
||||
> Press ctrl+c to stop
|
||||
|
||||
|
||||
Open your [favorite editor](//vim.spf13.com) and change one of the source
|
||||
content pages. How about changing this very file to *fix the typo*. How about changing this very file to *fix the typo*.
|
||||
|
||||
Content files are found in `docs/content/`. Unless otherwise specified, files
|
||||
are located at the same relative location as the url, in our case
|
||||
`docs/content/overview/quickstart.md`.
|
||||
|
||||
Change and save this file.. Notice what happened in your terminal.
|
||||
|
||||
> Change detected, rebuilding site
|
||||
|
||||
> 29 pages created
|
||||
> 0 tags index created
|
||||
> in 26 ms
|
||||
|
||||
Refresh the browser and observe that the typo is now fixed.
|
||||
|
||||
Notice how quick that was. Try to refresh the site before it's finished building.. I double dare you.
|
||||
Having nearly instant feedback enables you to have your creativity flow without waiting for long builds.
|
||||
|
||||
## Step 4. Have fun
|
||||
|
||||
The best way to learn something is to play with it.
|
@ -0,0 +1,50 @@
|
||||
+++
|
||||
title = "Image Style Guide"
|
||||
date = 2017-11-14T08:08:17-05:00
|
||||
tags = []
|
||||
categories = []
|
||||
+++
|
||||
|
||||
Veniam est eu adipisicing reprehenderit do sit sint elit sint. Tempor laborum ut dolore aliqua. Commodo eu qui sint magna veniam laborum. Ad cupidatat do proident ex veniam amet Lorem. Officia laboris aute fugiat id consequat culpa ullamco labore ea amet ad. Occaecat quis dolor commodo pariatur cillum et id id cupidatat officia.
|
||||
|
||||
Magna incididunt proident cupidatat cupidatat enim consectetur sunt. Ipsum velit aliqua ex ipsum qui labore magna. Ea nisi anim ad culpa Lorem occaecat ex cupidatat duis labore officia dolor.
|
||||
|
||||
{{< figure src="//via.placeholder.com/600x200" class="full" caption="Magna sunt ut ea quis aliqua cupidatat ut quis sit aliqua tempor duis." >}}
|
||||
|
||||
Aliqua minim esse velit est non. Ea do irure labore aliquip culpa ex ut sunt anim duis irure. Ex adipisicing deserunt do occaecat. Incididunt esse ea tempor fugiat magna.
|
||||
|
||||
Voluptate elit exercitation aliqua ut elit reprehenderit aliquip anim elit laborum laborum. Elit aute sint nisi labore irure in labore culpa. Fugiat velit fugiat ea reprehenderit. Sint minim amet occaecat eu labore reprehenderit pariatur nulla.
|
||||
|
||||
{{< figure src="//via.placeholder.com/600x300" class="mid" caption="Eu cupidatat ex qui do." >}}
|
||||
|
||||
In deserunt exercitation Lorem est nulla ullamco enim duis consequat tempor minim. Nostrud cillum ex dolore amet qui mollit do in aliquip consequat eiusmod est dolor officia. Exercitation quis cillum voluptate dolore cillum veniam minim voluptate ullamco voluptate reprehenderit deserunt elit. Et cillum sunt labore ad duis officia aute Lorem incididunt commodo ea.
|
||||
|
||||
Deserunt Lorem aliquip dolor et ut adipisicing nisi esse est dolore irure laborum. Excepteur dolor pariatur excepteur deserunt eiusmod laborum. Ad officia ea magna id ex. Laborum enim proident incididunt quis.
|
||||
|
||||

|
||||
|
||||
Elit culpa ad ex aute ullamco dolor anim do labore. Non ex do eiusmod elit occaecat. Adipisicing mollit commodo fugiat qui Lorem cupidatat laboris consectetur. Anim nostrud ullamco excepteur Lorem aliqua ullamco nisi.
|
||||
|
||||
Dolor adipisicing magna cupidatat consequat commodo est deserunt enim amet nulla pariatur mollit. Cupidatat officia veniam adipisicing laboris et ullamco consequat est nisi cupidatat. Quis id cillum excepteur consectetur aute excepteur ipsum magna. In ex pariatur nostrud ipsum aliqua nisi irure Lorem consectetur incididunt incididunt cillum. Fugiat ea Lorem velit voluptate cillum. Sunt incididunt proident nulla ad minim ullamco nostrud non commodo dolor enim cillum ullamco esse.
|
||||
|
||||

|
||||
|
||||
Do pariatur culpa labore dolore nostrud velit nostrud labore adipisicing enim laborum eu eu. Laborum nulla occaecat amet commodo ut velit. Incididunt et officia ex voluptate qui velit amet. Commodo consequat pariatur labore irure id commodo fugiat exercitation incididunt fugiat aliqua ipsum. Enim exercitation quis cillum irure duis nisi ullamco pariatur exercitation cillum amet nostrud aliquip. Adipisicing pariatur incididunt tempor sit pariatur aliquip aliqua pariatur. Eu occaecat fugiat aliqua consectetur velit incididunt nostrud enim.
|
||||
|
||||
Consectetur non dolore duis anim nostrud pariatur. Nisi ad pariatur est fugiat non occaecat excepteur ea amet esse. Id ullamco nisi anim ut eu reprehenderit irure ullamco. Do voluptate dolor est nostrud sit.
|
||||
|
||||
{{< figure src="//via.placeholder.com/300x400" class="float-right" caption="Eu cupidatat ex qui do." >}}
|
||||
|
||||
Irure anim officia nostrud ad veniam reprehenderit incididunt id elit eu id sint ea laboris. Irure esse sit dolore enim nulla consequat esse id esse. Anim consequat reprehenderit incididunt sit. Incididunt incididunt eu ullamco excepteur sit qui id reprehenderit cillum eiusmod velit elit adipisicing. Pariatur et cupidatat quis sint ipsum est non. Anim sit labore ut minim id sint eu incididunt exercitation laborum laborum anim.
|
||||
|
||||
Sit id et irure consectetur veniam do eiusmod. Exercitation veniam labore proident laborum commodo esse culpa laboris ex laboris fugiat. Sunt ut amet tempor eiusmod exercitation laboris in qui tempor mollit culpa mollit. Eu sint consequat consectetur laboris amet dolore do labore ipsum dolor ipsum fugiat. Qui deserunt cillum nostrud dolore tempor reprehenderit reprehenderit reprehenderit.
|
||||
|
||||
{{< figure src="//via.placeholder.com/300x400" class="float" caption="Eu cupidatat ex qui do." >}}
|
||||
|
||||
Enim anim veniam ea officia. Duis fugiat fugiat exercitation voluptate labore est est aliqua dolor incididunt eiusmod veniam. Reprehenderit sunt aute veniam anim qui sunt irure officia duis non aute labore. Aliqua reprehenderit pariatur reprehenderit voluptate excepteur ut amet sit ut duis. Ea exercitation ex ad ut dolor minim.
|
||||
|
||||
Lorem nostrud aute cillum ut veniam deserunt. Est commodo et id ea. Proident incididunt consequat deserunt sit do est duis. Do sint ullamco sunt cillum duis.
|
||||
|
||||
Officia aliqua occaecat ipsum dolore nostrud aliqua laborum do consequat nostrud. Dolor amet non ad excepteur duis Lorem aliqua aute. Lorem reprehenderit do sit minim magna nostrud Lorem officia duis.
|
||||
|
||||
Ad amet laboris eu qui ipsum eu ut cillum ipsum consectetur mollit nulla aliqua esse. Adipisicing et ad anim ipsum aliqua duis eiusmod. Quis ad in ea eu amet cupidatat sint eiusmod ullamco. Ullamco aliquip Lorem aliqua labore ipsum. Consectetur magna nostrud mollit nulla nostrud duis ipsum. Officia ad nulla culpa exercitation exercitation exercitation duis ipsum laboris.
|
@ -0,0 +1,151 @@
|
||||
---
|
||||
date: 2014-03-10
|
||||
title: Migrate to Hugo from Jekyll
|
||||
images: []
|
||||
---
|
||||
|
||||
## Move static content to `static`
|
||||
Jekyll has a rule that any directory not starting with `_` will be copied as-is to the `_site` output. Hugo keeps all static content under `static`. You should therefore move it all there.
|
||||
With Jekyll, something that looked like
|
||||
|
||||
▾ <root>/
|
||||
▾ images/
|
||||
logo.png
|
||||
|
||||
should become
|
||||
|
||||
▾ <root>/
|
||||
▾ static/
|
||||
▾ images/
|
||||
logo.png
|
||||
|
||||
Additionally, you'll want any files that should reside at the root (such as `CNAME`) to be moved to `static`.
|
||||
|
||||
## Create your Hugo configuration file
|
||||
Hugo can read your configuration as JSON, YAML or TOML. Hugo supports parameters custom configuration too. Refer to the [Hugo configuration documentation](/overview/configuration/) for details.
|
||||
|
||||
## Set your configuration publish folder to `_site`
|
||||
The default is for Jekyll to publish to `_site` and for Hugo to publish to `public`. If, like me, you have [`_site` mapped to a git submodule on the `gh-pages` branch](//blog.blindgaenger.net/generate_github_pages_in_a_submodule.html), you'll want to do one of two alternatives:
|
||||
|
||||
1. Change your submodule to point to map `gh-pages` to public instead of `_site` (recommended).
|
||||
|
||||
git submodule deinit _site
|
||||
git rm _site
|
||||
git submodule add -b gh-pages git@github.com:your-username/your-repo.git public
|
||||
|
||||
2. Or, change the Hugo configuration to use `_site` instead of `public`.
|
||||
|
||||
{
|
||||
..
|
||||
"publishdir": "_site",
|
||||
..
|
||||
}
|
||||
|
||||
## Convert Jekyll templates to Hugo templates
|
||||
That's the bulk of the work right here. The documentation is your friend. You should refer to [Jekyll's template documentation](//jekyllrb.com/docs/templates/) if you need to refresh your memory on how you built your blog and [Hugo's template](/layout/templates/) to learn Hugo's way.
|
||||
|
||||
As a single reference data point, converting my templates for [heyitsalex.net](//heyitsalex.net/) took me no more than a few hours.
|
||||
|
||||
## Convert Jekyll plugins to Hugo shortcodes
|
||||
Jekyll has [plugins](//jekyllrb.com/docs/plugins/); Hugo has [shortcodes](/doc/shortcodes/). It's fairly trivial to do a port.
|
||||
|
||||
### Implementation
|
||||
As an example, I was using a custom [`image_tag`](//github.com/alexandre-normand/alexandre-normand/blob/74bb12036a71334fdb7dba84e073382fc06908ec/_plugins/image_tag.rb) plugin to generate figures with caption when running Jekyll. As I read about shortcodes, I found Hugo had a nice built-in shortcode that does exactly the same thing.
|
||||
|
||||
Jekyll's plugin:
|
||||
|
||||
module Jekyll
|
||||
class ImageTag < Liquid::Tag
|
||||
@url = nil
|
||||
@caption = nil
|
||||
@class = nil
|
||||
@link = nil
|
||||
// Patterns
|
||||
IMAGE_URL_WITH_CLASS_AND_CAPTION =
|
||||
IMAGE_URL_WITH_CLASS_AND_CAPTION_AND_LINK = /(\w+)(\s+)((https?:\/\/|\/)(\S+))(\s+)"(.*?)"(\s+)->((https?:\/\/|\/)(\S+))(\s*)/i
|
||||
IMAGE_URL_WITH_CAPTION = /((https?:\/\/|\/)(\S+))(\s+)"(.*?)"/i
|
||||
IMAGE_URL_WITH_CLASS = /(\w+)(\s+)((https?:\/\/|\/)(\S+))/i
|
||||
IMAGE_URL = /((https?:\/\/|\/)(\S+))/i
|
||||
def initialize(tag_name, markup, tokens)
|
||||
super
|
||||
if markup =~ IMAGE_URL_WITH_CLASS_AND_CAPTION_AND_LINK
|
||||
@class = $1
|
||||
@url = $3
|
||||
@caption = $7
|
||||
@link = $9
|
||||
elsif markup =~ IMAGE_URL_WITH_CLASS_AND_CAPTION
|
||||
@class = $1
|
||||
@url = $3
|
||||
@caption = $7
|
||||
elsif markup =~ IMAGE_URL_WITH_CAPTION
|
||||
@url = $1
|
||||
@caption = $5
|
||||
elsif markup =~ IMAGE_URL_WITH_CLASS
|
||||
@class = $1
|
||||
@url = $3
|
||||
elsif markup =~ IMAGE_URL
|
||||
@url = $1
|
||||
end
|
||||
end
|
||||
def render(context)
|
||||
if @class
|
||||
source = "<figure class='#{@class}'>"
|
||||
else
|
||||
source = "<figure>"
|
||||
end
|
||||
if @link
|
||||
source += "<a href=\"#{@link}\">"
|
||||
end
|
||||
source += "<img src=\"#{@url}\">"
|
||||
if @link
|
||||
source += "</a>"
|
||||
end
|
||||
source += "<figcaption>#{@caption}</figcaption>" if @caption
|
||||
source += "</figure>"
|
||||
source
|
||||
end
|
||||
end
|
||||
end
|
||||
Liquid::Template.register_tag('image', Jekyll::ImageTag)
|
||||
|
||||
is written as this Hugo shortcode:
|
||||
|
||||
<!-- image -->
|
||||
<figure {{ with .Get "class" }}class="{{.}}"{{ end }}>
|
||||
{{ with .Get "link"}}<a href="{{.}}">{{ end }}
|
||||
<img src="{{ .Get "src" }}" {{ if or (.Get "alt") (.Get "caption") }}alt="{{ with .Get "alt"}}{{.}}{{else}}{{ .Get "caption" }}{{ end }}"{{ end }} />
|
||||
{{ if .Get "link"}}</a>{{ end }}
|
||||
{{ if or (or (.Get "title") (.Get "caption")) (.Get "attr")}}
|
||||
<figcaption>{{ if isset .Params "title" }}
|
||||
{{ .Get "title" }}{{ end }}
|
||||
{{ if or (.Get "caption") (.Get "attr")}}<p>
|
||||
{{ .Get "caption" }}
|
||||
{{ with .Get "attrlink"}}<a href="{{.}}"> {{ end }}
|
||||
{{ .Get "attr" }}
|
||||
{{ if .Get "attrlink"}}</a> {{ end }}
|
||||
</p> {{ end }}
|
||||
</figcaption>
|
||||
{{ end }}
|
||||
</figure>
|
||||
<!-- image -->
|
||||
|
||||
### Usage
|
||||
I simply changed:
|
||||
|
||||
{% image full http://farm5.staticflickr.com/4136/4829260124_57712e570a_o_d.jpg "One of my favorite touristy-type photos. I secretly waited for the good light while we were "having fun" and took this. Only regret: a stupid pole in the top-left corner of the frame I had to clumsily get rid of at post-processing." ->http://www.flickr.com/photos/alexnormand/4829260124/in/set-72157624547713078/ %}
|
||||
|
||||
to this (this example uses a slightly extended version named `fig`, different than the built-in `figure`):
|
||||
|
||||
{{%/* fig class="full" src="http://farm5.staticflickr.com/4136/4829260124_57712e570a_o_d.jpg" title="One of my favorite touristy-type photos. I secretly waited for the good light while we were having fun and took this. Only regret: a stupid pole in the top-left corner of the frame I had to clumsily get rid of at post-processing." link="http://www.flickr.com/photos/alexnormand/4829260124/in/set-72157624547713078/" */%}}
|
||||
|
||||
As a bonus, the shortcode named parameters are, arguably, more readable.
|
||||
|
||||
## Finishing touches
|
||||
### Fix content
|
||||
Depending on the amount of customization that was done with each post with Jekyll, this step will require more or less effort. There are no hard and fast rules here except that `hugo server --watch` is your friend. Test your changes and fix errors as needed.
|
||||
|
||||
### Clean up
|
||||
You'll want to remove the Jekyll configuration at this point. If you have anything else that isn't used, delete it.
|
||||
|
||||
## A practical example in a diff
|
||||
[Hey, it's Alex](//heyitsalex.net/) was migrated in less than a _father-with-kids day_ from Jekyll to Hugo. You can see all the changes (and screw-ups) by looking at this [diff](//github.com/alexandre-normand/alexandre-normand/compare/869d69435bd2665c3fbf5b5c78d4c22759d7613a...b7f6605b1265e83b4b81495423294208cc74d610).
|
@ -0,0 +1,200 @@
|
||||
+++
|
||||
title = "Style Guide"
|
||||
date = 2017-11-14T10:57:55-05:00
|
||||
tags = []
|
||||
categories = []
|
||||
+++
|
||||
|
||||
# Headings
|
||||
|
||||
# Heading 1
|
||||
|
||||
## Heading 2
|
||||
|
||||
### Heading 3
|
||||
|
||||
#### Heading 4
|
||||
|
||||
##### Heading 5
|
||||
|
||||
###### Heading 6
|
||||
|
||||
* * *
|
||||
|
||||
# Headings with Text
|
||||
|
||||
# Heading 1
|
||||
|
||||
Lorem ipsum dolor sit amet, adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.
|
||||
|
||||
## Heading 2
|
||||
|
||||
Lorem ipsum dolor sit amet, adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.
|
||||
|
||||
### Heading 3
|
||||
|
||||
Lorem ipsum dolor sit amet, adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.
|
||||
|
||||
#### Heading 4
|
||||
|
||||
Lorem ipsum dolor sit amet, adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.
|
||||
|
||||
##### Heading 5
|
||||
|
||||
Lorem ipsum dolor sit amet, adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.
|
||||
|
||||
###### Heading 6
|
||||
|
||||
Lorem ipsum dolor sit amet, adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.
|
||||
|
||||
* * *
|
||||
|
||||
# Block Elements
|
||||
|
||||
## Paragraphs and Images
|
||||
|
||||
Moinsen! Der kess 🦄 Lichtspieltheater. Kittchen und Schwedenfilm krakelen blümerant Narr. Das flügge Personenvereinzelungsanlage dengeln. Kleintierzuchtverein und Naschkatze meucheln adrett Himmelfahrtskommando. Der gebeutelt Personenvereinzelungsanlage. Der butterweich Scharlatan. Der gemach Kokolores. Haderlump und Waldschrat abkupfern hanebüchen Lump. Der hochgestochen Stümper. Das Trinkhalle abkupfern der bierernst Eisbein. Die Lametta stibitzen der töricht Prahlhans. Die altbacken Himmelfahrtskommando. Kerbholz und Schürzenjäger erquicken garstig Schlachtschüssel. Jungfer und Herrengedeck auftakeln pompös Schnitzel. Ach du liebes Lottchen!
|
||||
|
||||
Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. Maecenas ornare tortor.
|
||||
|
||||

|
||||
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem.
|
||||
|
||||
## Blockquote
|
||||
|
||||
This is a standard paragraph. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
|
||||
|
||||
> "**This is a blockquote**. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl."
|
||||
|
||||
This is a standard paragraph. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
|
||||
|
||||
*Note: the [Figure-Figcaption](//html5doctor.com/the-figure-figcaption-elements/) and [Details-Summary](//html5doctor.com/the-details-and-summary-elements/) elements are not currently supported in markdown.*
|
||||
|
||||
* * *
|
||||
|
||||
# Text Elements
|
||||
|
||||
The [a element](#) and [external a element](//example.com) examples
|
||||
|
||||
The <abbr>abbr element</abbr> and an <abbr title="Abbreviation">abbr</abbr> element with title examples
|
||||
|
||||
The <acronym title="A Cowboy Ran One New York Marathon">ACRONYM</acronym> element example
|
||||
|
||||
The **b element** example
|
||||
|
||||
The <cite>cite element</cite> example
|
||||
|
||||
The `code element` example
|
||||
|
||||
The <data value="3967381398">data element</data> example
|
||||
|
||||
The ~~del element~~ example
|
||||
|
||||
The <dfn>dfn element</dfn> and <dfn title="Title text">dfn element with title</dfn> examples
|
||||
|
||||
The _em element_ example
|
||||
|
||||
The _i element_ example
|
||||
|
||||
The <ins>ins element</ins> example
|
||||
|
||||
The <kbd>kbd element</kbd> example
|
||||
|
||||
The <mark>mark element</mark> example
|
||||
|
||||
The <q>q element</q> example
|
||||
|
||||
The <q>q element <q>inside</q> a q element</q> example
|
||||
|
||||
The <s>s element</s> example
|
||||
|
||||
The <samp>samp element</samp> example
|
||||
|
||||
The <small>small element</small> example
|
||||
|
||||
The <span>span element</span> example
|
||||
|
||||
The **strong element** example
|
||||
|
||||
The <sub>sub element</sub> example
|
||||
|
||||
The <sup>sup element</sup> example
|
||||
|
||||
The <time datetime="2005-05-15 19:00">time element</time> example
|
||||
|
||||
|
||||
The <u>u element</u> example
|
||||
|
||||
The <var>var element</var> example
|
||||
|
||||
* * *
|
||||
|
||||
# Monospace / Preformatted
|
||||
|
||||
Code block wrapped in "pre" and "code" tags:
|
||||
|
||||
```javascript
|
||||
// Loop through Divs using Javascript.
|
||||
var divs = document.querySelectorAll('div'), i;
|
||||
|
||||
for (i = 0; i < divs.length; ++i) {
|
||||
divs[i].style.color = "green";
|
||||
}
|
||||
```
|
||||
|
||||
Monospace Text wrapped in "pre" tags:
|
||||
|
||||
<pre>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.</pre>
|
||||
|
||||
* * *
|
||||
|
||||
# List Types
|
||||
|
||||
## Ordered List
|
||||
|
||||
1. List Item 1
|
||||
2. List Item 2
|
||||
3. List Item 3
|
||||
1. List Item 3.1
|
||||
2. List Item 3.2
|
||||
1. List Item 3.2.1
|
||||
2. List Item 3.2 2
|
||||
3. List Item 3.3
|
||||
4. List Item 4
|
||||
|
||||
## Unordered List
|
||||
|
||||
* List Item 1
|
||||
* List Item 2
|
||||
* List Item 3
|
||||
* List Item 3.1
|
||||
* List Item 3.2
|
||||
* List Item 3.2.1
|
||||
* List Item 3.2 2
|
||||
* List Item 3.3
|
||||
* List Item 4
|
||||
|
||||
## Definition List
|
||||
|
||||
Definition Term 1
|
||||
: Definition Description 1
|
||||
|
||||
Definition Term 2
|
||||
: Definition Description 2
|
||||
|
||||
* * *
|
||||
|
||||
# Tables
|
||||
|
||||
| Table Header 1 | Table Header 2 | Table Header 3 |
|
||||
| -------------- | -------------- | -------------- |
|
||||
| Division 1 | Division 2 | Division 3 |
|
||||
| Division 1 | Division 2 | Division 3 |
|
||||
| Division 1 | Division 2 | Division 3 |
|
||||
|
||||
* * *
|
||||
|
||||
# Media and Form Elements
|
||||
|
||||
The remaining sections contain elements that cannot be represented in markdown. Please consult [the HTML version](https://github.com/bryanbraun/poor-mans-styleguide/blob/gh-pages/index.html), to see these elements.
|
@ -0,0 +1,14 @@
|
||||
---
|
||||
title: "John Calvin: Institutes 2 11"
|
||||
passage: "John 3:16"
|
||||
date: 2018-05-03T20:12:30+10:00
|
||||
audio: ["//ia801403.us.archive.org/29/items/institutes_christian_religion2_1003_librivox/institutesofchristianreligion2_11_calvin_64kb.mp3"]
|
||||
audio_duration: 22:23
|
||||
audio_size: 10748346
|
||||
images: []
|
||||
preachers: ["John Calvin"]
|
||||
series: ["Test"]
|
||||
tags: ["theology","redemption", "historical"]
|
||||
draft: false
|
||||
---
|
||||
Public Domain recording from [librivox](https://librivox.org/institutes-of-the-christian-religion-book-two-by-john-calvin/)
|
@ -0,0 +1,14 @@
|
||||
---
|
||||
title: "Word of God I"
|
||||
passage: "Table Talk"
|
||||
date: 2018-05-11T09:06:46+10:00
|
||||
audio: ["//www.archive.org/download/table_talk_martin_luther_1801_librivox/tabletalk_05_luther_128kb.mp3"]
|
||||
audio_duration: 14:39
|
||||
audio_size: 14076118
|
||||
preachers: ["Martin Luther"]
|
||||
images: ["/img/freely-20445.jpg"]
|
||||
series: ["Test"]
|
||||
tags: ["bible","scripture", "historical"]
|
||||
draft: false
|
||||
---
|
||||
Recording by Gillian Hedrie from [Librivox](https://librivox.org/selections-from-the-table-talk-of-martin-luther-by-martin-luther/)
|
@ -0,0 +1,2 @@
|
||||
/* breakpoints.js v1.0 | @ajlkn | MIT licensed */
|
||||
var breakpoints=function(){"use strict";function e(e){t.init(e)}var t={list:null,media:{},events:[],init:function(e){t.list=e,window.addEventListener("resize",t.poll),window.addEventListener("orientationchange",t.poll),window.addEventListener("load",t.poll),window.addEventListener("fullscreenchange",t.poll)},active:function(e){var n,a,s,i,r,d,c;if(!(e in t.media)){if(">="==e.substr(0,2)?(a="gte",n=e.substr(2)):"<="==e.substr(0,2)?(a="lte",n=e.substr(2)):">"==e.substr(0,1)?(a="gt",n=e.substr(1)):"<"==e.substr(0,1)?(a="lt",n=e.substr(1)):"!"==e.substr(0,1)?(a="not",n=e.substr(1)):(a="eq",n=e),n&&n in t.list)if(i=t.list[n],Array.isArray(i)){if(r=parseInt(i[0]),d=parseInt(i[1]),isNaN(r)){if(isNaN(d))return;c=i[1].substr(String(d).length)}else c=i[0].substr(String(r).length);if(isNaN(r))switch(a){case"gte":s="screen";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: -1px)";break;case"not":s="screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (max-width: "+d+c+")"}else if(isNaN(d))switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen";break;case"gt":s="screen and (max-width: -1px)";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+")";break;default:s="screen and (min-width: "+r+c+")"}else switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+"), screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (min-width: "+r+c+") and (max-width: "+d+c+")"}}else s="("==i.charAt(0)?"screen and "+i:i;t.media[e]=!!s&&s}return t.media[e]!==!1&&window.matchMedia(t.media[e]).matches},on:function(e,n){t.events.push({query:e,handler:n,state:!1}),t.active(e)&&n()},poll:function(){var e,n;for(e=0;e<t.events.length;e++)n=t.events[e],t.active(n.query)?n.state||(n.state=!0,n.handler()):n.state&&(n.state=!1)}};return e._=t,e.on=function(e,n){t.on(e,n)},e.active=function(e){return t.active(e)},e}();!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():e.breakpoints=t()}(this,function(){return breakpoints});
|
@ -0,0 +1 @@
|
||||
{"Target":"js/breakpoints.min.309febcd6d6e0cf092201532215f03a6a9f30b30f26203272a4861d704e7cd52.js","MediaType":"application/javascript","Data":{"Integrity":"sha256-MJ/rzW1uDPCSIBUyIV8DpqnzCzDyYgMnKkhh1wTnzVI="}}
|
@ -0,0 +1,2 @@
|
||||
/* browser.js v1.0 | @ajlkn | MIT licensed */
|
||||
var browser=function(){"use strict";var e={name:null,version:null,os:null,osVersion:null,touch:null,mobile:null,_canUse:null,canUse:function(n){e._canUse||(e._canUse=document.createElement("div"));var o=e._canUse.style,r=n.charAt(0).toUpperCase()+n.slice(1);return n in o||"Moz"+r in o||"Webkit"+r in o||"O"+r in o||"ms"+r in o},init:function(){var n,o,r,i,t=navigator.userAgent;for(n="other",o=0,r=[["firefox",/Firefox\/([0-9\.]+)/],["bb",/BlackBerry.+Version\/([0-9\.]+)/],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/],["opera",/OPR\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)/],["edge",/Edge\/([0-9\.]+)/],["safari",/Version\/([0-9\.]+).+Safari/],["chrome",/Chrome\/([0-9\.]+)/],["ie",/MSIE ([0-9]+)/],["ie",/Trident\/.+rv:([0-9]+)/]],i=0;i<r.length;i++)if(t.match(r[i][1])){n=r[i][0],o=parseFloat(RegExp.$1);break}for(e.name=n,e.version=o,n="other",o=0,r=[["ios",/([0-9_]+) like Mac OS X/,function(e){return e.replace("_",".").replace("_","")}],["ios",/CPU like Mac OS X/,function(e){return 0}],["wp",/Windows Phone ([0-9\.]+)/,null],["android",/Android ([0-9\.]+)/,null],["mac",/Macintosh.+Mac OS X ([0-9_]+)/,function(e){return e.replace("_",".").replace("_","")}],["windows",/Windows NT ([0-9\.]+)/,null],["bb",/BlackBerry.+Version\/([0-9\.]+)/,null],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/,null],["linux",/Linux/,null],["bsd",/BSD/,null],["unix",/X11/,null]],i=0;i<r.length;i++)if(t.match(r[i][1])){n=r[i][0],o=parseFloat(r[i][2]?r[i][2](RegExp.$1):RegExp.$1);break}e.os=n,e.osVersion=o,e.touch="wp"==e.os?navigator.msMaxTouchPoints>0:!!("ontouchstart"in window),e.mobile="wp"==e.os||"android"==e.os||"ios"==e.os||"bb"==e.os}};return e.init(),e}();!function(e,n){"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?module.exports=n():e.browser=n()}(this,function(){return browser});
|
@ -0,0 +1 @@
|
||||
{"Target":"js/browser.min.87910d5ed0053d90caf83230a2f1811d8679815da01f7bdec7548e776d7f04c4.js","MediaType":"application/javascript","Data":{"Integrity":"sha256-h5ENXtAFPZDK+DIwovGBHYZ5gV2gH3vex1SOd21/BMQ="}}
|
@ -0,0 +1,12 @@
|
||||
(function(l,f){function m(){var a=e.elements;return "string"==typeof a?a.split(" "):a;}
|
||||
function i(a){var b=n[a[o]];b||((b={}),h++,(a[o]=h),(n[h]=b));return b;}
|
||||
function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b;}
|
||||
function t(a,b){if(!b.cache)
|
||||
(b.cache={}),(b.createElem=a.createElement),(b.createFrag=a.createDocumentFragment),(b.frag=b.createFrag());a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b);};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+
|
||||
m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return 'c("'+a+'")';})+
|
||||
");return n}")(e,b.frag);}
|
||||
function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}</style>";c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c;}
|
||||
g||t(a,b);return a;}
|
||||
var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement;}
|
||||
g=b;}catch(d){g=j=!0;}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video",version:"3.6.2",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)
|
||||
c.createElement(e[d]);return c;}};l.html5=e;q(f);})(this,document);
|
@ -0,0 +1 @@
|
||||
{"Target":"js/ie/html5shiv.min.js","MediaType":"application/javascript","Data":{}}
|
@ -0,0 +1 @@
|
||||
{"Target":"js/jquery.dropotron.min.4b0a4c1a278f32f74c140865e40671b5225fcb317ccde6a7ac568b7c1c1acbe0.js","MediaType":"application/javascript","Data":{"Integrity":"sha256-SwpMGiePMvdMFAhl5AZxtSJfyzF8zeanrFaLfBway+A="}}
|
@ -0,0 +1 @@
|
||||
{"Target":"js/jquery.min.0925e8ad7bd971391a8b1e98be8e87a6971919eb5b60c196485941c3c1df089a.js","MediaType":"application/javascript","Data":{"Integrity":"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="}}
|
@ -0,0 +1,2 @@
|
||||
/* jquery.scrollex v0.2.1 | (c) @ajlkn | github.com/ajlkn/jquery.scrollex | MIT licensed */
|
||||
!function(t){function e(t,e,n){return"string"==typeof t&&("%"==t.slice(-1)?t=parseInt(t.substring(0,t.length-1))/100*e:"vh"==t.slice(-2)?t=parseInt(t.substring(0,t.length-2))/100*n:"px"==t.slice(-2)&&(t=parseInt(t.substring(0,t.length-2)))),t}var n=t(window),i=1,o={};n.on("scroll",function(){var e=n.scrollTop();t.map(o,function(t){window.clearTimeout(t.timeoutId),t.timeoutId=window.setTimeout(function(){t.handler(e)},t.options.delay)})}).on("load",function(){n.trigger("scroll")}),jQuery.fn.scrollex=function(l){var s=t(this);if(0==this.length)return s;if(this.length>1){for(var r=0;r<this.length;r++)t(this[r]).scrollex(l);return s}if(s.data("_scrollexId"))return s;var a,u,h,c,p;switch(a=i++,u=jQuery.extend({top:0,bottom:0,delay:0,mode:"default",enter:null,leave:null,initialize:null,terminate:null,scroll:null},l),u.mode){case"top":h=function(t,e,n,i,o){return t>=i&&o>=t};break;case"bottom":h=function(t,e,n,i,o){return n>=i&&o>=n};break;case"middle":h=function(t,e,n,i,o){return e>=i&&o>=e};break;case"top-only":h=function(t,e,n,i,o){return i>=t&&n>=i};break;case"bottom-only":h=function(t,e,n,i,o){return n>=o&&o>=t};break;default:case"default":h=function(t,e,n,i,o){return n>=i&&o>=t}}return c=function(t){var i,o,l,s,r,a,u=this.state,h=!1,c=this.$element.offset();i=n.height(),o=t+i/2,l=t+i,s=this.$element.outerHeight(),r=c.top+e(this.options.top,s,i),a=c.top+s-e(this.options.bottom,s,i),h=this.test(t,o,l,r,a),h!=u&&(this.state=h,h?this.options.enter&&this.options.enter.apply(this.element):this.options.leave&&this.options.leave.apply(this.element)),this.options.scroll&&this.options.scroll.apply(this.element,[(o-r)/(a-r)])},p={id:a,options:u,test:h,handler:c,state:null,element:this,$element:s,timeoutId:null},o[a]=p,s.data("_scrollexId",p.id),p.options.initialize&&p.options.initialize.apply(this),s},jQuery.fn.unscrollex=function(){var e=t(this);if(0==this.length)return e;if(this.length>1){for(var n=0;n<this.length;n++)t(this[n]).unscrollex();return e}var i,l;return(i=e.data("_scrollexId"))?(l=o[i],window.clearTimeout(l.timeoutId),delete o[i],e.removeData("_scrollexId"),l.options.terminate&&l.options.terminate.apply(this),e):e}}(jQuery);
|
@ -0,0 +1 @@
|
||||
{"Target":"js/jquery.scrollex.min.fc25b75fb3fc8b42756413be387e0d7a602813125283d2384551961d73ea784e.js","MediaType":"application/javascript","Data":{"Integrity":"sha256-/CW3X7P8i0J1ZBO+OH4NemAoExJSg9I4RVGWHXPqeE4="}}
|
@ -0,0 +1,7 @@
|
||||
(function($){var $window=$(window),$body=$('body'),$header=$('#header'),$banner=$('#banner');breakpoints({wide:('1281px','1680px'),normal:('981px','1280px'),narrow:('737px','980px'),narrower:('737px','840px'),mobile:('481px','736px'),mobilep:(null,'480px')});$window.on('load',function(){window.setTimeout(function(){$body.removeClass('is-preload');},100);});$('#nav > ul').dropotron({alignment:'right'});$('<div id="navButton">'+
|
||||
'<a href="#navPanel" class="toggle"></a>'+
|
||||
'</div>').appendTo($body);$('<div id="navPanel">'+
|
||||
'<nav>'+
|
||||
$('#nav').navList()+
|
||||
'</nav>'+
|
||||
'</div>').appendTo($body).panel({delay:500,hideOnClick:true,hideOnSwipe:true,resetScroll:true,resetForms:true,side:'left',target:$body,visibleClass:'navPanel-visible'});if(!browser.mobile&&$header.hasClass('alt')&&$banner.length>0){$window.on('load',function(){$banner.scrollex({bottom:$header.outerHeight(),terminate:function(){$header.removeClass('alt');},enter:function(){$header.addClass('alt reveal');},leave:function(){$header.removeClass('alt');}});});}})(jQuery);
|
@ -0,0 +1 @@
|
||||
{"Target":"js/main.min.91fd6e21c388e14b1d3accc4309ba0d965ee9eecde0e67c81e309fc54b69c8be.js","MediaType":"application/javascript","Data":{"Integrity":"sha256-kf1uIcOI4UsdOszEMJug2WXunuzeDmfIHjCfxUtpyL4="}}
|
@ -0,0 +1 @@
|
||||
$(document).ready(function(){if($("#player").length){const player=new Plyr('#player',{settings:['speed']});}});
|
@ -0,0 +1 @@
|
||||
{"Target":"js/plyr.init.min.02b821849a4e3b635e8cf24e1e4f65e2d053f18cf3efff35b890e621154e9ae0.js","MediaType":"application/javascript","Data":{"Integrity":"sha256-ArghhJpOO2NejPJOHk9l4tBT8Yzz7/81uJDmIRVOmuA="}}
|
@ -0,0 +1,49 @@
|
||||
(function($){$.fn.navList=function(){var $this=$(this);$a=$this.find('a'),b=[];$a.each(function(){var $this=$(this),indent=Math.max(0,$this.parents('li').length-1),href=$this.attr('href'),target=$this.attr('target');b.push('<a '+
|
||||
'class="link depth-'+indent+'"'+
|
||||
((typeof target!=='undefined'&&target!='')?' target="'+target+'"':'')+
|
||||
((typeof href!=='undefined'&&href!='')?' href="'+href+'"':'')+
|
||||
'>'+
|
||||
'<span class="indent-'+indent+'"></span>'+
|
||||
$this.text()+
|
||||
'</a>');});return b.join('');};$.fn.panel=function(userConfig){if(this.length==0)
|
||||
return $this;if(this.length>1){for(var i=0;i<this.length;i++)
|
||||
$(this[i]).panel(userConfig);return $this;}
|
||||
var $this=$(this),$body=$('body'),$window=$(window),id=$this.attr('id'),config;config=$.extend({delay:0,hideOnClick:false,hideOnEscape:false,hideOnSwipe:false,resetScroll:false,resetForms:false,side:null,target:$this,visibleClass:'visible'},userConfig);if(typeof config.target!='jQuery')
|
||||
config.target=$(config.target);$this._hide=function(event){if(!config.target.hasClass(config.visibleClass))
|
||||
return;if(event){event.preventDefault();event.stopPropagation();}
|
||||
config.target.removeClass(config.visibleClass);window.setTimeout(function(){if(config.resetScroll)
|
||||
$this.scrollTop(0);if(config.resetForms)
|
||||
$this.find('form').each(function(){this.reset();});},config.delay);};$this.css('-ms-overflow-style','-ms-autohiding-scrollbar').css('-webkit-overflow-scrolling','touch');if(config.hideOnClick){$this.find('a').css('-webkit-tap-highlight-color','rgba(0,0,0,0)');$this.on('click','a',function(event){var $a=$(this),href=$a.attr('href'),target=$a.attr('target');if(!href||href=='#'||href==''||href=='#'+id)
|
||||
return;event.preventDefault();event.stopPropagation();$this._hide();window.setTimeout(function(){if(target=='_blank')
|
||||
window.open(href);else
|
||||
window.location.href=href;},config.delay+10);});}
|
||||
$this.on('touchstart',function(event){$this.touchPosX=event.originalEvent.touches[0].pageX;$this.touchPosY=event.originalEvent.touches[0].pageY;})
|
||||
$this.on('touchmove',function(event){if($this.touchPosX===null||$this.touchPosY===null)
|
||||
return;var diffX=$this.touchPosX-event.originalEvent.touches[0].pageX,diffY=$this.touchPosY-event.originalEvent.touches[0].pageY,th=$this.outerHeight(),ts=($this.get(0).scrollHeight-$this.scrollTop());if(config.hideOnSwipe){var result=false,boundary=20,delta=50;switch(config.side){case 'left':result=(diffY<boundary&&diffY>(-1*boundary))&&(diffX>delta);break;case 'right':result=(diffY<boundary&&diffY>(-1*boundary))&&(diffX<(-1*delta));break;case 'top':result=(diffX<boundary&&diffX>(-1*boundary))&&(diffY>delta);break;case 'bottom':result=(diffX<boundary&&diffX>(-1*boundary))&&(diffY<(-1*delta));break;default:break;}
|
||||
if(result){$this.touchPosX=null;$this.touchPosY=null;$this._hide();return false;}}
|
||||
if(($this.scrollTop()<0&&diffY<0)||(ts>(th-2)&&ts<(th+2)&&diffY>0)){event.preventDefault();event.stopPropagation();}});$this.on('click touchend touchstart touchmove',function(event){event.stopPropagation();});$this.on('click','a[href="#'+id+'"]',function(event){event.preventDefault();event.stopPropagation();config.target.removeClass(config.visibleClass);});$body.on('click touchend',function(event){$this._hide(event);});$body.on('click','a[href="#'+id+'"]',function(event){event.preventDefault();event.stopPropagation();config.target.toggleClass(config.visibleClass);});if(config.hideOnEscape)
|
||||
$window.on('keydown',function(event){if(event.keyCode==27)
|
||||
$this._hide(event);});return $this;};$.fn.placeholder=function(){if(typeof(document.createElement('input')).placeholder!='undefined')
|
||||
return $(this);if(this.length==0)
|
||||
return $this;if(this.length>1){for(var i=0;i<this.length;i++)
|
||||
$(this[i]).placeholder();return $this;}
|
||||
var $this=$(this);$this.find('input[type=text],textarea').each(function(){var i=$(this);if(i.val()==''||i.val()==i.attr('placeholder'))
|
||||
i.addClass('polyfill-placeholder').val(i.attr('placeholder'));}).on('blur',function(){var i=$(this);if(i.attr('name').match(/-polyfill-field$/))
|
||||
return;if(i.val()=='')
|
||||
i.addClass('polyfill-placeholder').val(i.attr('placeholder'));}).on('focus',function(){var i=$(this);if(i.attr('name').match(/-polyfill-field$/))
|
||||
return;if(i.val()==i.attr('placeholder'))
|
||||
i.removeClass('polyfill-placeholder').val('');});$this.find('input[type=password]').each(function(){var i=$(this);var x=$($('<div>').append(i.clone()).remove().html().replace(/type="password"/i,'type="text"').replace(/type=password/i,'type=text'));if(i.attr('id')!='')
|
||||
x.attr('id',i.attr('id')+'-polyfill-field');if(i.attr('name')!='')
|
||||
x.attr('name',i.attr('name')+'-polyfill-field');x.addClass('polyfill-placeholder').val(x.attr('placeholder')).insertAfter(i);if(i.val()=='')
|
||||
i.hide();else
|
||||
x.hide();i.on('blur',function(event){event.preventDefault();var x=i.parent().find('input[name='+i.attr('name')+'-polyfill-field]');if(i.val()==''){i.hide();x.show();}});x.on('focus',function(event){event.preventDefault();var i=x.parent().find('input[name='+x.attr('name').replace('-polyfill-field','')+']');x.hide();i.show().focus();}).on('keypress',function(event){event.preventDefault();x.val('');});});$this.on('submit',function(){$this.find('input[type=text],input[type=password],textarea').each(function(event){var i=$(this);if(i.attr('name').match(/-polyfill-field$/))
|
||||
i.attr('name','');if(i.val()==i.attr('placeholder')){i.removeClass('polyfill-placeholder');i.val('');}});}).on('reset',function(event){event.preventDefault();$this.find('select').val($('option:first').val());$this.find('input,textarea').each(function(){var i=$(this),x;i.removeClass('polyfill-placeholder');switch(this.type){case 'submit':case 'reset':break;case 'password':i.val(i.attr('defaultValue'));x=i.parent().find('input[name='+i.attr('name')+'-polyfill-field]');if(i.val()==''){i.hide();x.show();}
|
||||
else{i.show();x.hide();}
|
||||
break;case 'checkbox':case 'radio':i.attr('checked',i.attr('defaultValue'));break;case 'text':case 'textarea':i.val(i.attr('defaultValue'));if(i.val()==''){i.addClass('polyfill-placeholder');i.val(i.attr('placeholder'));}
|
||||
break;default:i.val(i.attr('defaultValue'));break;}});});return $this;};$.prioritize=function($elements,condition){var key='__prioritize';if(typeof $elements!='jQuery')
|
||||
$elements=$($elements);$elements.each(function(){var $e=$(this),$p,$parent=$e.parent();if($parent.length==0)
|
||||
return;if(!$e.data(key)){if(!condition)
|
||||
return;$p=$e.prev();if($p.length==0)
|
||||
return;$e.prependTo($parent);$e.data(key,$p);}
|
||||
else{if(condition)
|
||||
return;$p=$e.data(key);$e.insertAfter($p);$e.removeData(key);}});};})(jQuery);
|
@ -0,0 +1 @@
|
||||
{"Target":"js/util.min.f841fbc8f1c113a212eaafc553ece315c624ee0f2b6373518f89a224dfac3cf1.js","MediaType":"application/javascript","Data":{"Integrity":"sha256-+EH7yPHBE6IS6q/FU+zjFcYk7g8rY3NRj4miJN+sPPE="}}
|
@ -0,0 +1 @@
|
||||
pre,code{position:relative;-ms-behavior:url(assets/js/ie/PIE.htc)}input[type=text],input[type=password],input[type=email],select,textarea{position:relative;-ms-behavior:url(assets/js/ie/PIE.htc);line-height:3em}input[type=checkbox],input[type=radio]{opacity:1;z-index:auto}input[type=checkbox]+label:before,input[type=radio]+label:before{display:none}input[type=submit],input[type=reset],input[type=button],.button{position:relative;-ms-behavior:url(assets/js/ie/PIE.htc)}input.alt[type=submit],input.alt[type=reset],input.alt[type=button],.button.alt{border:solid 2px #e5e5e5}.box{position:relative;-ms-behavior:url(assets/js/ie/PIE.htc)}.box .image.featured{margin:2em 0;width:100%}.icon.major{position:relative;-ms-behavior:url(assets/js/ie/PIE.htc)}.image{position:relative;-ms-behavior:url(assets/js/ie/PIE.htc)}.image img{position:relative;-ms-behavior:url(assets/js/ie/PIE.htc)}#header nav>ul>li a{color:#fff;display:inline-block;text-decoration:none;border:0}#header nav>ul>li a.icon:before{color:#fff;margin-right:.5em}#header.alt{color:#fff}#header.alt nav>ul>li a.icon:not(.button):before{color:rgba(255,255,255,.75)}#header.alt nav>ul>li.active a:not(.button){background-color:rgba(255,255,255,.2)}.dropotron{border:solid 1px #e5e5e5}.dropotron.level-0{margin-top:0}.dropotron.level-0:before{display:none}#banner{background-attachment:scroll;background-image:url(../../images/banner.jpg);background-position:auto;background-repeat:no-repeat;background-size:cover;-ms-behavior:url(assets/js/ie/backgroundsize.min.htc)}#banner input[type=submit],#banner input[type=reset],#banner input[type=button],#banner .button{border:solid 2px #fff}#main{position:relative;z-index:1}#cta input[type=text],#cta input[type=password],#cta input[type=email],#cta select,#cta textarea{background:#e89980;border:solid 2px #fff}#cta .formerize-placeholder{color:#fff!important}
|
@ -0,0 +1 @@
|
||||
{"Target":"scss/ie8.min.css","MediaType":"text/css","Data":{}}
|
@ -0,0 +1 @@
|
||||
{"Target":"scss/main.min.b50f2c33b3a3270e1ed37e2ec49b90866b5cab722d1eb8dfec3487119697ba5f.css","MediaType":"text/css","Data":{"Integrity":"sha256-tQ8sM7OjJw4e034uxJuQhmtcq3ItHrjf7DSHEZaXul8="}}
|
@ -0,0 +1 @@
|
||||
{"Target":"style.main.min.4b11fc14e0b16ddfbd426ba5762c0c8736a2a6799c09bfc2ab8ed265d26306f4.css","MediaType":"text/css","Data":{"Integrity":"sha256-SxH8FOCxbd+9QmuldiwMhzaipnmcCb/Cq47SZdJjBvQ="}}
|
@ -0,0 +1 @@
|
||||
{"Target":"scss/main.min.css","MediaType":"text/css","Data":{}}
|
@ -0,0 +1 @@
|
||||
{"Target":"style.main.min.css","MediaType":"text/css","Data":{}}
|
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
# Edit the following 5 variables to fit your needs!
|
||||
|
||||
# Recipient of the Mail:
|
||||
$to = "admin@example.org";
|
||||
# The "from" address of the Mail. This should match the domain of the server:
|
||||
$from = "website@example.org";
|
||||
# Forward Users to this Page if the mail is successfully sent:
|
||||
$confirm_page = "/contact_thanks";
|
||||
# If something goes wrong and sending the mail fails, forward users to:
|
||||
$error_page = "/404.html";
|
||||
# Specify the Subject of the Mail:
|
||||
$subject = "Feedback from example.org";
|
||||
|
||||
|
||||
if (isset($_POST['send'])) {
|
||||
$message = "Name: " . $_POST['name'] . "\r\n\r\n";
|
||||
$message .= "Email: " . $_POST['email'] . "\r\n\r\n";
|
||||
$message .= "Message: " . $_POST['message'] . "\r\n\r\n";
|
||||
|
||||
$headers = "From: " . $from . "\r\n";
|
||||
$headers .= "Content-Type: text/plain; charset: utf-8";
|
||||
$email_ok = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
|
||||
if ($email_ok) {
|
||||
$headers .= "\r\nReply-To: $email";
|
||||
}
|
||||
|
||||
$success = mail($to, $subject, $message, $headers);
|
||||
|
||||
if (isset($success) && $success){
|
||||
header("Location: ".$confirm_page);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
header("Location: ".$error_page);
|
||||
exit;
|
||||
?>
|
@ -0,0 +1,3 @@
|
||||
.icon.major.accent2 {
|
||||
background: #0000FF;
|
||||
}
|
After Width: | Height: | Size: 279 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 197 KiB |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 1018 KiB |
@ -0,0 +1,3 @@
|
||||
module github.com/funkydan2/alpha-church
|
||||
|
||||
go 1.15
|
After Width: | Height: | Size: 1.5 MiB |
After Width: | Height: | Size: 612 KiB |
@ -0,0 +1,12 @@
|
||||
{{ define "main" }}
|
||||
|
||||
{{ "<!-- Main -->" | safeHTML }}
|
||||
<section id="main" class="container">
|
||||
<header>
|
||||
<h2>404 Not Found</h2>
|
||||
</header>
|
||||
<div class="box">
|
||||
Oops, something went wrong. Time to go <a href="/">home</a>.
|
||||
</div>
|
||||
</section>
|
||||
{{ end }}
|
@ -0,0 +1,12 @@
|
||||
{{ partial "header" . .Section "list" }}
|
||||
{{ partialCached "nav" . .Section }}
|
||||
|
||||
{{ block "main" . }}
|
||||
{{ end }}
|
||||
|
||||
{{ partialCached "footer" . }}
|
||||
{{ if .IsPage }}
|
||||
{{ partialCached "scripts" . .Section "single" }}
|
||||
{{ else }}
|
||||
{{ partialCached "scripts" . .Section "list" }}
|
||||
{{ end }}
|
@ -0,0 +1,9 @@
|
||||
{{ define "main" }}
|
||||
{{ "<!-- Main -->" | safeHTML }}
|
||||
<section id="main" class="container">
|
||||
<header>
|
||||
<h2>{{ .Title | title }}</h2>
|
||||
</header>
|
||||
{{ partial "listbody" . }}
|
||||
</section>
|
||||
{{ end }}
|
@ -0,0 +1,32 @@
|
||||
{{ define "main" }}
|
||||
|
||||
{{ "<!-- Main -->" | safeHTML }}
|
||||
<section id="main" class="container">
|
||||
<header>
|
||||
<h2>{{ if .Draft }}DRAFT: {{end}}{{ .Params.title }}</h2>
|
||||
{{ with .Params.subtitle }}<p>{{ . }}</p>{{ end }}
|
||||
</header>
|
||||
<div class="box">
|
||||
{{ with .Params.images }}
|
||||
<span class="image featured"><img src="{{ index . 0 | absURL }}" alt=""></span>
|
||||
{{ end }}
|
||||
{{ .Content }}
|
||||
{{ if or .Params.tags .Params.date }}
|
||||
<hr />
|
||||
<div id="meta">
|
||||
{{ with .Params.tags }}
|
||||
<p>Tags:
|
||||
{{ range $index, $key:= . }}
|
||||
{{ if $index }}, {{ end }}
|
||||
{{ if gt (len $key) 0 }}
|
||||
<a href="/tags/{{$key | urlize }}/">#{{ $key }}</a>
|
||||
{{ end }} {{/* if gt len */}}
|
||||
{{ end }} {{/* range */}}
|
||||
</p>
|
||||
{{ end }} {{/* if tags */}}
|
||||
{{ with .Params.date }}<p class="meta">Published: {{ . | dateFormat "January 2, 2006"}}</p>{{ end }}
|
||||
</div>
|
||||
{{ end }} {{/* if meta */}}
|
||||
</div>
|
||||
</section>
|
||||
{{ end }}
|
@ -0,0 +1,420 @@
|
||||
<!--
|
||||
Alpha by HTML5 UP
|
||||
html5up.net | @ajlkn
|
||||
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
|
||||
-->
|
||||
{{ partialCached "header" . }}
|
||||
{{ partial "nav" . }}
|
||||
|
||||
<!-- Main -->
|
||||
<section id="main" class="container">
|
||||
<header>
|
||||
<h2>Elements</h2>
|
||||
<p>Just an assorted selection of elements.</p>
|
||||
</header>
|
||||
<div class="row">
|
||||
<div class="12u">
|
||||
|
||||
<!-- Text -->
|
||||
<section class="box">
|
||||
<h3>Text</h3>
|
||||
<p>This is <b>bold</b> and this is <strong>strong</strong>. This is <i>italic</i> and this is <em>emphasized</em>.
|
||||
This is <sup>superscript</sup> text and this is <sub>subscript</sub> text.
|
||||
This is <u>underlined</u> and this is code: <code>for (;;) { ... }</code>. Finally, <a href="#">this is a link</a>.</p>
|
||||
|
||||
<hr />
|
||||
|
||||
<header>
|
||||
<h3>Heading with a Subtitle</h3>
|
||||
<p>Lorem ipsum dolor sit amet nullam id egestas urna aliquam</p>
|
||||
</header>
|
||||
<p>Nunc lacinia ante nunc ac lobortis. Interdum adipiscing gravida odio porttitor sem non mi integer non faucibus ornare mi ut ante amet placerat aliquet. Volutpat eu sed ante lacinia sapien lorem accumsan varius montes viverra nibh in adipiscing blandit tempus accumsan.</p>
|
||||
<header>
|
||||
<h4>Heading with a Subtitle</h4>
|
||||
<p>Lorem ipsum dolor sit amet nullam id egestas urna aliquam</p>
|
||||
</header>
|
||||
<p>Nunc lacinia ante nunc ac lobortis. Interdum adipiscing gravida odio porttitor sem non mi integer non faucibus ornare mi ut ante amet placerat aliquet. Volutpat eu sed ante lacinia sapien lorem accumsan varius montes viverra nibh in adipiscing blandit tempus accumsan.</p>
|
||||
|
||||
<hr />
|
||||
|
||||
<h2>Heading Level 2</h2>
|
||||
<h3>Heading Level 3</h3>
|
||||
<h4>Heading Level 4</h4>
|
||||
<h5>Heading Level 5</h5>
|
||||
<h6>Heading Level 6</h6>
|
||||
|
||||
<hr />
|
||||
|
||||
<h4>Blockquote</h4>
|
||||
<blockquote>Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan faucibus. Vestibulum ante ipsum primis in faucibus lorem ipsum dolor sit amet nullam adipiscing eu felis.</blockquote>
|
||||
|
||||
<h4>Preformatted</h4>
|
||||
<pre>i = 0;
|
||||
|
||||
while (!deck.isInOrder()) {
|
||||
print 'Iteration ' + i;
|
||||
deck.shuffle();
|
||||
i++;
|
||||
}
|
||||
|
||||
print 'It took ' + i + ' iterations to sort the deck.';
|
||||
</pre>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="12u">
|
||||
|
||||
<!-- Lists -->
|
||||
<section class="box">
|
||||
<h3>Lists</h3>
|
||||
<div class="row">
|
||||
<div class="6u 12u(mobilep)">
|
||||
|
||||
<h4>Unordered</h4>
|
||||
<ul>
|
||||
<li>Dolor pulvinar etiam magna etiam.</li>
|
||||
<li>Sagittis adipiscing lorem eleifend.</li>
|
||||
<li>Felis enim feugiat dolore viverra.</li>
|
||||
</ul>
|
||||
|
||||
<h4>Alternate</h4>
|
||||
<ul class="alt">
|
||||
<li>Dolor pulvinar etiam magna etiam.</li>
|
||||
<li>Sagittis adipiscing lorem eleifend.</li>
|
||||
<li>Felis enim feugiat dolore viverra.</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<div class="6u 12u(mobilep)">
|
||||
|
||||
<h4>Ordered</h4>
|
||||
<ol>
|
||||
<li>Dolor pulvinar etiam magna etiam.</li>
|
||||
<li>Etiam vel felis at lorem sed viverra.</li>
|
||||
<li>Felis enim feugiat dolore viverra.</li>
|
||||
<li>Dolor pulvinar etiam magna etiam.</li>
|
||||
<li>Etiam vel felis at lorem sed viverra.</li>
|
||||
<li>Felis enim feugiat dolore viverra.</li>
|
||||
</ol>
|
||||
|
||||
<h4>Icons</h4>
|
||||
<ul class="icons">
|
||||
<li><a href="#" class="icon fa-twitter"><span class="label">Twitter</span></a></li>
|
||||
<li><a href="#" class="icon fa-facebook"><span class="label">Facebook</span></a></li>
|
||||
<li><a href="#" class="icon fa-instagram"><span class="label">Instagram</span></a></li>
|
||||
<li><a href="#" class="icon fa-github"><span class="label">Github</span></a></li>
|
||||
<li><a href="#" class="icon fa-dribbble"><span class="label">Dribbble</span></a></li>
|
||||
<li><a href="#" class="icon fa-tumblr"><span class="label">Tumblr</span></a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4>Actions</h4>
|
||||
<ul class="actions">
|
||||
<li><a href="#" class="button special">Default</a></li>
|
||||
<li><a href="#" class="button">Default</a></li>
|
||||
<li><a href="#" class="button alt">Default</a></li>
|
||||
</ul>
|
||||
<ul class="actions small">
|
||||
<li><a href="#" class="button special small">Small</a></li>
|
||||
<li><a href="#" class="button small">Small</a></li>
|
||||
<li><a href="#" class="button alt small">Small</a></li>
|
||||
</ul>
|
||||
<div class="row">
|
||||
<div class="3u 6u(narrower) 12u$(mobilep)">
|
||||
<ul class="actions vertical">
|
||||
<li><a href="#" class="button special">Default</a></li>
|
||||
<li><a href="#" class="button">Default</a></li>
|
||||
<li><a href="#" class="button alt">Default</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="3u 6u$(narrower) 12u$(mobilep)">
|
||||
<ul class="actions vertical small">
|
||||
<li><a href="#" class="button special small">Small</a></li>
|
||||
<li><a href="#" class="button small">Small</a></li>
|
||||
<li><a href="#" class="button alt small">Small</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="3u 6u(narrower) 12u$(mobilep)">
|
||||
<ul class="actions vertical">
|
||||
<li><a href="#" class="button special fit">Default</a></li>
|
||||
<li><a href="#" class="button fit">Default</a></li>
|
||||
<li><a href="#" class="button alt fit">Default</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="3u 6u$(narrower) 12u$(mobilep)">
|
||||
<ul class="actions vertical small">
|
||||
<li><a href="#" class="button special small fit">Small</a></li>
|
||||
<li><a href="#" class="button small fit">Small</a></li>
|
||||
<li><a href="#" class="button alt small fit">Small</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="12u">
|
||||
|
||||
<!-- Table -->
|
||||
<section class="box">
|
||||
<h3>Table</h3>
|
||||
|
||||
<h4>Default</h4>
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Description</th>
|
||||
<th>Price</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Something</td>
|
||||
<td>Ante turpis integer aliquet porttitor.</td>
|
||||
<td>29.99</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Nothing</td>
|
||||
<td>Vis ac commodo adipiscing arcu aliquet.</td>
|
||||
<td>19.99</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Something</td>
|
||||
<td> Morbi faucibus arcu accumsan lorem.</td>
|
||||
<td>29.99</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Nothing</td>
|
||||
<td>Vitae integer tempus condimentum.</td>
|
||||
<td>19.99</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Something</td>
|
||||
<td>Ante turpis integer aliquet porttitor.</td>
|
||||
<td>29.99</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="2"></td>
|
||||
<td>100.00</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<h4>Alternate</h4>
|
||||
<div class="table-wrapper">
|
||||
<table class="alt">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Description</th>
|
||||
<th>Price</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Something</td>
|
||||
<td>Ante turpis integer aliquet porttitor.</td>
|
||||
<td>29.99</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Nothing</td>
|
||||
<td>Vis ac commodo adipiscing arcu aliquet.</td>
|
||||
<td>19.99</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Something</td>
|
||||
<td> Morbi faucibus arcu accumsan lorem.</td>
|
||||
<td>29.99</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Nothing</td>
|
||||
<td>Vitae integer tempus condimentum.</td>
|
||||
<td>19.99</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Something</td>
|
||||
<td>Ante turpis integer aliquet porttitor.</td>
|
||||
<td>29.99</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="2"></td>
|
||||
<td>100.00</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="12u">
|
||||
|
||||
<!-- Buttons -->
|
||||
<section class="box">
|
||||
<h3>Buttons</h3>
|
||||
<ul class="actions">
|
||||
<li><a href="#" class="button special">Special</a></li>
|
||||
<li><a href="#" class="button">Default</a></li>
|
||||
<li><a href="#" class="button alt">Alternate</a></li>
|
||||
</ul>
|
||||
<ul class="actions">
|
||||
<li><a href="#" class="button special big">Big</a></li>
|
||||
<li><a href="#" class="button">Default</a></li>
|
||||
<li><a href="#" class="button alt small">Small</a></li>
|
||||
</ul>
|
||||
<ul class="actions fit">
|
||||
<li><a href="#" class="button special fit">Fit</a></li>
|
||||
<li><a href="#" class="button fit">Fit</a></li>
|
||||
<li><a href="#" class="button alt fit">Fit</a></li>
|
||||
</ul>
|
||||
<ul class="actions fit small">
|
||||
<li><a href="#" class="button special fit small">Fit + Small</a></li>
|
||||
<li><a href="#" class="button fit small">Fit + Small</a></li>
|
||||
<li><a href="#" class="button alt fit small">Fit + Small</a></li>
|
||||
</ul>
|
||||
<ul class="actions">
|
||||
<li><a href="#" class="button special icon fa-search">Icon</a></li>
|
||||
<li><a href="#" class="button icon fa-download">Icon</a></li>
|
||||
<li><a href="#" class="button alt icon fa-check">Icon</a></li>
|
||||
</ul>
|
||||
<ul class="actions">
|
||||
<li><span class="button special disabled">Special</span></li>
|
||||
<li><span class="button disabled">Default</span></li>
|
||||
<li><span class="button alt disabled">Alternate</span></li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="12u">
|
||||
|
||||
<!-- Form -->
|
||||
<section class="box">
|
||||
<h3>Form</h3>
|
||||
<form method="post" action="#">
|
||||
<div class="row uniform 50%">
|
||||
<div class="6u 12u(mobilep)">
|
||||
<input type="text" name="name" id="name" value="" placeholder="Name" />
|
||||
</div>
|
||||
<div class="6u 12u(mobilep)">
|
||||
<input type="email" name="email" id="email" value="" placeholder="Email" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="row uniform 50%">
|
||||
<div class="12u">
|
||||
<div class="select-wrapper">
|
||||
<select name="category" id="category">
|
||||
<option value="">- Category -</option>
|
||||
<option value="1">Manufacturing</option>
|
||||
<option value="1">Shipping</option>
|
||||
<option value="1">Administration</option>
|
||||
<option value="1">Human Resources</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row uniform 50%">
|
||||
<div class="4u 12u(narrower)">
|
||||
<input type="radio" id="priority-low" name="priority" checked>
|
||||
<label for="priority-low">Low Priority</label>
|
||||
</div>
|
||||
<div class="4u 12u(narrower)">
|
||||
<input type="radio" id="priority-normal" name="priority">
|
||||
<label for="priority-normal">Normal Priority</label>
|
||||
</div>
|
||||
<div class="4u 12u(narrower)">
|
||||
<input type="radio" id="priority-high" name="priority">
|
||||
<label for="priority-high">High Priority</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row uniform 50%">
|
||||
<div class="6u 12u(narrower)">
|
||||
<input type="checkbox" id="copy" name="copy">
|
||||
<label for="copy">Email me a copy of this message</label>
|
||||
</div>
|
||||
<div class="6u 12u(narrower)">
|
||||
<input type="checkbox" id="human" name="human" checked>
|
||||
<label for="human">I am a human and not a robot</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row uniform 50%">
|
||||
<div class="12u">
|
||||
<textarea name="message" id="message" placeholder="Enter your message" rows="6"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row uniform">
|
||||
<div class="12u">
|
||||
<ul class="actions">
|
||||
<li><input type="submit" value="Send Message" /></li>
|
||||
<li><input type="reset" value="Reset" class="alt" /></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<hr />
|
||||
|
||||
<form method="post" action="#">
|
||||
<div class="row uniform 50%">
|
||||
<div class="9u 12u(mobilep)">
|
||||
<input type="text" name="query" id="query" value="" placeholder="Query" />
|
||||
</div>
|
||||
<div class="3u 12u(mobilep)">
|
||||
<input type="submit" value="Search" class="fit" />
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="12u">
|
||||
|
||||
<!-- Image -->
|
||||
<section class="box">
|
||||
<h3>Image</h3>
|
||||
<h4>Fit</h4>
|
||||
<span class="image fit"><img src="images/pic04.jpg" alt="" /></span>
|
||||
<div class="box alt">
|
||||
<div class="row no-collapse 50% uniform">
|
||||
<div class="4u"><span class="image fit"><img src="images/pic04.jpg" alt="" /></span></div>
|
||||
<div class="4u"><span class="image fit"><img src="images/pic04.jpg" alt="" /></span></div>
|
||||
<div class="4u"><span class="image fit"><img src="images/pic04.jpg" alt="" /></span></div>
|
||||
</div>
|
||||
<div class="row no-collapse 50% uniform">
|
||||
<div class="4u"><span class="image fit"><img src="images/pic04.jpg" alt="" /></span></div>
|
||||
<div class="4u"><span class="image fit"><img src="images/pic04.jpg" alt="" /></span></div>
|
||||
<div class="4u"><span class="image fit"><img src="images/pic04.jpg" alt="" /></span></div>
|
||||
</div>
|
||||
<div class="row no-collapse 50% uniform">
|
||||
<div class="4u"><span class="image fit"><img src="images/pic04.jpg" alt="" /></span></div>
|
||||
<div class="4u"><span class="image fit"><img src="images/pic04.jpg" alt="" /></span></div>
|
||||
<div class="4u"><span class="image fit"><img src="images/pic04.jpg" alt="" /></span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4>Left & Right</h4>
|
||||
<p><span class="image left"><img src="images/pic05.jpg" alt="" /></span>Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent.</p>
|
||||
<p><span class="image right"><img src="images/pic05.jpg" alt="" /></span>Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent.</p>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{{ partialCached "footer" . }}
|
||||
{{ partialCached " scripts" .}}
|
@ -0,0 +1,84 @@
|
||||
<!--
|
||||
Alpha by HTML5 UP
|
||||
html5up.net | @ajlkn
|
||||
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
|
||||
-->
|
||||
|
||||
{{ partial "header" . }}
|
||||
{{ partial "nav" . }}
|
||||
{{ partial "banner" . }}
|
||||
|
||||
{{ "<!-- Main -->" | safeHTML }}
|
||||
<section id="main" class="container">
|
||||
|
||||
{{ if .Params.Services.title }}
|
||||
<section class="box special">
|
||||
<header class="major">
|
||||
<h2>{{ .Params.Services.title }}</h2><a name="services"></a>
|
||||
<p>{{ .Params.Services.text | markdownify }}</p>
|
||||
</header>
|
||||
{{ partial "map" . }}
|
||||
</section>
|
||||
{{ end }}
|
||||
|
||||
{{ if .Params.Feature_icons.enable }}
|
||||
{{ $tiles := .Params.Feature_icons.tile }}
|
||||
{{ $len := (len $tiles) }}
|
||||
<a name="feature-icons"></a>
|
||||
<section class="box special features">
|
||||
<div class="features-row">
|
||||
{{ range $index, $key := $tiles}}
|
||||
<section>
|
||||
{{ if $key.url }}<a href="{{ $key.url | absURL }}"><div>{{ end }}
|
||||
<span class="icon major {{ $key.icon_pack }} {{ $key.icon }} accent{{- $key.accent -}}"></span>
|
||||
<h3>{{ $key.title }}</h3>
|
||||
<p>{{ $key.text | markdownify }}</p>
|
||||
{{ if $key.url }}</div></a>{{ end }}
|
||||
</section>
|
||||
{{ if and (mod $index 2) (lt (add $index 1) $len) }}
|
||||
</div>
|
||||
<div class="features-row">
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</section>
|
||||
{{ end }}
|
||||
|
||||
{{ if .Params.Feature_images.enable }}
|
||||
{{ $tiles := .Params.Feature_images.tile }}
|
||||
{{ $len := (len $tiles) }}
|
||||
<a name="feature-images"></a>
|
||||
<div class="row">
|
||||
{{ range $index, $key := $tiles }}
|
||||
<div class="col-6 col-12-narrower">
|
||||
<section class="box special">
|
||||
<span class="image featured"><img src="{{ $key.image | absURL}}" alt="" /></span>
|
||||
<h3>{{ $key.title }}</h3>
|
||||
<p>{{ $key.text | markdownify }}</p>
|
||||
{{ if $key.button_text }}
|
||||
<ul class="actions special">
|
||||
<li><a href="{{ $key.url | absURL }}" class="button alt">{{ $key.button_text }}</a></li>
|
||||
</ul>
|
||||
{{ end }}
|
||||
</section>
|
||||
</div>
|
||||
{{ if and (mod $index 2) (lt (add $index 1) $len) }}
|
||||
</div>
|
||||
<div class="row">
|
||||
{{ end }}
|
||||
{{ end }} {{/* end range $tiles*/}}
|
||||
</div>
|
||||
{{ end }} {{/* end if Feature_images*/}}
|
||||
|
||||
</section>
|
||||
|
||||
{{ "<!-- CTA -->" | safeHTML }}
|
||||
<section id="cta"><a name="call-to-action"></a>
|
||||
|
||||
<h2>{{ .Params.CTA.heading}}</h2>
|
||||
<p>{{ .Params.CTA.message}}</p>
|
||||
{{ partial "contact" .}}
|
||||
|
||||
</section>
|
||||
{{ partialCached "footer" . }}
|
||||
{{ partial "scripts" . }}
|
@ -0,0 +1,9 @@
|
||||
<section id="banner">
|
||||
<h2>{{ .Site.Params.title }}</h2>
|
||||
<p>{{ .Site.Params.subtitle }}</p>
|
||||
<ul class="actions special">
|
||||
{{ range .Params.Banner.button }}
|
||||
<li><a href="{{ .url | relURL }}" class="button {{ .type }}">{{ .text }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</section>
|
@ -0,0 +1,90 @@
|
||||
{{ if .Site.Params.Contact.text }}
|
||||
<p>{{ .Site.Params.Contact.text }}
|
||||
{{ if .Site.Params.Contact.phone }}
|
||||
<br />
|
||||
<a href="tel:{{ .Site.Params.Contact.phone }}" target="_blank" aria-label="{{.Site.Params.Contact.phone }}">
|
||||
<i class="icon fas fa-phone-alt">
|
||||
<span class="label">
|
||||
{{ .Site.Params.Contact.phone }}
|
||||
</span>
|
||||
</i>
|
||||
|
||||
{{ .Site.Params.Contact.phone }}
|
||||
</a>
|
||||
{{ end }}
|
||||
{{ if .Site.Params.Contact.mail }}
|
||||
<br />
|
||||
<a href="mailto:{{ .Site.Params.Contact.mail }}" target="_blank" aria-label="{{.Site.Params.Contact.mail }}">
|
||||
<i class="icon fas fa-envelope">
|
||||
<span class="label">
|
||||
{{ .Site.Params.Contact.mail }}
|
||||
</span>
|
||||
</i>
|
||||
|
||||
{{ .Site.Params.Contact.mail }}
|
||||
</a>
|
||||
{{ end }}
|
||||
</p>
|
||||
{{ end}}
|
||||
{{ if eq .Site.Params.Contact.service "netlify" }}
|
||||
<form name="contact" method="POST" action="{{ .Site.Params.Contact.confirm_page }}" netlify>
|
||||
<div class="row gtr-50 gtr-uniform">
|
||||
<div class="col-6 col-12-mobilep">
|
||||
<input type="text" name="name" aria-label="Your name" placeholder="Your name">
|
||||
</div>
|
||||
<div class="col-6 col-12-mobilep">
|
||||
<input type="email" name="email" aria-label="Email address" placeholder = "Email address">
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<textarea name="message" aria-label="Enter your message" placeholder="Enter your message" rows="6"></textarea>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<ul class="actions special">
|
||||
<li>
|
||||
<input type="submit" value="Send" />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{{ else if eq .Site.Params.Contact.service "formspree" }}
|
||||
<form method="POST" action="https://formspree.io/{{ .Site.Params.Contact.formspree_email }}">
|
||||
<div class="row gtr-50 gtr-uniform">
|
||||
<div class="col-6 col-12-mobilep">
|
||||
<input type="text" name="name" id="name" value="" aria-label="Name" placeholder="Name" />
|
||||
</div>
|
||||
<div class="col-6 col-12-mobilep">
|
||||
<input type="email" name="_replyto" id="email" value="" aria-label="Email" placeholder="Email" />
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<textarea name="message" id="message" aria-label="Enter your message" placeholder="Enter your message" rows="6"></textarea>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<ul class="actions special">
|
||||
<li><input type="submit" value="Send Message" /></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{{ else if eq .Site.Params.Contact.service "php" }}
|
||||
<form name="contact" method="POST" action="/contact_mail.php" netlify>
|
||||
<div class="row gtr-50 gtr-uniform">
|
||||
<div class="col-6 col-12-mobilep">
|
||||
<input type="text" name="name" aria-label="Your name" placeholder="Your name">
|
||||
</div>
|
||||
<div class="col-6 col-12-mobilep">
|
||||
<input type="email" name="email" aria-label="Email address" placeholder = "Email address">
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<textarea name="message" aria-label="Enter your message" placeholder="Enter your message" rows="6"></textarea>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<ul class="actions special">
|
||||
<li>
|
||||
<input type="submit" value="Send" name="send"/>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{{ end }}
|
@ -0,0 +1,18 @@
|
||||
{{ "<!-- Footer -->" | safeHTML}}
|
||||
<footer id="footer">
|
||||
<ul class="icons">
|
||||
{{ range .Site.Params.links }}
|
||||
{{ $pack := or .icon_pack "fa" }}
|
||||
<li>
|
||||
<a href="{{ .link | safeURL }}" target="_blank" aria-label="{{ .service }}"><i class="icon {{ $pack }} {{ .icon }}"><span class="label">{{ .service }}</span></i></a>
|
||||
</li>
|
||||
{{ end }} {{/* range */}}
|
||||
</ul>
|
||||
<ul class="copyright">
|
||||
{{- range .Site.Params.Footer.copyright -}}
|
||||
<li>{{ . | markdownify }}</li>
|
||||
{{- end -}}
|
||||
</ul>
|
||||
</footer>
|
||||
|
||||
</div>
|
@ -0,0 +1,40 @@
|
||||
<!DOCTYPE HTML>
|
||||
{{ with .Site.Params.languageCode }}<html lang="{{ . }}">{{ end }}
|
||||
<head>
|
||||
<title>{{ if .Title }}{{ .Title }} | {{ end }} {{ .Site.Params.title }}</title>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
{{ with .Site.Params.subtitle }}<meta name="description" content="{{ . }}">{{ end }}
|
||||
{{ with .Site.Params.name }}<meta name="author" content="{{ . }}">{{ end }}
|
||||
<meta name="keywords" content="
|
||||
{{- if .IsHome -}}
|
||||
{{- if .Site.Params.keywords -}}
|
||||
{{- range $i, $e := .Site.Params.keywords }}{{ if $i }}, {{ end }}{{ $e }}{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ if .IsPage }}
|
||||
{{- if .Params.tags -}}
|
||||
{{- range $i, $e := .Params.tags }}{{ if $i }}, {{ end }}{{ $e }}{{ end }}
|
||||
{{- end -}}
|
||||
{{ end -}}" />
|
||||
{{- with .OutputFormats.Get "rss" -}}
|
||||
{{ printf `<link rel="%s" type="%s+%s" href="%s" title="%s" />` .Rel .MediaType.Type .MediaType.Suffix .Permalink $.Site.Title | safeHTML }}
|
||||
{{- end -}}
|
||||
{{ hugo.Generator }}
|
||||
{{ with .Site.Params.Podcast.itunes }}
|
||||
<meta name="apple-itunes-app" content="app-id={{ replaceRE "https\\:\\/\\/itunes\\.apple\\.com\\/[a-z]{2}\\/podcast\\/[a-z\\-]*\\/id(\\d{10}).*" "$1" . }}" />
|
||||
{{ end }}
|
||||
{{ template "_internal/opengraph.html" . }}
|
||||
{{ template "_internal/twitter_cards.html" . }}
|
||||
<link rel="stylesheet" href="{{ "fontawesome/css/all.min.css" | absURL }}" />
|
||||
{{- $css := .Site.Data.libs.css -}}
|
||||
{{ if .IsPage }}{{ printf "<link rel=\"stylesheet\" href=\"//cdn.plyr.io/%s/plyr.css\" integrity=\"%s\" crossorigin=\"anonymous\">" $css.plyr.version $css.plyr.integrity | safeHTML }}{{ end }}
|
||||
{{- $ieStyles := resources.Get "scss/ie8.scss" | toCSS | minify -}}
|
||||
{{- $ieJs := resources.Get "js/ie/html5shiv.js" | minify -}}
|
||||
{{ printf "<!--[if lte IE 8]><script src=\"%s\"></script><link rel=\"stylesheet\" href=\"%s\" /><![endif]-->" $ieJs.RelPermalink $ieStyles.RelPermalink | safeHTML }}
|
||||
{{ $style := resources.Get "scss/main.scss" | resources.ExecuteAsTemplate "style.main.scss" . | toCSS | minify | fingerprint }}
|
||||
<link rel="stylesheet" href="{{ $style.RelPermalink }}" integrity="{{ $style.Data.Integrity }}" media="screen" crossorigin="anonymous" />
|
||||
{{- range .Site.Params.customCSS -}}
|
||||
<link rel="stylesheet" href="{{ . | absURL }}">
|
||||
{{- end -}}
|
||||
</head>
|
@ -0,0 +1,46 @@
|
||||
<div class="box">
|
||||
{{ $pages := .Paginator.Pages }}
|
||||
{{ $len := (len $pages) }}
|
||||
{{ range $index, $key := $pages }}
|
||||
{{ if .Params.images }}
|
||||
<div class="row no-collapse 50% uniform">
|
||||
<div class="col-6 col-12-mobilep">
|
||||
<a href="{{ .Permalink }}">{{ if .Draft }}DRAFT: {{end}}{{ .Title | markdownify }}</a>
|
||||
{{ with .Params.subtitle }} | {{ . | markdownify }} | {{ end }}
|
||||
{{ with .Params.passage }} | {{ . | markdownify }} | {{ end }}
|
||||
<time class="date-meta">{{ .Date.Format "Jan 2, 2006" }}</time>
|
||||
<br>
|
||||
{{ .Summary | plainify | safeHTML }}
|
||||
{{ if .Truncated }}
|
||||
<a class="button small alt" href="{{ .Permalink }}" >
|
||||
Read more<i class="fas fa-angle-double-right"></i>
|
||||
</a>
|
||||
{{ end }} {{/* if */}}
|
||||
</div>
|
||||
<div class="col-6 col-12-mobilep">
|
||||
<span class="image fit">
|
||||
<a href="{{ .Permalink }}">
|
||||
<img src="{{ index .Params.images 0 | absURL }}"></img>
|
||||
</a/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
{{ else }}
|
||||
<div>
|
||||
<a href="{{ .Permalink }}">{{ if .Draft }}DRAFT: {{end}}{{ .Title | markdownify }}</a>
|
||||
<time class="date-meta">({{ .Date.Format "Jan 2, 2006" }})</time>
|
||||
<br>
|
||||
{{ .Summary | plainify | safeHTML }}
|
||||
{{ if .Truncated }}
|
||||
<a class="button small alt" href="{{ .Permalink }}" >
|
||||
Read more<i class="fas fa-angle-double-right"></i>
|
||||
</a>
|
||||
{{ end }} {{/* if */}}
|
||||
</div>
|
||||
{{ end }}{{/* if */}}
|
||||
{{ if lt (add $index 1) $len }}
|
||||
<hr />
|
||||
{{ end }}{{/* if */}}
|
||||
{{ end }} {{/* range */}}
|
||||
{{ template "_internal/pagination.html" . }}
|
||||
</div>
|