You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by bu...@apache.org on 2014/12/12 10:17:58 UTC

svn commit: r932416 - in /websites/staging/isis/trunk: cgi-bin/ content/ content/components/viewers/wicket/ content/components/viewers/wicket/images/ content/how-tos/

Author: buildbot
Date: Fri Dec 12 09:17:58 2014
New Revision: 932416

Log:
Staging update by buildbot for isis

Added:
    websites/staging/isis/trunk/content/components/viewers/wicket/application-menu-layout.html
    websites/staging/isis/trunk/content/components/viewers/wicket/images/application-menu-dividers.png   (with props)
    websites/staging/isis/trunk/content/components/viewers/wicket/images/application-menu-layout-menus.pdn   (with props)
    websites/staging/isis/trunk/content/components/viewers/wicket/images/application-menu-layout-menus.png   (with props)
    websites/staging/isis/trunk/content/components/viewers/wicket/images/application-menu-tertiary.png   (with props)
Modified:
    websites/staging/isis/trunk/cgi-bin/   (props changed)
    websites/staging/isis/trunk/content/   (props changed)
    websites/staging/isis/trunk/content/components/viewers/wicket/static-layouts.html
    websites/staging/isis/trunk/content/documentation.html
    websites/staging/isis/trunk/content/how-tos/how-to-01-080-How-to-specify-the-order-in-which-properties-or-collections-are-displayed.html
    websites/staging/isis/trunk/content/how-tos/how-to-01-090-How-to-specify-the-order-in-which-actions-appear-on-the-menu.html
    websites/staging/isis/trunk/content/how-tos/how-to-01-140-How-to-specify-names-or-descriptions-for-an-action-parameter.html

Propchange: websites/staging/isis/trunk/cgi-bin/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Fri Dec 12 09:17:58 2014
@@ -1 +1 @@
-1644631
+1644847

Propchange: websites/staging/isis/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Fri Dec 12 09:17:58 2014
@@ -1 +1 @@
-1644631
+1644847

Added: websites/staging/isis/trunk/content/components/viewers/wicket/application-menu-layout.html
==============================================================================
--- websites/staging/isis/trunk/content/components/viewers/wicket/application-menu-layout.html (added)
+++ websites/staging/isis/trunk/content/components/viewers/wicket/application-menu-layout.html Fri Dec 12 09:17:58 2014
@@ -0,0 +1,620 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+
+    <meta charset="utf-8">
+      <title>Application menu layout (1.8.0-SNAPSHOT)
</title>
+    <meta name="description" content="">
+    <meta name="author" content="">
+
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
+    <!--[if lt IE 9]>
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+    <![endif]-->
+
+    
+    <!-- Le styles -->
+    <link href="./../../../bootstrap-3.0.0/css/bootstrap.css" rel="stylesheet">
+    <link href="./../../../prettify.css" rel="stylesheet">
+
+    <style type="text/css">
+        body {
+          padding-top: 60px;
+        }
+        .sprite {
+            display: inline-block;
+            height: 20px;
+            margin: 0 auto 4px;
+            outline: medium none;
+            text-indent: -999em;
+            width: 24px;
+            background-image: url('./../../../images/sprites.png');
+            background-repeat: no-repeat;
+            overflow: hidden;
+            cursor: pointer;
+        }
+        .edit-page {
+            display: inline-block;
+            height: 20px;
+            margin: 0 auto 4px;
+            outline: medium none;
+            text-indent: -999em;
+            width: 24px;
+            background-image: url('./../../../images/edit.png');
+            background-repeat: no-repeat;
+            overflow: hidden;
+            cursor: pointer;
+        }
+        .fb-share {
+            background-position: 0px -40px;
+        }
+        .gp-share {
+            background-position: 0px 0px;
+        }
+        .tw-share {
+            background-position: 0px -80px;
+        }
+        .markdown-content {
+            min-height: 500px;
+        }
+        .book-image img {
+          border: 1px;
+          border-style: solid;
+        }
+        .release-matrix .heading {
+            background-color: #eeeeee;
+        }
+        .release-matrix .new {
+            color: #dd0000;
+            font-weight: bolder;
+        }
+        .stub,.note {
+            position: relative;
+            padding: 7px 15px;
+            margin-bottom: 18px;
+            color: #404040;
+            background-color: #eedc94;
+            background-repeat: repeat-x;
+            background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));
+            background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
+            background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
+            background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));
+            background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
+            background-image: -o-linear-gradient(top, #fceec1, #eedc94);
+            background-image: linear-gradient(top, #fceec1, #eedc94);
+            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);
+            text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+            border-color: #eedc94 #eedc94 #e4c652;
+            border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+            text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+            border-width: 1px;
+            border-style: solid;
+            -webkit-border-radius: 4px;
+            -moz-border-radius: 4px;
+            border-radius: 4px;
+            -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+            -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+        }
+        
+        div.XXXisis-tweak form {
+            margin-top: 6px;
+            margin-bottom: -2px;
+        }
+        
+        div.row div.col-md-12 {
+          border-top: 1px solid #eeeeee;
+       }
+        
+        
+        /* Isis specific stuff */
+
+        div.row div.col-md-12 {
+          margin-top: 20px;
+        }
+
+        .container {
+          width: 940px;
+        }
+
+        .markdown-content .documentation .span-one-third p {
+          margin-bottom: 0px;
+        }
+
+        .container .markdown-content .group,
+        .markdown-content .documentation .group {
+          margin-top: 9px;
+        }
+
+        .container .group h2,
+        .documentation .group h2 {
+          border-bottom: 1px solid #DDD
+        }
+
+        .container h2 a[name],
+        .documentation h2 a[name] {
+            padding-top: 50px;
+            margin-top: -50px;
+        }
+
+        .apacheconeu2014 h2 {
+          margin-top: 80px;
+        }
+        
+        .container h2 a[name],
+        .container h3 a[name],
+        .container h4 a[name],
+        .documentation h2 a[name],
+        .documentation h3 a[name],
+        .documentation h4 a[name] {
+            color: black;
+            display: inline-block; 
+        }
+        .container h2 a[name]:hover,
+        .container h3 a[name]:hover,
+        .container h4 a[name]:hover,
+        .documentation h2 a[name]:hover,
+        .documentation h3 a[name]:hover,
+        .documentation h4 a[name]:hover {
+            text-decoration: none;
+        }
+
+        .documentation h2 a:not([name]),
+        .documentation h3 a:not([name]),
+        .documentation h4 a:not([name]) {
+          /* same as code style */
+          padding: 0 3px 2px;
+          font-family: Monaco, Andale Mono, Courier New, monospace;
+          font-size: 12px;
+          -webkit-border-radius: 3px;
+          -moz-border-radius: 3px;
+          border-radius: 3px;
+          padding: 1px 3px;
+        }
+        
+        .carousel-indicators li {
+          border: 1px solid rgb(192,70,1);
+        }
+
+        .carousel-indicators li.active {
+          background-color: rgb(192,70,1);
+        }
+        
+        .carousel-control .icon-prev,
+        .carousel-control .icon-next {
+          color: rgb(192,70,1);
+          font-size: 60px;
+        }
+        
+        .page-header {
+          margin-top: 0px;
+        }
+
+        .container blockquote p {
+            font-size: small;
+        }
+
+        .container blockquote p:not([author]) {
+            font-style: italic;
+        }
+
+        .container blockquote p {
+            font-size: small;
+            font-style: italic;
+            font-weight: bold;
+        }
+        
+        footer hr {
+            margin-top: 100px;
+        }
+
+        .markdown-content img {
+            margin-top: 10px;
+            margin-bottom: 20px;
+        }
+
+        .markdown-content a img {
+            margin-top: 0px;
+            margin-bottom: 0px;
+        }
+
+        
+        #forkongithub a{
+            display: none;
+            background:#090;
+            color:#fff;
+            text-decoration:none;
+            font-family:arial, sans-serif;
+            text-align:center;
+            font-weight:bold;
+            padding:5px 40px;
+            font-size:1rem;
+            line-height:2rem;
+            position:relative;
+            transition:0.5s;
+        }
+        #forkongithub a:hover{
+            background:#0D0;
+            color:#fff;
+        }
+        #forkongithub a::before,
+        #forkongithub a::after{
+            content:"";width:100%;
+            display:block;
+            position:fixed;
+            top:1px;
+            left:0;
+            height:1px;
+            background:#fff;
+            z-index: 9999;
+        }
+        #forkongithub a::after{
+            bottom:1px;
+            top:auto;
+        }
+        @media screen and (min-width:768px){
+            #forkongithub{
+                position:fixed;
+                display:block;
+                top:0;
+                right:0;
+                width:250px;
+                overflow:hidden;
+                height:250px;
+                z-index: 9999;
+            }
+            #forkongithub a{
+                display:inherit;
+                width:250px;
+                position:fixed;
+                font-size:small;
+                top:40px;
+                right:-60px;
+                transform:rotate(45deg);
+                -webkit-transform:rotate(45deg);
+                -ms-transform:rotate(45deg);
+                box-shadow:4px 4px 10px rgba(0,0,0,0.8);
+            }
+        }        
+    </style>
+
+    <!-- courtesy of http://codepo8.github.io/css-fork-on-github-ribbon/ -->
+    <span id="forkongithub">
+        <a href="https://github.com/apache/isis">Fork me on GitHub</a>
+    </span>
+
+    <script type="text/javascript">
+      function fbshare () {
+          window.open(
+                  "http://www.facebook.com/sharer/sharer.php?u="+document.URL,
+                  'Share on Facebook',
+                  'width=640,height=426');
+      };
+      function gpshare () {
+          window.open(
+                  "https://plus.google.com/share?url="+document.URL,
+                  'Share on Google+',
+                  'width=584,height=385');
+      };
+      function twshare () {
+          window.open(
+                  "https://twitter.com/intent/tweet?url="+document.URL+"&text=Application menu layout (1.8.0-SNAPSHOT)
",
+                  'Share on Twitter',
+                  'width=800,height=526');
+      };
+    </script>
+
+    <!-- Le fav and touch icons -->
+    <link rel="shortcut icon" href="./../../../images/favicon.ico">
+
+    <script src="./../../../javascript/prettify.js" type="text/javascript"></script>
+    
+    <script src="//code.jquery.com/jquery.js"></script>
+    <script src="./../../../javascript/prettyprint.js"></script>
+    <script src="./../../../bootstrap-3.0.0/js/bootstrap.js"></script>
+
+
+    <script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
+    <!--
+    <DISABLEDscript src="./../../../javascript/common.js"></DISABLEDscript>
+    -->
+
+    
+    
+    
+
+    <script>
+    $(function () { prettyPrint() })
+    $().dropdown()
+    </script>
+
+    
+  </head>
+
+  <body>
+
+    <nav class="navbar navbar-fixed-top navbar-inverse" role="navigation">
+      <div class="container">
+        <a class="navbar-brand" href="./../../../index.html">Apache Isis&trade;</a>
+        <ul class="nav navbar-nav">
+
+          <li class="dropdown">
+            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Demos<b class="caret"></b></a>
+            <ul class="dropdown-menu">
+              <li><a href="./../../../intro/elevator-pitch/isis-in-pictures.html">Screenshots</a></li>
+              <li><a href="./../../../intro/tutorials/screencasts.html">Screencasts<img src="./../../../images/tv_show-25.png"></a></li>
+              <li><a href="./../../../intro/powered-by/powered-by.html">Powered by</a></li>
+              <li><a href="http://isisdemo.mmyco.co.uk/" target="_blank">Online Demo</a></li>
+            </ul>
+          </li>
+
+          <li><a href="./../../../documentation.html">Docs</a></li>
+          <li><a href="http://www.isisaddons.org" target="_blank">Add-ons</a></li>
+
+          <li class="dropdown">
+            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Downloads<b class="caret"></b></a>
+            <ul class="dropdown-menu">
+              <li><a href="./../../../intro/getting-started/simpleapp-archetype.html">Isis (Maven archetype)</a></li>
+              <li><a href="./../../../download.html">Isis (downloads)</a></li>
+              <li><a href="http://www.isisaddons.org" target="_blank">Isis Add-ons</a></li>
+            </ul>
+          </li>
+
+          <li class="dropdown">
+            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Help<b class="caret"></b></a>
+            <ul class="dropdown-menu">
+              <li><a href="./../../../support.html">Mailing Lists</a></li>
+              <li><a href="http://isis.markmail.org/search/?q=" target="_blank">ML Archives</a></li>
+              <li><a href="https://issues.apache.org/jira/browse/ISIS" target="_blank">JIRA</a></li>
+              <li><a href="http://stackoverflow.com/questions/tagged/isis" target="_blank">Stack Overflow</a></li>
+              <li><a href="http://github.com/apache/isis" target="_blank">Github mirror</a></li>
+            </ul>
+          </li>
+
+          <li class="dropdown navbar-right">
+            <a href="#" class="dropdown-toggle" data-toggle="dropdown">@ASF<b class="caret"></b></a>
+            <ul class="dropdown-menu">
+              <li>
+                <a href="http://www.apache.org/" target="_blank">Apache Homepage <i class="icon-share-alt"></i></a>
+              </li>
+              <li>
+                <a href="http://www.apache.org/licenses/" target="_blank">Licenses <i class="icon-share-alt"></i></a>
+              </li>
+              <li>
+                <a href="http://www.apache.org/security/" target="_blank">Security <i class="icon-share-alt"></i></a>
+              </li>
+              <li>
+                <a href="http://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship <i class="icon-share-alt"></i></a>
+              </li>
+              <li>
+                <a href="http://www.apache.org/foundation/thanks.html">Thanks <i class="icon-share-alt"></i></a>
+              </li>
+              <li>
+                <a href="./../../../more-thanks.html">More thanks <i class="icon-share-alt"></i></a>
+              </li>
+            </ul>
+          </li>
+      </ul>
+
+        <FORM class="navbar-form navbar-right" id="searchbox_012614087480249044419:dn-q5gtwxya" action="http://www.google.com/cse">
+        <div class="form-group">
+          <input type="hidden" name="cx" value="012614087480249044419:dn-q5gtwxya">
+          <INPUT type="hidden" name="cof" value="FORID:0">
+          <INPUT class="form-control" name="q" type="text" placeholder="Search">
+        </div>
+      </FORM>
+
+
+      </div>
+
+
+  </nav>
+
+    <div class="container">
+      <div class="markdown-content">
+      
+
+<div class="page-header">
+<p><a href="./../../../documentation.html">Docs</a>&nbsp;&raquo&nbsp;<a href="./../../../components/about.html">Components</a>&nbsp;&raquo&nbsp;<a href="./../../../components/viewers/about.html">Viewers</a>&nbsp;&raquo&nbsp;<a href="./../../../components/viewers/wicket/about.html">Wicket</a></p>
+<h1>Application menu layout (1.8.0-SNAPSHOT)
+
+</h1>
+</div>
+
+<p>The actions of domain services are made available as an application menu bar.  By default each domain service
+corresponds to a single menu on this menu bar, with its actions as the drop-down menu items.  This is rarely exactly
+what is required, however.  The <code>@MemberOrder</code> and <code>@DomainServiceLayout</code> annotations can be used to rearrange the
+placement of menu items.</p>
+
+<p>The screenshots below are taken from <a href="http://github.com/estatio/estatio">Estatio</a>, and open source estate management
+application built using Apache Isis.</p>
+
+<h2>@DomainServiceLayout</h2>
+
+<p>Menus for domain services can be placed either on a primary, secondary or tertiary menu bar.</p>
+
+<p><img src="images/application-menu-layout-menus.png" width="800"></img></p>
+
+<p>Within a single top-level menu (eg "Fixed Assets") there can be actions from multiple services.  The Wicket viewer
+automatically adds a divider between each:</p>
+
+<p><img src="images/application-menu-layout-dividers.png" width="400"></img></p>
+
+<p>In the example above the top-level menu combines the actions from the <code>Properties</code>, <code>Units</code> and <code>FixedAssetRegistrations</code>
+services.  The <code>Properties</code> service is annotated:</p>
+
+<pre><code>@DomainServiceLayout(
+        named="Fixed Assets",
+        menuBar = DomainServiceLayout.MenuBar.PRIMARY,
+        menuOrder = "10.1"
+)
+public class Properties ... { ... }
+</code></pre>
+
+<p>while the <code>Units</code> service is annotated:</p>
+
+<pre><code>@DomainServiceLayout(
+        named="Fixed Assets",
+        menuBar = DomainServiceLayout.MenuBar.PRIMARY,
+        menuOrder = "10.2"
+)
+public class Units ... { ... }
+</code></pre>
+
+<p>and similarly <code>FixedAssetRegistrations</code> is annotated:</p>
+
+<pre><code>@DomainServiceLayout(
+        named="Fixed Assets",
+        menuBar = DomainServiceLayout.MenuBar.PRIMARY,
+        menuOrder = "10.3"
+)
+public class FixedAssetRegistrations ... { ... }
+</code></pre>
+
+<p>Note that in all three cases the value of the <code>named</code> attribute and the <code>menuBar</code> attribute is the same: "Fixed Assets"
+and PRIMARY.  This means that all will appear on a "Fixed Assets" menu in the primary menu bar.</p>
+
+<p>Meanwhile the value of <code>menuOrder</code> attribute is significant for two reasons:</p>
+
+<ul>
+<li>first, for these three services on the same ("Fixed Assets") top-level menu, it determines the relative order of their
+sections (<code>Properties</code> first, then <code>Units</code>, then <code>FixedAssetRegistrations</code>)</li>
+<li>second, it determines the placement of the top-level menu itself ("Fixed Assets") with respect to other top-level
+menus on the menu bar.</li>
+</ul>
+
+<p>To illustrate this latter point, the next top-level menu on the menu bar, "Parties", is placed after "Fixed Assets"
+ because the <code>menuOrder</code> of the first of its domain services, namely the <code>Parties</code> service, is higher than that for
+ "Fixed Assets":</p>
+
+<pre><code>@DomainServiceLayout(
+        named="Parties",
+        menuBar = DomainServiceLayout.MenuBar.PRIMARY,
+        menuOrder = "20.1"
+)
+public class Parties ... { ... }
+</code></pre>
+
+<p>Note that only the <code>menuOrder</code> of the <em>first</em> domain service is significant in placing the menus along the menu bar;
+thereafter the purpose of the <code>menuOrder</code> is to order the menu services sections on the menu itself.</p>
+
+<h2>Ordering of a service's actions within a menu</h2>
+
+<p>For a given service, the actions within a section on a menu is determined by the <code>@MemberOrder</code> annotation.  Thus, for
+the <code>Units</code> domain service, its actions are annotated:</p>
+
+<pre><code>public class Units extends EstatioDomainService&lt;Unit&gt; {
+
+    @MemberOrder(sequence = "1")
+    public Unit newUnit( ... ) { ... }
+
+    @MemberOrder(sequence = "2")
+    public List&lt;Unit&gt; findUnits( ... ) { ... }
+
+    @ActionLayout( prototype = true )
+    @MemberOrder(sequence = "99")
+    public List&lt;Unit&gt; allUnits() { ... }
+    ...
+}
+</code></pre>
+
+<p>Note that the last is also a prototype action (meaning it is only displayed in SERVER_PROTOTYPE (=Wicket Development) mode).
+In the UI it is rendered in italics.</p>
+
+<p>(It is possible to override this place of a given action by specifying <code>@MemberOrder(name="...")</code> where the name is
+that of a top-level menu.  Prior to 1.8.0-SNAPSHOT this was the only way of doing things, as of 1.8.0-SNAPSHOT its use
+is not recommended).</p>
+
+<h2>Tertiary menubar</h2>
+
+<p>The tertiary menu bar consists of a single unnamed menu, rendered underneath the user's login, top right.  This is
+intended primarily for actions pertaining to the user themselves, eg their account, profile or settings:</p>
+
+<p><img src="images/application-menu-layout-tertiary.png" width="400"></img></p>
+
+<p>Domain services' actions can be associated with the tertiary menu using the same <code>@DomainServiceLayout</code> annotation.  For
+example, the <code>updateEpochDate(...)</code> and <code>listAllSettings(...)</code> actions come from the following service:</p>
+
+<pre><code>@DomainServiceLayout(
+        menuBar = DomainServiceLayout.MenuBar.TERTIARY,
+        menuOrder = "10.1"
+)
+public class EstatioAdministrationService ... {
+
+    @MemberOrder(sequence = "1")
+    public void updateEpochDate( ... ) { ... }
+
+    @MemberOrder(sequence = "2")
+    public List&lt;ApplicationSetting&gt; listAllSettings() { ... }
+    ...
+}
+</code></pre>
+
+<p>Because the number of items on the tertiary menu is expected to be small and most will pertain to the current user, the
+viewer does <em>not</em> place dividers between actions from different services on the tertiary menu.</p>
+
+<h2>Isis Add-on modules</h2>
+
+<p>Some of the Isis add-ons modules also provide services whose actions appear in top-level menus.</p>
+
+<p>The [security](http://github.com/isisaddons/isis-module-security]'s module places its domain service menus in three
+top-level menus:</p>
+
+<ul>
+<li>its <code>ApplicationUsers</code>, <code>ApplicationRoles</code>, <code>ApplicationPermission</code>, <code>ApplicationFeatureViewModels</code> and
+<code>ApplicationTenancies</code> domain services are all grouped together in a single "Security" top-level menu, on the
+SECONDARY menu bar</li>
+<li>its <code>SecurityModuleAppFixturesService</code> domain service, which allows the security modules' fixture scripts to be run,
+is placed on a "Prototyping" top-level menu, also on the SECONDARY menu bar</li>
+<li>its <code>MeService</code> domain service, which provides the <code>me()</code> action, is placed on the TERTIARY menu bar.</li>
+</ul>
+
+<p>Meanwhile the [devutils](http://github.com/isisaddons/isis-module-devutils] module places its actions - to download layouts and
+so forth - on a "Prototyping" top-level menu, on the SECONDARY menu bar.</p>
+
+<p>Currently there is no facility to alter the placement of these services.  However, their UI can be suppressed either
+using security or (more sophisticatedly) a <a href="../../../more-advanced-topics/vetoing-subscriber.html">vetoing subscriber</a>.</p>
+
+
+
+      </div>
+
+        <div id="edit" class="modal hide fade in" style="xxxdisplay: none; ">
+            <div class="modal-header">
+                <a class="close" data-dismiss="modal">x</a>
+
+                <h3>Thank you for contributing to the documention!</h3>
+            </div>
+            <div class="modal-body">
+                <h4>Any help with the documentation is greatly appreciated.</h4>
+                <p>All edits are reviewed before going live, so feel free to do much more than fix typos or links.  If you see a page that could benefit from an entire rewrite, we'd be thrilled to review it.  Don't be surprised if we like it so much we ask you for help with other pages :)</p>
+                <small>NOTICE: unless indicated otherwise on the pages in question, all editable content available from apache.org is presumed to be licensed under the Apache License (AL) version 2.0 and hence all submissions to apache.org treated as formal Contributions under the license terms.</small>
+                <!--[if gt IE 6]>
+                <h4>Internet Explorer Users</h4>
+                <p>If you are not an Apache committer, click the Yes link and enter a <i>anonymous</i> for the username and leave the password empty</p>
+                <![endif]-->
+
+            </div>
+            <div class="modal-footer">
+                Do you have an Apache ID?
+                <a href="javascript:void(location.href='https://cms.apache.org/redirect?uri='+escape(location.href))" class="btn">Yes</a>
+                <a href="javascript:void(location.href='https://anonymous:@cms.apache.org/redirect?uri='+escape(location.href))" class="btn">No</a>
+            </div>
+        </div>
+        <!--
+        <script src="./../../../javascript/bootstrap-modal.js"></script>
+        -->
+
+      <footer>
+        <hr/>
+        <p>
+        Copyright &copy; 2010~2014 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
+        <br/>
+        Apache Isis, Isis, Apache, the Apache feather logo, and the Apache Isis project logo are trademarks of The Apache Software Foundation.
+        </p>
+      </footer>
+
+    </div> <!-- /container -->
+
+  </body>
+</html>

Added: websites/staging/isis/trunk/content/components/viewers/wicket/images/application-menu-dividers.png
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/isis/trunk/content/components/viewers/wicket/images/application-menu-dividers.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: websites/staging/isis/trunk/content/components/viewers/wicket/images/application-menu-layout-menus.pdn
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/isis/trunk/content/components/viewers/wicket/images/application-menu-layout-menus.pdn
------------------------------------------------------------------------------
    svn:mime-type = image/x-paintnet

Added: websites/staging/isis/trunk/content/components/viewers/wicket/images/application-menu-layout-menus.png
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/isis/trunk/content/components/viewers/wicket/images/application-menu-layout-menus.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: websites/staging/isis/trunk/content/components/viewers/wicket/images/application-menu-tertiary.png
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/isis/trunk/content/components/viewers/wicket/images/application-menu-tertiary.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Modified: websites/staging/isis/trunk/content/components/viewers/wicket/static-layouts.html
==============================================================================
--- websites/staging/isis/trunk/content/components/viewers/wicket/static-layouts.html (original)
+++ websites/staging/isis/trunk/content/components/viewers/wicket/static-layouts.html Fri Dec 12 09:17:58 2014
@@ -568,7 +568,24 @@ public class ToDoItem {
 
 <h2>Other Annotations</h2>
 
-<p>The <a href="../../../reference/recognized-annotations/Named-deprecated.html">@Named</a>, <a href="../../../reference/recognized-annotations/DescribedAs-deprecated.html">@DescribedAs</a>, <a href="../../../reference/recognized-annotations/MultiLine-deprecated.html">@MultiLine</a>, <a href="../../../reference/recognized-annotations/TypicalLength-deprecated.html">@TypicalLength</a>, <a href="../../../reference/recognized-annotations/Render-deprecated.html">@Render</a> and <a href="../../../reference/recognized-annotations/CssClass-deprecated.html">@CssClass</a> annotations are also all hints that can affect the UI.</p>
+<p>As of 1.8.0-SNAPSHOT, all the layout annotations have been consolidated into the various <code>XxxLayout</code> annotations:</p>
+
+<ul>
+<li><a href="../../../reference/recognized-annotations/DomainServiceLayout.html">@DomainServiceLayout</a></li>
+<li><a href="../../../reference/recognized-annotations/DomainObjectLayout.html">@DomainObjectLayout</a></li>
+<li><a href="../../../reference/recognized-annotations/PropertyLayout.html">@PropertyLayout</a></li>
+<li><a href="../../../reference/recognized-annotations/CollectionLayout.html">@CollectionLayout</a></li>
+<li><a href="../../../reference/recognized-annotations/ActionLayout.html">@ActionLayout</a></li>
+<li><a href="../../../reference/recognized-annotations/ParameterLayout.html">@ParameterLayout</a></li>
+</ul>
+
+<p>Prior to 1.8.0-SNAPSHOT a variety of annotations (now deprecated) are available, including:
+<a href="../../../reference/recognized-annotations/Named-deprecated.html">@Named</a>,
+<a href="../../../reference/recognized-annotations/DescribedAs-deprecated.html">@DescribedAs</a>,
+<a href="../../../reference/recognized-annotations/MultiLine-deprecated.html">@MultiLine</a>,
+<a href="../../../reference/recognized-annotations/TypicalLength-deprecated.html">@TypicalLength</a>,
+<a href="../../../reference/recognized-annotations/Render-deprecated.html">@Render</a> and
+<a href="../../../reference/recognized-annotations/CssClass-deprecated.html">@CssClass</a>.</p>
 
 <h2><a name="pros-and-cons">Static vs Dynamic Layouts</a></h2>
 

Modified: websites/staging/isis/trunk/content/documentation.html
==============================================================================
--- websites/staging/isis/trunk/content/documentation.html (original)
+++ websites/staging/isis/trunk/content/documentation.html Fri Dec 12 09:17:58 2014
@@ -568,15 +568,13 @@
 <p>Layout</p>
 
 <ul>
-<li><a href="./how-tos/how-to-01-080-How-to-specify-the-order-in-which-properties-or-collections-are-displayed.html">Ordering prop/colls in the UI</a></li>
-<li><a href="./how-tos/how-to-01-090-How-to-specify-the-order-in-which-actions-appear-on-the-menu.html">Ordering actions in the UI</a></li>
-<li><a href="components/viewers/wicket/static-layouts.html">Static layouts</a></li>
+<li><a href="components/viewers/wicket/static-layouts.html">Layout using annotations</a></li>
 <li><a href="components/viewers/wicket/dynamic-layouts.html">Dynamic layouts</a> <a href="components/viewers/wicket/dynamic-layouts.html#screencast"><img src="./images/tv_show-25.png"></a></li>
+<li><a href="components/viewers/wicket/application-menu-layouts.html">Application menu layout</a>
+</div>
+<div class="col-md-4"></li>
 </ul>
 
-<p></div>
-<div class="col-md-4"></p>
-
 <h4><a name="how-tos-business-rules">Business rules</a></h4>
 
 <p>Visibility ("see it")</p>

Modified: websites/staging/isis/trunk/content/how-tos/how-to-01-080-How-to-specify-the-order-in-which-properties-or-collections-are-displayed.html
==============================================================================
--- websites/staging/isis/trunk/content/how-tos/how-to-01-080-How-to-specify-the-order-in-which-properties-or-collections-are-displayed.html (original)
+++ websites/staging/isis/trunk/content/how-tos/how-to-01-080-How-to-specify-the-order-in-which-properties-or-collections-are-displayed.html Fri Dec 12 09:17:58 2014
@@ -423,26 +423,94 @@
 
 <h2>How to specify the order in which properties or collections are displayed</h2>
 
+<blockquote>
+  <p>This material more-or-less duplicates the information to be found in <a href="../components/viewers/wicket/static-layouts.html">here</a>.</p>
+</blockquote>
+
 <p>The <code>@MemberOrder</code> annotation provides a hint to the viewer as to the
 order in which the properties and collections should appear in the GUI.</p>
 
 <p>For example:</p>
 
-<pre><code>public class Customer() {
-    @MemberOrder("1")
+<pre><code>public class Customer {
+    @MemberOrder(sequence="1")
     public String getFirstName() { ... }
     ...
 
-    @MemberOrder("2")
+    @MemberOrder(sequence="2")
     public String getLastName() { ... }
     ...
 
-    @MemberOrder("3")
+    @MemberOrder(sequence="3")
+    public String getAddressLine1() { ... }
+    ...
+
+    @MemberOrder(sequence="4")
+    public String getAddressLine2() { ... }
+    ...
+
+    @MemberOrder(sequence="5")
+    public String getAddressTown() { ... }
+    ...
+
+    @MemberOrder(sequence="11")
     public Collection&lt;Order&gt; getOrders() { ... }
     ...
 }
 </code></pre>
 
+<p>The syntax for the <code>@MemberOrder#sequence</code> attribute is dewey decimal notation, so "3.5" and
+"3.6" come between "3" and "4"; "3.5.1" comes between "3.5" and "3.6".</p>
+
+<p>It is usual possible to group properties together by specifying the <code>name</code> attribute:</p>
+
+<pre><code>public class Customer {
+    @MemberOrder(name="Name", sequence="1")
+    public String getFirstName() { ... }
+    ...
+
+    @MemberOrder(name="Name", sequence="2")
+    public String getLastName() { ... }
+    ...
+
+    @MemberOrder(name="Address", sequence="1")
+    public String getAddressLine1() { ... }
+    ...
+
+    @MemberOrder(name="Address", sequence="2")
+    public String getAddressLine2() { ... }
+    ...
+
+    @MemberOrder(name="Address", sequence="3")
+    public String getAddressTown() { ... }
+    ...
+
+    @MemberOrder(sequence="11")
+    public Collection&lt;Order&gt; getOrders() { ... }
+    ...
+}
+</code></pre>
+
+<p>Any properties not grouped will reside in the default "General" member (property) group.</p>
+
+<p>The <code>@MemberGroupLayout</code> annotation (on the class) in turn specifies the layout of the member (property) groups and collections.</p>
+
+<p>For example:</p>
+
+<pre><code>@MemberGroupLayout(
+    columnSpans={4,0,0,8},
+    left={"Name", "Address"},
+    middle={},
+    right={}
+}
+</code></pre>
+
+<p>will place the "Name" and "Address" member groups in the first column, and place the collection(s) in the last column.</p>
+
+<p>An alternative to using annotations is to use <a href="../components/viewers/wicket/dynamic-layouts.html">dynamic layouts</a>,
+where the metadata is supplied through an external JSON file.  This has two major advantages: all the metadata resides
+in a single location, and also it can be modified and reloaded on-the-fly, providing a much faster feedback loop.</p>
+
 
 
       </div>

Modified: websites/staging/isis/trunk/content/how-tos/how-to-01-090-How-to-specify-the-order-in-which-actions-appear-on-the-menu.html
==============================================================================
--- websites/staging/isis/trunk/content/how-tos/how-to-01-090-How-to-specify-the-order-in-which-actions-appear-on-the-menu.html (original)
+++ websites/staging/isis/trunk/content/how-tos/how-to-01-090-How-to-specify-the-order-in-which-actions-appear-on-the-menu.html Fri Dec 12 09:17:58 2014
@@ -423,25 +423,60 @@
 
 <h2>How to specify the order in which actions appear on the menu</h2>
 
+<blockquote>
+  <p>This material more-or-less duplicates the information to be found in <a href="../components/viewers/wicket/static-layouts.html">here</a>.</p>
+</blockquote>
+
 <p>The <code>@MemberOrder</code> annotation provides a hint to the viewer as to the
-order in which the actions should be displayed, eg in a menu.</p>
+order in which the actions should be displayed.</p>
 
 <p>For example:</p>
 
 <pre><code>public class Customer {
-    @MemberOrder("3")
+    @MemberOrder(sequence="3")
     public void placeOrder(Product p) { ... }
     ...
 
-    @MemberOrder("4")
+    @MemberOrder(sequence="4")
     public void blackList() { ... }
     ...
 }
 </code></pre>
 
-<p>The syntax for the @MemberOrder is dewey decimal notation, so "3.5" and
+<p>The syntax for the <code>@MemberOrder#sequence</code> attribute is dewey decimal notation, so "3.5" and
 "3.6" come between "3" and "4"; "3.5.1" comes between "3.5" and "3.6".</p>
 
+<p>It is also possible (and common place) to associate actions with either properties or collections.  For example:</p>
+
+<pre><code>public class Customer {
+
+    @MemberOrder(name="Name", sequence="1")
+    public String getFirstName() { ... }
+
+    @MemberOrder(name="Name", sequence="2")
+    public String getLastName() { ... }
+
+    @MemberOrder(name="firstName")
+    public void changeName(...) { ... }
+    ...
+
+    @MemberOrder(sequence="11")
+    public Collection&lt;Order&gt; getOrders() { ... }
+
+    @MemberOrder(name="orders", sequence="3")
+    public void placeOrder(Product p) { ... }
+    ...
+
+}
+</code></pre>
+
+<p>will associate the <code>changeName(...)</code> action near to the <code>firstName</code> property, and the <code>placeOrder(...)</code> action near
+to the <code>orders</code> collection.</p>
+
+<p>An alternative to using annotations is to use <a href="../components/viewers/wicket/dynamic-layouts.html">dynamic layouts</a>,
+where the metadata is supplied through an external JSON file.  This has two major advantages: all the metadata resides
+in a single location, and also it can be modified and reloaded on-the-fly, providing a much faster feedback loop.</p>
+
 
 
       </div>

Modified: websites/staging/isis/trunk/content/how-tos/how-to-01-140-How-to-specify-names-or-descriptions-for-an-action-parameter.html
==============================================================================
--- websites/staging/isis/trunk/content/how-tos/how-to-01-140-How-to-specify-names-or-descriptions-for-an-action-parameter.html (original)
+++ websites/staging/isis/trunk/content/how-tos/how-to-01-140-How-to-specify-names-or-descriptions-for-an-action-parameter.html Fri Dec 12 09:17:58 2014
@@ -428,21 +428,34 @@ parameters that you use within the domai
 will be labelled only with the type of the object required (e.g.
 'String:' or 'Customer:)</p>
 
-<p>If you want a parameter to have a different name (such as 'First Name',
-'Last Name') then that parameter should be marked up with an <code>@Named</code>
-annotation - very often taking the same form as the parameter name used
-in the code. Alternatively though, you could create a user-defined value
-type, using <code>@Value</code> (see ?).</p>
+<p>If you want a parameter to have a different name (as is usually the case for value types such as strings and ints)
+then that parameter should be annotated with the <code>@Named</code> annotation (prior to 1.8.0-SNAPSHOT) or its replacement,
+the <code>@ParameterLayout(named=...)</code> annotation (as of 1.8.0-SNAPSHOT).</p>
 
 <p>Similarly, any parameter may be given a short user-description using the
-<code>@DescribedAs</code> annotation. The framework takes responsibility to make
-this available to the user.</p>
+<code>@DescribedAs</code> annotation (prior to 1.8.0-SNAPSHOT) or its replacement, <code>@ParameterLayout(describedAs=...)</code>.</p>
 
-<p>For example:</p>
+<p>For example (as of 1.8.0-SNAPSHOT):</p>
 
 <pre><code>public class Customer {
     public Order placeOrder(
-            Product p, 
+            Product p,
+            @ParameterLayout(
+                named="Quantity",
+                describedAs="The number of units of the specified product in this order"
+            )
+            int quantity) {
+        ...
+    }
+    ...
+}
+</code></pre>
+
+<p>or (prior to 1.8.0-SNAPSHOT):</p>
+
+<pre><code>public class Customer {
+    public Order placeOrder(
+            Product p,
             @Named("Quantity")
             @DescribedAs("The number of units of the specified product in this order")
             int quantity) {