From a2c8a9954d43236417b2966455589714b58132a4 Mon Sep 17 00:00:00 2001 From: Eevee Date: Sat, 11 Dec 2010 00:25:34 -0800 Subject: [PATCH] Support stuff-other-than-updates. --- splinext/frontpage/controllers/frontpage.py | 13 +++++++++++++ splinext/frontpage/templates/front_page/extras.mako | 3 +++ splinext/frontpage/templates/front_page/updates.mako | 1 + 3 files changed, 17 insertions(+) create mode 100644 splinext/frontpage/templates/front_page/extras.mako diff --git a/splinext/frontpage/controllers/frontpage.py b/splinext/frontpage/controllers/frontpage.py index 900c87b..fdb0b4c 100644 --- a/splinext/frontpage/controllers/frontpage.py +++ b/splinext/frontpage/controllers/frontpage.py @@ -8,6 +8,7 @@ from sqlalchemy.orm.exc import NoResultFound from spline.lib import helpers as h from spline.lib.base import BaseController, render +from spline.lib.plugin.load import run_hooks from spline.model import meta from splinext.frontpage.sources import max_age_to_datetime @@ -45,6 +46,13 @@ class FrontPageController(BaseController): run_hooks('frontpage_updates_updatetype', opt1=val1, opt2=val2) + Plugins may also respond to the `frontpage_extras` hook with other + interesting things to put on the front page. There's no way to + customize the order of these extras or which appear and which don't, at + the moment. Such hooks should return an object with at least a + `template` attribute; the template will be called with the object + passed in as its `obj` argument. + Local plugins can override the fairly simple index.mako template to customize the front page layout. """ @@ -99,6 +107,11 @@ class FrontPageController(BaseController): # Done! Feed to template c.updates = updates + # Hook for non-update interesting things to put on the front page. + # This hook should return objects with a 'template' attribute, and + # whatever else they need + c.extras = run_hooks('frontpage_extras') + ret = render('/index.mako') # Commit AFTER rendering the template! Committing invalidates diff --git a/splinext/frontpage/templates/front_page/extras.mako b/splinext/frontpage/templates/front_page/extras.mako new file mode 100644 index 0000000..d387425 --- /dev/null +++ b/splinext/frontpage/templates/front_page/extras.mako @@ -0,0 +1,3 @@ +% for extra in c.extras: + <%include file="${extra.template}" args="obj=extra" /> +% endfor diff --git a/splinext/frontpage/templates/front_page/updates.mako b/splinext/frontpage/templates/front_page/updates.mako index 257f0dd..e0f95da 100644 --- a/splinext/frontpage/templates/front_page/updates.mako +++ b/splinext/frontpage/templates/front_page/updates.mako @@ -1,3 +1,4 @@ +

Updates

% if c.updates and not c.last_seen_item:
% endif -- 2.7.4