ticket:52 add grid_view_tools option
diff --git a/Allura/allura/lib/macro.py b/Allura/allura/lib/macro.py
index 5a131c7..51d156c 100644
--- a/Allura/allura/lib/macro.py
+++ b/Allura/allura/lib/macro.py
@@ -135,6 +135,7 @@
def get_projects_for_macro(category=None, display_mode='grid', sort='last_updated',
show_total=False, limit=100, labels='', award='', private=False,
columns=1, show_proj_icon=True, show_download_button=True, show_awards_banner=True,
+ grid_view_tools='',
initial_q={}):
from allura.lib.widgets.project_list import ProjectList
from allura.lib import utils
@@ -220,7 +221,8 @@
response = pl.display(projects=projects, display_mode=display_mode,
columns=columns, show_proj_icon=show_proj_icon,
show_download_button=show_download_button,
- show_awards_banner=show_awards_banner)
+ show_awards_banner=show_awards_banner,
+ grid_view_tools=grid_view_tools)
if show_total:
if total is None:
total = 0
@@ -235,18 +237,20 @@
@macro('neighborhood-wiki')
def projects(category=None, display_mode='grid', sort='last_updated',
show_total=False, limit=100, labels='', award='', private=False,
- columns=1, show_proj_icon=True, show_download_button=True, show_awards_banner=True):
+ columns=1, show_proj_icon=True, show_download_button=True, show_awards_banner=True,
+ grid_view_tools=''):
initial_q = dict(neighborhood_id=c.project.neighborhood_id)
return get_projects_for_macro(category=category, display_mode=display_mode, sort=sort,
show_total=show_total, limit=limit, labels=labels, award=award, private=private,
columns=columns, show_proj_icon=show_proj_icon, show_download_button=show_download_button,
- show_awards_banner=show_awards_banner,
+ show_awards_banner=show_awards_banner, grid_view_tools=grid_view_tools,
initial_q=initial_q)
@macro('userproject-wiki')
def my_projects(category=None, display_mode='grid', sort='last_updated',
show_total=False, limit=100, labels='', award='', private=False,
- columns=1, show_proj_icon=True, show_download_button=True, show_awards_banner=True):
+ columns=1, show_proj_icon=True, show_download_button=True, show_awards_banner=True,
+ grid_view_tools=''):
myproj_user = c.project.user_project_of
if myproj_user is None:
@@ -260,7 +264,7 @@
return get_projects_for_macro(category=category, display_mode=display_mode, sort=sort,
show_total=show_total, limit=limit, labels=labels, award=award, private=private,
columns=columns, show_proj_icon=show_proj_icon, show_download_button=show_download_button,
- show_awards_banner=show_awards_banner,
+ show_awards_banner=show_awards_banner, grid_view_tools=grid_view_tools,
initial_q=initial_q)
@macro()
diff --git a/Allura/allura/lib/widgets/project_list.py b/Allura/allura/lib/widgets/project_list.py
index b5e0828..b554aac 100644
--- a/Allura/allura/lib/widgets/project_list.py
+++ b/Allura/allura/lib/widgets/project_list.py
@@ -18,13 +18,24 @@
columns=1,
show_proj_icon=True,
show_download_button=True,
- show_awards_banner=True)
+ show_awards_banner=True,
+ grid_view_tools='')
def prepare_context(self, context):
response = super(ProjectSummary, self).prepare_context(context)
value = response['value']
if response['sitemap'] is None:
response['sitemap'] = [ s for s in value.sitemap() if s.url ]
+
+ if response['grid_view_tools'] != '':
+ view_tools_list = response['grid_view_tools'].split(',')
+ icon_tool_list = ["tool-%s" % vt.lower() for vt in view_tools_list]
+ old_sitemap = response['sitemap']
+ response['sitemap'] = []
+ for sm in old_sitemap:
+ if sm.ui_icon is not None and sm.ui_icon.lower() in icon_tool_list:
+ response['sitemap'].append(sm)
+
if response['icon_url'] is None:
if value.icon:
response['icon_url'] = value.url()+'icon'
@@ -89,7 +100,8 @@
columns=1,
show_proj_icon=True,
show_download_button=True,
- show_awards_banner=True)
+ show_awards_banner=True,
+ grid_view_tools='')
def prepare_context(self, context):
response = super(ProjectList, self).prepare_context(context)
diff --git a/Allura/allura/templates/neighborhood_help.html b/Allura/allura/templates/neighborhood_help.html
index 2206f4e..385cc03 100644
--- a/Allura/allura/templates/neighborhood_help.html
+++ b/Allura/allura/templates/neighborhood_help.html
@@ -26,6 +26,7 @@
<ul>
<li><code>display_mode</code> = grid/list. Default is 'grid'</li>
<li><code>show_proj_icon</code> = yes/no. Default 'yes'</li>
+ <li><code>grid_view_tools</code> = git,hg,svn,tickets,wiki... Limit the tools shown in project list. Multivalue option (example grid_view_tools=git,wiki). Default ''</li>
<li><code>show_download_button</code> = yes/no. Default 'yes'</li>
<li><code>show_awards_banner</code> = yes/no. Default 'yes'</li>
<li><code>sort</code> = last_updated/alpha/random/last_registered. Default 'last_updated'</li>
diff --git a/Allura/allura/templates/widgets/project_list_widget.html b/Allura/allura/templates/widgets/project_list_widget.html
index 6acd8ee..95ac9c5 100644
--- a/Allura/allura/templates/widgets/project_list_widget.html
+++ b/Allura/allura/templates/widgets/project_list_widget.html
@@ -16,7 +16,8 @@
columns=columns,
show_proj_icon=show_proj_icon,
show_download_button=show_download_button,
- show_awards_banner=show_awards_banner)}}
+ show_awards_banner=show_awards_banner,
+ grid_view_tools=grid_view_tools)}}
{% endif %}
{% endfor %}
{% do g.set_project(old_project) %}
diff --git a/Allura/allura/tests/test_globals.py b/Allura/allura/tests/test_globals.py
index 0557672..e5d26bf 100644
--- a/Allura/allura/tests/test_globals.py
+++ b/Allura/allura/tests/test_globals.py
@@ -227,6 +227,18 @@
r = g.markdown_wiki.convert('[[projects display_mode=list show_download_button=False]]')
assert 'download-button' not in r
+@with_setup(setUp)
+def test_limit_tools_macro():
+ g.set_app('wiki')
+ p_nbhd = M.Neighborhood.query.get(name='Adobe')
+ with h.push_context(p_nbhd.neighborhood_project._id):
+ r = g.markdown_wiki.convert('[[projects]]')
+ assert '<span>Admin</span>' in r
+ r = g.markdown_wiki.convert('[[projects grid_view_tools=wiki]]')
+ assert '<span>Admin</span>' not in r
+ r = g.markdown_wiki.convert('[[projects grid_view_tools=wiki,admin]]')
+ assert '<span>Admin</span>' in r
+
@td.with_user_project('test-admin')
@td.with_user_project('test-user-1')
@with_setup(setUp)