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/%3c52f373fc.9030...@apache.org%3E"> - http://mail-archives.apache.org/mod_mbox/www-announce/201402.mbox/%3c52f373fc.9030...@apache.org%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/%3c52f373fc.9030...@apache.org%3E"> + http://mail-archives.apache.org/mod_mbox/www-announce/201402.mbox/%3c52f373fc.9030...@apache.org%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:d...@struts.apache.org">d...@struts.apache.org</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>