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 2015/03/12 14:14:12 UTC

svn commit: r943515 - in /websites/staging/isis/trunk: cgi-bin/ content/ content/index-new.html content/index.html content/intro/elevator-pitch/isis-in-pictures.html

Author: buildbot
Date: Thu Mar 12 13:14:12 2015
New Revision: 943515

Log:
Staging update by buildbot for isis

Modified:
    websites/staging/isis/trunk/cgi-bin/   (props changed)
    websites/staging/isis/trunk/content/   (props changed)
    websites/staging/isis/trunk/content/index-new.html
    websites/staging/isis/trunk/content/index.html
    websites/staging/isis/trunk/content/intro/elevator-pitch/isis-in-pictures.html

Propchange: websites/staging/isis/trunk/cgi-bin/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Thu Mar 12 13:14:12 2015
@@ -1 +1 @@
-1666166
+1666176

Propchange: websites/staging/isis/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Thu Mar 12 13:14:12 2015
@@ -1 +1 @@
-1666166
+1666176

Modified: websites/staging/isis/trunk/content/index-new.html
==============================================================================
--- websites/staging/isis/trunk/content/index-new.html (original)
+++ websites/staging/isis/trunk/content/index-new.html Thu Mar 12 13:14:12 2015
@@ -564,326 +564,16 @@
       <div class="markdown-content">
       
 
-<div class="homepage">
+<div class="page-header">
+<p><a href="./documentation.html">Docs</a></p>
+<h1>
 
-<div class="jumbotron">
-    <div class="row">
-        <div class="col-sm-6">
-            <img src="./images/isis-logo-568x286.png" width="400" alt="Apache Isis"/>
-            <h3 class="legend">Domain Driven Applications, Quickly</h3>
-        </div>
-        <div class="col-sm-6">
-            <div class="carousel slide" data-ride="carousel" id="quote-carousel">
-
-                <ol class="carousel-indicators">
-                    <li data-target="#quote-carousel" data-slide-to="0" class="active"></li>
-                    <li data-target="#quote-carousel" data-slide-to="1"></li>
-                    <li data-target="#quote-carousel" data-slide-to="2"></li>
-                    <li data-target="#quote-carousel" data-slide-to="3"></li>
-                    <li data-target="#quote-carousel" data-slide-to="4"></li>
-                    <li data-target="#quote-carousel" data-slide-to="5"></li>
-                    <li data-target="#quote-carousel" data-slide-to="6"></li>
-                    <li data-target="#quote-carousel" data-slide-to="7"></li>
-                    <li data-target="#quote-carousel" data-slide-to="8"></li>
-                    <li data-target="#quote-carousel" data-slide-to="9"></li>
-                </ol>
-
-                <div class="carousel-inner">
-                    <div class="item active">
-                        <blockquote>
-                            <div class="row">
-                                <div class="col-sm-12">
-                                    <p>I like the guidance Apache Isis gives me for structuring code along the lines of Domain Driven Design. My first web application in plain Java without writing a single line of DDL or HTML/*Script.</p>
-                                    <small>Joerg Rade</small>
-                                </div>
-                            </div>
-                        </blockquote>
-                    </div>
-                    <div class="item">
-                        <blockquote>
-                            <div class="row">
-                                <div class="col-sm-12">
-                                    <p>A fantastic framework! With Apache Isis we can prototype a deployable application in minutes rather than days.</p>
-                                    <small>Jeremy Branham</small>
-                                </div>
-                            </div>
-                        </blockquote>
-                    </div>
-                    <div class="item">
-                        <blockquote>
-                            <div class="row">
-                                <div class="col-sm-12">
-                                    <p>From a Sprint retrospective:</p>
-                                    <p>&quot;We normally don't see anything at all for the first three months, and now you're showing me working screens after two weeks&quot;</p>
-                                    <small>Project programme manager</small>
-                                </div>
-                            </div>
-                        </blockquote>
-                    </div>
-                    <div class="item">
-                        <blockquote>
-                            <div class="row">
-                                <div class="col-sm-12">
-                                    <p>Apache Isis enabled us to focus on the problem domain and data quality and - because the UI was generated for us by the framework - not get distracted by UI concerns. Identified security issues were quickly addressed by the Apache Isis committers.</p>
-                                    <small>Architect</small>
-                                </div>
-                            </div>
-                        </blockquote>
-                    </div>
-                    <div class="item">
-                        <blockquote>
-                            <div class="row">
-                                <div class="col-sm-12">
-                                    <p>Support from the Apache Isis community is excellent. I sense a love and dedication that is inspiring.</p>
-                                    <small>Johan Doornenbal</small>
-                                </div>
-                            </div>
-                        </blockquote>
-                    </div>
-                    <div class="item">
-                        <blockquote>
-                            <div class="row">
-                                <div class="col-sm-12">
-                                    <p>Isis provided us with a great starting point for our app; we simply took the todoapp archetype and used it as a template to help set up our integration tests and BDD specs.  We were productive almost immediately</p>
-                                    <small>Vladimir Nisevic, A1 Telekom Austria</small>
-                                </div>
-                            </div>
-                        </blockquote>
-                    </div>
-                    <div class="item">
-                        <blockquote>
-                            <div class="row">
-                                <div class="col-sm-12">
-                                    <p>From a Sprint retrospective, having switched to using Isis:</p>
-                                    <p>&quot;This is already looking better than anything we saw after six months of work in the first phase&quot;</p>
-                                    <small>Project test manager</small>
-                                </div>
-                            </div>
-                        </blockquote>
-                    </div>
-                    <div class="item">
-                        <blockquote>
-                            <div class="row">
-                                <div class="col-sm-12">
-                                    <p>We use Isis because of its simple and fast user interface generation.</p>
-                                    <small>Andreas Lechner</small>
-                                </div>
-                            </div>
-                        </blockquote>
-                    </div>
-                    <div class="item">
-                        <blockquote>
-                            <div class="row">
-                                <div class="col-sm-12">
-                                    <p>Apache Isis is one of the best tools for hackathons.  Given a 2 day hackathon challenge I have the perfect framework to create my prototype helping me to focus on business logic.</p>
-                                    <small>Sunand Padmanabhan</small>
-                                </div>
-                            </div>
-                        </blockquote>
-                    </div>
-                    <div class="item">
-                        <blockquote>
-                            <div class="row">
-                                <div class="col-sm-12">
-                                    <p>From a Sprint retrospective, the criticism of one lead developer sounded more like praise:</p>
-                                    <p>&quot;The problem is that if we show this to the customer they will think that all the work is done.&quot;</p>
-                                    <small>provided by Ged Byrne</small>
-                                </div>
-                            </div>
-                        </blockquote>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-    <div class="row">
-        <div class="col-sm-12 description">
-            <p>Apache Isis&trade; is a framework for rapidly developing domain-driven apps in Java.  Write your business logic in entities, domain services or view models, and the framework dynamically generates a representation of that domain model as a webapp or a RESTful API.</p>
-
-            <p><a class="btn btn-primary btn-lg learn-more" href="./documentation.html" role="button">Learn more »</a></p>
-        </div>
-    </div>
+</h1>
 </div>
 
-<div class="container">
-    <!-- Example row of columns -->
-    <div class="row">
-        <div class="col-md-4">
-            <h2>UI "for free"</h2>
-            <p>Isis builds a generic UI directly from the underlying domain objects.
-            This makes for extremely rapid prototyping and short feedback cycle, perfect for agile development.
-            The UI can also be extended for specific use cases, and can be themed using Bootstrap.</p>
-            <p><a class="btn btn-default" href="./intro/elevator-pitch/isis-in-pictures.html" role="button">View details »</a></p>
-        </div>
-        <div class="col-md-4">
-            <h2>Domain-Driven</h2>
-            <p>The core of an Isis application are the domain objects, either persisted entities or view models.
-            Business rules can be associated directly with domain objects, or can be factored out into separate
-            services.  Isis performs dependency injection everywhere to ensure that the application remains decoupled.</p>
-            <p><a class="btn btn-default" href="./documentation.html" role="button">View details »</a></p>
-        </div>
-        <div class="col-md-4">
-            <h2>Add-ons</h2>
-            <p>Isis has a large number of github-hosted add-on modules for security, auditing, command profiling, mail merge and other cross-cutting concerns.  It also has a number of UI extensions
-                for maps, calendars and so on.  All are open source and designed for out-of-the-box use or to fork as you require.</p>
-            <p><a class="btn btn-default" href="http://www.isisaddons.org" role="button">View details »</a></p>
-        </div>
-    </div>
-
-    <br/>
-    <br/>
-    <div class="row">
-        <div class="col-md-12">
-            <h4>Start developing your own Isis application using our <a href="intro/getting-started/simpleapp-archetype.html">simpleapp archetype</a>:</h4>
-        </div>
-    </div>
-    <div class="row">
-        <div class="col-md-8">
-    <pre>
-mvn archetype:generate  \
-    -D archetypeGroupId=org.apache.isis.archetype \
-    -D archetypeArtifactId=simpleapp-archetype \
-    -D archetypeVersion=1.8.0 \
-    -D groupId=com.mycompany \
-    -D artifactId=myapp \
-    -D version=1.0-SNAPSHOT \
-    -B</pre>
-        </div>
-    </div>
-
-
-    <br/>
-    <br/>
-
-    <div class="row">
-        <div class="col-md-12">
-            <h4>A typical application built with Apache Isis.  Like all Isis apps, the UI is dynamically built from the domain model.</h4>
-                <img src="./intro/powered-by/images/estatio-1.png" width="880px"/>
-        </div>
-        <div class="center">
-            <p>You can learn more about this particular application <a href="./intro/powered-by/powered-by.html">here</a>.
-                    The app is also open source, so you can check out its source code on <a href="http://github.com/estatio/estatio">github</a>.</p>
-        </div>
-    </div>
-</div>
-
-</div>
-
-
-  <div class="row">
-    <div class="col-md-12">
-      <div align="center">
-        <h3>Apache Isis&trade; is a framework for rapidly developing domain-driven apps in Java.</h3>
-      </div>
-    </div>
-  </div>
-  <div class="row">
-    <div class="col-md-10 col-md-offset-1">
-      <div align="center">
-        <h4>
-        Write your business logic in entities, domain services or view models, and the framework dynamically generates a representation of that domain model as a webapp or a RESTful API.</h4>
-        <h4>For prototyping or production.</h4>
-      </div>
-    </div>
-  </div>
-
-  <!--  Carousel -->
-  <!--  consult Bootstrap docs at 
-        http://getbootstrap.com/javascript/#carousel -->
-  <div id="this-carousel-id" class="carousel slide">
-  
-    <ol class="carousel-indicators">
-      <li data-target="#this-carousel-id" data-slide-to="0" class="active"></li>
-      <li data-target="#this-carousel-id" data-slide-to="1"></li>
-      <li data-target="#this-carousel-id" data-slide-to="2"></li>
-      <li data-target="#this-carousel-id" data-slide-to="3"></li>
-      <li data-target="#this-carousel-id" data-slide-to="4"></li>
-      <li data-target="#this-carousel-id" data-slide-to="5"></li>
-      <li data-target="#this-carousel-id" data-slide-to="6"></li>
-      <li data-target="#this-carousel-id" data-slide-to="7"></li>
-      <li data-target="#this-carousel-id" data-slide-to="8"></li>
-      <li data-target="#this-carousel-id" data-slide-to="9"></li>
-    </ol>
-
-    <div class="carousel-inner">
-      <div class="item active">
-        <img src="images/isis-logo-940x560.png"></img>
-      </div>
-
-      <div class="item">
-        <a href="#">
-          <img src="images/index-screenshots/010-sign-in.png"></img>
-        </a>
-      </div>
-
-      <div class="item">
-        <a href="#">
-          <img src="images/index-screenshots/020-object-layout.png"></img>
-        </a>
-      </div>
-
-      <div class="item">
-        <a href="#">
-          <img src="images/index-screenshots/030-declarative-business-rules.png"></img>
-        </a>
-      </div>
-
-      <div class="item">
-        <a href="#">
-          <img src="images/index-screenshots/040-imperative-business-rules.png"></img>
-        </a>
-      </div>
-
-      <div class="item">
-        <a href="#">
-          <img src="images/index-screenshots/050-action-with-args.png"></img>
-        </a>
-      </div>
-
-      <div class="item">
-        <a href="#">
-          <img src="images/index-screenshots/060-action-with-args-autocomplete.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#">
-          <img src="images/index-screenshots/070-jdo.png"></img>
-        </a>
-      </div>
-
-      <div class="item">
-        <a href="#">
-          <img src="images/index-screenshots/080-rest-api.png"></img>
-        </a>
-      </div>
-
-      <div class="item">
-        <a href="#">
-          <img src="images/index-screenshots/090-integtesting.png"></img>
-        </a>
-      </div>
-
-    </div>
-    
-      <a class="carousel-control left" href="#this-carousel-id" data-slide="prev"><span class="icon-prev"></span></a>
-      <a class="carousel-control right" href="#this-carousel-id" data-slide="next"><span class="icon-next"></span></a>
-  </div><!-- .carousel -->
-
-
-<script>
-    $(document).ready(function(){
-
-        $('.carousel').carousel({
-            pauseOnHover: true,
-          interval: 6000
-        });
+<p>Isis graduated from the Apache incubator in October 2012; we <a href="download.html">released</a> Isis Core 1.0.0 plus 4 supporting components in December 2012.</p>
 
-        $('#quote-carousel').carousel({
-            pauseOnHover: true,
-            interval: 6000
-        });
-    });
-</script>
+<p>Our <a href="documentation.html">documentation</a> page has plenty of useful content.</p>
 
 
 

Modified: websites/staging/isis/trunk/content/index.html
==============================================================================
--- websites/staging/isis/trunk/content/index.html (original)
+++ websites/staging/isis/trunk/content/index.html Thu Mar 12 13:14:12 2015
@@ -564,125 +564,318 @@
       <div class="markdown-content">
       
 
+<div class="homepage">
 
-  <div class="row">
-    <div class="col-md-12">
-      <div align="center">
-        <h3>Apache Isis&trade; is a framework for rapidly developing domain-driven apps in Java.</h3>
-      </div>
-    </div>
-  </div>
-  <div class="row">
-    <div class="col-md-10 col-md-offset-1">
-      <div align="center">
-        <h4>
-        Write your business logic in entities, domain services or view models, and the framework dynamically generates a representation of that domain model as a webapp or a RESTful API.</h4>
-        <h4>For prototyping or production.</h4>
-      </div>
+    <div class="jumbotron">
+        <div class="row">
+            <div class="col-sm-6">
+                <img src="./images/isis-logo-568x286.png" width="400" alt="Apache Isis"/>
+                <h3 class="legend">Domain Driven Applications, Quickly</h3>
+            </div>
+            <div class="col-sm-6">
+                <div class="carousel slide" data-ride="carousel" id="quote-carousel">
+
+                    <ol class="carousel-indicators">
+                        <li data-target="#quote-carousel" data-slide-to="0" class="active"></li>
+                        <li data-target="#quote-carousel" data-slide-to="1"></li>
+                        <li data-target="#quote-carousel" data-slide-to="2"></li>
+                        <li data-target="#quote-carousel" data-slide-to="3"></li>
+                        <li data-target="#quote-carousel" data-slide-to="4"></li>
+                        <li data-target="#quote-carousel" data-slide-to="5"></li>
+                        <li data-target="#quote-carousel" data-slide-to="6"></li>
+                        <li data-target="#quote-carousel" data-slide-to="7"></li>
+                        <li data-target="#quote-carousel" data-slide-to="8"></li>
+                        <li data-target="#quote-carousel" data-slide-to="9"></li>
+                    </ol>
+
+                    <div class="carousel-inner">
+                        <div class="item active">
+                            <blockquote>
+                                <div class="row">
+                                    <div class="col-sm-12">
+                                        <p>I like the guidance Apache Isis gives me for structuring code along the lines of Domain Driven Design. My first web application in plain Java without writing a single line of DDL or HTML/*Script.</p>
+                                        <small>Joerg Rade</small>
+                                    </div>
+                                </div>
+                            </blockquote>
+                        </div>
+                        <div class="item">
+                            <blockquote>
+                                <div class="row">
+                                    <div class="col-sm-12">
+                                        <p>A fantastic framework! With Apache Isis we can prototype a deployable application in minutes rather than days.</p>
+                                        <small>Jeremy Branham</small>
+                                    </div>
+                                </div>
+                            </blockquote>
+                        </div>
+                        <div class="item">
+                            <blockquote>
+                                <div class="row">
+                                    <div class="col-sm-12">
+                                        <p>From a Sprint retrospective:</p>
+                                        <p>&quot;We normally don't see anything at all for the first three months, and now you're showing me working screens after two weeks&quot;</p>
+                                        <small>Project programme manager</small>
+                                    </div>
+                                </div>
+                            </blockquote>
+                        </div>
+                        <div class="item">
+                            <blockquote>
+                                <div class="row">
+                                    <div class="col-sm-12">
+                                        <p>Apache Isis enabled us to focus on the problem domain and data quality and - because the UI was generated for us by the framework - not get distracted by UI concerns. Identified security issues were quickly addressed by the Apache Isis committers.</p>
+                                        <small>Architect</small>
+                                    </div>
+                                </div>
+                            </blockquote>
+                        </div>
+                        <div class="item">
+                            <blockquote>
+                                <div class="row">
+                                    <div class="col-sm-12">
+                                        <p>Support from the Apache Isis community is excellent. I sense a love and dedication that is inspiring.</p>
+                                        <small>Johan Doornenbal</small>
+                                    </div>
+                                </div>
+                            </blockquote>
+                        </div>
+                        <div class="item">
+                            <blockquote>
+                                <div class="row">
+                                    <div class="col-sm-12">
+                                        <p>Isis provided us with a great starting point for our app; we simply took the todoapp archetype and used it as a template to help set up our integration tests and BDD specs.  We were productive almost immediately</p>
+                                        <small>Vladimir Nisevic, A1 Telekom Austria</small>
+                                    </div>
+                                </div>
+                            </blockquote>
+                        </div>
+                        <div class="item">
+                            <blockquote>
+                                <div class="row">
+                                    <div class="col-sm-12">
+                                        <p>From a Sprint retrospective, having switched to using Isis:</p>
+                                        <p>&quot;This is already looking better than anything we saw after six months of work in the first phase&quot;</p>
+                                        <small>Project test manager</small>
+                                    </div>
+                                </div>
+                            </blockquote>
+                        </div>
+                        <div class="item">
+                            <blockquote>
+                                <div class="row">
+                                    <div class="col-sm-12">
+                                        <p>We use Isis because of its simple and fast user interface generation.</p>
+                                        <small>Andreas Lechner</small>
+                                    </div>
+                                </div>
+                            </blockquote>
+                        </div>
+                        <div class="item">
+                            <blockquote>
+                                <div class="row">
+                                    <div class="col-sm-12">
+                                        <p>Apache Isis is one of the best tools for hackathons.  Given a 2 day hackathon challenge I have the perfect framework to create my prototype helping me to focus on business logic.</p>
+                                        <small>Sunand Padmanabhan</small>
+                                    </div>
+                                </div>
+                            </blockquote>
+                        </div>
+                        <div class="item">
+                            <blockquote>
+                                <div class="row">
+                                    <div class="col-sm-12">
+                                        <p>From a Sprint retrospective, the criticism of one lead developer sounded more like praise:</p>
+                                        <p>&quot;The problem is that if we show this to the customer they will think that all the work is done.&quot;</p>
+                                        <small>provided by Ged Byrne</small>
+                                    </div>
+                                </div>
+                            </blockquote>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="row">
+            <div class="col-sm-12 description">
+                <p>Apache Isis&trade; is a framework for rapidly developing domain-driven apps in Java.  Write your business logic in entities, domain services or view models, and the framework dynamically generates a representation of that domain model as a webapp or a RESTful API.</p>
+
+                <p><a class="btn btn-primary btn-lg learn-more" href="./documentation.html" role="button">Learn more »</a></p>
+            </div>
+        </div>
     </div>
-  </div>
-
-  <!--  Carousel -->
-  <!--  consult Bootstrap docs at 
-        http://getbootstrap.com/javascript/#carousel -->
-  <div id="this-carousel-id" class="carousel slide">
-  
-    <ol class="carousel-indicators">
-      <li data-target="#this-carousel-id" data-slide-to="0" class="active"></li>
-      <li data-target="#this-carousel-id" data-slide-to="1"></li>
-      <li data-target="#this-carousel-id" data-slide-to="2"></li>
-      <li data-target="#this-carousel-id" data-slide-to="3"></li>
-      <li data-target="#this-carousel-id" data-slide-to="4"></li>
-      <li data-target="#this-carousel-id" data-slide-to="5"></li>
-      <li data-target="#this-carousel-id" data-slide-to="6"></li>
-      <li data-target="#this-carousel-id" data-slide-to="7"></li>
-      <li data-target="#this-carousel-id" data-slide-to="8"></li>
-      <li data-target="#this-carousel-id" data-slide-to="9"></li>
-    </ol>
-
-    <div class="carousel-inner">
-      <div class="item active">
-        <img src="images/isis-logo-940x560.png"></img>
-      </div>
-
-      <div class="item">
-        <a href="#">
-          <img src="images/index-screenshots/010-sign-in.png"></img>
-        </a>
-      </div>
-
-      <div class="item">
-        <a href="#">
-          <img src="images/index-screenshots/020-object-layout.png"></img>
-        </a>
-      </div>
-
-      <div class="item">
-        <a href="#">
-          <img src="images/index-screenshots/030-declarative-business-rules.png"></img>
-        </a>
-      </div>
-
-      <div class="item">
-        <a href="#">
-          <img src="images/index-screenshots/040-imperative-business-rules.png"></img>
-        </a>
-      </div>
-
-      <div class="item">
-        <a href="#">
-          <img src="images/index-screenshots/050-action-with-args.png"></img>
-        </a>
-      </div>
-
-      <div class="item">
-        <a href="#">
-          <img src="images/index-screenshots/060-action-with-args-autocomplete.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#">
-          <img src="images/index-screenshots/070-jdo.png"></img>
-        </a>
-      </div>
 
-      <div class="item">
-        <a href="#">
-          <img src="images/index-screenshots/080-rest-api.png"></img>
-        </a>
-      </div>
+    <div class="container">
+        <div class="row">
+            <div class="col-md-4">
+                <h2>UI "for free"</h2>
+                <p>Isis dynamically builds a generic UI directly from the underlying domain objects.
+                    This makes for extremely rapid prototyping and a short feedback cycle, perfect for agile development.
+                    The UI can also be extended for specific use cases, and can be themed using <a href="http://getbootstrap.com">Bootstrap</a>.</p>
+                <p><a class="btn btn-default" href="./intro/elevator-pitch/isis-in-pictures.html" role="button">View details »</a></p>
+            </div>
+            <div class="col-md-4">
+                <h2>Domain-Driven</h2>
+                <p>The core of an Isis application are the domain objects, either persisted entities or view models.
+                    Business rules can be associated directly with domain objects, or can be factored out into separate
+                    services.  Isis performs dependency injection everywhere to ensure that the application remains decoupled.</p>
+                <p><a class="btn btn-default" href="./documentation.html" role="button">View details »</a></p>
+            </div>
+            <div class="col-md-4">
+                <h2>Add-ons</h2>
+                <p>Isis has a large number of github-hosted add-on modules for security, auditing, command profiling, mail merge and other cross-cutting concerns.  It also has a number of UI extensions
+                    for maps, calendars and so on.  All are open source and designed for out-of-the-box use or to fork as you require.</p>
+                <p><a class="btn btn-default" href="http://www.isisaddons.org" role="button">View details »</a></p>
+            </div>
+        </div>
+
+        <br/>
+        <br/>
+
+        <div class="row">
+            <div class="col-md-12">
+                <h4>A typical application built with Apache Isis.  Like all Isis apps, the UI is dynamically built from the domain model.</h4>
+                <img src="./intro/powered-by/images/estatio-1.png" width="880px"/>
+            </div>
+            <div class="center">
+                <p>You can learn more about this particular application <a href="./intro/powered-by/powered-by.html">here</a>.
+                    The app is also open source, so you can check out its source code on <a href="http://github.com/estatio/estatio">github</a>.</p>
+            </div>
+        </div>
+
+        <div class="row">
+            <div class="col-md-12">
+                <h4>Start developing your own Isis application using our <a href="intro/getting-started/simpleapp-archetype.html">simpleapp archetype</a>:</h4>
+            </div>
+        </div>
+        <div class="row">
+            <div class="col-md-8">
+        <pre>
+    mvn archetype:generate  \
+        -D archetypeGroupId=org.apache.isis.archetype \
+        -D archetypeArtifactId=simpleapp-archetype \
+        -D archetypeVersion=1.8.0 \
+        -D groupId=com.mycompany \
+        -D artifactId=myapp \
+        -D version=1.0-SNAPSHOT \
+        -B</pre>
+            </div>
+        </div>
+
+
+        <br/>
+        <br/>
+
+        <div class="row">
+            <div class="col-md-12">
+                <h4>How Apache Isis dynamically builds the UI:</h4>
+            </div>
+        </div>
+        <div class="row">
+            <div class="col-md-12">
+
+                <div id="this-carousel-id" class="carousel slide">
+
+                    <ol class="carousel-indicators">
+                        <li data-target="#this-carousel-id" data-slide-to="0" class="active"></li>
+                        <li data-target="#this-carousel-id" data-slide-to="1"></li>
+                        <li data-target="#this-carousel-id" data-slide-to="2"></li>
+                        <li data-target="#this-carousel-id" data-slide-to="3"></li>
+                        <li data-target="#this-carousel-id" data-slide-to="4"></li>
+                        <li data-target="#this-carousel-id" data-slide-to="5"></li>
+                        <li data-target="#this-carousel-id" data-slide-to="6"></li>
+                        <li data-target="#this-carousel-id" data-slide-to="7"></li>
+                        <li data-target="#this-carousel-id" data-slide-to="8"></li>
+                        <li data-target="#this-carousel-id" data-slide-to="9"></li>
+                    </ol>
+
+                    <div class="carousel-inner">
+                        <div class="item active">
+                            <img src="images/isis-logo-940x560.png"></img>
+                        </div>
+
+                        <div class="item">
+                            <a href="#">
+                                <img src="images/index-screenshots/010-sign-in.png"></img>
+                            </a>
+                        </div>
+
+                        <div class="item">
+                            <a href="#">
+                                <img src="images/index-screenshots/020-object-layout.png"></img>
+                            </a>
+                        </div>
+
+                        <div class="item">
+                            <a href="#">
+                                <img src="images/index-screenshots/030-declarative-business-rules.png"></img>
+                            </a>
+                        </div>
+
+                        <div class="item">
+                            <a href="#">
+                                <img src="images/index-screenshots/040-imperative-business-rules.png"></img>
+                            </a>
+                        </div>
+
+                        <div class="item">
+                            <a href="#">
+                                <img src="images/index-screenshots/050-action-with-args.png"></img>
+                            </a>
+                        </div>
+
+                        <div class="item">
+                            <a href="#">
+                                <img src="images/index-screenshots/060-action-with-args-autocomplete.png"></img>
+                            </a>
+                        </div>
+                        <div class="item">
+                            <a href="#">
+                                <img src="images/index-screenshots/070-jdo.png"></img>
+                            </a>
+                        </div>
+
+                        <div class="item">
+                            <a href="#">
+                                <img src="images/index-screenshots/080-rest-api.png"></img>
+                            </a>
+                        </div>
+
+                        <div class="item">
+                            <a href="#">
+                                <img src="images/index-screenshots/090-integtesting.png"></img>
+                            </a>
+                        </div>
+
+                    </div>
+
+                    <a class="carousel-control left" href="#this-carousel-id" data-slide="prev"><span class="icon-prev"></span></a>
+                    <a class="carousel-control right" href="#this-carousel-id" data-slide="next"><span class="icon-next"></span></a>
+                </div><!-- .carousel -->
 
-      <div class="item">
-        <a href="#">
-          <img src="images/index-screenshots/090-integtesting.png"></img>
-        </a>
-      </div>
+            </div>
 
+        </div>
     </div>
-    
-      <a class="carousel-control left" href="#this-carousel-id" data-slide="prev"><span class="icon-prev"></span></a>
-      <a class="carousel-control right" href="#this-carousel-id" data-slide="next"><span class="icon-next"></span></a>
-  </div><!-- .carousel -->
+
+</div>
 
 
 <script>
-  $(document).ready(function(){
-    $('.carousel').carousel({
-      interval: 6000
+    $(document).ready(function(){
+
+        $('.carousel').carousel({
+            pauseOnHover: true,
+            interval: 6000
+        });
+
+        $('#quote-carousel').carousel({
+            pauseOnHover: true,
+            interval: 6000
+        });
     });
-  });
 </script>
 
-<br/>
-  <div class="row">
-    <div class="col-md-8 col-md-offset-2">
-      <div align="center">
-      <h4>Get started with your own Isis application using our <a href="intro/getting-started/simpleapp-archetype.html">simpleapp archetype</a>.</h4>.
-      </div>
-    </div>
-  </div>
-<br/>
-<br/>
 
 
       </div>

Modified: websites/staging/isis/trunk/content/intro/elevator-pitch/isis-in-pictures.html
==============================================================================
--- websites/staging/isis/trunk/content/intro/elevator-pitch/isis-in-pictures.html (original)
+++ websites/staging/isis/trunk/content/intro/elevator-pitch/isis-in-pictures.html Thu Mar 12 13:14:12 2015
@@ -3,7 +3,7 @@
   <head>
 
     <meta charset="utf-8">
-      <title></title>
+      <title>Dynamically builds the UI</title>
     <meta name="description" content="">
     <meta name="author" content="">
 
@@ -446,7 +446,7 @@
       };
       function twshare () {
           window.open(
-                  "https://twitter.com/intent/tweet?url="+document.URL+"&text=",
+                  "https://twitter.com/intent/tweet?url="+document.URL+"&text=Dynamically builds the UI",
                   'Share on Twitter',
                   'width=800,height=526');
       };
@@ -564,375 +564,189 @@
       <div class="markdown-content">
       
 
+<div class="page-header">
+<p><a href="./../../documentation.html">Docs</a>&nbsp;&raquo&nbsp;<a href="./../../intro/about.html">Intro</a>&nbsp;&raquo&nbsp;<a href="./../../intro/elevator-pitch/about.html">Elevator Pitch</a></p>
+<h1>Dynamically builds the UI
 
-  <br/>
-  <br/>
-  <div class="row">
-    <div class="col-md-12">
-      <div align="center">
-        <h4>The carousel below provides a tutorial by screenshot of many of the core features of Apache Isis&trade;, v1.3.0.  Note that there have been many improvements in more recent releases, in particular as of v1.8.0.</h4>
-        <h4>When you are done here, either get started with our <a href="../getting-started/simple-archetype.html">simple archetype</a>, or read more at our <a href="../../documentation.html">documentation</a> page.</h4>
-      </div>
-    </div>
-  </div>
-  <br/>
-  <br/>
-
-  <!--  Carousel -->
-  <!--  consult Bootstrap docs at 
-        http://getbootstrap.com/javascript/#carousel -->
-  <div id="this-carousel-id" class="carousel slide">
-  
-    <ol class="carousel-indicators">
-      <li data-target="#this-carousel-id" data-slide-to="0" class="active"></li>
-      <li data-target="#this-carousel-id" data-slide-to="1"></li>
-      <li data-target="#this-carousel-id" data-slide-to="2"></li>
-      <li data-target="#this-carousel-id" data-slide-to="3"></li>
-      <li data-target="#this-carousel-id" data-slide-to="4"></li>
-      <li data-target="#this-carousel-id" data-slide-to="5"></li>
-      <li data-target="#this-carousel-id" data-slide-to="6"></li>
-      <li data-target="#this-carousel-id" data-slide-to="7"></li>
-      <li data-target="#this-carousel-id" data-slide-to="8"></li>
-      <li data-target="#this-carousel-id" data-slide-to="9"></li>
-      <li data-target="#this-carousel-id" data-slide-to="10"></li>
-      <li data-target="#this-carousel-id" data-slide-to="11"></li>
-      <li data-target="#this-carousel-id" data-slide-to="12"></li>
-      <li data-target="#this-carousel-id" data-slide-to="13"></li>
-      <li data-target="#this-carousel-id" data-slide-to="14"></li>
-      <li data-target="#this-carousel-id" data-slide-to="15"></li>
-      <li data-target="#this-carousel-id" data-slide-to="16"></li>
-      <li data-target="#this-carousel-id" data-slide-to="17"></li>
-      <li data-target="#this-carousel-id" data-slide-to="18"></li>
-      <li data-target="#this-carousel-id" data-slide-to="19"></li>
-      <li data-target="#this-carousel-id" data-slide-to="20"></li>
-      <li data-target="#this-carousel-id" data-slide-to="21"></li>
-      <li data-target="#this-carousel-id" data-slide-to="22"></li>
-      <li data-target="#this-carousel-id" data-slide-to="23"></li>
-      <li data-target="#this-carousel-id" data-slide-to="24"></li>
-      <li data-target="#this-carousel-id" data-slide-to="25"></li>
-      <li data-target="#this-carousel-id" data-slide-to="26"></li>
-      <li data-target="#this-carousel-id" data-slide-to="27"></li>
-      <li data-target="#this-carousel-id" data-slide-to="28"></li>
-      <li data-target="#this-carousel-id" data-slide-to="29"></li>
-      <li data-target="#this-carousel-id" data-slide-to="30"></li>
-      <li data-target="#this-carousel-id" data-slide-to="31"></li>
-      <li data-target="#this-carousel-id" data-slide-to="32"></li>
-      <li data-target="#this-carousel-id" data-slide-to="33"></li>
-      <li data-target="#this-carousel-id" data-slide-to="34"></li>
-      <li data-target="#this-carousel-id" data-slide-to="35"></li>
-      <li data-target="#this-carousel-id" data-slide-to="36"></li>
-      <li data-target="#this-carousel-id" data-slide-to="37"></li>
-      <li data-target="#this-carousel-id" data-slide-to="38"></li>
-      <li data-target="#this-carousel-id" data-slide-to="39"></li>
-      <li data-target="#this-carousel-id" data-slide-to="40"></li>
-      <li data-target="#this-carousel-id" data-slide-to="41"></li>
-      <li data-target="#this-carousel-id" data-slide-to="42"></li>
-      <li data-target="#this-carousel-id" data-slide-to="43"></li>
-      <li data-target="#this-carousel-id" data-slide-to="44"></li>
-      <li data-target="#this-carousel-id" data-slide-to="45"></li>
-      <li data-target="#this-carousel-id" data-slide-to="46"></li>
-      <li data-target="#this-carousel-id" data-slide-to="47"></li>
-      <li data-target="#this-carousel-id" data-slide-to="48"></li>
-      <li data-target="#this-carousel-id" data-slide-to="49"></li>
-      <li data-target="#this-carousel-id" data-slide-to="50"></li>
-      <li data-target="#this-carousel-id" data-slide-to="51"></li>
-      <li data-target="#this-carousel-id" data-slide-to="52"></li>
-      <li data-target="#this-carousel-id" data-slide-to="53"></li>
-      <li data-target="#this-carousel-id" data-slide-to="54"></li>
-      
-    </ol>
+</h1>
+</div>
 
-    <div class="carousel-inner">
+<p>Isis dynamically builds a generic UI directlyo from the underlying domain objects.  It works by building an internal metamodel that describes the structure and behaviour of the domain objects, and then uses this metamodel to render the objects.  You can think of it as akin to an object-relational mapper; however rather than projecting the domain objects into a database, it projects them onto a web page.</p>
 
-      <div class="item active">
-        <a href="#010-sign-in">
-          <img src="../getting-started/images/screenshots/010-sign-in.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#020-todo-app">
-          <img src="../getting-started/images/screenshots/020-todo-app.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#030-jdo">
-          <img src="../getting-started/images/screenshots/030-jdo.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#040-rest-api">
-          <img src="../getting-started/images/screenshots/040-rest-api.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#050-menu-services">
-          <img src="../getting-started/images/screenshots/050-menu-services.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#060-menu-class">
-          <img src="../getting-started/images/screenshots/060-menu-class.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#070-ToDoItem-newToDo">
-          <img src="../getting-started/images/screenshots/070-ToDoItem-newToDo.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#080-ToDoItems-newToDo-Category-enum">
-          <img src="../getting-started/images/screenshots/080-ToDoItems-newToDo-Category-enum.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#090-ToDoItems-newToDo-Subcategory-choices">
-          <img src="../getting-started/images/screenshots/090-ToDoItems-newToDo-Subcategory-choices.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#100-ToDoItems-newToDo-datepicker">
-          <img src="../getting-started/images/screenshots/100-ToDoItems-newToDo-datepicker.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#110-ToDoItems-newToDo-defaults">
-          <img src="../getting-started/images/screenshots/110-ToDoItems-newToDo-defaults.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#120-ToDoItems-newToDo-mandatory">
-          <img src="../getting-started/images/screenshots/120-ToDoItems-newToDo-mandatory.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#130-ToDoItems-newToDo-regex">
-          <img src="../getting-started/images/screenshots/130-ToDoItems-newToDo-regex.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#140-ToDoItems-notYetComplete">
-          <img src="../getting-started/images/screenshots/140-ToDoItems-notYetComplete.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#150-standalone-collection">
-          <img src="../getting-started/images/screenshots/150-standalone-collection.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#160-navigating-to-object">
-          <img src="../getting-started/images/screenshots/160-navigating-to-object.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#170-object-layout">
-          <img src="../getting-started/images/screenshots/170-object-layout.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#180-object-layout-json">
-          <img src="../getting-started/images/screenshots/180-object-layout-json.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#190-download-layout">
-          <img src="../getting-started/images/screenshots/190-download-layout.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#200-refresh-layout">
-          <img src="../getting-started/images/screenshots/200-refresh-layout.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#210-css-styling">
-          <img src="../getting-started/images/screenshots/210-css-styling.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#220-title">
-          <img src="../getting-started/images/screenshots/220-title.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#230-icon">
-          <img src="../getting-started/images/screenshots/230-icon.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#240-editing-properties">
-          <img src="../getting-started/images/screenshots/240-editing-properties.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#250-disabled-properties">
-          <img src="../getting-started/images/screenshots/250-disabled-properties.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#260-ToDoItem-hidden">
-          <img src="../getting-started/images/screenshots/260-ToDoItem-hidden.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#270-ToDoItem-validateDeclaratively">
-          <img src="../getting-started/images/screenshots/270-ToDoItem-validateDeclaratively.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#280-ToDoItem-validateImperatively">
-          <img src="../getting-started/images/screenshots/280-ToDoItem-validateImperatively.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#290-invoke-noarg-action">
-          <img src="../getting-started/images/screenshots/290-invoke-noarg-action.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#300-disable-action">
-          <img src="../getting-started/images/screenshots/300-disable-action.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#310-action-with-args">
-          <img src="../getting-started/images/screenshots/310-action-with-args.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#320-action-with-args-autocomplete">
-          <img src="../getting-started/images/screenshots/320-action-with-args-autocomplete.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#330-bulk-actions">
-          <img src="../getting-started/images/screenshots/330-bulk-actions.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#340-contributed-action">
-          <img src="../getting-started/images/screenshots/340-contributed-action.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#350-contributed-properties">
-          <img src="../getting-started/images/screenshots/350-contributed-properties.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#360-contributed-collections">
-          <img src="../getting-started/images/screenshots/360-contributed-collections.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#370-view-models-1">
-          <img src="../getting-started/images/screenshots/370-view-models-1.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#380-view-models-2">
-          <img src="../getting-started/images/screenshots/380-view-models-2.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#390-view-model-rest-api">
-          <img src="../getting-started/images/screenshots/390-view-model-rest-api.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#400-dashboard">
-          <img src="../getting-started/images/screenshots/400-dashboard.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#410-bookmarkable">
-          <img src="../getting-started/images/screenshots/410-bookmarkable.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#420-optimistic-locking">
-          <img src="../getting-started/images/screenshots/420-optimistic-locking.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#430-domainobjectcontainer">
-          <img src="../getting-started/images/screenshots/430-domainobjectcontainer.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#440-domainobjectcontainer-2">
-          <img src="../getting-started/images/screenshots/440-domainobjectcontainer-2.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#450-prototyping-actions">
-          <img src="../getting-started/images/screenshots/450-prototyping-actions.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#460-authorization">
-          <img src="../getting-started/images/screenshots/460-authorization.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#470-publishing-service">
-          <img src="../getting-started/images/screenshots/470-publishing-service.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#480-auditing-service">
-          <img src="../getting-started/images/screenshots/480-auditing-service.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#490-integtesting">
-          <img src="../getting-started/images/screenshots/490-integtesting.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#500-maven-modules">
-          <img src="../getting-started/images/screenshots/500-maven-modules.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#510-extensible-excel">
-          <img src="../getting-started/images/screenshots/510-extensible-excel.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#520-extensible-calendar">
-          <img src="../getting-started/images/screenshots/520-extensible-calendar.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#530-extensible-map">
-          <img src="../getting-started/images/screenshots/530-extensible-map.png"></img>
-        </a>
-      </div>
-      <div class="item">
-        <a href="#540-extensible-charts">
-          <img src="../getting-started/images/screenshots/540-extensible-charts.png"></img>
-        </a>
-      </div>
+<p>The screenshots below are taken from the Isis Addons' <a href="http://github.com/isisaddons/isis-app-todoapp">todoapp example</a>, which you are free to fork and use as you will.   The corresponding domain classes from which this UI was built can be found <a href="https://github.com/isisaddons/isis-app-todoapp/tree/0669d6e2acc5bcad1d9978a4514a17bcf7beab1f/dom/src/main/java/todoapp/dom/module/todoitem">here</a>. </p>
 
-    </div>
-    
-      <a class="carousel-control left" href="#this-carousel-id" data-slide="prev"><span class="icon-prev"></span></a>
-      <a class="carousel-control right" href="#this-carousel-id" data-slide="next"><span class="icon-next"></span></a>
-  </div><!-- .carousel -->
-
-
-<script>
-  $(document).ready(function(){
-    $('.carousel').carousel({
-      interval: 6000
-    });
-  });
-</script>
+<p>The todoapp also integrates with a number of other <a href="http://www.isisaddons.org">Isis Addons</a> modules.  (Please note that the Isis Addons are not part of ASF, but they are all licensed under Apache License 2.0 and are maintained by the Isis committers).</p>
+
+<h3>Sign-in</h3>
+
+<p>Apache Isis integrates with <a href="http://shiro.apacheorg">Apache Shiro</a>™.  The core framework supports file-based realms, while the Isis Addons <a href="http://github.com/isisaddons/isis-module-security">security module</a> provides a well-features subdomain of users, roles and permissions against features derived from the Isis metamodel.  The example todoapp integrates with the security module.</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/010-login.png" alt="" /></p>
+
+<h3>Install Fixtures</h3>
+
+<p>Apache Isis has lots of features to help you prototype and then fully test your application.  One such are fixture scripts, which allow pre-canned data to be installed in the running application.  This is great to act as the starting point for identifying new stories; later on when the feature is being implemented, the same fixture script can be re-used within that feature's integration tests.  (More on tests later).</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/020-install-fixtures.png" alt="" /></p>
+
+<h3>Dashboard and View Models</h3>
+
+<p>Most of the time the end-user interacts with representations of persistent domain entities, but Isis also supports view models which can aggregate data from multiple sources.  The todoapp example uses a "dashboard" view model to list todo items not yet done vs those completed.</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/030-dashboard-view-model.png" alt="" /></p>
+
+<p>In general we recommend to initially focus only on domain entities; this will help drive out a good domain model.  Later on view models can be introduced in support of specific use cases.</p>
+
+<h3>Domain Entity</h3>
+
+<p>The screenshot below is of the todoapp's <code>ToDoItem</code> domain entity.  Like all web pages, this UI is generated at runtime, directly from the domain object itself.  There are no controllers or HTML to write.</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/040-domain-entity.png" alt="" /></p>
+
+<p>In addition to the domain entity, Apache Isis allows layout metadata hints to be provided, for example to specify the grouping of properties, the positioning of those groups into columns, the association of actions (the buttons) with properties or collections, the icons on the buttons, and so on.  This metadata can be specified either as annotations or in JSON form; the benefit of the latter is that it can be updated (and the UI redrawn) without restarting the app.</p>
+
+<p>Any production-ready app will require this metadata but (like the view models discussed above) this metadata can be added gradually on top of the core domain model.</p>
+
+<h3>Edit properties</h3>
+
+<p>By default properties on domain entities are editable, meaning they can be changed directly.  In the todoapp example, the <code>ToDoItem</code>'s description is one such editable property:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/050-edit-property.png" alt="" /></p>
+
+<p>Note that some of the properties are read-only even in edit mode; individual properties can be made non-editable.  It is also possible to make all properties disabled and thus enforce changes only through actions (below).</p>
+
+<h3>Actions</h3>
+
+<p>The other way to modify an entity is to an invoke an action.  In the screenshot below the <code>ToDoItem</code>'s category and subcategory can be updated together using an action:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/060-invoke-action.png" alt="" /></p>
+
+<p>There are no limitations on what an action can do; it might just update a single object, it could update multiple objects.  Or, it might not update any objects at all, but could instead perform some other activity, such as sending out email or printing a document.</p>
+
+<p>In general though, all actions are associated with some object, and are (at least initially) also implemented by that object: good old-fashioned encapsulation.  We sometimes use the term "behaviourally complete" for such domain objects.</p>
+
+<h3>Contributions</h3>
+
+<p>As an alternative to placing actions (business logic) on a domain object, it can instead be placed on an (application-scoped, stateless) domain service.  When an object is rendered by Apache Isis, it will automatically render all "contributed" behaviour; rather like traits or aspect-oriented mix-ins).</p>
+
+<p>In the screenshot below the highlighted "export as xml" action, the "relative priority" property (and "previous" and "next" actions) and also the "similar to" collection are all contributed:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/065-contributions.png" alt="" /></p>
+
+<p>Contributions are defined by the signature of the actions on the contributing service.  The code snippet below shows how this works for the "export as xml" action:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/067-contributed-action.png" alt="" /></p>
+
+<h2>Extensible Views</h2>
+
+<p>The Apache Isis viewer is implemented using <a href="http://wicket.apache.org">Apache Wicket</a>™, and has been architected to be extensible.  For example, when a collection of objects is rendered, this is just one several views, as shown in the selector drop-down:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/070-pluggable-views.png" alt="" /></p>
+
+<p>The Isis Addons' <a href="https://github.com/isisaddons/isis-wicket-gmap3">gmap3 component</a> will render any domain entity (such as <code>ToDoItem</code>) that implements its <code>Locatable</code> interface:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/080-gmap3-view.png" alt="" /></p>
+
+<p>Simiarly the Isis Addons' <a href="https://github.com/isisaddons/isis-wicket-fullcalendar2">fullcalendar2 component</a> will render any domain entity (such as <code>ToDoItem</code>) that implements its <code>Calendarable</code> interface:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/090-fullcalendar2-view.png" alt="" /></p>
+
+<p>Yet another "view" (though this one is rather simpler is that provided by the Isis Addons <a href="https://github.com/isisaddons/isis-wicket-excel">excel component</a>.  This provides a download button to the table as a spreadsheet:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/100-excel-view-and-docx.png" alt="" /></p>
+
+<p>The screenshot above also shows an "export to Word" action.  This is <em>not</em> a view but instead is a (contributed) action that uses the Isis Addons <a href="https://github.com/isisaddons/isis-module-docx">docx module</a> to perform a "mail-merge":</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/110-docx.png" alt="" /></p>
+
+<h2>Security, Auditing and other Services</h2>
+
+<p>As well as providing extensions to the UI, the Isis addons provides a rich set of modules to support various cross-cutting concerns.</p>
+
+<p>Under the activity menu are four sets of services which provide support for <a href="https://github.com/isisaddons/isis-module-sessionlogger">user session logging/auditing</a>, <a href="https://github.com/isisaddons/isis-module-command">command profiling</a>, <a href="https://github.com/isisaddons/isis-module-audit">(object change) auditing</a> (shown) and (inter-system) <a href="https://github.com/isisaddons/isis-module-publishing">event publishing</a>:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/120-auditing.png" alt="" /></p>
+
+<p>In the security menu is access to the rich set of functionality provided by the Isis addons <a href="https://github.com/isisaddons/isis-module-security">security module</a>:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/130-security.png" alt="" /></p>
+
+<p>In the prototyping menu is the ability to download a GNU gettext <code>.po</code> file for translation.  This file can then be translated into multiple languages so that your app can support different locales.  Note that this feature is part of Apache Isis core (it is not in Isis Addons):</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/140-i18n.png" alt="" /></p>
+
+<p>The Isis addons also provides a module for managing application and user <a href="https://github.com/isisaddons/isis-module-settings">settings</a>.  Most apps (the todoapp example included) won't expose these services directly, but will usually wrap them in their own app-specific settings service that trivially delegates to the settings module's services:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/150-appsettings.png" alt="" /></p>
+
+<h3>Multi-tenancy support</h3>
+
+<p>Of the various Isis addons, the <a href="https://github.com/isisaddons/isis-module-security">security module</a> has the most features.  One significant feature is the ability to associate users and objects with a "tenancy".  The todoapp uses this feature so that different users' list of todo items are kept separate from one another.  A user with administrator is able to switch their own "tenancy" to the tenancy of some other user, in order to access the objects in that tenancy:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/160-switch-tenancy.png" alt="" /></p>
+
+<p>For more details, see the <a href="https://github.com/isisaddons/isis-module-security">security module</a> README.</p>
+
+<h3>Me</h3>
+
+<p>Most of the <a href="https://github.com/isisaddons/isis-module-security">security module</a>'s services are on the security module, which would normally be provided only to administrators.  Kept separate is the "me" action:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/170-me.png" alt="" /></p>
+
+<p>Assuming they have been granted permissions, this allows a user to access an entity representing their own user account:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/180-app-user-entity.png" alt="" /></p>
+
+<p>If not all of these properties are required, then they can be hidden either using security or though Isis' internal event bus (described below).  Conversely, additional properties can be "grafted onto" the user using the contributed properties/collections discussed previously.</p>
+
+<h3>Themes</h3>
+
+<p>Apache Isis' Wicket viewer uses <a href="http://getbootstrap.com">Twitter Bootstrap</a>, which means that it can be themed.  If more than one theme has been configured for the app, then the viewer allows the end-user to switch their theme:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/190-switch-theme.png" alt="" /></p>
+
+<h2>REST API</h2>
+
+<p>In addition to Isis' Wicket viewer, it also provides a fully fledged REST API, as an implementation of the <a href="http://restfulobjects.org">Restful Objects</a> specification.  The screenshot below shows accessing this REST API using a Chrome plugin:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/200-rest-api.png" alt="" /></p>
+
+<p>Like the Wicket viewer, the REST API is generated automatically from the domain objects (entities and view models).</p>
+
+<h2>Integration Testing Support</h2>
+
+<p>Earlier on we noted that Apache Isis allows fixtures to be installed through the UI.  These same fixture scripts can be reused within integration tests.  For example, the code snippet below shows how the  <code>FixtureScripts</code> service injected into an integration test can then be used to set up data:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/210-fixture-scripts.png" alt="" /></p>
+
+<p>The tests themselves are run in junit.  While these are integration tests (so talking to a real database), they are no more complex than a regular unit test:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/220-testing-happy-case.png" alt="" /></p>
+
+<p>To simulate the business rules enforced by Apache Isis, the domain object can be "wrapped" in a proxy.  For example, if using the Wicket viewer then Apache Isis will enforce the rule (implemented in the <code>ToDoItem</code> class itself) that a completed item cannot have the "completed" action invoked upon it.  The wrapper simulates this by throwing an appropriate exception:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/230-testing-wrapper-factory.png" alt="" /></p>
+
+<h2>Internal Event Bus</h2>
+
+<p>Contributions, discussed earlier, are an important tool in ensuring that the packages within your Isis application are decoupled; by extracting out actions the order of dependency between packages can effectively be reversed.</p>
+
+<p>Another important tool to ensure your codebase remains maintainable is Isis' internal event bus.  It is probably best explained by example; the code below says that the "complete" action should emit a <code>ToDoItem.Completed</code> event:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/240-domain-events.png" alt="" /></p>
+
+<p>Domain service (application-scoped, stateless) can then subscribe to this event:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/250-domain-event-subscriber.png" alt="" /></p>
+
+<p>And this test verifies that completing an action causes the subscriber to be called:</p>
+
+<p><img src="https://raw.github.com/apache/isis/master/images/260-domain-event-test.png" alt="" /></p>
+
+<p>In fact, the domain event is fired not once, but (up to) 5 times.  It is called 3 times prior to execution, to check that the action is visible, enabled and that arguments are valid.  It is then additionally called prior to execution, and also called after execution.  What this means is that a subscriber can in either veto access to an action of some publishing object, and/or it can perform cascading updates if the action is allowed to proceed.</p>
 
+<p>Moreover, domain events are fired for all properties and collections, not just actions.  Thus, subscribers can therefore switch on or switch off different parts of an application.  Indeed, the example todoapp demonstrates this.</p>
 
-<br/>
-<br/>
 
 
       </div>