Constrain userbars to be less ugly. Put them before names.
[zzz-spline-users.git] / spline / plugins / users / __init__.py
index 53633d7..f0c8a33 100644 (file)
@@ -1,17 +1,38 @@
+from pkg_resources import resource_filename
+
 from pylons import c, session
 
 from spline.lib.plugin import PluginBase
+from spline.lib.plugin import PluginBase, PluginLink, Priority
 import spline.model as model
 import spline.model.meta as meta
 
-import controllers.accounts
-import model as user_model
+import spline.plugins.users.controllers.accounts
+import spline.plugins.users.controllers.users
+import spline.plugins.users.model
+
+def add_routes_hook(map, *args, **kwargs):
+    """Hook to inject some of our behavior into the routes configuration."""
+    # Login, logout
+    map.connect('/accounts/login', controller='accounts', action='login')
+    map.connect('/accounts/login_begin', controller='accounts', action='login_begin')
+    map.connect('/accounts/login_finish', controller='accounts', action='login_finish')
+    map.connect('/accounts/logout', controller='accounts', action='logout')
+
+    # Self-admin
+    map.connect('/users/{id};{name}/edit', controller='users', action='profile_edit')
+
+    # Public per-user pages
+    map.connect('/users/{id};{name}', controller='users', action='profile')
+    map.connect('/users/{id}', controller='users', action='profile')
 
 def check_userid_hook(action, **params):
     """Hook to see if a user is logged in and, if so, stick a user object in
     c.
     """
 
+    c.user = None
+
     if not 'user_id' in session:
         return
 
@@ -28,13 +49,28 @@ def check_userid_hook(action, **params):
 class UsersPlugin(PluginBase):
     def controllers(self):
         return dict(
-            accounts = controllers.accounts.AccountsController,
+            accounts = spline.plugins.users.controllers.accounts.AccountsController,
+            users = spline.plugins.users.controllers.users.UsersController,
         )
 
     def model(self):
-        return [user_model.User, user_model.OpenID]
+        return [
+            spline.plugins.users.model.User,
+            spline.plugins.users.model.OpenID,
+        ]
+
+    def template_dirs(self):
+        return [
+            (resource_filename(__name__, 'templates'), Priority.NORMAL)
+        ]
 
     def hooks(self):
         return [
-            ('before_controller', 1, check_userid_hook),
+            ('routes_mapping',    Priority.NORMAL,      add_routes_hook),
+            ('before_controller', Priority.VERY_FIRST,  check_userid_hook),
+        ]
+
+    def widgets(self):
+        return [
+            ('page_header', Priority.NORMAL, 'widgets/user_state.mako'),
         ]