]> git.ipfire.org Git - ipfire.org.git/commitdiff
add a module to handle open graph metadata
authorRico Hoppe <rico.hoppe@ipfire.org>
Tue, 28 May 2024 16:18:51 +0000 (16:18 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 3 Jun 2024 14:05:10 +0000 (14:05 +0000)
Signed-off-by: Rico Hoppe <rico.hoppe@ipfire.org>
Makefile.am
src/templates/modules/open-graph.html [new file with mode: 0644]
src/web/__init__.py
src/web/ui_modules.py

index 95220c2e3d987f9bf9ce08a86fb04d60e75092c2..49c23a25c8918b7a8f9ba84704fe7a93630f9ace 100644 (file)
@@ -293,6 +293,7 @@ templates_messagesdir = $(templatesdir)/messages
 templates_modules_DATA = \
        src/templates/modules/ipfire-logo.html \
        src/templates/modules/map.html \
+       src/templates/modules/open-graph.html \
        src/templates/modules/progress-bar.html
 
 templates_modulesdir = $(templatesdir)/modules
diff --git a/src/templates/modules/open-graph.html b/src/templates/modules/open-graph.html
new file mode 100644 (file)
index 0000000..8cd98a6
--- /dev/null
@@ -0,0 +1,3 @@
+{% for key in properties %}\r
+    <meta property="og:{{ key }}" content="{{ properties[key] }}">\r
+{% end %}\r
index dfc72eaa1212e30f246913f2dc7d6bc99ebb17d1..8f80d6ba913ca5cb01b373dfa25499a3915e3910 100644 (file)
@@ -106,6 +106,7 @@ class Application(tornado.web.Application):
                                "IPFireLogo"           : ui_modules.IPFireLogoModule,
                                "Markdown"             : ui_modules.MarkdownModule,
                                "Map"                  : ui_modules.MapModule,
+                               "OpenGraph"            : ui_modules.OpenGraphModule,
                                "ProgressBar"          : ui_modules.ProgressBarModule,
                        },
 
index a41ab371fc1aef56dd1b71b2ca2ef7af696fd1ef..b81aeb21f42174873c44df7c1adba6a355b1723d 100644 (file)
@@ -15,6 +15,21 @@ class IPFireLogoModule(UIModule):
                return self.render_string("modules/ipfire-logo.html", suffix=suffix)
 
 
+class OpenGraphModule(UIModule):
+       def render(self, title, **kwargs):
+               properties = {
+                       "site_name" : "IPFire.org",
+                       "title"     : title,
+                       "type"      : "website",
+                       "url"       : self.request.full_url(),
+                       "image"     : self.handler.static_url("img/ipfire-tux.png", include_host=True),
+                       "logo"      : self.handler.static_url("img/ipfire-tux.png", include_host=True),
+                       "locale"    : self.locale.code,
+               } | kwargs
+
+               return self.render_string("modules/open-graph.html", properties=properties)
+
+
 class MarkdownModule(UIModule):
        def render(self, markdown):
                return self.backend.blog._render_text(markdown)