From fa33db17ba33b68485e8f960e65565db8aba2e7f Mon Sep 17 00:00:00 2001
From: Chris Fiege <chris@tinyhost.de>
Date: Sun, 22 Mar 2020 22:19:39 +0100
Subject: [PATCH] Use custom rst directive for infobox

Signed-off-by: Chris Fiege <chris@tinyhost.de>
---
 flamingo/content/jitsi.rst       | 15 ++++++---------
 flamingo/plugins/rst_ffbs_box.py | 20 ++++++++++++++++++++
 flamingo/settings.py             |  1 +
 3 files changed, 27 insertions(+), 9 deletions(-)
 create mode 100644 flamingo/plugins/rst_ffbs_box.py

diff --git a/flamingo/content/jitsi.rst b/flamingo/content/jitsi.rst
index 48d4e5c..1a29435 100644
--- a/flamingo/content/jitsi.rst
+++ b/flamingo/content/jitsi.rst
@@ -12,21 +12,18 @@ Natürlich sind wir weiterhin auf unserer
 und auch im
 `IRC </irc.html>`__ zu erreichen.
 
-.. raw:: html
+.. ffbsbox::
 
-   <div style="float:right; clear:right; width:20%; border-top:1px solid; border-bottom:1px solid; margin-left:2em; margin-top:1.5em; margin-bottom:1.5em;">
-   <p>
-         <strong>Kurzlinks:</strong><br />
-         <a href="https://treffen.freifunk-bs.de/FreifunkBS">Videokonferenz im Browser</a><br />
-         <a href="https://play.google.com/store/apps/details?id=org.jitsi.meet">App für Android</a><br />
-         <a href="https://apps.apple.com/de/app/jitsi-meet/id1165103905">App für iOS</a><br />
-    </p>
-   </div>
+   | **Kurzlinks**:
+   | `Videokonferenz im Browser <https://treffen.freifunk-bs.de/FreifunkBS>`__
+   | `App für Android <https://play.google.com/store/apps/details?id=org.jitsi.meet>`__
+   | `App für iOS <https://apps.apple.com/de/app/jitsi-meet/id1165103905>`__
 
 Anstelle unserer Treffen vor Ort treffen wir uns nun Mittwochs ab 19:00 Uhr
 in einer Online Konferenz.
 Hier erhälst du weitere Informationen, wie du unserer Konferenz beitreten kannst.
 
+
 Jitsi im Browser
 ----------------
 
diff --git a/flamingo/plugins/rst_ffbs_box.py b/flamingo/plugins/rst_ffbs_box.py
new file mode 100644
index 0000000..1dc38e9
--- /dev/null
+++ b/flamingo/plugins/rst_ffbs_box.py
@@ -0,0 +1,20 @@
+from docutils.parsers.rst import directives
+from docutils.nodes import raw
+
+from flamingo.plugins.rst.base import NestedDirective
+
+def ffbsbox(context):
+    class Div(NestedDirective):
+        def run(self):
+            html = self.parse_content(context)
+
+            return [
+                raw('', '<div style="float:right; clear:right; width:20%; border-top:1px solid; border-bottom:1px solid; margin-left:2em; margin-top:1.5em; margin-bottom:1.5em;">{}</div>'.format(html), format='html'),
+            ]
+
+    return Div
+
+
+class rstFfbsBox:
+    def parser_setup(self, context):
+        directives.register_directive('ffbsbox', ffbsbox(context))
diff --git a/flamingo/settings.py b/flamingo/settings.py
index 8874164..ec3e736 100644
--- a/flamingo/settings.py
+++ b/flamingo/settings.py
@@ -8,6 +8,7 @@ PLUGINS = [
     'plugins/title.py::Title',
     'plugins/git.py::Git',
     'plugins/raw.py::Raw',
+    'plugins/rst_ffbs_box.py::rstFfbsBox',
 ]
 
 # remove flamingo core HTML plugin.
-- 
GitLab