jz-theme-clean-blog 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE.txt +21 -0
- data/README.md +141 -0
- data/_includes/footer.html +35 -0
- data/_includes/head.html +24 -0
- data/_includes/navbar.html +28 -0
- data/_includes/scripts.html +84 -0
- data/_layouts/default.html +19 -0
- data/_layouts/home.html +65 -0
- data/_layouts/page.html +34 -0
- data/_layouts/post.html +52 -0
- data/_sass/styles.scss +2 -0
- data/assets/main.scss +5 -0
- data/assets/scripts.js +3 -0
- data/assets/vendor/bootstrap/css/bootstrap-grid.css +1912 -0
- data/assets/vendor/bootstrap/css/bootstrap-grid.min.css +7 -0
- data/assets/vendor/bootstrap/css/bootstrap-reboot.css +330 -0
- data/assets/vendor/bootstrap/css/bootstrap-reboot.min.css +8 -0
- data/assets/vendor/bootstrap/css/bootstrap.css +8981 -0
- data/assets/vendor/bootstrap/css/bootstrap.min.css +7 -0
- data/assets/vendor/bootstrap/js/bootstrap.bundle.js +6444 -0
- data/assets/vendor/bootstrap/js/bootstrap.bundle.min.js +7 -0
- data/assets/vendor/bootstrap/js/bootstrap.js +3927 -0
- data/assets/vendor/bootstrap/js/bootstrap.min.js +7 -0
- data/assets/vendor/font-awesome/css/font-awesome.css +2337 -0
- data/assets/vendor/font-awesome/css/font-awesome.min.css +4 -0
- data/assets/vendor/font-awesome/fonts/FontAwesome.otf +0 -0
- data/assets/vendor/font-awesome/fonts/fontawesome-webfont.eot +0 -0
- data/assets/vendor/font-awesome/fonts/fontawesome-webfont.svg +2671 -0
- data/assets/vendor/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
- data/assets/vendor/font-awesome/fonts/fontawesome-webfont.woff +0 -0
- data/assets/vendor/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
- data/assets/vendor/font-awesome/less/animated.less +34 -0
- data/assets/vendor/font-awesome/less/bordered-pulled.less +25 -0
- data/assets/vendor/font-awesome/less/core.less +12 -0
- data/assets/vendor/font-awesome/less/fixed-width.less +6 -0
- data/assets/vendor/font-awesome/less/font-awesome.less +18 -0
- data/assets/vendor/font-awesome/less/icons.less +789 -0
- data/assets/vendor/font-awesome/less/larger.less +13 -0
- data/assets/vendor/font-awesome/less/list.less +19 -0
- data/assets/vendor/font-awesome/less/mixins.less +60 -0
- data/assets/vendor/font-awesome/less/path.less +15 -0
- data/assets/vendor/font-awesome/less/rotated-flipped.less +20 -0
- data/assets/vendor/font-awesome/less/screen-reader.less +5 -0
- data/assets/vendor/font-awesome/less/stacked.less +20 -0
- data/assets/vendor/font-awesome/less/variables.less +800 -0
- data/assets/vendor/font-awesome/scss/_animated.scss +34 -0
- data/assets/vendor/font-awesome/scss/_bordered-pulled.scss +25 -0
- data/assets/vendor/font-awesome/scss/_core.scss +12 -0
- data/assets/vendor/font-awesome/scss/_fixed-width.scss +6 -0
- data/assets/vendor/font-awesome/scss/_icons.scss +789 -0
- data/assets/vendor/font-awesome/scss/_larger.scss +13 -0
- data/assets/vendor/font-awesome/scss/_list.scss +19 -0
- data/assets/vendor/font-awesome/scss/_mixins.scss +60 -0
- data/assets/vendor/font-awesome/scss/_path.scss +15 -0
- data/assets/vendor/font-awesome/scss/_rotated-flipped.scss +20 -0
- data/assets/vendor/font-awesome/scss/_screen-reader.scss +5 -0
- data/assets/vendor/font-awesome/scss/_stacked.scss +20 -0
- data/assets/vendor/font-awesome/scss/_variables.scss +800 -0
- data/assets/vendor/font-awesome/scss/font-awesome.scss +18 -0
- data/assets/vendor/jquery/jquery.js +10364 -0
- data/assets/vendor/jquery/jquery.min.js +2 -0
- data/assets/vendor/startbootstrap-clean-blog/js/clean-blog.min.js +1 -0
- data/assets/vendor/startbootstrap-clean-blog/js/jqBootstrapValidation.js +937 -0
- data/assets/vendor/startbootstrap-clean-blog/scss/_bootstrap-overrides.scss +27 -0
- data/assets/vendor/startbootstrap-clean-blog/scss/_contact.scss +60 -0
- data/assets/vendor/startbootstrap-clean-blog/scss/_footer.scss +13 -0
- data/assets/vendor/startbootstrap-clean-blog/scss/_global.scss +77 -0
- data/assets/vendor/startbootstrap-clean-blog/scss/_masthead.scss +82 -0
- data/assets/vendor/startbootstrap-clean-blog/scss/_mixins.scss +68 -0
- data/assets/vendor/startbootstrap-clean-blog/scss/_navbar.scss +100 -0
- data/assets/vendor/startbootstrap-clean-blog/scss/_post.scss +42 -0
- data/assets/vendor/startbootstrap-clean-blog/scss/_variables.scss +33 -0
- data/assets/vendor/startbootstrap-clean-blog/scss/clean-blog.scss +9 -0
- metadata +159 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c7f19fdd990433a233a74968f470f3e9dc874795
|
4
|
+
data.tar.gz: 65759c4a28b2ad6f74f43a128a5876e084c5837d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 86923e4e0df2ff95296ae65d3874195d3370a672f628289d2d2b95cb67cc4a0f41f44ec3996652c4907e2161ca841bee55b97a7ad1a7f510fed7860207a187e6
|
7
|
+
data.tar.gz: 1144ccf9cb4cc4de868b5eec5b6ccf1dcb41bc6baf45926d8b031198b45fd2bb0ee6388c797f87908570379623bef304cfb30d52ef289506e5bf77b56ae25ee4
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2018 David Miller
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,141 @@
|
|
1
|
+
# [Start Bootstrap - Clean Blog](https://startbootstrap.com/template-overviews/clean-blog/) - Official Jekyll Version
|
2
|
+
|
3
|
+
[Clean Blog](http://startbootstrap.com/template-overviews/clean-blog/) is a stylish, responsive blog theme for [Bootstrap](http://getbootstrap.com/) created by [Start Bootstrap](http://startbootstrap.com/). This theme features a blog homepage, about page, contact page, and an example post page along with a working contact form powered by [Formspree](https://formspree.io/).
|
4
|
+
|
5
|
+
This repository holds the official Jekyll version of the Clean Blog!
|
6
|
+
|
7
|
+
## Preview
|
8
|
+
|
9
|
+
[![Clean Blog (Jekyll) Preview](https://startbootstrap.com/assets/img/templates/clean-blog.jpg)](http://blackrockdigital.github.io/startbootstrap-clean-blog-jekyll/)
|
10
|
+
|
11
|
+
**[View Live Preview](http://blackrockdigital.github.io/startbootstrap-clean-blog-jekyll/)**
|
12
|
+
|
13
|
+
## Installation & Setup
|
14
|
+
|
15
|
+
### Using RubyGems:
|
16
|
+
|
17
|
+
When installing the theme using RubyGems, demo images, posts, and pages are not included. Follow the instructions below for complete setup.
|
18
|
+
|
19
|
+
1. (Optional) Create a new Jekyll site: `jekyll new my-site`
|
20
|
+
2. Replace the current theme in your `Gemfile` with `gem "jekyll-theme-clean-blog"`.
|
21
|
+
3. Install the theme: `bundle install`
|
22
|
+
4. Replace the current theme in your `_config.yml` file with `theme: jekyll-theme-awesome`.
|
23
|
+
5. Build your site: `bundle exec jekyll serve`
|
24
|
+
|
25
|
+
Assuming there are no errors and the site is building properly, follow these steps next:
|
26
|
+
|
27
|
+
1. Create the following pages if they do not exist already (or change the extension of exsiting markdown files from `.md` to `.html`):
|
28
|
+
- `index.html` - set to `layout: home`
|
29
|
+
- `about.html` - set to `layout: page`
|
30
|
+
- `contact.html` - set to `layout: page`
|
31
|
+
- `posts/index.html` - set to `layout: page` (you will also need to create a `posts` directory)
|
32
|
+
2. Configure the `index.html` front matter. Example:
|
33
|
+
```
|
34
|
+
---
|
35
|
+
layout: home
|
36
|
+
background: '/PATH_TO_IMAGE'
|
37
|
+
---
|
38
|
+
```
|
39
|
+
3. Configure the `about.html`, `contact.html`, and `posts/index.html` front matter. Example:
|
40
|
+
```
|
41
|
+
---
|
42
|
+
layout: page
|
43
|
+
title: Page Title
|
44
|
+
description: This is the page description.
|
45
|
+
background: '/PATH_TO_IMAGE'
|
46
|
+
---
|
47
|
+
```
|
48
|
+
4. For each post in the `_posts` directory, update the front matter. Example:
|
49
|
+
```
|
50
|
+
---
|
51
|
+
layout: post
|
52
|
+
title: "Post Title"
|
53
|
+
subtitle: "This is the post subtitle."
|
54
|
+
date: YYYY-MM-DD HH:MM:SS
|
55
|
+
background: '/PATH_TO_IMAGE'
|
56
|
+
---
|
57
|
+
```
|
58
|
+
|
59
|
+
For reference, look at the [demo repository](https://github.com/BlackrockDigital/startbootstrap-clean-blog-jekyll) to see how the files are set up.
|
60
|
+
|
61
|
+
5. Add the form to the `contact.html` page. Add the following code to your `contact.html` page:
|
62
|
+
```
|
63
|
+
<form name="sentMessage" id="contactForm" novalidate>
|
64
|
+
<div class="control-group">
|
65
|
+
<div class="form-group floating-label-form-group controls">
|
66
|
+
<label>Name</label>
|
67
|
+
<input type="text" class="form-control" placeholder="Name" id="name" required data-validation-required-message="Please enter your name.">
|
68
|
+
<p class="help-block text-danger"></p>
|
69
|
+
</div>
|
70
|
+
</div>
|
71
|
+
<div class="control-group">
|
72
|
+
<div class="form-group floating-label-form-group controls">
|
73
|
+
<label>Email Address</label>
|
74
|
+
<input type="email" class="form-control" placeholder="Email Address" id="email" required data-validation-required-message="Please enter your email address.">
|
75
|
+
<p class="help-block text-danger"></p>
|
76
|
+
</div>
|
77
|
+
</div>
|
78
|
+
<div class="control-group">
|
79
|
+
<div class="form-group col-xs-12 floating-label-form-group controls">
|
80
|
+
<label>Phone Number</label>
|
81
|
+
<input type="tel" class="form-control" placeholder="Phone Number" id="phone" required data-validation-required-message="Please enter your phone number.">
|
82
|
+
<p class="help-block text-danger"></p>
|
83
|
+
</div>
|
84
|
+
</div>
|
85
|
+
<div class="control-group">
|
86
|
+
<div class="form-group floating-label-form-group controls">
|
87
|
+
<label>Message</label>
|
88
|
+
<textarea rows="5" class="form-control" placeholder="Message" id="message" required data-validation-required-message="Please enter a message."></textarea>
|
89
|
+
<p class="help-block text-danger"></p>
|
90
|
+
</div>
|
91
|
+
</div>
|
92
|
+
<br>
|
93
|
+
<div id="success"></div>
|
94
|
+
<div class="form-group">
|
95
|
+
<button type="submit" class="btn btn-primary" id="sendMessageButton">Send</button>
|
96
|
+
</div>
|
97
|
+
</form>
|
98
|
+
```
|
99
|
+
|
100
|
+
Make sure you have the `email` setting in your `_config.yml` file set to a working email address! Once this is set, fill out the form and then check your email, verify the email address using the link sent to you by Formspree, and then the form will be working!
|
101
|
+
|
102
|
+
6. Build your site: `bundle exec jekyll serve`
|
103
|
+
|
104
|
+
### Using Core Files
|
105
|
+
|
106
|
+
When using the core files, the demo images, posts, and pages are all included with the download. After following the instructions below, you can then go and change the content of the pages and posts.
|
107
|
+
|
108
|
+
1. [Download](https://github.com/BlackrockDigital/startbootstrap-clean-blog-jekyll/archive/master.zip) or Clone the repository.
|
109
|
+
2. Update the following configuration settings in your `_config.yml` file:
|
110
|
+
- `baserul`
|
111
|
+
- `url`
|
112
|
+
- `title`
|
113
|
+
- `email` (after setting this setting to a working email address, fill out the form on the contact page and send it - then check your email and verify the address and the form will send you messages when used)
|
114
|
+
- `description`
|
115
|
+
- `author`
|
116
|
+
- `twitter_username` (Optional)
|
117
|
+
- `github_username` (Optional)
|
118
|
+
3. Build your site: `bundle exec jekyll serve`
|
119
|
+
|
120
|
+
## Bugs and Issues
|
121
|
+
|
122
|
+
Have a bug or an issue with this template? [Open a new issue](https://github.com/BlackrockDigital/startbootstrap-clean-blog-jekyll/issues) here on GitHub!
|
123
|
+
|
124
|
+
## About
|
125
|
+
|
126
|
+
Start Bootstrap is an open source library of free Bootstrap templates and themes. All of the free templates and themes on Start Bootstrap are released under the MIT license, which means you can use them for any purpose, even for commercial projects.
|
127
|
+
|
128
|
+
* https://startbootstrap.com
|
129
|
+
* https://twitter.com/SBootstrap
|
130
|
+
|
131
|
+
Start Bootstrap was created by and is maintained by **[David Miller](http://davidmiller.io/)**, Owner of [Blackrock Digital](http://blackrockdigital.io/).
|
132
|
+
|
133
|
+
* http://davidmiller.io
|
134
|
+
* https://twitter.com/davidmillerskt
|
135
|
+
* https://github.com/davidtmiller
|
136
|
+
|
137
|
+
Start Bootstrap is based on the [Bootstrap](http://getbootstrap.com/) framework created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thorton](https://twitter.com/fat).
|
138
|
+
|
139
|
+
## Copyright and License
|
140
|
+
|
141
|
+
Copyright 2013-2018 Blackrock Digital LLC. Code released under the [MIT](https://github.com/BlackrockDigital/startbootstrap-clean-blog-jekyll/blob/gh-pages/LICENSE) license.
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<!-- Footer -->
|
2
|
+
|
3
|
+
<hr>
|
4
|
+
|
5
|
+
<footer>
|
6
|
+
<div class="container">
|
7
|
+
<div class="row">
|
8
|
+
<div class="col-lg-8 col-md-10 mx-auto">
|
9
|
+
<ul class="list-inline text-center">
|
10
|
+
{% if site.twitter_username %}
|
11
|
+
<li class="list-inline-item">
|
12
|
+
<a href="https://www.twitter.com/{{ site.twitter_username }}">
|
13
|
+
<span class="fa-stack fa-lg">
|
14
|
+
<i class="fa fa-circle fa-stack-2x"></i>
|
15
|
+
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
16
|
+
</span>
|
17
|
+
</a>
|
18
|
+
</li>
|
19
|
+
{% endif %}
|
20
|
+
{% if site.github_username %}
|
21
|
+
<li class="list-inline-item">
|
22
|
+
<a href="https://github.com/{{ site.github_username }}">
|
23
|
+
<span class="fa-stack fa-lg">
|
24
|
+
<i class="fa fa-circle fa-stack-2x"></i>
|
25
|
+
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
26
|
+
</span>
|
27
|
+
</a>
|
28
|
+
</li>
|
29
|
+
{% endif %}
|
30
|
+
</ul>
|
31
|
+
<p class="copyright text-muted">Copyright © {{ site.author }} {{ 'now' | date: "%Y" }}</p>
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
</footer>
|
data/_includes/head.html
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
<head>
|
2
|
+
|
3
|
+
<meta charset="utf-8">
|
4
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
5
|
+
|
6
|
+
<title>
|
7
|
+
{% if page.title %}{{ page.title | escape }} - {{ site.title | escape }}
|
8
|
+
{% else %}{{ site.title | escape }}{% endif %}
|
9
|
+
</title>
|
10
|
+
|
11
|
+
<meta name="description" content="{{ page.excerpt | default: site.description | strip_html | normalize_whitespace | truncate: 160 | escape }}">
|
12
|
+
|
13
|
+
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
|
14
|
+
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
|
15
|
+
|
16
|
+
<link rel="stylesheet" href="{{"/assets/vendor/bootstrap/css/bootstrap.min.css" | relative_url }}">
|
17
|
+
|
18
|
+
<link rel="stylesheet" href="{{"/assets/vendor/font-awesome/css/font-awesome.min.css" | relative_url }}">
|
19
|
+
|
20
|
+
<link rel="stylesheet" href="{{"/assets/main.css" | relative_url }}">
|
21
|
+
<link rel="canonical" href="{{ page.url | replace:'index.html','' | absolute_url }}">
|
22
|
+
<link rel="alternate" type="application/rss+xml" title="{{ site.title | escape }}" href="{{ "/feed.xml" | relative_url }}">
|
23
|
+
|
24
|
+
</head>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<!-- Navigation -->
|
2
|
+
<nav class="navbar navbar-expand-lg navbar-light fixed-top" id="mainNav">
|
3
|
+
<div class="container">
|
4
|
+
{% if site.brand %}
|
5
|
+
<a class="navbar-brand" href="{{"/" | relative_url }}">{{site.brand}}</a>
|
6
|
+
{% endif %}
|
7
|
+
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
|
8
|
+
Menu
|
9
|
+
<i class="fa fa-bars"></i>
|
10
|
+
</button>
|
11
|
+
<div class="collapse navbar-collapse" id="navbarResponsive">
|
12
|
+
<ul class="navbar-nav ml-auto">
|
13
|
+
<li class="nav-item">
|
14
|
+
<a class="nav-link" href="{{"/" | relative_url }}">Home</a>
|
15
|
+
</li>
|
16
|
+
<li class="nav-item">
|
17
|
+
<a class="nav-link" href="{{"/about" | relative_url }}">About</a>
|
18
|
+
</li>
|
19
|
+
<li class="nav-item">
|
20
|
+
<a class="nav-link" href="{{"/posts" | relative_url }}">Posts</a>
|
21
|
+
</li>
|
22
|
+
<li class="nav-item">
|
23
|
+
<a class="nav-link" href="{{"/contact" | relative_url }}">Contact</a>
|
24
|
+
</li>
|
25
|
+
</ul>
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
</nav>
|
@@ -0,0 +1,84 @@
|
|
1
|
+
<script src="{{"/assets/vendor/jquery/jquery.min.js" | relative_url }}"></script>
|
2
|
+
<script src="{{"/assets/vendor/bootstrap/js/bootstrap.bundle.min.js" | relative_url }}"></script>
|
3
|
+
<script src="{{"/assets/vendor/startbootstrap-clean-blog/js/clean-blog.min.js" | relative_url }}"></script>
|
4
|
+
|
5
|
+
<script src="{{"/assets/scripts.js" | relative_url }}"></script>
|
6
|
+
|
7
|
+
{% if page.url contains 'contact' %}
|
8
|
+
<!-- Form Validation -->
|
9
|
+
<script src="{{"/assets/vendor/startbootstrap-clean-blog/js/jqBootstrapValidation.js" | relative_url }}"></script>
|
10
|
+
<!-- Send Form -->
|
11
|
+
<script>
|
12
|
+
$(function () {
|
13
|
+
|
14
|
+
$("#contactForm input,#contactForm textarea").jqBootstrapValidation({
|
15
|
+
preventSubmit: true,
|
16
|
+
submitError: function ($form, event, errors) {
|
17
|
+
// additional error messages or events
|
18
|
+
},
|
19
|
+
submitSuccess: function ($form, event) {
|
20
|
+
event.preventDefault(); // prevent default submit behaviour
|
21
|
+
// get values from FORM
|
22
|
+
var name = $("input#name").val();
|
23
|
+
var email = $("input#email").val();
|
24
|
+
var phone = $("input#phone").val();
|
25
|
+
var message = $("textarea#message").val();
|
26
|
+
var firstName = name; // For Success/Failure Message
|
27
|
+
// Check for white space in name for Success/Fail message
|
28
|
+
if (firstName.indexOf(' ') >= 0) {
|
29
|
+
firstName = name.split(' ').slice(0, -1).join(' ');
|
30
|
+
}
|
31
|
+
$this = $("#sendMessageButton");
|
32
|
+
$this.prop("disabled", true); // Disable submit button until AJAX call is complete to prevent duplicate messages
|
33
|
+
$.ajax({
|
34
|
+
url: "//formspree.io/{{ site.email }}",
|
35
|
+
type: "POST",
|
36
|
+
data: {
|
37
|
+
name: name,
|
38
|
+
phone: phone,
|
39
|
+
email: email,
|
40
|
+
message: message
|
41
|
+
},
|
42
|
+
cache: false,
|
43
|
+
success: function () {
|
44
|
+
// Success message
|
45
|
+
$('#success').html("<div class='alert alert-success'>");
|
46
|
+
$('#success > .alert-success').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×").append("</button>");
|
47
|
+
$('#success > .alert-success').append("<strong>Your message has been sent. </strong>");
|
48
|
+
$('#success > .alert-success').append('</div>');
|
49
|
+
//clear all fields
|
50
|
+
$('#contactForm').trigger("reset");
|
51
|
+
},
|
52
|
+
error: function () {
|
53
|
+
// Fail message
|
54
|
+
$('#success').html("<div class='alert alert-danger'>");
|
55
|
+
$('#success > .alert-danger').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×").append("</button>");
|
56
|
+
$('#success > .alert-danger').append($("<strong>").text("Sorry " + firstName + ", it seems that my mail server is not responding. Please try again later!"));
|
57
|
+
$('#success > .alert-danger').append('</div>');
|
58
|
+
//clear all fields
|
59
|
+
$('#contactForm').trigger("reset");
|
60
|
+
},
|
61
|
+
complete: function () {
|
62
|
+
setTimeout(function () {
|
63
|
+
$this.prop("disabled", false); // Re-enable submit button when AJAX call is complete
|
64
|
+
}, 1000);
|
65
|
+
}
|
66
|
+
});
|
67
|
+
},
|
68
|
+
filter: function () {
|
69
|
+
return $(this).is(":visible");
|
70
|
+
}
|
71
|
+
});
|
72
|
+
|
73
|
+
$("a[data-toggle=\"tab\"]").click(function (e) {
|
74
|
+
e.preventDefault();
|
75
|
+
$(this).tab("show");
|
76
|
+
});
|
77
|
+
});
|
78
|
+
|
79
|
+
/*When clicking on Full hide fail/success boxes */
|
80
|
+
$('#name').focus(function () {
|
81
|
+
$('#success').html('');
|
82
|
+
});
|
83
|
+
</script>
|
84
|
+
{% endif %}
|
data/_layouts/home.html
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
---
|
4
|
+
|
5
|
+
<!-- Page Header -->
|
6
|
+
{% if page.background %}
|
7
|
+
<header class="masthead" style="background-image: url('{{ page.background | prepend: site.baseurl | replace: '//', '/' }}')">
|
8
|
+
{% else %}
|
9
|
+
<header class="masthead">
|
10
|
+
{% endif %}
|
11
|
+
<div class="overlay"></div>
|
12
|
+
<div class="container">
|
13
|
+
<div class="row">
|
14
|
+
<div class="col-lg-8 col-md-10 mx-auto">
|
15
|
+
<div class="page-heading">
|
16
|
+
<h1>{{ site.title }}</h1>
|
17
|
+
{% if site.description %}
|
18
|
+
<span class="subheading">{{ site.description }}</span>
|
19
|
+
{% endif %}
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
</div>
|
24
|
+
</header>
|
25
|
+
|
26
|
+
<div class="container">
|
27
|
+
<div class="row">
|
28
|
+
<div class="col-lg-8 col-md-10 mx-auto">
|
29
|
+
|
30
|
+
{{ content }}
|
31
|
+
|
32
|
+
<!-- Home Post List -->
|
33
|
+
{% for post in site.posts limit : 5 %}
|
34
|
+
|
35
|
+
<article class="post-preview">
|
36
|
+
<a href="{{ post.url | prepend: site.baseurl | replace: '//', '/' }}">
|
37
|
+
<h2 class="post-title">{{ post.title }}</h2>
|
38
|
+
{% if post.subtitle %}
|
39
|
+
<h3 class="post-subtitle">{{ post.subtitle }}</h3>
|
40
|
+
{% else %}
|
41
|
+
<h3 class="post-subtitle">{{ post.excerpt | strip_html | truncatewords: 15 }}</h3>
|
42
|
+
{% endif %}
|
43
|
+
</a>
|
44
|
+
<p class="post-meta">Posted by
|
45
|
+
{% if post.author %}
|
46
|
+
{{ post.author }}
|
47
|
+
{% else %}
|
48
|
+
{{ site.author }}
|
49
|
+
{% endif %}
|
50
|
+
on
|
51
|
+
{{ post.date | date: '%B %d, %Y' }}</p>
|
52
|
+
</article>
|
53
|
+
|
54
|
+
<hr>
|
55
|
+
|
56
|
+
{% endfor %}
|
57
|
+
|
58
|
+
<!-- Pager -->
|
59
|
+
<div class="clearfix">
|
60
|
+
<a class="btn btn-primary float-right" href="{{"/posts" | relative_url }}">View All Posts →</a>
|
61
|
+
</div>
|
62
|
+
|
63
|
+
</div>
|
64
|
+
</div>
|
65
|
+
</div>
|
data/_layouts/page.html
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
---
|
4
|
+
|
5
|
+
<!-- Page Header -->
|
6
|
+
{% if page.background %}
|
7
|
+
<header class="masthead" style="background-image: url('{{ page.background | prepend: site.baseurl | replace: '//', '/' }}')">
|
8
|
+
{% else %}
|
9
|
+
<header class="masthead">
|
10
|
+
{% endif %}
|
11
|
+
<div class="overlay"></div>
|
12
|
+
<div class="container">
|
13
|
+
<div class="row">
|
14
|
+
<div class="col-lg-8 col-md-10 mx-auto">
|
15
|
+
<div class="page-heading">
|
16
|
+
<h1>{{ page.title }}</h1>
|
17
|
+
{% if page.description %}
|
18
|
+
<span class="subheading">{{ page.description }}</span>
|
19
|
+
{% endif %}
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
</div>
|
24
|
+
</header>
|
25
|
+
|
26
|
+
<div class="container">
|
27
|
+
<div class="row">
|
28
|
+
<div class="col-lg-8 col-md-10 mx-auto">
|
29
|
+
|
30
|
+
{{ content }}
|
31
|
+
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
</div>
|
data/_layouts/post.html
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
---
|
4
|
+
|
5
|
+
<!-- Page Header -->
|
6
|
+
{% if page.background %}
|
7
|
+
<header class="masthead" style="background-image: url('{{ page.background | prepend: site.baseurl | replace: '//', '/' }}')">
|
8
|
+
{% else %}
|
9
|
+
<header class="masthead">
|
10
|
+
{% endif %}
|
11
|
+
<div class="overlay"></div>
|
12
|
+
<div class="container">
|
13
|
+
<div class="row">
|
14
|
+
<div class="col-lg-8 col-md-10 mx-auto">
|
15
|
+
<div class="post-heading">
|
16
|
+
<h1>{{ page.title }}</h1>
|
17
|
+
{% if page.subtitle %}
|
18
|
+
<h2 class="subheading">{{ page.subtitle }}</h2>
|
19
|
+
{% endif %}
|
20
|
+
<span class="meta">Posted by
|
21
|
+
{% if page.author %}
|
22
|
+
<a href="#">{{page.author}}</a>
|
23
|
+
{% endif %}
|
24
|
+
on {{ page.date | date: '%B %d, %Y' }}</span>
|
25
|
+
</div>
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
</header>
|
30
|
+
|
31
|
+
<div class="container">
|
32
|
+
<div class="row">
|
33
|
+
<div class="col-lg-8 col-md-10 mx-auto">
|
34
|
+
|
35
|
+
{{ content }}
|
36
|
+
|
37
|
+
<hr>
|
38
|
+
|
39
|
+
<div class="clearfix">
|
40
|
+
|
41
|
+
{% if page.previous.url %}
|
42
|
+
<a class="btn btn-primary float-left" href="{{ page.previous.url | prepend: site.baseurl | replace: '//', '/' }}" data-toggle="tooltip" data-placement="top" title="{{ page.previous.title }}">← Previous<span class="d-none d-md-inline"> Post</span></a>
|
43
|
+
{% endif %}
|
44
|
+
{% if page.next.url %}
|
45
|
+
<a class="btn btn-primary float-right" href="{{ page.next.url | prepend: site.baseurl | replace: '//', '/' }}" data-toggle="tooltip" data-placement="top" title="{{ page.next.title }}">Next<span class="d-none d-md-inline"> Post</span> →</a>
|
46
|
+
{% endif %}
|
47
|
+
|
48
|
+
</div>
|
49
|
+
|
50
|
+
</div>
|
51
|
+
</div>
|
52
|
+
</div>
|
data/_sass/styles.scss
ADDED
data/assets/main.scss
ADDED
data/assets/scripts.js
ADDED