bloodhound-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From j...@apache.org
Subject svn commit: r1453384 - in /incubator/bloodhound/branches/bep_0003_multiproduct: ./ bloodhound_dashboard/bhdashboard/htdocs/js/ bloodhound_dashboard/bhdashboard/templates/ bloodhound_search/bhsearch/ bloodhound_search/bhsearch/tests/ bloodhound_theme/bh...
Date Wed, 06 Mar 2013 15:27:30 GMT
Author: jure
Date: Wed Mar  6 15:27:29 2013
New Revision: 1453384

URL: http://svn.apache.org/r1453384
Log:
Sync merge from trunk


Added:
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_browser.html
      - copied unchanged from r1453379, incubator/bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_browser.html
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_dir_entries.html
      - copied unchanged from r1453379, incubator/bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_dir_entries.html
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_dirlist_thead.html
      - copied unchanged from r1453379, incubator/bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_dirlist_thead.html
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_repository_index.html
      - copied unchanged from r1453379, incubator/bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_repository_index.html
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_sortable_th.html
      - copied unchanged from r1453379, incubator/bloodhound/trunk/bloodhound_theme/bhtheme/templates/bh_sortable_th.html
Modified:
    incubator/bloodhound/branches/bep_0003_multiproduct/   (props changed)
    incubator/bloodhound/branches/bep_0003_multiproduct/RELEASE_NOTES
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_dashboard/bhdashboard/htdocs/js/bloodhound-stickyscroll.js
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_dashboard/bhdashboard/templates/bh_model_view.html
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_search/bhsearch/api.py
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_search/bhsearch/query_parser.py
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_search/bhsearch/tests/__init__.py
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/htdocs/bloodhound.css
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_about.html
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_components.html
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_enums.html
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_milestones.html
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_perms.html
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_products.html
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_versions.html
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_ticket.html
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bloodhound_theme.html
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/theme.py

Propchange: incubator/bloodhound/branches/bep_0003_multiproduct/
------------------------------------------------------------------------------
  Merged /incubator/bloodhound/trunk:r1452784-1453379

Modified: incubator/bloodhound/branches/bep_0003_multiproduct/RELEASE_NOTES
URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/RELEASE_NOTES?rev=1453384&r1=1453383&r2=1453384&view=diff
==============================================================================
--- incubator/bloodhound/branches/bep_0003_multiproduct/RELEASE_NOTES (original)
+++ incubator/bloodhound/branches/bep_0003_multiproduct/RELEASE_NOTES Wed Mar  6 15:27:29
2013
@@ -2,6 +2,7 @@
 
  * Upgraded Bootstrap to version 2.3.1.
  * Upgraded Trac to version 1.0.1.
+ * Implemented Bootstrap templates for the repository browser and log viewer.
  * Various bug fixes.
 
 0.4
@@ -36,7 +37,6 @@
    * Custom text area fields break layout in ticket view
 
 
-
 0.1.0
 
  * added multi-product

Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_dashboard/bhdashboard/htdocs/js/bloodhound-stickyscroll.js
URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_dashboard/bhdashboard/htdocs/js/bloodhound-stickyscroll.js?rev=1453384&r1=1453383&r2=1453384&view=diff
==============================================================================
--- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_dashboard/bhdashboard/htdocs/js/bloodhound-stickyscroll.js
(original)
+++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_dashboard/bhdashboard/htdocs/js/bloodhound-stickyscroll.js
Wed Mar  6 15:27:29 2013
@@ -19,41 +19,40 @@
 
 $(document).ready(function stickyStatus() {
 
-  $(window).scroll(function onScroll() {
-
-    var windowWidth = $(window).width();
-
+  function stickyLogic() {
+    var windowHeight = $(window).height();
+    var headerHeight = $("header").height();
     var docViewTop = $(window).scrollTop();
-    var docViewBottom = docViewTop + $(window).height();
 
+    var headerStickyHeight = $("header #stickyStatus").height();
     var headerTop = $("header").offset().top;
-    var headerBottom = headerTop + $("header").height();
-
-    var statusTop = $("#stickyStatus").offset().top;
-    var statusBottom = statusTop + $("#stickyStatus").height();
-
-    var desktopStickyHeight = $("#stickyStatus").outerHeight();
+    var headerBottom = headerTop + headerHeight - headerStickyHeight;
 
-    if(windowWidth >= 768) {
-      if (docViewTop > headerBottom) {
-        $("#stickyStatus").addClass("sticky");
-        $(".stickyOffset").css("height", desktopStickyHeight + "px");
-      }
-      else {
-        $("#stickyStatus").removeClass("sticky");
-        $(".stickyOffset").css("height", "0px");
-      }
+    var stickyHeight;
+    if(windowHeight >= 768) {
+      headerBottom = 0;
+      $("div#breadcrumb-row div").attr('id','oldstickyStatus');
+      $("div#breadcrumb-row div").removeClass("sticky");
+      $('header').attr('id','stickyStatus');
+      stickyHeight = $("#stickyStatus").outerHeight();
     }
     else {
-      if (docViewTop > headerBottom) {
-        $("#stickyStatus").addClass("sticky");
-        $(".stickyOffset").css("height", mobileStickyHeight + "px");
-      }
-      else {
-        $("#stickyStatus").removeClass("sticky");
-        $(".stickyOffset").css("height", "0px");
-      }
+      $('header').attr('id','oldstickyStatus');
+      $("header").removeClass("sticky");
+      $("div#breadcrumb-row div").attr('id','stickyStatus');
+      stickyHeight = $("#stickyStatus").outerHeight();
     }
-
-  });
+    
+    if (docViewTop > headerBottom) {
+      $("#stickyStatus").addClass("sticky");
+      $(".stickyOffset").css("height", stickyHeight + "px");
+    }
+    else {
+      $("#stickyStatus").removeClass("sticky");
+      $(".stickyOffset").css("height", "0px");
+    }
+    $("#oldstickyStatus").removeClass("sticky");
+  };
+  $(window).scroll(stickyLogic);
+  $(window).resize(stickyLogic);
 });

Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_dashboard/bhdashboard/templates/bh_model_view.html
URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_dashboard/bhdashboard/templates/bh_model_view.html?rev=1453384&r1=1453383&r2=1453384&view=diff
==============================================================================
--- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_dashboard/bhdashboard/templates/bh_model_view.html
(original)
+++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_dashboard/bhdashboard/templates/bh_model_view.html
Wed Mar  6 15:27:29 2013
@@ -42,7 +42,7 @@
   <script type="text/javascript" src="${href.chrome('dashboard/js/bloodhound-stickyscroll.js')}"></script>
   <xi:include href="widget_macros.html" />
 
-  <div id="stickyStatus" class="span12">
+  <div class="span12">
     <div class="row">
       <div class="$colspan">
         $heading
@@ -63,8 +63,6 @@
     </div>
   </div>
 
-  <div class="stickyOffset" style="height: 0px;"></div>
-
   <div class="$colspan">
     <div py:if="ticket_query" id="overview">
       <bh:widget urn="TicketGroupStats">

Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_search/bhsearch/api.py
URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_search/bhsearch/api.py?rev=1453384&r1=1453383&r2=1453384&view=diff
==============================================================================
--- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_search/bhsearch/api.py
(original)
+++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_search/bhsearch/api.py
Wed Mar  6 15:27:29 2013
@@ -208,6 +208,14 @@ class IQueryPreprocessor(Interface):
     def query_pre_process(query_parameters):
         """Process query parameters"""
 
+
+class IMetaKeywordParser(Interface):
+    """Extension point for custom meta keywords."""
+
+    def match(text):
+        """If text matches the keyword, return its transformed value."""
+
+
 class BloodhoundSearchApi(Component):
     """Implements core indexing functionality, provides methods for
     searching, adding and deleting documents from index.

Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_search/bhsearch/query_parser.py
URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_search/bhsearch/query_parser.py?rev=1453384&r1=1453383&r2=1453384&view=diff
==============================================================================
--- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_search/bhsearch/query_parser.py
(original)
+++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_search/bhsearch/query_parser.py
Wed Mar  6 15:27:29 2013
@@ -20,12 +20,57 @@
 
 r"""Provides Bloodhound Search query parsing functionality"""
 
-from bhsearch.api import IQueryParser
+from bhsearch.api import IQueryParser, IMetaKeywordParser, ISearchParticipant
 from bhsearch.whoosh_backend import WhooshBackend
+from trac.config import ExtensionPoint
 from trac.core import Component, implements
-from whoosh import query
+from whoosh import query, qparser
 from whoosh.qparser import MultifieldParser
 
+
+class MetaKeywordNode(qparser.GroupNode):
+    def __init__(self, group_node=None, **kwargs):
+        nodes = group_node.nodes if group_node else []
+        super(MetaKeywordNode, self).__init__(nodes, kwargs=kwargs)
+
+
+class MetaKeywordPlugin(qparser.TaggingPlugin):
+    priority = 0
+    expr = r"[$](?P<text>[^ \t\r\n]+)(?= |$|\))"
+    nodetype = qparser.syntax.WordNode
+
+    def __init__(self, meta_keyword_parsers=()):
+        super(MetaKeywordPlugin, self).__init__()
+        self.meta_keyword_parsers = meta_keyword_parsers
+
+    def match(self, parser, text, pos):
+        match = qparser.TaggingPlugin.match(self, parser, text, pos)
+        if match is None:
+            return
+
+        candidate = match.text
+        for meta_keyword_parser in self.meta_keyword_parsers:
+            expanded_meta_keyword = meta_keyword_parser.match(candidate)
+            if expanded_meta_keyword is not None:
+                node = MetaKeywordNode(parser.tag(expanded_meta_keyword))
+                return node.set_range(match.startchar, match.endchar)
+
+    def filters(self, parser):
+        # must execute before GroupPlugin with priority 0
+        return [(self.unroll_meta_keyword_nodes, -100)]
+
+    def unroll_meta_keyword_nodes(self, parser, group):
+        newgroup = group.empty_copy()
+        for node in group:
+            if isinstance(node, MetaKeywordNode):
+                newgroup.extend(self.unroll_meta_keyword_nodes(parser, node))
+            elif isinstance(node, qparser.GroupNode):
+                newgroup.append(self.unroll_meta_keyword_nodes(parser, node))
+            else:
+                newgroup.append(node)
+        return newgroup
+
+
 class DefaultQueryParser(Component):
     implements(IQueryParser)
 
@@ -43,11 +88,19 @@ class DefaultQueryParser(Component):
         content = 1,
         changes = 1,
     )
-    parser = MultifieldParser(
-        field_boosts.keys(),
-        WhooshBackend.SCHEMA,
-        fieldboosts=field_boosts
-    )
+
+    meta_keyword_parsers = ExtensionPoint(IMetaKeywordParser)
+
+    def __init__(self):
+        super(DefaultQueryParser, self).__init__()
+        self.parser = MultifieldParser(
+            self.field_boosts.keys(),
+            WhooshBackend.SCHEMA,
+            fieldboosts=self.field_boosts
+        )
+        self.parser.add_plugin(
+            MetaKeywordPlugin(meta_keyword_parsers=self.meta_keyword_parsers)
+        )
 
     def parse(self, query_string):
         query_string = query_string.strip()
@@ -70,4 +123,33 @@ class DefaultQueryParser(Component):
         return query.And(parsed_filters).normalize()
 
     def _parse_filter(self, filter):
-        return self.parse(unicode(filter))
\ No newline at end of file
+        return self.parse(unicode(filter))
+
+
+class DocTypeMetaKeywordParser(Component):
+    implements(IMetaKeywordParser)
+
+    search_participants = ExtensionPoint(ISearchParticipant)
+
+    def match(self, text):
+        documents = [p.get_participant_type()
+                     for p in self.search_participants]
+        if text in documents:
+            return u'type:%s' % text
+
+
+class ResolvedMetaKeywordParser(Component):
+    implements(IMetaKeywordParser)
+
+    def match(self, text):
+        if text == u'resolved':
+            return u'status:(resolved OR closed)'
+
+
+class UnResolvedMetaKeywordParser(Component):
+    implements(IMetaKeywordParser)
+
+    def match(self, text):
+        if text == u'unresolved':
+            return u'NOT $resolved'
+

Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_search/bhsearch/tests/__init__.py
URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_search/bhsearch/tests/__init__.py?rev=1453384&r1=1453383&r2=1453384&view=diff
==============================================================================
--- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_search/bhsearch/tests/__init__.py
(original)
+++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_search/bhsearch/tests/__init__.py
Wed Mar  6 15:27:29 2013
@@ -19,7 +19,7 @@
 #  under the License.
 import unittest
 from bhsearch.tests import (whoosh_backend, index_with_whoosh, web_ui,
-                            api)
+                            api, query_parser)
 from bhsearch.tests.search_resources import (ticket_search, wiki_search,
                                              milestone_search, base)
 

Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/htdocs/bloodhound.css
URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/htdocs/bloodhound.css?rev=1453384&r1=1453383&r2=1453384&view=diff
==============================================================================
--- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/htdocs/bloodhound.css
(original)
+++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/htdocs/bloodhound.css
Wed Mar  6 15:27:29 2013
@@ -597,7 +597,7 @@ input[type="submit"].btn.btn-micro {
     padding-right: 8px;
   }
 
-  #logo, #usermenu, #breadcrumbbar {
+  #logo, #usermenu, #stickyStatus{
     float: left;
   }
 

Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_about.html
URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_about.html?rev=1453384&r1=1453383&r2=1453384&view=diff
==============================================================================
--- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_about.html
(original)
+++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_about.html
Wed Mar  6 15:27:29 2013
@@ -85,7 +85,7 @@
       </a>
       <p i18n:msg="">Please visit the Trac open source project:
         <a href="http://trac.edgewall.org/">http://trac.edgewall.org/</a></p>
-      <p class="copyright" xml:lang="en" i18n:msg="">Copyright &copy; 2003-2012
+      <p class="copyright" xml:lang="en" i18n:msg="">Copyright &copy; 2003-2013
         <a href="http://www.edgewall.org/">Edgewall Software</a>
       </p>
 

Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_components.html
URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_components.html?rev=1453384&r1=1453383&r2=1453384&view=diff
==============================================================================
--- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_components.html
(original)
+++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_components.html
Wed Mar  6 15:27:29 2013
@@ -37,13 +37,13 @@
         <label class="control-label" for="owner">Owner:</label>
         <div class="controls" py:choose="" py:strip="inline">
           <select py:when="owners" id="owner"
-                  class="input-medium" size="1" name="owner">
+                  class="input-large" size="1" name="owner">
             <option py:for="owner in owners"
                     selected="${owner==default_owner or None}" value="$owner">$owner</option>
             <option py:if="default_owner and default_owner not in owners"
                     selected="selected" value="$default_owner">$default_owner</option>
           </select>
-          <input py:otherwise="" class="input-medium" type="text" id="owner"
+          <input py:otherwise="" class="input-large" type="text" id="owner"
                  name="owner" value="$default_owner" />
         </div>
       </div>
@@ -57,7 +57,7 @@
           <div class="control-group">
             <label class="control-label" for="name">Name: </label>
             <div class="controls">
-              <input class="input-medium" type="text" id="name" name="name" value="$component.name"/>
+              <input class="input-large" type="text" id="name" name="name" value="$component.name"/>
             </div>
           </div>
           ${owner_field(component.owner)}
@@ -79,10 +79,10 @@
               </div>
             </fieldset>
           </div>
-          <div class="control-group">
-            <input class="btn" type="submit" name="save"
+          <div class="control-group buttons">
+            <input type="submit" class="btn" name="save"
                 value="${_('Save')}" />
-            <input class="btn-link" type="submit" name="cancel"
+            <input type="submit" class="btn-link" name="cancel"
                    value="${_('Cancel')}" />
           </div>
         </fieldset>
@@ -91,27 +91,29 @@
       <py:otherwise>
         <div class="row">
           <div class="span9">
-            <form id="addcomponent" class="well form-inline" method="post" action="">
+            <form id="addcomponent" class="well form-horizontal" method="post" action="">
               <fieldset>
                 <legend>Add Component:</legend>
                 <div class="control-group">
-                  <input class="btn" type="submit" name="add"
-                         value="${_('Add')}"/>
                   <label class="control-label" for="name">Name:</label>
-                  <input id="name" class="input-medium" type="text" name="name" />
-                  ${owner_field(inline=True)}
+                  <div class="controls">
+                    <input type="text" id="name" class="input-large" name="name" />
+                  </div>
+                </div>
+                ${owner_field()}
+                <div class="control-group">
+                  <input type="submit" class="btn" name="add"
+                         value="${_('Add')}"/>
                 </div>
               </fieldset>
             </form>
           </div>
-        </div>
-        <div class="row">
           <div class="span9">
             <py:choose>
               <form py:when="components" id="component_table"
                     method="post" action="">
                 <table id="complist"
-                    class="table table-striped table-condensed table-bordered">
+                       class="table table-striped table-condensed table-bordered">
                   <thead>
                     <tr><th class="sel"><i class="icon-check"></i></th>
                       <th class="full-x">Name</th><th>Owner</th><th>Default</th>
@@ -138,14 +140,13 @@
                       value="${_('Apply changes')}" />
                 </div>
                 <p class="help-block">
-                  <span class="label label-info">Notice</span>
+                  <span class="label label-info">Note</span>
                   You can remove all items from this list to completely hide this
                   field from the user interface.
                 </p>
               </form>
-
               <p py:otherwise="" class="help-block">
-                <span class="label label-warning">Warning</span>
+                <span class="label label-info">Note</span>
                 As long as you don't add any items to the list, this field
                 will remain completely hidden from the user interface.
               </p>

Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_enums.html
URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_enums.html?rev=1453384&r1=1453383&r2=1453384&view=diff
==============================================================================
--- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_enums.html
(original)
+++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_enums.html
Wed Mar  6 15:27:29 2013
@@ -42,10 +42,10 @@
               <input type="text" id="name" name="name" value="${enum.name}" />
             </div>
           </div>
-          <div class="btn-group">
-            <input class="btn" type="submit" name="save"
+          <div class="control-group buttons">
+            <input type="submit" class="btn" name="save"
                    value="${_('Save')}"/>
-            <input class="btn-link" type="submit" name="cancel"
+            <input type="submit" class="btn-link" name="cancel"
                    value="${_('Cancel')}"/>
           </div>
         </fieldset>
@@ -65,8 +65,6 @@
               </fieldset>
             </form>
           </div>
-        </div>
-        <div class="row">
           <div class="span9">
             <py:choose>
               <form py:when="enums" id="enumtable" class="form-inline" method="post" action="">
@@ -116,7 +114,7 @@
               </form>
     
               <p py:otherwise="" class="help-block">
-                <span class="label label-warning">Warning</span>
+                <span class="label label-info">Note</span>
                 As long as you don't add any items to the list, this field
                 will remain completely hidden from the user interface.
               </p>

Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_milestones.html
URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_milestones.html?rev=1453384&r1=1453383&r2=1453384&view=diff
==============================================================================
--- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_milestones.html
(original)
+++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_milestones.html
Wed Mar  6 15:27:29 2013
@@ -39,9 +39,9 @@
     <h2>Manage Milestones</h2>
 
     <py:choose test="view">
-      <form py:when="'detail'" class="well form-horizontal" method="post"
-          id="modifymilestone" action=""
-          py:with="readonly = 'MILESTONE_MODIFY' not in req.perm or None">
+      <form py:when="'detail'" id="modifymilestone"
+            class="well form-horizontal" method="post" action=""
+            py:with="readonly = 'MILESTONE_MODIFY' not in req.perm or None">
         <fieldset>
           <legend>Modify Milestone:</legend>
           <div class="control-group">
@@ -107,49 +107,41 @@
       </form>
 
       <py:otherwise>
-        <div py:if="'MILESTONE_CREATE' in req.perm" class="row">
-          <div class="span9">
-            <form id="addmilestone" class="well form-horizontal" method="post" action="">
-              <fieldset>
-                <legend>Add Milestone:</legend>
-                <div class="control-group">
-                  <label class="control-label" for="name">Name:</label>
-                  <div class="controls">
-                    <input type="text" name="name" id="name" class="input-xlarge" />
+        <div class="row">
+          <div py:if="'MILESTONE_CREATE' in req.perm">
+            <div class="span9">
+              <form id="addmilestone" class="well form-horizontal" method="post" action="">
+                <fieldset>
+                  <legend>Add Milestone:</legend>
+                  <div class="control-group">
+                    <label class="control-label" for="name">Name:</label>
+                    <div class="controls">
+                      <input type="text" name="name" id="name" class="input-xlarge" />
+                    </div>
                   </div>
-                </div>
-
-                <div class="control-group">
-                  <label class="control-label" for="duedate">Due:</label>
-                  <div class="controls">
-                    <input type="text" id="duedate"
-                        name="duedate" size="${len(datetime_hint)}"
-                        class="input-xlarge"
-                        placeholder="${_('Format: %(datehint)s', datehint=datetime_hint)}"
/>
+                  <div class="control-group">
+                    <label class="control-label" for="duedate">Due:</label>
+                    <div class="controls">
+                      <input type="text" id="duedate"
+                          name="duedate" size="${len(datetime_hint)}"
+                          class="input-xlarge"
+                          placeholder="${_('Format: %(datehint)s', datehint=datetime_hint)}"
/>
+                    </div>
                   </div>
-                </div>
-
-                <div class="control-group">
-                  <div class="controls">
+                  <div class="control-group">
                     <input class="btn" type="submit" name="add" value="${_('Add')}" />
                   </div>
-                </div>
-              </fieldset>
-            </form>
+                </fieldset>
+              </form>
+            </div>
           </div>
-        </div>
 
-        <div class="row">
           <div class="span9">
             <py:choose>
-              <form id="milestone_table" method="post" action="" class="well"
+              <form id="milestone_table" method="post" action=""
                     py:when="milestones" py:with="can_remove = 'MILESTONE_DELETE' in req.perm">
-      
-                <legend>Modify Milestones</legend>
-
                 <table id="millist"
-                    class="table table-bordered table-striped table-condensed">
-                    
+                       class="table table-bordered table-striped table-condensed">
                   <thead>
                     <tr><th py:if="can_remove"><i class="icon-check"></i></th>
                       <th class="full-x">Name</th>
@@ -188,13 +180,12 @@
                   field from the user interface.
                 </p>
               </form>
-    
               <p py:otherwise="" class="help-block">
-                <span class="label label-warning">Warning</span>
+                <span class="label label-info">Note</span>
                 As long as you don't add any items to the list, this field
                 will remain completely hidden from the user interface.
               </p>
-            </py:choose>
+          </py:choose>
           </div>
         </div>
       </py:otherwise>

Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_perms.html
URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_perms.html?rev=1453384&r1=1453383&r2=1453384&view=diff
==============================================================================
--- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_perms.html
(original)
+++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_perms.html
Wed Mar  6 15:27:29 2013
@@ -34,7 +34,67 @@
     <h2>Manage Permissions and Groups</h2>
 
     <div class="row">
-      <div class="${can_revoke and 'span6' or 'span9'}">
+      <div class="span9" py:if="'PERMISSION_GRANT' in perm">
+        <form id="addperm" class="well form-horizontal" method="post" action="">
+          <fieldset>
+            <legend>Grant Permission:</legend>
+            <div class="control-group">
+              <label class="control-label" for="gp_subject">Subject:</label>
+              <div class="controls">
+                <input type="text" id="gp_subject" class="input-large"
+                       name="subject" />
+              </div>
+            </div>
+            <div class="control-group">
+            <label class="control-label" for="action">Action:</label>
+              <div class="controls">
+                <select id="action" name="action" class="input-large">
+                  <option py:for="action in sorted(actions)">$action</option>
+                </select>
+              </div>
+            </div>
+            <div class="control-group">
+              <input type="submit" class="btn" name="add"
+                     value="${_('Add')}" />
+            </div>
+            <p class="help-block">
+              <span class="label label-info">Note</span> Grant permission
+              for an action to a subject, which can be either a user
+              or a group.
+            </p>
+          </fieldset>
+        </form>
+
+        <form id="addsubj" class="well form-horizontal" method="post" action="">
+          <fieldset>
+            <legend>Add to Group:</legend>
+            <div class="control-group">
+              <label class="control-label" for="sg_subject">Subject:</label>
+              <div class="controls">
+                <input id="sg_subject" type="text" name="subject"
+                       class="input-medium" />
+              </div>
+            </div>
+            <div class="control-group">
+              <label class="control-label" for="sg_group">Group:</label>
+              <div class="controls">
+                <input id="sg_group" type="text" name="group"
+                       class="input-medium" />
+              </div>
+            </div>
+            <div class="control-group">
+                <input type="submit" class="btn" name="add"
+                       value="${_('Add')}"/>
+            </div>
+            <p class="help-block">
+              <span class="label label-info">Note</span> Add a user or group
+              to an existing permission group.
+            </p>
+          </fieldset>
+        </form>
+      </div>
+
+      <div class="span9">
         <form id="revokeform" method="post" action="">
           <h3>Permissions</h3>
           <table class="table table-bordered table-striped table-condensed" 
@@ -109,49 +169,6 @@
         </p>
       </div>
 
-      <div class="span3" py:if="'PERMISSION_GRANT' in perm">
-        <form id="addperm" class="well" method="post" action="">
-          <fieldset>
-            <legend>Grant Permission:</legend>
-            <label for="gp_subject">Subject:</label>
-            <input class="input-medium" id="gp_subject" type="text"
-                name="subject" />
-            <label for="action">Action:</label>
-            <select id="action" name="action" class="input-medium">
-              <option py:for="action in sorted(actions)">$action</option>
-            </select>
-            <p class="help-block">
-              <span class="label label-info">Note</span> Grant permission
-              for an action to a subject, which can be either a user
-              or a group.
-            </p>
-            <div class="control-group">
-              <input class="btn" type="submit" name="add"
-                  value="${_('Add')}" />
-            </div>
-          </fieldset>
-        </form>
-    
-        <form id="addsubj" class="well" method="post" action="">
-          <fieldset>
-            <legend>Add to Group:</legend>
-            <label for="sg_subject">Subject:</label>
-            <input id="sg_subject" type="text" name="subject"
-                class="input-medium" />
-            <label for="sg_group">Group:</label>
-            <input id="sg_group" type="text" name="group"
-                class="input-medium" />
-            <p class="help-block">
-              <span class="label label-info">Note</span> Add a user or group
-              to an existing permission group.
-            </p>
-            <div class="control-group">
-              <input class="btn" type="submit" name="add"
-                  value="${_('Add')}"/>
-            </div>
-          </fieldset>
-        </form>
-      </div>
     </div>
 
   </body>

Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_products.html
URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_products.html?rev=1453384&r1=1453383&r2=1453384&view=diff
==============================================================================
--- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_products.html
(original)
+++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_products.html
Wed Mar  6 15:27:29 2013
@@ -36,14 +36,14 @@
       <div class="control-group">
         <label class="control-label" for="owner">Owner: </label>
         <div class="controls" py:choose="">
-          <select class="input-medium"
+          <select class="input-large"
               py:when="owners" size="1" id="owner" name="owner">
             <option py:for="owner in owners"
                     selected="${owner==default_owner or None}" value="$owner">$owner</option>
             <option py:if="default_owner and default_owner not in owners"
                     selected="selected" value="$default_owner">$default_owner</option>
           </select>
-          <input py:otherwise="" class="input-medium" type="text" id="owner"
+          <input py:otherwise="" class="input-large" type="text" id="owner"
               name="owner" value="$default_owner" />
         </div>
       </div>
@@ -96,7 +96,32 @@
 
       <py:otherwise>
         <div class="row">
-          <div class="span6">
+          <div class="span9">
+            <form id="addproduct" class="well form-horizontal" method="post" action="">
+              <fieldset>
+                <legend>Add Product:</legend>
+                <div class="control-group">
+                  <label class="control-label" for="prefix">Prefix:</label>
+                  <div class="controls">
+                    <input type="text" id="prefix" class="input-large"
+                           name="prefix" />
+                  </div>
+                </div>
+                <div class="control-group">
+                  <label class="control-label" for="name">Name:</label>
+                  <div class="controls">
+                    <input type="text" id="name" class="input-large" name="name" />
+                  </div>
+                </div>
+                ${owner_field()}
+                <div class="control-group">
+                  <input type="submit" class="btn" name="add"
+                         value="${_('Add')}" />
+                </div>
+              </fieldset>
+            </form>
+          </div>
+          <div class="span9">
             <py:choose>
               <form py:when="products" id="product_table" method="post" action="">
                 <table id="prodlist"
@@ -130,33 +155,19 @@
                       value="${_('Apply changes')}" />
                 </div>
                 <p class="help-block">
-                  <span class="label label-info">Notice</span>
+                  <span class="label label-info">Note</span>
                   You can remove all items from this list to completely hide this
                   field from the user interface.
                 </p>
               </form>
     
               <p py:otherwise="" class="help-block">
-                <span class="label label-warning">Warning</span>
+                <span class="label label-info">Note</span>
                 As long as you don't add any items to the list, this field
                 will remain completely hidden from the user interface.
               </p>
             </py:choose>
           </div>
-          <div class="span3">
-            <form class="well" id="addproduct" method="post" action="">
-              <fieldset>
-                <legend>Add Product:</legend>
-                <label for="prefix">Prefix:</label>
-                <input class="input-medium" type="text" id="prefix" name="prefix" />
-                <label for="name">Name:</label>
-                <input class="input-medium" type="text" id="name" name="name" />
-                ${owner_field()}
-                <input class="btn" type="submit" name="add"
-                    value="${_('Add')}"/>
-              </fieldset>
-            </form>
-          </div>
         </div>
 
       </py:otherwise>

Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_versions.html
URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_versions.html?rev=1453384&r1=1453383&r2=1453384&view=diff
==============================================================================
--- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_versions.html
(original)
+++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_admin_versions.html
Wed Mar  6 15:27:29 2013
@@ -85,23 +85,29 @@
       <py:otherwise>
         <div class="row">
           <div class="span9">
-            <form class="well form-inline" id="addversion" method="post" action="">
+            <form id="addversion" class="well form-horizontal" method="post" action="">
               <fieldset>
                 <legend>Add Version:</legend>
-                <input class="btn" type="submit" name="add"
-                       value="${_('Add')}" />
-                <label class="control-label" for="name">Name:</label>
-                <input class="input-medium" type="text" name="name"
-                       id="name" size="22" />
-                <label class="control-label" for="releaseddate">Released:</label>
-                <input type="text" id="releaseddate"
-                       name="time" size="${len(datetime_hint)}"
-                       value="${format_datetime()}" />
+                <div class="control-group">
+                  <label class="control-label" for="name">Name:</label>
+                  <div class="controls">
+                    <input type="text" id="name" class="input-large" name="name" />
+                  </div>
+                </div>
+                <div class="control-group">
+                  <label class="control-label" for="releaseddate">Released:</label>
+                  <div class="controls">
+                    <input type="text" id="releaseddate"
+                           name="time" size="${len(datetime_hint)}"
+                           value="${format_datetime()}" />
+                    </div>
+                </div>
+                <div class="control-group">
+                  <input type="submit" class="btn" name="add" value="${_('Add')}" />
+                </div>
               </fieldset>
             </form>
           </div>
-        </div>
-        <div class="row">
           <div class="span9">
             <py:choose>
               <form py:when="versions" id="version_table" method="post" action="">
@@ -139,7 +145,7 @@
               </form>
     
               <p py:otherwise="" class="help-block">
-                <span class="label label-warning">Warning</span>
+                <span class="label label-info">Note</span>
                 As long as you don't add any items to the list, this field
                 will remain completely hidden from the user interface.
               </p>

Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_ticket.html
URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_ticket.html?rev=1453384&r1=1453383&r2=1453384&view=diff
==============================================================================
--- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_ticket.html
(original)
+++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bh_ticket.html
Wed Mar  6 15:27:29 2013
@@ -283,8 +283,8 @@
           </py:if>
           <input id="hidden-comment" type="hidden" name="comment" value="" />
 
-          <!--! ticket + activity sticky -->
-          <div id="stickyStatus" class="span12">
+          <!--! ticket + activity headers -->
+          <div class="span12">
             <div class="row">
               <!--! ticket info -->
               <div class="$colspan">
@@ -328,7 +328,6 @@
 
           <div id="content" class="span8">
             <div id="belowStatus">
-              <div class="stickyOffset" style="height: 0px;"></div>
 
               <!--! ticket details -->
               <py:if test="ticket.exists">

Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bloodhound_theme.html
URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bloodhound_theme.html?rev=1453384&r1=1453383&r2=1453384&view=diff
==============================================================================
--- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bloodhound_theme.html
(original)
+++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_theme/bhtheme/templates/bloodhound_theme.html
Wed Mar  6 15:27:29 2013
@@ -234,9 +234,11 @@
               </li>
             </ul>
           </div>
+        </div>
 
+        <div class="row" id="breadcrumb-row">
           <!--! breadcrumb (TODO: which ones do we hide on the phones/tablets?) -->
-          <div id="breadcrumbbar" class="span12">
+          <div id="stickyStatus" class="span12">
             <ul class="breadcrumb">
               <li py:if="admin_product_list">
                 <div class="btn-group">
@@ -308,6 +310,7 @@
           </div>
         </div>
       </header>
+      <div class="stickyOffset" style="height: 0px;"></div>
 
       <!--! main content -->
       ${select('*|text()|comment()')}

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=1453384&r1=1453383&r2=1453384&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  6 15:27:29 2013
@@ -65,7 +65,7 @@ class BloodhoundTheme(ThemeBase):
     disable_all_trac_css = True
     BLOODHOUND_KEEP_CSS = set(
         (
-            'diff.css',
+            'diff.css', 'code.css'
         )
     )
     BLOODHOUND_TEMPLATE_MAP = {
@@ -120,7 +120,9 @@ class BloodhoundTheme(ThemeBase):
         'preview_file.html' : ('bh_preview_file.html', None),
 
         # Version control
-        'revisionlog.html' : ('bh_revisionlog.html', '_modify_generic_vcs'),
+        'revisionlog.html' : ('bh_revisionlog.html', '_modify_browser'),
+        'browser.html' : ('bh_browser.html', '_modify_browser'),
+        'dir_entries.html' : ('bh_dir_entries.html', None),
 
         # Multi Product
         'product_view.html' : ('bh_product_view.html', None),
@@ -372,13 +374,15 @@ class BloodhoundTheme(ThemeBase):
         else:
             data['admin_current_product'] = glsettings
 
-    def _modify_generic_vcs(self, req, template, data, content_type, is_active):
+    def _modify_browser(self, req, template, data, content_type, is_active):
         """Locate path to file in breadcrumbs area rather than title.
+        Add browser-specific CSS.
         """
         data.update(dict(
                 resourcepath_template='bh_path_links.html',
                 path_depth_limit=2
             ))
+        add_stylesheet(req, 'theme/css/browser.css')
 
     # INavigationContributor methods
 



Mime
View raw message