diff --git a/incorporealcms/lib.py b/incorporealcms/lib.py new file mode 100644 index 0000000..d9280d5 --- /dev/null +++ b/incorporealcms/lib.py @@ -0,0 +1,7 @@ +"""Miscellaneous helper functions and whatnot.""" +from flask import current_app as app + + +def get_meta_str(key): + """Provide the page's metadata for the specified key, or '' if unset.""" + return " ".join(app.config['md'].Meta.get(key)) if app.config['md'].Meta.get(key) else "" diff --git a/incorporealcms/pages.py b/incorporealcms/pages.py index a850240..04215dd 100644 --- a/incorporealcms/pages.py +++ b/incorporealcms/pages.py @@ -8,6 +8,8 @@ from flask import current_app as app from flask import make_response, redirect, render_template, request from tzlocal import get_localzone +from incorporealcms.lib import get_meta_str + logger = logging.getLogger(__name__) bp = Blueprint('pages', __name__, url_prefix='/') @@ -34,8 +36,9 @@ def display_page(path): else: content = Markup(app.config['md'].convert(entry)) logger.debug("file metadata: %s", app.config['md'].Meta) - title = " ".join(app.config['md'].Meta.get('title')) if app.config['md'].Meta.get('title') else "" - return render('base.html', title=title, content=content, navs=parent_navs, + + return render('base.html', title=get_meta_str('title'), description=get_meta_str('description'), + image=get_meta_str('image'), base_url=request.base_url, content=content, navs=parent_navs, mtime=mtime.strftime('%Y-%m-%d %H:%M:%S %Z')) diff --git a/incorporealcms/templates/base.html b/incorporealcms/templates/base.html index eec4dac..4cf14f3 100644 --- a/incorporealcms/templates/base.html +++ b/incorporealcms/templates/base.html @@ -1,9 +1,15 @@ {{ title }}{% if title %} - {% endif %}{{ config.TITLE_SUFFIX }} +{% if title %}{% endif %} +{% if description %}{% endif %} +{% if image %}{% endif %} + + +
[dark] diff --git a/tests/functional_tests.py b/tests/functional_tests.py index c547cb7..34ecf31 100644 --- a/tests/functional_tests.py +++ b/tests/functional_tests.py @@ -30,6 +30,15 @@ def test_page_without_title_metadata(client): assert b'

this page doesn\'t have a title!

' in response.data +def test_page_with_card_metadata(client): + """Test that a page with opengraph metadata.""" + response = client.get('/more-metadata') + assert response.status_code == 200 + assert b'' in response.data + assert b'' in response.data + assert b'' in response.data + + def test_page_has_modified_timestamp(client): """Test that pages have modified timestamps in them.""" response = client.get('/') diff --git a/tests/instance/pages/more-metadata.md b/tests/instance/pages/more-metadata.md new file mode 100644 index 0000000..aae340b --- /dev/null +++ b/tests/instance/pages/more-metadata.md @@ -0,0 +1,5 @@ +Title: title for the page +Description: description of this page +Image: http://buh.com/test.img + +hello