first commit
This commit is contained in:
108
libretube-theme/templates/archives.html
Normal file
108
libretube-theme/templates/archives.html
Normal file
@@ -0,0 +1,108 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block extra_head %}
|
||||
<meta name="description" content="{{ _('Lista de artículos publicados en LibreTube.') }}">
|
||||
<meta name="keywords" content="{{ _('archivos,artículos,historia,lista de artículos') }}">
|
||||
|
||||
<style>
|
||||
|
||||
.content ul, .content ul ul, .content ul ul ul {
|
||||
list-style:none !important;
|
||||
}
|
||||
|
||||
.content ul {
|
||||
margin-left: 0px !important;
|
||||
}
|
||||
|
||||
.contenedor-arbol, .contenedor-arbol ul, .contenedor-arbol li {
|
||||
position: relative;
|
||||
margin: 0;
|
||||
padding-left: 2%;
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
.contenedor-arbol ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.contenedor-arbol li::before, .contenedor-arbol li::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: -12px;
|
||||
}
|
||||
|
||||
.contenedor-arbol li::before {
|
||||
border-top: 2px solid #000;
|
||||
top: 9px;
|
||||
width: 12px;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
.contenedor-arbol li::after {
|
||||
border-left: 2px solid black;
|
||||
height: 100%;
|
||||
width: 0px;
|
||||
top: 2px;
|
||||
}
|
||||
|
||||
.contenedor-arbol ul > li:last-child::after {
|
||||
height: 8px;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}{% trans %}Archivos de {{ SITENAME }}{% endtrans %}{% endblock %}
|
||||
{% block content %}
|
||||
|
||||
|
||||
|
||||
<!-- Main -->
|
||||
<div class="row mt-6 mt-10">
|
||||
<div class="col-md-9 mx-auto text-justify">
|
||||
<!-- dinamic page content -->
|
||||
<div class="contenedor-arbol ml-3">
|
||||
<p>{{ ngettext('%(num)d artículo', '%(num)d artículos', dates|length) }}</p>
|
||||
<ul>
|
||||
{% for article in dates %}
|
||||
{% set current_year = article.date|strftime('%Y') %}
|
||||
{% set current_month = article.date|strftime('%m') %}
|
||||
{% if loop.previtem %}
|
||||
{% set previous_year = loop.previtem.date|strftime('%Y') %}
|
||||
{% set previous_month = loop.previtem.date|strftime('%m') %}
|
||||
{% endif %}
|
||||
{% if current_year != previous_year %}
|
||||
{% if loop.previtem %}
|
||||
</ul>
|
||||
</li> <!-- Cierra el mes -->
|
||||
</ul>
|
||||
</li> <!-- Cierra el año -->
|
||||
{% endif %}
|
||||
<li><a href="{{ SITEURL }}/archives/{{ current_year }}/">{{ current_year }}</a>
|
||||
<ul>
|
||||
<li><a href="{{ SITEURL }}/archives/{{ current_year }}/{{ current_month }}/">{{ article.date|strftime('%B') }}</a>
|
||||
<ul>
|
||||
{% elif current_month != previous_month %}
|
||||
{% if loop.previtem %}
|
||||
</ul>
|
||||
</li>
|
||||
{% endif %}
|
||||
<li><a href="{{ SITEURL }}/archives/{{ current_year }}/{{ current_month }}/">{{ article.date|strftime('%B') }}</a>
|
||||
<ul>
|
||||
{% endif %}
|
||||
<li><a href="{{ SITEURL }}/{{ article.url }}" title="{{ article.locale_date}}">{{ article.title }}</a></li>
|
||||
{% if loop.last %}
|
||||
</ul>
|
||||
</li> <!-- Cierra el mes -->
|
||||
</ul>
|
||||
</li> <!-- Cierra el año -->
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
<!-- End dinamic page content -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Main -->
|
||||
{% endblock %}
|
||||
195
libretube-theme/templates/article.html
Normal file
195
libretube-theme/templates/article.html
Normal file
@@ -0,0 +1,195 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block html_lang %}{{ article.lang }}{% endblock %}
|
||||
|
||||
{% block extra_head %}
|
||||
<meta name="author" content="{{ article.author }}">
|
||||
<meta name="keywords" content="{{ article.tags|join(',')|escape }}">
|
||||
{% endblock %}
|
||||
|
||||
{% block extra_comment %}
|
||||
<link href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/modules/plyr/plyr.css" rel="stylesheet">
|
||||
{% endblock %}
|
||||
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
{% import 'translations.html' as translations with context %}
|
||||
{% if translations.entry_hreflang(article) %}
|
||||
{{ translations.entry_hreflang(article) }}
|
||||
{% endif %}
|
||||
<meta property="og:title" content="{{ article.title }}">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:url" content="{{ SITEURL }}/{{ article.url }}">
|
||||
<meta property="article:published_time" content="{{ article.date.isoformat() }}">
|
||||
{% if article.modified %}
|
||||
<meta property="article:modified_time" content="{{ article.modified.isoformat() }}">
|
||||
{% endif %}
|
||||
<meta property="article:section" content="{{ article.category }}">
|
||||
{% set og_description = article.summary.split(ANOTHER_READ_MORE_LINK_FORMAT[:6])[0][3:]|striptags|escape %}
|
||||
{% set OG_DESC_LENGTH = 175 %}
|
||||
{% if og_description|length >= OG_DESC_LENGTH %}
|
||||
{# Quita la última palabra para no dejarla incompleta #}
|
||||
{% set og_description = og_description[:OG_DESC_LENGTH].split(' ')[:-1]|join(' ') %}
|
||||
{% if not og_description[-1] in ['.', '?', ':', '!'] %}
|
||||
{% set og_description = og_description + '…' %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<meta property="og:description" content="{{ article.summary|striptags|escape }}"/>
|
||||
{% if article.og_image %}
|
||||
<meta property="og:image" content="{{ SITEURL }}/{{ article.og_image }}"/>
|
||||
{% elif OPEN_GRAPH_IMAGE %}
|
||||
<meta property="og:image" content="{{ SITEURL }}/{{ OPEN_GRAPH_IMAGE }}"/>
|
||||
{% endif %}
|
||||
{% for tag in article.tags %}
|
||||
<meta property="og:tag" content="{{ tag | escape }}">
|
||||
{% endfor %}
|
||||
|
||||
{% if article.styles %}
|
||||
{% for style in article.styles %}
|
||||
{{ style }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}{{ article.title|striptags }}{% endblock %}
|
||||
{% block menu_header %}{% endblock menu_header %}
|
||||
|
||||
{%- block content -%}
|
||||
<!-- Main -->
|
||||
<div class="row mt-3 mt-10">
|
||||
<div class="col-md-12">
|
||||
<div class="row mr-3">
|
||||
<div class="col-md-8">
|
||||
|
||||
<!-- dinamic article content -->
|
||||
<div class="ml-3">
|
||||
{{ article.content }}
|
||||
</div>
|
||||
<!-- End dinamic article content -->
|
||||
|
||||
<!-- Author -->
|
||||
<div class="ml-3">
|
||||
<hr class="hr-author">
|
||||
|
||||
<p class="mb-0">
|
||||
{% if not HIDE_AUTHORS and article.authors %}
|
||||
<span class="soumaicon text-info">
|
||||
<svg>
|
||||
<use href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/svg/master.svg#user" />
|
||||
</svg>
|
||||
</span>
|
||||
{% for author in article.authors %}
|
||||
<a class="link-author" href="{{ SITEURL }}/{{ author.url }}" title="{{ author }}">{{ author }}</a>
|
||||
<span class="style-scope">
|
||||
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false">
|
||||
<g>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M12,2C6.48,2,2,6.48,2,12s4.48,10,10,10s10-4.48,10-10 S17.52,2,12,2z M9.92,17.93l-4.95-4.95l2.05-2.05l2.9,2.9l7.35-7.35l2.05,2.05L9.92,17.93z" class="style-scope yt-icon"></path>
|
||||
</g>
|
||||
</svg>
|
||||
</span>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
<!-- time publish -->
|
||||
{% set año = article.date|strftime('%Y') %}
|
||||
{% set mes = article.date|strftime('%m') %}
|
||||
{% set nombre_mes = article.date|strftime('%B') %}
|
||||
<time class="entry-date published"
|
||||
datetime="{{ article.date.isoformat() }}">
|
||||
<small>
|
||||
{{ _('Publicado el') }}
|
||||
{{ article.date|strftime('%a %-d') }}
|
||||
<a class="text-info" href="{{ SITEURL }}/archives/{{ año }}/{{ mes }}/"
|
||||
title="{% trans %}Vídeos de {{ nombre_mes }} de {{ año }}{% endtrans %}">
|
||||
{{ nombre_mes }}
|
||||
</a>
|
||||
{{ _('de') }}
|
||||
<a class="text-secondary" href="{{ SITEURL }}/archives/{{ año }}/"
|
||||
title="{% trans %}Vídeos de {{ año }}{% endtrans %}">{{ año }}
|
||||
</a>
|
||||
</small>
|
||||
</time>
|
||||
<!-- /time publish -->
|
||||
|
||||
<hr class="hr-author">
|
||||
</div>
|
||||
<!-- /Author -->
|
||||
|
||||
<!-- Comments -->
|
||||
<div id="hashover" class="comments-container mt-4">
|
||||
<script src="{{ SITEURL }}/hashover-next/comments.php"></script>
|
||||
<noscript>
|
||||
<p>{% trans trimmed abre_enlace='<a href="mailto:heckyel@hyperbola.info?subject=Comentario_«%(titulo_art)s»">'|format(titulo_art=article.title|replace(' ', '%20')), cierra_enlace='</a>' %}
|
||||
Lo siento, el sistema de comentarios no funciona sin JavaScript. Si
|
||||
deseas, puedes {{ abre_enlace }} enviar tu comentario por correo
|
||||
electrónico {{ cierra_enlace }}. El comentario será publicado en el espacio
|
||||
reservado a comentarios de esta página.{% endtrans %}</p>
|
||||
</noscript>
|
||||
</div>
|
||||
<!--End Comments -->
|
||||
|
||||
</div>
|
||||
|
||||
{% if SHOW_RECENT_POSTS %}
|
||||
|
||||
<div class="col-md-4">
|
||||
<!-- article video 1 -->
|
||||
|
||||
{% for article in articles[:SHOW_RECENT_POSTS] %}
|
||||
<article class="row justify-content-center align-items-center mt-1">
|
||||
<!-- video next -->
|
||||
<div class="col-md-6 mini">
|
||||
<a href="{{ SITEURL }}/{{ article.url }}">
|
||||
<div class="area">
|
||||
<div class="mask">
|
||||
|
||||
<div class="vertical-align">
|
||||
<i class="soumaicon play"><svg><use href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/svg/master.svg#play"/></svg></i>
|
||||
</div> <!-- End Vertical Align -->
|
||||
|
||||
</div> <!-- End Mask / Hover -->
|
||||
|
||||
{% if article.image %}
|
||||
<img src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/../wp-content/uploads/article/poster/{{ article.image }}" alt="{{ article.title }}" class="img-fluid">
|
||||
{% else %}
|
||||
<img src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/video.png" alt="video" class="img-fluid">
|
||||
{% endif %}
|
||||
|
||||
{% if article.time %}
|
||||
<span class="duration">{{ article.time }}</span>
|
||||
{% else %}
|
||||
<span class="duration">{{ ('00:00') }}</span>
|
||||
{% endif %}
|
||||
|
||||
</div> <!-- End Area -->
|
||||
</a>
|
||||
</div>
|
||||
<!-- video next -->
|
||||
|
||||
<!-- description -->
|
||||
<div class="col-md-6">
|
||||
<h6><a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="{{ _('Ver %(articulo)s', articulo=article.title|striptags) }}">{{ article.title }}</a></h6>
|
||||
{% include "article_info_aside.html" %}
|
||||
</div>
|
||||
</article>
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Main -->
|
||||
{%- endblock -%}
|
||||
|
||||
{% block extend_js %}
|
||||
<!-- Plyr -->
|
||||
<script src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/modules/plyr/plyr.min.js"
|
||||
integrity="sha512-5LTPChkWfom9XmQ+T2/MfSTBirVqZf7g/7OM80kuLVcSg2aSzjVuivWhTWQaVA9B/V+fCtnLQuPoeXu3WoG4vA=="></script>
|
||||
<script src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/js/play.js"
|
||||
integrity="sha512-Ivz2ncvKXKkThbHw2a1Wi7ITYFOuqgZj7Os2VCjIcpzrK6IdCJ3n6/Y27wGb31dXzqFXZhvaxKLwaSAoyPrNkw=="></script>
|
||||
<!-- /Plyr -->
|
||||
{% endblock %}
|
||||
67
libretube-theme/templates/article_info.html
Normal file
67
libretube-theme/templates/article_info.html
Normal file
@@ -0,0 +1,67 @@
|
||||
<!-- post footer -->
|
||||
<div class="card-content-footer mb-4">
|
||||
<span class="soumaicon text-info">
|
||||
<svg>
|
||||
<use href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/svg/master.svg#calendar" />
|
||||
</svg>
|
||||
</span>
|
||||
{% set año = article.date|strftime('%Y') %}
|
||||
{% set mes = article.date|strftime('%m') %}
|
||||
{% set nombre_mes = article.date|strftime('%B') %}
|
||||
<time class="entry-date published"
|
||||
datetime="{{ article.date.isoformat() }}">
|
||||
<small>
|
||||
{{ article.date|strftime('%a %-d') }}
|
||||
<a href="{{ SITEURL }}/archives/{{ año }}/{{ mes }}/"
|
||||
title="{% trans %}Artículos de {{ nombre_mes }} de {{ año }}{% endtrans %}">
|
||||
{{ nombre_mes }}
|
||||
</a>
|
||||
<a href="{{ SITEURL }}/archives/{{ año }}/"
|
||||
title="{% trans %}Artículos de {{ año }}{% endtrans %}">{{ año }}
|
||||
</a>
|
||||
</small>
|
||||
</time>
|
||||
|
||||
{% if article.modified %}
|
||||
<span class="soumaicon text-info">
|
||||
<svg>
|
||||
<use href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/svg/master.svg#calendar" />
|
||||
</svg>
|
||||
</span>
|
||||
<span class="edit-link"
|
||||
title="{{ _('Fecha de modificación') }}">
|
||||
<small class="screen-reader-text">{{ _('Modificado el %(fecha)s'|format(fecha='</small>
|
||||
<time class="updated" datetime="%s"><small>%s</small></time>')|format(article.modified.isoformat(), article.locale_modified)) }}
|
||||
</span>
|
||||
{% endif %}
|
||||
|
||||
{% if not HIDE_AUTHORS and article.authors %}
|
||||
<span class="soumaicon text-info">
|
||||
<svg>
|
||||
<use href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/svg/master.svg#user" />
|
||||
</svg>
|
||||
</span>
|
||||
{% for author in article.authors %}
|
||||
<small>
|
||||
<a href="{{ SITEURL }}/{{ author.url }}"
|
||||
title="{% trans %}Autor del artículo{% endtrans %}">{{ author }}</a>{% if not loop.last %}, {% endif %}
|
||||
</small>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% import 'translations.html' as translations with context %}
|
||||
{% if translations.translations_for(article) %}
|
||||
<span class="soumaicon text-info">
|
||||
<svg>
|
||||
<use href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/svg/master.svg#translate" />
|
||||
</svg>
|
||||
</span>
|
||||
<small>
|
||||
{{ translations.translations_for(article) }}
|
||||
</small>
|
||||
{% else %}
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
<!-- end of post footer -->
|
||||
<!-- /.post-info -->
|
||||
54
libretube-theme/templates/article_info_aside.html
Normal file
54
libretube-theme/templates/article_info_aside.html
Normal file
@@ -0,0 +1,54 @@
|
||||
<!-- post footer -->
|
||||
<div class="card-content-footer">
|
||||
<span class="soumaicon text-info">
|
||||
<svg>
|
||||
<use href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/svg/master.svg#calendar" />
|
||||
</svg>
|
||||
</span>
|
||||
{% set año = article.date|strftime('%Y') %}
|
||||
{% set mes = article.date|strftime('%m') %}
|
||||
{% set nombre_mes = article.date|strftime('%B') %}
|
||||
<time class="entry-date published"
|
||||
datetime="{{ article.date.isoformat() }}">
|
||||
<small>
|
||||
{{ article.date|strftime('%a %-d') }}
|
||||
<a class="text-info" href="{{ SITEURL }}/archives/{{ año }}/{{ mes }}/"
|
||||
title="{% trans %}Artículos de {{ nombre_mes }} de {{ año }}{% endtrans %}">
|
||||
{{ nombre_mes }}
|
||||
</a>
|
||||
<a class="text-secondary" href="{{ SITEURL }}/archives/{{ año }}/"
|
||||
title="{% trans %}Artículos de {{ año }}{% endtrans %}">{{ año }}
|
||||
</a>
|
||||
</small>
|
||||
</time>
|
||||
|
||||
{% if not HIDE_AUTHORS and article.authors %}
|
||||
<span class="soumaicon text-info">
|
||||
<svg>
|
||||
<use href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/svg/master.svg#user" />
|
||||
</svg>
|
||||
</span>
|
||||
{% for author in article.authors %}
|
||||
<small>
|
||||
<a class="text-white" href="{{ SITEURL }}/{{ author.url }}"
|
||||
title="{% trans %}Autor del artículo{% endtrans %}">{{ author }}</a>{% if not loop.last %}, {% endif %}
|
||||
</small>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% import 'translations.html' as translations with context %}
|
||||
{% if translations.translations_for(article) %}
|
||||
<span class="soumaicon text-info">
|
||||
<svg>
|
||||
<use href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/svg/master.svg#translate" />
|
||||
</svg>
|
||||
</span>
|
||||
<small>
|
||||
{{ translations.translations_for(article) }}
|
||||
</small>
|
||||
{% else %}
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
<!-- end of post footer -->
|
||||
<!-- /.post-info -->
|
||||
28
libretube-theme/templates/author.html
Normal file
28
libretube-theme/templates/author.html
Normal file
@@ -0,0 +1,28 @@
|
||||
{% extends "index.html" %}
|
||||
|
||||
{% block extra_head %}
|
||||
<meta name="author" content="{{ author }}">
|
||||
<meta name="description" content="{% trans %}Artículos escritos por {{ author }} en LibreTube.{% endtrans %}">
|
||||
<meta name="keywords" content="{% trans %}articulista,artículos,author,autor {{ author }},escritor,{{ author }}{% endtrans %}">
|
||||
<style>
|
||||
.card-content-header {
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}{{ SITENAME }} - {{ author }}{% endblock %}
|
||||
{% block menu_header %}{% endblock menu_header %}
|
||||
|
||||
{% block content %}
|
||||
<!-- title -->
|
||||
<div class="row">
|
||||
<div class="col-md-12 mx-auto text-justify">
|
||||
<hr>
|
||||
<h4 class="tab">{% trans %}Autor: {{ author }}{% endtrans %}</h4>
|
||||
<hr>
|
||||
</div>
|
||||
</div>
|
||||
<!-- title -->
|
||||
{{ super() }}
|
||||
{% endblock %}
|
||||
62
libretube-theme/templates/authors.html
Normal file
62
libretube-theme/templates/authors.html
Normal file
@@ -0,0 +1,62 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block extra_head %}
|
||||
<meta name="description" content="{{ _('Lista de autores de LibreTube.') }}">
|
||||
<meta name="keywords" content="{{ _('articulistas,autores,colaboradores,escritores,lista de autores') }}">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}{% trans %}Autores de {{ SITENAME }}{% endtrans %}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<!-- Main -->
|
||||
<div class="row mt-6 mt-10">
|
||||
<div class="col-md-9 mx-auto text-justify">
|
||||
<!-- dinamic page content -->
|
||||
<div class="ml-3">
|
||||
<h2>{{ _('Artículos de vídeo') }}</h2>
|
||||
<ul class="ml-3">
|
||||
{%- for author, articles in authors|sort %}
|
||||
<li>
|
||||
<a href="{{ SITEURL }}/{{ author.url }}"
|
||||
title="{% trans %}Artículos escritos por {{ author }}{% endtrans %}">{{ author }}</a>
|
||||
({{ articles|count }})
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
<h2>{{ _('Programación') }}</h2>
|
||||
<ul class="ml-3">
|
||||
<li><a href="https://www.freakspot.net/" title="{{ _('Sitio para gente Libre') }}">Jorge Maldonado Ventura</a></li>
|
||||
<li><a href="https://heckyel.ga/" title="{{ _('Sitio web de Jesús E.') }}">Jesús E.</a></li>
|
||||
</ul>
|
||||
|
||||
<h2>{{ _('Traducción') }}</h2>
|
||||
<ul class="ml-3">
|
||||
<li><a href="https://rosenzweig.io/" title="{{ _('Sitio web de Alyssa Rosenzweig') }}">Alyssa Rosenzweig</a></li>
|
||||
<li>Jorge Maldonado Ventura</li>
|
||||
</ul>
|
||||
|
||||
<h2>{{ _('Software que usa la página') }}</h2>
|
||||
{% set software = (('https://nginx.org/', 'Nginx'),
|
||||
('http://babel.pocoo.org/', 'Babel'),
|
||||
('https://pypi.org/project/beautifulsoup4/', 'BeautifulSoup4'),
|
||||
('https://nodejs.org/', 'nodejs'),
|
||||
('https://www.python.org/', 'Python'),
|
||||
('https://blog.getpelican.com/', 'Pelican'),
|
||||
('https://pypi.org/project/Markdown/', 'Markdown'),
|
||||
('https://nodejs.org/', 'nodejs'),
|
||||
('https://www.npmjs.com/', 'npm'),
|
||||
('https://github.com/fmarcia/UglifyCSS', 'uglifycss'),
|
||||
('https://github.com/mishoo/UglifyJS', 'uglifyjs'),
|
||||
('https://lablibre.tuxfamily.org/pages/librejs.html', _('Algunos programas de JavaScript'),)) %}
|
||||
<ul class="ml-3">
|
||||
{% for program in software %}
|
||||
<li><a href="{{ program[0] }}" title="{{ _('Sitio web de %(programa)s', programa=program[1]) }}"></a>{{ program[1] }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
<!-- End dinamic page content -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Main -->
|
||||
{% endblock %}
|
||||
248
libretube-theme/templates/base.html
Normal file
248
libretube-theme/templates/base.html
Normal file
@@ -0,0 +1,248 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{% block html_lang %}{{ DEFAULT_LANG }}{% endblock %}">
|
||||
<head prefix="og: http://ogp.me/ns# {% if article %}article: http://ogp.me/ns/article#{% endif%}">
|
||||
{% block head %}
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>{% block title %}{{ SITENAME }}{% endblock title %}</title>
|
||||
|
||||
{% block extra_head %}
|
||||
{% set SITE_DESCRIPTION = _('Videoteca de software libre brindando avance tecnológico') %}
|
||||
<meta name="description" content="{{ SITE_DESCRIPTION }}">
|
||||
<meta name="keywords" content="{{ _('software libre,libertad,libertad de expresión,privacidad,formación,tutoriales,GNU/Linux,desarrollo web,Hyperbola') }}">
|
||||
<meta property="og:title" content="{{ SITENAME }}">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="{{ SITEURL }}">
|
||||
<meta property="og:description" content="{{ SITE_DESCRIPTION }}">
|
||||
{% endblock %}
|
||||
|
||||
<!-- Bootstrap 4.3.1 -->
|
||||
<link href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/bootstrap/bootstrap.min.css" rel="stylesheet"
|
||||
integrity="sha512-tDXPcamuZsWWd6OsKFyH6nAqh/MjZ/5Yk88T5o+aMfygqNFPan1pLyPFAndRzmOWHKT+jSDzWpJv8krj6x1LMA==">
|
||||
<!-- Main Styling -->
|
||||
<link href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/styles.css" rel="stylesheet"
|
||||
integrity="sha512-8c6mSZa07zz441L3Y5hNMS70pfHIisnYDpbAEIt3NrH4F6DHCLJXjpBc81TQyNLa/oFEtPPtLjKGRfYT/pO3DQ==">
|
||||
|
||||
<!-- favicon -->
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/favicon/favicon-192x192.png">
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/favicon/favicon-96x96.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/favicon/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/favicon/favicon-16x16.png">
|
||||
|
||||
{% block extra_comment %}
|
||||
{% endblock %}
|
||||
|
||||
{% endblock head %}
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="container-fluid">
|
||||
|
||||
<nav id="sidebar-wrapper">
|
||||
<aside class="sidebar">
|
||||
<a href="#" id="menu-close" class="float-xs-right toggle"><i class="soumaicon"><svg><use href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/svg/master.svg#close"/></svg></i></a>
|
||||
<ul>
|
||||
<li class="title">Menu</li>
|
||||
<li><a href="#"><i class="soumaicon"><svg><use href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/svg/master.svg#eye"/></svg></i> What to watch</a></li>
|
||||
<li><a href="#"><i class="soumaicon"><svg><use href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/svg/master.svg#user"/></svg></i> My Channel</a></li>
|
||||
<li><a href="#"><i class="soumaicon"><svg><use href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/svg/master.svg#clock"/></svg></i> History</a></li>
|
||||
<li><a href="#"><i class="soumaicon"><svg><use href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/svg/master.svg#repeat"/></svg></i> Watch Later</a></li>
|
||||
</ul>
|
||||
<ul id="playlist">
|
||||
<li class="title">Playlists</li>
|
||||
<li><a href="#"><i class="soumaicon"><svg><use href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/svg/master.svg#headphones"/></svg></i>Best of David Guetta <p>David Guetta</p></a></li>
|
||||
<li><a href="#"><i class="soumaicon"><svg><use href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/svg/master.svg#film"/></svg></i>Favourite Videos <p>Check your favourite videos</p></a></li>
|
||||
<li><a href="#"><i class="soumaicon"><svg><use href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/svg/master.svg#like"/></svg></i>Liked Videos <p>Reach all the videos you like</p></a></li>
|
||||
</ul>
|
||||
</aside> <!-- End Sidebar -->
|
||||
</nav> <!-- End Sidebar-wrapper -->
|
||||
|
||||
<div class="row ml-1">
|
||||
<header class="fixed-top">
|
||||
<div class="col-md-12">
|
||||
<div class="row mt-2 mb-2">
|
||||
<div class="col-lg-2 align-self-center">
|
||||
<a id="menu-toggle" class="menu-bars" href="#"><i class="soumaicon"><svg><use href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/svg/master.svg#bars"/></svg></i></a>
|
||||
<a class="menu-logo" href="{{ SITEURL }}/" rel="home"><img src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/logo.svg" class="logo" alt="logo" ></a>
|
||||
</div>
|
||||
<div class="col-lg-5 align-self-center">
|
||||
<form action="{{ SITEURL }}/buscar.php"><input placeholder="Type to search..." type="search" name="q" required></form>
|
||||
</div>
|
||||
<!-- Login -->
|
||||
<div class="col-lg-2 align-self-center">
|
||||
<ul class="notifications">
|
||||
<li><i class="soumaicon"><svg><use href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/svg/master.svg#envelope"/></svg></i><span>1</span></li>
|
||||
<li><i class="soumaicon"><svg><use href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/svg/master.svg#bell" /></svg></i><span>3</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 menu-profile">
|
||||
<ul>
|
||||
<li>
|
||||
<div class="image-profile-menu">
|
||||
<img src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/videocamera.svg" alt="profile">
|
||||
</div>
|
||||
</li>
|
||||
<li class="ml-2">{{ _('VideoTeca')}}</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<!-- End login -->
|
||||
</div>
|
||||
</div>
|
||||
</header> <!-- End Header -->
|
||||
</div> <!-- End Row -->
|
||||
|
||||
<div class="row mt-5 mt-8">
|
||||
|
||||
<div class="col-md-12">
|
||||
|
||||
{% block menu_header %}
|
||||
|
||||
{% if DISPLAY_PAGES_ON_MENU %}
|
||||
<hr>
|
||||
<ul class="tab">
|
||||
<li class="{% if output_file == 'index.html' %}active{% endif %}"><a href="{{ SITEURL }}/" class="navbar-item is-tab">{{ _('Inicio') }}</a></li>
|
||||
{% for p in pages %}
|
||||
<li class="navbar-item is-tab {% if p == page %} active{% endif %}"><a href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a></li>
|
||||
{% endfor %}
|
||||
<li class="navbar-item is-tab {% if output_file == ARCHIVES_SAVE_AS %} active {% endif %}"><a href="{{ SITEURL }}/{{ ARCHIVES_URL }}">{{ _('Archivos') }}</a></li>
|
||||
</ul> <!-- End Tabs -->
|
||||
<hr>
|
||||
{% endif %}
|
||||
|
||||
{% endblock menu_header %}
|
||||
|
||||
|
||||
{%- block content -%}
|
||||
|
||||
<!-- Main videos -->
|
||||
<div class="row main-videos">
|
||||
|
||||
<div class="col-md-12">
|
||||
|
||||
<div class="row">
|
||||
{% for article in articles_page.object_list %}
|
||||
<article class="col-md-3 video">
|
||||
<a href="{{ SITEURL }}/{{ article.url }}">
|
||||
<div class="area">
|
||||
<div class="mask">
|
||||
|
||||
<div class="vertical-align">
|
||||
<i class="soumaicon play"><svg><use href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/svg/master.svg#play"/></svg></i>
|
||||
<p>{{ _('Ver ahora')}}</p>
|
||||
</div> <!-- End Vertical Align -->
|
||||
|
||||
</div> <!-- End Mask / Hover -->
|
||||
|
||||
{% if article.image %}
|
||||
<img src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/../wp-content/uploads/article/poster/{{ article.image }}" alt="{{ article.title }}" class="img-fluid">
|
||||
{% else %}
|
||||
<img src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/video.png" alt="video" class="img-fluid">
|
||||
{% endif %}
|
||||
|
||||
{% if article.time %}
|
||||
<span class="duration">{{ article.time }}</span>
|
||||
{% else %}
|
||||
<span class="duration">{{ ('00:00') }}</span>
|
||||
{% endif %}
|
||||
|
||||
</div> <!-- End Area -->
|
||||
</a>
|
||||
|
||||
<h2><a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="{{ _('Ver %(articulo)s', articulo=article.title|striptags) }}">{{ article.title }}</a></h2>
|
||||
|
||||
<!-- post footer -->
|
||||
{% include "article_info.html" %}
|
||||
<!-- end of post footer -->
|
||||
|
||||
</article> <!-- End Col-md-6 -->
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Main Videos -->
|
||||
|
||||
<!-- Pagination -->
|
||||
{% include "pagination.html" %}
|
||||
<!-- End Pagination -->
|
||||
|
||||
{%- endblock -%}
|
||||
|
||||
</div>
|
||||
</div> <!-- End Row -->
|
||||
<hr>
|
||||
<footer>
|
||||
<ul>
|
||||
<!-- About -->
|
||||
{% if DEFAULT_LANG == 'eo' %}
|
||||
<li><a href="{{ SITEURL }}/pages/acerca-de.html">{{ 'Pri' }}</a></li>
|
||||
{% elif DEFAULT_LANG == 'en' %}
|
||||
<li><a href="{{ SITEURL }}/pages/acerca-de.html">{{ 'About' }}</a></li>
|
||||
{% else %}
|
||||
<li><a href="{{ SITEURL }}/pages/acerca-de.html">{{ 'Acerca de' }}</a></li>
|
||||
{% endif %}
|
||||
<!-- /About -->
|
||||
|
||||
<!-- Developers -->
|
||||
{% if DEFAULT_LANG == 'eo' %}
|
||||
<li><a href="{{ SITEURL }}/pages/créditos/">{{ 'Kreditoj' }}</a></li>
|
||||
{% elif DEFAULT_LANG == 'en' %}
|
||||
<li><a href="{{ SITEURL }}/pages/créditos/">{{ 'Credits' }}</a></li>
|
||||
{% else %}
|
||||
<li><a href="{{ SITEURL }}/pages/créditos/">{{ 'Créditos' }}</a></li>
|
||||
{% endif %}
|
||||
<!-- /Developers -->
|
||||
</ul>
|
||||
<ul>
|
||||
<!-- Política de Uso -->
|
||||
{% if DEFAULT_LANG == 'eo' %}
|
||||
<li><a href="{{ SITEURL}}/pages/regularo-pri-uzado.html">{{ _('Política de uso') }}</a></li>
|
||||
{% else %}
|
||||
<li><a href="{{ SITEURL}}/pages/política-de-uso.html">{{ _('Política de uso') }}</a></li>
|
||||
{% endif %}
|
||||
<!-- /Política de Uso -->
|
||||
|
||||
<!-- LibreJS -->
|
||||
<li><a href="{{ SITEURL }}/pages/librejs.html" data-jslicense="1">{{ _('Licencias de JavaScript') }}</a></li>
|
||||
<!-- /LibreJS -->
|
||||
|
||||
<!-- source code -->
|
||||
<li><a href="https://libregit.org/heckyel/libretube">{{ _('Código fuente') }}</a></li>
|
||||
<!-- /source code -->
|
||||
</ul>
|
||||
|
||||
<h6>Copyleft © 2019 {{ SITENAME }} Lbtd.</h6>
|
||||
|
||||
</footer> <!-- End Footer -->
|
||||
|
||||
</div>
|
||||
|
||||
{% block extend_js %}
|
||||
{% endblock %}
|
||||
|
||||
{% if article %}
|
||||
{% if article.js %}
|
||||
{% for script in article.js %}
|
||||
{{ script }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if page %}
|
||||
{% if page.js %}
|
||||
{% for script in page.js %}
|
||||
{{ script }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<!-- JS Menu -->
|
||||
<script src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/js/menu.js"
|
||||
integrity="sha512-mqoJvNd/S5ookaXRNHUslliQMoojvJUfAhlKM6g9ziJnIMpFKAZzMvXudBVazg4YNicxlKHBl089S35qzJHeRA=="></script>
|
||||
<!-- End JS Menu -->
|
||||
</body>
|
||||
</html>
|
||||
16
libretube-theme/templates/index.html
Normal file
16
libretube-theme/templates/index.html
Normal file
@@ -0,0 +1,16 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block extra_head %}
|
||||
{{ super() }}
|
||||
{% if lang_siteurls and articles_page.number == 1 %}
|
||||
{% for lang, url in lang_siteurls.items() %}
|
||||
<link rel="alternate" hreflang="{{ lang }}" href="{{ url }}/">
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}{{ SITENAME }}{% if articles_page.number != 1 %} | Page {{ articles_page.number }}{% endif %}{% endblock %}
|
||||
{% block sitename %}
|
||||
<h1 class="title is-1 is-spaced">{{ SITENAME }}</h1>
|
||||
<h4 class="subtitle is-4">{{ SITESUBTITLE }}</h4>
|
||||
{% endblock %}
|
||||
38
libretube-theme/templates/page.html
Normal file
38
libretube-theme/templates/page.html
Normal file
@@ -0,0 +1,38 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block html_lang %}{{ page.lang }}{% endblock%}
|
||||
|
||||
{% block extra_head %}
|
||||
{% import 'translations.html' as translations with context %}
|
||||
{% if translations.entry_hreflang(page) %}
|
||||
{{ translations.entry_hreflang(page) }}
|
||||
{% endif %}
|
||||
<meta name="author" content="{{ author }}">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}{{ page.title }}{% endblock %}
|
||||
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
|
||||
{% if page.styles %}
|
||||
{% for style in page.styles %}
|
||||
{{ style }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% endblock head %}
|
||||
|
||||
{%- block content -%}
|
||||
<!-- Main -->
|
||||
<div class="row mt-10">
|
||||
<div class="col-md-9 mx-auto text-justify">
|
||||
<!-- dinamic page content -->
|
||||
<div class="ml-3">
|
||||
{{ page.content }}
|
||||
</div>
|
||||
<!-- End dinamic page content -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Main -->
|
||||
{%- endblock -%}
|
||||
80
libretube-theme/templates/pagination.html
Normal file
80
libretube-theme/templates/pagination.html
Normal file
@@ -0,0 +1,80 @@
|
||||
{% if DEFAULT_PAGINATION %}
|
||||
<!-- Pagination -->
|
||||
<nav class="mt-5">
|
||||
<ul class="pagination pagination-circle pg-red justify-content-center">
|
||||
|
||||
<!-- Previous -->
|
||||
{% if articles_page.has_previous() %}
|
||||
<li class="page-item">
|
||||
<a href="{{ SITEURL }}/{{ articles_previous_page.url }}" class="page-link" aria-label="Previous">
|
||||
<span aria-hidden="true">«</span>
|
||||
</a>
|
||||
</li>
|
||||
{% else %}
|
||||
<li class="page-item disabled">
|
||||
<a class="page-link" aria-label="Previous">
|
||||
<span aria-hidden="true">«</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
<!-- /Previous -->
|
||||
|
||||
{% for num in range(1, 1 + articles_paginator.num_pages) %}
|
||||
{% set print_number = False %}
|
||||
{% set dots_before = True %}
|
||||
{% if num == 1 %}
|
||||
{% set print_number = True %}
|
||||
{% set dots_before = False %}
|
||||
{% elif (articles_page.number - PAGINATOR_LIMIT / 2) <= num < (articles_page.number - PAGINATOR_LIMIT / 2 + 1) %}
|
||||
{% set print_number = True %}
|
||||
{% if num == 2 %}
|
||||
{% set dots_before = False %}
|
||||
{% endif %}
|
||||
{% elif (articles_page.number - PAGINATOR_LIMIT / 2 + 1) <= num <= (articles_page.number + PAGINATOR_LIMIT / 2) %}
|
||||
{% set print_number = True %}
|
||||
{% set dots_before = False %}
|
||||
{% elif num == articles_paginator.num_pages %}
|
||||
{% set print_number = True %}
|
||||
{% if (articles_page.number + PAGINATOR_LIMIT / 2) <= num <= (articles_page.number + PAGINATOR_LIMIT / 2 + 1)%}
|
||||
{% set dots_before = False %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if print_number %}
|
||||
{% if dots_before %}
|
||||
<li><span class="pagination-ellipsis">…</span></li>
|
||||
{% endif %}
|
||||
{% if num == articles_page.number %}
|
||||
<li class="page-item active">
|
||||
<a class="page-link"
|
||||
aria-label="Page {{ num }}">{{ num }}</a>
|
||||
</li>
|
||||
{% else %}
|
||||
|
||||
<li class="page-item">
|
||||
<a class="page-link" aria-label="Goto page {{ num }}"
|
||||
href="{{ SITEURL }}/{{ articles_paginator.page(num).url }}">{{ num }}
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
<!-- Next -->
|
||||
{% if articles_page.has_next() %}
|
||||
<li class="page-item">
|
||||
<a href="{{ SITEURL }}/{{ articles_next_page.url }}" class="page-link" aria-label="Next">
|
||||
<span aria-hidden="true">»</span>
|
||||
</a>
|
||||
</li>
|
||||
{% else %}
|
||||
<li class="page-item disabled">
|
||||
<a class="page-link" aria-label="Next">
|
||||
<span aria-hidden="true">»</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
<!-- /Next -->
|
||||
</ul>
|
||||
</nav>
|
||||
<!-- End Pagination -->
|
||||
{% endif %}
|
||||
41
libretube-theme/templates/period_archives.html
Normal file
41
libretube-theme/templates/period_archives.html
Normal file
@@ -0,0 +1,41 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block menu_header %}{% endblock menu_header %}
|
||||
|
||||
{% block content %}
|
||||
<!-- title -->
|
||||
<div class="row mt-10">
|
||||
<div class="col-md-12 mx-auto text-justify">
|
||||
<hr>
|
||||
<h4 class="tab">
|
||||
{% set len_period = period|length %}
|
||||
{%- if len_period == 1 -%}
|
||||
{{ _('Archivos de %(año)d', año=period[0]) }}
|
||||
{%- elif len_period == 2 -%}
|
||||
{{ _('Archivos de %(mes)s de %(año)d', año=period[0], mes=period[1]) }}
|
||||
{%- elif len_period == 3 -%}
|
||||
{{ _('Archivos del %(dia)d de %(mes)s de %(año)d', año=period[0], mes=period[1], dia=period[2]) }}
|
||||
{%- endif -%}
|
||||
</h4>
|
||||
<hr>
|
||||
</div>
|
||||
</div>
|
||||
<!-- title -->
|
||||
|
||||
<!-- Main -->
|
||||
<div class="row">
|
||||
<div class="col-md-9 mx-auto text-justify">
|
||||
<!-- dinamic page content -->
|
||||
<div>
|
||||
<dl>
|
||||
{% for article in dates %}
|
||||
<dt>{{ article.date|strftime('%A %-d de %B de %Y a las %H:%M %z') }}</dt>
|
||||
<dd><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></dd>
|
||||
{% endfor %}
|
||||
</dl>
|
||||
</div>
|
||||
<!-- End dinamic page content -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Main -->
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user