Merge branch 'master' of https://git.vvvvvvaria.org/mb/bots-as-digital-infrapunctures
This commit is contained in:
commit
52f5e29256
@ -6,6 +6,8 @@ SITENAME = 'Bots as Digital Infrapunctures'
|
|||||||
SITEURL = ''
|
SITEURL = ''
|
||||||
|
|
||||||
PATH = 'content'
|
PATH = 'content'
|
||||||
|
# PLUGIN_PATHS = ['plugins']
|
||||||
|
# PLUGINS = ['neigbors']
|
||||||
|
|
||||||
TIMEZONE = 'Europe/Amsterdam'
|
TIMEZONE = 'Europe/Amsterdam'
|
||||||
|
|
||||||
@ -32,5 +34,3 @@ TEMPLATE_PAGES = {'home.html': 'index.html',}
|
|||||||
|
|
||||||
# Uncomment following line if you want document-relative URLs when developing
|
# Uncomment following line if you want document-relative URLs when developing
|
||||||
RELATIVE_URLS = True
|
RELATIVE_URLS = True
|
||||||
|
|
||||||
PLUGIN_PATHS = ['plugins']
|
|
||||||
|
@ -1,101 +0,0 @@
|
|||||||
Neighbor Articles Plugin for Pelican
|
|
||||||
====================================
|
|
||||||
|
|
||||||
**NOTE:** `This plugin has been moved to its own repository <https://github.com/pelican-plugins/neighbors>`_. Please file any issues/PRs there. Once all plugins have been migrated to the `new Pelican Plugins organization <https://github.com/pelican-plugins>`_, this monolithic repository will be archived.
|
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
This plugin adds ``next_article`` (newer) and ``prev_article`` (older)
|
|
||||||
variables to the article's context.
|
|
||||||
|
|
||||||
Also adds ``next_article_in_category`` and ``prev_article_in_category``.
|
|
||||||
|
|
||||||
|
|
||||||
Usage
|
|
||||||
-----
|
|
||||||
|
|
||||||
.. code-block:: html+jinja
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
{% if article.prev_article %}
|
|
||||||
<li>
|
|
||||||
<a href="{{ SITEURL }}/{{ article.prev_article.url}}">
|
|
||||||
{{ article.prev_article.title }}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
{% if article.next_article %}
|
|
||||||
<li>
|
|
||||||
<a href="{{ SITEURL }}/{{ article.next_article.url}}">
|
|
||||||
{{ article.next_article.title }}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
</ul>
|
|
||||||
<ul>
|
|
||||||
{% if article.prev_article_in_category %}
|
|
||||||
<li>
|
|
||||||
<a href="{{ SITEURL }}/{{ article.prev_article_in_category.url}}">
|
|
||||||
{{ article.prev_article_in_category.title }}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
{% if article.next_article_in_category %}
|
|
||||||
<li>
|
|
||||||
<a href="{{ SITEURL }}/{{ article.next_article_in_category.url}}">
|
|
||||||
{{ article.next_article_in_category.title }}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
Usage with the Subcategory plugin
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
If you want to get the neigbors within a subcategory it's a little different.
|
|
||||||
Since an article can belong to more than one subcategory, subcategories are
|
|
||||||
stored in a list. If you have an article with subcategories like
|
|
||||||
|
|
||||||
``Category/Foo/Bar``
|
|
||||||
|
|
||||||
it will belong to both subcategory Foo, and Foo/Bar. Subcategory neighbors are
|
|
||||||
added to an article as ``next_article_in_subcategory#`` and
|
|
||||||
``prev_article_in_subcategory#`` where ``#`` is the level of subcategory. So using
|
|
||||||
the example from above, subcategory1 will be Foo, and subcategory2 Foo/Bar.
|
|
||||||
Therefor the usage with subcategories is:
|
|
||||||
|
|
||||||
.. code-block:: html+jinja
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
{% if article.prev_article_in_subcategory1 %}
|
|
||||||
<li>
|
|
||||||
<a href="{{ SITEURL }}/{{ article.prev_article_in_subcategory1.url}}">
|
|
||||||
{{ article.prev_article_in_subcategory1.title }}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
{% if article.next_article_in_subcategory1 %}
|
|
||||||
<li>
|
|
||||||
<a href="{{ SITEURL }}/{{ article.next_article_in_subcategory1.url}}">
|
|
||||||
{{ article.next_article_in_subcategory1.title }}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
</ul>
|
|
||||||
<ul>
|
|
||||||
{% if article.prev_article_in_subcategory2 %}
|
|
||||||
<li>
|
|
||||||
<a href="{{ SITEURL }}/{{ article.prev_article_in_subcategory2.url}}">
|
|
||||||
{{ article.prev_article_in_subcategory2.title }}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
{% if article.next_article_in_subcategory2 %}
|
|
||||||
<li>
|
|
||||||
<a href="{{ SITEURL }}/{{ article.next_article_in_subcategory2.url}}">
|
|
||||||
{{ article.next_article_in_subcategory2.title }}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
</ul>
|
|
||||||
|
|
@ -1 +0,0 @@
|
|||||||
from .neighbors import *
|
|
@ -1,63 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
"""
|
|
||||||
Neighbor Articles Plugin for Pelican
|
|
||||||
====================================
|
|
||||||
|
|
||||||
This plugin adds ``next_article`` (newer) and ``prev_article`` (older)
|
|
||||||
variables to the article's context
|
|
||||||
"""
|
|
||||||
from pelican import signals
|
|
||||||
|
|
||||||
|
|
||||||
def iter3(seq):
|
|
||||||
"""Generate one triplet per element in 'seq' following PEP-479."""
|
|
||||||
nxt, cur = None, None
|
|
||||||
for prv in seq:
|
|
||||||
if cur:
|
|
||||||
yield nxt, cur, prv
|
|
||||||
nxt, cur = cur, prv
|
|
||||||
# Don't yield anything if empty seq
|
|
||||||
if cur:
|
|
||||||
# Yield last element in seq (also if len(seq) == 1)
|
|
||||||
yield nxt, cur, None
|
|
||||||
|
|
||||||
|
|
||||||
def get_translation(article, prefered_language):
|
|
||||||
if not article:
|
|
||||||
return None
|
|
||||||
for translation in article.translations:
|
|
||||||
if translation.lang == prefered_language:
|
|
||||||
return translation
|
|
||||||
return article
|
|
||||||
|
|
||||||
|
|
||||||
def set_neighbors(articles, next_name, prev_name):
|
|
||||||
for nxt, cur, prv in iter3(articles):
|
|
||||||
setattr(cur, next_name, nxt)
|
|
||||||
setattr(cur, prev_name, prv)
|
|
||||||
|
|
||||||
for translation in cur.translations:
|
|
||||||
setattr(translation, next_name,
|
|
||||||
get_translation(nxt, translation.lang))
|
|
||||||
setattr(translation, prev_name,
|
|
||||||
get_translation(prv, translation.lang))
|
|
||||||
|
|
||||||
def neighbors(generator):
|
|
||||||
set_neighbors(generator.articles, 'next_article', 'prev_article')
|
|
||||||
|
|
||||||
for category, articles in generator.categories:
|
|
||||||
articles.sort(key=lambda x: x.date, reverse=True)
|
|
||||||
set_neighbors(
|
|
||||||
articles, 'next_article_in_category', 'prev_article_in_category')
|
|
||||||
|
|
||||||
if hasattr(generator, 'subcategories'):
|
|
||||||
for subcategory, articles in generator.subcategories:
|
|
||||||
articles.sort(key=lambda x: x.date, reverse=True)
|
|
||||||
index = subcategory.name.count('/')
|
|
||||||
next_name = 'next_article_in_subcategory{}'.format(index)
|
|
||||||
prev_name = 'prev_article_in_subcategory{}'.format(index)
|
|
||||||
set_neighbors(articles, next_name, prev_name)
|
|
||||||
|
|
||||||
|
|
||||||
def register():
|
|
||||||
signals.article_generator_finalized.connect(neighbors)
|
|
@ -1,14 +0,0 @@
|
|||||||
Title: Test md File
|
|
||||||
Category: test
|
|
||||||
Tags: foo, bar, foobar
|
|
||||||
Date: 2010-12-02 10:14
|
|
||||||
Modified: 2010-12-02 10:20
|
|
||||||
Summary: I have a lot to test
|
|
||||||
|
|
||||||
Test Markdown File Header
|
|
||||||
=========================
|
|
||||||
|
|
||||||
Used for pelican test
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
The quick brown fox jumped over the lazy dog's back.
|
|
@ -1,35 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
from os.path import dirname, join
|
|
||||||
from tempfile import TemporaryDirectory
|
|
||||||
|
|
||||||
from pelican.generators import ArticlesGenerator
|
|
||||||
from pelican.tests.support import get_settings, unittest
|
|
||||||
|
|
||||||
from .neighbors import neighbors
|
|
||||||
|
|
||||||
|
|
||||||
CUR_DIR = dirname(__file__)
|
|
||||||
|
|
||||||
|
|
||||||
class NeighborsTest(unittest.TestCase):
|
|
||||||
def test_neighbors_basic(self):
|
|
||||||
with TemporaryDirectory() as tmpdirname:
|
|
||||||
generator = _build_article_generator(join(CUR_DIR, '..', 'test_data'), tmpdirname)
|
|
||||||
neighbors(generator)
|
|
||||||
def test_neighbors_with_single_article(self):
|
|
||||||
with TemporaryDirectory() as tmpdirname:
|
|
||||||
generator = _build_article_generator(join(CUR_DIR, 'test_data'), tmpdirname)
|
|
||||||
neighbors(generator)
|
|
||||||
|
|
||||||
|
|
||||||
def _build_article_generator(content_path, output_path):
|
|
||||||
settings = get_settings(filenames={})
|
|
||||||
settings['PATH'] = content_path
|
|
||||||
context = settings.copy()
|
|
||||||
context['generated_content'] = dict()
|
|
||||||
context['static_links'] = set()
|
|
||||||
article_generator = ArticlesGenerator(
|
|
||||||
context=context, settings=settings,
|
|
||||||
path=settings['PATH'], theme=settings['THEME'], output_path=output_path)
|
|
||||||
article_generator.generate_context()
|
|
||||||
return article_generator
|
|
@ -1,2 +1,3 @@
|
|||||||
pelican==4.5.0
|
pelican==4.5.0
|
||||||
markdown==3.2.2
|
markdown==3.2.2
|
||||||
|
pelican-neighbors==1.1.0
|
||||||
|
@ -23,7 +23,7 @@ header#banner{
|
|||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
nav#menu{
|
nav#menu{
|
||||||
width: calc(100% + 20em);
|
width: calc(100% + 18em);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin:0 0 0 -10em;
|
margin:0 0 0 -10em;
|
||||||
}
|
}
|
||||||
@ -62,6 +62,13 @@ article{
|
|||||||
background-color: beige;
|
background-color: beige;
|
||||||
padding:2em 3em;
|
padding:2em 3em;
|
||||||
}
|
}
|
||||||
|
article:first-of-type:before{
|
||||||
|
content: "Introduction";
|
||||||
|
display: block;
|
||||||
|
margin:0 auto;
|
||||||
|
position: relative;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
/* big pink boxes for the section titles */
|
/* big pink boxes for the section titles */
|
||||||
h1.category{
|
h1.category{
|
||||||
|
Loading…
Reference in New Issue
Block a user