radios-comunitarias-jekyll-theme 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +168 -0
  3. data/README.md +113 -0
  4. data/_data/en.yml +38 -0
  5. data/_data/es.yml +61 -0
  6. data/_data/forms/contacto.yml +40 -0
  7. data/_data/layouts/post.yml +112 -0
  8. data/_data/layouts/radio.yml +165 -0
  9. data/_includes/boolean.html +30 -0
  10. data/_includes/contact.html +19 -0
  11. data/_includes/content.html +1 -0
  12. data/_includes/email.html +1 -0
  13. data/_includes/file.html +35 -0
  14. data/_includes/footer.html +28 -0
  15. data/_includes/form/boolean.html +1 -0
  16. data/_includes/form/content.html +1 -0
  17. data/_includes/form/email.html +1 -0
  18. data/_includes/form/file.html +1 -0
  19. data/_includes/form/hidden.html +1 -0
  20. data/_includes/form/image.html +1 -0
  21. data/_includes/form/input.html +1 -0
  22. data/_includes/form/markdown_content.html +1 -0
  23. data/_includes/form/number.html +1 -0
  24. data/_includes/form/predefined_array.html +1 -0
  25. data/_includes/form/section.html +1 -0
  26. data/_includes/form/separator.html +1 -0
  27. data/_includes/form/string.html +1 -0
  28. data/_includes/form/submit.html +1 -0
  29. data/_includes/form/tel.html +1 -0
  30. data/_includes/form/text.html +1 -0
  31. data/_includes/form/url.html +1 -0
  32. data/_includes/hidden.html +5 -0
  33. data/_includes/image.html +32 -0
  34. data/_includes/input.html +33 -0
  35. data/_includes/logo.html +5 -0
  36. data/_includes/markdown_content.html +1 -0
  37. data/_includes/navbar.html +78 -0
  38. data/_includes/number.html +1 -0
  39. data/_includes/post.html +118 -0
  40. data/_includes/predefined_array.html +39 -0
  41. data/_includes/reproductor.html +20 -0
  42. data/_includes/section.html +1 -0
  43. data/_includes/separator.html +1 -0
  44. data/_includes/share.html +28 -0
  45. data/_includes/share_box.html +13 -0
  46. data/_includes/string.html +3 -0
  47. data/_includes/submit.html +1 -0
  48. data/_includes/tel.html +1 -0
  49. data/_includes/text.html +32 -0
  50. data/_includes/url.html +1 -0
  51. data/_layouts/default.html +40 -0
  52. data/_layouts/home.html +30 -0
  53. data/_layouts/post.html +5 -0
  54. data/_layouts/radio.html +49 -0
  55. data/_sass/accessibility.scss +13 -0
  56. data/_sass/helpers.scss +54 -0
  57. data/_sass/share.html +12 -0
  58. data/_sass/share_box.html +16 -0
  59. data/_sass/share_box.scss +26 -0
  60. data/_sass/toggler.scss +39 -0
  61. data/assets/css/styles.scss +66 -0
  62. data/assets/fonts/forkawesome-webfont.woff2 +0 -0
  63. data/assets/js/script.js +50 -0
  64. 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 %}
@@ -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,5 @@
1
+ {%- assign name = include.field[0] -%}
2
+ {%- assign id = include.field[1].id | default: name -%}
3
+ {%- assign value = include.field[1].value -%}
4
+
5
+ <input type="hidden" value="{{ value }}" name="{{ name }}" id="{{ id }}" />
@@ -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>
@@ -0,0 +1,5 @@
1
+ {%- assign radio = site.posts | find: 'layout', 'radio' -%}
2
+ <img
3
+ loading="lazy"
4
+ src="{{ radio.logo.path | thumbnail: 50 }}"
5
+ alt="{{ radio.logo.description | default: radio.title }}" />
@@ -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>