You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shiro.apache.org by bd...@apache.org on 2016/10/24 22:10:11 UTC

shiro-site git commit: Move "related links" sections out of markdown and into a new layout template

Repository: shiro-site
Updated Branches:
  refs/heads/master c4731cd49 -> 06f534375


Move "related links" sections out of markdown and into a new layout template


Project: http://git-wip-us.apache.org/repos/asf/shiro-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/shiro-site/commit/06f53437
Tree: http://git-wip-us.apache.org/repos/asf/shiro-site/tree/06f53437
Diff: http://git-wip-us.apache.org/repos/asf/shiro-site/diff/06f53437

Branch: refs/heads/master
Commit: 06f5343751250bb41c8b1a13c235e69bc26e8182
Parents: c4731cd
Author: Brian Demers <bd...@apache.org>
Authored: Mon Oct 24 18:09:57 2016 -0400
Committer: Brian Demers <bd...@apache.org>
Committed: Mon Oct 24 18:09:57 2016 -0400

----------------------------------------------------------------------
 assets/js/shiro-site.js          |  10 +-
 authentication-features.md       |  25 ----
 authorization-features.md        |  24 ----
 cas.md.vtl                       |  10 --
 config.scms.groovy               | 217 +++++++++++++++++++++++++++++++++-
 java-authentication-guide.md.vtl |  19 ---
 java-authorization-guide.md.vtl  |  22 ----
 mailing-lists.md                 |  57 ---------
 mailing-lists.md.vtl             |  16 +++
 permissions.md                   |  21 ----
 session-management.md.vtl        |  27 -----
 spring.md                        |  12 --
 templates/default.vtl            |   6 +-
 templates/layouts/related.vtl    |  19 +++
 tutorial.md.vtl                  |  16 ---
 web-features.md                  |  18 ---
 web.md.vtl                       |  25 ----
 17 files changed, 256 insertions(+), 288 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/shiro-site/blob/06f53437/assets/js/shiro-site.js
----------------------------------------------------------------------
diff --git a/assets/js/shiro-site.js b/assets/js/shiro-site.js
index 9a74c76..19584b2 100644
--- a/assets/js/shiro-site.js
+++ b/assets/js/shiro-site.js
@@ -7,10 +7,10 @@ function addPageEditLink() {
     var ghEditPageElement = $( "#ghEditPage" );
     var editThisPageElement = $(".editThisPage");
 
-        if (ghEditPageElement && ghEditPageElement.val() && editThisPageElement) {
-            var relGHPage = ghEditPageElement.val();
+    if (ghEditPageElement && ghEditPageElement.val() && editThisPageElement) {
+        var relGHPage = ghEditPageElement.val();
 
-            var ghEditHref = ghRelHref + relGHPage;
-            editThisPageElement.append("<a href='" + ghEditHref + "'>Edit this Page on Github</a>");
-        }
+        var ghEditHref = ghRelHref + relGHPage;
+        editThisPageElement.append("<a href='" + ghEditHref + "'>Edit this Page on Github</a>");
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/shiro-site/blob/06f53437/authentication-features.md
----------------------------------------------------------------------
diff --git a/authentication-features.md b/authentication-features.md
index ffe691f..f98442e 100644
--- a/authentication-features.md
+++ b/authentication-features.md
@@ -8,31 +8,6 @@ The Shiro framework is designed to make authentication as clean and intuitive as
 
 ## Features
 
-<table align="right" width="275" style="margin-left: 20px; margin-bottom: 20px; border-style: solid; border-width: 2px; border-color: navy" cellpadding="10px">
-
-<tr>
-<td>
-<div id="border">
-  <h2>Related Content</h2>
-	
-  <h3><a href="java-authentication-guide.html">Java Authentication Guide</a></h3>
-  <p>Learn how Authentication in Java is performed in Shiro. </br><span style="font-size:11"><a href="java-authentication-guide.html">Read More &gt;&gt;</a></span></p>	
-	
-  <h3><a href="authentication.html">Authentication Docs</a></h3>
-  <p>Full documentation on Shiro's Authentication functionality. </br><span style="font-size:11"><a href="authentication.html">Read More &gt;&gt;</a></span></p>
-	
-  <h3><a href="get-started.html">Getting Started</a></h3>
-  <p>Resources, guides and tutorials for new Shiro users. </br><span style="font-size:11"><a href="get-started.html">Read More &gt;&gt;</a></span></p>	
-	
-  <h3><a href="webapp-tutorial.html">Web App Tutorial</a></h3>
-  <p>Step-by-step tutorial for securing a web application with Shiro. </br><span style="font-size:11"><a href="webapp-tutorial.html">Read More &gt;&gt;</a></span></p>
-	
-</div>
-</td>
-</tr>
-</table>
-
-
 *   **Subject Based** - Almost everything you do in Shiro is based on the currently executing user, called a Subject.  And you can easily retrieve the Subject anywhere in your code.  This makes it easier for you to understand and work with Shiro in your applications.
 
 *   **Single Method call** - The authentication process is a single method call.  Needing only one method call keeps the API simple and your application code clean, saving you time and effort.

http://git-wip-us.apache.org/repos/asf/shiro-site/blob/06f53437/authorization-features.md
----------------------------------------------------------------------
diff --git a/authorization-features.md b/authorization-features.md
index 242a0a6..ef2f44a 100644
--- a/authorization-features.md
+++ b/authorization-features.md
@@ -8,30 +8,6 @@ Authorization is a critical element of any application but it can quickly become
 
 ## Features
 
-<table align="right" width="275" style="margin-left: 20px; margin-bottom: 20px; border-style: solid; border-width: 2px; border-color: navy" cellpadding="10px">
-
-<tr>
-<td>
-<div id="border">
-  <h2>Related Content</h2>
- 
-  <h3><a href="java-authorization-guide.html">Java Authorization Guide</a></h3>
-  <p>Learn how Shiro handles access control in Java. </br><span style="font-size:11"><a href="java-authorization-guide.html">Read More &gt;&gt;</a></span></p>	
-	
-  <h3><a href="authorization.html">Authorization Docs</a></h3>
-  <p>Full documentation on Apache Shiro's Authorization functionality. </br><span style="font-size:11"><a href="authorization.html">Read More &gt;&gt;</a></span></p>
-  
-	<h3><a href="get-started.html">Getting Started</a></h3>
-  <p>Resources, guides and tutorials for new Shiro users. </br><span style="font-size:11"><a href="get-started.html">Read More &gt;&gt;</a></span></p>	
-
-	<h3><a href="webapp-tutorial.html">Web App Tutorial</a></h3>
-  <p>Step-by-step tutorial for securing a web application with Shiro. </br><span style="font-size:11"><a href="webapp-tutorial.html">Read More &gt;&gt;</a></span></p>
-	
-</div>
-</td>
-</tr>
-</table>
-
 *   **Subject-based** - Almost everything you do in Shiro is based on the currently executing user, called a Subject.  And you can easily access the subject retrieve the Subject and checks its roles, permissions, or other relevant attributes anywhere in your code.  This makes it easier for you to understand and work with Shiro in your applications.
 
 *   **Checks based on roles or permissions** - Since the complexity of authorization differs greatly between applications, Shiro is designed to be flexible, supporting both role-based security and permission-based security based on your projects needs.

http://git-wip-us.apache.org/repos/asf/shiro-site/blob/06f53437/cas.md.vtl
----------------------------------------------------------------------
diff --git a/cas.md.vtl b/cas.md.vtl
index 070139b..18ad339 100644
--- a/cas.md.vtl
+++ b/cas.md.vtl
@@ -4,16 +4,6 @@ Integrating Apache Shiro with CAS SSO server
 
 #warning('NOTE:', 'Shiro-CAS support is deprecated, support has been moved to the Apache Shiro based <a href="https://github.com/bujiio/buji-pac4j">buji-pac4j</a> project.')
 
-<table align="right" width="275" style="margin-left: 20px; margin-bottom: 20px; border-style: solid; border-width: 2px; border-color: navy" cellpadding="10px"><tbody><tr><td>
-<div id="border">
-	
-  <h2>Related Content</h2>
-  <h3><a href="web-features.html">Web Apps with Shiro</a></h3>
-  <p>Learn more about integrating Shiro into web applications. <br><span style="font-size:11"><a href="web-features.html">Read More &gt;&gt;</a></span></p>
-	
-</div>
-</td></tr></tbody></table>
-
 The _shiro-cas_ module is made to protect a web application with a [Jasig CAS](https://wiki.jasig.org/display/CAS/Home) SSO server. It enables a Shiro-enabled application to be a CAS client.
 
 <a name="CAS-BasicunderstandingoftheCASprotocol"></a>

http://git-wip-us.apache.org/repos/asf/shiro-site/blob/06f53437/config.scms.groovy
----------------------------------------------------------------------
diff --git a/config.scms.groovy b/config.scms.groovy
index 2b344f2..48ddbc8 100644
--- a/config.scms.groovy
+++ b/config.scms.groovy
@@ -8,37 +8,242 @@ scms {
     //    year = Calendar.getInstance.get(Calendar.YEAR)
     //}
 
+    // [title: 'title', href: 'href', brief: 'brief'],
+
+
+
+    gettingStartedLink = [title: 'Getting Started', href: 'get-started.html', brief: 'Resources, guides and tutorials for new Shiro users.']
+    tenMinuiteTutorialLink = [title: '10-Minute Shiro Tutorial', href: '10-minute-tutorial.html', brief: 'Try Apache Shiro for yourself in under 10 minutes.']
+    webAppTutorialLink = [title: 'Web App Tutorial', href: 'webapp-tutorial.html', brief: 'Step-by-step tutorial for securing a web application with Shiro.']
+    authcGuideLink = [title: 'Java Authentication Guide', href: 'java-authentication-guide.html', brief: 'Learn how Authentication in Java is performed in Shiro.']
+    authzGuideLink = [title: 'Java Authorization Guide', href: 'java-authorization-guide.html', brief: 'Learn how Shiro handles access control in Java.']
+    webLink = [title: 'Web Apps with Shiro', href: 'web.html', brief: 'Detailed support for integrating Shiro into web applications.']
+    webFeaturesLink = [title: 'Web Apps with Shiro', href: 'web-features.html', brief: 'Learn more about integrating Shiro into web applications.']
+    authzDocs = [title: 'Authorization Docs', href: 'authorization.html', brief: 'Full documentation on Apache Shiro\'s Authorization functionality.']
+    authcDocs = [title: 'Authentication Docs', href: 'authentication.html', brief: 'Full documentation on Shiro\'s Authentication functionality.']
+
+
+
+    authcGuideRelatedLinks = [
+            [title: 'Authentication Features', href: 'authentication-features.html', brief: 'Quick overview of easy, subject-based authentication in Shiro.'],
+            authcDocs,
+            tenMinuiteTutorialLink,
+            webAppTutorialLink
+    ]
+
+    authcFeaturesRelatedLinks = [
+            authcGuideLink,
+            authcDocs,
+            gettingStartedLink,
+            webAppTutorialLink
+    ]
+
+
+    authzFeaturesRelatedLinks = [
+            authzGuideLink,
+            authzDocs,
+            gettingStartedLink,
+            webAppTutorialLink
+    ]
+
+    casRelatedLinks = [
+            webFeaturesLink
+    ]
+
+    authzGuideRelatedLinks = [
+            [title: 'Authorization Features', href: 'authorization-features.html', brief: 'Quick overview of permissions, roles, and users in Shiro.'],
+            [title: 'Authorization Docs', href: 'authorization.html', brief: 'Full documentation on Apache Shiro\'s Authorization functionality.'],
+            gettingStartedLink,
+            tenMinuiteTutorialLink,
+            webAppTutorialLink
+    ]
+
+    permissionsRelatedLinks = [
+            authzGuideLink,
+            webAppTutorialLink,
+            gettingStartedLink,
+            tenMinuiteTutorialLink
+    ]
+    sessionManagementRelatedLinks = [
+            gettingStartedLink,
+            tenMinuiteTutorialLink,
+            webAppTutorialLink,
+            authcGuideLink,
+            authzGuideLink
+    ]
+
+    springRelatedLinks = [
+            webLink,
+            webAppTutorialLink
+    ]
+
+    tutorialRelatedLinks = [
+            gettingStartedLink,
+            tenMinuiteTutorialLink,
+            webAppTutorialLink,
+    ]
+
+    webFeaturesRelatedLinks = [
+            webAppTutorialLink,
+            webLink
+    ]
+
+    webRelatedLinks = [
+            webFeaturesLink,
+            webAppTutorialLink,
+            [title: 'Session Management', href: 'session-management-features.html', brief: 'Shiro enables sessions for any application environment. Learn more!'],
+            [title: 'Permissions', href: 'permissions.html', brief: 'Learn more about Shiro\'s powerful and intuitive permission syntax.'],
+            authcGuideLink,
+            authzGuideLink
+    ]
+
     patterns {
 
-        'static/**/*.html' {
-            template = 'templates/none.vtl'
+        '**/web.md.vtl' {
+            template = 'templates/default.vtl'
+            model {
+                //the above template uses the year for a copyright notice:
+                year = Calendar.getInstance().get(Calendar.YEAR)
+                layout = 'templates/layouts/related.vtl'
+                relatedLinks = webRelatedLinks
+                topSpacing = '60px'
+            }
         }
 
-        '**/*.html' {
+        '**/web-features.md' {
             template = 'templates/default.vtl'
             model {
                 //the above template uses the year for a copyright notice:
                 year = Calendar.getInstance().get(Calendar.YEAR)
+                layout = 'templates/layouts/related.vtl'
+                relatedLinks = webFeaturesRelatedLinks
+
             }
         }
 
-        '**/*.md' {
+        '**/session-management.md.vtl' {
             template = 'templates/default.vtl'
             model {
                 //the above template uses the year for a copyright notice:
                 year = Calendar.getInstance().get(Calendar.YEAR)
+                layout = 'templates/layouts/related.vtl'
+                relatedLinks = sessionManagementRelatedLinks
+                topSpacing = '60px'
+
             }
         }
 
-        '**/*.vtl' {
+        '**/tutorial.md.vtl' {
+            template = 'templates/default.vtl'
+            model {
+                //the above template uses the year for a copyright notice:
+                year = Calendar.getInstance().get(Calendar.YEAR)
+                layout = 'templates/layouts/related.vtl'
+                relatedLinks = tutorialRelatedLinks
+                topSpacing = '60px'
+
+            }
+        }
+
+        '**/spring.md' {
             template = 'templates/default.vtl'
             model {
                 //the above template uses the year for a copyright notice:
                 year = Calendar.getInstance().get(Calendar.YEAR)
+                layout = 'templates/layouts/related.vtl'
+                relatedLinks = springRelatedLinks
+
+            }
+        }
+
+        '**/permissions.md' {
+            template = 'templates/default.vtl'
+            model {
+                //the above template uses the year for a copyright notice:
+                year = Calendar.getInstance().get(Calendar.YEAR)
+                layout = 'templates/layouts/related.vtl'
+                relatedLinks = permissionsRelatedLinks
+                topSpacing = '60px'
+
+            }
+        }
+
+        '**/java-authentication-guide.md.vtl' {
+            template = 'templates/default.vtl'
+            model {
+                //the above template uses the year for a copyright notice:
+                year = Calendar.getInstance().get(Calendar.YEAR)
+                layout = 'templates/layouts/related.vtl'
+                relatedLinks = authcGuideRelatedLinks
+
             }
         }
 
-        '**/*.md.vtl' {
+        '**/java-authorization-guide.md.vtl' {
+            template = 'templates/default.vtl'
+            model {
+                //the above template uses the year for a copyright notice:
+                year = Calendar.getInstance().get(Calendar.YEAR)
+                layout = 'templates/layouts/related.vtl'
+                relatedLinks = authzGuideRelatedLinks
+
+            }
+        }
+
+        '**/authentication-features.md' {
+            template = 'templates/default.vtl'
+            model {
+                //the above template uses the year for a copyright notice:
+                year = Calendar.getInstance().get(Calendar.YEAR)
+                layout = 'templates/layouts/related.vtl'
+                relatedLinks = authzGuideRelatedLinks
+
+            }
+        }
+
+        '**/authorization-features.md' {
+            template = 'templates/default.vtl'
+            model {
+                //the above template uses the year for a copyright notice:
+                year = Calendar.getInstance().get(Calendar.YEAR)
+                layout = 'templates/layouts/related.vtl'
+                relatedLinks = authcFeaturesRelatedLinks
+
+            }
+        }
+
+        '**/cas.md.vtl' {
+            template = 'templates/default.vtl'
+            model {
+                //the above template uses the year for a copyright notice:
+                year = Calendar.getInstance().get(Calendar.YEAR)
+                layout = 'templates/layouts/related.vtl'
+                relatedLinks = casRelatedLinks
+
+            }
+        }
+
+        'static/**/*.html' {
+            template = 'templates/none.vtl'
+        }
+
+        '**/*.html' {
+            template = 'templates/default.vtl'
+            model {
+                //the above template uses the year for a copyright notice:
+                year = Calendar.getInstance().get(Calendar.YEAR)
+            }
+        }
+
+        '**/*.md' {
+            template = 'templates/default.vtl'
+            model {
+                //the above template uses the year for a copyright notice:
+                year = Calendar.getInstance().get(Calendar.YEAR)
+            }
+        }
+
+        '**/*.vtl' {
             template = 'templates/default.vtl'
             model {
                 //the above template uses the year for a copyright notice:

http://git-wip-us.apache.org/repos/asf/shiro-site/blob/06f53437/java-authentication-guide.md.vtl
----------------------------------------------------------------------
diff --git a/java-authentication-guide.md.vtl b/java-authentication-guide.md.vtl
index cbbde6f..056f784 100644
--- a/java-authentication-guide.md.vtl
+++ b/java-authentication-guide.md.vtl
@@ -10,25 +10,6 @@ The goal of this guide is to walk you through how Authentication in Java is perf
 Terminology you'll need
 -----------------------
 
-<table align="right" width="275" style="margin-left: 20px; margin-bottom: 20px; border-style: solid; border-width: 2px; border-color: navy" cellpadding="10px"><tr><td>
-<div id="border">
-  <h2>Related Content</h2>
-
-  <h3><a href="authentication-features.html">Authentication Features</a></h3>
-  <p>Quick overview of easy, subject-based authentication in Shiro. </br><span style="font-size:11"><a href="authentication-features.html">Read More &gt;&gt;</a></span></p>
-
-  <h3><a href="authentication.html">Authentication Docs</a></h3>
-  <p>Full documentation on Apache Shiro's Authentication functionality. </br><span style="font-size:11"><a href="authentication.html">Read More &gt;&gt;</a></span></p>
-
-	<h3><a href="10-minute-tutorial.html">10-Minute Shiro Tutorial</a></h3>
-  <p>Try Apache Shiro for yourself in under 10 minutes. </br><span style="font-size:11"><a href="10-minute-tutorial.html">Read More &gt;&gt;</a></span></p>
-
-	<h3><a href="webapp-tutorial.html">Web App Tutorial</a></h3>
-  <p>Step-by-step tutorial for securing a web application with Shiro. </br><span style="font-size:11"><a href="webapp-tutorial.html">Read More &gt;&gt;</a></span></p>
-
-</div>
-</td></tr></table>
-
 *   **Subject** - Security specific user 'view' of an application user. It can be a human being, a third-party process, a server connecting to you application application, or even a cron job. Basically, it is anything or anyone communicating with your application.
 
 *   **Principals** - A subjects identifying attributes. First name, last name, social security number, username

http://git-wip-us.apache.org/repos/asf/shiro-site/blob/06f53437/java-authorization-guide.md.vtl
----------------------------------------------------------------------
diff --git a/java-authorization-guide.md.vtl b/java-authorization-guide.md.vtl
index 0ee581d..0794b4c 100644
--- a/java-authorization-guide.md.vtl
+++ b/java-authorization-guide.md.vtl
@@ -15,28 +15,6 @@ Authorization has three core elements that we reference quite a bit in Shiro-- p
 <a name="JavaAuthorizationGuide-PermissionsDefined"></a>
 #[[###Permissions Defined]]#
 
-<table align="right" width="275" style="margin-left: 20px; margin-bottom: 20px; border-style: solid; border-width: 2px; border-color: navy" cellpadding="10px"><tr><td>
-<div id="border">
-  <h2>Related Content</h2>
-	
-  <h3><a href="authorization-features.html">Authorization Features</a></h3>
-  <p>Quick overview of permissions, roles, and users in Shiro. </br><span style="font-size:11"><a href="authorization-features.html">Read More &gt;&gt;</a></span></p>
-	
-  <h3><a href="authorization.html">Authorization Docs</a></h3>
-  <p>Full documentation on Apache Shiro's Authorization functionality. </br><span style="font-size:11"><a href="authorization.html">Read More &gt;&gt;</a></span></p>
-	
-  <h3><a href="get-started.html">Getting Started</a></h3>
-  <p>Resources, guides and tutorials for new Shiro users. </br><span style="font-size:11"><a href="get-started.html">Read More &gt;&gt;</a></span></p>	
-	
-  <h3><a href="10-minute-tutorial.html">10-Minute Shiro Tutorial</a></h3>
-  <p>Try Apache Shiro for yourself in under 10 minutes. </br><span style="font-size:11"><a href="10-minute-tutorial.html">Read More &gt;&gt;</a></span></p>
-	
-  <h3><a href="webapp-tutorial.html">Web App Tutorial</a></h3>
-  <p>Step-by-step tutorial for securing a web application with Shiro. </br><span style="font-size:11"><a href="webapp-tutorial.html">Read More &gt;&gt;</a></span></p>
-	
-</div>
-</td></tr></table>
-
 Permissions are the most atomic level of a security policy and they are statements of functionality. Permissions represent what can be done in your application. A well formed permission describes a resource types and what actions are possible when you interact with those resources. Can you _open_ a _door_? Can you _read_ a _file_? Can you _delete_ a _customer record_? Can you _push_ a _button_?
 
 Common actions for data-related resources are create, read, update, and delete, commonly referred to as CRUD.

http://git-wip-us.apache.org/repos/asf/shiro-site/blob/06f53437/mailing-lists.md
----------------------------------------------------------------------
diff --git a/mailing-lists.md b/mailing-lists.md
deleted file mode 100644
index 9b7b3f8..0000000
--- a/mailing-lists.md
+++ /dev/null
@@ -1,57 +0,0 @@
-<a name="MailingLists-ApacheShiroMailingLists"></a>
-#Apache Shiro Mailing Lists
-
-<!-- Markdown tables need some style before switchig
-| List Name            | List Address                      | Subscribe                                              | Unsubscribe                                                | ASF Archive                                                            | Nabble (Online Forums)                                                   |
-|----------------------|-----------------------------------|--------------------------------------------------------|------------------------------------------------------------|------------------------------------------------------------------------|--------------------------------------------------------------------------|
-| Shiro User List      | [mailto:user@shiro.apache.org]    | [Subscribe](mailto:user-subscribe@shiro.apache.org)    | [Unsubscribe](mailto:user-unsubscribe@shiro.apache.org)    | [ASF Archive](http://mail-archives.apache.org/mod_mbox/shiro-user/)    | [Nabble Forum and Archive](http://shiro-user.582556.n2.nabble.com/)      |
-| Shiro Developer List | [mailto:dev@shiro.apache.org]     | [Subscribe](mailto:dev-subscribe@shiro.apache.org)     | [Unsubscribe](mailto:dev-unsubscribe@shiro.apache.org)     | [ASF Archive](http://mail-archives.apache.org/mod_mbox/shiro-dev)      | [Nabble Forum and Archive](http://shiro-developer.582600.n2.nabble.com/) |
-| Shiro SCM List       | [mailto:commits@shiro.apache.org] | [Subscribe](mailto:commits-subscribe@shiro.apache.org) | [Unsubscribe](mailto:commits-unsubscribe@shiro.apache.org) | [ASF Archive](http://mail-archives.apache.org/mod_mbox/shiro-commits/) |                                                                          |
--->
-
-<div class="table-wrap">
-    <table class="confluenceTable">
-        <tbody>
-        <tr>
-            <th colspan="1" rowspan="1" class="confluenceTh"> List Name</th>
-            <th colspan="1" rowspan="1" class="confluenceTh"> List Address</th>
-            <th colspan="1" rowspan="1" class="confluenceTh"> Subscribe</th>
-            <th colspan="1" rowspan="1" class="confluenceTh"> Unsubscribe</th>
-            <th colspan="1" rowspan="1" class="confluenceTh"> ASF Archive</th>
-            <th colspan="1" rowspan="1" class="confluenceTh"> Nabble (Online Forums)</th>
-        </tr>
-        <tr>
-            <td colspan="1" rowspan="1" class="confluenceTd"> Shiro User List</td>
-            <td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="mailto:user@shiro.apache.org" rel="nofollow">user@shiro.apache.org</a>
-            </td>
-            <td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="mailto:user-subscribe@shiro.apache.org" rel="nofollow">Subscribe</a></td>
-            <td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="mailto:user-unsubscribe@shiro.apache.org" rel="nofollow">Unsubscribe</a></td>
-            <td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="http://mail-archives.apache.org/mod_mbox/shiro-user/">ASF Archive</a></td>
-            <td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="http://shiro-user.582556.n2.nabble.com/" rel="nofollow">Nabble Forum and Archive</a></td>
-        </tr>
-        <tr>
-            <td colspan="1" rowspan="1" class="confluenceTd"> Shiro Developer List</td>
-            <td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="mailto:dev@shiro.apache.org" rel="nofollow">dev@shiro.apache.org</a></td>
-            <td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="mailto:dev-subscribe@shiro.apache.org" rel="nofollow">Subscribe</a></td>
-            <td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="mailto:dev-unsubscribe@shiro.apache.org" rel="nofollow">Unsubscribe</a></td>
-            <td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="http://mail-archives.apache.org/mod_mbox/shiro-dev/">ASF Archive</a></td>
-            <td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="http://shiro-developer.582600.n2.nabble.com/" rel="nofollow">Nabble Forum and Archive</a></td>
-        </tr>
-        <tr>
-            <td colspan="1" rowspan="1" class="confluenceTd"> Shiro SCM List</td>
-            <td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="mailto:commits@shiro.apache.org" rel="nofollow">commits@shiro.apache.org</a> </td>
-            <td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="mailto:commits-subscribe@shiro.apache.org" rel="nofollow">Subscribe</a></td>
-            <td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="mailto:commits-unsubscribe@shiro.apache.org" rel="nofollow">Unsubscribe</a></td>
-            <td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="http://mail-archives.apache.org/mod_mbox/shiro-commits/">ASF Archive</a></td>
-            <td colspan="1" rowspan="1" class="confluenceTd"></td>
-        </tr>
-        </tbody>
-    </table>
-</div>
-
-
-<a name="MailingLists-DiscussionForums"></a>
-###Discussion Forums
-
-If you prefer you could use our discussion [Forums](forums.html "Forums") which are sync'd with the above mailing lists.
-<input type="hidden" id="ghEditPage" value="mailing-lists.md"></input>

http://git-wip-us.apache.org/repos/asf/shiro-site/blob/06f53437/mailing-lists.md.vtl
----------------------------------------------------------------------
diff --git a/mailing-lists.md.vtl b/mailing-lists.md.vtl
new file mode 100644
index 0000000..2d0c604
--- /dev/null
+++ b/mailing-lists.md.vtl
@@ -0,0 +1,16 @@
+#mdStyle()
+
+<a name="MailingLists-ApacheShiroMailingLists"></a>
+#Apache Shiro Mailing Lists
+
+| List Name            | List Address                                                | Subscribe                                              | Unsubscribe                                                | ASF Archive                                                            | Nabble (Online Forums)                                                   |
+|----------------------|-------------------------------------------------------------|--------------------------------------------------------|------------------------------------------------------------|------------------------------------------------------------------------|--------------------------------------------------------------------------|
+| Shiro User List      | [user@shiro.apache.org](mailto:user@shiro.apache.org)       | [Subscribe](mailto:user-subscribe@shiro.apache.org)    | [Unsubscribe](mailto:user-unsubscribe@shiro.apache.org)    | [ASF Archive](http://mail-archives.apache.org/mod_mbox/shiro-user/)    | [Nabble Forum and Archive](http://shiro-user.582556.n2.nabble.com/)      |
+| Shiro Developer List | [dev@shiro.apache.org](mailto:dev@shiro.apache.org)         | [Subscribe](mailto:dev-subscribe@shiro.apache.org)     | [Unsubscribe](mailto:dev-unsubscribe@shiro.apache.org)     | [ASF Archive](http://mail-archives.apache.org/mod_mbox/shiro-dev/)     | [Nabble Forum and Archive](http://shiro-developer.582600.n2.nabble.com/) |
+| Shiro SCM List       | [commits@shiro.apache.org](mailto:commits@shiro.apache.org) | [Subscribe](mailto:commits-subscribe@shiro.apache.org) | [Unsubscribe](mailto:commits-unsubscribe@shiro.apache.org) | [ASF Archive](http://mail-archives.apache.org/mod_mbox/shiro-commits/) |                                                                          |
+
+<a name="MailingLists-DiscussionForums"></a>
+###Discussion Forums
+
+If you prefer you could use our discussion [Forums](forums.html "Forums") which are sync'd with the above mailing lists.
+<input type="hidden" id="ghEditPage" value="mailing-lists.md"></input>

http://git-wip-us.apache.org/repos/asf/shiro-site/blob/06f53437/permissions.md
----------------------------------------------------------------------
diff --git a/permissions.md b/permissions.md
index 304d2ea..2db1534 100644
--- a/permissions.md
+++ b/permissions.md
@@ -1,26 +1,5 @@
 # <a name="Permissions-UnderstandingPermissionsinApacheShiro"></a>Understanding Permissions in Apache Shiro
 
-<table align="right" width="275" style="margin-left: 20px; margin-bottom: 20px; border-style: solid; border-width: 2px; border-color: navy" cellpadding="10px"><tbody><tr><td>
-
-<div id="border">
-    <h2>Related Content</h2>
-
-    <h3><a href="java-authorization-guide.html">Java Authorization Guide</a></h3>
-    <p>Learn how Shiro handles access control in Java. <br><span style="font-size:11"><a href="java-authorization-guide.html">Read More &gt;&gt;</a></span></p>
-
-    <h3><a href="webapp-tutorial.html">Web App Tutorial</a></h3>
-    <p>Step-by-step tutorial for securing a web application with Shiro. <br><span style="font-size:11"><a href="webapp-tutorial.html">Read More &gt;&gt;</a></span></p>
-
-    <h3><a href="get-started.html">Getting Started</a></h3>
-    <p>Resources, guides and tutorials for new Shiro users. <br><span style="font-size:11"><a href="get-started.html">Read More &gt;&gt;</a></span></p>
-
-    <h3><a href="10-minute-tutorial.html">10-Minute Shiro Tutorial</a></h3>
-    <p>Try Apache Shiro for yourself in under 10 minutes. <br><span style="font-size:11"><a href="10-minute-tutorial.html">Read More &gt;&gt;</a></span></p>
-
-</div>
-
-</td></tr></tbody></table>
-
 Shiro defines a Permission as a statement that defines an explicit behavior or action. It is a statement of raw functionality in an application and nothing more. Permissions are the lowest-level constructs in security polices, and they explicitly define only "what" the application can do.
 
 They do _not_ at all describe "who" is able to perform the action(s).

http://git-wip-us.apache.org/repos/asf/shiro-site/blob/06f53437/session-management.md.vtl
----------------------------------------------------------------------
diff --git a/session-management.md.vtl b/session-management.md.vtl
index 9c22d97..1594dbe 100644
--- a/session-management.md.vtl
+++ b/session-management.md.vtl
@@ -1,33 +1,6 @@
 <a name="SessionManagement-SessionManagement"></a>
 #[[#Session Management]]#
 
-<table align="right" width="275" style="margin-left: 20px; margin-bottom: 20px; border-style: solid; border-width: 2px; border-color: navy" cellpadding="10px">
-
-<tr>
-<td>
-<div id="border">
-  <h2>Related Content</h2>
-	
-  <h3><a href="get-started.html">Getting Started</a></h3>
-  <p>Resources, guides and tutorials for new Shiro users. </br><span style="font-size:11"><a href="get-started.html">Read More &gt;&gt;</a></span></p>	
-	
-  <h3><a href="10-minute-tutorial.html">10-Minute Shiro Tutorial</a></h3>
-  <p>Try Apache Shiro for yourself in under 10 minutes. </br><span style="font-size:11"><a href="10-minute-tutorial.html">Read More &gt;&gt;</a></span></p>
-	
-  <h3><a href="webapp-tutorial.html">Web App Tutorial</a></h3>
-  <p>Step-by-step tutorial for securing a web application with Shiro. </br><span style="font-size:11"><a href="webapp-tutorial.html">Read More &gt;&gt;</a></span></p>
-	
-  <h3><a href="java-authentication-guide.html">Java Authentication Guide</a></h3>
-  <p>Learn how Authentication in Java is performed in Shiro. </br><span style="font-size:11"><a href="java-authentication-guide.html">Read More &gt;&gt;</a></span></p>	
-	
-  <h3><a href="java-authorization-guide.html">Java Authorization Guide</a></h3>
-  <p>Learn how Shiro handles access control in Java. </br><span style="font-size:11"><a href="java-authorization-guide.html">Read More &gt;&gt;</a></span></p>	
-
-</div>
-</td>
-</tr>
-</table>
-
 *   [Using Sessions](#SessionManagement-UsingSessions)
 *   [The SessionManager](#SessionManagement-TheSessionManager)
 

http://git-wip-us.apache.org/repos/asf/shiro-site/blob/06f53437/spring.md
----------------------------------------------------------------------
diff --git a/spring.md b/spring.md
index 2e97ad6..7f673ff 100644
--- a/spring.md
+++ b/spring.md
@@ -1,18 +1,6 @@
 <a name="Spring-IntegratingApacheShirointoSpringbasedApplications"></a>
 #Integrating Apache Shiro into Spring-based Applications
 
-<table align="right" width="275" style="margin-left: 20px; margin-bottom: 20px; border-style: solid; border-width: 2px; border-color: navy" cellpadding="10px"><tbody><tr><td>
-<div id="border">
-        
-  <h3><a href="web.html">Web Apps with Shiro</a></h3>
-  <p>Detailed support for integrating Shiro into web applications. <br><span style="font-size:11"><a href="web.html">Read More &gt;&gt;</a></span></p>
-    
-  <h3><a href="webapp-tutorial.html">Web App Tutorial</a></h3>
-  <p>Step-by-step tutorial for securing a web application with Shiro. <br><span style="font-size:11"><a href="webapp-tutorial.html">Read More &gt;&gt;</a></span></p>
-
-</div>
-</td></tr></tbody></table>
-
 This page covers the ways to integrate Shiro into [Spring](http://spring.io)-based applications.
 
 Shiro's JavaBeans compatibility makes it perfectly suited to be configured via Spring XML or other Spring-based configuration mechanisms. Shiro applications need an application singleton `SecurityManager` instance. Note that this does not have to be a _static_ singleton, but there should only be a single instance used by the application, whether its a static singleton or not.

http://git-wip-us.apache.org/repos/asf/shiro-site/blob/06f53437/templates/default.vtl
----------------------------------------------------------------------
diff --git a/templates/default.vtl b/templates/default.vtl
index bcec194..645d18a 100644
--- a/templates/default.vtl
+++ b/templates/default.vtl
@@ -94,7 +94,11 @@
 
         <div id="content">
 
-            $content
+            #if ($layout)
+                #parse($layout)
+            #else
+                $content
+            #end
 
         </div>
 

http://git-wip-us.apache.org/repos/asf/shiro-site/blob/06f53437/templates/layouts/related.vtl
----------------------------------------------------------------------
diff --git a/templates/layouts/related.vtl b/templates/layouts/related.vtl
new file mode 100644
index 0000000..2e05bc6
--- /dev/null
+++ b/templates/layouts/related.vtl
@@ -0,0 +1,19 @@
+
+#if (!$topSpacing)
+    #set($topSpacing = '200px')
+#end
+
+<!-- spacer allows enough room to display the header -->
+<div id="spacer" style="width: 0; height: $topSpacing; float: left"></div>
+
+<!-- related content (if any) -->
+  #if ($relatedLinks)
+  <div style="border-style: solid; border-width: 2px; border-color: navy; padding: 5px; margin-left: 20px; margin-bottom: 20px; width:275px; float: right; clear: both; ">
+      <h2>Related Content</h2>
+        #foreach( $item in $relatedLinks )
+            <h3><a href="$item.href">$item.title</a></h3>
+            <p>$item.brief</br><span style="font-size:11"><a href="$item.href">Read More &gt;&gt;</a></span></p>
+        #end
+  </div>
+  #end
+$content
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/shiro-site/blob/06f53437/tutorial.md.vtl
----------------------------------------------------------------------
diff --git a/tutorial.md.vtl b/tutorial.md.vtl
index bc5e121..2002c73 100644
--- a/tutorial.md.vtl
+++ b/tutorial.md.vtl
@@ -2,22 +2,6 @@
 Apache Shiro Tutorial
 =====================
 
-<table align="right" width="275" style="margin-left: 20px; margin-bottom: 20px; border-style: solid; border-width: 2px; border-color: navy" cellpadding="10px"><tr><td>
-<div id="border">
-  <h2>Related Content</h2>
-	
-  <h3><a href="get-started.html">Getting Started</a></h3>
-  <p>Resources, guides and tutorials for new Shiro users. </br><span style="font-size:11"><a href="get-started.html">Read More &gt;&gt;</a></span></p>	
-	
-	<h3><a href="10-minute-tutorial.html">10-Minute Shiro Tutorial</a></h3>
-  <p>Try Apache Shiro for yourself in under 10 minutes. </br><span style="font-size:11"><a href="10-minute-tutorial.html">Read More &gt;&gt;</a></span></p>
-	
-  <h3><a href="webapp-tutorial.html">Web App Tutorial</a></h3>
-  <p>Step-by-step tutorial for securing a web application with Shiro. </br><span style="font-size:11"><a href="webapp-tutorial.html">Read More &gt;&gt;</a></span></p>
-	
-</div>
-</td></tr></table>
-
 <a name="Tutorial-YourFirstApacheShiroApplication"></a>
 Your First Apache Shiro Application
 -----------------------------------

http://git-wip-us.apache.org/repos/asf/shiro-site/blob/06f53437/web-features.md
----------------------------------------------------------------------
diff --git a/web-features.md b/web-features.md
index 93f1658..1597034 100644
--- a/web-features.md
+++ b/web-features.md
@@ -8,24 +8,6 @@ Although Apache Shiro is designed to be used to secure _any_ JVM-based applicati
 	
 ##Features
 
-<table align="right" width="275" style="margin-left: 15px; margin-bottom: 20px; border-style: solid; border-width: 2px; border-color: navy" cellpadding="10px">
-
-<tr>
-<td>
-<div id="border">
-  <h2>Related Content</h2>
-	
-  <h3><a href="webapp-tutorial.html">Web App Tutorial</a></h3>
-  <p>Step-by-step tutorial for securing a web application with Shiro. </br><span style="font-size:11"><a href="webapp-tutorial.html">Read More &gt;&gt;</a></span></p>
-	
-  <h3><a href="web.html">Web Support Docs</a></h3>
-  <p>Detailed support for integrating Shiro into web applications. </br><span style="font-size:11"><a href="web.html">Read More &gt;&gt;</a></span></p>
-	
-</div>
-</td>
-</tr>
-</table>
-
 * **Simple ShiroFilter web.xml definition** 
 You can enable Shiro for a web application with one simple filter definition in web.xml.
 

http://git-wip-us.apache.org/repos/asf/shiro-site/blob/06f53437/web.md.vtl
----------------------------------------------------------------------
diff --git a/web.md.vtl b/web.md.vtl
index 6b8e3f0..8c4be46 100644
--- a/web.md.vtl
+++ b/web.md.vtl
@@ -4,31 +4,6 @@
 Apache Shiro Web Support
 ========================
 
-<table align="right" width="275" style="margin-left: 20px; margin-bottom: 20px; border-style: solid; border-width: 2px; border-color: navy" cellpadding="10px"><tr><td>
-<div id="border">
-  <h2>Related Content</h2>
-	
-  <h3><a href="web-features.html">Web Apps with Shiro</a></h3>
-  <p>Learn more about integrating Shiro into web applications. </br><span style="font-size:11"><a href="web-features.html">Read More &gt;&gt;</a></span></p>
-	
-  <h3><a href="webapp-tutorial.html">Web App Tutorial</a></h3>
-  <p>Step-by-step tutorial for securing a web application with Shiro. </br><span style="font-size:11"><a href="webapp-tutorial.html">Read More &gt;&gt;</a></span></p>
-	
-  <h3><a href="session-management-features.html">Session Management</a></h3>
-  <p>Shiro enables sessions for any application environment. Learn more! </br><span style="font-size:11"><a href="session-management-features.html">Read More &gt;&gt;</a></span></p>
-	
-  <h3><a href="permissions.html">Permissions</a></h3>
-  <p>Learn more about Shiro's powerful and intuitive permission syntax. </br><span style="font-size:11"><a href="permissions.html">Read More &gt;&gt;</a></span></p>
-	
-  <h3><a href="java-authentication-guide.html">Java Authentication Guide</a></h3>
-  <p>Learn how Authentication in Java is performed in Shiro. </br><span style="font-size:11"><a href="java-authentication-guide.html">Read More &gt;&gt;</a></span></p>	
-	
-  <h3><a href="java-authorization-guide.html">Java Authorization Guide</a></h3>
-  <p>Learn how Shiro handles access control in Java. </br><span style="font-size:11"><a href="java-authorization-guide.html">Read More &gt;&gt;</a></span></p>	
-
-</div>
-</td></tr></table>
-
 *   [Configuration](#Web-Configuration)
 
     *   [`web.xml`](#Web-%7B%7Bweb.xml%7D%7D)