mirror of
https://github.com/offen/website.git
synced 2024-12-23 13:30:20 +01:00
update articles, remove plugin
This commit is contained in:
parent
d4ad06e83e
commit
c7c83769cd
@ -4,13 +4,15 @@ date: 2019-12-12
|
||||
slug: laying-foundation-for-fair-web-analytics
|
||||
sitemap_priority: 0.7
|
||||
sm_image_url: /theme/images/offen-blog-0010-milestone1.jpg
|
||||
summary_title: Laying the foundation for fair web analytics
|
||||
|
||||
<figure class="larger-image mb5">
|
||||
<img alt="Milestone 1 - Laying the foundation for fair web analytics" src="/theme/images/offen-blog-0010-milestone1.jpg"/>
|
||||
</figure>
|
||||
|
||||
###### 12 Dec 2019, Hendrik Niefeld
|
||||
# [Episode One — Laying the foundation for fair web analytics](/blog/laying-foundation-for-fair-web-analytics/)
|
||||
# Episode One — Laying the foundation for fair web analytics
|
||||
|
||||
Milestone 1 is completed. This is what we've achieved in the last six weeks.
|
||||
|
||||
---
|
||||
|
@ -4,13 +4,14 @@ date: 2020-01-19
|
||||
slug: untold-roads-versioning-early-stage-software
|
||||
sitemap_priority: 0.7
|
||||
sm_image_url: /theme/images/offen-blog-0020-untoldRoads.jpg
|
||||
summary_title: Untold roads to v1.0
|
||||
|
||||
<figure class="larger-image mb5">
|
||||
<img alt="Untold roads" src="/theme/images/offen-blog-0020-untoldRoads.jpg"/>
|
||||
</figure>
|
||||
|
||||
###### 19 Jan 2020, Frederik Ring
|
||||
# [Untold roads to v1.0](/blog/untold-roads-versioning-early-stage-software/)
|
||||
# Untold roads to v1.0
|
||||
|
||||
After a lot of experimenting, taking detours and having unanticipated revelations while building the foundation for Offen over the last months, the state of the project is starting to settle, and we are eager to get ready for users to install our software, and use it for transparently collecting usage statistics for their websites and applications.
|
||||
|
||||
|
@ -4,13 +4,15 @@ date: 2020-01-31
|
||||
slug: collecting-data-securely
|
||||
sitemap_priority: 0.7
|
||||
sm_image_url: /theme/images/offen-blog-0030-milestone-2.jpg
|
||||
summary_title: Collecting data securely
|
||||
|
||||
<figure class="larger-image mb5">
|
||||
<img alt="Milestone 2 - Collecting data securely" src="/theme/images/offen-blog-0030-milestone-2.jpg"/>
|
||||
</figure>
|
||||
|
||||
###### 31 Jan 2020, Hendrik Niefeld
|
||||
# [Episode Two — Collecting data securely](/blog/collecting-data-securely/)
|
||||
# Episode Two — Collecting data securely
|
||||
|
||||
We finished milestone 2. Here is what we' ve been doing for the last 8 weeks.
|
||||
|
||||
---
|
||||
|
@ -4,13 +4,15 @@ date: 2020-03-04
|
||||
slug: test-offen-today
|
||||
sitemap_priority: 0.7
|
||||
sm_image_url: /theme/images/offen-blog-0040-test-offen-today.jpg
|
||||
summary_title: Test Offen today
|
||||
|
||||
<figure class="larger-image mb5">
|
||||
<img alt="Test Offen today" src="/theme/images/offen-blog-0040-test-offen-today.jpg"/>
|
||||
</figure>
|
||||
|
||||
###### 04 Mar 2020, Hendrik Niefeld
|
||||
# [Test Offen today](/blog/test-offen-today/)
|
||||
# Test Offen today
|
||||
|
||||
We’re excited to present our first version that is officially ready for testing.
|
||||
|
||||
---
|
||||
|
@ -4,13 +4,14 @@ date: 2020-04-13
|
||||
slug: displaying-data
|
||||
sitemap_priority: 0.7
|
||||
sm_image_url: /theme/images/offen-blog-0050-milestone-3.jpg
|
||||
summary_title: Displaying data
|
||||
|
||||
<figure class="larger-image mb5">
|
||||
<img alt="Milestone 3 - Displaying data" src="/theme/images/offen-blog-0050-milestone-3.jpg"/>
|
||||
</figure>
|
||||
|
||||
###### 14 Apr 2020, Frederik Ring
|
||||
# [Episode Three — Displaying data](/blog/displaying-data/)
|
||||
# Episode Three — Displaying data
|
||||
|
||||
In the middle of strange times Milestone 3 - "Displaying Data" - is done. This means we focused on how we aggregate and display the data Offen collects in a way that operators can use it to improve their services and users can understand what is being collected and what it means for their privacy.
|
||||
|
||||
|
@ -4,6 +4,7 @@ date: 2020-06-09
|
||||
slug: managing-data
|
||||
sitemap_priority: 0.7
|
||||
sm_image_url: /theme/images/offen-blog-0060-milestone-4.jpg
|
||||
summary_title: Managing data
|
||||
|
||||
<figure class="larger-image mb5">
|
||||
<img alt="Milestone 4 - Managing data" src="/theme/images/offen-blog-0060-milestone-4.jpg"/>
|
||||
@ -12,7 +13,7 @@ sm_image_url: /theme/images/offen-blog-0060-milestone-4.jpg
|
||||
##### [Photo](https://www.flickr.com/photos/wocintechchat/25926651781/in/album-72157664006621903/){: target="_blank"} by WOCinTechChat / [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/){: target="_blank"}
|
||||
|
||||
###### 09 Jun 2020, Frederik Ring
|
||||
# [Episode Four — Managing data](/blog/managing-data/)
|
||||
# Episode Four — Managing data
|
||||
|
||||
Milestone 4 - "Managing data" - has been an important one for us. Finishing it means Offen is now close to being feature complete in the scope of our initial plans, and we can start transitioning into a Beta state, meaning we can finally offer a stable product for users to use in production environments.
|
||||
|
||||
|
@ -4,17 +4,15 @@ date: 2020-06-30
|
||||
slug: hosting-offen-on-budget
|
||||
sitemap_priority: 0.7
|
||||
sm_image_url: /theme/images/offen-blog-0070-budget.jpg
|
||||
summary_title: Hosting Offen on a budget
|
||||
|
||||
<figure class="larger-image mb5">
|
||||
<img alt="Hosting on a budget" src="/theme/images/offen-blog-0070-budget.jpg"/>
|
||||
</figure>
|
||||
|
||||
<!-- PELICAN_BEGIN_SUMMARY -->
|
||||
|
||||
###### 30 Jun 2020, Frederik Ring
|
||||
# [Hosting Offen on a budget](/blog/hosting-offen-on-budget/)
|
||||
|
||||
<!-- PELICAN_END_SUMMARY -->
|
||||
# Hosting Offen on a budget
|
||||
|
||||
Using self-hosted software like Offen when you're on a budget can seem daunting as you usually don't know too much about the performance requirements of the software you are planning to use beforehand. Once you do know, you might have locked in yourself already.
|
||||
|
||||
|
@ -45,9 +45,7 @@ PAGE_SAVE_AS = '{slug}/index.html'
|
||||
ARTICLE_SAVE_AS = 'blog/{slug}/index.html'
|
||||
|
||||
PLUGIN_PATHS = ['./plugins']
|
||||
PLUGINS = ['decorate_content', 'assets', 'summary']
|
||||
|
||||
SUMMARY_USE_FIRST_PARAGRAPH = True
|
||||
PLUGINS = ['decorate_content', 'assets']
|
||||
|
||||
MARKDOWN = {
|
||||
'extension_configs': {
|
||||
|
@ -1,15 +0,0 @@
|
||||
Pelican Summary Plugin
|
||||
Copyright The Pelican Authors
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
@ -1 +0,0 @@
|
||||
from .summary import *
|
@ -1,111 +0,0 @@
|
||||
"""
|
||||
Summary
|
||||
-------
|
||||
|
||||
This plugin allows easy, variable length summaries directly embedded into the
|
||||
body of your articles.
|
||||
"""
|
||||
|
||||
from __future__ import unicode_literals
|
||||
from bs4 import BeautifulSoup
|
||||
from pelican import signals
|
||||
from pelican.generators import ArticlesGenerator, StaticGenerator, PagesGenerator
|
||||
import re
|
||||
|
||||
def initialized(pelican):
|
||||
from pelican.settings import DEFAULT_CONFIG
|
||||
DEFAULT_CONFIG.setdefault('SUMMARY_BEGIN_MARKER',
|
||||
'<!-- PELICAN_BEGIN_SUMMARY -->')
|
||||
DEFAULT_CONFIG.setdefault('SUMMARY_END_MARKER',
|
||||
'<!-- PELICAN_END_SUMMARY -->')
|
||||
DEFAULT_CONFIG.setdefault('SUMMARY_USE_FIRST_PARAGRAPH', False)
|
||||
if pelican:
|
||||
pelican.settings.setdefault('SUMMARY_BEGIN_MARKER',
|
||||
'<!-- PELICAN_BEGIN_SUMMARY -->')
|
||||
pelican.settings.setdefault('SUMMARY_END_MARKER',
|
||||
'<!-- PELICAN_END_SUMMARY -->')
|
||||
pelican.settings.setdefault('SUMMARY_USE_FIRST_PARAGRAPH', False)
|
||||
|
||||
def extract_summary(instance):
|
||||
# if summary is already specified, use it
|
||||
# if there is no content, there's nothing to do
|
||||
if hasattr(instance, '_summary') or 'summary' in instance.metadata:
|
||||
instance.has_summary = True
|
||||
return
|
||||
|
||||
if not instance._content:
|
||||
instance.has_summary = False
|
||||
return
|
||||
|
||||
begin_marker = instance.settings['SUMMARY_BEGIN_MARKER']
|
||||
end_marker = instance.settings['SUMMARY_END_MARKER']
|
||||
use_first_paragraph = instance.settings['SUMMARY_USE_FIRST_PARAGRAPH']
|
||||
remove_markers = True
|
||||
|
||||
content = instance._update_content(instance._content, instance.settings['SITEURL'])
|
||||
begin_summary = -1
|
||||
end_summary = -1
|
||||
if begin_marker:
|
||||
begin_summary = content.find(begin_marker)
|
||||
if end_marker:
|
||||
end_summary = content.find(end_marker)
|
||||
|
||||
if begin_summary == -1 and end_summary == -1 and use_first_paragraph:
|
||||
begin_marker, end_marker = '<p>', '</p>'
|
||||
remove_markers = False
|
||||
begin_summary = content.find(begin_marker)
|
||||
end_summary = content.find(end_marker)
|
||||
|
||||
if begin_summary == -1 and end_summary == -1:
|
||||
instance.has_summary = False
|
||||
return
|
||||
|
||||
# skip over the begin marker, if present
|
||||
if begin_summary == -1:
|
||||
begin_summary = 0
|
||||
else:
|
||||
begin_summary = begin_summary + len(begin_marker)
|
||||
|
||||
if end_summary == -1:
|
||||
end_summary = None
|
||||
|
||||
summary = content[begin_summary:end_summary]
|
||||
|
||||
if remove_markers:
|
||||
# remove the markers from the content
|
||||
if begin_summary:
|
||||
content = content.replace(begin_marker, '', 1)
|
||||
if end_summary:
|
||||
content = content.replace(end_marker, '', 1)
|
||||
|
||||
summary = str(BeautifulSoup(summary, 'html.parser'))
|
||||
|
||||
instance._content = content
|
||||
# default_status was added to Pelican Content objects after 3.7.1.
|
||||
# Its use here is strictly to decide on how to set the summary.
|
||||
# There's probably a better way to do this but I couldn't find it.
|
||||
if hasattr(instance, 'default_status'):
|
||||
instance.metadata['summary'] = summary
|
||||
else:
|
||||
instance._summary = summary
|
||||
instance.has_summary = True
|
||||
|
||||
|
||||
def run_plugin(generators):
|
||||
for generator in generators:
|
||||
if isinstance(generator, ArticlesGenerator):
|
||||
for article in generator.articles:
|
||||
extract_summary(article)
|
||||
elif isinstance(generator, PagesGenerator):
|
||||
for page in generator.pages:
|
||||
extract_summary(page)
|
||||
|
||||
|
||||
def register():
|
||||
signals.initialized.connect(initialized)
|
||||
try:
|
||||
signals.all_generators_finalized.connect(run_plugin)
|
||||
except AttributeError:
|
||||
# NOTE: This results in #314 so shouldn't really be relied on
|
||||
# https://github.com/getpelican/pelican-plugins/issues/314
|
||||
signals.content_object_init.connect(extract_summary)
|
@ -19,7 +19,9 @@
|
||||
<img alt="{{ article.title }}" src="{{ article.sm_image_url }}"/>
|
||||
</a>
|
||||
</figure>
|
||||
{{ article.summary }}
|
||||
<h1 class="f2 normal lh-title mt3 ma0 mb3 light-silver">
|
||||
<a href="{{ article.slug }}" class="link b dim gray">{{ article.summary_title }}</a>
|
||||
</h1>
|
||||
<p class="">
|
||||
{{ article.description }} <a href="{{ article.slug }}" class="link b dim gray">Read more</a>
|
||||
</p>
|
||||
|
@ -8,3 +8,4 @@
|
||||
{% set template = article.template %}
|
||||
{% set content = article.content %}
|
||||
{% set cta_1 = 'true' %}
|
||||
{% set summary_title = article.summary_title %}
|
||||
|
Loading…
Reference in New Issue
Block a user