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 © 2003-2012
+ <p class="copyright" xml:lang="en" i18n:msg="">Copyright © 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