allura
修訂 | 4bb9d49ef965c359b72b9684d206238351bc1406 (tree) |
---|---|
時間 | 2012-05-16 18:42:34 |
作者 | bolkimen <bolkimen@yaho...> |
Commiter | bolkimen |
ticket:52 add grid_view_tools option
@@ -135,6 +135,7 @@ def project_blog_posts(max_number=5, sort='timestamp', summary=False, mount_poin | ||
135 | 135 | def get_projects_for_macro(category=None, display_mode='grid', sort='last_updated', |
136 | 136 | show_total=False, limit=100, labels='', award='', private=False, |
137 | 137 | columns=1, show_proj_icon=True, show_download_button=True, show_awards_banner=True, |
138 | + grid_view_tools='', | |
138 | 139 | initial_q={}): |
139 | 140 | from allura.lib.widgets.project_list import ProjectList |
140 | 141 | from allura.lib import utils |
@@ -220,7 +221,8 @@ def get_projects_for_macro(category=None, display_mode='grid', sort='last_update | ||
220 | 221 | response = pl.display(projects=projects, display_mode=display_mode, |
221 | 222 | columns=columns, show_proj_icon=show_proj_icon, |
222 | 223 | show_download_button=show_download_button, |
223 | - show_awards_banner=show_awards_banner) | |
224 | + show_awards_banner=show_awards_banner, | |
225 | + grid_view_tools=grid_view_tools) | |
224 | 226 | if show_total: |
225 | 227 | if total is None: |
226 | 228 | total = 0 |
@@ -235,18 +237,20 @@ def get_projects_for_macro(category=None, display_mode='grid', sort='last_update | ||
235 | 237 | @macro('neighborhood-wiki') |
236 | 238 | def projects(category=None, display_mode='grid', sort='last_updated', |
237 | 239 | show_total=False, limit=100, labels='', award='', private=False, |
238 | - columns=1, show_proj_icon=True, show_download_button=True, show_awards_banner=True): | |
240 | + columns=1, show_proj_icon=True, show_download_button=True, show_awards_banner=True, | |
241 | + grid_view_tools=''): | |
239 | 242 | initial_q = dict(neighborhood_id=c.project.neighborhood_id) |
240 | 243 | return get_projects_for_macro(category=category, display_mode=display_mode, sort=sort, |
241 | 244 | show_total=show_total, limit=limit, labels=labels, award=award, private=private, |
242 | 245 | columns=columns, show_proj_icon=show_proj_icon, show_download_button=show_download_button, |
243 | - show_awards_banner=show_awards_banner, | |
246 | + show_awards_banner=show_awards_banner, grid_view_tools=grid_view_tools, | |
244 | 247 | initial_q=initial_q) |
245 | 248 | |
246 | 249 | @macro('userproject-wiki') |
247 | 250 | def my_projects(category=None, display_mode='grid', sort='last_updated', |
248 | 251 | show_total=False, limit=100, labels='', award='', private=False, |
249 | - columns=1, show_proj_icon=True, show_download_button=True, show_awards_banner=True): | |
252 | + columns=1, show_proj_icon=True, show_download_button=True, show_awards_banner=True, | |
253 | + grid_view_tools=''): | |
250 | 254 | |
251 | 255 | myproj_user = c.project.user_project_of |
252 | 256 | if myproj_user is None: |
@@ -260,7 +264,7 @@ def my_projects(category=None, display_mode='grid', sort='last_updated', | ||
260 | 264 | return get_projects_for_macro(category=category, display_mode=display_mode, sort=sort, |
261 | 265 | show_total=show_total, limit=limit, labels=labels, award=award, private=private, |
262 | 266 | columns=columns, show_proj_icon=show_proj_icon, show_download_button=show_download_button, |
263 | - show_awards_banner=show_awards_banner, | |
267 | + show_awards_banner=show_awards_banner, grid_view_tools=grid_view_tools, | |
264 | 268 | initial_q=initial_q) |
265 | 269 | |
266 | 270 | @macro() |
@@ -18,13 +18,24 @@ class ProjectSummary(ew_core.Widget): | ||
18 | 18 | columns=1, |
19 | 19 | show_proj_icon=True, |
20 | 20 | show_download_button=True, |
21 | - show_awards_banner=True) | |
21 | + show_awards_banner=True, | |
22 | + grid_view_tools='') | |
22 | 23 | |
23 | 24 | def prepare_context(self, context): |
24 | 25 | response = super(ProjectSummary, self).prepare_context(context) |
25 | 26 | value = response['value'] |
26 | 27 | if response['sitemap'] is None: |
27 | 28 | response['sitemap'] = [ s for s in value.sitemap() if s.url ] |
29 | + | |
30 | + if response['grid_view_tools'] != '': | |
31 | + view_tools_list = response['grid_view_tools'].split(',') | |
32 | + icon_tool_list = ["tool-%s" % vt.lower() for vt in view_tools_list] | |
33 | + old_sitemap = response['sitemap'] | |
34 | + response['sitemap'] = [] | |
35 | + for sm in old_sitemap: | |
36 | + if sm.ui_icon is not None and sm.ui_icon.lower() in icon_tool_list: | |
37 | + response['sitemap'].append(sm) | |
38 | + | |
28 | 39 | if response['icon_url'] is None: |
29 | 40 | if value.icon: |
30 | 41 | response['icon_url'] = value.url()+'icon' |
@@ -89,7 +100,8 @@ class ProjectList(ew_core.Widget): | ||
89 | 100 | columns=1, |
90 | 101 | show_proj_icon=True, |
91 | 102 | show_download_button=True, |
92 | - show_awards_banner=True) | |
103 | + show_awards_banner=True, | |
104 | + grid_view_tools='') | |
93 | 105 | |
94 | 106 | def prepare_context(self, context): |
95 | 107 | response = super(ProjectList, self).prepare_context(context) |
@@ -26,6 +26,7 @@ | ||
26 | 26 | <ul> |
27 | 27 | <li><code>display_mode</code> = grid/list. Default is 'grid'</li> |
28 | 28 | <li><code>show_proj_icon</code> = yes/no. Default 'yes'</li> |
29 | + <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> | |
29 | 30 | <li><code>show_download_button</code> = yes/no. Default 'yes'</li> |
30 | 31 | <li><code>show_awards_banner</code> = yes/no. Default 'yes'</li> |
31 | 32 | <li><code>sort</code> = last_updated/alpha/random/last_registered. Default 'last_updated'</li> |
@@ -16,7 +16,8 @@ | ||
16 | 16 | columns=columns, |
17 | 17 | show_proj_icon=show_proj_icon, |
18 | 18 | show_download_button=show_download_button, |
19 | - show_awards_banner=show_awards_banner)}} | |
19 | + show_awards_banner=show_awards_banner, | |
20 | + grid_view_tools=grid_view_tools)}} | |
20 | 21 | {% endif %} |
21 | 22 | {% endfor %} |
22 | 23 | {% do g.set_project(old_project) %} |
@@ -227,6 +227,18 @@ def test_projects_macro(): | ||
227 | 227 | r = g.markdown_wiki.convert('[[projects display_mode=list show_download_button=False]]') |
228 | 228 | assert 'download-button' not in r |
229 | 229 | |
230 | +@with_setup(setUp) | |
231 | +def test_limit_tools_macro(): | |
232 | + g.set_app('wiki') | |
233 | + p_nbhd = M.Neighborhood.query.get(name='Adobe') | |
234 | + with h.push_context(p_nbhd.neighborhood_project._id): | |
235 | + r = g.markdown_wiki.convert('[[projects]]') | |
236 | + assert '<span>Admin</span>' in r | |
237 | + r = g.markdown_wiki.convert('[[projects grid_view_tools=wiki]]') | |
238 | + assert '<span>Admin</span>' not in r | |
239 | + r = g.markdown_wiki.convert('[[projects grid_view_tools=wiki,admin]]') | |
240 | + assert '<span>Admin</span>' in r | |
241 | + | |
230 | 242 | @td.with_user_project('test-admin') |
231 | 243 | @td.with_user_project('test-user-1') |
232 | 244 | @with_setup(setUp) |