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())