|
a/Allura/allura/controllers/project.py |
|
b/Allura/allura/controllers/project.py |
|
... |
|
... |
18 |
import re
|
18 |
import re
|
19 |
import logging
|
19 |
import logging
|
20 |
from datetime import datetime, timedelta
|
20 |
from datetime import datetime, timedelta
|
21 |
from urllib import unquote
|
21 |
from urllib import unquote
|
22 |
from itertools import chain, islice
|
22 |
from itertools import chain, islice
|
23 |
from pkg_resources import iter_entry_points
|
|
|
24 |
|
23 |
|
25 |
from bson import ObjectId
|
24 |
from bson import ObjectId
|
26 |
from tg import expose, flash, redirect, validate, request, response, config
|
25 |
from tg import expose, flash, redirect, validate, request, response, config
|
27 |
from tg.decorators import with_trailing_slash, without_trailing_slash, override_template
|
26 |
from tg.decorators import with_trailing_slash, without_trailing_slash, override_template
|
28 |
from pylons import tmpl_context as c, app_globals as g
|
27 |
from pylons import tmpl_context as c, app_globals as g
|
|
... |
|
... |
36 |
|
35 |
|
37 |
from allura import model as M
|
36 |
from allura import model as M
|
38 |
from allura.app import SitemapEntry
|
37 |
from allura.app import SitemapEntry
|
39 |
from allura.lib.base import WsgiDispatchController
|
38 |
from allura.lib.base import WsgiDispatchController
|
40 |
from allura.lib import helpers as h
|
39 |
from allura.lib import helpers as h
|
|
|
40 |
from allura.lib.helpers import iter_entry_points
|
41 |
from allura.lib import utils
|
41 |
from allura.lib import utils
|
42 |
from allura.lib.decorators import require_post
|
42 |
from allura.lib.decorators import require_post
|
43 |
from allura.controllers.error import ErrorController
|
43 |
from allura.controllers.error import ErrorController
|
44 |
from allura.controllers.feed import FeedArgs, FeedController
|
44 |
from allura.controllers.feed import FeedArgs, FeedController
|
45 |
from allura.lib.security import require_access, has_access
|
45 |
from allura.lib.security import require_access, has_access
|
|
... |
|
... |
308 |
def _nav(self):
|
308 |
def _nav(self):
|
309 |
menu = []
|
309 |
menu = []
|
310 |
for s in c.project.grouped_navbar_entries():
|
310 |
for s in c.project.grouped_navbar_entries():
|
311 |
entry = dict(name=s.label, url=s.url, icon=s.ui_icon, tool_name=s.tool_name)
|
311 |
entry = dict(name=s.label, url=s.url, icon=s.ui_icon, tool_name=s.tool_name)
|
312 |
if s.children:
|
312 |
if s.children:
|
313 |
entry['children'] = [dict(name=child.label, url=child.url, icon=child.ui_icon, tool_name=child.tool_name)
|
313 |
entry['children'] = [dict(name=child.label, url=child.url, icon=child.ui_icon, tool_name=child.tool_name)
|
314 |
for child in s.children]
|
314 |
for child in s.children]
|
315 |
menu.append(entry)
|
315 |
menu.append(entry)
|
316 |
return dict(menu=menu)
|
316 |
return dict(menu=menu)
|
317 |
|
317 |
|
318 |
@expose()
|
318 |
@expose()
|