radios-comunitarias-jekyll-theme 0.1.3 → 0.1.4
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.
- checksums.yaml +4 -4
- data/_layouts/default.html +1 -0
- data/_layouts/default.html.orig +62 -0
- data/_layouts/home.html +4 -2
- data/_sass/embed.scss +5 -0
- data/assets/css/styles.scss +1 -0
- data/assets/css/styles.scss.orig +76 -0
- data/assets/js/script.js +40 -10
- data/assets/js/script.js.orig +99 -0
- metadata +35 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c615225045f2989ac6cd59026cf6ce39bcd0e1b4d482e34ee23fdaa6d0fac1ff
|
4
|
+
data.tar.gz: f3472621b2a2b7aded835a03bb7a9e3362fcb1354163b46f3740e0bc14098164
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d3c6a0695901bacf2c8b1b74b71b797db4c4faeb2cd963aa8aa6dc7f4f1d3fa49a8c001aa9cf9415f0509b0383244ad6373f36d896175842e4b3e323ecdd9c3
|
7
|
+
data.tar.gz: e60811bf3f8f8873928e48481c92782c75eef36ed8e2265d56d2ec71c382e949ba51c6ee46327d0b285b9d49e199eb83759fb97cac738acb205fb84247abdfa7
|
data/_layouts/default.html
CHANGED
@@ -7,6 +7,7 @@
|
|
7
7
|
<meta content="width=device-width, initial-scale=1.0" name="viewport">
|
8
8
|
<meta name="theme-color" content="white"/>
|
9
9
|
<meta name="color-scheme" content="light"/>
|
10
|
+
<meta name="referrer" content="strict-origin-when-cross-origin"/>
|
10
11
|
|
11
12
|
<link href="assets/css/styles.css" rel="stylesheet">
|
12
13
|
<script defer type="text/javascript" src="assets/js/script.js"></script>
|
@@ -0,0 +1,62 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="{{ site.lang }}" dir="{{ site.dir }}">
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8">
|
5
|
+
<base href="{% base %}" />
|
6
|
+
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
|
7
|
+
<meta content="width=device-width, initial-scale=1.0" name="viewport">
|
8
|
+
<meta name="theme-color" content="white"/>
|
9
|
+
<meta name="color-scheme" content="light"/>
|
10
|
+
<<<<<<< HEAD
|
11
|
+
<meta name="referrer" content="strict-origin-when-cross-origin">
|
12
|
+
=======
|
13
|
+
<meta name="referrer" content="strict-origin-when-cross-origin"/>
|
14
|
+
>>>>>>> ae133915c865b686fcb7071e1cd2c8c580cb3b8c
|
15
|
+
|
16
|
+
<link href="assets/css/styles.css" rel="stylesheet">
|
17
|
+
<script defer type="text/javascript" src="assets/js/script.js"></script>
|
18
|
+
|
19
|
+
{% seo %}
|
20
|
+
{% feed_meta %}
|
21
|
+
|
22
|
+
{%- if page.locales -%}
|
23
|
+
{% for locale in page.locales %}
|
24
|
+
<link
|
25
|
+
rel="alternate"
|
26
|
+
hreflang="{{ locale.collection }}"
|
27
|
+
href="{{ site.url }}{{ locale.collection }}/{{ locale.url }}" />
|
28
|
+
{% endfor %}
|
29
|
+
{%- else -%}
|
30
|
+
{% for locale in site.locales %}
|
31
|
+
{% if locale == site.locale %}{% continue %}{% endif %}
|
32
|
+
<link
|
33
|
+
rel="alternate"
|
34
|
+
hreflang="{{ locale }}"
|
35
|
+
href="{{ site.url }}{{ locale }}/" />
|
36
|
+
{% endfor %}
|
37
|
+
{%- endif -%}
|
38
|
+
</head>
|
39
|
+
{% comment %}
|
40
|
+
El sitio es una columna grande y el pie está siempre al final, para
|
41
|
+
imprimirlo lo mostramos como un bloque.
|
42
|
+
|
43
|
+
El alto mínimo del sitio es el alto de la pantalla.
|
44
|
+
{% endcomment %}
|
45
|
+
<body class="d-flex flex-column justify-content-between d-print-block min-vh-100">
|
46
|
+
{% include_cached navbar.html %}
|
47
|
+
|
48
|
+
{% comment %}
|
49
|
+
El espacio principal se expande para ocupar todo el alto
|
50
|
+
disponible y empuja el pie al fondo.
|
51
|
+
{% endcomment %}
|
52
|
+
<main class="flex-grow-1">
|
53
|
+
<div class="row no-gutters align-items-center justify-content-center d-print-block">
|
54
|
+
<div class="col-10">
|
55
|
+
{{ content }}
|
56
|
+
</div>
|
57
|
+
</div>
|
58
|
+
</main>
|
59
|
+
|
60
|
+
{% include_cached footer.html %}
|
61
|
+
</body>
|
62
|
+
</html>
|
data/_layouts/home.html
CHANGED
@@ -8,7 +8,9 @@ layout: default
|
|
8
8
|
{% endcomment %}
|
9
9
|
|
10
10
|
<section>
|
11
|
-
{%- assign
|
11
|
+
{%- assign posts = site.posts | where: 'layout', 'post' -%}
|
12
|
+
{%- assign post = posts | first -%}
|
13
|
+
|
12
14
|
{% include_cached post.html page=post %}
|
13
15
|
|
14
16
|
<footer>
|
@@ -16,7 +18,7 @@ layout: default
|
|
16
18
|
<div class="col-12 col-md-6">
|
17
19
|
<h2>{{ site.i18n.other_posts }}</h2>
|
18
20
|
<div>
|
19
|
-
{% for post in
|
21
|
+
{% for post in posts offset: 2 %}
|
20
22
|
<h3>
|
21
23
|
<a href="{{ post.url }}">{{ post.title }}</a>
|
22
24
|
</h3>
|
data/_sass/embed.scss
ADDED
data/assets/css/styles.scss
CHANGED
@@ -0,0 +1,76 @@
|
|
1
|
+
---
|
2
|
+
# Ponemos un frontmatter porque queremos que Jekyll procese este archivo
|
3
|
+
---
|
4
|
+
|
5
|
+
// El primer artículo que sea de tipo radio
|
6
|
+
{%- assign radio = site.posts | find: 'layout', 'radio' -%}
|
7
|
+
|
8
|
+
// Pasar variables de Liquid a SASS
|
9
|
+
$navbar-background: {{ radio.navbar_background_color | default: '#6dc381' }};
|
10
|
+
$navbar-foreground: {{ radio.navbar_foreground_color | default: '#241f31' }};
|
11
|
+
$social-foreground: {{ radio.social_foreground_color | default: 'white' }};
|
12
|
+
|
13
|
+
// Redefinir los colores de Bootstrap en base a los elegidos, esto
|
14
|
+
// cambia recursivamente algunas sombras y todo
|
15
|
+
$body-bg: {{ radio.background_color | default: 'white' }};
|
16
|
+
$body-color: {{ radio.foreground_color | default: '#241f31' }};
|
17
|
+
$link-color: $navbar-background;
|
18
|
+
|
19
|
+
// Tamaño del nombre de la radio
|
20
|
+
$navbar-brand-font-size: 1rem;
|
21
|
+
|
22
|
+
/*
|
23
|
+
* XXX: Solo importar los archivos necesarios de bootstrap para
|
24
|
+
* facilitar la reducción de CSS. Por ahora pedimos todo para poder
|
25
|
+
* empezar a trabajar en el HTML sin pensar en CSS.
|
26
|
+
*
|
27
|
+
* Los archivos se encuentran en node_modules/bootstrap/scss
|
28
|
+
*/
|
29
|
+
@import "bootstrap/scss/bootstrap";
|
30
|
+
@import "fork-awesome/scss/fork-awesome";
|
31
|
+
@import "accessibility";
|
32
|
+
@import "helpers";
|
33
|
+
@import "toggler";
|
34
|
+
@import "share_box";
|
35
|
+
<<<<<<< HEAD
|
36
|
+
|
37
|
+
// Lo que vaya a llevar los colores de la barra de navegación
|
38
|
+
.navbar-theme {
|
39
|
+
background-color: $navbar-background !important;
|
40
|
+
color: $navbar-foreground !important;
|
41
|
+
|
42
|
+
a {
|
43
|
+
color: $navbar-foreground;
|
44
|
+
|
45
|
+
@include hover() {
|
46
|
+
color: darken($navbar-foreground, 15%) !important;
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
// Define la clase que va a llevar el color de los botones de redes sociales
|
51
|
+
// XXX: Va dentro de navbar-theme porque es el único lugar donde los
|
52
|
+
// vamos a usar por ahora.
|
53
|
+
.social-theme {
|
54
|
+
color: $social-foreground !important;
|
55
|
+
|
56
|
+
// Cambiar de color los botones al pasar por encima
|
57
|
+
// XXX: La función viene de Bootstrap, por eso está la definición
|
58
|
+
// después de incluirlo.
|
59
|
+
@include hover() {
|
60
|
+
color: darken($social-foreground, 15%) !important;
|
61
|
+
}
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
.turbolinks-progress-bar {
|
66
|
+
background-color: $navbar-foreground;
|
67
|
+
}
|
68
|
+
|
69
|
+
iframe {
|
70
|
+
border: 0;
|
71
|
+
width: 100%;
|
72
|
+
min-height: 480px;
|
73
|
+
}
|
74
|
+
=======
|
75
|
+
@import "embed";
|
76
|
+
>>>>>>> ae133915c865b686fcb7071e1cd2c8c580cb3b8c
|
data/assets/js/script.js
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
---
|
2
2
|
---
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
4
|
+
const loadEvent = () => {
|
5
|
+
try {
|
6
|
+
if (Turbolinks) return 'turbolinks:load'
|
7
|
+
} catch {
|
8
|
+
return 'DOMContentLoaded'
|
9
|
+
}
|
10
|
+
}
|
10
11
|
|
11
12
|
// Inicia y gestiona el stream
|
12
13
|
const streaming = (element) => {
|
@@ -23,8 +24,7 @@ const streaming = (element) => {
|
|
23
24
|
element.play()
|
24
25
|
}
|
25
26
|
|
26
|
-
|
27
|
-
document.addEventListener('turbolinks:load', () => {
|
27
|
+
document.addEventListener(loadEvent(), () => {
|
28
28
|
const transmission = document.querySelector('#transmission')
|
29
29
|
|
30
30
|
if ('mediaSession' in navigator) {
|
@@ -48,5 +48,35 @@ document.addEventListener('turbolinks:load', () => {
|
|
48
48
|
// TODO: Agregar los tracks
|
49
49
|
transmission.addEventListener('ended', event => streaming(transmission))
|
50
50
|
|
51
|
-
document.querySelectorAll(
|
52
|
-
|
51
|
+
document.querySelectorAll('.share').forEach(share => {
|
52
|
+
share.addEventListener('click', event => {
|
53
|
+
if (!Navigator.share) return;
|
54
|
+
|
55
|
+
event.preventDefault();
|
56
|
+
event.stopPropagation();
|
57
|
+
|
58
|
+
const title = document.querySelector('title').text;
|
59
|
+
|
60
|
+
try {
|
61
|
+
const text = document.querySelector('meta[property="og:description"]').content;
|
62
|
+
} catch {
|
63
|
+
const text = '';
|
64
|
+
}
|
65
|
+
|
66
|
+
try {
|
67
|
+
const url = document.querySelector('link[rel=canonical]').href;
|
68
|
+
} catch {
|
69
|
+
const url = document.location.href;
|
70
|
+
}
|
71
|
+
|
72
|
+
const data = { title: title, text: text, url: url };
|
73
|
+
|
74
|
+
if (Navigator.canShare(data)) Navigator.share(data).then();
|
75
|
+
});
|
76
|
+
});
|
77
|
+
|
78
|
+
document.querySelectorAll("a[href^='http://'],a[href^='https://'],a[href^='//']").forEach(a => {
|
79
|
+
a.rel = "noopener";
|
80
|
+
a.target = "_blank";
|
81
|
+
});
|
82
|
+
});
|
@@ -0,0 +1,99 @@
|
|
1
|
+
---
|
2
|
+
---
|
3
|
+
|
4
|
+
<<<<<<< HEAD
|
5
|
+
{% comment %}
|
6
|
+
TODO: Asignar esta variable una sola vez!
|
7
|
+
{% endcomment %}
|
8
|
+
{%- assign radio = site.posts | find: 'layout', 'radio' -%}
|
9
|
+
|
10
|
+
{% turbolinks %}
|
11
|
+
|
12
|
+
// Inicia y gestiona el stream
|
13
|
+
const streaming = (element) => {
|
14
|
+
// Cambiar el src para que incluya un timestamp, esto engaña a Firefox
|
15
|
+
// a recargar el video cuando se corta en lugar de pensar que terminó
|
16
|
+
// la descarga y empezar a reproducir desde el principio.
|
17
|
+
element.querySelectorAll('source').forEach(source => {
|
18
|
+
// Obtener la URL completa hasta el ?
|
19
|
+
source.src = source.src.split('?')[0]+'?'+Date.now().toString()
|
20
|
+
})
|
21
|
+
|
22
|
+
// Empezar la reproducción
|
23
|
+
element.load()
|
24
|
+
element.play()
|
25
|
+
}
|
26
|
+
|
27
|
+
// Este es el evento que espera a que cargue todo el sitio
|
28
|
+
document.addEventListener('turbolinks:load', () => {
|
29
|
+
const transmission = document.querySelector('#transmission')
|
30
|
+
|
31
|
+
if ('mediaSession' in navigator) {
|
32
|
+
navigator.mediaSession.metadata = new MediaMetadata({
|
33
|
+
title: "{{ radio.description | escape }}",
|
34
|
+
artist: "{{ radio.title | escape }}",
|
35
|
+
artwork: [
|
36
|
+
{
|
37
|
+
src: '{{ radio.logo.path | thumbnail: 192 }}',
|
38
|
+
sizes: '192x192',
|
39
|
+
type: 'image/{{ radio.logo.path | split: '.' | last }}'
|
40
|
+
},
|
41
|
+
],
|
42
|
+
})
|
43
|
+
|
44
|
+
navigator.mediaSession.setActionHandler('play', () => transmission.play())
|
45
|
+
navigator.mediaSession.setActionHandler('pause', () => transmission.pause())
|
46
|
+
}
|
47
|
+
|
48
|
+
// Volver a reproducir cuando se corte
|
49
|
+
// TODO: Agregar los tracks
|
50
|
+
transmission.addEventListener('ended', event => streaming(transmission))
|
51
|
+
|
52
|
+
document.querySelectorAll("a[href^='http://'],a[href^='https://'],a[href^='//']").forEach(a => {
|
53
|
+
a.rel = "noopener"
|
54
|
+
a.target = "_blank"
|
55
|
+
})
|
56
|
+
})
|
57
|
+
=======
|
58
|
+
const loadEvent = () => {
|
59
|
+
try {
|
60
|
+
if (Turbolinks) return 'turbolinks:load'
|
61
|
+
} catch {
|
62
|
+
return 'DOMContentLoaded'
|
63
|
+
}
|
64
|
+
}
|
65
|
+
|
66
|
+
document.addEventListener(loadEvent(), () => {
|
67
|
+
document.querySelectorAll('.share').forEach(share => {
|
68
|
+
share.addEventListener('click', event => {
|
69
|
+
if (!Navigator.share) return;
|
70
|
+
|
71
|
+
event.preventDefault();
|
72
|
+
event.stopPropagation();
|
73
|
+
|
74
|
+
const title = document.querySelector('title').text;
|
75
|
+
|
76
|
+
try {
|
77
|
+
const text = document.querySelector('meta[property="og:description"]').content;
|
78
|
+
} catch {
|
79
|
+
const text = '';
|
80
|
+
}
|
81
|
+
|
82
|
+
try {
|
83
|
+
const url = document.querySelector('link[rel=canonical]').href;
|
84
|
+
} catch {
|
85
|
+
const url = document.location.href;
|
86
|
+
}
|
87
|
+
|
88
|
+
const data = { title: title, text: text, url: url };
|
89
|
+
|
90
|
+
if (Navigator.canShare(data)) Navigator.share(data).then();
|
91
|
+
});
|
92
|
+
});
|
93
|
+
|
94
|
+
document.querySelectorAll("a[href^='http://'],a[href^='https://'],a[href^='//']").forEach(a => {
|
95
|
+
a.rel = "noopener";
|
96
|
+
a.target = "_blank";
|
97
|
+
});
|
98
|
+
});
|
99
|
+
>>>>>>> ae133915c865b686fcb7071e1cd2c8c580cb3b8c
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: radios-comunitarias-jekyll-theme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- f
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2020-
|
14
|
+
date: 2020-11-06 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: jekyll
|
@@ -181,6 +181,34 @@ dependencies:
|
|
181
181
|
- - "~>"
|
182
182
|
- !ruby/object:Gem::Version
|
183
183
|
version: '12.0'
|
184
|
+
- !ruby/object:Gem::Dependency
|
185
|
+
name: jekyll-gzip
|
186
|
+
requirement: !ruby/object:Gem::Requirement
|
187
|
+
requirements:
|
188
|
+
- - ">="
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: '0'
|
191
|
+
type: :development
|
192
|
+
prerelease: false
|
193
|
+
version_requirements: !ruby/object:Gem::Requirement
|
194
|
+
requirements:
|
195
|
+
- - ">="
|
196
|
+
- !ruby/object:Gem::Version
|
197
|
+
version: '0'
|
198
|
+
- !ruby/object:Gem::Dependency
|
199
|
+
name: jekyll-brotli
|
200
|
+
requirement: !ruby/object:Gem::Requirement
|
201
|
+
requirements:
|
202
|
+
- - ">="
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: '0'
|
205
|
+
type: :development
|
206
|
+
prerelease: false
|
207
|
+
version_requirements: !ruby/object:Gem::Requirement
|
208
|
+
requirements:
|
209
|
+
- - ">="
|
210
|
+
- !ruby/object:Gem::Version
|
211
|
+
version: '0'
|
184
212
|
description:
|
185
213
|
email:
|
186
214
|
- f@sutty.nl
|
@@ -243,18 +271,22 @@ files:
|
|
243
271
|
- _includes/text.html
|
244
272
|
- _includes/url.html
|
245
273
|
- _layouts/default.html
|
274
|
+
- _layouts/default.html.orig
|
246
275
|
- _layouts/home.html
|
247
276
|
- _layouts/post.html
|
248
277
|
- _layouts/radio.html
|
249
278
|
- _sass/accessibility.scss
|
279
|
+
- _sass/embed.scss
|
250
280
|
- _sass/helpers.scss
|
251
281
|
- _sass/share.html
|
252
282
|
- _sass/share_box.html
|
253
283
|
- _sass/share_box.scss
|
254
284
|
- _sass/toggler.scss
|
255
285
|
- assets/css/styles.scss
|
286
|
+
- assets/css/styles.scss.orig
|
256
287
|
- assets/fonts/forkawesome-webfont.woff2
|
257
288
|
- assets/js/script.js
|
289
|
+
- assets/js/script.js.orig
|
258
290
|
homepage: https://0xacab.org/sutty/jekyll/radios-comunitarias-jekyll-theme
|
259
291
|
licenses:
|
260
292
|
- Nonstandard
|
@@ -286,7 +318,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
286
318
|
- !ruby/object:Gem::Version
|
287
319
|
version: '0'
|
288
320
|
requirements: []
|
289
|
-
rubygems_version: 3.
|
321
|
+
rubygems_version: 3.1.2
|
290
322
|
signing_key:
|
291
323
|
specification_version: 4
|
292
324
|
summary: Theme for community radio
|