Author: matevz Date: Wed Mar 13 09:45:40 2013 New Revision: 1455852 URL: http://svn.apache.org/r1455852 Log: #324 - Multiproducts UI: (Meta) navigation (breadcrumb dropdown for milestones)
Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_path_general.html incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_path_ticket.html incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/theme.py Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_path_general.html URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_path_general.html?rev=1455852&r1=1455851&r2=1455852&view=diff ============================================================================== --- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_path_general.html (original) +++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_path_general.html Wed Mar 13 09:45:40 2013 @@ -40,7 +40,30 @@ <li py:for="prefix,name in product_list"> <a title="Product $name ($prefix)" href="${href.products(prefix)}">$name ($prefix)</a> </li> + <li class="divider"></li> + <li><a title="Back to products" href="${href.products()}">All products</a></li> </ul> </py:if> </div> + <py:if test="milestone" + py:with="single_milestone = not milestone_list or len(milestone_list) < 2"> + <li><span class="divider">/</span></li> + <div class="btn-group" py:strip="single_milestone"> + <button class="btn btn-mini" py:strip="single_milestone"> + <a title="Current milestone" href="${href.milestone(milestone.name)}">${milestone.name}</a> + </button> + <py:if test="not single_milestone"> + <button class="btn btn-mini dropdown-toggle" data-toggle="dropdown"> + <span class="caret"></span> + </button> + <ul class="dropdown-menu"> + <li py:for="name in milestone_list"> + <a title="Milestone $name" href="${href.milestone(name)}">$name</a> + </li> + <li class="divider"></li> + <li><a title="Back to roadmap" href="${href.roadmap()}">Roadmap</a></li> + </ul> + </py:if> + </div> + </py:if> </div> Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_path_ticket.html URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_path_ticket.html?rev=1455852&r1=1455851&r2=1455852&view=diff ============================================================================== --- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_path_ticket.html (original) +++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_path_ticket.html Wed Mar 13 09:45:40 2013 @@ -23,17 +23,9 @@ xmlns:xi="http://www.w3.org/2001/XInclude" py:strip=""> - <py:if test="ticket.product"> - <xi:include href="bh_path_general.html" /> - <li><span class="divider">/</span></li> - </py:if> - - <li py:if="ticket.milestone" py:with="mslink = path_show_milestone and href.milestone(ticket.milestone) or href.query(milestone=ticket['milestone'], active='!closed')"> - <a title="Active tickets in milestone ${ticket.milestone}" - href="${mslink}"> - ${ticket.milestone} - </a> + <xi:include href="bh_path_general.html" /> + <li> <span class="divider">/</span> + <span>Ticket #${ticket.id}</span> </li> - <li><span>Ticket #${ticket.id}</span></li> </div> Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/theme.py URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/theme.py?rev=1455852&r1=1455851&r2=1455852&view=diff ============================================================================== --- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/theme.py (original) +++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/theme.py Wed Mar 13 09:45:40 2013 @@ -29,7 +29,7 @@ from trac.config import ListOption from trac.mimeview.api import get_mimetype from trac.resource import Resource from trac.ticket.api import TicketSystem -from trac.ticket.model import Ticket +from trac.ticket.model import Ticket, Milestone from trac.ticket.notification import TicketNotifyEmail from trac.ticket.web_ui import TicketModule from trac.util.compat import set @@ -107,10 +107,10 @@ class BloodhoundTheme(ThemeBase): 'wiki_view.html' : ('bh_wiki_view.html', '_modify_wiki_page_path'), # Ticket - 'milestone_edit.html' : ('bh_milestone_edit.html', '_add_products_general_breadcrumb'), - 'milestone_delete.html' : ('bh_milestone_delete.html', '_add_products_general_breadcrumb'), + 'milestone_edit.html' : ('bh_milestone_edit.html', '_modify_roadmap_page'), + 'milestone_delete.html' : ('bh_milestone_delete.html', '_modify_roadmap_page'), 'milestone_view.html' : ('bh_milestone_view.html', '_modify_roadmap_page'), - 'roadmap.html' : ('roadmap.html', '_add_products_general_breadcrumb'), + 'roadmap.html' : ('roadmap.html', '_modify_roadmap_page'), 'query.html' : ('bh_query.html', '_add_products_general_breadcrumb'), 'report_delete.html' : ('bh_report_delete.html', '_add_products_general_breadcrumb'), 'report_edit.html' : ('bh_report_edit.html', '_add_products_general_breadcrumb'), @@ -329,6 +329,8 @@ class BloodhoundTheme(ThemeBase): add_stylesheet(req, 'dashboard/css/roadmap.css') self._add_products_general_breadcrumb(req, template, data, content_type, is_active) + data['milestone_list'] = [m.name for m in Milestone.select(self.env)] + req.chrome['ctxtnav'] = [] def _modify_ticket(self, req, template, data, content_type, is_active): """Ticket modifications @@ -366,9 +368,13 @@ class BloodhoundTheme(ThemeBase): res = Resource(resname, data['ticket'][resname]) data['path_show_' + resname] = permname in req.perm(res) - # add list of products available to this user + # add list of products available to this user, and their milestones data['product_list'] = [(p.prefix, p.name) for p in self._get_product_list(req)] + data['milestone_list'] = [m.name for m in Milestone.select(self.env)] + mname = data['ticket']['milestone'] + if mname: + data['milestone'] = Milestone(self.env, mname) def _modify_admin_breadcrumb(self, req, template, data, content_type, is_active): glsettings = (_('(Global settings)'), req.href.admin())