Support stuff-other-than-updates. veekun-promotions/2010121201 veekun-promotions/2010122201 veekun-promotions/2010122701 veekun-promotions/2011011701 veekun-promotions/2011021501 veekun-promotions/2011021502 veekun-promotions/2011022101 veekun-promotions/2011030301 veekun-promotions/2011030302
authorEevee <git@veekun.com>
Sat, 11 Dec 2010 08:25:34 +0000 (00:25 -0800)
committerEevee <git@veekun.com>
Sat, 11 Dec 2010 08:25:34 +0000 (00:25 -0800)
splinext/frontpage/controllers/frontpage.py
splinext/frontpage/templates/front_page/extras.mako [new file with mode: 0644]
splinext/frontpage/templates/front_page/updates.mako

index 900c87b..fdb0b4c 100644 (file)
@@ -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 (file)
index 0000000..d387425
--- /dev/null
@@ -0,0 +1,3 @@
+% for extra in c.extras:
+    <%include file="${extra.template}" args="obj=extra" />
+% endfor
index 257f0dd..e0f95da 100644 (file)
@@ -1,3 +1,4 @@
+<h1>Updates</h1>
 % if c.updates and not c.last_seen_item:
     <hr class="frontpage-new-stuff">
 % endif