radios-comunitarias-jekyll-theme 0.1.0
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 +7 -0
- data/LICENSE.txt +168 -0
- data/README.md +113 -0
- data/_data/en.yml +38 -0
- data/_data/es.yml +61 -0
- data/_data/forms/contacto.yml +40 -0
- data/_data/layouts/post.yml +112 -0
- data/_data/layouts/radio.yml +165 -0
- data/_includes/boolean.html +30 -0
- data/_includes/contact.html +19 -0
- data/_includes/content.html +1 -0
- data/_includes/email.html +1 -0
- data/_includes/file.html +35 -0
- data/_includes/footer.html +28 -0
- data/_includes/form/boolean.html +1 -0
- data/_includes/form/content.html +1 -0
- data/_includes/form/email.html +1 -0
- data/_includes/form/file.html +1 -0
- data/_includes/form/hidden.html +1 -0
- data/_includes/form/image.html +1 -0
- data/_includes/form/input.html +1 -0
- data/_includes/form/markdown_content.html +1 -0
- data/_includes/form/number.html +1 -0
- data/_includes/form/predefined_array.html +1 -0
- data/_includes/form/section.html +1 -0
- data/_includes/form/separator.html +1 -0
- data/_includes/form/string.html +1 -0
- data/_includes/form/submit.html +1 -0
- data/_includes/form/tel.html +1 -0
- data/_includes/form/text.html +1 -0
- data/_includes/form/url.html +1 -0
- data/_includes/hidden.html +5 -0
- data/_includes/image.html +32 -0
- data/_includes/input.html +33 -0
- data/_includes/logo.html +5 -0
- data/_includes/markdown_content.html +1 -0
- data/_includes/navbar.html +78 -0
- data/_includes/number.html +1 -0
- data/_includes/post.html +118 -0
- data/_includes/predefined_array.html +39 -0
- data/_includes/reproductor.html +20 -0
- data/_includes/section.html +1 -0
- data/_includes/separator.html +1 -0
- data/_includes/share.html +28 -0
- data/_includes/share_box.html +13 -0
- data/_includes/string.html +3 -0
- data/_includes/submit.html +1 -0
- data/_includes/tel.html +1 -0
- data/_includes/text.html +32 -0
- data/_includes/url.html +1 -0
- data/_layouts/default.html +40 -0
- data/_layouts/home.html +30 -0
- data/_layouts/post.html +5 -0
- data/_layouts/radio.html +49 -0
- data/_sass/accessibility.scss +13 -0
- data/_sass/helpers.scss +54 -0
- data/_sass/share.html +12 -0
- data/_sass/share_box.html +16 -0
- data/_sass/share_box.scss +26 -0
- data/_sass/toggler.scss +39 -0
- data/assets/css/styles.scss +66 -0
- data/assets/fonts/forkawesome-webfont.woff2 +0 -0
- data/assets/js/script.js +50 -0
- metadata +279 -0
@@ -0,0 +1,165 @@
|
|
1
|
+
---
|
2
|
+
title:
|
3
|
+
type: 'string'
|
4
|
+
required: true
|
5
|
+
label:
|
6
|
+
es: 'Nombre de la radio'
|
7
|
+
en: "Radio's name"
|
8
|
+
help:
|
9
|
+
es: ''
|
10
|
+
en: ''
|
11
|
+
description:
|
12
|
+
type: 'text'
|
13
|
+
required: true
|
14
|
+
label:
|
15
|
+
es: 'Descripción corta de la radio'
|
16
|
+
en: "Radio's short description"
|
17
|
+
help:
|
18
|
+
es: ''
|
19
|
+
en: ''
|
20
|
+
logo:
|
21
|
+
type: 'image'
|
22
|
+
path:
|
23
|
+
label:
|
24
|
+
es: 'Logo'
|
25
|
+
en: 'Logo'
|
26
|
+
help:
|
27
|
+
es: ''
|
28
|
+
en: ''
|
29
|
+
description:
|
30
|
+
label:
|
31
|
+
es: 'Descripción del logo'
|
32
|
+
en: 'Logo description'
|
33
|
+
help:
|
34
|
+
es: Describe el logo para usuaries no videntes y buscadores
|
35
|
+
en: |
|
36
|
+
Describe the logo for blind or partially sighted users and
|
37
|
+
search engines
|
38
|
+
content:
|
39
|
+
type: 'markdown_content'
|
40
|
+
label:
|
41
|
+
es: 'Presentación de la radio'
|
42
|
+
en: 'Radio presentation'
|
43
|
+
help:
|
44
|
+
es: 'Historia, trasfondo, principios políticos, etc.'
|
45
|
+
en: 'History, context, political principles, etc.'
|
46
|
+
streams:
|
47
|
+
type: 'array'
|
48
|
+
label:
|
49
|
+
es: 'Direcciones de la transmisión'
|
50
|
+
en: 'Transmission addresses'
|
51
|
+
help:
|
52
|
+
es: 'Las direcciones de la transmisión de Icecast, pueden ser varias para tener opciones o tener varios formatos para soportar distintos navegadores (ogg para todos, mp3 para Safari).'
|
53
|
+
en: 'Icecast addresses, could be several for backup or have different formats (ogg for all browsers, mp3 for Safari).'
|
54
|
+
fediverse:
|
55
|
+
type: 'url'
|
56
|
+
label:
|
57
|
+
es: 'Fediverso'
|
58
|
+
en: 'Fediverse'
|
59
|
+
help:
|
60
|
+
es: 'Dirección completa al perfil'
|
61
|
+
en: 'Full address to the profile'
|
62
|
+
facebook:
|
63
|
+
type: 'url'
|
64
|
+
label:
|
65
|
+
es: 'Facebook'
|
66
|
+
en: 'Facebook'
|
67
|
+
help:
|
68
|
+
es: 'Dirección completa al perfil'
|
69
|
+
en: 'Full address to the profile'
|
70
|
+
instagram:
|
71
|
+
type: 'url'
|
72
|
+
label:
|
73
|
+
es: 'Instagram'
|
74
|
+
en: 'Instagram'
|
75
|
+
help:
|
76
|
+
es: 'Dirección completa al perfil'
|
77
|
+
en: 'Full address to the profile'
|
78
|
+
twitter:
|
79
|
+
type: 'url'
|
80
|
+
label:
|
81
|
+
es: 'Twitter'
|
82
|
+
en: 'Twitter'
|
83
|
+
help:
|
84
|
+
es: 'Dirección completa al perfil'
|
85
|
+
en: 'Full address to the profile'
|
86
|
+
youtube:
|
87
|
+
type: 'url'
|
88
|
+
label:
|
89
|
+
es: 'Youtube'
|
90
|
+
en: 'Youtube'
|
91
|
+
help:
|
92
|
+
es: 'Dirección completa al perfil'
|
93
|
+
en: 'Full address to the profile'
|
94
|
+
internet_archive:
|
95
|
+
type: 'url'
|
96
|
+
label:
|
97
|
+
es: 'Internet Archive'
|
98
|
+
en: 'Internet Archive'
|
99
|
+
help:
|
100
|
+
es: 'Dirección completa al archivo de la radio'
|
101
|
+
en: "Full address to the radio's archive"
|
102
|
+
email:
|
103
|
+
type: 'email'
|
104
|
+
label:
|
105
|
+
es: 'Correo electrónico'
|
106
|
+
en: 'E-mail'
|
107
|
+
help:
|
108
|
+
es: ''
|
109
|
+
en: ''
|
110
|
+
background_color:
|
111
|
+
type: 'color'
|
112
|
+
label:
|
113
|
+
es: 'Color de fondo del sitio'
|
114
|
+
en: ''
|
115
|
+
help:
|
116
|
+
es: 'Si tenés dudas seleccionando colores, te recomendamos contactar a le diseñadore [librenauta](https://copiona.com/), o elegir colores con [criterio de accesibilidad](https://randoma11y.com/).'
|
117
|
+
en: "If you're in doubt while selecting colors, we invite you to contact the designer [librenauta](https://copiona.com/) or pick color using [accessibility criteria](https://randoma11y.com/)."
|
118
|
+
foreground_color:
|
119
|
+
type: 'color'
|
120
|
+
label:
|
121
|
+
es: 'Color del texto del sitio'
|
122
|
+
en: ''
|
123
|
+
help:
|
124
|
+
es: ''
|
125
|
+
en: ''
|
126
|
+
navbar_background_color:
|
127
|
+
type: 'color'
|
128
|
+
label:
|
129
|
+
es: 'Color de fondo del reproductor de la radio y de los vínculos en el sitio'
|
130
|
+
en: ''
|
131
|
+
help:
|
132
|
+
es: ''
|
133
|
+
en: ''
|
134
|
+
navbar_foreground_color:
|
135
|
+
type: 'color'
|
136
|
+
label:
|
137
|
+
es: 'Color del texto del reproductor de la radio'
|
138
|
+
en: ''
|
139
|
+
help:
|
140
|
+
es: ''
|
141
|
+
en: ''
|
142
|
+
social_foreground_color:
|
143
|
+
type: 'color'
|
144
|
+
label:
|
145
|
+
es: 'Color de los botones de redes sociales'
|
146
|
+
en: ''
|
147
|
+
help:
|
148
|
+
es: ''
|
149
|
+
en: ''
|
150
|
+
draft:
|
151
|
+
type: 'boolean'
|
152
|
+
label:
|
153
|
+
es: 'Borrador'
|
154
|
+
en: 'Draft'
|
155
|
+
help:
|
156
|
+
es: 'Este artículo aun no está listo para publicar'
|
157
|
+
en: "This post isn't ready to be published yet"
|
158
|
+
order:
|
159
|
+
type: 'order'
|
160
|
+
label:
|
161
|
+
es: 'Orden'
|
162
|
+
en: 'Order'
|
163
|
+
help:
|
164
|
+
es: 'La posición del artículo en la lista de artículos'
|
165
|
+
en: 'The post position in the posts list'
|
@@ -0,0 +1,30 @@
|
|
1
|
+
{%- assign name = include.field[0] -%}
|
2
|
+
{%- assign id = include.field[1].id | default: name -%}
|
3
|
+
{%- assign label = include.field[1].label[site.locale] -%}
|
4
|
+
{%- assign help = include.field[1].help[site.locale] -%}
|
5
|
+
{%- assign autocomplete = include.field[1].autocomplete -%}
|
6
|
+
|
7
|
+
<div class="form-check text-left">
|
8
|
+
<input
|
9
|
+
{% if help %}
|
10
|
+
aria-describedby="help-{{ id }}"
|
11
|
+
{% endif %}
|
12
|
+
{% if include.field[1].required %}
|
13
|
+
required
|
14
|
+
{% endif %}
|
15
|
+
type="checkbox"
|
16
|
+
name="{{ name }}"
|
17
|
+
id="{{ id }}"
|
18
|
+
{% if autocomplete %}
|
19
|
+
autocomplete="{{ autocomplete }}"
|
20
|
+
{% endif %}
|
21
|
+
class="form-check-input" />
|
22
|
+
|
23
|
+
<label class="form-check-label" for="{{ id }}">{{ label }}</label>
|
24
|
+
|
25
|
+
{%- if help -%}
|
26
|
+
<small id="help-{{ id }}" class="form-text">
|
27
|
+
{{ help }}
|
28
|
+
</small>
|
29
|
+
{%- endif -%}
|
30
|
+
</div>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
{% comment %}
|
2
|
+
Esta imagen obtiene una cookie desde la API de Sutty para autorizar el
|
3
|
+
envío del formulario.
|
4
|
+
{% endcomment %}
|
5
|
+
<img class="d-none" src="https://api.sutty.nl/v1/sites/{{ site.hostname }}/contact/cookie.png" />
|
6
|
+
|
7
|
+
{% comment %}
|
8
|
+
El formulario se envía a la API. La definición del formulario se
|
9
|
+
encuentra en _data/forms/contacto.yml
|
10
|
+
{% endcomment %}
|
11
|
+
<form action="https://api.sutty.nl/v1/sites/{{ site.hostname }}/contact/contacto"
|
12
|
+
method="post">
|
13
|
+
{%- for field in include.form -%}
|
14
|
+
{% assign template = field[1].type | append: '.html' %}
|
15
|
+
<div class="col{{ field[1].col | default: 12 | prepend: '-' }}">
|
16
|
+
{% include {{ template }} field=field %}
|
17
|
+
</div>
|
18
|
+
{%- endfor -%}
|
19
|
+
</form>
|
@@ -0,0 +1 @@
|
|
1
|
+
{% include text.html field=field %}
|
@@ -0,0 +1 @@
|
|
1
|
+
{% include input.html field=field %}
|
data/_includes/file.html
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
{%- assign name = include.field[0] -%}
|
2
|
+
{%- assign id = include.field[1].id | default: name -%}
|
3
|
+
{%- assign label = include.field[1]['path'].label[site.locale] -%}
|
4
|
+
{%- assign help = include.field[1]['path'].help[site.locale] -%}
|
5
|
+
{%- assign accept = include.field[1].accept -%}
|
6
|
+
|
7
|
+
<label>{{ label }}</label>
|
8
|
+
|
9
|
+
<div class="custom-file">
|
10
|
+
<input
|
11
|
+
{% if help %}
|
12
|
+
aria-describedby="help-{{ id }}"
|
13
|
+
{% endif %}
|
14
|
+
{% if include.field[1].required %}
|
15
|
+
required
|
16
|
+
{% endif %}
|
17
|
+
type="{{ include.field[1].type }}"
|
18
|
+
name="{{ name }}[path]"
|
19
|
+
id="{{ id }}_path"
|
20
|
+
{% if accept %}
|
21
|
+
accept="{{ accept }}"
|
22
|
+
{% endif %}
|
23
|
+
class="custom-file-input" />
|
24
|
+
|
25
|
+
<label for="{{ id }}_path" class="custom-file-label">
|
26
|
+
{{ label }}
|
27
|
+
{% if include.field[1].required %}*{% endif %}
|
28
|
+
</label>
|
29
|
+
|
30
|
+
{%- if help -%}
|
31
|
+
<small id="help-{{ id }}" class="form-text">
|
32
|
+
{{ help }}
|
33
|
+
</small>
|
34
|
+
{%- endif -%}
|
35
|
+
</div>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
{%- assign radio = site.posts | find: 'layout', 'radio' -%}
|
2
|
+
|
3
|
+
<footer>
|
4
|
+
{% comment %}
|
5
|
+
Acá sale una mejora adhoc de la referencia
|
6
|
+
{% endcomment %}
|
7
|
+
<div class="container text-center text-md-left">
|
8
|
+
<p class="m-0 font-weight-bold">
|
9
|
+
<a href="{{ radio.url }}">
|
10
|
+
{{ radio.title }}
|
11
|
+
</a>
|
12
|
+
</p>
|
13
|
+
|
14
|
+
{%- for social in site.i18n.menu.items -%}
|
15
|
+
{%- unless radio[social.type] -%}{% continue %}{%- endunless -%}
|
16
|
+
<a
|
17
|
+
rel="me"
|
18
|
+
target="_blank" href="{{ radio[social.type] }}">
|
19
|
+
<i class="fa fa-fw fa-x2 fa-{{ social.icon }}"></i>
|
20
|
+
<span class="sr-only">{{ social.text }}</span>
|
21
|
+
</a>
|
22
|
+
{%- endfor -%}
|
23
|
+
</div>
|
24
|
+
|
25
|
+
<div class="text-center">
|
26
|
+
{{ site.i18n.footer.credits | markdownify }}
|
27
|
+
</div>
|
28
|
+
</footer>
|
@@ -0,0 +1 @@
|
|
1
|
+
../boolean.html
|
@@ -0,0 +1 @@
|
|
1
|
+
../content.html
|
@@ -0,0 +1 @@
|
|
1
|
+
../email.html
|
@@ -0,0 +1 @@
|
|
1
|
+
../file.html
|
@@ -0,0 +1 @@
|
|
1
|
+
../hidden.html
|
@@ -0,0 +1 @@
|
|
1
|
+
../image.html
|
@@ -0,0 +1 @@
|
|
1
|
+
../input.html
|
@@ -0,0 +1 @@
|
|
1
|
+
../markdown_content.html
|
@@ -0,0 +1 @@
|
|
1
|
+
../number.html
|
@@ -0,0 +1 @@
|
|
1
|
+
../predefined_array.html
|
@@ -0,0 +1 @@
|
|
1
|
+
../section.html
|
@@ -0,0 +1 @@
|
|
1
|
+
../separator.html
|
@@ -0,0 +1 @@
|
|
1
|
+
../string.html
|
@@ -0,0 +1 @@
|
|
1
|
+
../submit.html
|
@@ -0,0 +1 @@
|
|
1
|
+
../tel.html
|
@@ -0,0 +1 @@
|
|
1
|
+
../text.html
|
@@ -0,0 +1 @@
|
|
1
|
+
../url.html
|
@@ -0,0 +1,32 @@
|
|
1
|
+
{%- assign name = include.field[0] -%}
|
2
|
+
{%- assign id = include.field[1].id | default: name -%}
|
3
|
+
{%- assign label = include.field[1]['path'].label[site.locale] -%}
|
4
|
+
{%- assign help = include.field[1]['path'].help[site.locale] -%}
|
5
|
+
|
6
|
+
<label>{{ label }}</label>
|
7
|
+
|
8
|
+
<div class="custom-file">
|
9
|
+
<input
|
10
|
+
{% if help %}
|
11
|
+
aria-describedby="help-{{ id }}"
|
12
|
+
{% endif %}
|
13
|
+
{% if include.field[1].required %}
|
14
|
+
required
|
15
|
+
{% endif %}
|
16
|
+
type="{{ include.field[1].type }}"
|
17
|
+
name="{{ name }}[path]"
|
18
|
+
id="{{ id }}_path"
|
19
|
+
accept="image/*"
|
20
|
+
class="custom-file-input" />
|
21
|
+
|
22
|
+
<label for="{{ id }}_path" class="custom-file-label">
|
23
|
+
{{ label }}
|
24
|
+
{% if include.field[1].required %}*{% endif %}
|
25
|
+
</label>
|
26
|
+
|
27
|
+
{%- if help -%}
|
28
|
+
<small id="help-{{ id }}" class="form-text">
|
29
|
+
{{ help }}
|
30
|
+
</small>
|
31
|
+
{%- endif -%}
|
32
|
+
</div>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
{%- assign name = include.field[0] -%}
|
2
|
+
{%- assign id = include.field[1].id | default: name -%}
|
3
|
+
{%- assign label = include.field[1].label[site.locale] -%}
|
4
|
+
{%- assign help = include.field[1].help[site.locale] -%}
|
5
|
+
{%- assign autocomplete = include.field[1].autocomplete -%}
|
6
|
+
|
7
|
+
<div class="form-group">
|
8
|
+
<label for="{{ id }}">
|
9
|
+
{{ label }}
|
10
|
+
{% if include.field[1].required %}*{% endif %}
|
11
|
+
</label>
|
12
|
+
|
13
|
+
<input
|
14
|
+
{% if help %}
|
15
|
+
aria-describedby="help-{{ id }}"
|
16
|
+
{% endif %}
|
17
|
+
{% if include.field[1].required %}
|
18
|
+
required
|
19
|
+
{% endif %}
|
20
|
+
type="{{ include.field[1].type }}"
|
21
|
+
name="{{ name }}"
|
22
|
+
id="{{ id }}"
|
23
|
+
{% if autocomplete %}
|
24
|
+
autocomplete="{{ autocomplete }}"
|
25
|
+
{% endif %}
|
26
|
+
class="form-control" />
|
27
|
+
|
28
|
+
{%- if help -%}
|
29
|
+
<small id="help-{{ id }}" class="form-text">
|
30
|
+
{{ help }}
|
31
|
+
</small>
|
32
|
+
{%- endif -%}
|
33
|
+
</div>
|
data/_includes/logo.html
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{% include text.html field=field %}
|
@@ -0,0 +1,78 @@
|
|
1
|
+
{%- assign radio = site.posts | find: 'layout', 'radio' -%}
|
2
|
+
|
3
|
+
{% comment %}
|
4
|
+
La posición sticky permite que la barra ocupe el alto adecuado en el
|
5
|
+
sitio y se "despegue" cuando estamos escroleando hacia abajo.
|
6
|
+
Funciona bien pero si escroleamos rápido se detecta el microsegundo
|
7
|
+
donde el navegador tardó en decidir qué hacía con la barra y se ve una
|
8
|
+
franja del fondo.
|
9
|
+
|
10
|
+
Si usamos fixed tenemos que incorporar el alto de la barra como margen
|
11
|
+
superior del sitio para que no se coma la parte de arriba.
|
12
|
+
|
13
|
+
TODO: Incorporar el hack para que no se coma el destino de la
|
14
|
+
navegación interna al saltar a un elemento (un título por ejemplo).
|
15
|
+
|
16
|
+
Evitamos que turbolinks descargue este elemento, o sea que se mantenga
|
17
|
+
entre navegaciones internas. Necesita un ID para funcionar.
|
18
|
+
{% endcomment %}
|
19
|
+
<nav
|
20
|
+
data-turbolinks-permanent
|
21
|
+
id="navbar"
|
22
|
+
class="navbar sticky-top navbar-expand-lg navbar-theme d-print-block row no-gutters justify-content-center pl-0 pr-0"
|
23
|
+
role="navigation"
|
24
|
+
aria-label="{{ site.i18n.menu.title }}">
|
25
|
+
|
26
|
+
{% comment %}
|
27
|
+
Para que la barra se alinee con el contenido, tenemos que darle el
|
28
|
+
mismo ancho.
|
29
|
+
{% endcomment %}
|
30
|
+
<div class="col-10">
|
31
|
+
<div class="row no-gutters align-items-center">
|
32
|
+
{% comment %}
|
33
|
+
La columna del logo tiene el mismo ancho que la imagen principal
|
34
|
+
de un artículo.
|
35
|
+
{% endcomment %}
|
36
|
+
<a class="navbar-brand col col-md-3 flex-grow-0" href="">
|
37
|
+
{% include_cached logo.html %}
|
38
|
+
|
39
|
+
{% comment %}
|
40
|
+
XXX: En pantallas pequeñas el nombre de la radio ocupa mucho espacio
|
41
|
+
{% endcomment %}
|
42
|
+
<span class="d-none d-md-inline">
|
43
|
+
{{ radio.title }}
|
44
|
+
</span>
|
45
|
+
</a>
|
46
|
+
|
47
|
+
{% comment %}
|
48
|
+
El reproductor crece cuando la pantalla es chica y abarca todo el
|
49
|
+
espacio disponible.
|
50
|
+
|
51
|
+
Tiene el mismo ancho que el ancho de un artículo.
|
52
|
+
{% endcomment %}
|
53
|
+
<div class="col col-md-6 flex-grow-1 d-flex align-items-center">
|
54
|
+
{% include_cached reproductor.html %}
|
55
|
+
</div>
|
56
|
+
|
57
|
+
{% comment %}
|
58
|
+
La lista de botones de redes sociales no se muestra en celulares.
|
59
|
+
|
60
|
+
Los botones ocupan el espacio sobrante, a la derecha de la imagen.
|
61
|
+
{% endcomment %}
|
62
|
+
<ul class="navbar-nav d-print-none col d-none d-lg-flex">
|
63
|
+
{%- for social in site.i18n.menu.items -%}
|
64
|
+
{%- unless radio[social.type] -%}{% continue %}{%- endunless -%}
|
65
|
+
<li class="nav-item">
|
66
|
+
<a
|
67
|
+
rel="me"
|
68
|
+
class="nav-link social-theme"
|
69
|
+
target="_blank" href="{{ radio[social.type] }}">
|
70
|
+
<i class="fa fa-fw fa-x2 fa-{{ social.icon }}"></i>
|
71
|
+
<span class="sr-only">{{ social.text }}</span>
|
72
|
+
</a>
|
73
|
+
</li>
|
74
|
+
{%- endfor -%}
|
75
|
+
</ul>
|
76
|
+
</div>
|
77
|
+
</div>
|
78
|
+
</nav>
|