From 446e641e64b24e29539fda8eb79b554bb4fcf498 Mon Sep 17 00:00:00 2001 From: Massimo Date: Fri, 12 Apr 2013 10:46:58 -0500 Subject: [PATCH] fixed issue 1443, automenu for wiki, thanks Alan --- VERSION | 2 +- applications/welcome/models/menu.py | 3 +-- gluon/tools.py | 34 +++++++++++++++++++---------- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/VERSION b/VERSION index f955a099..73fc3f79 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.4.6-stable+timestamp.2013.04.12.10.30.59 +Version 2.4.6-stable+timestamp.2013.04.12.10.46.23 diff --git a/applications/welcome/models/menu.py b/applications/welcome/models/menu.py index a33e3639..3dba5f02 100644 --- a/applications/welcome/models/menu.py +++ b/applications/welcome/models/menu.py @@ -137,5 +137,4 @@ def _(): )] if DEVELOPMENT_MENU: _() - - +if "auth" in locals(): auth.wikimenu() diff --git a/gluon/tools.py b/gluon/tools.py index 5bfb4616..294e4d5e 100644 --- a/gluon/tools.py +++ b/gluon/tools.py @@ -3389,6 +3389,7 @@ class Auth(object): function=function) else: self._wiki.env.update(env or {}) + # if resolve is set to True, process request as wiki call # resolve=False allows initial setup without wiki redirection wiki = None @@ -3405,6 +3406,13 @@ class Auth(object): wiki = XML(wiki) return wiki + def wikimenu(self): + """to be used in menu.py for app wide wiki menus""" + if (hasattr(self, "_wiki") and + self._wiki.settings.controller and + self._wiki.settings.function): + self._wiki.automenu() + class Crud(object): @@ -4987,7 +4995,7 @@ class Wiki(object): menu_groups=None, templates=None, migrate=True, controller=None, function=None): - settings = self.settings = Settings() + settings = self.settings = auth.settings.wiki # render: "markmin", "html", ..., settings.render = render @@ -5005,6 +5013,7 @@ class Wiki(object): self.env = env or {} self.env['component'] = Wiki.component self.auth = auth + self.wiki_menu_items = None if self.auth.user: self.settings.force_prefix = force_prefix % self.auth.user @@ -5095,13 +5104,6 @@ class Wiki(object): auth.add_membership(gid) settings.lock_keys = True - - if controller and function: - self.automenu = self.menu(settings.controller, - settings.function) - current.response.menu += self.automenu - else: - self.automenu = None # WIKI ACCESS POLICY @@ -5150,12 +5152,20 @@ class Wiki(object): ### END POLICY + def automenu(self): + """adds the menu if not present""" + request = current.request + if not self.wiki_menu_items and self.settings.controller and self.settings.function: + self.wiki_menu_items = self.menu(self.settings.controller, + self.settings.function) + current.response.menu += self.wiki_menu_items + def __call__(self): request = current.request - if not self.automenu: - self.automenu = self.menu(request.controller, - request.function) - current.response.menu += self.automenu + settings.controller = settings.controller or request.controller + settings.function = settings.function or request.function + self.automenu() + zero = request.args(0) or 'index' if zero and zero.isdigit(): return self.media(int(zero))