Return-Path: X-Original-To: apmail-incubator-allura-commits-archive@minotaur.apache.org Delivered-To: apmail-incubator-allura-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 8D934DE64 for ; Fri, 24 May 2013 17:04:40 +0000 (UTC) Received: (qmail 11610 invoked by uid 500); 24 May 2013 17:04:40 -0000 Delivered-To: apmail-incubator-allura-commits-archive@incubator.apache.org Received: (qmail 11494 invoked by uid 500); 24 May 2013 17:04:39 -0000 Mailing-List: contact allura-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: allura-dev@incubator.apache.org Delivered-To: mailing list allura-commits@incubator.apache.org Received: (qmail 11098 invoked by uid 99); 24 May 2013 17:04:38 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 24 May 2013 17:04:38 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 08774E52B; Fri, 24 May 2013 17:04:37 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: brondsem@apache.org To: allura-commits@incubator.apache.org Date: Fri, 24 May 2013 17:04:44 -0000 Message-Id: <237a85f4eeca42d08d64853a268d1ddf@git.apache.org> In-Reply-To: <1076b063340a452a9387bd27dcf0d993@git.apache.org> References: <1076b063340a452a9387bd27dcf0d993@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [08/50] git commit: [#4902] ticket:355 Improve 'Discussion > Create Forum' [#4902] ticket:355 Improve 'Discussion > Create Forum' Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/3f044784 Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/3f044784 Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/3f044784 Branch: refs/heads/db/6255 Commit: 3f044784ac0f44ce35bfefa50b737ff125303d4f Parents: 57c0e3e Author: Igor Bondarenko Authored: Thu May 16 13:15:15 2013 +0000 Committer: Cory Johns Committed: Wed May 22 14:56:16 2013 +0000 ---------------------------------------------------------------------- .../allura/templates/widgets/new_topic_post.html | 2 +- .../forgediscussion/controllers/root.py | 20 +++++++++----- ForgeDiscussion/forgediscussion/forum_main.py | 4 ++- .../forgediscussion/tests/functional/test_forum.py | 19 ++++++++++++- 4 files changed, 34 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/3f044784/Allura/allura/templates/widgets/new_topic_post.html ---------------------------------------------------------------------- diff --git a/Allura/allura/templates/widgets/new_topic_post.html b/Allura/allura/templates/widgets/new_topic_post.html index d6f63a0..60e31a0 100644 --- a/Allura/allura/templates/widgets/new_topic_post.html +++ b/Allura/allura/templates/widgets/new_topic_post.html @@ -30,7 +30,7 @@ http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/3f044784/ForgeDiscussion/forgediscussion/controllers/root.py ---------------------------------------------------------------------- diff --git a/ForgeDiscussion/forgediscussion/controllers/root.py b/ForgeDiscussion/forgediscussion/controllers/root.py index 45a81d6..e358e18 100644 --- a/ForgeDiscussion/forgediscussion/controllers/root.py +++ b/ForgeDiscussion/forgediscussion/controllers/root.py @@ -95,19 +95,19 @@ class RootController(BaseController, DispatchIndex, FeedController): @with_trailing_slash @expose('jinja:forgediscussion:templates/discussionforums/create_topic.html') - def create_topic(self, new_forum=False, **kw): + def create_topic(self, forum_name=None, new_forum=False, **kw): forums = model.Forum.query.find(dict(app_config_id=c.app.config._id, parent_id=None, deleted=False)) - current_forum = None c.new_topic = self.W.new_topic my_forums = [] + forum_name = h.really_unicode(unquote(forum_name)) if forum_name else None + current_forum = None for f in forums: - if request.referer and (f.url() in request.referer): - current_forum = f.shortname - if has_access(f, 'post')(): - my_forums.append(f) - + if forum_name == f.shortname: + current_forum = f + if has_access(f, 'post')(): + my_forums.append(f) return dict(forums=my_forums, current_forum=current_forum) @h.vardec @@ -168,6 +168,12 @@ class RootController(BaseController, DispatchIndex, FeedController): def _lookup(self, id=None, *remainder): if id: id = unquote(id) + forum = model.Forum.query.get( + app_config_id=c.app.config._id, + shortname=id) + if forum is None: + raise exc.HTTPNotFound() + c.forum = forum return ForumController(id), remainder else: raise exc.HTTPNotFound() http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/3f044784/ForgeDiscussion/forgediscussion/forum_main.py ---------------------------------------------------------------------- diff --git a/ForgeDiscussion/forgediscussion/forum_main.py b/ForgeDiscussion/forgediscussion/forum_main.py index e94855d..75b0104 100644 --- a/ForgeDiscussion/forgediscussion/forum_main.py +++ b/ForgeDiscussion/forgediscussion/forum_main.py @@ -152,7 +152,9 @@ class ForgeDiscussionApp(Application): moderate_link = SitemapEntry('Moderate', "%smoderate/" % f.url(), ui_icon=g.icons['pencil'], small = DM.ForumPost.query.find({'discussion_id':f._id, 'status':{'$ne': 'ok'}}).count()) forum_links.append(SitemapEntry(f.name, f.url(), small=f.num_topics)) - l.append(SitemapEntry('Create Topic', c.app.url + 'create_topic', ui_icon=g.icons['plus'])) + url = c.app.url + 'create_topic/' + url = h.urlquote(url + c.forum.shortname if getattr(c, 'forum', None) and c.forum else url) + l.append(SitemapEntry('Create Topic', url, ui_icon=g.icons['plus'])) if has_access(c.app, 'configure')(): l.append(SitemapEntry('Add Forum', c.app.url + 'new_forum', ui_icon=g.icons['conversation'])) l.append(SitemapEntry('Admin Forums', c.project.url()+'admin/'+self.config.options.mount_point+'/forums', ui_icon=g.icons['pencil'])) http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/3f044784/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py ---------------------------------------------------------------------- diff --git a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py index f7cfd1c..863f1c7 100644 --- a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py +++ b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py @@ -735,5 +735,20 @@ class TestForum(TestController): self.app.get('/discussion/general/feed%s' % ext, status=200) def test_create_topic(self): - r = self.app.get('/p/test/discussion/create_topic/', headers={'Referer':'/p/test/discussion/testforum/'}) - assert '' in r \ No newline at end of file + r = self.app.get('/p/test/discussion/create_topic/') + assert 'Test Forum' in r + assert 'General Discussion' in r + r = self.app.get('/p/test/discussion/create_topic/general/') + assert '' in r + r = self.app.get('/p/test/discussion/create_topic/testforum/') + assert '' in r + + def test_create_topic_unicode(self): + r = self.app.get('/admin/discussion/forums') + r.forms[1]['add_forum.shortname'] = u'téstforum'.encode('utf-8') + r.forms[1]['add_forum.name'] = u'Tést Forum'.encode('utf-8') + r.forms[1].submit() + r = self.app.get('/admin/discussion/forums') + assert u'téstforum'.encode('utf-8') in r + r = self.app.get(u'/p/test/discussion/create_topic/téstforum/'.encode('utf-8')) + assert u'' in r