client/rhel
by Šimon Lukašík
client/rhel/spacewalk-oscap/scap.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
New commits:
commit 7b68d2d5e505d39d4089b019aa014c095b96b268
Author: Simon Lukasik <slukasik(a)redhat.com>
Date: Tue Oct 15 17:07:43 2013 +0200
Improve logged error message.
Related: f6d747158f07af9fb5006b1cccd52f9e9c11badb
Addressing ugly message as (not the cause):
D: Excluding "%s" file from upload. Not an XML./tmp/tmpL8_Ei4/xccdf-report.html
diff --git a/client/rhel/spacewalk-oscap/scap.py b/client/rhel/spacewalk-oscap/scap.py
index f2c50e5..6ccea9a 100644
--- a/client/rhel/spacewalk-oscap/scap.py
+++ b/client/rhel/spacewalk-oscap/scap.py
@@ -143,7 +143,7 @@ def _upload_results(xccdf_result, results_dir, args):
def _upload_file(server, systemid, args, path, filename, f):
if filename != 'xccdf-report.html' and not _assert_xml(f):
- log.log_debug('Excluding "%s" file from upload. Not an XML.', path)
+ log.log_debug('Excluding "%s" file from upload. Not an XML.' % path)
return '\nxccdf_eval: File "%s" not uploaded. Not an XML file format.' % filename
stat = os.fstat(f.fileno())
10 years, 6 months
Changes to 'refs/tags/spacewalk-backend-2.1.28-1'
by Michael Mraka
Tag 'spacewalk-backend-2.1.28-1' created by Michael Mraka <michael.mraka(a)redhat.com> at 2013-10-15 12:32 +0000
Tagging package [spacewalk-backend] version [2.1.28-1] in directory [backend/].
Changes since spacewalk-web-2.1.25-1:
Flavio Castelli (1):
python pgsql tests: made easier Jenkins integration
Michael Mraka (1):
Automatic commit of package [spacewalk-backend] release [2.1.28-1].
---
backend/spacewalk-backend.spec | 5 ++
backend/test/non-unit/server/rhnSQL/dbtests.py | 45 -------------------------
backend/test/runtests-postgresql.py | 42 +++++++++++++++++++++--
rel-eng/packages/spacewalk-backend | 2 -
4 files changed, 44 insertions(+), 50 deletions(-)
---
10 years, 6 months
2 commits - backend/spacewalk-backend.spec backend/test rel-eng/packages
by Michael Mraka
backend/spacewalk-backend.spec | 5 ++
backend/test/non-unit/server/rhnSQL/dbtests.py | 45 -------------------------
backend/test/runtests-postgresql.py | 42 +++++++++++++++++++++--
rel-eng/packages/spacewalk-backend | 2 -
4 files changed, 44 insertions(+), 50 deletions(-)
New commits:
commit ffb62fc9eb96ae75342c7872d1a2267644b214c8
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Tue Oct 15 14:32:49 2013 +0200
Automatic commit of package [spacewalk-backend] release [2.1.28-1].
diff --git a/backend/spacewalk-backend.spec b/backend/spacewalk-backend.spec
index 1562ee7..a4bbd9a 100644
--- a/backend/spacewalk-backend.spec
+++ b/backend/spacewalk-backend.spec
@@ -11,7 +11,7 @@ Name: spacewalk-backend
Summary: Common programs needed to be installed on the Spacewalk servers/proxies
Group: Applications/Internet
License: GPLv2
-Version: 2.1.27
+Version: 2.1.28
Release: 1%{?dist}
URL: https://fedorahosted.org/spacewalk
Source0: https://fedorahosted.org/releases/s/p/spacewalk/%{name}-%{version}.tar.gz
@@ -627,6 +627,9 @@ rm -f %{rhnconf}/rhnSecret.py*
%{pythonrhnroot}/satellite_tools/exporter/xmlWriter.py*
%changelog
+* Tue Oct 15 2013 Michael Mraka <michael.mraka(a)redhat.com> 2.1.28-1
+- python pgsql tests: made easier Jenkins integration
+
* Wed Oct 09 2013 Michael Mraka <michael.mraka(a)redhat.com> 2.1.27-1
- cleaning up old svn Ids
diff --git a/rel-eng/packages/spacewalk-backend b/rel-eng/packages/spacewalk-backend
index 18193f9..37e8bc2 100644
--- a/rel-eng/packages/spacewalk-backend
+++ b/rel-eng/packages/spacewalk-backend
@@ -1 +1 @@
-2.1.27-1 backend/
+2.1.28-1 backend/
commit 9a4621630b54aea3c2822a65a50784363f9f4f9d
Author: Flavio Castelli <fcastelli(a)suse.com>
Date: Tue Oct 15 14:17:12 2013 +0200
python pgsql tests: made easier Jenkins integration
Made easier to run the pgsql tests using nosetests in conjunction with
the 'with-xunit'.
Invoking:
nosetests --with-xunit --xunit-file pgsql_tests.xml runtests-postgresql.py
will produce an xml file which can be parsed by Jenkins.
Invoking the script in the old way still works as expected.
diff --git a/backend/test/non-unit/server/rhnSQL/dbtests.py b/backend/test/non-unit/server/rhnSQL/dbtests.py
index ff51148..0fa703a 100644
--- a/backend/test/non-unit/server/rhnSQL/dbtests.py
+++ b/backend/test/non-unit/server/rhnSQL/dbtests.py
@@ -201,44 +201,6 @@ class RhnSQLDatabaseTests(unittest.TestCase):
-class PostgreSQLDatabaseTests(RhnSQLDatabaseTests):
- QUERY_CREATE_TABLE = """
- CREATE TABLE %s(id INT, name TEXT, num NUMERIC(5,2))
- """
-
- SIMPLE_PROCEDURE = """
-CREATE OR REPLACE FUNCTION return_int(returnme INTEGER) RETURNS int AS $$
-DECLARE
- myInt int;
-BEGIN
- myInt := returnme;
- RETURN myInt;
-END
-$$ LANGUAGE 'plpgsql';
- """
-
- def setUp(self):
- self.set_temp_table()
- create_table_query = self.QUERY_CREATE_TABLE % self.temp_table
- cursor = rhnSQL.prepare(create_table_query)
- cursor.execute()
-
- RhnSQLDatabaseTests.setUp(self)
-
- cursor = rhnSQL.prepare(self.SIMPLE_PROCEDURE)
- cursor.execute()
-
- def tearDown(self):
- try:
- cursor = rhnSQL.prepare("DROP FUNCTION return_int(returnme integer)")
- cursor.execute()
- except:
- pass
-
- RhnSQLDatabaseTests.tearDown(self)
-
-
-
class OracleDatabaseTests(RhnSQLDatabaseTests):
QUERY_CREATE_TABLE = """
CREATE TABLE %s(id NUMBER, name VARCHAR2(256), num NUMBER(5,2))
@@ -270,13 +232,6 @@ END;
RhnSQLDatabaseTests.tearDown(self)
-
-
-def postgresql_suite():
- suite = unittest.TestSuite()
- suite.addTest(unittest.makeSuite(PostgreSQLDatabaseTests))
- return suite
-
def oracle_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(OracleDatabaseTests))
diff --git a/backend/test/runtests-postgresql.py b/backend/test/runtests-postgresql.py
index 0a10ec7..f647331 100755
--- a/backend/test/runtests-postgresql.py
+++ b/backend/test/runtests-postgresql.py
@@ -48,11 +48,47 @@ rhnSQL.initDB(backend="postgresql", host=PG_HOST, username=PG_USER,
rhnSQL.initDB(backend="postgresql", host=PG_HOST, username=PG_USER,
password=PG_PASSWORD, database=PG_DATABASE)
+class PostgreSQLDatabaseTests(dbtests.RhnSQLDatabaseTests):
+ QUERY_CREATE_TABLE = """
+ CREATE TABLE %s(id INT, name TEXT, num NUMERIC(5,2))
+ """
+
+ SIMPLE_PROCEDURE = """
+CREATE OR REPLACE FUNCTION return_int(returnme INTEGER) RETURNS int AS $$
+DECLARE
+ myInt int;
+BEGIN
+ myInt := returnme;
+ RETURN myInt;
+END
+$$ LANGUAGE 'plpgsql';
+ """
+
+ def setUp(self):
+ self.set_temp_table()
+ create_table_query = self.QUERY_CREATE_TABLE % self.temp_table
+ cursor = rhnSQL.prepare(create_table_query)
+ cursor.execute()
+
+ dbtests.RhnSQLDatabaseTests.setUp(self)
+
+ cursor = rhnSQL.prepare(self.SIMPLE_PROCEDURE)
+ cursor.execute()
+
+ def tearDown(self):
+ try:
+ cursor = rhnSQL.prepare("DROP FUNCTION return_int(returnme integer)")
+ cursor.execute()
+ except:
+ pass
+
+ dbtests.RhnSQLDatabaseTests.tearDown(self)
+
def suite():
+ s = unittest.TestSuite()
+ s.addTest(unittest.makeSuite(PostgreSQLDatabaseTests))
# Append all test suites here:
- return unittest.TestSuite((
- dbtests.postgresql_suite(),
- ))
+ return unittest.TestSuite(s)
if __name__ == "__main__":
try:
10 years, 6 months
Changes to 'refs/tags/spacewalk-web-2.1.25-1'
by Michael Mraka
Tag 'spacewalk-web-2.1.25-1' created by Michael Mraka <michael.mraka(a)redhat.com> at 2013-10-15 12:11 +0000
Tagging package [spacewalk-web] version [2.1.25-1] in directory [web/].
Changes since spacewalk-koan-2.1.3-1:
Michael Mraka (2):
1018194 - convert empty string to NULL
Automatic commit of package [spacewalk-web] release [2.1.25-1].
---
rel-eng/packages/spacewalk-web | 2 +-
web/modules/rhn/RHN/DB/User.pm | 5 +++--
web/spacewalk-web.spec | 5 ++++-
3 files changed, 8 insertions(+), 4 deletions(-)
---
10 years, 6 months
2 commits - rel-eng/packages web/modules web/spacewalk-web.spec
by Michael Mraka
rel-eng/packages/spacewalk-web | 2 +-
web/modules/rhn/RHN/DB/User.pm | 5 +++--
web/spacewalk-web.spec | 5 ++++-
3 files changed, 8 insertions(+), 4 deletions(-)
New commits:
commit 4a66496a0f3aaf79af1aceee1404bbbc2d32d37a
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Tue Oct 15 14:11:32 2013 +0200
Automatic commit of package [spacewalk-web] release [2.1.25-1].
diff --git a/rel-eng/packages/spacewalk-web b/rel-eng/packages/spacewalk-web
index 607a390..c875299 100644
--- a/rel-eng/packages/spacewalk-web
+++ b/rel-eng/packages/spacewalk-web
@@ -1 +1 @@
-2.1.24-1 web/
+2.1.25-1 web/
diff --git a/web/spacewalk-web.spec b/web/spacewalk-web.spec
index cf986d8..ca32265 100644
--- a/web/spacewalk-web.spec
+++ b/web/spacewalk-web.spec
@@ -4,7 +4,7 @@ Name: spacewalk-web
Summary: Spacewalk Web site - Perl modules
Group: Applications/Internet
License: GPLv2
-Version: 2.1.24
+Version: 2.1.25
Release: 1%{?dist}
URL: https://fedorahosted.org/spacewalk/
Source0: https://fedorahosted.org/releases/s/p/spacewalk/%{name}-%{version}.tar.gz
@@ -271,6 +271,9 @@ rm -rf $RPM_BUILD_ROOT
%doc LICENSE
%changelog
+* Tue Oct 15 2013 Michael Mraka <michael.mraka(a)redhat.com> 2.1.25-1
+- 1018194 - convert empty string to NULL
+
* Wed Oct 09 2013 Michael Mraka <michael.mraka(a)redhat.com> 2.1.24-1
- cleaning up old svn Ids
commit 31417d7596d416002ddd97b8b4ccb65b2f2b0df4
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Tue Oct 15 14:06:39 2013 +0200
1018194 - convert empty string to NULL
diff --git a/web/modules/rhn/RHN/DB/User.pm b/web/modules/rhn/RHN/DB/User.pm
index bb97097..16870fc 100644
--- a/web/modules/rhn/RHN/DB/User.pm
+++ b/web/modules/rhn/RHN/DB/User.pm
@@ -1038,8 +1038,9 @@ sub verify_channel_role {
my $sth = $dbh->prepare(<<EOQ);
select rhn_channel.user_role_check(:cid, :user_id, :role) from dual
EOQ
-
- my $result = $sth->execute_h(cid => $channel_id,
+ # channel_id is always > 0 because rhn_channel_id_seq starts at 101
+ # so next ternary operator is safe way to turn '' to NULL
+ my $result = $sth->execute_h(cid => ($channel_id ? $channel_id : undef),
user_id => $self->id,
role => $role,
);
10 years, 6 months
Branch 'bootstrap-css' - 23 commits - branding/css java/code web/html
by Silvio Moioli
branding/css/spacewalk.less | 30
java/code/src/com/redhat/rhn/frontend/html/BaseTag.java | 19
java/code/src/com/redhat/rhn/frontend/taglibs/ListDisplayTag.java | 299 ++++-----
java/code/src/com/redhat/rhn/frontend/taglibs/list/AlphaBarHelper.java | 24
java/code/src/com/redhat/rhn/frontend/taglibs/list/CSVTag.java | 7
java/code/src/com/redhat/rhn/frontend/taglibs/list/DataSetManipulator.java | 51 -
java/code/src/com/redhat/rhn/frontend/taglibs/list/ListCommand.java | 4
java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTag.java | 332 +++++-----
java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTagUtil.java | 69 +-
java/code/src/com/redhat/rhn/frontend/taglibs/list/SpanTag.java | 2
java/code/src/com/redhat/rhn/frontend/taglibs/list/decorators/AddToSsmDecorator.java | 18
java/code/src/com/redhat/rhn/frontend/taglibs/list/decorators/PageSizeDecorator.java | 5
java/code/src/com/redhat/rhn/frontend/taglibs/list/decorators/SelectableDecorator.java | 12
java/code/src/com/redhat/rhn/frontend/taglibs/list/test/ListTagTest.java | 4
java/code/webapp/WEB-INF/decorators/layout_head.jsp | 5
java/code/webapp/WEB-INF/includes/footer.jsp | 2
java/code/webapp/WEB-INF/pages/common/fragments/yourrhn/inactiveSystems.jsp | 46 -
java/code/webapp/WEB-INF/pages/systems/details/virtualization/images/images.jsp | 1
java/code/webapp/WEB-INF/pages/yourrhn.jsp | 1
web/html/javascript/bootstrap.js | 6
web/html/javascript/jquery.js | 6
web/html/javascript/render.js | 10
web/html/javascript/spacewalk-essentials.js | 50 +
23 files changed, 548 insertions(+), 455 deletions(-)
New commits:
commit 5b3e0cdb65484bbc525feebe7d3ca03b52a68362
Author: Johannes Renner <jrenner(a)suse.de>
Date: Tue Oct 15 11:50:53 2013 +0200
This is loaded in the footer, loading it once should be enough
diff --git a/java/code/webapp/WEB-INF/decorators/layout_head.jsp b/java/code/webapp/WEB-INF/decorators/layout_head.jsp
index ce894e2..272e535 100644
--- a/java/code/webapp/WEB-INF/decorators/layout_head.jsp
+++ b/java/code/webapp/WEB-INF/decorators/layout_head.jsp
@@ -38,5 +38,4 @@
<script src="/rhn/dwr/interface/DWRItemSelector.js"></script>
<script src="/javascript/bootstrap.js"></script>
- <script src="/javascript/check_all.js"></script>
<script src="/javascript/spacewalk-essentials.js"></script>
commit 83b11e6221a56c6d0c176bb4e4c7e0334eee70af
Author: Johannes Renner <jrenner(a)suse.de>
Date: Tue Oct 15 11:35:57 2013 +0200
Move content of render.js into spacewalk-essentials.js
makeAjaxCallback() now depends on columnHeight(), so it would make sense
to put them in the same file. Makes the render.js file obsolete as well.
diff --git a/java/code/webapp/WEB-INF/pages/systems/details/virtualization/images/images.jsp b/java/code/webapp/WEB-INF/pages/systems/details/virtualization/images/images.jsp
index bbd179d..ca0377e 100644
--- a/java/code/webapp/WEB-INF/pages/systems/details/virtualization/images/images.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/details/virtualization/images/images.jsp
@@ -8,7 +8,6 @@
<head>
<script type="text/javascript" src="/rhn/dwr/interface/ImagesRenderer.js"></script>
<script type="text/javascript" src="/rhn/dwr/engine.js"></script>
- <script type="text/javascript" src="/javascript/render.js"></script>
<script type="text/javascript" src="/javascript/images.js"></script>
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/yourrhn.jsp b/java/code/webapp/WEB-INF/pages/yourrhn.jsp
index aaa5557..2a689cb 100644
--- a/java/code/webapp/WEB-INF/pages/yourrhn.jsp
+++ b/java/code/webapp/WEB-INF/pages/yourrhn.jsp
@@ -32,7 +32,6 @@
<c:if test="${requestScope.systemGroupsWidget == 'y'}">
<script type="text/javascript" src="/rhn/dwr/interface/SystemGroupsRenderer.js"></script>
</c:if>
-<script type="text/javascript" src="/javascript/render.js"></script>
</head>
<body>
<rhn:toolbar base="h1" img="/img/rhn-icon-your_rhn.gif" imgAlt="yourrhn.jsp.toolbar.img.alt"
diff --git a/web/html/javascript/render.js b/web/html/javascript/render.js
deleted file mode 100644
index 8083377..0000000
--- a/web/html/javascript/render.js
+++ /dev/null
@@ -1,11 +0,0 @@
-function makeAjaxCallback(divId, debug) {
- cb = function(text) {
- if (debug) {
- alert(text);
- }
- $('#' + divId).html(text);
- $('#' + divId).fadeIn();
- columnHeight();
- };
- return cb;
-}
diff --git a/web/html/javascript/spacewalk-essentials.js b/web/html/javascript/spacewalk-essentials.js
index bd8bc9e..e693ab0 100644
--- a/web/html/javascript/spacewalk-essentials.js
+++ b/web/html/javascript/spacewalk-essentials.js
@@ -47,3 +47,17 @@ function columnHeight() {
200);
//};
};
+
+// Render page fragments loaded via DWR
+function makeAjaxCallback(divId, debug) {
+ cb = function(text) {
+ if (debug) {
+ alert(text);
+ }
+ $('#' + divId).html(text);
+ $('#' + divId).fadeIn();
+ columnHeight();
+ };
+ return cb;
+}
+
commit 86c8a384621780868b4da487b7efd2e0eba1a9e1
Author: Johannes Renner <jrenner(a)suse.de>
Date: Tue Oct 15 11:09:03 2013 +0200
Move reference to spacewalk-essentials.js back to the head
diff --git a/java/code/webapp/WEB-INF/decorators/layout_head.jsp b/java/code/webapp/WEB-INF/decorators/layout_head.jsp
index 7d32c87..ce894e2 100644
--- a/java/code/webapp/WEB-INF/decorators/layout_head.jsp
+++ b/java/code/webapp/WEB-INF/decorators/layout_head.jsp
@@ -39,3 +39,4 @@
<script src="/javascript/bootstrap.js"></script>
<script src="/javascript/check_all.js"></script>
+ <script src="/javascript/spacewalk-essentials.js"></script>
diff --git a/java/code/webapp/WEB-INF/includes/footer.jsp b/java/code/webapp/WEB-INF/includes/footer.jsp
index 4f3e9e1..e740d86 100644
--- a/java/code/webapp/WEB-INF/includes/footer.jsp
+++ b/java/code/webapp/WEB-INF/includes/footer.jsp
@@ -26,4 +26,3 @@
--%>
<!-- Javascript -->
<script src="/javascript/check_all.js"></script>
-<script src="/javascript/spacewalk-essentials.js"></script>
commit bb77794c0ee9b1fde7b377a4baf4967875ae735e
Author: Johannes Renner <jrenner(a)suse.de>
Date: Tue Oct 15 11:08:03 2013 +0200
Call columnHeight() whenever a fragment is rendered with DWR
diff --git a/web/html/javascript/render.js b/web/html/javascript/render.js
index e2502f7..8083377 100644
--- a/web/html/javascript/render.js
+++ b/web/html/javascript/render.js
@@ -5,6 +5,7 @@ function makeAjaxCallback(divId, debug) {
}
$('#' + divId).html(text);
$('#' + divId).fadeIn();
+ columnHeight();
};
return cb;
}
commit e1f14e83145c94bfe78ad5771e5fc447248822c4
Author: Johannes Renner <jrenner(a)suse.de>
Date: Tue Oct 15 11:01:20 2013 +0200
Call columnHeight() on the window load event instead of using timeout
diff --git a/web/html/javascript/spacewalk-essentials.js b/web/html/javascript/spacewalk-essentials.js
index fccf88d..bd8bc9e 100644
--- a/web/html/javascript/spacewalk-essentials.js
+++ b/web/html/javascript/spacewalk-essentials.js
@@ -22,12 +22,10 @@ $(document).on("ready", function(){
}
});
-setTimeout(function(){
- // taking the screen size and resizing the columns to keep the footer fixed to the bottom
- // On page load
- $("section.col-md-10").css("padding-bottom", "");
- columnHeight();
-}, 700);
+// On window load
+$(window).load(function () {
+ columnHeight();
+});
// On window resize
$(window).resize( function () {
@@ -44,9 +42,8 @@ function columnHeight() {
var heightDoc = $(document).height();
// Column heights should equal the document height minus the header height and footer height
var newHeight = heightDoc - 160 - sectionHeight + "px";
- console.log(sectionHeight + " " + newHeight + " " + heightDoc);
$("section.col-md-10").animate({
"padding-bottom": newHeight},
200);
//};
-};
\ No newline at end of file
+};
commit 04a4eff3701b08cdec7b6a7ef8d2080f8397e9e6
Author: Cynthia Sanchez <csanchez(a)suse.com>
Date: Mon Oct 14 17:55:17 2013 +0200
timeout added to wait for all the elements to be loaded and detect the correct screen size
diff --git a/branding/css/spacewalk.less b/branding/css/spacewalk.less
index 5dae3fe..a4f797b 100644
--- a/branding/css/spacewalk.less
+++ b/branding/css/spacewalk.less
@@ -34,10 +34,10 @@ footer{
}
aside.col-md-2{
background: #eeeeee;
-
border-right: 1px solid #d5d5d5;
height: auto;
min-height: 100%;
+ /* 100% height */
margin-bottom: -9999px;
padding-bottom: 9999px;
/* errasing the predefined paddings in the columns */
@@ -189,6 +189,9 @@ section.col-md-10{
padding-left:2em;
padding-right: 2em;
padding-bottom: 3em;
+ /* some animation */
+ transition: width 2s, height 2s, transform 2s;
+ -webkit-transition: width 2s, height 2s, -webkit-transform 2s;
}
section [class*=col-md]:first-child{
padding-left:0;
diff --git a/web/html/javascript/spacewalk-essentials.js b/web/html/javascript/spacewalk-essentials.js
index 157bb09..fccf88d 100644
--- a/web/html/javascript/spacewalk-essentials.js
+++ b/web/html/javascript/spacewalk-essentials.js
@@ -22,12 +22,12 @@ $(document).on("ready", function(){
}
});
-$(window).load(function(){
+setTimeout(function(){
// taking the screen size and resizing the columns to keep the footer fixed to the bottom
// On page load
$("section.col-md-10").css("padding-bottom", "");
columnHeight();
-});
+}, 700);
// On window resize
$(window).resize( function () {
@@ -45,6 +45,8 @@ function columnHeight() {
// Column heights should equal the document height minus the header height and footer height
var newHeight = heightDoc - 160 - sectionHeight + "px";
console.log(sectionHeight + " " + newHeight + " " + heightDoc);
- $("section.col-md-10").css("padding-bottom", newHeight);
+ $("section.col-md-10").animate({
+ "padding-bottom": newHeight},
+ 200);
//};
};
\ No newline at end of file
commit ab6419fa6fde12921d8fcaf72739af154a96f1ce
Author: Johannes Renner <jrenner(a)suse.de>
Date: Mon Oct 14 17:29:20 2013 +0200
Include a static version of bootstrap.js (v3.0.0)
diff --git a/java/code/webapp/WEB-INF/decorators/layout_head.jsp b/java/code/webapp/WEB-INF/decorators/layout_head.jsp
index 2f5b52e..7d32c87 100644
--- a/java/code/webapp/WEB-INF/decorators/layout_head.jsp
+++ b/java/code/webapp/WEB-INF/decorators/layout_head.jsp
@@ -37,5 +37,5 @@
<script src="/rhn/dwr/util.js"></script>
<script src="/rhn/dwr/interface/DWRItemSelector.js"></script>
- <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
+ <script src="/javascript/bootstrap.js"></script>
<script src="/javascript/check_all.js"></script>
diff --git a/web/html/javascript/bootstrap.js b/web/html/javascript/bootstrap.js
new file mode 100644
index 0000000..1765631
--- /dev/null
+++ b/web/html/javascript/bootstrap.js
@@ -0,0 +1,6 @@
+/**
+* bootstrap.js v3.0.0 by @fat and @mdo
+* Copyright 2013 Twitter Inc.
+* http://www.apache.org/licenses/LICENSE-2.0
+*/
+if(!jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(window.jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b
.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="bu
ttons"]');if(a.length){var b=this.$element.find("input").prop("checked",!this.$element.hasClass("active")).trigger("change");"radio"===b.prop("type")&&a.find(".active").removeClass("active")}this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a
.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.pro
totype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass
(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.att
r("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.tr
ansitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.proto
type.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(window.jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass(
"open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasCl
ass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}};var g=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("dropdown");d||c.data("dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.dropdown.Constructor=f,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=g,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote
)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDe
faultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.re
move(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data(
"bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-in
ner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focus",i="hover"==g?"mouseleave":"blur";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=fun
ction(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show),void 0):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide),void 0):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this.tip();this.setContent(),th
is.options.animation&&c.addClass("fade");var d="function"==typeof this.options.placement?this.options.placement.call(this,c[0],this.$element[0]):this.options.placement,e=/\s?auto?\s?/i,f=e.test(d);f&&(d=d.replace(e,"")||"top"),c.detach().css({top:0,left:0,display:"block"}).addClass(d),this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);var g=this.getPosition(),h=c[0].offsetWidth,i=c[0].offsetHeight;if(f){var j=this.$element.parent(),k=d,l=document.documentElement.scrollTop||document.body.scrollTop,m="body"==this.options.container?window.innerWidth:j.outerWidth(),n="body"==this.options.container?window.innerHeight:j.outerHeight(),o="body"==this.options.container?0:j.offset().left;d="bottom"==d&&g.top+g.height+i-l>n?"top":"top"==d&&g.top-l-i<0?"bottom":"right"==d&&g.right+h>m?"left":"left"==d&&g.left-h<o?"right":d,c.removeClass(k).addClass(d)}var p=this.getCalculatedOffset(d,g,h,i);this.applyPlacement(p,d),this.$element.trigger("shown.bs."+th
is.type)}},b.prototype.applyPlacement=function(a,b){var c,d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),a.top=a.top+g,a.left=a.left+h,d.offset(a).addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;if("top"==b&&j!=f&&(c=!0,a.top=a.top+f-j),/bottom|top/.test(b)){var k=0;a.left<0&&(k=-2*a.left,a.left=0,d.offset(a),i=d[0].offsetWidth,j=d[0].offsetHeight),this.replaceArrow(k-e+i,i,"left")}else this.replaceArrow(j-f,j,"top");c&&d.offset(a)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach()}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.trigger(e),e.isDefaultPre
vented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,b).emulateTransitionEnd(150):b(),this.$element.trigger("hidden.bs."+this.type),this)},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.op
tions;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},b.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof c&&c;e||d.data("bs.tooltip",e=new b(thi
s,f)),"string"==typeof c&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototyp
e.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(
this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)
g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("da
ta-target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constru
ctor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=nul
l!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery);
\ No newline at end of file
commit 9f581f2325e63e803e4d4f75c785578af38f2bec
Author: Johannes Renner <jrenner(a)suse.de>
Date: Mon Oct 14 17:21:23 2013 +0200
Remove obsolete type="text/javascript"
diff --git a/java/code/webapp/WEB-INF/includes/footer.jsp b/java/code/webapp/WEB-INF/includes/footer.jsp
index 45e9ec0..4f3e9e1 100644
--- a/java/code/webapp/WEB-INF/includes/footer.jsp
+++ b/java/code/webapp/WEB-INF/includes/footer.jsp
@@ -25,5 +25,5 @@
the form elements we may need have been rendered.
--%>
<!-- Javascript -->
-<script src="/javascript/check_all.js" type="text/javascript"></script>
+<script src="/javascript/check_all.js"></script>
<script src="/javascript/spacewalk-essentials.js"></script>
commit 7595a2914ba5621bb08e5c3a3f8d0715549f6adf
Author: Cynthia Sanchez <csanchez(a)suse.com>
Date: Mon Oct 14 17:20:03 2013 +0200
changes to fix aside section 100% height
diff --git a/branding/css/spacewalk.less b/branding/css/spacewalk.less
index a7008e5..5dae3fe 100644
--- a/branding/css/spacewalk.less
+++ b/branding/css/spacewalk.less
@@ -34,14 +34,15 @@ footer{
}
aside.col-md-2{
background: #eeeeee;
- /* errasing the predefined paddings in the columns */
- padding-right: 0;
- padding-left: 0;
+
border-right: 1px solid #d5d5d5;
height: auto;
min-height: 100%;
margin-bottom: -9999px;
padding-bottom: 9999px;
+ /* errasing the predefined paddings in the columns */
+ padding-right: 0;
+ padding-left: 0;
}
section{
/* for the body div to make both columns the same size*/
diff --git a/web/html/javascript/spacewalk-essentials.js b/web/html/javascript/spacewalk-essentials.js
index 82d0078..157bb09 100644
--- a/web/html/javascript/spacewalk-essentials.js
+++ b/web/html/javascript/spacewalk-essentials.js
@@ -1,4 +1,5 @@
$(document).on("ready", function(){
+
/* Menu in the left column - actions to hide submenu and create animation when a
menu only has submenues and doesnt have a URL */
$("#sidenav ul>ul").hide();
@@ -19,4 +20,31 @@ $(document).on("ready", function(){
$(this).hide();
});
}
-});
\ No newline at end of file
+});
+
+$(window).load(function(){
+ // taking the screen size and resizing the columns to keep the footer fixed to the bottom
+ // On page load
+ $("section.col-md-10").css("padding-bottom", "");
+ columnHeight();
+});
+
+// On window resize
+$(window).resize( function () {
+ $("section.col-md-10").css("padding-bottom", "");
+ columnHeight();
+});
+
+// Make columns 100% in height
+function columnHeight() {
+ //Only if the screen size is higher than the max-width set up in the Variables.less under the definition @screen-md:
+ //PLEASE: update this if you change the content of @screen-md
+ //if ($(document).width()>992) {
+ var sectionHeight = $("section.col-md-10").outerHeight();
+ var heightDoc = $(document).height();
+ // Column heights should equal the document height minus the header height and footer height
+ var newHeight = heightDoc - 160 - sectionHeight + "px";
+ console.log(sectionHeight + " " + newHeight + " " + heightDoc);
+ $("section.col-md-10").css("padding-bottom", newHeight);
+ //};
+};
\ No newline at end of file
commit 29c8424a3e4eab4670541aec22adf1fe4709306c
Author: Johannes Renner <jrenner(a)suse.de>
Date: Mon Oct 14 17:14:29 2013 +0200
Load spacewalk-essentials in the footer
diff --git a/java/code/webapp/WEB-INF/decorators/layout_head.jsp b/java/code/webapp/WEB-INF/decorators/layout_head.jsp
index 4ab2139..2f5b52e 100644
--- a/java/code/webapp/WEB-INF/decorators/layout_head.jsp
+++ b/java/code/webapp/WEB-INF/decorators/layout_head.jsp
@@ -39,4 +39,3 @@
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<script src="/javascript/check_all.js"></script>
- <script src="/javascript/spacewalk-essentials.js"></script>
diff --git a/java/code/webapp/WEB-INF/includes/footer.jsp b/java/code/webapp/WEB-INF/includes/footer.jsp
index f8f308a..45e9ec0 100644
--- a/java/code/webapp/WEB-INF/includes/footer.jsp
+++ b/java/code/webapp/WEB-INF/includes/footer.jsp
@@ -26,3 +26,4 @@
--%>
<!-- Javascript -->
<script src="/javascript/check_all.js" type="text/javascript"></script>
+<script src="/javascript/spacewalk-essentials.js"></script>
commit 2ffc551a0843a02e0aace904ac60c02f919df9dc
Author: Johannes Renner <jrenner(a)suse.de>
Date: Mon Oct 14 17:09:55 2013 +0200
Serve jquery locally instead of fetching it from a CDN
This is version 1.10.2, so the original filename was jquery-1.10.2.min.js.
diff --git a/java/code/webapp/WEB-INF/decorators/layout_head.jsp b/java/code/webapp/WEB-INF/decorators/layout_head.jsp
index 414e5a6..4ab2139 100644
--- a/java/code/webapp/WEB-INF/decorators/layout_head.jsp
+++ b/java/code/webapp/WEB-INF/decorators/layout_head.jsp
@@ -30,7 +30,7 @@
<link rel="stylesheet" href="/fonts/font-spacewalk/css/spacewalk-font.css" />
<link rel="stylesheet/less" type="text/css" href="/css/spacewalk.less" />
- <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
+ <script src="/javascript/jquery.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/less.js/1.4.1/less.min.js"></script>
<script src="/rhn/dwr/engine.js"></script>
diff --git a/web/html/javascript/jquery.js b/web/html/javascript/jquery.js
new file mode 100644
index 0000000..da41706
--- /dev/null
+++ b/web/html/javascript/jquery.js
@@ -0,0 +1,6 @@
+/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
+//@ sourceMappingURL=jquery-1.10.2.min.map
+*/
+(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)retu
rn this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:fun
ction(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expa
ndo:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)
for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){
t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];e
lse while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a
={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st
(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp
("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.n
odeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e)
{var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.docume
ntElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TA
G=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozM
atchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c
,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDupl
icates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2]
;return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!
!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call
(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:funct
ion(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for
(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;r
eturn t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y
=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b])
;b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parent
Node||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXML
Doc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,
r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o
){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement
("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("
value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;
left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),ty
peof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
+}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{ap
plet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(functi
on(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x
.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.acc
ess(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.clas
sName+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this
).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0
)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFi
x[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocu
ment.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxL
ength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,a
rguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.
*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n
]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this
,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt
.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.
clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEv
entListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t)
{x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(th
is,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0==
=n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.
event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;f
or(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling"
)},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i
},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|
\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prep
end:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.acc
ess(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i
=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._dat
a(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"repl
aceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a
++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-
1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
+u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var P
t,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a+
+)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn
(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.max
Width=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,
o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity|
|(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr
.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=functi
on(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:fu
nction(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c
),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"t
ext/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase(
);return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,
delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&
clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o=
==t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-
ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof
n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(func
tion(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function()
{r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u
]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n
in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.ove
rflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,t
his.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show()
.end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0)
,o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.
PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOf
fset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.of
fsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length
},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
commit c4f5e6b60750dc9632548dad896527bc8ecfc83c
Author: Cynthia Sanchez <csanchez(a)suse.com>
Date: Mon Oct 14 14:35:01 2013 +0200
footer and margin in Section tag fixed
diff --git a/branding/css/spacewalk.less b/branding/css/spacewalk.less
index aab71bf..a7008e5 100644
--- a/branding/css/spacewalk.less
+++ b/branding/css/spacewalk.less
@@ -29,7 +29,8 @@ footer{
color: #fff;
font-weight: normal;
font-size: 0.9em;
- height: 80px
+ height: 80px;
+ clear: both
}
aside.col-md-2{
background: #eeeeee;
@@ -39,6 +40,8 @@ aside.col-md-2{
border-right: 1px solid #d5d5d5;
height: auto;
min-height: 100%;
+ margin-bottom: -9999px;
+ padding-bottom: 9999px;
}
section{
/* for the body div to make both columns the same size*/
@@ -75,7 +78,7 @@ h2{
overflow: hidden;
margin-bottom: -80px;
padding-bottom: 80px;
- height: auto;
+ height: auto !important;
min-height: 100%
}
/* style for the login page */
@@ -183,7 +186,8 @@ header .btn.btn-info.input-sm{
/* fixing margins in the 1st and last columns */
section.col-md-10{
padding-left:2em;
- padding-right: 2em
+ padding-right: 2em;
+ padding-bottom: 3em;
}
section [class*=col-md]:first-child{
padding-left:0;
diff --git a/web/html/javascript/spacewalk-essentials.js b/web/html/javascript/spacewalk-essentials.js
index 9e9f0ea..82d0078 100644
--- a/web/html/javascript/spacewalk-essentials.js
+++ b/web/html/javascript/spacewalk-essentials.js
@@ -19,29 +19,4 @@ $(document).on("ready", function(){
$(this).hide();
});
}
-});
-
-// taking the screen size and resizing the columns to keep the footer fixed to the bottom
-// On page load
-$(window).load(columnHeight);
-
-// On window resize
-$(window).resize( function () {
- // Clear all forced column heights before recalculating them after window resize
- $("aside").css("height", "");
- $("section").css("height", "");
- columnHeight();
-});
-
-// Make columns 100% in height
-function columnHeight() {
- //Only if the screen size is higher than the max-width set up in the Variables.less under the definition @screen-md:
- //PLEASE: update this if you change the content of @screen-md
- if ($(document).width()>992) {
- // Column heights should equal the document height minus the header height and footer height
- var newHeight = $(document).height() - 200 + "px";
- console.log(newHeight);
- $("aside").css("height", newHeight);
- $("section").css("height", newHeight);
- };
-}
+});
\ No newline at end of file
commit aaed2f0b465d913d6e3b5d1d82d51bd4760d866a
Author: Duncan Mac-Vicar P <dmacvicar(a)suse.de>
Date: Mon Oct 14 13:34:15 2013 +0200
fix empty lists closing tags
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTag.java b/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTag.java
index dcd31d3..1b796f5 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTag.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTag.java
@@ -535,6 +535,7 @@ public class ListTag extends BodyTagSupport {
if (manip.isListEmpty()) {
renderEmptyList();
+ ListTagUtil.write(pageContext, "</table>");
return BodyTagSupport.SKIP_BODY;
}
ListTagUtil.setCurrentCommand(pageContext, getUniqueName(),
@@ -773,6 +774,7 @@ public class ListTag extends BodyTagSupport {
}
private void renderEmptyList() throws JspException {
+ ListTagUtil.write(pageContext, "<tbody>");
ListTagUtil.write(pageContext, "<tr><td ");
ListTagUtil.write(pageContext, "colspan=\"");
ListTagUtil.write(pageContext, String.valueOf(columnCount));
@@ -784,10 +786,11 @@ public class ListTag extends BodyTagSupport {
ListTagUtil
.write(pageContext, "<div class=\"list-empty-message\">");
ListTagUtil.write(pageContext, msg);
- ListTagUtil.write(pageContext, "<br /></div>");
+ ListTagUtil.write(pageContext, "</div>");
}
ListTagUtil.write(pageContext, "</td></tr>");
+ ListTagUtil.write(pageContext, "</tbody>");
}
private void renderRowClassAndId() throws JspException {
commit d38d6a60e045b184e586c22791a085faf05ed0d2
Author: Duncan Mac-Vicar P <dmacvicar(a)suse.de>
Date: Mon Oct 14 12:20:23 2013 +0200
fix the ul.active selector for the opening of the selected left menu
item
diff --git a/web/html/javascript/spacewalk-essentials.js b/web/html/javascript/spacewalk-essentials.js
index 5aaa0ad..9e9f0ea 100644
--- a/web/html/javascript/spacewalk-essentials.js
+++ b/web/html/javascript/spacewalk-essentials.js
@@ -2,9 +2,11 @@ $(document).on("ready", function(){
/* Menu in the left column - actions to hide submenu and create animation when a
menu only has submenues and doesnt have a URL */
$("#sidenav ul>ul").hide();
- if ($("#sidenav li").attr("class", "active")){
+
+ $("#sidenav li.active").each(function() {
$(this).next("ul").show(300);
- };
+ });
+
/* Systems Selected Toolbar - actions to hide the toolbar when th Clear button is pressed or when
no system is selected */
$("#clearbtn").click(hidesystemtool);
commit b8b9d89dd4ff5aae35da5e4a12a5082e9144a913
Author: Duncan Mac-Vicar P <dmacvicar(a)suse.de>
Date: Mon Oct 14 09:19:35 2013 +0200
The table heading of inactive systems is really the title.
diff --git a/java/code/webapp/WEB-INF/pages/common/fragments/yourrhn/inactiveSystems.jsp b/java/code/webapp/WEB-INF/pages/common/fragments/yourrhn/inactiveSystems.jsp
index 2f3a07b..c48acf4 100644
--- a/java/code/webapp/WEB-INF/pages/common/fragments/yourrhn/inactiveSystems.jsp
+++ b/java/code/webapp/WEB-INF/pages/common/fragments/yourrhn/inactiveSystems.jsp
@@ -2,30 +2,32 @@
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://rhn.redhat.com/rhn" prefix="rhn" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
<div class="${requestScope.inactiveSystemsClass}">
<form method="post" name="rhn_list" action="/YourRhn.do">
+
<rhn:list pageList="${requestScope.inactiveSystemList}"
- noDataText="${requestScope.inactiveSystemsEmpty}"
- formatMessage="false">
- <rhn:listdisplay set="${requestScope.set}"
- paging="false"
- type="half-table"
- reflink="/rhn/systems/Inactive.do"
- reflinkkey="yourrhn.jsp.allinactivesystems"
- reflinkkeyarg0="${pageList.size}">
-
+ noDataText="${requestScope.inactiveSystemsEmpty}"
+ formatMessage="false">
+ <rhn:listdisplay set="${requestScope.set}"
+ title="inactivelist.jsp.header"
+ paging="false"
+ reflink="/rhn/systems/Inactive.do"
+ reflinkkey="yourrhn.jsp.allinactivesystems"
+ reflinkkeyarg0="${pageList.size}"
+ domainClass="systems">
+ <rhn:column header="probesuitesystemsedit.jsp.systemname"
+ url="/rhn/systems/details/Overview.do?sid=${current.id}">
+ <i class="icon-question-sign"></i>
+ <c:out value="${current.name}" escapeXml="true" />
+ </rhn:column>
+
+ <rhn:column header="emptyspace.jsp">
+ ${current.lastCheckinString}
+ </rhn:column>
- <rhn:column header="inactivelist.jsp.header"
- url="/rhn/systems/details/Overview.do?sid=${current.id}">
- <img src="/img/icon_checkin.gif" alt="<bean:message key="system-legend.jsp.notcheckingin"/>" />
- <c:out value="${current.name}" escapeXml="true" />
- </rhn:column>
+ </rhn:listdisplay>
+ </rhn:list>
- <rhn:column header="emptyspace.jsp">
- ${current.lastCheckinString}
- </rhn:column>
-
- </rhn:listdisplay>
- </rhn:list>
- </form>
- </div>
+ </form>
+ </div>
commit 4764aa250a097135ff1dc7ee50bca56ee0e96ca7
Author: Duncan Mac-Vicar P <dmacvicar(a)suse.de>
Date: Mon Oct 14 09:18:14 2013 +0200
rl:list re-arrangement
title goes into the panel heading but filter/addons stay as a thead
links go into a footer but pagination/etc go into a tfoot
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/ListDisplayTag.java b/java/code/src/com/redhat/rhn/frontend/taglibs/ListDisplayTag.java
index 3e66cb8..b0d1638 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/ListDisplayTag.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/ListDisplayTag.java
@@ -28,6 +28,7 @@ import com.redhat.rhn.frontend.html.HtmlTag;
import com.redhat.rhn.frontend.listview.AlphaBar;
import com.redhat.rhn.frontend.listview.PaginationUtil;
import com.redhat.rhn.frontend.struts.RequestContext;
+import com.redhat.rhn.frontend.taglibs.list.ListTagUtil;
import com.redhat.rhn.manager.acl.AclManager;
import com.redhat.rhn.manager.rhnset.RhnSetDecl;
@@ -592,7 +593,7 @@ public class ListDisplayTag extends BodyTagSupport {
if (request.getQueryString() != null) {
page.append("&" + request.getQueryString());
}
- out.println("<div class=\"spacewalk-csv-download\"><a href=\"" + page +
+ out.println("<div class=\"spacewalk-csv-download text-right\"><a href=\"" + page +
"\"><i class=\"icon-download-alt\"></i>" +
LocalizationService.getInstance().getMessage("listdisplay.csv") +
"</a></div>");
@@ -605,9 +606,13 @@ public class ListDisplayTag extends BodyTagSupport {
*/
private void renderTitle(JspWriter out) throws IOException {
if (!StringUtils.isEmpty(title)) {
- HtmlTag caption = new HtmlTag("caption");
- caption.addBody(LocalizationService.getInstance().getMessage(title));
- out.println(caption.render());
+ HtmlTag heading = new HtmlTag("div");
+ heading.setAttribute("class", "panel-heading");
+ HtmlTag h3 = new HtmlTag("h3");
+ h3.setAttribute("class", "panel-title");
+ h3.addBody(LocalizationService.getInstance().getMessage(title));
+ heading.addBody(h3);
+ out.println(heading.render());
}
}
@@ -744,10 +749,6 @@ public class ListDisplayTag extends BodyTagSupport {
out.print("</span>");
}
}
- if (!top && exportColumns != null) {
- renderExport(out);
- }
-
out.println("</div>");
@@ -1074,30 +1075,16 @@ public class ListDisplayTag extends BodyTagSupport {
doSort(sortedColumn);
}
- /* If pageList contains an index and pageList.size() (what we are
- * displaying on the page) is less than pageList.getTotalSize()
- * (the total number of items in the data result), render alphabar.
- * This prevents the alphabar from showing up on pages that show
- * all of the entries on a single page and is similar to how the
- * perl code behaves.
- */
- if (pageList.getIndex().size() > 0 &&
- pageList.size() < pageList.getTotalSize()) {
-
- renderViewAllLink(out);
- renderAlphabar(out);
- }
+ out.print("<div class=\"spacewalk-list-container\">");
+ out.print("<div class=\"spacewalk-list panel panel-default\">");
- if (isPaging()) {
- renderPagination(out, true);
- renderBoundsVariables(out);
- }
+ renderTitle(out);
/* If the type is list, we must set the width explicitly. Otherwise,
* it shouldn't matter
*/
if (type.equals("list")) {
- out.print("<table class=\"table table-striped spacewalk-list\"");
+ out.print("<table class=\"table table-striped\"");
}
else {
out.print("<table class=\"" + type + "\"");
@@ -1113,8 +1100,33 @@ public class ListDisplayTag extends BodyTagSupport {
out.println(">");
- renderTitle(out);
+ // we render the pagination controls as an additional head
+ out.println("<thead>");
+ out.println("<tr>");
+ out.println("<td colspan=\"" + getNumberOfColumns() + "\">");
+ /* If pageList contains an index and pageList.size() (what we are
+ * displaying on the page) is less than pageList.getTotalSize()
+ * (the total number of items in the data result), render alphabar.
+ * This prevents the alphabar from showing up on pages that show
+ * all of the entries on a single page and is similar to how the
+ * perl code behaves.
+ */
+ if (pageList.getIndex().size() > 0 &&
+ pageList.size() < pageList.getTotalSize()) {
+
+ renderViewAllLink(out);
+ renderAlphabar(out);
+ }
+
+ if (isPaging()) {
+ renderPagination(out, true);
+ renderBoundsVariables(out);
+ }
+ out.println("</td>");
+ out.println("</tr>");
+
+ // Now print the column headings
out.println("<thead>");
out.println("\n<tr>");
@@ -1179,36 +1191,9 @@ public class ListDisplayTag extends BodyTagSupport {
/* If the type is a half-table, we must draw an extra row on the
* end of the table if the reflink has been set
*/
- if (reflink != null) {
- columnCount = 0;
-
- out.println("<tfoot>");
-
- out.println("<a href=\"" + reflink + "\" >");
-
- /* Here we render the reflink and its key. If the key hasn't been set
- * we just display the link address itself.
- */
- if (reflinkkey != null) {
- Object[] args = new Object[2];
-
- args[0] = new Integer(pageList.getTotalSize());
- args[1] = reflinkkeyarg0;
-
- String message = LocalizationService.getInstance().
- getMessage(reflinkkey, args);
- out.println(message);
- }
- else {
- out.println(reflink);
- }
-
- out.println("</a>");
- out.println("</tfoot>");
- }
-
-
- out.println("</table>\n");
+ out.println("<tfoot>");
+ out.println("<tr>");
+ out.println("<td colspan=\"" + getNumberOfColumns() + "\">");
/* If paging is on, we render the pagination */
if (isPaging()) {
@@ -1237,6 +1222,48 @@ public class ListDisplayTag extends BodyTagSupport {
.getMessage("message.range.withtypedescription", args));
out.println("</span>");
}
+ out.println("</tr>");
+ out.println("</td>");
+ out.println("</tfoot>\n");
+
+ out.println("</table>\n");
+
+ if (reflink != null) {
+ columnCount = 0;
+
+ out.println("<div class=\"panel-footer\">");
+
+ out.println("<a href=\"" + reflink + "\" >");
+
+ /* Here we render the reflink and its key. If the key hasn't been set
+ * we just display the link address itself.
+ */
+ if (reflinkkey != null) {
+ Object[] args = new Object[2];
+
+ args[0] = new Integer(pageList.getTotalSize());
+ args[1] = reflinkkeyarg0;
+
+ String message = LocalizationService.getInstance().
+ getMessage(reflinkkey, args);
+ out.println(message);
+ }
+ else {
+ out.println(reflink);
+ }
+
+ out.println("</a>");
+ out.println("</div>");
+ }
+
+
+ out.println("</div>\n");
+ // export button goes outside of the panel
+ if (exportColumns != null) {
+ renderExport(out);
+ }
+ out.println("</div>\n");
+
setColumnCount(0);
numberOfColumns = 0;
}
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTag.java b/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTag.java
index 15244c4..dcd31d3 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTag.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTag.java
@@ -441,20 +441,26 @@ public class ListTag extends BodyTagSupport {
ListTagUtil.setCurrentCommand(pageContext, getUniqueName(),
ListCommand.TBL_HEADING);
- ListTagUtil.write(pageContext, "<div class=\"panel-heading\">");
-
+ // only if there is a title, add a panel-heading
if (!StringUtils.isBlank(title)) {
+ ListTagUtil.write(pageContext, "<div class=\"panel-heading\">");
HtmlTag h3 = new HtmlTag("h3");
h3.setAttribute("class", "panel-title");
h3.addBody(title);
-
ListTagUtil.write(pageContext, h3.render());
+ ListTagUtil.write(pageContext, "</div>");
}
- ListTagUtil.write(pageContext, "<!-- END heading (panel-heading) -->");
- ListTagUtil.write(pageContext, "</div>");
}
else if (haveColsEnumerated && !haveTblAddonsRendered) {
- ListTagUtil.write(pageContext, "<div class=\"panel-body\">");
+
+ startTable();
+
+ ListTagUtil.write(pageContext, "<thead>");
+
+ // render the navigation and filters as a row of the header
+ ListTagUtil.write(pageContext, "<tr>");
+ ListTagUtil.write(pageContext, "<td colspan=\"" + getColumnCount() + "\">");
+
setupManipulator();
manip.sort();
pageData = manip.getPage();
@@ -475,67 +481,58 @@ public class ListTag extends BodyTagSupport {
ListTagUtil.write(pageContext, String.format(HIDDEN_TEXT,
ListTagUtil.makeParentIsAnElementLabel(uniqueName), parentIsElement));
- ListTagUtil.write(pageContext, "<div class=\"filter-input\">");
- ListTagUtil.write(pageContext, "<div class=\"row\">");
-
- // column with the filter
- ListTagUtil.write(pageContext, "<div class=\"col-lg-6 text-left\">");
+ ListTagUtil.write(pageContext, "<div class=\"filter-input row\">");
+ // column with the filter
+ ListTagUtil.write(pageContext, "<div class=\"col-md-4 text-left\">");
if (filter != null && manip.getUnfilteredDataSize() != 0) {
ListTagUtil.renderFilterUI(pageContext, filter,
getUniqueName(), width, columnCount,
searchParent, searchChild);
}
- if (isSortable()) {
- renderSortableHiddenFields();
- }
-
- if (!isEmpty()) {
+ ListTagUtil.write(pageContext, "</div>");
+ ListTagUtil.write(pageContext, "<div class=\"col-md-8 text-right\">");
+ if (!isEmpty()) {
for (ListDecorator dec : getDecorators()) {
dec.beforeTopPagination();
}
- }
- ListTagUtil.write(pageContext, "</div>");
-
- // column with the pagination controls
- ListTagUtil.write(pageContext, "<div class=\"col-lg-6 text-right list-infotext\">");
- renderTopPaginationControls();
- ListTagUtil.write(pageContext, "</div>");
-
- // end of the row
- ListTagUtil.write(pageContext, "</div>");
+ }
- // end of the filter-input div
- ListTagUtil.write(pageContext, "</div>");
+ // column with the pagination controls
+ renderTopPaginationControls();
+ ListTagUtil.write(pageContext, "</div>");
- ListTagUtil.write(pageContext, "<!-- END addons (panel-boddy) -->");
- ListTagUtil.write(pageContext, "</div>");
+ ListTagUtil.write(pageContext, "</div>");
+ ListTagUtil.write(pageContext, "</td>");
+ ListTagUtil.write(pageContext, "</tr>");
- startTable();
- HttpServletRequest request = (HttpServletRequest) pageContext
+ HttpServletRequest request = (HttpServletRequest) pageContext
.getRequest();
- manip.bindPaginationInfo();
- request.setAttribute("dataSize", String
+ manip.bindPaginationInfo();
+ request.setAttribute("dataSize", String
.valueOf(pageData.size() + 1));
- ListTagUtil.setCurrentCommand(pageContext, getUniqueName(),
- ListCommand.TBL_ADDONS);
- if (pageData != null && pageData.size() > 0) {
- iterator = pageData.iterator();
- }
- else {
- iterator = null;
- }
+ ListTagUtil.setCurrentCommand(pageContext, getUniqueName(),
+ ListCommand.TBL_ADDONS);
+ if (pageData != null && pageData.size() > 0) {
+ iterator = pageData.iterator();
+ }
+ else {
+ iterator = null;
+ }
}
if (haveColsEnumerated && haveTblAddonsRendered &&
!haveColHeadersRendered) {
- // Nothing to do when rendering the col headers
- // those are done by the column tag
+ // open the row tag for the column header th's
+ ListTagUtil.write(pageContext, "<tr>");
ListTagUtil.setCurrentCommand(pageContext, getUniqueName(),
ListCommand.COL_HEADER);
}
if (haveColHeadersRendered && !haveTblFootersRendered) {
+ ListTagUtil.write(pageContext, "</tr>");
+ ListTagUtil.write(pageContext, "</thead>");
+
if (manip.isListEmpty()) {
renderEmptyList();
return BodyTagSupport.SKIP_BODY;
@@ -554,7 +551,6 @@ public class ListTag extends BodyTagSupport {
}
if (currentObject == null) {
ListTagUtil.write(pageContext, "</tbody>");
- ListTagUtil.write(pageContext, "</table>");
ListTagUtil.setCurrentCommand(pageContext, getUniqueName(),
ListCommand.TBL_FOOTER);
}
@@ -569,9 +565,20 @@ public class ListTag extends BodyTagSupport {
else if (haveTblFootersRendered) {
retval = BodyTagSupport.SKIP_BODY;
- ListTagUtil.write(pageContext, "<div class=\"panel-footer\">");
+ // render the pagination controls as the footer of the table
+ ListTagUtil.write(pageContext, "<tfoot>");
+ ListTagUtil.write(pageContext, "<tr>");
+ ListTagUtil.write(pageContext, "<td colspan=\"" + getColumnCount() + "\">");
+ renderFooterPaginationControls();
+ ListTagUtil.write(pageContext, "</td>");
+ ListTagUtil.write(pageContext, "</tr>");
+ ListTagUtil.write(pageContext, "</tfoot>");
+ ListTagUtil.write(pageContext, "</table>");
+ // if there is reference links, put them as a panel footer
if ((refLink != null) && (!isEmpty())) {
+ ListTagUtil.write(pageContext, "<div class=\"panel-footer\">");
+
ListTagUtil.write(pageContext, "<a href=\"" + refLink + "\" >");
/* Here we render the reflink and its key. If the key hasn't been set
* we just display the link address itself.
@@ -590,11 +597,14 @@ public class ListTag extends BodyTagSupport {
}
ListTagUtil.write(pageContext, "</a>");
+ // closes the panel footer
+ ListTagUtil.write(pageContext, "</div>");
}
- renderFooterPaginationControls();
- // closes the panel footer
- ListTagUtil.write(pageContext, "</div>");
+ // we render the hidden fields outside of the table
+ if (isSortable()) {
+ renderSortableHiddenFields();
+ }
}
return retval;
}
@@ -848,21 +858,14 @@ public class ListTag extends BodyTagSupport {
return;
}
- ListTagUtil.write(pageContext, "<div>");
- ListTagUtil.write(pageContext, "<table ");
- ListTagUtil.write(pageContext, " cellspacing=\"0\" ");
- ListTagUtil.write(pageContext, "cellpadding=\"0\" width=\"100%\">");
- ListTagUtil.write(pageContext, "<tr>");
- ListTagUtil.write(pageContext, "<td align=\"left\">");
-
+ ListTagUtil.write(pageContext, "<div class=\"pull-left\">");
for (ListDecorator dec : getDecorators()) {
dec.setCurrentList(this);
dec.afterList();
}
- ListTagUtil.write(pageContext, "</td>");
+ ListTagUtil.write(pageContext, "</div>");
- ListTagUtil.write(pageContext,
- "<td valign=\"middle\" class=\"list-infotext\">");
+ ListTagUtil.write(pageContext, "<div class=\"pull-right\">");
if (!isEmpty() && !hidePageNums) {
ListTagUtil.write(pageContext, manip.getPaginationMessage());
}
@@ -877,9 +880,8 @@ public class ListTag extends BodyTagSupport {
ListTagUtil.write(pageContext, " ");
ListTagUtil.renderPaginationLinks(pageContext, PAGINATION_NAMES,
manip.getPaginationLinks());
- ListTagUtil.write(pageContext, "</td>");
- ListTagUtil.write(pageContext, "</tr>");
- ListTagUtil.write(pageContext, "</table></div>");
+
+ ListTagUtil.write(pageContext, "</div>");
}
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/list/decorators/PageSizeDecorator.java b/java/code/src/com/redhat/rhn/frontend/taglibs/list/decorators/PageSizeDecorator.java
index bfe8cf0..8028be1 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/decorators/PageSizeDecorator.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/list/decorators/PageSizeDecorator.java
@@ -106,11 +106,12 @@ public class PageSizeDecorator extends BaseListDecorator {
/**
* {@inheritDoc}
*/
+ @Override
public void beforeTopPagination() throws JspException {
if (!getCurrentList().isEmpty()) {
StringBuilder stringBuild = new StringBuilder();
- stringBuild.append("<td class=\"list-sizeselector\">");
+ stringBuild.append("<div class=\"list-sizeselector\">");
HtmlTag select = new HtmlTag("Select");
select.setAttribute("name", makePageSizeLabel(listName));
select.setAttribute("onChange", makeOnChangeScript());
@@ -128,7 +129,7 @@ public class PageSizeDecorator extends BaseListDecorator {
LocalizationService ls = LocalizationService.getInstance();
stringBuild.append(ls.getMessage("message.items.per.page",
select.render()));
- stringBuild.append("</td>");
+ stringBuild.append("</div>");
HtmlTag input = new HtmlTag("input");
input.setAttribute("type", "hidden");
input.setAttribute("id", makeSelectionId(listName));
commit fa13d1e2d80a1de58a4ebf46955bf5d96187ebbf
Author: Duncan Mac-Vicar P <dmacvicar(a)suse.de>
Date: Fri Oct 11 17:23:04 2013 +0200
Refactor the List code so that code is not split inconsistently across
methods leaving tags open and having boolean state everywhere. Some
repeated writing of html is not bad if one can read the code without
jumping from method to method remembering the state of a open tag.
Make the navigation icons to use font awesome
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/list/DataSetManipulator.java b/java/code/src/com/redhat/rhn/frontend/taglibs/list/DataSetManipulator.java
index c563f8f..8db7fba 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/DataSetManipulator.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/list/DataSetManipulator.java
@@ -46,41 +46,29 @@ import javax.servlet.jsp.PageContext;
public class DataSetManipulator {
private static final String[] LINK_PREFIXES = {"_first", "_prev", "_next", "_last"};
- private int pageSize;
+ private final int pageSize;
private List dataset;
private ListFilter filter;
private String filterBy;
private String filterValue;
private int totalDataSetSize;
- private HttpServletRequest request;
- private String uniqueName;
+ private final HttpServletRequest request;
+ private final String uniqueName;
private int pageNumber = -1;
private String alphaCol;
private int alphaPosition = -1;
private boolean ascending = true;
- private int unfilteredDataSize;
- private boolean parentIsAnElement;
+ private final int unfilteredDataSize;
+ private final boolean parentIsAnElement;
- private boolean searchParent;
- private boolean searchChild;
+ private final boolean searchParent;
+ private final boolean searchChild;
private String defaultSortAttribute;
- private static final String IMG_FIRST = "/img/list-allbackward.gif";
- private static final String IMG_FIRST_UNFOCUSED =
- "/img/list-allbackward-unfocused.gif";
-
- private static final String IMG_PREV = "/img/list-backward.gif";
- private static final String IMG_PREV_UNFOCUSED =
- "/img/list-backward-unfocused.gif";
-
- private static final String IMG_NEXT = "/img/list-forward.gif";
- private static final String IMG_NEXT_UNFOCUSED =
- "/img/list-forward-unfocused.gif";
-
-
- private static final String IMG_LAST = "/img/list-allforward.gif";
- private static final String IMG_LAST_UNFOCUSED =
- "/img/list-allforward-unfocused.gif";
+ private static final String ICON_FIRST = "icon-fast-backward";
+ private static final String ICON_PREV = "icon-backward";
+ private static final String ICON_NEXT = "icon-forward";
+ private static final String ICON_LAST = "icon-fast-forward";
/**
@@ -419,14 +407,13 @@ public class DataSetManipulator {
String pageLinkName = "list_" + uniqueName + "_page";
String[] data = new String[4];
if (!isFirstPage()) {
- data[0] = IMG_FIRST;
+ data[0] = ICON_FIRST;
data[1] = pageLinkName + "_first";
data[2] = "first";
data[3] = "First Page";
-
}
else {
- data[0] = IMG_FIRST_UNFOCUSED;
+ data[0] = ICON_FIRST;
data[1] = null;
data[2] = null;
data[3] = null;
@@ -434,13 +421,13 @@ public class DataSetManipulator {
links.put("allBackward", data);
data = new String[4];
if (getPrevPageNumber() > -1) {
- data[0] = IMG_PREV;
+ data[0] = ICON_PREV;
data[1] = pageLinkName + "_prev";
data[2] = String.valueOf(getPrevPageNumber());
data[3] = "Previous Page";
}
else {
- data[0] = IMG_PREV_UNFOCUSED;
+ data[0] = ICON_PREV;
data[1] = null;
data[2] = null;
data[3] = null;
@@ -448,13 +435,13 @@ public class DataSetManipulator {
links.put("backward", data);
data = new String[4];
if (getNextPageNumber() > -1) {
- data[0] = IMG_NEXT;
+ data[0] = ICON_NEXT;
data[1] = pageLinkName + "_next";
data[2] = String.valueOf(getNextPageNumber());
data[3] = "Next Page";
}
else {
- data[0] = IMG_NEXT_UNFOCUSED;
+ data[0] = ICON_NEXT;
data[1] = null;
data[2] = null;
data[3] = null;
@@ -462,13 +449,13 @@ public class DataSetManipulator {
links.put("forward", data);
data = new String[4];
if (!isLastPage()) {
- data[0] = IMG_LAST;
+ data[0] = ICON_LAST;
data[1] = pageLinkName + "_last";
data[2] = "last";
data[3] = "Last Page";
}
else {
- data[0] = IMG_LAST_UNFOCUSED;
+ data[0] = ICON_LAST;
}
links.put("allForward", data);
}
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListCommand.java b/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListCommand.java
index 46cf520..8942173 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListCommand.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListCommand.java
@@ -22,7 +22,8 @@ package com.redhat.rhn.frontend.taglibs.list;
public enum ListCommand {
RENDER ("__render__"),
- TBL_HEADER ("__tbl_header__"),
+ TBL_HEADING ("__tbl_heading__"),
+ TBL_ADDONS ("__tbl_addons__"),
TBL_FOOTER ("__tbl__footer__"),
COL_HEADER ("__col_header__"),
ENUMERATE ("__enum__");
@@ -36,6 +37,7 @@ public enum ListCommand {
/**
* ${@inheritDoc}
*/
+ @Override
public String toString() {
return _cmd;
}
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTag.java b/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTag.java
index b1eae8e..15244c4 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTag.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTag.java
@@ -43,6 +43,15 @@ import javax.servlet.jsp.tagext.BodyTagSupport;
/**
* Renders a list of data bean in a page
*
+ * The list is rendered as a bootstrap 3.x panel
+ *
+ * The title of the list is put in the panel-heading
+ * Pagination, alphabars and addons go into the panel-body
+ * Bottom pagination and reflinks g into the panel-footer
+ * The table goes as is, for seamless display into the panel
+ *
+ * @see http://getbootstrap.com/components/#panels
+ *
* @version $Rev $
*/
public class ListTag extends BodyTagSupport {
@@ -53,7 +62,8 @@ public class ListTag extends BodyTagSupport {
private static final String HIDDEN_TEXT = "<input type=\"hidden\" " +
"name=\"%s\" value=\"%s\"/>";
private boolean haveColsEnumerated = false;
- private boolean haveTblHeadersRendered = false;
+ private boolean haveTblHeadingRendered = false;
+ private boolean haveTblAddonsRendered = false;
private boolean haveTblFootersRendered = false;
private boolean haveColHeadersRendered = false;
private int columnCount;
@@ -394,40 +404,6 @@ public class ListTag extends BodyTagSupport {
*/
@Override
public int doEndTag() throws JspException {
-
- /* If a reference link was provided, it needs to be rendered on a separate
- * row within the table.
- */
- if ((refLink != null) && (!isEmpty())) {
- ListTagUtil.write(pageContext, "<tfoot>");
- ListTagUtil.write(pageContext, "<tr>");
- ListTagUtil.write(pageContext, "<td colspan=\"" + String.valueOf(getColumnCount()) + "\">");
- ListTagUtil.write(pageContext, "<a href=\"" + refLink + "\" >");
- /* Here we render the reflink and its key. If the key hasn't been set
- * we just display the link address itself.
- */
- if (refLinkKey != null) {
- Object[] args = new Object[2];
- args[0] = new Integer(getPageRowCount());
- args[1] = refLinkKeyArg0;
- String message = LocalizationService.getInstance().
- getMessage(refLinkKey, args);
-
- ListTagUtil.write(pageContext, message);
- }
- else {
- ListTagUtil.write(pageContext, refLink);
- }
-
- ListTagUtil.write(pageContext, "</a>");
- ListTagUtil.write(pageContext, "</td>");
- ListTagUtil.write(pageContext, "</tr>");
- ListTagUtil.write(pageContext, "</tfoot>");
- }
-
-
- ListTagUtil.write(pageContext, "</table>");
- renderPaginationControls(true);
ListTagUtil.write(pageContext, "</div>");
ListTagUtil.write(pageContext, "<!-- END " + getUniqueName() + " -->");
release();
@@ -442,14 +418,43 @@ public class ListTag extends BodyTagSupport {
int retval = BodyTagSupport.EVAL_BODY_AGAIN;
ListCommand cmd = ListTagUtil.getCurrentCommand(this, pageContext);
- boolean haveRenderedColumnHeaderEndTag = false;
+
+ // close the panel-heading div
+ if (cmd.equals(ListCommand.TBL_HEADING)) {
+ //ListTagUtil.write(pageContext, "<!-- END heading (panel-heading) -->");
+ //ListTagUtil.write(pageContext, "</div>");
+ }
+
+ // close the panel-body div
+ if (cmd.equals(ListCommand.TBL_ADDONS)) {
+ //ListTagUtil.write(pageContext, "<!-- END addons (panel-body) -->");
+ //ListTagUtil.write(pageContext, "</div>");
+ }
+
if (cmd.equals(ListCommand.COL_HEADER)) {
- ListTagUtil.write(pageContext, "</tr></thead><tbody>");
- haveRenderedColumnHeaderEndTag = true;
+ ListTagUtil.write(pageContext, "</tr>");
}
setState();
- if (haveColsEnumerated && !haveTblHeadersRendered) {
+
+ if (haveColsEnumerated && !haveTblHeadingRendered) {
+ ListTagUtil.setCurrentCommand(pageContext, getUniqueName(),
+ ListCommand.TBL_HEADING);
+
+ ListTagUtil.write(pageContext, "<div class=\"panel-heading\">");
+
+ if (!StringUtils.isBlank(title)) {
+ HtmlTag h3 = new HtmlTag("h3");
+ h3.setAttribute("class", "panel-title");
+ h3.addBody(title);
+
+ ListTagUtil.write(pageContext, h3.render());
+ }
+ ListTagUtil.write(pageContext, "<!-- END heading (panel-heading) -->");
+ ListTagUtil.write(pageContext, "</div>");
+ }
+ else if (haveColsEnumerated && !haveTblAddonsRendered) {
+ ListTagUtil.write(pageContext, "<div class=\"panel-body\">");
setupManipulator();
manip.sort();
pageData = manip.getPage();
@@ -469,82 +474,67 @@ public class ListTag extends BodyTagSupport {
ListTagUtil.makeFilterSearchChildLabel(uniqueName), searchChild));
ListTagUtil.write(pageContext, String.format(HIDDEN_TEXT,
ListTagUtil.makeParentIsAnElementLabel(uniqueName), parentIsElement));
- setupFilterUI();
+
+ ListTagUtil.write(pageContext, "<div class=\"filter-input\">");
+ ListTagUtil.write(pageContext, "<div class=\"row\">");
+
+ // column with the filter
+ ListTagUtil.write(pageContext, "<div class=\"col-lg-6 text-left\">");
if (filter != null && manip.getUnfilteredDataSize() != 0) {
ListTagUtil.renderFilterUI(pageContext, filter,
getUniqueName(), width, columnCount,
searchParent, searchChild);
}
if (isSortable()) {
- String sortByLabel = ListTagUtil.makeSortByLabel(getUniqueName());
- String sortDirLabel = ListTagUtil.makeSortDirLabel(getUniqueName());
-
- HtmlTag sortByInputTag = new HtmlTag("input");
- sortByInputTag.setAttribute("type", "hidden");
- sortByInputTag.setAttribute("name", sortByLabel);
- sortByInputTag.setAttribute("id",
- ListTagUtil.makeSortById(getUniqueName()));
- sortByInputTag.setAttribute("value", StringUtils.defaultString(
- pageContext.getRequest().getParameter(sortByLabel)));
-
- HtmlTag sortByDirTag = new HtmlTag("input");
- sortByDirTag.setAttribute("type", "hidden");
- sortByDirTag.setAttribute("name", sortDirLabel);
- sortByDirTag.setAttribute("id", ListTagUtil.
- makeSortDirId(getUniqueName()));
- sortByDirTag.setAttribute("value", StringUtils.defaultString(
- pageContext.getRequest().getParameter(sortDirLabel)));
-
- ListTagUtil.write(pageContext, sortByInputTag.render());
- ListTagUtil.write(pageContext, sortByDirTag.render());
+ renderSortableHiddenFields();
}
-
if (!isEmpty()) {
for (ListDecorator dec : getDecorators()) {
dec.beforeTopPagination();
}
}
- renderPaginationControls(false);
- startTable();
- HttpServletRequest request = (HttpServletRequest) pageContext
+ ListTagUtil.write(pageContext, "</div>");
+
+ // column with the pagination controls
+ ListTagUtil.write(pageContext, "<div class=\"col-lg-6 text-right list-infotext\">");
+ renderTopPaginationControls();
+ ListTagUtil.write(pageContext, "</div>");
+
+ // end of the row
+ ListTagUtil.write(pageContext, "</div>");
+
+ // end of the filter-input div
+ ListTagUtil.write(pageContext, "</div>");
+
+ ListTagUtil.write(pageContext, "<!-- END addons (panel-boddy) -->");
+ ListTagUtil.write(pageContext, "</div>");
+
+ startTable();
+ HttpServletRequest request = (HttpServletRequest) pageContext
.getRequest();
- manip.bindPaginationInfo();
- request.setAttribute("dataSize", String
- .valueOf(pageData.size() + 1));
- ListTagUtil.setCurrentCommand(pageContext, getUniqueName(),
- ListCommand.TBL_HEADER);
- if (pageData != null && pageData.size() > 0) {
- iterator = pageData.iterator();
- }
- else {
- iterator = null;
- }
+ manip.bindPaginationInfo();
+ request.setAttribute("dataSize", String
+ .valueOf(pageData.size() + 1));
+ ListTagUtil.setCurrentCommand(pageContext, getUniqueName(),
+ ListCommand.TBL_ADDONS);
+ if (pageData != null && pageData.size() > 0) {
+ iterator = pageData.iterator();
+ }
+ else {
+ iterator = null;
+ }
}
- if (haveColsEnumerated && haveTblHeadersRendered &&
+ if (haveColsEnumerated && haveTblAddonsRendered &&
!haveColHeadersRendered) {
+
+ // Nothing to do when rendering the col headers
+ // those are done by the column tag
ListTagUtil.setCurrentCommand(pageContext, getUniqueName(),
ListCommand.COL_HEADER);
- ListTagUtil.write(pageContext, "<thead><tr>");
-
- if (!StringUtils.isBlank(title)) {
- HtmlTag th = new HtmlTag("th");
- th.setAttribute("colspan", String.valueOf(getColumnCount()));
- HtmlTag strong = new HtmlTag("strong");
- strong.addBody(title);
- th.addBody(strong.render());
-
- ListTagUtil.write(pageContext, th.render());
-
- ListTagUtil.write(pageContext, "</tr>\n<tr>");
- }
-
}
if (haveColHeadersRendered && !haveTblFootersRendered) {
- if (!haveRenderedColumnHeaderEndTag) {
- ListTagUtil.write(pageContext, "</tr>");
- }
if (manip.isListEmpty()) {
renderEmptyList();
@@ -564,6 +554,7 @@ public class ListTag extends BodyTagSupport {
}
if (currentObject == null) {
ListTagUtil.write(pageContext, "</tbody>");
+ ListTagUtil.write(pageContext, "</table>");
ListTagUtil.setCurrentCommand(pageContext, getUniqueName(),
ListCommand.TBL_FOOTER);
}
@@ -577,10 +568,61 @@ public class ListTag extends BodyTagSupport {
}
else if (haveTblFootersRendered) {
retval = BodyTagSupport.SKIP_BODY;
+
+ ListTagUtil.write(pageContext, "<div class=\"panel-footer\">");
+
+ if ((refLink != null) && (!isEmpty())) {
+ ListTagUtil.write(pageContext, "<a href=\"" + refLink + "\" >");
+ /* Here we render the reflink and its key. If the key hasn't been set
+ * we just display the link address itself.
+ */
+ if (refLinkKey != null) {
+ Object[] args = new Object[2];
+ args[0] = new Integer(getPageRowCount());
+ args[1] = refLinkKeyArg0;
+ String message = LocalizationService.getInstance().
+ getMessage(refLinkKey, args);
+
+ ListTagUtil.write(pageContext, message);
+ }
+ else {
+ ListTagUtil.write(pageContext, refLink);
+ }
+
+ ListTagUtil.write(pageContext, "</a>");
+ }
+
+ renderFooterPaginationControls();
+ // closes the panel footer
+ ListTagUtil.write(pageContext, "</div>");
}
return retval;
}
+ private void renderSortableHiddenFields() throws JspException {
+ String sortByLabel = ListTagUtil.makeSortByLabel(getUniqueName());
+ String sortDirLabel = ListTagUtil.makeSortDirLabel(getUniqueName());
+
+ HtmlTag sortByInputTag = new HtmlTag("input");
+ sortByInputTag.setAttribute("type", "hidden");
+ sortByInputTag.setAttribute("name", sortByLabel);
+ sortByInputTag.setAttribute("id",
+ ListTagUtil.makeSortById(getUniqueName()));
+ sortByInputTag.setAttribute("value", StringUtils.defaultString(
+ pageContext.getRequest().getParameter(sortByLabel)));
+
+ HtmlTag sortByDirTag = new HtmlTag("input");
+ sortByDirTag.setAttribute("type", "hidden");
+ sortByDirTag.setAttribute("name", sortDirLabel);
+ sortByDirTag.setAttribute("id", ListTagUtil.
+ makeSortDirId(getUniqueName()));
+ sortByDirTag.setAttribute("value", StringUtils.defaultString(
+ pageContext.getRequest().getParameter(sortDirLabel)));
+
+ ListTagUtil.write(pageContext, sortByInputTag.render());
+ ListTagUtil.write(pageContext, sortByDirTag.render());
+ }
+
private void setupPageData() throws JspException {
Object d = pageContext.getAttribute(dataSetName);
if (d == null) {
@@ -617,14 +659,13 @@ public class ListTag extends BodyTagSupport {
manip = new DataSetManipulator(pageSize, pageData,
(HttpServletRequest) pageContext.getRequest(),
getUniqueName(), isParentAnElement(), searchParent, searchChild);
- int retval = BodyTagSupport.EVAL_BODY_INCLUDE;
ListTagUtil.write(pageContext, "<!-- START LIST " + getUniqueName() + " -->");
- ListTagUtil.write(pageContext, "<div class=\"spacewalk-list\" id=\"" + getUniqueName() + "\">");
+ ListTagUtil.write(pageContext, "<div class=\"spacewalk-list panel panel-default\" id=\"" + getUniqueName() + "\">");
ListTagUtil.setCurrentCommand(pageContext, getUniqueName(),
ListCommand.ENUMERATE);
- return retval;
+ return BodyTagSupport.EVAL_BODY_INCLUDE;
}
private void setupManipulator() throws JspException {
@@ -708,7 +749,7 @@ public class ListTag extends BodyTagSupport {
filter = null;
haveColsEnumerated = false;
haveColHeadersRendered = false;
- haveTblHeadersRendered = false;
+ haveTblAddonsRendered = false;
haveTblFootersRendered = false;
getDecorators().clear();
decorators = null;
@@ -787,8 +828,11 @@ public class ListTag extends BodyTagSupport {
if (cmd.equals(ListCommand.ENUMERATE)) {
haveColsEnumerated = true;
}
- else if (cmd.equals(ListCommand.TBL_HEADER)) {
- haveTblHeadersRendered = true;
+ else if (cmd.equals(ListCommand.TBL_HEADING)) {
+ haveTblHeadingRendered = true;
+ }
+ else if (cmd.equals(ListCommand.TBL_ADDONS)) {
+ haveTblAddonsRendered = true;
}
else if (cmd.equals(ListCommand.COL_HEADER)) {
haveColHeadersRendered = true;
@@ -798,25 +842,24 @@ public class ListTag extends BodyTagSupport {
}
}
- private void renderPaginationControls(boolean isFooter) throws JspException {
+ private void renderFooterPaginationControls() throws JspException {
- if (isFooter && (isEmpty() || hidePageNums)) {
+ if (isEmpty() || hidePageNums) {
return;
}
- if (isFooter) {
- ListTagUtil.write(pageContext, "<div>");
- ListTagUtil.write(pageContext, "<table ");
- ListTagUtil.write(pageContext, " cellspacing=\"0\" ");
- ListTagUtil.write(pageContext, "cellpadding=\"0\" width=\"100%\">");
- ListTagUtil.write(pageContext, "<tr>");
- ListTagUtil.write(pageContext, "<td align=\"left\">");
+ ListTagUtil.write(pageContext, "<div>");
+ ListTagUtil.write(pageContext, "<table ");
+ ListTagUtil.write(pageContext, " cellspacing=\"0\" ");
+ ListTagUtil.write(pageContext, "cellpadding=\"0\" width=\"100%\">");
+ ListTagUtil.write(pageContext, "<tr>");
+ ListTagUtil.write(pageContext, "<td align=\"left\">");
- for (ListDecorator dec : getDecorators()) {
- dec.afterList();
- }
- ListTagUtil.write(pageContext, "</td>");
+ for (ListDecorator dec : getDecorators()) {
+ dec.setCurrentList(this);
+ dec.afterList();
}
+ ListTagUtil.write(pageContext, "</td>");
ListTagUtil.write(pageContext,
"<td valign=\"middle\" class=\"list-infotext\">");
@@ -826,13 +869,8 @@ public class ListTag extends BodyTagSupport {
if (!manip.isListEmpty()) {
for (ListDecorator dec : getDecorators()) {
- if (isFooter) {
- dec.afterBottomPagination();
- dec.setCurrentList(null);
- }
- else {
- dec.afterTopPagination();
- }
+ dec.afterBottomPagination();
+ dec.setCurrentList(null);
}
}
@@ -845,20 +883,21 @@ public class ListTag extends BodyTagSupport {
}
- private void setupFilterUI() throws JspException {
- ListTagUtil.write(pageContext, "<div class=\"filter-input\"><table");
- ListTagUtil.write(pageContext, " cellspacing=\"0\"");
- ListTagUtil.write(pageContext, " cellpadding=\"0\"");
- if (width != null) {
- ListTagUtil.write(pageContext, " width=\"");
- ListTagUtil.write(pageContext, width);
- ListTagUtil.write(pageContext, "\"");
+ private void renderTopPaginationControls() throws JspException {
+
+ if (!isEmpty() && !hidePageNums) {
+ ListTagUtil.write(pageContext, manip.getPaginationMessage());
}
- else {
- ListTagUtil.write(pageContext, " width=\"100%\"");
+
+ if (!manip.isListEmpty()) {
+ for (ListDecorator dec : getDecorators()) {
+ dec.afterTopPagination();
+ }
}
- ListTagUtil.write(pageContext, ">");
- ListTagUtil.write(pageContext, "<tr>");
+
+ ListTagUtil.write(pageContext, " ");
+ ListTagUtil.renderPaginationLinks(pageContext, PAGINATION_NAMES,
+ manip.getPaginationLinks());
}
private void setPageSize() {
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTagUtil.java b/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTagUtil.java
index d06764a..dfd31ee 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTagUtil.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTagUtil.java
@@ -569,35 +569,35 @@ public class ListTagUtil {
if (links.size() == 0) {
return;
}
+ ListTagUtil.write(pageContext, "<div class=\"btn-group\">");
for (int x = 0; x < linkNames.length; x++) {
String[] linkData = (String[]) links.get(linkNames[x]);
- if (linkData[1] != null) {
- ListTagUtil.write(pageContext, "<input align=\"top\" type=\"image\" ");
- ListTagUtil.write(pageContext, "src=\"");
- ListTagUtil.write(pageContext, linkData[0]);
- ListTagUtil.write(pageContext, "\" name=\"");
- ListTagUtil.write(pageContext, linkData[1]);
- ListTagUtil.write(pageContext, "\" value=\"");
- ListTagUtil.write(pageContext, linkData[2]);
- ListTagUtil.write(pageContext, "\" alt=\"");
- ListTagUtil.write(pageContext, linkData[3]);
- ListTagUtil.write(pageContext, "\" />");
+ ListTagUtil.write(pageContext, "<button ");
+ ListTagUtil.write(pageContext, "class=\"btn btn-default ");
+ ListTagUtil.write(pageContext, linkData[0]);
- ListTagUtil.write(pageContext, "<input type=\"hidden\" name=\"");
+ // if the link is disabled...
+ if (linkData[1] == null) {
+ ListTagUtil.write(pageContext, " disabled");
+ }
+ else {
+ ListTagUtil.write(pageContext, "\" name=\"");
ListTagUtil.write(pageContext, linkData[1]);
ListTagUtil.write(pageContext, "\" value=\"");
ListTagUtil.write(pageContext, linkData[2]);
- ListTagUtil.write(pageContext, "\" />");
- }
- else {
- ListTagUtil.write(pageContext, "<img align=\"top\" src=\"");
- ListTagUtil.write(pageContext, linkData[0]);
- ListTagUtil.write(pageContext, "\">");
- if (linkData[1] != null) {
- ListTagUtil.write(pageContext, "</a>");
- }
}
+ ListTagUtil.write(pageContext, "\" />");
+
+ /*
+ if (linkData[1] = null) {
+ ListTagUtil.write(pageContext, "<input type=\"hidden\" name=\"");
+ ListTagUtil.write(pageContext, linkData[1]);
+ ListTagUtil.write(pageContext, "\" value=\"");
+ ListTagUtil.write(pageContext, linkData[2]);
+ ListTagUtil.write(pageContext, "\" />");
+ */
}
+ ListTagUtil.write(pageContext, "</div>");
}
/**
@@ -641,8 +641,6 @@ public class ListTagUtil {
StringEscapeUtils.escapeHtml(filterValue)));
- ListTagUtil.write(pageContext, "<td");
- ListTagUtil.write(pageContext, " align=\"left\">");
List fields = filter.getFieldNames();
if (fields == null || fields.size() == 0) {
throw new JspException(
@@ -678,7 +676,7 @@ public class ListTagUtil {
filterValue = StringUtil.nullOrValue(filterValue);
StringBuilder sb = new StringBuilder();
- sb.append("<div class=\"col-lg-6\">");
+ // create a new row
sb.append("<div class=\"input-group input-group-sm\">");
String placeHolder = StringUtils.defaultString(ls.getMessage("message.filterby",
@@ -698,11 +696,11 @@ public class ListTagUtil {
filterName));
sb.append("</button>");
sb.append("</span>");
- sb.append("</div>");
+
sb.append("</div>");
ListTagUtil.write(pageContext, sb.toString());
- ListTagUtil.write(pageContext, "</td>");
+
}
private static String makePageLink(HttpServletRequest request,
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/list/SpanTag.java b/java/code/src/com/redhat/rhn/frontend/taglibs/list/SpanTag.java
index 62aa889..5659ffc 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/SpanTag.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/list/SpanTag.java
@@ -87,7 +87,7 @@ public class SpanTag extends TagSupport {
public int doEndTag() throws JspException {
ListCommand cmd = ListTagUtil.getCurrentCommand(this, pageContext);
ListTag parent = (ListTag) TagSupport.findAncestorWithClass(this, ListTag.class);
- if (cmd.equals(ListCommand.TBL_HEADER) && role.equals("header")) {
+ if (cmd.equals(ListCommand.TBL_ADDONS) && role.equals("header")) {
renderHeader(parent);
}
else if (cmd.equals(ListCommand.TBL_FOOTER) && role.equals("footer")) {
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/list/test/ListTagTest.java b/java/code/src/com/redhat/rhn/frontend/taglibs/list/test/ListTagTest.java
index 9408ae1..dff15b3 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/test/ListTagTest.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/list/test/ListTagTest.java
@@ -108,8 +108,8 @@ public class ListTagTest extends MockObjectTestCase {
Stub[] cmdValues = {
returnValue(ListCommand.ENUMERATE), // listtag asking
returnValue(ListCommand.ENUMERATE), // columntag asking
- returnValue(ListCommand.TBL_HEADER), // listtag asking
- returnValue(ListCommand.TBL_HEADER), // columntag asking
+ returnValue(ListCommand.TBL_ADDONS), // listtag asking
+ returnValue(ListCommand.TBL_ADDONS), // columntag asking
returnValue(ListCommand.COL_HEADER), // listtag asking
returnValue(ListCommand.COL_HEADER), // columntag asking
returnValue(ListCommand.RENDER), // listtag asking
commit bec5fba62be32cb9fbd877a1d6ed7c57ece45e33
Author: Duncan Mac-Vicar P <dmacvicar(a)suse.de>
Date: Fri Oct 11 17:22:21 2013 +0200
align the csv link to the right. May be we make it a button?
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/list/CSVTag.java b/java/code/src/com/redhat/rhn/frontend/taglibs/list/CSVTag.java
index d950e9d..f5f9378 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/CSVTag.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/list/CSVTag.java
@@ -196,7 +196,7 @@ public class CSVTag extends BodyTagSupport {
private void renderExport() throws JspException {
StringBuffer page = new StringBuffer(CSV_DOWNLOAD_URI);
page.append("?" + makeCSVRequestParams());
- String exportLink = new String("<div class=\"spacewalk-csv-download\"><a href=\"" +
+ String exportLink = new String("<div class=\"spacewalk-csv-download text-right\"><a href=\"" +
page + "\"><i class=\"icon-download-alt\"></i>" +
LocalizationService.getInstance().getMessage(
"listdisplay.csv") + "</a></div>");
commit ef761326e0f435ba0d0b0a81f6f05f14eaa9b8bc
Author: Duncan Mac-Vicar P <dmacvicar(a)suse.de>
Date: Fri Oct 11 16:53:38 2013 +0200
make some space between the badge with the system count and the text in
the top bar.
diff --git a/branding/css/spacewalk.less b/branding/css/spacewalk.less
index 580f89c..aab71bf 100644
--- a/branding/css/spacewalk.less
+++ b/branding/css/spacewalk.less
@@ -218,7 +218,7 @@ header #bar .spacewalk-bar{
text-align: right;
}
header #bar .spacewalk-bar .badge{
- padding-right: .5em
+ margin-right: .5em
}
/* systems selector */
commit 4ba1f9d1017e2a5c13d99c6a3c9058cf0f50e15e
Author: Duncan Mac-Vicar P <dmacvicar(a)suse.de>
Date: Fri Oct 11 16:52:25 2013 +0200
add margin only to icons in a <i> tag otherwise we deform button groups
diff --git a/branding/css/spacewalk.less b/branding/css/spacewalk.less
index 9ec12f8..580f89c 100644
--- a/branding/css/spacewalk.less
+++ b/branding/css/spacewalk.less
@@ -87,10 +87,10 @@ h2{
overflow: hidden;
}
/* adding margin to the icons in fontawesome */
-[class^="icon-"],
-[class*=" icon-"],
-[class*="spacewalk-icon"],
-[class^="spacewalk-icon"] {
+i[class^="icon-"],
+i[class*=" icon-"],
+i[class*="spacewalk-icon"],
+i[class^="spacewalk-icon"] {
margin-right: .5em;
}
commit 79f9b1065e764228c2888d84e3988da5c3f4a306
Author: Duncan Mac-Vicar P <dmacvicar(a)suse.de>
Date: Fri Oct 11 16:52:16 2013 +0200
syntax error in js
diff --git a/web/html/javascript/spacewalk-essentials.js b/web/html/javascript/spacewalk-essentials.js
index 71d338e..5aaa0ad 100644
--- a/web/html/javascript/spacewalk-essentials.js
+++ b/web/html/javascript/spacewalk-essentials.js
@@ -4,7 +4,7 @@ $(document).on("ready", function(){
$("#sidenav ul>ul").hide();
if ($("#sidenav li").attr("class", "active")){
$(this).next("ul").show(300);
- });
+ };
/* Systems Selected Toolbar - actions to hide the toolbar when th Clear button is pressed or when
no system is selected */
$("#clearbtn").click(hidesystemtool);
commit 1c36762c62c3b9a4f7f5f464c60b9ce76fb84152
Author: Duncan Mac-Vicar P <dmacvicar(a)suse.de>
Date: Thu Oct 10 12:49:45 2013 +0200
Port most of the list widgets to output html that can be better styled
with bootstrap.
rl:list is now rendered inside a div. Most tables that are not data for
layout are removed, and caption/tfoot are used.
diff --git a/java/code/src/com/redhat/rhn/frontend/html/BaseTag.java b/java/code/src/com/redhat/rhn/frontend/html/BaseTag.java
index ddbbce1..90dc302 100644
--- a/java/code/src/com/redhat/rhn/frontend/html/BaseTag.java
+++ b/java/code/src/com/redhat/rhn/frontend/html/BaseTag.java
@@ -27,10 +27,10 @@ import java.util.Map;
* @version $Rev: 60021 $
*/
public abstract class BaseTag {
- private String tag;
- private Map<String, String> attribs;
- private List body;
- private boolean spaceBeforeEndTag;
+ private final String tag;
+ private final Map<String, String> attribs;
+ private final List body;
+ private final boolean spaceBeforeEndTag;
/**
* Public constructor
@@ -66,7 +66,16 @@ public abstract class BaseTag {
}
/**
- * set the body of the tag
+ * sets the body of the tag
+ * @param bodyIn the new body
+ */
+ public void setBody(String bodyIn) {
+ body.clear();
+ body.add(bodyIn);
+ }
+
+ /**
+ * adds to the body of the tag
* @param bodyIn the new body
*/
public void addBody(String bodyIn) {
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/ListDisplayTag.java b/java/code/src/com/redhat/rhn/frontend/taglibs/ListDisplayTag.java
index 911004d..3e66cb8 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/ListDisplayTag.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/ListDisplayTag.java
@@ -31,6 +31,7 @@ import com.redhat.rhn.frontend.struts.RequestContext;
import com.redhat.rhn.manager.acl.AclManager;
import com.redhat.rhn.manager.rhnset.RhnSetDecl;
+import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
import java.io.IOException;
@@ -55,7 +56,6 @@ import javax.servlet.jsp.tagext.BodyTagSupport;
* The ListDisplayTag defines the structure of the ListView. This tag iterates
* through the {@link com.redhat.rhn.common.db.datasource.DataResult DataResult}
* contained in its parent tag,
- * {@link com.redhat.rhn.frontend.taglibs.ListTag ListTag}. In the first
* iteration the {@link com.redhat.rhn.frontend.taglibs.ColumnTag ColumnTags}
* render the headers of the ListView, while subsequent iterations render the
* data contained within the
@@ -592,8 +592,8 @@ public class ListDisplayTag extends BodyTagSupport {
if (request.getQueryString() != null) {
page.append("&" + request.getQueryString());
}
- out.println("<div class=\"csv-download\"><a href=\"" + page +
- "\"><img src=\"/img/csv-16.png\"/ alt=\"\">" +
+ out.println("<div class=\"spacewalk-csv-download\"><a href=\"" + page +
+ "\"><i class=\"icon-download-alt\"></i>" +
LocalizationService.getInstance().getMessage("listdisplay.csv") +
"</a></div>");
}
@@ -605,11 +605,9 @@ public class ListDisplayTag extends BodyTagSupport {
*/
private void renderTitle(JspWriter out) throws IOException {
if (!StringUtils.isEmpty(title)) {
- HtmlTag tr = new HtmlTag("tr");
- HtmlTag th = new HtmlTag("th");
- th.addBody(LocalizationService.getInstance().getMessage(title));
- tr.addBody(th);
- out.println(tr.render());
+ HtmlTag caption = new HtmlTag("caption");
+ caption.addBody(LocalizationService.getInstance().getMessage(title));
+ out.println(caption.render());
}
}
@@ -633,15 +631,21 @@ public class ListDisplayTag extends BodyTagSupport {
private void renderFilterBox(JspWriter out) throws IOException {
LocalizationService ls = LocalizationService.getInstance();
+
HtmlTag tag = new HtmlTag("div");
- tag.setAttribute("class", "filter-input");
+ tag.setAttribute("class", "spacewalk-filter-input input-group");
StringBuffer buf = new StringBuffer();
+
HtmlTag input = new HtmlTag("input");
input.setAttribute("type", "text");
- input.setAttribute("size", "12");
+ input.setAttribute("class", "form-control");
input.setAttribute("name", RequestContext.FILTER_STRING);
input.setAttribute("value", pageList.getFilterData());
+ String placeHolder = StringEscapeUtils.escapeHtml(
+ ls.getMessage("message.filterby", ls.getMessage(filterBy)));
+ input.setAttribute("placeholder", placeHolder);
+
buf.append(input.render());
input = new HtmlTag("input");
@@ -650,15 +654,20 @@ public class ListDisplayTag extends BodyTagSupport {
input.setAttribute("value", pageList.getFilterData());
buf.append(input.render());
- input = new HtmlTag("input");
- input.setAttribute("type", "submit");
- input.setAttribute("name", FILTER_DISPATCH);
- input.setAttribute("value", ls.getMessage(RequestContext.FILTER_KEY));
- buf.append(input.render());
+ HtmlTag btnSpan = new HtmlTag("span");
+ btnSpan.setAttribute("class", "input-group-btn");
+ HtmlTag btn = new HtmlTag("button");
+ btn.setAttribute("class", "btn btn-default icon-filter");
+ btn.setAttribute("type", "submit");
+ btn.setAttribute("name", FILTER_DISPATCH);
+ //input.setAttribute("value", ls.getMessage(RequestContext.FILTER_KEY));
- tag.addBody(ls.getMessage("message.filterby", ls.getMessage(filterBy)) +
- buf.toString());
+ btnSpan.addBody(btn);
+
+ buf.append(btnSpan.render());
+
+ tag.addBody(buf.toString());
out.println(tag.render());
}
@@ -683,11 +692,12 @@ public class ListDisplayTag extends BodyTagSupport {
LocalizationService ls = LocalizationService.getInstance();
- HtmlTag input = new HtmlTag("input");
- input.setAttribute("type", "submit");
- input.setAttribute("name", name);
- input.setAttribute("value", ls.getMessage(label));
- return input;
+ HtmlTag btn = new HtmlTag("button");
+ btn.setAttribute("class", "btn btn-default");
+ btn.setAttribute("type", "submit");
+ btn.setAttribute("name", name);
+ btn.addBody(ls.getMessage(label));
+ return btn;
}
@@ -704,10 +714,10 @@ public class ListDisplayTag extends BodyTagSupport {
throws IOException {
if (type.equals("list")) {
- out.println("<table width=\"100%\" class=\"list-pagination\"");
+ out.println("<div class=\"spacewalk-list-pagination\"");
}
else {
- out.println("<table class=\"list-pagination\"");
+ out.println("<div class=\"spacewalk-list-pagination\"");
}
if (tableId != null) {
@@ -715,9 +725,10 @@ public class ListDisplayTag extends BodyTagSupport {
}
out.println(">");
- out.println("<tr>");
+
+ out.println("<div class=\"row\">");
// if (!showSetButtons) {
- out.println("<td valign=\"middle\" width=\"90%\">");
+ out.println("<div class=\"col-md-10\">");
//}
//else {
// out.println("<td valign=\"middle\">");
@@ -728,7 +739,7 @@ public class ListDisplayTag extends BodyTagSupport {
}
if (!top && set != null) {
if (showSetButtons) {
- out.print("<span class=\"list-selection-buttons\">");
+ out.print("<span class=\"spacewalk-list-selection-btns\">");
renderSetButtons(out);
out.print("</span>");
}
@@ -738,8 +749,9 @@ public class ListDisplayTag extends BodyTagSupport {
}
- out.println("</td>");
- out.print("<td valign=\"middle\" class=\"list-infotext\">");
+ out.println("</div>");
+
+ out.print("<div class=\"col-md-2\" class=\"list-infotext\">");
int finalResult = pageList.getEnd();
if (finalResult > pageList.getTotalSize()) {
finalResult = pageList.getTotalSize();
@@ -773,47 +785,42 @@ public class ListDisplayTag extends BodyTagSupport {
out.print("</span></strong>\n");
}
- out.println("</td>");
+ out.println("</div>");
appendButtons(out);
- out.println(" </tr>\n");
- out.println("</table>");
+ out.println(" </div>\n");
+ out.println("</div>");
}
private void appendButtons(JspWriter out) throws IOException {
- out.println("<td valign=\"middle\" class=\"list-navbuttons\">");
+ out.println("<div class=\"list-navbuttons\">");
boolean canGoForward = pageList.getEnd() < pageList.getTotalSize();
boolean canGoBack = pageList.getStart() > 1;
if (canGoForward || canGoBack) {
out.println(renderPaginationButton(FIRST,
- "/img/list-allbackward", " |< ", canGoBack));
- out.println(renderPaginationButton(PREV, "/img/list-backward",
+ "icon-fast-backward", " |< ", canGoBack));
+ out.println(renderPaginationButton(PREV, "icon-backward",
" < ", canGoBack));
- out.println(renderPaginationButton(NEXT, "/img/list-forward",
+ out.println(renderPaginationButton(NEXT, "icon-forward",
" > ", canGoForward));
out.println(renderPaginationButton(LAST,
- "/img/list-allforward", " >| ", canGoForward));
+ "icon-fast-forward", " >| ", canGoForward));
}
- out.println("</td>\n");
+ out.println("</div>\n");
}
- private String renderPaginationButton(String name, String imgPrefix,
+ private String renderPaginationButton(String name, String icon,
String text, boolean active) {
- HtmlTag ret = new HtmlTag("input");
- ret.setAttribute("type", "image");
+ HtmlTag ret = new HtmlTag("button");
ret.setAttribute("name", name);
- ret.setAttribute("value", text);
+ String styleClass = String.format("btn btn-default %s", icon);
- if (active) {
- ret.setAttribute("class", "list-nextprev-active");
- ret.setAttribute("src", imgPrefix + ".gif");
- }
- else {
- ret.setAttribute("class", "list-nextprev-inactive");
- ret.setAttribute("src", imgPrefix + "-unfocused.gif");
+ if (!active) {
+ styleClass += " disabled";
}
+ ret.addBody(String.format("<span class=\"sr-only\">%s</span>", text));
return ret.render();
}
@@ -827,22 +834,21 @@ public class ListDisplayTag extends BodyTagSupport {
}
- out.println("<div align=\"right\">");
- out.println(" <hr />");
+ out.println("<div class=\"text-right\">");
if (getButton() != null && AclManager.hasAcl(getButtonAcl(),
(HttpServletRequest) pageContext.getRequest(), getMixins())) {
- out.println("<input type=\"submit\" name=\"dispatch\" value=\"" +
+ out.println("<button class=\"btn btn-default\" type=\"submit\" name=\"dispatch\">" +
LocalizationService.getInstance().getMessage(getButton()) +
- "\" />");
+ "</button>");
}
if (getButton2() != null && AclManager.hasAcl(getButton2Acl(),
(HttpServletRequest) pageContext.getRequest(), getMixins())) {
- out.println("<input type=\"submit\" name=\"dispatch\" value=\"" +
+ out.println("<button class=\"btn btn-default\" type=\"submit\" name=\"dispatch\">" +
LocalizationService.getInstance().getMessage(getButton2()) +
- "\" />");
+ "</button>");
}
out.println("</div>");
@@ -926,17 +932,10 @@ public class ListDisplayTag extends BodyTagSupport {
private void renderAlphabar(JspWriter out) throws IOException {
StringBuffer target = new StringBuffer();
- if (type.equals("list")) {
- target.append("<table width=\"100%\" cellspacing=\"0\"" +
- " cellpadding=\"1\">");
- }
- else {
- target.append("<table cellspacing=\"0\" " + " cellpadding=\"1\">");
- }
+ target.append("<div class=\"spacewalk-alphabar\">");
- target.append("<tr valign=\"top\">");
- target.append("<td class=\"list-alphabar\"><div align=\"center\"><strong>");
- StringBuffer enabled = new StringBuffer("<a href=\"");
+ target.append("<ul class=\"pagination pagination-sm\">");
+ StringBuffer enabled = new StringBuffer("<li><a href=\"");
enabled.append("?lower={1}");
/**
@@ -975,15 +974,12 @@ public class ListDisplayTag extends BodyTagSupport {
}
}
- enabled.append("\" class=\"list-alphabar-enabled\">{0}</a>");
+ enabled.append("\">{0}</a><li>");
AlphaBar ab = new AlphaBar(enabled.toString(),
- "<span class=\"list-alphabar-disabled\">{0}</span>");
+ "<li class=\"disabled\"><span>{0}</span></li>");
target.append(ab.getAlphaList(pageList.getIndex()));
- target.append("</strong></div>");
- target.append("<br />");
- target.append("</td>");
- target.append(" </tr>");
- target.append("</table>");
+ target.append("</ul>");
+ target.append("</div>");
out.println(target.toString());
}
@@ -1054,6 +1050,7 @@ public class ListDisplayTag extends BodyTagSupport {
//////////////////////////////////////////////////////////////////////////
/** {@inheritDoc} */
+ @Override
public int doStartTag() throws JspException {
rowCnt = 0;
numItemsChecked = 0;
@@ -1099,17 +1096,11 @@ public class ListDisplayTag extends BodyTagSupport {
/* If the type is list, we must set the width explicitly. Otherwise,
* it shouldn't matter
*/
- if (type.equals("list") && title == null) {
- out.print("<table width=\"100%\" cellspacing=\"0\"" +
- " cellpadding=\"0\" " + "class=\"list\"");
- }
- else if (type.equals("list") && title != null) {
- out.print("<table width=\"100%\" cellspacing=\"0\"" +
- " cellpadding=\"0\" " + "class=\"list list-doubleheader\"");
+ if (type.equals("list")) {
+ out.print("<table class=\"table table-striped spacewalk-list\"");
}
else {
- out.print("<table cellspacing=\"0\" " + " cellpadding=\"0\" " +
- "class=\"" + type + "\"");
+ out.print("<table class=\"" + type + "\"");
}
/*if (isTransparent()) {
@@ -1122,10 +1113,10 @@ public class ListDisplayTag extends BodyTagSupport {
out.println(">");
- out.println("<thead>");
-
renderTitle(out);
+ out.println("<thead>");
+
out.println("\n<tr>");
if (iterator != null && iterator.hasNext()) {
@@ -1142,6 +1133,7 @@ public class ListDisplayTag extends BodyTagSupport {
}
/** {@inheritDoc} */
+ @Override
public int doEndTag() throws JspException {
JspWriter out = null;
try {
@@ -1182,6 +1174,7 @@ public class ListDisplayTag extends BodyTagSupport {
}
out.println(bodyString);
}
+ out.println("</tbody>");
/* If the type is a half-table, we must draw an extra row on the
* end of the table if the reflink has been set
@@ -1189,17 +1182,7 @@ public class ListDisplayTag extends BodyTagSupport {
if (reflink != null) {
columnCount = 0;
- out.println(getTrElement(null));
-
- out.print("<td style=\"text-align: center;\" " +
- "class=\"first-column last-column\" ");
-
-
- /* TODO: Make this colspan setting dynamic so that
- * the reflink row display correctly for lists of
- * with n columns instead of just 2
- */
- out.println("colspan=\"2\">");
+ out.println("<tfoot>");
out.println("<a href=\"" + reflink + "\" >");
@@ -1221,11 +1204,10 @@ public class ListDisplayTag extends BodyTagSupport {
}
out.println("</a>");
- out.println("</td>");
- out.println("</tr>");
+ out.println("</tfoot>");
}
- out.println("</tbody>");
+
out.println("</table>\n");
/* If paging is on, we render the pagination */
@@ -1250,7 +1232,7 @@ public class ListDisplayTag extends BodyTagSupport {
args[2] = new Integer(pageList.getTotalSize());
args[3] = LocalizationService.getInstance().getMessage(description);
- out.print("<span class=\"full-width-note-left\">\n");
+ out.print("<span class=\"text-left\">\n");
out.print(LocalizationService.getInstance()
.getMessage("message.range.withtypedescription", args));
out.println("</span>");
@@ -1269,6 +1251,7 @@ public class ListDisplayTag extends BodyTagSupport {
}
/** {@inheritDoc} */
+ @Override
public int doAfterBody() throws JspException {
JspWriter out = null;
try {
@@ -1301,6 +1284,7 @@ public class ListDisplayTag extends BodyTagSupport {
}
/** {@inheritDoc} */
+ @Override
public void release() {
// reset the state of the tag
iterator = null;
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/list/CSVTag.java b/java/code/src/com/redhat/rhn/frontend/taglibs/list/CSVTag.java
index 019b1f2..d950e9d 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/CSVTag.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/list/CSVTag.java
@@ -153,6 +153,7 @@ public class CSVTag extends BodyTagSupport {
/**
* ${@inheritDoc}
*/
+ @Override
public int doEndTag() throws JspException {
setupPageData();
if ((null != exportColumns) && (null != pageData)) {
@@ -165,6 +166,7 @@ public class CSVTag extends BodyTagSupport {
/**
* ${@inheritDoc}
*/
+ @Override
public int doStartTag() throws JspException {
verifyEnvironment();
@@ -174,6 +176,7 @@ public class CSVTag extends BodyTagSupport {
/**
* ${@inheritDoc}
*/
+ @Override
public void release() {
name = ListHelper.LIST;
dataSetName = ListHelper.DATA_SET;
@@ -193,8 +196,8 @@ public class CSVTag extends BodyTagSupport {
private void renderExport() throws JspException {
StringBuffer page = new StringBuffer(CSV_DOWNLOAD_URI);
page.append("?" + makeCSVRequestParams());
- String exportLink = new String("<div class=\"csv-download\"><a href=\"" +
- page + "\"><img src=\"/img/csv-16.png\" alt=\"\"/>" +
+ String exportLink = new String("<div class=\"spacewalk-csv-download\"><a href=\"" +
+ page + "\"><i class=\"icon-download-alt\"></i>" +
LocalizationService.getInstance().getMessage(
"listdisplay.csv") + "</a></div>");
ListTagUtil.write(pageContext, exportLink);
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTag.java b/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTag.java
index dcdba55..b1eae8e 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTag.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTag.java
@@ -392,23 +392,17 @@ public class ListTag extends BodyTagSupport {
/**
* ${@inheritDoc}
*/
+ @Override
public int doEndTag() throws JspException {
/* If a reference link was provided, it needs to be rendered on a separate
* row within the table.
*/
if ((refLink != null) && (!isEmpty())) {
- ListTagUtil.write(pageContext, "<tr");
- renderRowClassAndId();
- ListTagUtil.write(pageContext, ">");
-
- ListTagUtil.write(pageContext, "<td style=\"text-align: center;\" " +
- "class=\"first-column last-column\" ");
-
- ListTagUtil.write(pageContext,
- "colspan=" + String.valueOf(getColumnCount()) + ">");
+ ListTagUtil.write(pageContext, "<tfoot>");
+ ListTagUtil.write(pageContext, "<tr>");
+ ListTagUtil.write(pageContext, "<td colspan=\"" + String.valueOf(getColumnCount()) + "\">");
ListTagUtil.write(pageContext, "<a href=\"" + refLink + "\" >");
-
/* Here we render the reflink and its key. If the key hasn't been set
* we just display the link address itself.
*/
@@ -428,10 +422,13 @@ public class ListTag extends BodyTagSupport {
ListTagUtil.write(pageContext, "</a>");
ListTagUtil.write(pageContext, "</td>");
ListTagUtil.write(pageContext, "</tr>");
+ ListTagUtil.write(pageContext, "</tfoot>");
}
+
ListTagUtil.write(pageContext, "</table>");
renderPaginationControls(true);
+ ListTagUtil.write(pageContext, "</div>");
ListTagUtil.write(pageContext, "<!-- END " + getUniqueName() + " -->");
release();
return BodyTagSupport.EVAL_PAGE;
@@ -440,6 +437,7 @@ public class ListTag extends BodyTagSupport {
/**
* ${@inheritDoc}
*/
+ @Override
public int doAfterBody() throws JspException {
int retval = BodyTagSupport.EVAL_BODY_AGAIN;
@@ -610,6 +608,7 @@ public class ListTag extends BodyTagSupport {
/**
* ${@inheritDoc}
*/
+ @Override
public int doStartTag() throws JspException {
verifyEnvironment();
addDecorator(decoratorName);
@@ -619,7 +618,9 @@ public class ListTag extends BodyTagSupport {
(HttpServletRequest) pageContext.getRequest(),
getUniqueName(), isParentAnElement(), searchParent, searchChild);
int retval = BodyTagSupport.EVAL_BODY_INCLUDE;
- emitId();
+
+ ListTagUtil.write(pageContext, "<!-- START LIST " + getUniqueName() + " -->");
+ ListTagUtil.write(pageContext, "<div class=\"spacewalk-list\" id=\"" + getUniqueName() + "\">");
ListTagUtil.setCurrentCommand(pageContext, getUniqueName(),
ListCommand.ENUMERATE);
@@ -684,6 +685,7 @@ public class ListTag extends BodyTagSupport {
/**
* ${@inheritDoc}
*/
+ @Override
public void release() {
if (pageContext.getAttribute("current") != null) {
pageContext.removeAttribute("current");
@@ -760,14 +762,8 @@ public class ListTag extends BodyTagSupport {
}
}
- private void emitId() throws JspException {
- ListTagUtil.write(pageContext, "<!-- List id ");
- ListTagUtil.write(pageContext, getUniqueName());
- ListTagUtil.write(pageContext, " -->\n");
- }
-
private void startTable() throws JspException {
- ListTagUtil.write(pageContext, "<table class=\"table table-stripped\"");
+ ListTagUtil.write(pageContext, "<table class=\"table table-striped\"");
if (styleClass != null) {
ListTagUtil.write(pageContext, " class=\"");
ListTagUtil.write(pageContext, styleClass);
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTagUtil.java b/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTagUtil.java
index 1f52275..d06764a 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTagUtil.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTagUtil.java
@@ -679,22 +679,23 @@ public class ListTagUtil {
StringBuilder sb = new StringBuilder();
sb.append("<div class=\"col-lg-6\">");
- sb.append("<div class=\"input-group\">");
- sb.append(String.format("<span class=\"input-group-addon\">%s</span>",
- ls.getMessage("message.filterby",
- fields.get(0).toString())));
+ sb.append("<div class=\"input-group input-group-sm\">");
+
+ String placeHolder = StringUtils.defaultString(ls.getMessage("message.filterby",
+ fields.get(0).toString()));
sb.append(String.format("<input autofocus=\"autofocus\" type=\"text\" " +
- " name=\"%s\" value=\"%s\" class=\"form-control\"/>",
+ " name=\"%s\" value=\"%s\" class=\"form-control\" placeholder=\"%s\"/>",
filterValueKey,
(filterValue != null ?
StringEscapeUtils.escapeHtml(filterValue) :
- "")));
+ ""),
+ StringEscapeUtils.escapeHtml(placeHolder)
+ ));
sb.append("<span class=\"input-group-btn\">");
sb.append(String.format("<button value=\"%s\" type=\"submit\" name=\"%s\" " +
- " class=\"btn btn-default\">%s",
+ " class=\"btn btn-default\"><i class=\"icon-filter\"></i>",
ls.getMessage(RequestContext.FILTER_KEY),
- filterName,
- ls.getMessage(RequestContext.FILTER_KEY)));
+ filterName));
sb.append("</button>");
sb.append("</span>");
sb.append("</div>");
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/list/decorators/AddToSsmDecorator.java b/java/code/src/com/redhat/rhn/frontend/taglibs/list/decorators/AddToSsmDecorator.java
index 9ea6fe8..66e1e04 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/decorators/AddToSsmDecorator.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/list/decorators/AddToSsmDecorator.java
@@ -18,6 +18,7 @@ import com.redhat.rhn.common.localization.LocalizationService;
import com.redhat.rhn.frontend.html.HtmlTag;
import com.redhat.rhn.frontend.taglibs.ListDisplayTag;
import com.redhat.rhn.frontend.taglibs.list.ListTagUtil;
+import com.redhat.rhn.frontend.taglibs.list.TagHelper;
import javax.servlet.jsp.JspException;
@@ -38,6 +39,7 @@ public class AddToSsmDecorator extends BaseListDecorator {
public static final String PARAM_CLEAR_SSM = "clear-ssm-first";
/** {@inheritDoc} */
+ @Override
public void afterList() throws JspException {
if (!currentList.isEmpty()) {
@@ -51,20 +53,30 @@ public class AddToSsmDecorator extends BaseListDecorator {
// Generate the HTML to output
StringBuffer buf = new StringBuffer();
- buf.append("<span class=\"list-selection-buttons\">");
+ buf.append("<span class=\"spacewalk-list-selection-btns\">");
// Add to SSM button
- HtmlTag tag = new HtmlTag("input");
+ HtmlTag tag = new HtmlTag("button");
+ tag.setAttribute("class", "btn btn-default");
tag.setAttribute("type", "submit");
tag.setAttribute("name", buttonName);
tag.setAttribute("value", value);
+ tag.setBody(value);
buf.append(tag.render()).append(" ");
// Checkbox for whether or not to clear the existing SSM servers
tag = new HtmlTag("input");
+ String uId = TagHelper.generateUniqueName("chkbox-clear-ssm");
+ tag.setAttribute("id", uId);
tag.setAttribute("type", "checkbox");
tag.setAttribute("name", PARAM_CLEAR_SSM);
- buf.append(tag.render()).append(clearText).append(" ");
+
+ HtmlTag lbl = new HtmlTag("label");
+ lbl.setAttribute("for", uId);
+ lbl.setBody(clearText);
+
+ buf.append(tag.render());
+ buf.append(lbl.render());
buf.append("</span>");
ListTagUtil.write(pageContext, buf.toString());
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/list/decorators/SelectableDecorator.java b/java/code/src/com/redhat/rhn/frontend/taglibs/list/decorators/SelectableDecorator.java
index de651bd..24276b4 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/decorators/SelectableDecorator.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/list/decorators/SelectableDecorator.java
@@ -39,6 +39,7 @@ public class SelectableDecorator extends BaseListDecorator {
/**
* {@inheritDoc}
*/
+ @Override
public void beforeList() throws JspException {
ListTagUtil.write(pageContext, "<input type=\"hidden\" name=\"list_" +
listName + "_all\" value=\"false\" id=\"" + "list_" + listName +
@@ -51,6 +52,7 @@ public class SelectableDecorator extends BaseListDecorator {
/**
* {@inheritDoc}
*/
+ @Override
public void afterTopPagination() throws JspException {
renderSelectedCaption(true);
}
@@ -58,6 +60,7 @@ public class SelectableDecorator extends BaseListDecorator {
/**
* {@inheritDoc}
*/
+ @Override
public void afterBottomPagination() throws JspException {
renderSelectedCaption(false);
}
@@ -65,6 +68,7 @@ public class SelectableDecorator extends BaseListDecorator {
/**
* {@inheritDoc}
*/
+ @Override
public void afterList() throws JspException {
renderSelectButtons();
String script = SelectableColumnTag.
@@ -107,19 +111,22 @@ public class SelectableDecorator extends BaseListDecorator {
private void renderSelectButtons() throws JspException {
if (!currentList.isEmpty()) {
StringBuffer buf = new StringBuffer();
- buf.append("<span class=\"list-selection-buttons\">");
+ buf.append("<span class=\"spacewalk-list-selection-btns\">");
String buttonName = ListTagUtil.makeSelectActionName(listName);
LocalizationService ls = LocalizationService.getInstance();
- HtmlTag tag = new HtmlTag("input");
+ HtmlTag tag = new HtmlTag("button");
+ tag.setAttribute("class", "btn btn-default");
tag.setAttribute("type", "submit");
tag.setAttribute("name", buttonName);
tag.setAttribute("value",
ls.getMessage(ListDisplayTag.UPDATE_LIST_KEY));
tag.setAttribute("id", "update_list_key_id");
+ tag.setBody(ls.getMessage(ListDisplayTag.UPDATE_LIST_KEY));
buf.append(tag.render()).append(" ");
tag.setAttribute("value",
ls.getMessage(ListDisplayTag.SELECT_ALL_KEY));
+ tag.setBody(ls.getMessage(ListDisplayTag.SELECT_ALL_KEY));
buf.append(tag.render()).append(" ");
String selectedName = ListTagUtil.makeSelectedAmountName(listName);
@@ -127,6 +134,7 @@ public class SelectableDecorator extends BaseListDecorator {
if (!NULL_SELECTION.equals(selected) && selected != null) {
tag.setAttribute("value",
ls.getMessage(ListDisplayTag.UNSELECT_ALL_KEY));
+ tag.setBody(ls.getMessage(ListDisplayTag.UNSELECT_ALL_KEY));
buf.append(tag.render()).append("\n");
}
buf.append("</span>");
commit cc12a6be0f3058c26709ce419b5e49e0c37f4620
Author: Duncan Mac-Vicar P <dmacvicar(a)suse.de>
Date: Mon Oct 7 15:29:58 2013 +0200
port the alphabar to twitter bootstrap
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/list/AlphaBarHelper.java b/java/code/src/com/redhat/rhn/frontend/taglibs/list/AlphaBarHelper.java
index 1071971..6606059 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/AlphaBarHelper.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/list/AlphaBarHelper.java
@@ -84,13 +84,10 @@ public class AlphaBarHelper {
public void writeAlphaBar(PageContext pageContext,
Set<Character> activeChars, String listName) throws JspException {
- ListTagUtil.write(pageContext, "<br />");
ListTagUtil.write(pageContext,
- "<table width=\"100%\" cellspacing=\"0\"" +
- " cellpadding=\"1\">");
- ListTagUtil.write(pageContext, "<tr valign=\"top\">");
- ListTagUtil.write(pageContext, "<td class=\"list-alphabar\">" +
- "<div align=\"center\"><strong>");
+ "<div class=\"spacewalk-alphabar\">");
+ ListTagUtil.write(pageContext,
+ "<ul class=\"pagination pagination-sm\">");
List<String> alphabet = LocalizationService.getInstance().getAlphabet();
List<String> numbers = LocalizationService.getInstance().getDigits();
@@ -117,11 +114,8 @@ public class AlphaBarHelper {
}
}
- ListTagUtil.write(pageContext, "</strong></div>");
- ListTagUtil.write(pageContext, "<br />");
- ListTagUtil.write(pageContext, "</td>");
- ListTagUtil.write(pageContext, " </tr>");
- ListTagUtil.write(pageContext, "</table>");
+ ListTagUtil.write(pageContext, "</ul>");
+ ListTagUtil.write(pageContext, "</div>");
}
private String renderEnabledAlpha(char alpha,
@@ -130,18 +124,18 @@ public class AlphaBarHelper {
Map <String, String> params = new HashMap<String, String>();
params.put(makeAlphaKey(listName), String.valueOf(alpha));
- StringBuilder enabled = new StringBuilder("<a href=\"");
+ StringBuilder enabled = new StringBuilder("<li><a href=\"");
List ignoreList = new ArrayList();
ignoreList.add("submitted");
enabled.append(ListTagUtil.makeParamsLink(request, listName, params,
ignoreList));
- enabled.append("\"");
- enabled.append(" class=\"list-alphabar-enabled\">" + alpha + "</a>");
+ enabled.append("\">");
+ enabled.append(alpha + "</a></li>");
return enabled.toString();
}
private String renderDisabledAlph(char alpha) {
- return "<span class=\"list-alphabar-disabled\">" + alpha + "</span>";
+ return "<li class=\"disabled\"><a href=\"#\">" + alpha + "</a></li>";
}
}
10 years, 6 months
Changes to 'refs/tags/spacewalk-koan-2.1.3-1'
by Michael Mraka
Tag 'spacewalk-koan-2.1.3-1' created by Michael Mraka <michael.mraka(a)redhat.com> at 2013-10-14 07:27 +0000
Tagging package [spacewalk-koan] version [2.1.3-1] in directory [client/tools/spacewalk-koan/].
Changes since spacewalk-certs-tools-2.1.4-1:
Michael Mraka (1):
Automatic commit of package [spacewalk-koan] release [2.1.3-1].
---
client/tools/spacewalk-koan/spacewalk-koan.spec | 5 ++++-
rel-eng/packages/spacewalk-koan | 2 +-
2 files changed, 5 insertions(+), 2 deletions(-)
---
10 years, 6 months
client/tools rel-eng/packages
by Michael Mraka
client/tools/spacewalk-koan/spacewalk-koan.spec | 5 ++++-
rel-eng/packages/spacewalk-koan | 2 +-
2 files changed, 5 insertions(+), 2 deletions(-)
New commits:
commit b55080eae1738cfaf52debf6bb2d27ccb92dc91a
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Mon Oct 14 09:27:12 2013 +0200
Automatic commit of package [spacewalk-koan] release [2.1.3-1].
diff --git a/client/tools/spacewalk-koan/spacewalk-koan.spec b/client/tools/spacewalk-koan/spacewalk-koan.spec
index 831c90f..2a790cc 100644
--- a/client/tools/spacewalk-koan/spacewalk-koan.spec
+++ b/client/tools/spacewalk-koan/spacewalk-koan.spec
@@ -3,7 +3,7 @@ Name: spacewalk-koan
Group: System Environment/Kernel
License: GPLv2
Source0: https://fedorahosted.org/releases/s/p/spacewalk/%{name}-%{version}.tar.gz
-Version: 2.1.2
+Version: 2.1.3
Release: 1%{?dist}
BuildArch : noarch
URL: https://fedorahosted.org/spacewalk
@@ -47,6 +47,9 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/rhn/actions/
%changelog
+* Mon Oct 14 2013 Michael Mraka <michael.mraka(a)redhat.com> 2.1.3-1
+- cleaning up old svn Ids
+
* Mon Sep 30 2013 Michael Mraka <michael.mraka(a)redhat.com> 2.1.2-1
- removed trailing whitespaces
diff --git a/rel-eng/packages/spacewalk-koan b/rel-eng/packages/spacewalk-koan
index b4e309b..a5bf460 100644
--- a/rel-eng/packages/spacewalk-koan
+++ b/rel-eng/packages/spacewalk-koan
@@ -1 +1 @@
-2.1.2-1 client/tools/spacewalk-koan/
+2.1.3-1 client/tools/spacewalk-koan/
10 years, 6 months
Changes to 'refs/tags/spacewalk-certs-tools-2.1.4-1'
by Michael Mraka
Tag 'spacewalk-certs-tools-2.1.4-1' created by Michael Mraka <michael.mraka(a)redhat.com> at 2013-10-14 07:26 +0000
Tagging package [spacewalk-certs-tools] version [2.1.4-1] in directory [spacewalk/certs-tools/].
Changes since rhnclient-5.5.8-1:
Michael Mraka (1):
Automatic commit of package [spacewalk-certs-tools] release [2.1.4-1].
---
rel-eng/packages/spacewalk-certs-tools | 2 +-
spacewalk/certs-tools/spacewalk-certs-tools.spec | 5 ++++-
2 files changed, 5 insertions(+), 2 deletions(-)
---
10 years, 6 months
rel-eng/packages spacewalk/certs-tools
by Michael Mraka
rel-eng/packages/spacewalk-certs-tools | 2 +-
spacewalk/certs-tools/spacewalk-certs-tools.spec | 5 ++++-
2 files changed, 5 insertions(+), 2 deletions(-)
New commits:
commit 406250baf54217a8df2ef3f883d4a2cc347eb422
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Mon Oct 14 09:26:48 2013 +0200
Automatic commit of package [spacewalk-certs-tools] release [2.1.4-1].
diff --git a/rel-eng/packages/spacewalk-certs-tools b/rel-eng/packages/spacewalk-certs-tools
index e9546fe..7c8aaf0 100644
--- a/rel-eng/packages/spacewalk-certs-tools
+++ b/rel-eng/packages/spacewalk-certs-tools
@@ -1 +1 @@
-2.1.3-1 spacewalk/certs-tools/
+2.1.4-1 spacewalk/certs-tools/
diff --git a/spacewalk/certs-tools/spacewalk-certs-tools.spec b/spacewalk/certs-tools/spacewalk-certs-tools.spec
index 213feac..731b4df 100644
--- a/spacewalk/certs-tools/spacewalk-certs-tools.spec
+++ b/spacewalk/certs-tools/spacewalk-certs-tools.spec
@@ -2,7 +2,7 @@ Name: spacewalk-certs-tools
Summary: Spacewalk SSL Key/Cert Tool
Group: Applications/Internet
License: GPLv2
-Version: 2.1.3
+Version: 2.1.4
Release: 1%{?dist}
URL: https://fedorahosted.org/spacewalk
Source0: https://fedorahosted.org/releases/s/p/spacewalk/%{name}-%{version}.tar.gz
@@ -57,6 +57,9 @@ rm -rf $RPM_BUILD_ROOT
%{_var}/www/html/pub/bootstrap/client_config_update.py*
%changelog
+* Mon Oct 14 2013 Michael Mraka <michael.mraka(a)redhat.com> 2.1.4-1
+- cleaning up old svn Ids
+
* Mon Sep 30 2013 Michael Mraka <michael.mraka(a)redhat.com> 2.1.3-1
- removed trailing whitespaces
10 years, 6 months