enzanki-website-template 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/assets/css/main.css CHANGED
@@ -1,63 +1,63 @@
1
- body {
2
- padding-top: 55px;
3
- padding-bottom: 20px;
4
- }
5
- :target:before, .thumbnail:before {
6
- content: "";
7
- display: block;
8
- height: 55px; /* fixed header height*/
9
- margin: -55px 0 0; /* negative fixed header height */
10
- }
11
-
12
- .navbar-brand>.avatar {
13
- border-radius: 2px;
14
- }
15
-
16
- /* Code below is modified from http://stackoverflow.com/a/38118591/6820516 */
17
-
18
- .marquee {
19
- width: 100%;
20
- left: 0px;
21
- position: fixed;
22
- margin: 0 auto;
23
- white-space: nowrap;
24
- overflow: hidden;
25
- }
26
- .marquee p {
27
- display: inline-block;
28
- padding-left: 100%;
29
- text-indent: 0;
30
- animation: marquee linear infinite;
31
- }
32
-
33
- @keyframes marquee {
34
- 0% {
35
- transform: translate(0%, 0);
36
- }
37
- 100% {
38
- transform: translate(-100%, 0);
39
- }
40
- }
41
-
42
- /* End modified code.*/
43
-
44
- /* Code below is modified from http://codepen.io/ashblue/pen/mCtuA/ */
45
-
46
- .table-editable {
47
- position: relative;
48
- }
49
-
50
- .table-remove {
51
- color: #700;
52
- cursor: pointer;
53
- }
54
-
55
- .table-add {
56
- color: #070;
57
- cursor: pointer;
58
- position: absolute;
59
- top: 8px;
60
- right: 0;
61
- }
62
-
63
- /* End modified code. */
1
+ body {
2
+ padding-top: 55px;
3
+ padding-bottom: 20px;
4
+ }
5
+ :target:before, .thumbnail:before {
6
+ content: "";
7
+ display: block;
8
+ height: 55px; /* fixed header height*/
9
+ margin: -55px 0 0; /* negative fixed header height */
10
+ }
11
+
12
+ .navbar-brand>.avatar {
13
+ border-radius: 2px;
14
+ }
15
+
16
+ /* Code below is modified from http://stackoverflow.com/a/38118591/6820516 */
17
+
18
+ .marquee {
19
+ width: 100%;
20
+ left: 0px;
21
+ position: fixed;
22
+ margin: 0 auto;
23
+ white-space: nowrap;
24
+ overflow: hidden;
25
+ }
26
+ .marquee p {
27
+ display: inline-block;
28
+ padding-left: 100%;
29
+ text-indent: 0;
30
+ animation: marquee linear infinite;
31
+ }
32
+
33
+ @keyframes marquee {
34
+ 0% {
35
+ transform: translate(0%, 0);
36
+ }
37
+ 100% {
38
+ transform: translate(-100%, 0);
39
+ }
40
+ }
41
+
42
+ /* End modified code.*/
43
+
44
+ /* Code below is modified from http://codepen.io/ashblue/pen/mCtuA/ */
45
+
46
+ .table-editable {
47
+ position: relative;
48
+ }
49
+
50
+ .table-remove {
51
+ color: #700;
52
+ cursor: pointer;
53
+ }
54
+
55
+ .table-add {
56
+ color: #070;
57
+ cursor: pointer;
58
+ position: absolute;
59
+ top: 8px;
60
+ right: 0;
61
+ }
62
+
63
+ /* End modified code. */
data/assets/js/live.js CHANGED
@@ -1,237 +1,237 @@
1
- ---
2
- ---
3
-
4
- /*
5
- Live.js - One script closer to Designing in the Browser
6
- Written for Handcraft.com by Martin Kool (@mrtnkl).
7
-
8
- Version 4.
9
- Recent change: Made stylesheet and mimetype checks case insensitive.
10
-
11
- http://livejs.com
12
- http://livejs.com/license (MIT)
13
- @livejs
14
-
15
- Include live.js#css to monitor css changes only.
16
- Include live.js#js to monitor js changes only.
17
- Include live.js#html to monitor html changes only.
18
- Mix and match to monitor a preferred combination such as live.js#html,css
19
-
20
- By default, just include live.js to monitor all css, js and html changes.
21
-
22
- Live.js can also be loaded as a bookmarklet. It is best to only use it for CSS then,
23
- as a page reload due to a change in html or css would not re-include the bookmarklet.
24
- To monitor CSS and be notified that it has loaded, include it as: live.js#css,notify
25
- */
26
- (function () {
27
-
28
- var headers = { "Etag": 1, "Last-Modified": 1, "Content-Length": 1, "Content-Type": 1 },
29
- resources = {},
30
- pendingRequests = {},
31
- currentLinkElements = {},
32
- oldLinkElements = {},
33
- interval = {{ page.live-reload-time | default: site.live-reload-time | default: 5000 }},
34
- loaded = false,
35
- active = { "html": 1, "css": 1, "js": 1 };
36
-
37
- var Live = {
38
-
39
- // performs a cycle per interval
40
- heartbeat: function () {
41
- if (document.body) {
42
- // make sure all resources are loaded on first activation
43
- if (!loaded) Live.loadresources();
44
- Live.checkForChanges();
45
- }
46
- setTimeout(Live.heartbeat, interval);
47
- },
48
-
49
- // loads all local css and js resources upon first activation
50
- loadresources: function () {
51
-
52
- // helper method to assert if a given url is local
53
- function isLocal(url) {
54
- var loc = document.location,
55
- reg = new RegExp("^\\.|^\/(?!\/)|^[\\w]((?!://).)*$|" + loc.protocol + "//" + loc.host);
56
- return url.match(reg);
57
- }
58
-
59
- // gather all resources
60
- var scripts = document.getElementsByTagName("script"),
61
- links = document.getElementsByTagName("link"),
62
- uris = [];
63
-
64
- // track local js urls
65
- for (var i = 0; i < scripts.length; i++) {
66
- var script = scripts[i], src = script.getAttribute("src");
67
- if (src && isLocal(src))
68
- uris.push(src);
69
- if (src && src.match(/\blive.js#/)) {
70
- for (var type in active)
71
- active[type] = src.match("[#,|]" + type) != null
72
- if (src.match("notify"))
73
- alert("Live.js is loaded.");
74
- }
75
- }
76
- if (!active.js) uris = [];
77
- if (active.html) uris.push(document.location.href);
78
-
79
- // track local css urls
80
- for (var i = 0; i < links.length && active.css; i++) {
81
- var link = links[i], rel = link.getAttribute("rel"), href = link.getAttribute("href", 2);
82
- if (href && rel && rel.match(new RegExp("stylesheet", "i")) && isLocal(href)) {
83
- uris.push(href);
84
- currentLinkElements[href] = link;
85
- }
86
- }
87
-
88
- // initialize the resources info
89
- for (var i = 0; i < uris.length; i++) {
90
- var url = uris[i];
91
- Live.getHead(url, function (url, info) {
92
- resources[url] = info;
93
- });
94
- }
95
-
96
- // add rule for morphing between old and new css files
97
- var head = document.getElementsByTagName("head")[0],
98
- style = document.createElement("style"),
99
- rule = "transition: all .3s ease-out;"
100
- css = [".livejs-loading * { ", rule, " -webkit-", rule, "-moz-", rule, "-o-", rule, "}"].join('');
101
- style.setAttribute("type", "text/css");
102
- head.appendChild(style);
103
- style.styleSheet ? style.styleSheet.cssText = css : style.appendChild(document.createTextNode(css));
104
-
105
- // yep
106
- loaded = true;
107
- },
108
-
109
- // check all tracking resources for changes
110
- checkForChanges: function () {
111
- for (var url in resources) {
112
- if (pendingRequests[url])
113
- continue;
114
-
115
- Live.getHead(url, function (url, newInfo) {
116
- var oldInfo = resources[url],
117
- hasChanged = false;
118
- resources[url] = newInfo;
119
- for (var header in oldInfo) {
120
- // do verification based on the header type
121
- var oldValue = oldInfo[header],
122
- newValue = newInfo[header],
123
- contentType = newInfo["Content-Type"];
124
- switch (header.toLowerCase()) {
125
- case "etag":
126
- if (!newValue) break;
127
- // fall through to default
128
- default:
129
- hasChanged = oldValue != newValue;
130
- break;
131
- }
132
- // if changed, act
133
- if (hasChanged) {
134
- Live.refreshResource(url, contentType);
135
- break;
136
- }
137
- }
138
- });
139
- }
140
- },
141
-
142
- // act upon a changed url of certain content type
143
- refreshResource: function (url, type) {
144
- switch (type.toLowerCase()) {
145
- // css files can be reloaded dynamically by replacing the link element
146
- case "text/css":
147
- var link = currentLinkElements[url],
148
- html = document.body.parentNode,
149
- head = link.parentNode,
150
- next = link.nextSibling,
151
- newLink = document.createElement("link");
152
-
153
- html.className = html.className.replace(/\s*livejs\-loading/gi, '') + ' livejs-loading';
154
- newLink.setAttribute("type", "text/css");
155
- newLink.setAttribute("rel", "stylesheet");
156
- newLink.setAttribute("href", url + "?now=" + new Date() * 1);
157
- next ? head.insertBefore(newLink, next) : head.appendChild(newLink);
158
- currentLinkElements[url] = newLink;
159
- oldLinkElements[url] = link;
160
-
161
- // schedule removal of the old link
162
- Live.removeoldLinkElements();
163
- break;
164
-
165
- // check if an html resource is our current url, then reload
166
- case "text/html":
167
- if (url != document.location.href)
168
- return;
169
-
170
- // local javascript changes cause a reload as well
171
- case "text/javascript":
172
- case "application/javascript":
173
- case "application/x-javascript":
174
- document.location.reload();
175
- }
176
- },
177
-
178
- // removes the old stylesheet rules only once the new one has finished loading
179
- removeoldLinkElements: function () {
180
- var pending = 0;
181
- for (var url in oldLinkElements) {
182
- // if this sheet has any cssRules, delete the old link
183
- try {
184
- var link = currentLinkElements[url],
185
- oldLink = oldLinkElements[url],
186
- html = document.body.parentNode,
187
- sheet = link.sheet || link.styleSheet,
188
- rules = sheet.rules || sheet.cssRules;
189
- if (rules.length >= 0) {
190
- oldLink.parentNode.removeChild(oldLink);
191
- delete oldLinkElements[url];
192
- setTimeout(function () {
193
- html.className = html.className.replace(/\s*livejs\-loading/gi, '');
194
- }, 100);
195
- }
196
- } catch (e) {
197
- pending++;
198
- }
199
- if (pending) setTimeout(Live.removeoldLinkElements, 50);
200
- }
201
- },
202
-
203
- // performs a HEAD request and passes the header info to the given callback
204
- getHead: function (url, callback) {
205
- pendingRequests[url] = true;
206
- var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XmlHttp");
207
- xhr.open("HEAD", url + "?reloadtime=" + new Date().getTime(), true);
208
- xhr.setRequestHeader("Cache-Control", "no-cache");
209
- xhr.onreadystatechange = function () {
210
- delete pendingRequests[url];
211
- if (xhr.readyState == 4 && xhr.status != 304) {
212
- xhr.getAllResponseHeaders();
213
- var info = {};
214
- for (var h in headers) {
215
- var value = xhr.getResponseHeader(h);
216
- // adjust the simple Etag variant to match on its significant part
217
- if (h.toLowerCase() == "etag" && value) value = value.replace(/^W\//, '');
218
- if (h.toLowerCase() == "content-type" && value) value = value.replace(/^(.*?);.*?$/i, "$1");
219
- info[h] = value;
220
- }
221
- callback(url, info);
222
- }
223
- }
224
- xhr.send();
225
- }
226
- };
227
-
228
- // start listening
229
- if (document.location.protocol != "file:") {
230
- if (!window.liveJsLoaded)
231
- Live.heartbeat();
232
-
233
- window.liveJsLoaded = true;
234
- }
235
- else if (window.console)
236
- console.log("Live.js doesn't support the file protocol. It needs http.");
237
- })();
1
+ ---
2
+ ---
3
+
4
+ /*
5
+ Live.js - One script closer to Designing in the Browser
6
+ Written for Handcraft.com by Martin Kool (@mrtnkl).
7
+
8
+ Version 4.
9
+ Recent change: Made stylesheet and mimetype checks case insensitive.
10
+
11
+ http://livejs.com
12
+ http://livejs.com/license (MIT)
13
+ @livejs
14
+
15
+ Include live.js#css to monitor css changes only.
16
+ Include live.js#js to monitor js changes only.
17
+ Include live.js#html to monitor html changes only.
18
+ Mix and match to monitor a preferred combination such as live.js#html,css
19
+
20
+ By default, just include live.js to monitor all css, js and html changes.
21
+
22
+ Live.js can also be loaded as a bookmarklet. It is best to only use it for CSS then,
23
+ as a page reload due to a change in html or css would not re-include the bookmarklet.
24
+ To monitor CSS and be notified that it has loaded, include it as: live.js#css,notify
25
+ */
26
+ (function () {
27
+
28
+ var headers = { "Etag": 1, "Last-Modified": 1, "Content-Length": 1, "Content-Type": 1 },
29
+ resources = {},
30
+ pendingRequests = {},
31
+ currentLinkElements = {},
32
+ oldLinkElements = {},
33
+ interval = {{ page.live-reload-time | default: site.live-reload-time | default: 5000 }},
34
+ loaded = false,
35
+ active = { "html": 1, "css": 1, "js": 1 };
36
+
37
+ var Live = {
38
+
39
+ // performs a cycle per interval
40
+ heartbeat: function () {
41
+ if (document.body) {
42
+ // make sure all resources are loaded on first activation
43
+ if (!loaded) Live.loadresources();
44
+ Live.checkForChanges();
45
+ }
46
+ setTimeout(Live.heartbeat, interval);
47
+ },
48
+
49
+ // loads all local css and js resources upon first activation
50
+ loadresources: function () {
51
+
52
+ // helper method to assert if a given url is local
53
+ function isLocal(url) {
54
+ var loc = document.location,
55
+ reg = new RegExp("^\\.|^\/(?!\/)|^[\\w]((?!://).)*$|" + loc.protocol + "//" + loc.host);
56
+ return url.match(reg);
57
+ }
58
+
59
+ // gather all resources
60
+ var scripts = document.getElementsByTagName("script"),
61
+ links = document.getElementsByTagName("link"),
62
+ uris = [];
63
+
64
+ // track local js urls
65
+ for (var i = 0; i < scripts.length; i++) {
66
+ var script = scripts[i], src = script.getAttribute("src");
67
+ if (src && isLocal(src))
68
+ uris.push(src);
69
+ if (src && src.match(/\blive.js#/)) {
70
+ for (var type in active)
71
+ active[type] = src.match("[#,|]" + type) != null
72
+ if (src.match("notify"))
73
+ alert("Live.js is loaded.");
74
+ }
75
+ }
76
+ if (!active.js) uris = [];
77
+ if (active.html) uris.push(document.location.href);
78
+
79
+ // track local css urls
80
+ for (var i = 0; i < links.length && active.css; i++) {
81
+ var link = links[i], rel = link.getAttribute("rel"), href = link.getAttribute("href", 2);
82
+ if (href && rel && rel.match(new RegExp("stylesheet", "i")) && isLocal(href)) {
83
+ uris.push(href);
84
+ currentLinkElements[href] = link;
85
+ }
86
+ }
87
+
88
+ // initialize the resources info
89
+ for (var i = 0; i < uris.length; i++) {
90
+ var url = uris[i];
91
+ Live.getHead(url, function (url, info) {
92
+ resources[url] = info;
93
+ });
94
+ }
95
+
96
+ // add rule for morphing between old and new css files
97
+ var head = document.getElementsByTagName("head")[0],
98
+ style = document.createElement("style"),
99
+ rule = "transition: all .3s ease-out;"
100
+ css = [".livejs-loading * { ", rule, " -webkit-", rule, "-moz-", rule, "-o-", rule, "}"].join('');
101
+ style.setAttribute("type", "text/css");
102
+ head.appendChild(style);
103
+ style.styleSheet ? style.styleSheet.cssText = css : style.appendChild(document.createTextNode(css));
104
+
105
+ // yep
106
+ loaded = true;
107
+ },
108
+
109
+ // check all tracking resources for changes
110
+ checkForChanges: function () {
111
+ for (var url in resources) {
112
+ if (pendingRequests[url])
113
+ continue;
114
+
115
+ Live.getHead(url, function (url, newInfo) {
116
+ var oldInfo = resources[url],
117
+ hasChanged = false;
118
+ resources[url] = newInfo;
119
+ for (var header in oldInfo) {
120
+ // do verification based on the header type
121
+ var oldValue = oldInfo[header],
122
+ newValue = newInfo[header],
123
+ contentType = newInfo["Content-Type"];
124
+ switch (header.toLowerCase()) {
125
+ case "etag":
126
+ if (!newValue) break;
127
+ // fall through to default
128
+ default:
129
+ hasChanged = oldValue != newValue;
130
+ break;
131
+ }
132
+ // if changed, act
133
+ if (hasChanged) {
134
+ Live.refreshResource(url, contentType);
135
+ break;
136
+ }
137
+ }
138
+ });
139
+ }
140
+ },
141
+
142
+ // act upon a changed url of certain content type
143
+ refreshResource: function (url, type) {
144
+ switch (type.toLowerCase()) {
145
+ // css files can be reloaded dynamically by replacing the link element
146
+ case "text/css":
147
+ var link = currentLinkElements[url],
148
+ html = document.body.parentNode,
149
+ head = link.parentNode,
150
+ next = link.nextSibling,
151
+ newLink = document.createElement("link");
152
+
153
+ html.className = html.className.replace(/\s*livejs\-loading/gi, '') + ' livejs-loading';
154
+ newLink.setAttribute("type", "text/css");
155
+ newLink.setAttribute("rel", "stylesheet");
156
+ newLink.setAttribute("href", url + "?now=" + new Date() * 1);
157
+ next ? head.insertBefore(newLink, next) : head.appendChild(newLink);
158
+ currentLinkElements[url] = newLink;
159
+ oldLinkElements[url] = link;
160
+
161
+ // schedule removal of the old link
162
+ Live.removeoldLinkElements();
163
+ break;
164
+
165
+ // check if an html resource is our current url, then reload
166
+ case "text/html":
167
+ if (url != document.location.href)
168
+ return;
169
+
170
+ // local javascript changes cause a reload as well
171
+ case "text/javascript":
172
+ case "application/javascript":
173
+ case "application/x-javascript":
174
+ document.location.reload();
175
+ }
176
+ },
177
+
178
+ // removes the old stylesheet rules only once the new one has finished loading
179
+ removeoldLinkElements: function () {
180
+ var pending = 0;
181
+ for (var url in oldLinkElements) {
182
+ // if this sheet has any cssRules, delete the old link
183
+ try {
184
+ var link = currentLinkElements[url],
185
+ oldLink = oldLinkElements[url],
186
+ html = document.body.parentNode,
187
+ sheet = link.sheet || link.styleSheet,
188
+ rules = sheet.rules || sheet.cssRules;
189
+ if (rules.length >= 0) {
190
+ oldLink.parentNode.removeChild(oldLink);
191
+ delete oldLinkElements[url];
192
+ setTimeout(function () {
193
+ html.className = html.className.replace(/\s*livejs\-loading/gi, '');
194
+ }, 100);
195
+ }
196
+ } catch (e) {
197
+ pending++;
198
+ }
199
+ if (pending) setTimeout(Live.removeoldLinkElements, 50);
200
+ }
201
+ },
202
+
203
+ // performs a HEAD request and passes the header info to the given callback
204
+ getHead: function (url, callback) {
205
+ pendingRequests[url] = true;
206
+ var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XmlHttp");
207
+ xhr.open("HEAD", url + "?reloadtime=" + new Date().getTime(), true);
208
+ xhr.setRequestHeader("Cache-Control", "no-cache");
209
+ xhr.onreadystatechange = function () {
210
+ delete pendingRequests[url];
211
+ if (xhr.readyState == 4 && xhr.status != 304) {
212
+ xhr.getAllResponseHeaders();
213
+ var info = {};
214
+ for (var h in headers) {
215
+ var value = xhr.getResponseHeader(h);
216
+ // adjust the simple Etag variant to match on its significant part
217
+ if (h.toLowerCase() == "etag" && value) value = value.replace(/^W\//, '');
218
+ if (h.toLowerCase() == "content-type" && value) value = value.replace(/^(.*?);.*?$/i, "$1");
219
+ info[h] = value;
220
+ }
221
+ callback(url, info);
222
+ }
223
+ }
224
+ xhr.send();
225
+ }
226
+ };
227
+
228
+ // start listening
229
+ if (document.location.protocol != "file:") {
230
+ if (!window.liveJsLoaded)
231
+ Live.heartbeat();
232
+
233
+ window.liveJsLoaded = true;
234
+ }
235
+ else if (window.console)
236
+ console.log("Live.js doesn't support the file protocol. It needs http.");
237
+ })();