This is an automated email from the ASF dual-hosted git repository.

lukaszlenart pushed a commit to branch WW-5255-script-link
in repository https://gitbox.apache.org/repos/asf/struts.git


The following commit(s) were added to refs/heads/WW-5255-script-link by this 
push:
     new 01a454957 WW-5255 Fixes debug console and validators' details page
01a454957 is described below

commit 01a454957f3230d8eeb49e3659190f7b59009032
Author: Lukasz Lenart <[email protected]>
AuthorDate: Wed Nov 2 10:14:10 2022 +0100

    WW-5255 Fixes debug console and validators' details page
---
 .../struts2/interceptor/debugging/console.ftl      |   2 +-
 core/src/main/resources/template/simple/link.ftl   |   3 +-
 .../resources/config-browser/config-styles.css     | 812 ---------------------
 .../resources/config-browser/config-styles.ftl     | 710 ++++++++++++++++++
 .../main/resources/config-browser/page-header.ftl  |  10 +-
 .../resources/config-browser/showValidators.ftl    |  16 +-
 .../resources/config-browser/validatorDetails.ftl  |   8 +-
 7 files changed, 733 insertions(+), 828 deletions(-)

diff --git 
a/core/src/main/resources/org/apache/struts2/interceptor/debugging/console.ftl 
b/core/src/main/resources/org/apache/struts2/interceptor/debugging/console.ftl
index eb42ba9f9..4aaccaa01 100644
--- 
a/core/src/main/resources/org/apache/struts2/interceptor/debugging/console.ftl
+++ 
b/core/src/main/resources/org/apache/struts2/interceptor/debugging/console.ftl
@@ -22,7 +22,7 @@
 <html>
 <head>
     <@s.script type="text/javascript">
-      var baseUrl = "<@s.url value="/struts" includeParams="none"/>";
+      var baseUrl = "<@s.url value="/static" includeParams="none"/>";
       window.open(baseUrl+"/webconsole.html", 'OGNL 
Console','width=500,height=450,status=no,toolbar=no,menubar=no');
     </@s.script>
 </head>
diff --git a/core/src/main/resources/template/simple/link.ftl 
b/core/src/main/resources/template/simple/link.ftl
index 13d7b4b00..e4847adea 100644
--- a/core/src/main/resources/template/simple/link.ftl
+++ b/core/src/main/resources/template/simple/link.ftl
@@ -60,4 +60,5 @@
 </#if>
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" 
/><#rt/>
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" 
/><#rt/>
-<#include "/${parameters.templateDir}/${parameters.expandTheme}/nonce.ftl" 
/><#rt/>/>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/nonce.ftl" 
/><#rt/>
+/>
diff --git 
a/plugins/config-browser/src/main/resources/config-browser/config-styles.css 
b/plugins/config-browser/src/main/resources/config-browser/config-styles.css
deleted file mode 100644
index eae9c223a..000000000
--- a/plugins/config-browser/src/main/resources/config-browser/config-styles.css
+++ /dev/null
@@ -1,812 +0,0 @@
-<style>
-/*
- * $Id$
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-       /* colors, backgrounds, borders, link indication */     
-body {
-       background: #fff;
-       color: #000;
-}
-
-.app h3, .app h4, .tabs td, .tabs th, .functnbar {
-       background-image: url(../images/nw_maj_rond.gif);
-       background-repeat: no-repeat;
-}
-
-.functnbar, .functnbar2 {
-       background-color: #aaa;
-}
-
-.functnbar2, .functnbar3 {
-       background-color: #aaa;
-       background-image: url(../images/sw_maj_rond.gif);
-       background-repeat: no-repeat;
-       background-position: bottom left;
-}
-
-.functnbar3 {
-       background-color: #ddd;
-       background-image: url(../images/sw_med_rond.gif);
-}
-
-.functnbar, .functnbar2, .functnbar3 {
-       color: #000;
-}
-
-.functnbar a, .functnbar2 a, .functnbar3 a {
-       color: #000;
-       text-decoration: underline;
-}
-
-#navcolumn .body div, body.docs #toc li li {
-       background-image: url(../images/strich.gif);
-       background-repeat: no-repeat;
-       background-position: .5em .5em;
-}
-
-#searchbox .body div, #navcolumn .body .heading {
-       background-image: none;
-}
-
-a:link, #navcolumn a:visited, .app a:visited, .tasknav a:visited {
-       color: blue;
-}
-
-a:link.selfref, a:visited.selfref {
-       color: #555 !important;
-       text-decoration: none;
-}
-
-a:active, a:hover, #leftcol a:active, #leftcol a:hover {
-       color: #f30 !important;
-}
-
-#leftcol a, #breadcrumbs a {
-       text-decoration: none;
-}
-
-.app h3, .app h4 {
-       color: #fff;
-}
-
-.app h3 {
-       background-color: #333;
-}
-
-.app h3 a:link, .app h3 a:visited, .app h4 a:link, .app h4 a:visited {
-       color: #fff !important;
-       text-decoration: underline;
-}
-
-.app h4 {
-       background-color: #888;
-}
-
-.a td {
-       background: #ddd;
-}
-
-.b td {
-       background: #efefef;
-}
-
-table, th, td {
-       border: none;
-}
-
-div.colbar {
-       background: #eee;
-       border-color: #999 #EEE #EEE #999;
-       border-width: 1px;
-       border-style: solid;
-}
-
-.toolgroup {
-       background: #efefef;
-}
-
-.toolgroup .label {
-       border-bottom: 1px solid #666;
-       border-right: 1px solid #666;
-       background: #ddd;
-       color: #555;
-}
-
-.toolgroup .body {
-       border-right: 1px solid #aaa;
-       border-bottom: 1px solid #aaa;
-}
-
-#breadcrumbs {
-       border-top: 1px solid #fff;
-       background-color: #ccc;
-}
-
-#main {
-       border-top: 1px solid #999;
-}
-
-#rightcol div.www, #rightcol div.help {
-       border: 1px solid #ddd;
-}
-
-body.docs div.docs {
-       background-color: #fff;
-       border-left: 1px solid #ddd;
-       border-top: 1px solid #ddd;
-}
-
-#helptext .label {
-       background-image: url(../images/icon_help_sml.gif);
-       background-repeat: no-repeat;
-       background-position: 97%;
-}
-
-body.docs {
-       background: #eee url(../images/help_logo.gif) top right no-repeat 
!important;
-}
-
-.docs h3, .docs h4 {
-       border-top: solid 1px #000;
-}
-
-#apphead h2 em {
-       color: #777;
-}
-
-.app th {
-       background-color: #bbb;
-}
-
-.tabs th {
-       border-right: 1px solid #333;
-       background-color: #ddd;
-       color: #fff;
-       border-left: 1px solid #fff;
-}
-
-.tabs td {
-       background-color: #999;
-       border-bottom: 1px solid #fff;
-       border-right: 1px solid #fff;
-       border-left: 1px solid #fff;
-}
-
-.tabs {
-       border-bottom: 6px #ddd solid;
-}
-
-.tabs th, .tabs th a:link, .tabs th a:visited {
-       color: #555;
-}
-
-.tabs td, .tabs td a:link, .tabs td a:visited {
-       color: #fff;
-}
-
-.tabs a {
-       text-decoration: none;
-}
-
-.axial th {
-       background-color: #ddd;
-       color: black;
-}
-
-.alert {
-       background-color: #ff9;
-}
-
-.expandedwaste {
-       background: url(../images/icon_arrowwaste2_sml.gif) no-repeat;
-}
-
-.collapsedwaste {
-       background: url(../images/icon_arrowwaste1_sml.gif) no-repeat;
-}
-
-.filebrowse .expanded, .filebrowse-alt .expanded {
-       background-image: url(../images/icon_arrowfolderopen2_sml.gif);
-       background-repeat: no-repeat;
-}
-
-.filebrowse .collapsed, .filebrowse-alt .collapsed {
-       background-image: url(../images/icon_arrowfolderclosed1_sml.gif);
-       background-repeat: no-repeat;
-}
-
-.filebrowse .leafnode, .filebrowse-alt .leafnode {
-       background-image: url(../images/icon_folder_sml.gif);
-       background-repeat: no-repeat;
-}
-
-.filebrowse .leaf, .filebrowse-alt .leaf {
-       background-image: url(../images/icon_doc_sml.gif);
-       background-repeat: no-repeat;
-}
-
-.sortup {
-       background: url(../images/icon_sortup.gif) no-repeat;
-}
-
-.sortdown {
-       background: url(../images/icon_sortdown.gif) no-repeat;
-}
-
-.collapsedwaste {
-       background: url(../images/icon_arrowwaste1_sml.gif) no-repeat;
-}
-
-body .grid td {
-       border-top: 1px solid #ccc;
-       border-left: 1px solid #ccc;
-       background-color: transparent;
-}
-
-.confirm {
-       color: #090;
-}
-
-.info {
-       color: #069;
-}
-
-.errormessage, .warningmessage, .donemessage, .infomessage {
-       border-top: 5px solid #900;
-       border-left: 1px solid #900;
-       background-image: url(../images/icon_error_lrg.gif);
-       background-repeat: no-repeat;
-       background-position: 5px 1.33em;
-}
-
-.warningmessage {
-       background-image: url(../images/icon_warning_lrg.gif);
-       border-color: #c60;
-}
-
-.donemessage {
-       background-image: url(../images/icon_success_lrg.gif);
-       border-color: #090;
-}
-
-.infomessage {
-       background-image: url(../images/icon_info_lrg.gif);
-       border-color: #069;
-}
-
-.docinfo {
-       background: url(../images/icon_doc_lrg.gif) no-repeat;
-}
-
-.dirinfo {
-       background: url(../images/icon_folder_lrg.gif) no-repeat;
-}
-
-.memberinfo {
-       background: url(../images/icon_members_lrg.gif) no-repeat;
-}
-
-.usergroupinfo {
-       background: url(../images/icon_usergroups_lrg.gif) no-repeat;
-}
-
-.errormark, .warningmark, .donemark, .infomark {
-       background: url(../images/icon_error_sml.gif) no-repeat;
-}
-
-.warningmark {
-       background-image: url(../images/icon_warning_sml.gif);
-}
-
-.donemark {
-       background-image: url(../images/icon_success_sml.gif);
-}
-
-.infomark {
-       background-image: url(../images/icon_info_sml.gif);
-}
-
-.cvsdiff, .cvsblame {
-       background-color: #ccc;
-}
-
-.cvsdiffadd {
-       background-color: #afa;
-}
-
-.cvsdiffremove {
-       background-color: #faa;
-}
-
-.cvsdiffchanges1 {
-       background-color: #ff7;
-}
-
-.cvsdiffchanges2 {
-       background-color: #ff7;
-}
-
-li.selection ul a {
-       background: #fff;
-}
-
-.band1 {
-       color: #fff;
-       background-color: #663;
-}
-
-.band2 {
-       color: #fff;
-       background-color: #66C;
-}
-
-.band3 {
-       background-color: #C99;
-}
-
-.band4 {
-       background-color: #CFF;
-}
-
-.band5 {
-       color: #fff;
-       background-color: #336;
-}
-
-.band6 {
-       color: #fff;
-       background-color: #966;
-}
-
-.band7 {
-       background-color: #9CC;
-}
-
-.band8 {
-       background-color: #FFC;
-}
-
-.band9 {
-       color: #fff;
-       background-color: #633;
-}
-
-.band10 {
-       color: #fff;
-       background-color: #699;
-}
-
-.band11 {
-       background-color: #CC9;
-}
-
-.band12 {
-       background-color: #CCF;
-}
-
-.band13 {
-       color: #fff;
-       background-color: #366;
-}
-
-.band14 {
-       color: #fff;
-       background-color: #996;
-}
-
-.band15 {
-       background-color: #99C;
-}
-
-.band16 {
-       background-color: #FCC;
-}
-
-.app .helplink, #helptext .helplink {
-       cursor: help;
-}
-
-.legend th, .bars th {
-       background-color: #fff;
-}
-
-/* font and text properties, exclusive of link indication, alignment, 
text-indent */
-body, th, td, input, select {
-       font-family: Verdana, Helvetica, Arial, sans-serif;
-}
-
-code, pre {
-       font-family: 'Andale Mono', Courier, monospace;
-}
-
-body, .app h3, .app h4, #rightcol h3, pre, code, #apphead h2 small {
-       font-size: x-small;
-       voice-family: "\"}\"";
-       voice-family: inherit;
-       font-size: small;
-}
-
-small, div#footer, div#login, div.tabs th, div.tabs td, input, select, 
.paginate, .functnbar, .functnbar2, .functnbar3, #breadcrumbs, .courtesylinks, 
#rightcol div.help, .colbar, .tasknav, body.docs div#toc, #leftcol, .legend, 
.bars {
-       font-size: xx-small;
-       voice-family: "\"}\"";
-       voice-family: inherit;
-       font-size: x-small;
-}
-
-.tabs td, .tabs th, dt, .tasknav .selfref, #login .username, .selection {
-       font-weight: bold;
-}
-
-li.selection ul {
-       font-weight: normal;
-}
-
-h4, table {
-       font-size: 1em;
-}
-
-#apphead h2 em {
-       font-style: normal;
-}
-
-#banner h1 {
-       font-size: 1.25em;
-}
-
-/* box properties (exclusive of borders), positioning, alignments, list types, 
text-indent */
-#bodycol h2 {
-       margin-top: .3em;
-       margin-bottom: .5em;
-}
-
-p, ul, ol, dl, .bars table {
-       margin-top: .67em;
-       margin-bottom: .67em;
-}
-
-h3, h4 {
-       margin-bottom: 0;
-}
-
-form {
-       margin: 0;
-}
-
-#bodycol {
-       padding-left: 12px;
-       padding-right: 12px;
-       width: 100%;
-       voice-family: "\"}\"";
-       voice-family: inherit;
-       width: auto;
-}
-
-html>body #bodycol {
-       width: auto;
-}
-
-.docs {
-       line-height: 1.4;
-}
-
-ol ol {
-       list-style-type: lower-alpha;
-}
-
-ol ol ol {
-       list-style-type: lower-roman;
-}
-
-.app h3, .app h4 {
-       padding: 5px;
-       margin-right: 2px;
-       margin-left: 2px;
-}
-
-.app td, .app th {
-       padding: 2px 3px;
-}
-
-.h3 p, .h4 p, .h3 dt, .h4 dt {
-       margin-right: 7px;
-       margin-left: 7px;
-}
-
-.tasknav {
-       margin-bottom: 1.33em;
-}
-
-div.colbar {
-       padding: 3px;
-       margin: 2px 2px 0;
-}
-
-.tabs {
-       margin-top: .67em;
-       margin-right: 2px;
-       margin-left: 2px;
-       padding-left: 8px;
-}
-
-.tabs td, .tabs th {
-       padding: 3px 9px;
-}
-
-#rightcol div.www, #rightcol div.help {
-       padding: 0 .5em;
-}
-
-body.docs #toc {
-       position: absolute;
-       top: 15px;
-       left: 0px;
-       width: 120px;
-       padding: 0 20px 0 0;
-}
-
-body.docs #toc ul, #toc ol {
-       margin-left: 0;
-       padding-left: 0;
-}
-
-body.docs #toc li {
-       margin-top: 7px;
-       padding-left: 10px;
-       list-style-type: none;
-}
-
-body.docs div.docs {
-       margin: 61px 0 0 150px;
-       padding: 1em 2em 1em 1em !important;
-}
-
-.docs p+p {
-       text-indent: 5%;
-       margin-top: -.67em;
-}
-
-.docs h3, .docs h4 {
-       margin-bottom: .1em;
-       padding-top: .3em;
-}
-
-.functnbar, .functnbar2, .functnbar3 {
-       padding: 5px;
-       margin: .67em 2px;
-}
-
-.functnbar3 {
-       margin-top: 0;
-}
-
-body {
-       padding: 1em;
-}
-
-body.composite, body.docs {
-       margin: 0;
-       padding: 0;
-}
-
-th, td {
-       text-align: left;
-       vertical-align: top;
-}
-
-.right {
-       text-align: right !important;
-}
-
-.center {
-       text-align: center !important;
-}
-
-.axial th, .axial th .strut {
-       text-align: right;
-}
-
-.app .axial td th {
-       text-align: left;
-}
-
-body .stb {
-       margin-top: 1em;
-       text-indent: 0;
-}
-
-body .mtb {
-       margin-top: 2em;
-       text-indent: 0;
-}
-
-.courtesylinks {
-       margin-top: 1em;
-       padding-top: 1em;
-}
-
-dd {
-       margin-bottom: .67em;
-}
-
-.toolgroup {
-       margin-bottom: 6px;
-}
-
-.toolgroup .body {
-       padding: 4px 4px 4px 0;
-}
-
-.toolgroup .label {
-       padding: 4px;
-}
-
-.toolgroup .body div {
-       padding-bottom: .3em;
-       padding-left: 1em;
-}
-
-.toolgroup .body div div {
-       margin-top: .3em;
-       padding-bottom: 0;
-}
-
-.tier1 {
-       margin-left: 0;
-}
-
-.tier2 {
-       margin-left: 1.5em;
-}
-
-.tier3 {
-       margin-left: 3em;
-}
-
-.tier4 {
-       margin-left: 4.5em;
-}
-
-.tier5 {
-       margin-left: 6em;
-}
-
-.tier6 {
-       margin-left: 7.5em;
-}
-
-.tier7 {
-       margin-left: 9em;
-}
-
-.tier8 {
-       margin-left: 10.5em;
-}
-
-.tier9 {
-       margin-left: 12em;
-}
-
-.tier10 {
-       margin-left: 13.5em;
-}
-
-.filebrowse .expanded, .filebrowse .collapsed {
-       padding-left: 34px;
-}
-
-.filebrowse .leafnode, .filebrowse .leaf {
-       padding-left: 20px;
-}
-
-.messagechild {
-       padding-left: 34px;
-}
-
-.filebrowse-alt .expanded, .filebrowse-alt .collapsed, .filebrowse-alt .leaf, 
.filebrowse-alt .leafnode, .expandedwaste, .collapsedwaste, .sortup, .sortdown {
-       /* hide from macie5\*/
-       float: left;
-       /* resume */
-       display: inline-block;
-       height: 15px;
-       width: 34px;
-       padding-left: 0 !important;
-}
-
-.filebrowse-alt .leaf, .filebrowse-alt .leafnode, .sortup, .sortdown {
-       width: 20px;
-}
-
-.filebrowse ul, .filebrowse-alt ul {
-       list-style-type: none;
-       padding-left: 0;
-       margin-left: 0;
-}
-
-.filebrowse ul ul, .filebrowse-alt ul ul {
-       margin-left: 1.5em;
-       margin-top: 0;
-       padding-top: .67em;
-}
-
-.filebrowse li, .filebrowse-alt li {
-       margin-bottom: .67em;
-}
-
-td.filebrowse h3 {
-       margin-top: 0;
-}
-
-.errormessage, .warningmessage, .donemessage, .infomessage, .docinfo, 
.dirinfo, .memberinfo, .usergroupinfo {
-       margin: .67em 0;
-       padding: .33em 0 .67em 42px;
-       min-height: 32px;
-}
-
-.errormark, .warningmark, .donemark, .infomark {
-       padding-left: 20px;
-       min-height: 15px;
-}
-
-.alt {
-       display: none;
-}
-
-#banner h1 {
-       margin: 0;
-}
-
-#leftcol {
-       width: 14em;
-}
-
-.axial th, .axial th .strut, #leftcol .strut {
-       width: 12em;
-}
-
-#breadcrumbs {
-       padding: 2px 8px;
-}
-
-.app h3, .app h4, .bars {
-       clear: both;
-}
-
-.legend {
-       float: right;
-}
-
-.legend th, .bars th {
-       text-align: right;
-       padding-left: 1em;
-}
-
-.bars table {
-       table-layout: fixed;
-}
-
-.bars th {
-       width: 12em;
-}
-
-#projectdocumentlist td.filebrowse-alt {
-       padding-right: .75em;
-}
-
-</style>
diff --git 
a/plugins/config-browser/src/main/resources/config-browser/config-styles.ftl 
b/plugins/config-browser/src/main/resources/config-browser/config-styles.ftl
new file mode 100644
index 000000000..7a223c469
--- /dev/null
+++ b/plugins/config-browser/src/main/resources/config-browser/config-styles.ftl
@@ -0,0 +1,710 @@
+<#--
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+-->
+<style>
+    /* colors, backgrounds, borders, link indication */
+    body {
+        background: #fff;
+        color: #000;
+    }
+
+    .functnbar, .functnbar2 {
+        background-color: #aaa;
+    }
+
+    .functnbar2, .functnbar3 {
+        background-color: #aaa;
+        background-position: bottom left;
+    }
+
+    .functnbar3 {
+        background-color: #ddd;
+    }
+
+    .functnbar, .functnbar2, .functnbar3 {
+        color: #000;
+    }
+
+    .functnbar a, .functnbar2 a, .functnbar3 a {
+        color: #000;
+        text-decoration: underline;
+    }
+
+    #searchbox .body div, #navcolumn .body .heading {
+        background-image: none;
+    }
+
+    a:link, #navcolumn a:visited, .app a:visited, .tasknav a:visited {
+        color: blue;
+    }
+
+    a:link.selfref, a:visited.selfref {
+        color: #555 !important;
+        text-decoration: none;
+    }
+
+    a:active, a:hover, #leftcol a:active, #leftcol a:hover {
+        color: #f30 !important;
+    }
+
+    #leftcol a, #breadcrumbs a {
+        text-decoration: none;
+    }
+
+    .app h3, .app h4 {
+        color: #fff;
+    }
+
+    .app h3 {
+        background-color: #333;
+    }
+
+    .app h3 a:link, .app h3 a:visited, .app h4 a:link, .app h4 a:visited {
+        color: #fff !important;
+        text-decoration: underline;
+    }
+
+    .app h4 {
+        background-color: #888;
+    }
+
+    .a td {
+        background: #ddd;
+    }
+
+    .b td {
+        background: #efefef;
+    }
+
+    table, th, td {
+        border: none;
+    }
+
+    div.colbar {
+        background: #eee;
+        border-color: #999 #EEE #EEE #999;
+        border-width: 1px;
+        border-style: solid;
+    }
+
+    .toolgroup {
+        background: #efefef;
+    }
+
+    .toolgroup .label {
+        border-bottom: 1px solid #666;
+        border-right: 1px solid #666;
+        background: #ddd;
+        color: #555;
+    }
+
+    .toolgroup .body {
+        border-right: 1px solid #aaa;
+        border-bottom: 1px solid #aaa;
+    }
+
+    #breadcrumbs {
+        border-top: 1px solid #fff;
+        background-color: #ccc;
+    }
+
+    #main {
+        border-top: 1px solid #999;
+        margin-top: 40px;
+    }
+
+    #rightcol div.www, #rightcol div.help {
+        border: 1px solid #ddd;
+    }
+
+    body.docs div.docs {
+        background-color: #fff;
+        border-left: 1px solid #ddd;
+        border-top: 1px solid #ddd;
+    }
+
+    .docs h3, .docs h4 {
+        border-top: solid 1px #000;
+    }
+
+    #apphead h2 em {
+        color: #777;
+    }
+
+    .app th {
+        background-color: #bbb;
+    }
+
+    .tabs th {
+        border-right: 1px solid #333;
+        background-color: #ddd;
+        color: #fff;
+        border-left: 1px solid #fff;
+    }
+
+    .tabs td {
+        background-color: #999;
+        border-bottom: 1px solid #fff;
+        border-right: 1px solid #fff;
+        border-left: 1px solid #fff;
+    }
+
+    .tabs {
+        border-bottom: 6px #ddd solid;
+    }
+
+    .tabs th, .tabs th a:link, .tabs th a:visited {
+        color: #555;
+    }
+
+    .tabs td, .tabs td a:link, .tabs td a:visited {
+        color: #fff;
+    }
+
+    .tabs a {
+        text-decoration: none;
+    }
+
+    .axial th {
+        background-color: #ddd;
+        color: black;
+    }
+
+    .alert {
+        background-color: #ff9;
+    }
+
+    body .grid td {
+        border-top: 1px solid #ccc;
+        border-left: 1px solid #ccc;
+        background-color: transparent;
+    }
+
+    .confirm {
+        color: #090;
+    }
+
+    .info {
+        color: #069;
+    }
+
+    .errormessage, .warningmessage, .donemessage, .infomessage {
+        border-top: 5px solid #900;
+        border-left: 1px solid #900;
+    }
+
+    .warningmessage {
+        border-color: #c60;
+    }
+
+    .donemessage {
+        border-color: #090;
+    }
+
+    .infomessage {
+        border-color: #069;
+    }
+
+    .cvsdiff, .cvsblame {
+        background-color: #ccc;
+    }
+
+    .cvsdiffadd {
+        background-color: #afa;
+    }
+
+    .cvsdiffremove {
+        background-color: #faa;
+    }
+
+    .cvsdiffchanges1 {
+        background-color: #ff7;
+    }
+
+    .cvsdiffchanges2 {
+        background-color: #ff7;
+    }
+
+    li.selection ul a {
+        background: #fff;
+    }
+
+    .band1 {
+        color: #fff;
+        background-color: #663;
+    }
+
+    .band2 {
+        color: #fff;
+        background-color: #66C;
+    }
+
+    .band3 {
+        background-color: #C99;
+    }
+
+    .band4 {
+        background-color: #CFF;
+    }
+
+    .band5 {
+        color: #fff;
+        background-color: #336;
+    }
+
+    .band6 {
+        color: #fff;
+        background-color: #966;
+    }
+
+    .band7 {
+        background-color: #9CC;
+    }
+
+    .band8 {
+        background-color: #FFC;
+    }
+
+    .band9 {
+        color: #fff;
+        background-color: #633;
+    }
+
+    .band10 {
+        color: #fff;
+        background-color: #699;
+    }
+
+    .band11 {
+        background-color: #CC9;
+    }
+
+    .band12 {
+        background-color: #CCF;
+    }
+
+    .band13 {
+        color: #fff;
+        background-color: #366;
+    }
+
+    .band14 {
+        color: #fff;
+        background-color: #996;
+    }
+
+    .band15 {
+        background-color: #99C;
+    }
+
+    .band16 {
+        background-color: #FCC;
+    }
+
+    .app .helplink, #helptext .helplink {
+        cursor: help;
+    }
+
+    .legend th, .bars th {
+        background-color: #fff;
+    }
+
+    /* font and text properties, exclusive of link indication, alignment, 
text-indent */
+    body, th, td, input, select {
+        font-family: Verdana, Helvetica, Arial, sans-serif;
+    }
+
+    code, pre {
+        font-family: 'Andale Mono', Courier, monospace;
+    }
+
+    body, .app h3, .app h4, #rightcol h3, pre, code, #apphead h2 small {
+        font-size: x-small;
+        voice-family: "\"}\"";
+        voice-family: inherit;
+        font-size: small;
+    }
+
+    small, div#footer, div#login, div.tabs th, div.tabs td, input, select, 
.paginate, .functnbar, .functnbar2, .functnbar3, #breadcrumbs, .courtesylinks, 
#rightcol div.help, .colbar, .tasknav, body.docs div#toc, #leftcol, .legend, 
.bars {
+        font-size: xx-small;
+        voice-family: "\"}\"";
+        voice-family: inherit;
+        font-size: x-small;
+    }
+
+    .tabs td, .tabs th, dt, .tasknav .selfref, #login .username, .selection {
+        font-weight: bold;
+    }
+
+    li.selection ul {
+        font-weight: normal;
+    }
+
+    h4, table {
+        font-size: 1em;
+    }
+
+    #apphead h2 em {
+        font-style: normal;
+    }
+
+    #banner h1 {
+        font-size: 1.25em;
+    }
+
+    /* box properties (exclusive of borders), positioning, alignments, list 
types, text-indent */
+    #bodycol h2 {
+        margin-top: .3em;
+        margin-bottom: .5em;
+    }
+
+    p, ul, ol, dl, .bars table {
+        margin-top: .67em;
+        margin-bottom: .67em;
+    }
+
+    h3, h4 {
+        margin-bottom: 0;
+    }
+
+    form {
+        margin: 0;
+    }
+
+    #bodycol {
+        padding-left: 12px;
+        padding-right: 12px;
+        width: 100%;
+        voice-family: "\"}\"";
+        voice-family: inherit;
+        width: auto;
+    }
+
+    html > body #bodycol {
+        width: auto;
+    }
+
+    .docs {
+        line-height: 1.4;
+    }
+
+    ol ol {
+        list-style-type: lower-alpha;
+    }
+
+    ol ol ol {
+        list-style-type: lower-roman;
+    }
+
+    .app h3, .app h4 {
+        padding: 5px;
+        margin-right: 2px;
+        margin-left: 2px;
+    }
+
+    .app td, .app th {
+        padding: 2px 3px;
+    }
+
+    .h3 p, .h4 p, .h3 dt, .h4 dt {
+        margin-right: 7px;
+        margin-left: 7px;
+    }
+
+    .tasknav {
+        margin-bottom: 1.33em;
+    }
+
+    div.colbar {
+        padding: 3px;
+        margin: 2px 2px 0;
+    }
+
+    .tabs {
+        margin-top: .67em;
+        margin-right: 2px;
+        margin-left: 2px;
+        padding-left: 8px;
+    }
+
+    .tabs td, .tabs th {
+        padding: 3px 9px;
+    }
+
+    #rightcol div.www, #rightcol div.help {
+        padding: 0 .5em;
+    }
+
+    body.docs #toc {
+        position: absolute;
+        top: 15px;
+        left: 0px;
+        width: 120px;
+        padding: 0 20px 0 0;
+    }
+
+    body.docs #toc ul, #toc ol {
+        margin-left: 0;
+        padding-left: 0;
+    }
+
+    body.docs #toc li {
+        margin-top: 7px;
+        padding-left: 10px;
+        list-style-type: none;
+    }
+
+    body.docs div.docs {
+        margin: 61px 0 0 150px;
+        padding: 1em 2em 1em 1em !important;
+    }
+
+    .docs p + p {
+        text-indent: 5%;
+        margin-top: -.67em;
+    }
+
+    .docs h3, .docs h4 {
+        margin-bottom: .1em;
+        padding-top: .3em;
+    }
+
+    .functnbar, .functnbar2, .functnbar3 {
+        padding: 5px;
+        margin: .67em 2px;
+    }
+
+    .functnbar3 {
+        margin-top: 0;
+    }
+
+    body {
+        padding: 1em;
+    }
+
+    body.composite, body.docs {
+        margin: 0;
+        padding: 0;
+    }
+
+    th, td {
+        text-align: left;
+        vertical-align: top;
+    }
+
+    .right {
+        text-align: right !important;
+    }
+
+    .center {
+        text-align: center !important;
+    }
+
+    .axial th, .axial th .strut {
+        text-align: right;
+    }
+
+    .app .axial td th {
+        text-align: left;
+    }
+
+    body .stb {
+        margin-top: 1em;
+        text-indent: 0;
+    }
+
+    body .mtb {
+        margin-top: 2em;
+        text-indent: 0;
+    }
+
+    .courtesylinks {
+        margin-top: 1em;
+        padding-top: 1em;
+    }
+
+    dd {
+        margin-bottom: .67em;
+    }
+
+    .toolgroup {
+        margin-bottom: 6px;
+    }
+
+    .toolgroup .body {
+        padding: 4px 4px 4px 0;
+    }
+
+    .toolgroup .label {
+        padding: 4px;
+    }
+
+    .toolgroup .body div {
+        padding-bottom: .3em;
+        padding-left: 1em;
+    }
+
+    .toolgroup .body div div {
+        margin-top: .3em;
+        padding-bottom: 0;
+    }
+
+    .tier1 {
+        margin-left: 0;
+    }
+
+    .tier2 {
+        margin-left: 1.5em;
+    }
+
+    .tier3 {
+        margin-left: 3em;
+    }
+
+    .tier4 {
+        margin-left: 4.5em;
+    }
+
+    .tier5 {
+        margin-left: 6em;
+    }
+
+    .tier6 {
+        margin-left: 7.5em;
+    }
+
+    .tier7 {
+        margin-left: 9em;
+    }
+
+    .tier8 {
+        margin-left: 10.5em;
+    }
+
+    .tier9 {
+        margin-left: 12em;
+    }
+
+    .tier10 {
+        margin-left: 13.5em;
+    }
+
+    .filebrowse .expanded, .filebrowse .collapsed {
+        padding-left: 34px;
+    }
+
+    .filebrowse .leafnode, .filebrowse .leaf {
+        padding-left: 20px;
+    }
+
+    .messagechild {
+        padding-left: 34px;
+    }
+
+    .filebrowse-alt .expanded, .filebrowse-alt .collapsed, .filebrowse-alt 
.leaf, .filebrowse-alt .leafnode, .expandedwaste, .collapsedwaste, .sortup, 
.sortdown {
+        /* hide from macie5\*/
+        float: left;
+        /* resume */
+        display: inline-block;
+        height: 15px;
+        width: 34px;
+        padding-left: 0 !important;
+    }
+
+    .filebrowse-alt .leaf, .filebrowse-alt .leafnode, .sortup, .sortdown {
+        width: 20px;
+    }
+
+    .filebrowse ul, .filebrowse-alt ul {
+        list-style-type: none;
+        padding-left: 0;
+        margin-left: 0;
+    }
+
+    .filebrowse ul ul, .filebrowse-alt ul ul {
+        margin-left: 1.5em;
+        margin-top: 0;
+        padding-top: .67em;
+    }
+
+    .filebrowse li, .filebrowse-alt li {
+        margin-bottom: .67em;
+    }
+
+    td.filebrowse h3 {
+        margin-top: 0;
+    }
+
+    .errormessage, .warningmessage, .donemessage, .infomessage, .docinfo, 
.dirinfo, .memberinfo, .usergroupinfo {
+        margin: .67em 0;
+        padding: .33em 0 .67em 42px;
+        min-height: 32px;
+    }
+
+    .errormark, .warningmark, .donemark, .infomark {
+        padding-left: 20px;
+        min-height: 15px;
+    }
+
+    .alt {
+        display: none;
+    }
+
+    #banner h1 {
+        margin: 0;
+    }
+
+    #leftcol {
+        width: 14em;
+    }
+
+    .axial th, .axial th .strut, #leftcol .strut {
+        width: 12em;
+    }
+
+    #breadcrumbs {
+        padding: 2px 8px;
+    }
+
+    .app h3, .app h4, .bars {
+        clear: both;
+    }
+
+    .legend {
+        float: right;
+    }
+
+    .legend th, .bars th {
+        text-align: right;
+        padding-left: 1em;
+    }
+
+    .bars table {
+        table-layout: fixed;
+    }
+
+    .bars th {
+        width: 12em;
+    }
+
+    #projectdocumentlist td.filebrowse-alt {
+        padding-right: .75em;
+    }
+</style>
diff --git 
a/plugins/config-browser/src/main/resources/config-browser/page-header.ftl 
b/plugins/config-browser/src/main/resources/config-browser/page-header.ftl
index ac286130b..ba3827444 100644
--- a/plugins/config-browser/src/main/resources/config-browser/page-header.ftl
+++ b/plugins/config-browser/src/main/resources/config-browser/page-header.ftl
@@ -24,19 +24,19 @@
 <head>
 <title>${pageTitle}</title>
 <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1" />
-<#include "/config-browser/config-styles.css" parse="y"></head>
+<#include "/config-browser/config-styles.ftl" parse="y"></head>
 <body class="composite" marginwidth="0" marginheight="0" leftmargin="0" 
topmargin="0">
 
 <div id="breadcrumbs">
        <table border="0" cellspacing="0" cellpadding="4" width="100%">
                <tr>
-                       <td> 
+                       <td>
                                Struts Configuration Browser > ${pageTitle}
                        </td>
                </tr>
        </table>
-</div>  
-  
+</div>
+
 <table border="0" cellspacing="0" cellpadding="4" width="100%" id="main">
        <tr valign="top">
            <#if !hideNav??>            <td id="leftcol" width="20%">
@@ -94,4 +94,4 @@
                                <div id="apphead">
                                        <h2>${pageTitle}</h2>
                                </div>
-                               <div id="content" class="app">                  
        
+                               <div id="content" class="app">
diff --git 
a/plugins/config-browser/src/main/resources/config-browser/showValidators.ftl 
b/plugins/config-browser/src/main/resources/config-browser/showValidators.ftl
index 068198180..98f746256 100644
--- 
a/plugins/config-browser/src/main/resources/config-browser/showValidators.ftl
+++ 
b/plugins/config-browser/src/main/resources/config-browser/showValidators.ftl
@@ -31,15 +31,17 @@
             <tr <#if i_index%2 gt 0>class="b" <#else>class="a"</#if>>
                 <td>${i.fieldName!"(see expression)"}</td>
                 <td>${action.stripPackage(i.class)}</td>
-                <td><a href="#" id="show-validators">details</a></td>
+                <td>
+                    <a href="#" id="showValidators_${row}">details</a>
+                    <@s.script>
+                        
document.getElementById('showValidators_${row}').onclick = function() {
+                            
window.open('validatorDetails.${extension}?clazz=${clazz}&context=${context}&selected=${row}',
 'Validator Details', 
'resizable=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,width=1280,height=800');
+                            return false;
+                        }
+                    </@s.script>
+                </td>
             </tr>
             <#assign row = row + 1>
         </#foreach>
     </#if>
 </table>
-<@s.script>
-    document.getElementById('show-validators').onclick = function() {
-        
window.open('validatorDetails.${extension}?clazz=${clazz}&context=${context}&selected=${row}',
 'Validator Details', 
'resizable=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,width=640,height=480');
-        return false;
-    }
-</@s.script>
diff --git 
a/plugins/config-browser/src/main/resources/config-browser/validatorDetails.ftl 
b/plugins/config-browser/src/main/resources/config-browser/validatorDetails.ftl
index 05a945133..e010217fc 100644
--- 
a/plugins/config-browser/src/main/resources/config-browser/validatorDetails.ftl
+++ 
b/plugins/config-browser/src/main/resources/config-browser/validatorDetails.ftl
@@ -21,7 +21,7 @@
 <#include "tigris-macros.ftl">
 <#assign hideNav = true>
 <#call startPage pageTitle="Validator Details"/>
-<table>
+<table style="margin-top: 40px">
 <tr><td>Validated Class:</td><td>${action.stripPackage(clazz)}</td></tr>
 <tr><td>Context:</td><td>${context}</td></tr>
 <tr><td>Validator Number:</td><td>${selected}</td></tr>
@@ -34,7 +34,11 @@
             <td>${prop.name}</td>
             <td><#if prop.value??>
                     <#if prop.value?is_collection>(size = 
${prop.value?size})<#foreach v in prop.value>${v.value}, </#foreach>
-                    <#else>${prop.value?string}</#if>
+                    <#elseif prop.value?is_date_like>
+                        ${prop.value?datetime}
+                    <#else>
+                        ${prop.value?string}
+                    </#if>
                 <#else> <b>null</b> </#if></td>
             <td><#if prop.value?? && 
prop.value?is_collection>(collection)<#else>${prop.type.name}</#if></td>
         </tr>


Reply via email to