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) &lt; 
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())


Reply via email to