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)