Author: lukaszlenart
Date: Wed Dec 31 10:10:27 2014
New Revision: 934568
Log:
Updates production
Modified:
websites/production/struts/content/announce-2002.html
websites/production/struts/content/announce-2003.html
websites/production/struts/content/announce-2004.html
websites/production/struts/content/announce-2005.html
websites/production/struts/content/announce-2006.html
websites/production/struts/content/announce-2007.html
websites/production/struts/content/announce-2008.html
websites/production/struts/content/announce-2009.html
websites/production/struts/content/announce-2010.html
websites/production/struts/content/announce-2011.html
websites/production/struts/content/announce-2012.html
websites/production/struts/content/announce-2013.html
websites/production/struts/content/announce.html
websites/production/struts/content/birdseye.html
websites/production/struts/content/builds.html
websites/production/struts/content/bylaws.html
websites/production/struts/content/coding-standards.html
websites/production/struts/content/css/main.css
websites/production/struts/content/dev-mail.html
websites/production/struts/content/download.html
websites/production/struts/content/downloads.html
websites/production/struts/content/helping.html
websites/production/struts/content/index.html
websites/production/struts/content/kickstart.html
websites/production/struts/content/mail.html
websites/production/struts/content/primer.html
websites/production/struts/content/releases.html
websites/production/struts/content/security.html
websites/production/struts/content/struts1eol-announcement.html
websites/production/struts/content/struts1eol-press.html
websites/production/struts/content/submitting-patches.html
websites/production/struts/content/volunteers.html
websites/production/struts/content/youatstruts.html
Modified: websites/production/struts/content/announce-2002.html
==============================================================================
--- websites/production/struts/content/announce-2002.html (original)
+++ websites/production/struts/content/announce-2002.html Wed Dec 31 10:10:27
2014
@@ -10,9 +10,11 @@
<title>Announcements 2002</title>
<link
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
rel="stylesheet" type="text/css">
- <link rel="stylesheet" href="css/main.css">
+ <link
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css"
rel="stylesheet">
+ <link href="css/main.css" rel="stylesheet">
+ <link href="css/custom.css" rel="stylesheet">
- <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+ <script
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="js/community.js"></script>
</head>
@@ -412,5 +414,19 @@
}(document, 'script', 'facebook-jssdk'));</script>
+<script>
+$(function() {
+ return $("h2, h3, h4, h5, h6").each(function(i, el) {
+ var $el, icon, id;
+ $el = $(el);
+ id = $el.attr('id');
+ icon = '<i class="fa fa-link"></i>';
+ if (id) {
+ return $el.prepend($("<a />").addClass("header-link").attr("href", "#" +
id).html(icon));
+ }
+ });
+});
+</script>
+
</body>
</html>
Modified: websites/production/struts/content/announce-2003.html
==============================================================================
--- websites/production/struts/content/announce-2003.html (original)
+++ websites/production/struts/content/announce-2003.html Wed Dec 31 10:10:27
2014
@@ -10,9 +10,11 @@
<title>Announcements 2003</title>
<link
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
rel="stylesheet" type="text/css">
- <link rel="stylesheet" href="css/main.css">
+ <link
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css"
rel="stylesheet">
+ <link href="css/main.css" rel="stylesheet">
+ <link href="css/custom.css" rel="stylesheet">
- <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+ <script
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="js/community.js"></script>
</head>
@@ -259,5 +261,19 @@
}(document, 'script', 'facebook-jssdk'));</script>
+<script>
+$(function() {
+ return $("h2, h3, h4, h5, h6").each(function(i, el) {
+ var $el, icon, id;
+ $el = $(el);
+ id = $el.attr('id');
+ icon = '<i class="fa fa-link"></i>';
+ if (id) {
+ return $el.prepend($("<a />").addClass("header-link").attr("href", "#" +
id).html(icon));
+ }
+ });
+});
+</script>
+
</body>
</html>
Modified: websites/production/struts/content/announce-2004.html
==============================================================================
--- websites/production/struts/content/announce-2004.html (original)
+++ websites/production/struts/content/announce-2004.html Wed Dec 31 10:10:27
2014
@@ -10,9 +10,11 @@
<title>Announcements 2004</title>
<link
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
rel="stylesheet" type="text/css">
- <link rel="stylesheet" href="css/main.css">
+ <link
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css"
rel="stylesheet">
+ <link href="css/main.css" rel="stylesheet">
+ <link href="css/custom.css" rel="stylesheet">
- <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+ <script
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="js/community.js"></script>
</head>
@@ -312,5 +314,19 @@
}(document, 'script', 'facebook-jssdk'));</script>
+<script>
+$(function() {
+ return $("h2, h3, h4, h5, h6").each(function(i, el) {
+ var $el, icon, id;
+ $el = $(el);
+ id = $el.attr('id');
+ icon = '<i class="fa fa-link"></i>';
+ if (id) {
+ return $el.prepend($("<a />").addClass("header-link").attr("href", "#" +
id).html(icon));
+ }
+ });
+});
+</script>
+
</body>
</html>
Modified: websites/production/struts/content/announce-2005.html
==============================================================================
--- websites/production/struts/content/announce-2005.html (original)
+++ websites/production/struts/content/announce-2005.html Wed Dec 31 10:10:27
2014
@@ -10,9 +10,11 @@
<title>Announcements 2005</title>
<link
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
rel="stylesheet" type="text/css">
- <link rel="stylesheet" href="css/main.css">
+ <link
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css"
rel="stylesheet">
+ <link href="css/main.css" rel="stylesheet">
+ <link href="css/custom.css" rel="stylesheet">
- <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+ <script
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="js/community.js"></script>
</head>
@@ -757,5 +759,19 @@
}(document, 'script', 'facebook-jssdk'));</script>
+<script>
+$(function() {
+ return $("h2, h3, h4, h5, h6").each(function(i, el) {
+ var $el, icon, id;
+ $el = $(el);
+ id = $el.attr('id');
+ icon = '<i class="fa fa-link"></i>';
+ if (id) {
+ return $el.prepend($("<a />").addClass("header-link").attr("href", "#" +
id).html(icon));
+ }
+ });
+});
+</script>
+
</body>
</html>
Modified: websites/production/struts/content/announce-2006.html
==============================================================================
--- websites/production/struts/content/announce-2006.html (original)
+++ websites/production/struts/content/announce-2006.html Wed Dec 31 10:10:27
2014
@@ -10,9 +10,11 @@
<title>Announcements 2006</title>
<link
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
rel="stylesheet" type="text/css">
- <link rel="stylesheet" href="css/main.css">
+ <link
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css"
rel="stylesheet">
+ <link href="css/main.css" rel="stylesheet">
+ <link href="css/custom.css" rel="stylesheet">
- <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+ <script
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="js/community.js"></script>
</head>
@@ -816,5 +818,19 @@
}(document, 'script', 'facebook-jssdk'));</script>
+<script>
+$(function() {
+ return $("h2, h3, h4, h5, h6").each(function(i, el) {
+ var $el, icon, id;
+ $el = $(el);
+ id = $el.attr('id');
+ icon = '<i class="fa fa-link"></i>';
+ if (id) {
+ return $el.prepend($("<a />").addClass("header-link").attr("href", "#" +
id).html(icon));
+ }
+ });
+});
+</script>
+
</body>
</html>
Modified: websites/production/struts/content/announce-2007.html
==============================================================================
--- websites/production/struts/content/announce-2007.html (original)
+++ websites/production/struts/content/announce-2007.html Wed Dec 31 10:10:27
2014
@@ -10,9 +10,11 @@
<title>Announcements 2007</title>
<link
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
rel="stylesheet" type="text/css">
- <link rel="stylesheet" href="css/main.css">
+ <link
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css"
rel="stylesheet">
+ <link href="css/main.css" rel="stylesheet">
+ <link href="css/custom.css" rel="stylesheet">
- <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+ <script
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="js/community.js"></script>
</head>
@@ -792,5 +794,19 @@
}(document, 'script', 'facebook-jssdk'));</script>
+<script>
+$(function() {
+ return $("h2, h3, h4, h5, h6").each(function(i, el) {
+ var $el, icon, id;
+ $el = $(el);
+ id = $el.attr('id');
+ icon = '<i class="fa fa-link"></i>';
+ if (id) {
+ return $el.prepend($("<a />").addClass("header-link").attr("href", "#" +
id).html(icon));
+ }
+ });
+});
+</script>
+
</body>
</html>
Modified: websites/production/struts/content/announce-2008.html
==============================================================================
--- websites/production/struts/content/announce-2008.html (original)
+++ websites/production/struts/content/announce-2008.html Wed Dec 31 10:10:27
2014
@@ -10,9 +10,11 @@
<title>Announcements 2008</title>
<link
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
rel="stylesheet" type="text/css">
- <link rel="stylesheet" href="css/main.css">
+ <link
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css"
rel="stylesheet">
+ <link href="css/main.css" rel="stylesheet">
+ <link href="css/custom.css" rel="stylesheet">
- <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+ <script
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="js/community.js"></script>
</head>
@@ -318,5 +320,19 @@
}(document, 'script', 'facebook-jssdk'));</script>
+<script>
+$(function() {
+ return $("h2, h3, h4, h5, h6").each(function(i, el) {
+ var $el, icon, id;
+ $el = $(el);
+ id = $el.attr('id');
+ icon = '<i class="fa fa-link"></i>';
+ if (id) {
+ return $el.prepend($("<a />").addClass("header-link").attr("href", "#" +
id).html(icon));
+ }
+ });
+});
+</script>
+
</body>
</html>
Modified: websites/production/struts/content/announce-2009.html
==============================================================================
--- websites/production/struts/content/announce-2009.html (original)
+++ websites/production/struts/content/announce-2009.html Wed Dec 31 10:10:27
2014
@@ -10,9 +10,11 @@
<title>Announcements 2009</title>
<link
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
rel="stylesheet" type="text/css">
- <link rel="stylesheet" href="css/main.css">
+ <link
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css"
rel="stylesheet">
+ <link href="css/main.css" rel="stylesheet">
+ <link href="css/custom.css" rel="stylesheet">
- <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+ <script
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="js/community.js"></script>
</head>
@@ -215,5 +217,19 @@
}(document, 'script', 'facebook-jssdk'));</script>
+<script>
+$(function() {
+ return $("h2, h3, h4, h5, h6").each(function(i, el) {
+ var $el, icon, id;
+ $el = $(el);
+ id = $el.attr('id');
+ icon = '<i class="fa fa-link"></i>';
+ if (id) {
+ return $el.prepend($("<a />").addClass("header-link").attr("href", "#" +
id).html(icon));
+ }
+ });
+});
+</script>
+
</body>
</html>
Modified: websites/production/struts/content/announce-2010.html
==============================================================================
--- websites/production/struts/content/announce-2010.html (original)
+++ websites/production/struts/content/announce-2010.html Wed Dec 31 10:10:27
2014
@@ -10,9 +10,11 @@
<title>Announcements 2010</title>
<link
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
rel="stylesheet" type="text/css">
- <link rel="stylesheet" href="css/main.css">
+ <link
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css"
rel="stylesheet">
+ <link href="css/main.css" rel="stylesheet">
+ <link href="css/custom.css" rel="stylesheet">
- <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+ <script
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="js/community.js"></script>
</head>
@@ -259,5 +261,19 @@
}(document, 'script', 'facebook-jssdk'));</script>
+<script>
+$(function() {
+ return $("h2, h3, h4, h5, h6").each(function(i, el) {
+ var $el, icon, id;
+ $el = $(el);
+ id = $el.attr('id');
+ icon = '<i class="fa fa-link"></i>';
+ if (id) {
+ return $el.prepend($("<a />").addClass("header-link").attr("href", "#" +
id).html(icon));
+ }
+ });
+});
+</script>
+
</body>
</html>
Modified: websites/production/struts/content/announce-2011.html
==============================================================================
--- websites/production/struts/content/announce-2011.html (original)
+++ websites/production/struts/content/announce-2011.html Wed Dec 31 10:10:27
2014
@@ -10,9 +10,11 @@
<title>Announcements 2011</title>
<link
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
rel="stylesheet" type="text/css">
- <link rel="stylesheet" href="css/main.css">
+ <link
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css"
rel="stylesheet">
+ <link href="css/main.css" rel="stylesheet">
+ <link href="css/custom.css" rel="stylesheet">
- <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+ <script
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="js/community.js"></script>
</head>
@@ -340,5 +342,19 @@ Besides that, various other bug fixes, i
}(document, 'script', 'facebook-jssdk'));</script>
+<script>
+$(function() {
+ return $("h2, h3, h4, h5, h6").each(function(i, el) {
+ var $el, icon, id;
+ $el = $(el);
+ id = $el.attr('id');
+ icon = '<i class="fa fa-link"></i>';
+ if (id) {
+ return $el.prepend($("<a />").addClass("header-link").attr("href", "#" +
id).html(icon));
+ }
+ });
+});
+</script>
+
</body>
</html>
Modified: websites/production/struts/content/announce-2012.html
==============================================================================
--- websites/production/struts/content/announce-2012.html (original)
+++ websites/production/struts/content/announce-2012.html Wed Dec 31 10:10:27
2014
@@ -10,9 +10,11 @@
<title>Announcements 2012</title>
<link
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
rel="stylesheet" type="text/css">
- <link rel="stylesheet" href="css/main.css">
+ <link
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css"
rel="stylesheet">
+ <link href="css/main.css" rel="stylesheet">
+ <link href="css/custom.css" rel="stylesheet">
- <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+ <script
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="js/community.js"></script>
</head>
@@ -439,5 +441,19 @@
}(document, 'script', 'facebook-jssdk'));</script>
+<script>
+$(function() {
+ return $("h2, h3, h4, h5, h6").each(function(i, el) {
+ var $el, icon, id;
+ $el = $(el);
+ id = $el.attr('id');
+ icon = '<i class="fa fa-link"></i>';
+ if (id) {
+ return $el.prepend($("<a />").addClass("header-link").attr("href", "#" +
id).html(icon));
+ }
+ });
+});
+</script>
+
</body>
</html>
Modified: websites/production/struts/content/announce-2013.html
==============================================================================
--- websites/production/struts/content/announce-2013.html (original)
+++ websites/production/struts/content/announce-2013.html Wed Dec 31 10:10:27
2014
@@ -10,9 +10,11 @@
<title>Announcements 2013</title>
<link
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
rel="stylesheet" type="text/css">
- <link rel="stylesheet" href="css/main.css">
+ <link
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css"
rel="stylesheet">
+ <link href="css/main.css" rel="stylesheet">
+ <link href="css/custom.css" rel="stylesheet">
- <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+ <script
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="js/community.js"></script>
</head>
@@ -648,5 +650,19 @@ Please check the Version Notes to see mo
}(document, 'script', 'facebook-jssdk'));</script>
+<script>
+$(function() {
+ return $("h2, h3, h4, h5, h6").each(function(i, el) {
+ var $el, icon, id;
+ $el = $(el);
+ id = $el.attr('id');
+ icon = '<i class="fa fa-link"></i>';
+ if (id) {
+ return $el.prepend($("<a />").addClass("header-link").attr("href", "#" +
id).html(icon));
+ }
+ });
+});
+</script>
+
</body>
</html>
Modified: websites/production/struts/content/announce.html
==============================================================================
--- websites/production/struts/content/announce.html (original)
+++ websites/production/struts/content/announce.html Wed Dec 31 10:10:27 2014
@@ -10,9 +10,11 @@
<title>Announcements</title>
<link
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
rel="stylesheet" type="text/css">
- <link rel="stylesheet" href="css/main.css">
+ <link
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css"
rel="stylesheet">
+ <link href="css/main.css" rel="stylesheet">
+ <link href="css/custom.css" rel="stylesheet">
- <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+ <script
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="js/community.js"></script>
</head>
@@ -118,15 +120,15 @@
<article class="container">
<section class="col-md-12">
- <h1>Announcements</h1>
+ <h1 id="announcements">Announcements</h1>
<p class="pull-right">
Skip to: <a href="announce-2013.html">Announcements - 2013</a>
</p>
-<h4><span id="a20141207"> 7 December 2014 - Struts 2.3.20 General Availability
with Security Fix Release</h4>
+<h4 id="a20141207">7 December 2014 - Struts 2.3.20 General Availability with
Security Fix Release</h4>
-<p>The Apache Struts group is pleased to announce that Struts 2.3.20 is
available as a "General Availability"
+<p>The Apache Struts group is pleased to announce that Struts 2.3.20 is
available as a âGeneral Availabilityâ
release. The GA designation is our highest quality grade.</p>
<p>Apache Struts 2 is an elegant, extensible framework for creating
enterprise-ready Java web applications.
@@ -136,33 +138,33 @@ to maintaining applications over time.</
<p>One medium security issue was solved with this release:</p>
<ul>
-<li><a href="http://struts.apache.org/docs/s2-023.html">S2-023</a>
+ <li><a href="http://struts.apache.org/docs/s2-023.html">S2-023</a>
Generated value of token can be predictable</li>
</ul>
<p>Besides that, this release contains several fixes and improvements just to
mention few of them:</p>
<ul>
-<li>merged security fixes from version 2.3.16.1, 2.3.16.2, 2.3.16.3</li>
-<li>extended existing security mechanism to block access to given Java
packages and Classes</li>
-<li>collection Parameters for <code>RedirectResult</code></li>
-<li>make <code>ParametersInterceptor</code> supports chinese in hash key by
default</li>
-<li><code>themes.properties</code> can be loaded using
<code>ServletContext</code> allows to put template folder under WEB-INF or on
classpath</li>
-<li>new tag <code>datetextfield</code></li>
-<li>only valid Ognl expressions are cached</li>
-<li>custom <code>TextProvider</code> can be used for validation errors of
model driven actions</li>
-<li><code>datetimepicker</code>'s label fixed</li>
-<li><code>PropertiesJudge</code> removed and properties are checked in
<code>SecurityMemberAccess</code></li>
-<li>resource reloading works in IBM JVM</li>
-<li>default reloading settings were removed from default.properties</li>
-<li><code>commons-fileupload</code> library upgraded to version 1.3.1 to fix
potential security vulnerability</li>
-<li>the scheme attribute accepts expressions in <code>s:url</code> tag</li>
-<li>solves problem with infinite loop in
<code>FastByteArrayOutputStream</code></li>
-<li><code>LocalizedTextUtil</code> supports many ClassLoaders</li>
-<li>Bill of Materials pom was introduced</li>
-<li><code>debug=browser|console</code> was migrated to jQuery</li>
-<li><code>struts_dojo.js</code> was fixed</li>
-<li>interface <code>org/apache/struts2/views/TagLibrary</code> was restored
and marked as <code>@Depreacted</code></li>
+ <li>merged security fixes from version 2.3.16.1, 2.3.16.2, 2.3.16.3</li>
+ <li>extended existing security mechanism to block access to given Java
packages and Classes</li>
+ <li>collection Parameters for <code>RedirectResult</code></li>
+ <li>make <code>ParametersInterceptor</code> supports chinese in hash key by
default</li>
+ <li><code>themes.properties</code> can be loaded using
<code>ServletContext</code> allows to put template folder under WEB-INF or on
classpath</li>
+ <li>new tag <code>datetextfield</code></li>
+ <li>only valid Ognl expressions are cached</li>
+ <li>custom <code>TextProvider</code> can be used for validation errors of
model driven actions</li>
+ <li><code>datetimepicker</code>âs label fixed</li>
+ <li><code>PropertiesJudge</code> removed and properties are checked in
<code>SecurityMemberAccess</code></li>
+ <li>resource reloading works in IBM JVM</li>
+ <li>default reloading settings were removed from default.properties</li>
+ <li><code>commons-fileupload</code> library upgraded to version 1.3.1 to fix
potential security vulnerability</li>
+ <li>the scheme attribute accepts expressions in <code>s:url</code> tag</li>
+ <li>solves problem with infinite loop in
<code>FastByteArrayOutputStream</code></li>
+ <li><code>LocalizedTextUtil</code> supports many ClassLoaders</li>
+ <li>Bill of Materials pom was introduced</li>
+ <li><code>debug=browser|console</code> was migrated to jQuery</li>
+ <li><code>struts_dojo.js</code> was fixed</li>
+ <li>interface <code>org/apache/struts2/views/TagLibrary</code> was restored
and marked as <code>@Depreacted</code></li>
</ul>
<p>and many other small improvements, please careful read the <a
href="http://struts.apache.org/docs/version-notes-2320.html">version
notes</a>.</p>
@@ -175,9 +177,9 @@ Servlet API 2.4, JSP API 2.0, and Java 5
<p>Should any issues arise with your use of any version of the Struts
framework,
please post your comments to the user list, and, if appropriate, file a
tracking ticket.</p>
-<h4><span id="a20140503"> 3 May 2014 - Struts 2.3.16.3 General Availability
Release - Security Fix Release</h4>
+<h4 id="a20140503">3 May 2014 - Struts 2.3.16.3 General Availability Release -
Security Fix Release</h4>
-<p>The Apache Struts group is pleased to announce that Struts 2.3.16.3 is
available as a "General Availability"
+<p>The Apache Struts group is pleased to announce that Struts 2.3.16.3 is
available as a âGeneral Availabilityâ
release. The GA designation is our highest quality grade.</p>
<p>Apache Struts 2 is an elegant, extensible framework for creating
enterprise-ready Java web applications.
@@ -187,15 +189,15 @@ to maintaining applications over time.</
<p>One medium security issue was solved with this release:</p>
<ul>
-<li><a href="http://struts.apache.org/docs/s2-022.html">S2-022</a>
-Extends excluded params in CookieInterceptor to avoid manipulation of
Struts' internals</li>
+ <li><a href="http://struts.apache.org/docs/s2-022.html">S2-022</a>
+Extends excluded params in CookieInterceptor to avoid manipulation of
Strutsâ internals</li>
</ul>
<p>All developers are strongly advised to perform this action.</p>
-<h4><span id="a20140424"> 24 April 2014 - Struts 2.3.16.2 General Availability
Release - Security Fix Release</h4>
+<h4 id="a20140424">24 April 2014 - Struts 2.3.16.2 General Availability
Release - Security Fix Release</h4>
-<p>The Apache Struts group is pleased to announce that Struts 2.3.16.2 is
available as a "General Availability"
+<p>The Apache Struts group is pleased to announce that Struts 2.3.16.2 is
available as a âGeneral Availabilityâ
release. The GA designation is our highest quality grade.</p>
<p>Apache Struts 2 is an elegant, extensible framework for creating
enterprise-ready Java web applications.
@@ -205,19 +207,19 @@ to maintaining applications over time.</
<p>Two security issues were solved with this release:</p>
<ul>
-<li><a href="http://struts.apache.org/docs/s2-021.html">S2-021</a>
+ <li><a href="http://struts.apache.org/docs/s2-021.html">S2-021</a>
Improves excluded params to avoid ClassLoader manipulation via
ParametersInterceptor</li>
-<li><a href="http://struts.apache.org/docs/s2-021.html">S2-021</a>
+ <li><a href="http://struts.apache.org/docs/s2-021.html">S2-021</a>
Adds excluded params to CookieInterceptor to avoid ClassLoader manipulation
when the interceptors is configured
-to accept all cookie names (wildcard matching via "*")</li>
+to accept all cookie names (wildcard matching via â*â)</li>
</ul>
<p>All developers are strongly advised to perform this action.</p>
-<h4><span id="a20140424"> 24 April 2014 - Struts up to 2.3.16.1: Zero-Day
Exploit Mitigation</h4>
+<h4 id="a20140424">24 April 2014 - Struts up to 2.3.16.1: Zero-Day Exploit
Mitigation</h4>
<p>In Struts 2.3.16.1, an issue with ClassLoader manipulation via request
parameters was supposed to be resolved. Unfortunately,
-the correction wasn't sufficient.</p>
+the correction wasnât sufficient.</p>
<p>A security fix release fully addressing this issue is in preparation and
will be released as soon as possible.</p>
@@ -227,38 +229,44 @@ the correction wasn't sufficient.</p
<p>In your struts.xml, replace all custom references to params-interceptor
with the following code, especially regarding the class-pattern
found at the beginning of the excludeParams list:</p>
-<div class="highlight"><pre><code class="text language-text"
data-lang="text"><interceptor-ref name="params">
- <param
name="excludeParams">(.*\.|^|.*|\[('|"))(c|C)lass(\.|('|")]|\[).*,^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^action:.*,^method:.*</param>
+
+<pre><code><interceptor-ref name="params">
+ <param
name="excludeParams">(.*\.|^|.*|\[('|"))(c|C)lass(\.|('|")]|\[).*,^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^action:.*,^method:.*</param>
</interceptor-ref>
-</code></pre></div>
+</code></pre>
+
<p>If you are using default interceptor stacks packaged in struts-default.xml,
change your parent packages to a customized secured configuration
as in the following example. Given you are using defaultStack so far, change
your packages from</p>
-<div class="highlight"><pre><code class="text language-text"
data-lang="text"><package name="default" namespace="/"
extends="struts-default">
- <default-interceptor-ref name="defaultStack" />
+
+<pre><code><package name="default" namespace="/"
extends="struts-default">
+ <default-interceptor-ref name="defaultStack" />
...
...
</package>
-</code></pre></div>
+</code></pre>
+
<p>to</p>
-<div class="highlight"><pre><code class="text language-text"
data-lang="text"><package name="default" namespace="/"
extends="struts-default">
+
+<pre><code><package name="default" namespace="/"
extends="struts-default">
<interceptors>
- <interceptor-stack name="secureDefaultStack">
- <interceptor-ref name="defaultStack">
- <param
name="params.excludeParams">(.*\.|^|.*|\[('|"))(c|C)lass(\.|('|")]|\[).*,^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^action:.*,^method:.*</param>
+ <interceptor-stack name="secureDefaultStack">
+ <interceptor-ref name="defaultStack">
+ <param
name="params.excludeParams">(.*\.|^|.*|\[('|"))(c|C)lass(\.|('|")]|\[).*,^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^action:.*,^method:.*</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
- <default-interceptor-ref name="secureDefaultStack" />
+ <default-interceptor-ref name="secureDefaultStack" />
...
</package>
-</code></pre></div>
+</code></pre>
+
<p>Please follow the Apache Struts Announcements to stay updated regarding the
upcoming security release. Most likely the release will be available within the
next 72 hours.
Please prepare for upgrading all Struts 2 based production systems to the new
release version once available.</p>
-<h4><span id="a20140302"> 2 March 2014 - Struts 2.3.16.1 General Availability
Release - Security Fix Release</h4>
+<h4 id="a20140302">2 March 2014 - Struts 2.3.16.1 General Availability Release
- Security Fix Release</h4>
-<p>The Apache Struts group is pleased to announce that Struts 2.3.16.1 is
available as a "General Availability"
+<p>The Apache Struts group is pleased to announce that Struts 2.3.16.1 is
available as a âGeneral Availabilityâ
release. The GA designation is our highest quality grade.</p>
<p>Apache Struts 2 is an elegant, extensible framework for creating
enterprise-ready Java web applications.
@@ -268,15 +276,15 @@ to maintaining applications over time.</
<p>Two security issues were solved with this release:</p>
<ul>
-<li><a href="http://struts.apache.org/docs/s2-020.html">S2-020</a> ClassLoader
manipulation
+ <li><a href="http://struts.apache.org/docs/s2-020.html">S2-020</a>
ClassLoader manipulation
via request parameters</li>
-<li><a href="http://struts.apache.org/docs/s2-020.html">S2-020</a> Commons
FileUpload library was upgraded
+ <li><a href="http://struts.apache.org/docs/s2-020.html">S2-020</a> Commons
FileUpload library was upgraded
to version 1.3.1 to prevent DoS attacks</li>
</ul>
<p>All developers are strongly advised to perform this action.</p>
-<h4><span id="a20140221"> 21 February 2014 - Immediately upgrade
commons-fileupload to version 1.3.1</h4>
+<h4 id="a20140221">21 February 2014 - Immediately upgrade commons-fileupload
to version 1.3.1</h4>
<p>The Apache Struts Team recommends to immediately upgrade your Struts 2
based projects to use the latest released version of Commons
@@ -291,19 +299,21 @@ vulnerable version. Deployed application
the commons-fileupload jar file in WEB-INF/lib with the fixed jar. For
Maven based Struts 2 projects, the following dependency needs to be
added:</p>
-<div class="highlight"><pre><code class="text language-text"
data-lang="text"><dependency>
+
+<pre><code><dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
-</code></pre></div>
+</code></pre>
+
<p>More details can be found here:</p>
<ol>
-<li><a
href="http://commons.apache.org/proper/commons-fileupload/changes-report.html#a1.3.1">
-
http://commons.apache.org/proper/commons-fileupload/changes-report.html#a1.3.1</a></li>
-<li><a
href="http://mail-archives.apache.org/mod_mbox/www-announce/201402.mbox/%[email protected]%3E">
-
http://mail-archives.apache.org/mod_mbox/www-announce/201402.mbox/%[email protected]%3E</a></li>
+ <li><a
href="http://commons.apache.org/proper/commons-fileupload/changes-report.html#a1.3.1">
+
http://commons.apache.org/proper/commons-fileupload/changes-report.html#a1.3.1</a></li>
+ <li><a
href="http://mail-archives.apache.org/mod_mbox/www-announce/201402.mbox/%[email protected]%3E">
+
http://mail-archives.apache.org/mod_mbox/www-announce/201402.mbox/%[email protected]%3E</a></li>
</ol>
<p>All developers are strongly advised to perform this action.</p>
@@ -356,5 +366,19 @@ added:</p>
}(document, 'script', 'facebook-jssdk'));</script>
+<script>
+$(function() {
+ return $("h2, h3, h4, h5, h6").each(function(i, el) {
+ var $el, icon, id;
+ $el = $(el);
+ id = $el.attr('id');
+ icon = '<i class="fa fa-link"></i>';
+ if (id) {
+ return $el.prepend($("<a />").addClass("header-link").attr("href", "#" +
id).html(icon));
+ }
+ });
+});
+</script>
+
</body>
</html>
Modified: websites/production/struts/content/birdseye.html
==============================================================================
--- websites/production/struts/content/birdseye.html (original)
+++ websites/production/struts/content/birdseye.html Wed Dec 31 10:10:27 2014
@@ -10,9 +10,11 @@
<title>From a birds eye</title>
<link
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
rel="stylesheet" type="text/css">
- <link rel="stylesheet" href="css/main.css">
+ <link
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css"
rel="stylesheet">
+ <link href="css/main.css" rel="stylesheet">
+ <link href="css/custom.css" rel="stylesheet">
- <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+ <script
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="js/community.js"></script>
</head>
@@ -118,9 +120,9 @@
<article class="container">
<section class="col-md-12">
- <h1>From a birds eye</h1>
+ <h1 id="from-a-birds-eye">From a birds eye</h1>
-<h2>The Apache Struts web framework</h2>
+<h2 id="the-apache-struts-web-framework">The Apache Struts web framework</h2>
<p>The Apache Struts web framework is a free open-source solution for
creating Java web applications.</p>
@@ -143,13 +145,13 @@ developers create web applications that
<p>The framework provides three key components:</p>
-<p>A "request" handler provided by the application developer that is
mapped to a standard URI.
-A "response" handler that transfers control to another resource
which completes the response.
+<p>A ârequestâ handler provided by the application developer that is
mapped to a standard URI.
+A âresponseâ handler that transfers control to another resource which
completes the response.
A tag library that helps developers create interactive form-based applications
with server pages.
-The framework's architecture and tags are buzzword compliant. Struts works
+The frameworkâs architecture and tags are buzzword compliant. Struts works
well with conventional REST applications and with technologies like SOAP and
AJAX.</p>
-<h2>The Apache Struts Project</h2>
+<h2 id="the-apache-struts-project">The Apache Struts Project</h2>
<p>The Apache Struts Project is the open source community that creates and
maintains
the Apache Struts framework. The project consists of a diverse group of
volunteers
@@ -157,8 +159,8 @@ who share common values regarding collab
The Apache Struts Project is proud to share these values with our parent
organization:
The Apache Software Foundation.</p>
-<p>The project is called "Struts" because the framework is meant to
furnish the
-"invisible underpinnings" that support professional application
development.
+<p>The project is called âStrutsâ because the framework is meant to
furnish the
+âinvisible underpinningsâ that support professional application
development.
Struts provides the glue that joins the various elements of the standard Java
platform
into a coherent whole. Our goal is to leverage existing standards by producing
the missing
pieces we need to create enterprise-grade applications that are easy to
maintain over time.</p>
@@ -172,15 +174,15 @@ issuing security patches.</p>
the WebWork and Struts communities joined forces to create Struts 2. The 2.x
framework
is the best choice for teams who value elegant solutions to difficult
problems.</p>
-<h2>Why should you use Apache Struts?</h2>
+<h2 id="why-should-you-use-apache-struts">Why should you use Apache
Struts?</h2>
<p>Apache Struts is a modern, maintained and full-featured web framework. It
has been there
for years and give the huge user base it is unlikely it will go away anytime
soon
in the future. Not only that we have dedicated users and developers on the
project.
Apache Struts is licensed to the Apache License 2.0 and this will not change.
We maintain
-a clean IP and you are "safe" to use the project. Sometimes you are
not "safe" to use
-a project when a company controls the SCM. Access to Source Code doesn't
mean it is free.
-With Apache Struts, you are not only free to "do what you want with
it", you can even
+a clean IP and you are âsafeâ to use the project. Sometimes you are not
âsafeâ to use
+a project when a company controls the SCM. Access to Source Code doesnât
mean it is free.
+With Apache Struts, you are not only free to âdo what you want with itâ,
you can even
contribute (which is not always the case). And best of it: you can become a
part of the
core team too.</p>
@@ -204,6 +206,7 @@ the view layer. Projects like <a href="h
framework you need to decide if it makes sense for you to build components or
if
you are better with the Struts-approach.</p>
+
</section>
</article>
@@ -243,5 +246,19 @@ you are better with the Struts-approach.
}(document, 'script', 'facebook-jssdk'));</script>
+<script>
+$(function() {
+ return $("h2, h3, h4, h5, h6").each(function(i, el) {
+ var $el, icon, id;
+ $el = $(el);
+ id = $el.attr('id');
+ icon = '<i class="fa fa-link"></i>';
+ if (id) {
+ return $el.prepend($("<a />").addClass("header-link").attr("href", "#" +
id).html(icon));
+ }
+ });
+});
+</script>
+
</body>
</html>
Modified: websites/production/struts/content/builds.html
==============================================================================
--- websites/production/struts/content/builds.html (original)
+++ websites/production/struts/content/builds.html Wed Dec 31 10:10:27 2014
@@ -10,9 +10,11 @@
<title>Source Code</title>
<link
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
rel="stylesheet" type="text/css">
- <link rel="stylesheet" href="css/main.css">
+ <link
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css"
rel="stylesheet">
+ <link href="css/main.css" rel="stylesheet">
+ <link href="css/custom.css" rel="stylesheet">
- <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+ <script
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="js/community.js"></script>
</head>
@@ -118,7 +120,7 @@
<article class="container">
<section class="col-md-12">
- <h1>Source Code</h1>
+ <h1 id="source-code">Source Code</h1>
<p>As a convenience to developers who are helping to create and maintain the
Apache Struts framework,
public access to the live source code repository is available. This is our
one-and-only development repository.
@@ -134,15 +136,19 @@ your own copy of the product, use the so
<a href="http://git-scm.com/">Git client</a> interfaces.</p>
<p>With the <a href="http://git-scm.com/">Git client</a> installed, obtaining
a working copy of the Struts codebase is as simple as</p>
-<div class="highlight"><pre><code class="text language-text"
data-lang="text">> git clone http://git.apache.org/struts.git
-</code></pre></div>
+
+<pre><code>> git clone http://git.apache.org/struts.git
+</code></pre>
+
<p>(Committers with write access should use the <strong>https</strong>
protocol instead)</p>
-<div class="highlight"><pre><code class="text language-text"
data-lang="text">> git clone
https://git-wip-us.apache.org/repos/asf/struts.git
-</code></pre></div>
-<p>For more about using version control systems at Apache, see the ASF's
+
+<pre><code>> git clone https://git-wip-us.apache.org/repos/asf/struts.git
+</code></pre>
+
+<p>For more about using version control systems at Apache, see the ASFâs
<a href="http://www.apache.org/dev/#version-control">Source Code
Repositories</a> page.</p>
-<h1>Building Apache Struts</h1>
+<h1 id="building-apache-struts">Building Apache Struts</h1>
<p>If you are building Apache Struts from source, we recommend that you
install and use
<a href="http://maven.apache.org">Apache Maven 3.</a> During the build
process, Maven will automatically acquire
@@ -150,11 +156,15 @@ whatever external JARs your system may n
your own applications!)</p>
<p>With Maven installed, building a Struts codebase is as simple as</p>
-<div class="highlight"><pre><code class="text language-text"
data-lang="text">> mvn install
-</code></pre></div>
+
+<pre><code>> mvn install
+</code></pre>
+
<p>or</p>
-<div class="highlight"><pre><code class="text language-text"
data-lang="text">> mvn -DskipAssembly=true install
-</code></pre></div>
+
+<pre><code>> mvn -DskipAssembly=true install
+</code></pre>
+
<p>Maven will automatically download any dependencies as needed.</p>
<p>For more about using Maven to build Struts 2, see
@@ -163,7 +173,7 @@ your own applications!)</p>
<p>For more about using Maven to build Struts 1, see our <a
href="http://wiki.apache.org/struts/StrutsMaintenanceMaven">Maven wiki
page.</a></p>
-<h1>NightlyBuilds</h1>
+<h1 id="nightlybuilds">NightlyBuilds</h1>
<p>As part of our continuous integration practice, we also make available each
morning the
<a
href="https://builds.apache.org/view/S-Z/view/Struts/job/Struts2-JDK6/lastStableBuild/org.apache.struts$struts2-assembly/">latest
stable development build.</a></p>
@@ -176,44 +186,46 @@ your own applications!)</p>
<p>NOTE: The Struts 2 nightly build is not fully operational. We suggest that
contributors checkout
the <a href="#SourceCode">source code</a> instead.</p>
-<h1>Test Builds</h1>
+<h1 id="test-builds">Test Builds</h1>
<p>As we prepare for a new release, the project group may create interim
<em>test builds</em>. When test builds are available,
we post them <a href="http://people.apache.org/builds/struts/">here</a> in
binary, source and library distributions.
Library distributions include any external dependencies needed to use a
product with your application.</p>
<p>A test build is made available so that it can be reviewed for quality by
the Apache Struts development group.
-When a build is judged "ready for prime time", it is promoted to
"General Availability" status and may be
-made the "Best Available" release. If the group feels that a build
requires more testing, then it may be marked
-as "Beta" release. When a test build is upgraded to "Beta"
or "GA" by a vote of the project members,
+When a build is judged âready for prime timeâ, it is promoted to
âGeneral Availabilityâ status and may be
+made the âBest Availableâ release. If the group feels that a build
requires more testing, then it may be marked
+as âBetaâ release. When a test build is upgraded to âBetaâ or âGAâ
by a vote of the project members,
we make the distribution available as a formal <a
href="downloads.html">release.</a></p>
-<h1>Maven Snapshots</h1>
+<h1 id="maven-snapshots">Maven Snapshots</h1>
-<p>When a distribution is first made available, it is rated as a development
build or "snapshot". Later, the quality
-of the distribution may be upgraded to "Beta" or "General
Availability", based on feedback from the community,
+<p>When a distribution is first made available, it is rated as a development
build or âsnapshotâ. Later, the quality
+of the distribution may be upgraded to âBetaâ or âGeneral
Availabilityâ, based on feedback from the community,
and then made available through ibiblio and other public Maven repositories.
To obtain an early distribution via Maven,
-specify the ASF Snapshot repository in the project's POM.</p>
-<div class="highlight"><pre><code class="text language-text"
data-lang="text"><repositories>
+specify the ASF Snapshot repository in the projectâs POM.</p>
+
+<pre><code><repositories>
<repository>
<id>apache.snapshots</id>
<name>ASF Maven 2 Snapshot</name>
<url>https://repository.apache.org/content/groups/snapshots/</url>
</repository>
</repositories>
-</code></pre></div>
-<h1>Licensing of Apache Struts Builds</h1>
+</code></pre>
+
+<h1 id="licensing-of-apache-struts-builds">Licensing of Apache Struts
Builds</h1>
<p>Apache Struts 2 source code and documentation is licensed to the Apache
Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file included in any
distribution for additional information
regarding copyright ownership. The ASF licenses the source code and
documentation files in our Apache Struts distribution
-to you under the Apache License, Version 2.0 (the "License"); you
may not use the Apache Struts product except in compliance
+to you under the Apache License, Version 2.0 (the âLicenseâ); you may not
use the Apache Struts product except in compliance
with the License.</p>
<p>You may obtain a copy of the License at
[http://www.apache.org/licenses/LICENSE-2.0]</p>
<p>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
+â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.</p>
<p>Next: <a href="releases.html">Release Guidelines</a></p>
@@ -257,5 +269,19 @@ specific language governing permissions
}(document, 'script', 'facebook-jssdk'));</script>
+<script>
+$(function() {
+ return $("h2, h3, h4, h5, h6").each(function(i, el) {
+ var $el, icon, id;
+ $el = $(el);
+ id = $el.attr('id');
+ icon = '<i class="fa fa-link"></i>';
+ if (id) {
+ return $el.prepend($("<a />").addClass("header-link").attr("href", "#" +
id).html(icon));
+ }
+ });
+});
+</script>
+
</body>
</html>
Modified: websites/production/struts/content/bylaws.html
==============================================================================
--- websites/production/struts/content/bylaws.html (original)
+++ websites/production/struts/content/bylaws.html Wed Dec 31 10:10:27 2014
@@ -10,9 +10,11 @@
<title>Project Management Committee Charter</title>
<link
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
rel="stylesheet" type="text/css">
- <link rel="stylesheet" href="css/main.css">
+ <link
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css"
rel="stylesheet">
+ <link href="css/main.css" rel="stylesheet">
+ <link href="css/custom.css" rel="stylesheet">
- <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+ <script
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="js/community.js"></script>
</head>
@@ -118,7 +120,7 @@
<article class="container">
<section class="col-md-12">
- <h1>Apache Struts PMC Charter</h1>
+ <h1 id="apache-struts-pmc-charter">Apache Struts PMC Charter</h1>
<p>Struts is a Project of the <a href="http://apache.org/foundation">Apache
Software Foundation</a> (ASF), formed by a resolution
of the <a href="http://apache.org/foundation/board/">ASF Board of
Directors</a>. As an ASF Project, Struts is subject to the
@@ -128,56 +130,56 @@ of the <a href="http://apache.org/founda
of [How the ASF works](http://apache.org/foundation/how-it-works.html, with
the additional guidelines
and clarifications found herein.</p>
-<h1>Roles and Responsibilities</h1>
+<h1 id="roles-and-responsibilities">Roles and Responsibilities</h1>
<p>The roles and responsibilities that people can assume in the project are
based on merit.
Everybody can help no matter what their role. Those who have been long term or
valuable contributors to
the project can earn the right to commit directly to the source repository and
to cast binding votes during
the decision-making process.</p>
-<h1>Users.</h1>
+<h1 id="users">Users.</h1>
-<p>Users are the people who use the products of the Project. People in this
role aren't contributing code,
+<p>Users are the people who use the products of the Project. People in this
role arenât contributing code,
but they are using the products, reporting bugs, making feature requests, and
such. This is by far
the most important category of people as, without users, there is no reason
for the Project.
When a user starts to contribute code or documentation patches, they become a
Contributor.</p>
-<h1>Contributors.</h1>
+<h1 id="contributors">Contributors.</h1>
<p>Contributors are the people who write code or documentation patches or
contribute positively to the project
-in other ways. When a volunteer's patch is applied, the contribution is
recognized in the version control log.</p>
+in other ways. When a volunteerâs patch is applied, the contribution is
recognized in the version control log.</p>
-<h1>Committers.</h1>
+<h1 id="committers">Committers.</h1>
<p>Contributors who give frequent and valuable contributions to a subproject
of the Project can have their status
-promoted to that of a "<em>Committer</em>" for that subproject. A
Committer has write access to the source code repository.
+promoted to that of a â<em>Committer</em>â for that subproject. A
Committer has write access to the source code repository.
Committer status is granted by the Project Management Committee by majority
vote.</p>
-<h1>Project Management Committee (PMC).</h1>
+<h1 id="project-management-committee-pmc">Project Management Committee
(PMC).</h1>
<p>Committers and other volunteers who frequently participate with valuable
contributions may have their status promoted
-to that of a "<em>Project Management Committee Member</em>". The PMC
is responsible for the day-to-day management
+to that of a â<em>Project Management Committee Member</em>â. The PMC is
responsible for the day-to-day management
of the Project.</p>
-<h1>Management</h1>
+<h1 id="management">Management</h1>
<p>The Vice President is appointed by the ASF Board. The Vice President is
assisted by the Project Management Committee
(PMC) and also serves as the PMC chair. The PMC may nominate new members.
Nominees may then be approved
with a 3/4 majority vote of the PMC. Membership can be revoked by a unanimous
vote of all the active PMC members
other than the member in question. The list of active PMC members can be found
on our <a href="volunteers.html">Volunteers page</a>.</p>
-<h1>PMC Duties</h1>
+<h1 id="pmc-duties">PMC Duties</h1>
<p>The PMC is responsible for the day-to-day management of the Struts Project.
The PMC oversees all changes
made to the codebase. The PMC must ensure that all code under a Apache Struts
repository is the lawful property
of the Foundation and may be distributed under the <a
href="http://apache.org/licenses/">Apache Software License</a>.
All releases of a Struts subproject must be sanctioned by the Project
Management Committee.</p>
-<h1>Subprojects</h1>
+<h1 id="subprojects">Subprojects</h1>
-<p>Subprojects are the Project's unit of release. Each subproject should
represent an implementation of a Struts framework
+<p>Subprojects are the Projectâs unit of release. Each subproject should
represent an implementation of a Struts framework
or a related component. Each subproject should focus on creating, maintaining,
and releasing a single software
-product or "deliverable".</p>
+product or âdeliverableâ.</p>
<p>All PMC Members have voting rights in all subprojects. Members not familiar
with a subproject codebase may abstain
from any given vote. All Committers have write access to all subprojects.
Subprojects are units of release, not
@@ -188,13 +190,13 @@ identify the initial source from which t
repositories, if any, which are to be created. Creation of a new subproject
requires approval by a 3/4 majority
vote of the PMC.</p>
-<h1>Decision Making</h1>
+<h1 id="decision-making">Decision Making</h1>
<p>All <a
href="http://apache.org/foundation/how-it-works.html#roles">Volunteers</a>
(Users, Developers, Committers, PMC Members)
are encouraged to participate in the decision-making process, but binding
decisions are made only
by the Project Management Committee.</p>
-<h1>Voting</h1>
+<h1 id="voting">Voting</h1>
<p>Any subscriber to the list may <a
href="http://apache.org/foundation/voting.html">vote</a> on any issue or action
item.
Votes from Developers and Committers are especially welcome. However, the only
binding votes are those cast by a PMC
@@ -252,38 +254,38 @@ point they are decided by either consens
to a +1 after discussion, and likewise a +1 may be converted to a -1. By
convention, Committers should allow a vote
to circulate for 72 hours before taking action.</p>
-<h1>Action Items</h1>
+<h1 id="action-items">Action Items</h1>
-<p>All decisions revolve around "<em>Action Items</em>". Action
Items consist of the following:
+<p>All decisions revolve around â<em>Action Items</em>â. Action Items
consist of the following:
- Long Term Plans
- Short Term Plans
- Product Changes
-- Showstoppers (or "blockers")
+- Showstoppers (or âblockersâ)
- Release Plan
- Release Grade</p>
-<h2>Long Term Plans</h2>
+<h2 id="long-term-plans">Long Term Plans</h2>
<p>Long term plans are simply announcements that group members are working on
particular issues related to the Project.
These items are not voted on, but Committers and PMC Members who do not agree
with a particular plan, or think that
an alternative plan would be better, are obligated to inform the group of
their feelings.</p>
-<h2>Short Term Plan</h2>
+<h2 id="short-term-plan">Short Term Plan</h2>
<p>Short term plans are announcements that a volunteer is working on a
particular set of documentation or code files
with the implication that other volunteers should avoid them or try to
coordinate their changes.</p>
-<h2>Product Changes</h2>
+<h2 id="product-changes">Product Changes</h2>
<p>All product changes to the repository are subject to lazy consensus.</p>
-<h2>Showstoppers</h2>
+<h2 id="showstoppers">Showstoppers</h2>
-<p>Showstoppers are issues that require a fix be in place before the next
public release. They are designated as "blockers"
+<p>Showstoppers are issues that require a fix be in place before the next
public release. They are designated as âblockersâ
in the issue tracker in order to focus special attention on these problems. An
issue becomes a showstopper when it is
designated as such in the issue tracker by a PMC member and remains so by lazy
consensus.</p>
-<h2>Release Plan</h2>
+<h2 id="release-plan">Release Plan</h2>
<p>A release plan must be used to keep all volunteers aware of when a release
is desired, whether it will be a major,
minor, or milestone release, who will be the release manager, when the
repository will be tagged to create
@@ -291,16 +293,16 @@ the distribution, and other assorted inf
plan must be incorporated into the product documentation, or otherwise
announced to the DEV list.
Lazy majority decides each issue in a release plan.</p>
-<h2>Release Grade</h2>
+<h2 id="release-grade">Release Grade</h2>
<p>After a proposed release is built, it must be tested and classified before
being released to the general public.
-The proposed release may be assigned "Alpha", "Beta" or
"General Availability" classifications by majority vote.
+The proposed release may be assigned âAlphaâ, âBetaâ or âGeneral
Availabilityâ classifications by majority vote.
Once a release is classified by the PMC Members, it may be distributed to the
general public on behalf of the Foundation.
Distributions may be reclassified or withdrawn by majority vote, but the
release number may not be reused by another distribution.</p>
-<h1>Sandbox</h1>
+<h1 id="sandbox">Sandbox</h1>
-<p>Pursuant to the <a
href="http://incubator.apache.org/learn/rules-for-revolutionaries.html">"Rules
for Revolutionaries"</a>,
+<p>Pursuant to the <a
href="http://incubator.apache.org/learn/rules-for-revolutionaries.html">âRules
for Revolutionariesâ</a>,
any committer may submit experimental material to the Sandbox area of the
repository at his or her own discretion.</p>
<p>Material must be moved from the sandbox to the main repository before it
can be released.</p>
@@ -351,5 +353,19 @@ any committer may submit experimental ma
}(document, 'script', 'facebook-jssdk'));</script>
+<script>
+$(function() {
+ return $("h2, h3, h4, h5, h6").each(function(i, el) {
+ var $el, icon, id;
+ $el = $(el);
+ id = $el.attr('id');
+ icon = '<i class="fa fa-link"></i>';
+ if (id) {
+ return $el.prepend($("<a />").addClass("header-link").attr("href", "#" +
id).html(icon));
+ }
+ });
+});
+</script>
+
</body>
</html>
Modified: websites/production/struts/content/coding-standards.html
==============================================================================
--- websites/production/struts/content/coding-standards.html (original)
+++ websites/production/struts/content/coding-standards.html Wed Dec 31
10:10:27 2014
@@ -10,9 +10,11 @@
<title>Coding standards</title>
<link
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
rel="stylesheet" type="text/css">
- <link rel="stylesheet" href="css/main.css">
+ <link
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css"
rel="stylesheet">
+ <link href="css/main.css" rel="stylesheet">
+ <link href="css/custom.css" rel="stylesheet">
- <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+ <script
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="js/community.js"></script>
</head>
@@ -118,84 +120,97 @@
<article class="container">
<section class="col-md-12">
- <h1>In the first place</h1>
+ <h1 id="in-the-first-place">In the first place</h1>
<p>Please remember that most of the time others will read your code. Focusing
on that allow you to gain required perspective
-about how code should look like. Defaults, margins, convention doesn't
matter if what you write is hard to read.</p>
+about how code should look like. Defaults, margins, convention doesnât
matter if what you write is hard to read.</p>
<p><strong>Readability is the first rule!</strong></p>
-<h2>Separation of concern</h2>
+<h2 id="separation-of-concern">Separation of concern</h2>
<p>If you want to reformat given file, part of class, etc do it in a dedicated
commit. Never ever mix bug fixing,
new feature implementation with code reformatting. Thus only confuses people
reviewing your code.</p>
<p><strong>Reformat different than coding!</strong></p>
-<h2>Ask!</h2>
+<h2 id="ask">Ask!</h2>
-<p>If something isn't clear, you have doubts and anything else - ask!
Maybe during materialising your thoughts as text
+<p>If something isnât clear, you have doubts and anything else - ask! Maybe
during materialising your thoughts as text
you will gain the answer - Rubber Duck effect :-) Anyway, instead spending
time on looking for solution - ask.</p>
-<p>The best place to ask question is Struts Developers List <a
href="mailto:[email protected]">[email protected]</a></p>
+<p>The best place to ask question is Struts Developers List <a
href="mailto:dev@struts.apache.org">dev@struts.apache.org</a></p>
-<h2>WIP</h2>
+<h2 id="wip">WIP</h2>
-<p>If you have any idea how to improve this guideline, don't hesitate to
send them to us! Any help is welcome!</p>
+<p>If you have any idea how to improve this guideline, donât hesitate to
send them to us! Any help is welcome!</p>
-<h1>Examples</h1>
+<h1 id="examples">Examples</h1>
<p>Below examples shows how you should proceed when adjusting given part of
source code via reformatting, extracting
or improving.</p>
-<h2>From defaults to extractions</h2>
+<h2 id="from-defaults-to-extractions">From defaults to extractions</h2>
<p>The original source code:</p>
-<div class="highlight"><pre><code class="text language-text"
data-lang="text">// Hidden input section
+
+<pre><code>// Hidden input section
a = new Attributes();
-a.add("type", "hidden")
- .add("id", "__multiselect_" +
StringUtils.defaultString(StringEscapeUtils.escapeHtml4(id)))
- .add("name", "__multiselect_" +
StringUtils.defaultString(StringEscapeUtils.escapeHtml4(name)))
- .add("value", "").addIfTrue("disabled",
disabled);
-start("input", a);
-end("input");
-</code></pre></div>
+a.add("type", "hidden")
+ .add("id", "__multiselect_" +
StringUtils.defaultString(StringEscapeUtils.escapeHtml4(id)))
+ .add("name", "__multiselect_" +
StringUtils.defaultString(StringEscapeUtils.escapeHtml4(name)))
+ .add("value", "").addIfTrue("disabled", disabled);
+start("input", a);
+end("input");
+</code></pre>
+
<p>After applying default reformatting (80 columns margin):</p>
-<div class="highlight"><pre><code class="text language-text"
data-lang="text">// Hidden input section
+
+<pre><code>// Hidden input section
a = new Attributes();
-a.add("type", "hidden")
- .add("id",
- "__multiselect_"
+a.add("type", "hidden")
+ .add("id",
+ "__multiselect_"
+ StringUtils
.defaultString(StringEscapeUtils
.escapeHtml4(id)))
- .add("name",
- "__multiselect_"
+ .add("name",
+ "__multiselect_"
+ StringUtils
.defaultString(StringEscapeUtils
.escapeHtml4(name)))
- .add("value", "").addIfTrue("disabled",
disabled);
-start("input", a);
-end("input");
-</code></pre></div>
+ .add("value", "").addIfTrue("disabled", disabled);
+start("input", a);
+end("input");
+</code></pre>
+
<p>Some suggestions how to improve the code:</p>
<ul>
-<li><p>use static imports</p>
-<div class="highlight"><pre><code class="text language-text"
data-lang="text">a.add("type", "hidden")
- .add("id", "__multiselect_" +
defaultString(escapeHtml4(id)));
-</code></pre></div></li>
-<li><p>use dedicated method</p>
-<div class="highlight"><pre><code class="text language-text"
data-lang="text">a.add("type", "hidden")
- .add("id", "__multiselect_" + safeId(id));
-</code></pre></div></li>
-<li><p>use builder</p>
-<div class="highlight"><pre><code class="text language-text"
data-lang="text">a.add("type", "hidden")
- .add("id",
HtmlID.with("__multiselect_").withSafeId(id).create());
-</code></pre></div></li>
+ <li>
+ <p>use static imports</p>
+
+ <pre><code> a.add("type", "hidden")
+ .add("id", "__multiselect_" + defaultString(escapeHtml4(id)));
+</code></pre>
+ </li>
+ <li>
+ <p>use dedicated method</p>
+
+ <pre><code> a.add("type", "hidden")
+ .add("id", "__multiselect_" + safeId(id));
+</code></pre>
+ </li>
+ <li>
+ <p>use builder</p>
+
+ <pre><code> a.add("type", "hidden")
+ .add("id", HtmlID.with("__multiselect_").withSafeId(id).create());
+</code></pre>
+ </li>
</ul>
-<p>As you can see, reformatting a code is just the beginning, you
shouldn't stop there and think <em>how can I improve
+<p>As you can see, reformatting a code is just the beginning, you shouldnât
stop there and think <em>how can I improve
readability</em> and follow that path to the end.</p>
</section>
@@ -237,5 +252,19 @@ readability</em> and follow that path to
}(document, 'script', 'facebook-jssdk'));</script>
+<script>
+$(function() {
+ return $("h2, h3, h4, h5, h6").each(function(i, el) {
+ var $el, icon, id;
+ $el = $(el);
+ id = $el.attr('id');
+ icon = '<i class="fa fa-link"></i>';
+ if (id) {
+ return $el.prepend($("<a />").addClass("header-link").attr("href", "#" +
id).html(icon));
+ }
+ });
+});
+</script>
+
</body>
</html>
Modified: websites/production/struts/content/css/main.css
==============================================================================
--- websites/production/struts/content/css/main.css (original)
+++ websites/production/struts/content/css/main.css Wed Dec 31 10:10:27 2014
@@ -6479,7 +6479,6 @@ body {
h1, h2, h3, h4, h5, h6 {
font-weight: 400;
margin-top: 1em;
- margin-bottom: 1rem
}
h1 {
@@ -7035,13 +7034,11 @@ footer.container > .col-md-12 {
h1, h2, h3, h4, h5, h6 {
font-weight: 400;
margin-top: 1em;
- margin-bottom: 1rem
}
h1 {
font-size: 3rem;
color: #3157a7;
- margin-bottom: 1em;
}
h1:first-child {
Modified: websites/production/struts/content/dev-mail.html
==============================================================================
--- websites/production/struts/content/dev-mail.html (original)
+++ websites/production/struts/content/dev-mail.html Wed Dec 31 10:10:27 2014
@@ -10,9 +10,11 @@
<title>Dev Mailing List</title>
<link
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
rel="stylesheet" type="text/css">
- <link rel="stylesheet" href="css/main.css">
+ <link
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css"
rel="stylesheet">
+ <link href="css/main.css" rel="stylesheet">
+ <link href="css/custom.css" rel="stylesheet">
- <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+ <script
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="js/community.js"></script>
</head>
@@ -118,7 +120,7 @@
<article class="container">
<section class="col-md-12">
- <h1>Development Lists</h1>
+ <h1 id="development-lists">Development Lists</h1>
<p>The following mailing lists are meant for people who want to contribute to
Struts itself. Patches, Documentation
improvements and discussion on future Struts are welcome. <strong>For
questions on using Struts, please subscribe to the
@@ -153,7 +155,7 @@ improvements and discussion on future St
</tr>
</table>
-<h1>Archives</h1>
+<h1 id="archives">Archives</h1>
<p>You can read the <a
href="http://mail-archives.apache.org/mod_mbox/struts-dev/">ASF Mail</a> or the
<a href="http://markmail.org/list/org.apache.struts.dev/">Mark Mail</a>
archives if you are looking for older discussions.
@@ -198,5 +200,19 @@ There are many other archives out there
}(document, 'script', 'facebook-jssdk'));</script>
+<script>
+$(function() {
+ return $("h2, h3, h4, h5, h6").each(function(i, el) {
+ var $el, icon, id;
+ $el = $(el);
+ id = $el.attr('id');
+ icon = '<i class="fa fa-link"></i>';
+ if (id) {
+ return $el.prepend($("<a />").addClass("header-link").attr("href", "#" +
id).html(icon));
+ }
+ });
+});
+</script>
+
</body>
</html>
Modified: websites/production/struts/content/download.html
==============================================================================
--- websites/production/struts/content/download.html (original)
+++ websites/production/struts/content/download.html Wed Dec 31 10:10:27 2014
@@ -10,9 +10,11 @@
<title>Download a Release</title>
<link
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
rel="stylesheet" type="text/css">
- <link rel="stylesheet" href="css/main.css">
+ <link
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css"
rel="stylesheet">
+ <link href="css/main.css" rel="stylesheet">
+ <link href="css/custom.css" rel="stylesheet">
- <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+ <script
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="js/community.js"></script>
</head>
@@ -407,5 +409,19 @@
}(document, 'script', 'facebook-jssdk'));</script>
+<script>
+$(function() {
+ return $("h2, h3, h4, h5, h6").each(function(i, el) {
+ var $el, icon, id;
+ $el = $(el);
+ id = $el.attr('id');
+ icon = '<i class="fa fa-link"></i>';
+ if (id) {
+ return $el.prepend($("<a />").addClass("header-link").attr("href", "#" +
id).html(icon));
+ }
+ });
+});
+</script>
+
</body>
</html>
Modified: websites/production/struts/content/downloads.html
==============================================================================
--- websites/production/struts/content/downloads.html (original)
+++ websites/production/struts/content/downloads.html Wed Dec 31 10:10:27 2014
@@ -10,9 +10,11 @@
<title>Releases</title>
<link
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
rel="stylesheet" type="text/css">
- <link rel="stylesheet" href="css/main.css">
+ <link
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css"
rel="stylesheet">
+ <link href="css/main.css" rel="stylesheet">
+ <link href="css/custom.css" rel="stylesheet">
- <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+ <script
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="js/community.js"></script>
</head>
@@ -1176,5 +1178,19 @@
}(document, 'script', 'facebook-jssdk'));</script>
+<script>
+$(function() {
+ return $("h2, h3, h4, h5, h6").each(function(i, el) {
+ var $el, icon, id;
+ $el = $(el);
+ id = $el.attr('id');
+ icon = '<i class="fa fa-link"></i>';
+ if (id) {
+ return $el.prepend($("<a />").addClass("header-link").attr("href", "#" +
id).html(icon));
+ }
+ });
+});
+</script>
+
</body>
</html>