|
From: <tri...@us...> - 2008-12-03 12:22:23
|
Revision: 886
http://equanda.svn.sourceforge.net/equanda/?rev=886&view=rev
Author: triathlon98
Date: 2008-12-03 11:38:48 +0000 (Wed, 03 Dec 2008)
Log Message:
-----------
EQ-287 documentation improvements
Modified Paths:
--------------
trunk/config/checkstyle.xml
trunk/pom.xml
trunk/src/site/wiki/gettingstarted.wiki
trunk/src/site/wiki/index.wiki
Added Paths:
-----------
trunk/src/site/wiki/tool/
trunk/src/site/wiki/tool/accordion.wiki
trunk/src/site/wiki/tool/breadcrumbs.wiki
trunk/src/site/wiki/tool/formactionlink.wiki
trunk/src/site/wiki/tool/formsupport.wiki
trunk/src/site/wiki/tool/formtraversal.wiki
trunk/src/site/wiki/tool/jspagedloop.wiki
trunk/src/site/wiki/tool/manifest.wiki
trunk/src/site/wiki/tool/script.wiki
trunk/src/site/wiki/tool/tabs.wiki
trunk/src/site/wiki/tool/truncate.wiki
trunk/src/site/wiki/tool/validationtrackerdelegate.wiki
trunk/src/site/wiki/tools.wiki
Removed Paths:
-------------
trunk/equanda-tapestry5/src/site/wiki/accordion.wiki
trunk/equanda-tapestry5/src/site/wiki/breadcrumbs.wiki
trunk/equanda-tapestry5/src/site/wiki/formactionlink.wiki
trunk/equanda-tapestry5/src/site/wiki/formsupport.wiki
trunk/equanda-tapestry5/src/site/wiki/formtraversal.wiki
trunk/equanda-tapestry5/src/site/wiki/jspagedloop.wiki
trunk/equanda-tapestry5/src/site/wiki/manifest.wiki
trunk/equanda-tapestry5/src/site/wiki/script.wiki
trunk/equanda-tapestry5/src/site/wiki/tabs.wiki
trunk/equanda-tapestry5/src/site/wiki/truncate.wiki
trunk/equanda-tapestry5/src/site/wiki/validationtrackerdelegate.wiki
Modified: trunk/config/checkstyle.xml
===================================================================
--- trunk/config/checkstyle.xml 2008-12-03 10:04:57 UTC (rev 885)
+++ trunk/config/checkstyle.xml 2008-12-03 11:38:48 UTC (rev 886)
@@ -102,12 +102,14 @@
<property name="severity" value="info"/>
<property name="max" value="120"/>
</module>
+ <!--
<module name="FileLength">
<property name="severity" value="info"/>
</module>
<module name="MethodLength">
<property name="severity" value="info"/>
</module>
+ -->
<module name="ParameterNumber">
<property name="severity" value="info"/>
</module>
Deleted: trunk/equanda-tapestry5/src/site/wiki/accordion.wiki
===================================================================
--- trunk/equanda-tapestry5/src/site/wiki/accordion.wiki 2008-12-03 10:04:57 UTC (rev 885)
+++ trunk/equanda-tapestry5/src/site/wiki/accordion.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -1,70 +0,0 @@
-h1. Accordion
-
-An accordion component integrates nicely in tapestry.
-
-You have to pass the title and content panes as parameters to the accordion component. There is currently a limitation of fifty panels. Only panels which have both a title and content parameter block are displayed, however the indexes do not need to be sequential (hence the need for a limit).
-Parameter "exclude" allows to skip rendering of specified tab indicated by it's index. Negative "exclude" value will remove last N tabs;
-The currently selected pane is remembered between requests.
-- For the *Accordion* component this is done via a cookie that is identified by the component's id. This implies that accordion components with the same id on different pages will share this cookie. If this is not wanted than each accordion component should get a unique id, even if they are on different page, or use MemAccordion.
-{private}
-- For the *MemAccordion* component the state is persisted in the session and updated using an ajax request when you change tab.
-
-{private}
-
-{code}
- <span t:type="equanda/Accordion" t:id="accordion">
- <t:parameter name="title1">First title</t:parameter>
- <t:parameter name="content1">
- <p>This is the content for the first pane</p>
- <p>With some more text</p>
- </t:parameter>
- <t:parameter name="title2">Another title pane</t:parameter>
- <t:parameter name="content2">
- <p>With even more content</p>
- </t:parameter>
- <t:parameter name="title3">Latin text</t:parameter>
- <t:parameter name="content3">
- <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec libero ipsum, volutpat nec, posuere vitae, pulvinar ut, quam. Morbi fringilla pulvinar nisi. Cras luctus leo sed orci. In id mi eget nunc blandit nonummy. Morbi at lacus. Ut sed elit. Donec libero. Sed feugiat tempor erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla facilisi. Nam lorem mi, accumsan id, commodo sit amet, interdum sit amet, augue.</p>
- <p>Cras massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum accumsan neque vitae odio. Phasellus luctus arcu quis nibh. Maecenas leo. Ut aliquam hendrerit odio. Vestibulum luctus diam nec enim. Nam mi. Etiam eros turpis, ultrices et, ullamcorper nec, posuere sed, nisi. Integer placerat risus sit amet purus. Nulla elit purus, consequat sed, blandit in, feugiat bibendum, quam. In hac habitasse platea dictumst. Ut vel lorem. Ut pharetra leo. Sed sit amet felis. Nunc sed eros. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed elit metus, euismod sed, laoreet a, aliquam a, enim.</p>
- </t:parameter>
- </span>
-{code}
-
-The component automatically handles the hiding of all (except one) panel at the start, and making sure the correct pane is selected when the title is clicked on.
-
-How the accordion is displayed is handled using CSS. The classes which are used depend on the accordion component id. This also assures it will work when there are several accordion components on a page (just assure they have a different id).
-
-{code}
-.accordion_tit {
- background-color: lightgray;
- color: black;
- height: 15px;
- font-weight: normal;
- padding-left: 5px;
- padding-top: 3px;
- padding-bottom: 3px;
- cursor: pointer;
-}
-
-.accordion_tit a:link,
-.accordion_tit a:visited,
-.accordion_tit a:active,
-.accordion_tit a:hover {
- color: black;
- text-decoration: none;
-}
-
-.accordion_atit {
- font-weight: bold;
-}
-
-.accordion_ct {
- padding-top: 10px;
- padding-bottom: 10px;
- padding-left: 10px;
- padding-right: 2px;
- background-color: beige;
- overflow: auto;
- height: 200px;
-}
-{code}
Deleted: trunk/equanda-tapestry5/src/site/wiki/breadcrumbs.wiki
===================================================================
--- trunk/equanda-tapestry5/src/site/wiki/breadcrumbs.wiki 2008-12-03 10:04:57 UTC (rev 885)
+++ trunk/equanda-tapestry5/src/site/wiki/breadcrumbs.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -1,49 +0,0 @@
-h1. Breadcrumbs
-
-The breadcrumbs components displays a list of links that have been visited as the user navigates through the tapestry pages. The user can select a previously visited crumb which will take them back to that page without losing any of their session information. When moving to a crumb, this will also reset the breadcrumbs to the state at the time the page was visited.
-
-{code}
- <t:type="equanda/Breadcrumb" t:id="breadcrumb"/>
-{code}
-
-As the user navigates through the pages, the page they are coming from is appended to the end of the breadcrumbs (done by the application code). The breadcrumb name appended is the page title.
-Certain links should clear the breadcrumbs component when clicked. A variant of the pagelink component which has this behaviour should be provided.
-
-*Session retrieval*
-As the list of breadcrumbs grows, it should be possible to select any of the crumbs. When this happens, the current breadcrumb list should be shortened to indicate that the current page is the last crumb in the list. Also, the current state of this page (and the entire web session) should be as it was when the user left it.
-
-To support the latter, a conversation ID must be added as a query on the URL. E.g
-{code}
-http://localhost:8080/eportfolio-dp/assertionedit/srX8M5rTTo1RRn?cid=00112233445566
-{code}
-This will be a 14-digit code (UOID can be used). When a new page is selected, the existing session is serialized (using JBoss serialization library) and added to the EquandaNavigation table. This session can then be retrieved once the CID is known.
-
-h2. Implementation
-
-h3. BreadCrumbs Component
-
-A new BreadCrumbs component will be created. This will store the state in a ASO (application state object).
-This ASO should provide at least the following methods :
-- clear
-- add page : add using a link (with correct handling of the conversation), title and context. The context is used to determine whether the most recent page from the breadcrumb should be replaced or not. This is for example useful when switching between different selector pages for a table.
-
-h3. Conversation filter
-
-The conversation filter serves two purposes.
-- assure the session state is restored when clinking a link in the breadcrumbs.
-- allow multi-tabbed use inside the application (and hopefully also correct back button handling).
-
-The principle is simple, the session state is stored in the EquandaNavigation table (see org.equanda.infrastructure.infrastructure.xml, currently commented).
-When a page is visited, if the conversion id is retrieved, the session state is restored based on the conversation id to assure correct session state.
-
-This should be implementable using a request filter.
-
-When a page request comes in, the conversation id is retrieved. This is done first by looking at the url, and if that fails the "Referer" header is examined to see if that contains a conversaton id.
-If a conversation id was found, the session state is replaced by the stored stated from the conversation.
-The conversation is then investigate to see if it was marked as "starting". In that case a new EquandaNavigation object is created, the session state copied into it and the "starting" state set. A http redirect is then returned with the requesting url with the id of the new navigation object as new location (302 status with "Location" header).
-
-On the outbound path of the page request, the session state should be stored in a new EquandaNavigation object (serialized using JBoss serialization) and the "starting" flag is cleared.
-
-For requests which are not page requests, an attempt should be made to figure out the conversation state from the request and referer url. If a conversation id is found, then the session should be replaced based on that.
-
-It will need to be verified that ajax requests will be fully functional when two conversations are ongoing in different tabs in the browser.
Deleted: trunk/equanda-tapestry5/src/site/wiki/formactionlink.wiki
===================================================================
--- trunk/equanda-tapestry5/src/site/wiki/formactionlink.wiki 2008-12-03 10:04:57 UTC (rev 885)
+++ trunk/equanda-tapestry5/src/site/wiki/formactionlink.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -1,25 +0,0 @@
-h1. FormActionLink
-
-This is a component which looks and feels like a standard Tapestry [ActionLink|http://tapestry.apache.org/tapestry5/tapestry-core/ref/org/apache/tapestry/corelib/components/ActionLink.html]. However, this is supposed to be used inside a equanda/Form component and then assures that the form is submitted (and thus state saved) before actually processing the action.
-
-This component only works when embedded in a ["equanda/FormSupport"|formsupport.html] component which is correctly intergrated. Otherwise it does nothing.
-
-Simple example of use :
-{code}
-<t:form>
- <div t:id="formSupport">
-
- <t:errors/>
-
- <t:equanda.formactionlink t:id="DoSomething">Do something</t:equanda.formactionlink>
-
- </div>
-</t:form>
-{code}
-And in the code, just act as a normal actionlink :
-{code}
-Object onActionFromDoSomething()
-{
- // now something should be done :-)
-}
-{code}
Deleted: trunk/equanda-tapestry5/src/site/wiki/formsupport.wiki
===================================================================
--- trunk/equanda-tapestry5/src/site/wiki/formsupport.wiki 2008-12-03 10:04:57 UTC (rev 885)
+++ trunk/equanda-tapestry5/src/site/wiki/formsupport.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -1,29 +0,0 @@
-h1. FormSupport
-
-This component needs to be integrated in a form to allow the [FormActionLink|formactionlink.html] component to work.
-It needs to be integrated both in your template and some support code added in the page or component class which includes it.
-
-This handles the magic which assures the FormActionLinks actually work.
-
-How to include in the template:
-{code}
-<t:form>
- <div t:id="formSupport">
-
- <t:errors/>
-
- <!-- include your form content here -->
-
- </div>
-</t:form>
-{code}
-In the component of page class, the following needs to be put.
-{code}
-@Component
-private FormSupport formSupport;
-
-public Object onSubmit()
-{
- return formSupport.getLinkTarget();
-}
-{code}
Deleted: trunk/equanda-tapestry5/src/site/wiki/formtraversal.wiki
===================================================================
--- trunk/equanda-tapestry5/src/site/wiki/formtraversal.wiki 2008-12-03 10:04:57 UTC (rev 885)
+++ trunk/equanda-tapestry5/src/site/wiki/formtraversal.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -1,54 +0,0 @@
-h1. FormTraversal
-
-This component is intended to give consistent user interface behaviour which allows easy and efficient form completion without using a mouse.
-It achieves this by
-- assuring focus starts in the first editable input element on the page
-- allow traversing the (useable) form elements using tab or enter
-- allow page submit by pressing ctrl-enter
-
-To use it, include the following snippet in your template (probably the layout).
-It is recommended to include this is late as possible in your layout to assure the focus is not changed by script code which is executed after this.
-
-{code}
-<span t:type="equanda/FormTraversal"/>
-{code}
-
-To assure the first item on the focus receives focus (as controlled by this component), you need to turn off the tapestry built-in autofocus behaviour.
-This can be done by definint your form like this.
-{code}
-<t:form autofocus="false">
- ....
-</t:form>
-{code}
-
-The exact behaviour is influenced by the class on the elements.
-- defaultSubmit : the first element which can be found with this class is "clicked on" when the user presses ctrl-enter.
-- eqTravSkip : any element marked with this class never receives focus (skip)
-- eqTravFw : when going forward through the form using tab or enter, and an element with this class is encountered, then the element is "clicked on". This is for example used in the [Tabs|tabs.html] component to automatically move to the next tab.
-- eqTravBw : when going backward through the form using shift-tab, and an element with this class is encountered, then the element is "clicked on". This is for example used in the [Tabs|tabs.html] component to automatically move to the next tab.
-- eqTravMove : when an element is encountered with this class, then searching the next object continues at the object with the id given in the "href" attribute for the element (optionally preceded by a hash).
-- eqTravEnter : when a textarea is marked using this class, then enter jumps to a new line in the form.
-
-
-h2. ctrl-enter
-
-This key is used to submit the form. It looks for (the first) DOM object with class "defaultSubmit" and invokes that. You probably want to highlight that button.
-{code}
-.defaultSubmit {
- font-weight: bold;
-}
-{code}
-
-h2. enter
-
-To assure behaviour is consistent, pressing enter is (normally) considered the same as pressing tab.
-When inside a textarea (which is not marked with the class "eqTravEnter"), the user should press shift-enter to go to a new line.
-
-Differences with tab behaviour are
-- shift-enter does not move backwards
-- when pressing enter on an element marked with the class "defaultButton" then that element is "clicked on".
-- when pressing enter in a textarea, focus is still moved to the next element, except when the element is marked using the "eqTravEnter" class.
-
-h2. tab
-
-This moves forward or backward through the page. It only considers visible, enabled links, buttons and form elements, with the extra handling based on the classes as mentioned above.
\ No newline at end of file
Deleted: trunk/equanda-tapestry5/src/site/wiki/jspagedloop.wiki
===================================================================
--- trunk/equanda-tapestry5/src/site/wiki/jspagedloop.wiki 2008-12-03 10:04:57 UTC (rev 885)
+++ trunk/equanda-tapestry5/src/site/wiki/jspagedloop.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -1,28 +0,0 @@
-h1. Tabs
-
-JSPagedLoop component loops an iterable list of values and allows you to immediately jump to a particular page index within the overall data set without page submit.
-The component also allows you to add hidden items which can be displayed by clickin the "Add" link (again, without form submit).
-
-Parameters of the component :
-- clientId : the client id.
-- source : defines the collection of values for the loop to iterate over.
-- value : the current value.
-- volatile : same as standard Loop component.
-- index : the index into the source items.
-- elementName : The element to render. If not null, then the loop will render the indicated element around its body (on each pass through the loop). The default is derived from the component template.
-- rowsPerPage : the number of rows of data displayed on each page.
-- additionalRowCount : additional rows which can by dynamically added by Java Script.
-- addRowLinkTitle : title of the "Add" link.
-- objectCreatorDelegate : instance of _org.equanda.tapestry5.base.ObjectCreatorDelegate_ which allows to create new object and add it to the collection.
-
-To component can be passed set of block parameters: "empty" and "bottomBlock". "empty" block will be displayed when value collection is empty. "bottomBlock" will be displayed instead of the Java Script "Add" link when all additional rows are visible.
-
-{code}
-<div t:id="pagedLoop" t:type="equanda/JSPagedLoop" source="1..10" value="current" volatile="true" index="index" rowsPerPage="2" additionalRowCount="2" addRowLinkTitle="Add" objectCreatorDelegate="prop:this">
- <t:parameter name="empty"></t:parameter>
- <t:parameter name="bottomBlock">
- <t:equanda.formactionlink t:id="Add">Add</t:equanda.formactionlink>
- </t:parameter>
- <p>Current loop value is: ${current}</p>
-</div>
-{code}
\ No newline at end of file
Deleted: trunk/equanda-tapestry5/src/site/wiki/manifest.wiki
===================================================================
--- trunk/equanda-tapestry5/src/site/wiki/manifest.wiki 2008-12-03 10:04:57 UTC (rev 885)
+++ trunk/equanda-tapestry5/src/site/wiki/manifest.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -1,49 +0,0 @@
-h1. manifest binding prefix
-
-This binding allows you to include values from the manifest file. It will search through all manifest files, and on the first occurence of the key, the value will be returned.
-
-For example the following
-{code}
-${manifest:Build-Jdk}
-{code}
-will display the jdk which was used to build the jar containing the first manifest which contains the key.
-
-It is most practical for displaying version numbers etc. When the master pom for the project contains the following (here taken from equanda itself)
-{code}
-<plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>buildnumber-maven-plugin</artifactId>
- <executions>
- <execution>
- <phase>validate</phase>
- <goals>
- <goal>create</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <doCheck>false</doCheck>
- <doUpdate>false</doUpdate>
- </configuration>
-</plugin>
-<plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <configuration>
- <archive>
- <manifest>
- <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
- </manifest>
- <manifestEntries>
- <equanda-build>${buildNumber}</equanda-build>
- <equanda-version>${project.version}</equanda-version>
- </manifestEntries>
- </archive>
- </configuration>
-</plugin>
-{code}
-The including
-{code}
-equanda version used ${manifest:equanda-version}, build ${manifest:equanda-build}
-{code}
-Will display the data which was included at compile time.
Deleted: trunk/equanda-tapestry5/src/site/wiki/script.wiki
===================================================================
--- trunk/equanda-tapestry5/src/site/wiki/script.wiki 2008-12-03 10:04:57 UTC (rev 885)
+++ trunk/equanda-tapestry5/src/site/wiki/script.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -1,36 +0,0 @@
-h1. equanda provided scripts
-
-h2. equanda.js
-
-Can be used by adding the following in your page class :
-{code}
-@Inject
-@Path( "classpath:/org/equanda/tapestry5/resources/equanda.js" )
-private Asset equandaJs;
-
-public Asset getEquandaJs() { return equandaJs; }
-{code}
-And using this in your template as (in the "head" section) :
-{code}
-<script src="${equandaJs}" language="javascript" type="text/javascript" />
-{code}
-
-It provides the following javascript functions
-
-h3. equandaWindowHeight()
-
-Get the browser window height (browser independent). This can for example be used to assure an [Accordion|accordion.html] fills the height of the window.
-
-h3. equandaWindowWidth()
-
-Get the browser window width (browser independent).
-
-h3. eqCC() (equandaConvertCase)
-
-This function allow automatic case conversion on a input field. Use by adding a onkeyup event (extra parameter) handler on the input component.
-{code}
-onkeyup="eqCC( this, 2);"
-{code}
-This function eight does expects the form element to work on, and a value indicating how to convert the case.
-- 1 : convert everything to lower case
-- 2 : convert everything to upper case
Deleted: trunk/equanda-tapestry5/src/site/wiki/tabs.wiki
===================================================================
--- trunk/equanda-tapestry5/src/site/wiki/tabs.wiki 2008-12-03 10:04:57 UTC (rev 885)
+++ trunk/equanda-tapestry5/src/site/wiki/tabs.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -1,99 +0,0 @@
-h1. Tabs / MemTabs
-
-A tabs component which allows grouping objects in tab pages.
-
-You have to pass the title and content panes as parameters to the tabs component. There is currently a limitation of fifty panels. Only panels which have both a title and content parameter block are displayed, however the indexes do not need to be sequential (hence the need for a limit).
-You can specify a "titleIcon" parameter block which allows display a icon (or something else) on each tab.
-Parameter "exclude" allows to skip rendering of specified tab indicated by it's index. Negative "exclude" value will remove last N tabs;
-The currently selected pane is remembered between requests.
-- For the *Tabs* component this is done via a cookie that is identified by the component's id. This implies that tabs components with the same id on different pages will share this cookie. If this is not wanted than each tabs should get a unique id, even if they are on different page, or use MemTabs.
-- For the *MemTabs* component the state is persisted in the session and updated using an ajax request when you change tab.
-Using "contentAll" it is possible to have a banner displayed at the top of each tab page.
-
-The component has some built in features to function well in combination with the [FormTraversal|formtraversal.html] component. Specifically, moving between the fields on the form (using tab or enter) will also traverse to the next ir previous tb page when needed. You probably want to use CSS to hide the links which accomplish this.
-
-{code}
- <span t:type="equanda/Tabs" t:id="tabs" t:exclude="-1">
- <t:parameter name="title1">First title</t:parameter>
- <t:parameter name="content1">
- <p>This is the content for the first tab</p>
- <p>With some more text</p>
- </t:parameter>
- <t:parameter name="title2">Another title pane</t:parameter>
- <t:parameter name="content2">
- <p>With even more content</p>
- </t:parameter>
- <t:parameter name="title3">Latin text</t:parameter>
- <t:parameter name="content3">
- <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec libero ipsum, volutpat nec, posuere vitae, pulvinar ut, quam. Morbi fringilla pulvinar nisi. Cras luctus leo sed orci. In id mi eget nunc blandit nonummy. Morbi at lacus. Ut sed elit. Donec libero. Sed feugiat tempor erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla facilisi. Nam lorem mi, accumsan id, commodo sit amet, interdum sit amet, augue.</p>
- <p>Cras massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum accumsan neque vitae odio. Phasellus luctus arcu quis nibh. Maecenas leo. Ut aliquam hendrerit odio. Vestibulum luctus diam nec enim. Nam mi. Etiam eros turpis, ultrices et, ullamcorper nec, posuere sed, nisi. Integer placerat risus sit amet purus. Nulla elit purus, consequat sed, blandit in, feugiat bibendum, quam. In hac habitasse platea dictumst. Ut vel lorem. Ut pharetra leo. Sed sit amet felis. Nunc sed eros. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed elit metus, euismod sed, laoreet a, aliquam a, enim.</p>
- </t:parameter>
- <t:parameter name="title4">Excluded Title</t:parameter>
- <t:parameter name="content4">
- Excluded content
- </t:parameter>
- <t:parameter name="contentAll">
- <p>This banner should be repeated on all pages.</p>
- </t:parameter>
- </span>
-{code}
-
-How the tabs are displayed is handled using CSS. Below is an example of styling for the CSS.
-
-{code}
-.eqTabs {
- padding:0 3em;
- width:80%;
-}
-.eqTabsT {
- float:left;
- width:100%;
- margin: 0 0 0 0;
- list-style:none;
-}
-.eqTabsT li {
- float:left;
- padding:0 .5em 0 0;
-}
-.eqTabsT a:link,
-.eqTabsT a:visited,
-.eqTabsT a:active,
-.eqTabsT a:hover {
- width: 8em;
- padding: .2em 1em;
- display: block;
- background: lightgray;
- color: black;
- font-weight: bold;
- text-decoration: none;
-}
-.eqTabsT a:hover {
- background: gray;
- color: white;
-}
-.eqTabsP {
- border: solid 1px;
- clear: both;
- width: auto;
-}
-.eqTabsAll {
- border-bottom: solid 1px;
- background: beige;
- padding: 1em;
-}
-.eqTabsPC {
- background: white;
- padding: 1em;
-}
-a.eqTabsA:link,
-a.eqTabsA:visited,
-a.eqTabsA:active,
-a.eqTabsA:hover {
- background:black;
- color:white;
-}
-.eqTravFw,
-.eqTravBw {
- display: none;
-}
-{code}
Deleted: trunk/equanda-tapestry5/src/site/wiki/truncate.wiki
===================================================================
--- trunk/equanda-tapestry5/src/site/wiki/truncate.wiki 2008-12-03 10:04:57 UTC (rev 885)
+++ trunk/equanda-tapestry5/src/site/wiki/truncate.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -1,38 +0,0 @@
-h1. Truncate
-
-Component which allows truncating text to a maximum length. When the text is longer than the limitation, the full text is still displayed on mouse-over.
-
-You have to pass the text, length and suffix as parameters to the truncate component.
-
-{code}
-<span t:type="equanda/Truncate" t:length="20" t:suffix="..." t:text="literal:Very very long text very very long text very very long text"/>
-{code}
-
-Length and suffix are optional parameters. Default values are 30 and "...".
-These can be overwritten in your AppModule using code like
-{code}
- public static void contributeDefaults( MappedConfiguration<String, String> configuration )
- {
- configuration.add( "equanda.truncate.default.length", "30" );
- configuration.add( "equanda.truncate.default.suffix", "..." );
- }
-{code}
-
-
-Style can be overridden by declaring CSS class eqTrunCt.
-
-Default style is:
-
-{code}
-.eqTrunCt {
- position: absolute;
- padding: 5px;
- border: 1px solid black;
- font: normal 12px Verdana;
- line-height: 18px;
- z-index: 100;
- background-color: white;
- width: 250px;
- filter: progid:DXImageTransform.Microsoft.Shadow(color=gray,direction=140,Strength=4);
-}
-{code}
\ No newline at end of file
Deleted: trunk/equanda-tapestry5/src/site/wiki/validationtrackerdelegate.wiki
===================================================================
--- trunk/equanda-tapestry5/src/site/wiki/validationtrackerdelegate.wiki 2008-12-03 10:04:57 UTC (rev 885)
+++ trunk/equanda-tapestry5/src/site/wiki/validationtrackerdelegate.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -1,44 +0,0 @@
-h1. ValidationTrackerDelegate
-
-This is a component which can help you forward messages to the validation tracker.
-
-It can for example be used when you have a page (or it can be a component surrounding your form) where the onActivate or beginRender phases can produce messaged which need to be displayed in the validation tracker in your page.
-
-In your page you have to add the validationdelegate component to add allow the propagation of the messages
-{code}
-<t:form>
- <t:equanda.ValidationTrackerDelegate/>
- <t:errors/>
-
- .....
-
-</t:form>
-{code}
-
-Please note that the _ValidationTrackerDelegate_ should be before the _t:errors_ component.
-
-In your page or component, you do something like the following
-{code}
-@Inject
-private Environment environment;
-
-private String keepMessage;
-
-public void onActivate()
-{
- .... do whatever needs to be done
-
- .... if there is a problem do the following
- keepMessage = "error message";
-}
-
-void beginRender()
-{
- if ( null != keepMessage ) environment.push( MessageContainer.class, new MessageContainer( keepMessage ) );
-}
-
-void afterRender()
-{
- if ( null != keepMessage ) environment.pop( MessageContainer.class );
-}
-{code}
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2008-12-03 10:04:57 UTC (rev 885)
+++ trunk/pom.xml 2008-12-03 11:38:48 UTC (rev 886)
@@ -576,7 +576,7 @@
<properties>
<tapestry-release-version>5.0.17</tapestry-release-version>
<tapestry-commons-version>0.5.15</tapestry-commons-version>
- <staticwiki-release-version>0.9</staticwiki-release-version>
+ <staticwiki-release-version>0.9.1-SNAPSHOT</staticwiki-release-version>
</properties>
</project>
Modified: trunk/src/site/wiki/gettingstarted.wiki
===================================================================
--- trunk/src/site/wiki/gettingstarted.wiki 2008-12-03 10:04:57 UTC (rev 885)
+++ trunk/src/site/wiki/gettingstarted.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -10,7 +10,7 @@
This will create a mostly empty example project in the "example" subdirectory. The base package for the classes is "org.equanda.example".
-For more details about the archetype, [see here|equanda-maven-plugin/archetype.html].
+For more details about the archetype, [see here|plugin/archetype.html].
The archetype create a project with everything in place to start using equanda, bu also has some features that will be useful when your want to use more of the features.
Modified: trunk/src/site/wiki/index.wiki
===================================================================
--- trunk/src/site/wiki/index.wiki 2008-12-03 10:04:57 UTC (rev 885)
+++ trunk/src/site/wiki/index.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -46,7 +46,7 @@
The following aspects of the application can be generated.
-h3. [EJB3 persistence layer|equanda-generate/templates/ejb3.html]
+h3. EJB3 persistence layer
Domain model description options
- (multiple) inheritance
@@ -68,8 +68,10 @@
As a bonus, when your client only uses the proxies, it is straightforward to replace the backend (this way the data could for example be based on webservices instead of EJB3 entity beans).
-h3. [tapestry5 user interface|equanda-generate/templates/t5gui.html]
+[More details about the generated EJB3 persistence layer.|templates/ejb3.html]
+h3. tapestry5 user interface
+
- thin client, all browsers, no need for ActiveX activation of client side java
- easy/efficient keyboard navigation
- powerful automatic cross linking of records
@@ -86,33 +88,43 @@
(*) ^Items marked like this are available in the old tapestry4 version and will be available again for the tapestry5 version.^
-h3. [user management support|equanda-generate/templates/login.html]
+[More details about the generated tapestry5 user interface.|templates/t5gui.html]
+h3. user management support
+
equanda uses an internal mechanism to configure the very granular access rights for the user interface. This is based on user information in the database. This module allows you to generate a login module which prevents duplication of user information between the application and the JAAS module.
-h3. [import data|equanda-generate/templates/import.html]
+[More details about the generated user management support.|templates/login.html]
+h3. import data
+
It is possible to generate code which can be used to import data from a CVS-like text file.
-h3. [ddltool|equanda-generate/templates/ddltool.html]
+[More details about the generated import data.|equanda-generate/templates/import.html]
+h3. ddltool
+
This allows generation of a tool which handles database update (and optionally partial cleanup).
-h3. [domain model documentation|equanda-generate/templates/docs.html]
+[More details about the generated ddltool.|templates/ddltool.html]
+h3. domain model documentation
+
Documentation for the domain model can be generated. This includes html documentation, a Freemind mindmap and owl.
+[More details about the generated domain model documentation.|templates/docs.html]
+
h2. equanda modules
equanda contains several modules.
-- [client|equanda-client/index.html] : client side code. This module needs to be included by the client components for equanda applications.
-- [server|equanda-server/index.html] : server side code which is needed for the equanda framework
-- [generate|equanda-generate/index.html] : module which handles the code generation, processing the domain model and contains the templates.
-- [maven-plugin|equanda-maven-plugin/index.html] : maven plugin which allows the generation to be done as part of a maven build cycle, but also for editing the translations and doing a database update
+- client : client side code. This module needs to be included by the client components for equanda applications.
+- server : server side code which is needed for the equanda framework
+- [generate|generate.html] : module which handles the code generation, processing the domain model and contains the templates.
+- maven-plugin : maven plugin which allows the generation to be done as part of a maven build cycle, but also for editing the translations and doing a database update
- [tapestry5|equanda-tapestry5/index.html] : collection of tapestry5 components which can also be used outside of equanda applications
-- [t5gui|equanda-t5gui/index.html] : collection of tapestry5 components which are specific for equanda generated applications
-- [tool|equanda-tool/index.html] : tool provided for import, export, remote printing of reports
-- [util|equanda-util/index.html] : contains several utility classes containing (amongst others) ean128 barcode support, [FScript|http://fscript.sf.net/] extensions, useful Swing classes
+- [t5gui|t5gui.wiki] : collection of tapestry5 components which are specific for equanda generated applications
+- tool : tool provided for import, export, remote printing of reports
+- util : contains several utility classes containing (amongst others) ean128 barcode support, [FScript|http://fscript.sf.net/] extensions, useful Swing classes
- test : this module is used to do integration testing. It is only included when the "-Dfulltest" switch is used in maven.
Copied: trunk/src/site/wiki/tool/accordion.wiki (from rev 883, trunk/equanda-tapestry5/src/site/wiki/accordion.wiki)
===================================================================
--- trunk/src/site/wiki/tool/accordion.wiki (rev 0)
+++ trunk/src/site/wiki/tool/accordion.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -0,0 +1,70 @@
+h1. Accordion
+
+An accordion component integrates nicely in tapestry.
+
+You have to pass the title and content panes as parameters to the accordion component. There is currently a limitation of fifty panels. Only panels which have both a title and content parameter block are displayed, however the indexes do not need to be sequential (hence the need for a limit).
+Parameter "exclude" allows to skip rendering of specified tab indicated by it's index. Negative "exclude" value will remove last N tabs;
+The currently selected pane is remembered between requests.
+- For the *Accordion* component this is done via a cookie that is identified by the component's id. This implies that accordion components with the same id on different pages will share this cookie. If this is not wanted than each accordion component should get a unique id, even if they are on different page, or use MemAccordion.
+{private}
+- For the *MemAccordion* component the state is persisted in the session and updated using an ajax request when you change tab.
+
+{private}
+
+{code}
+ <span t:type="equanda/Accordion" t:id="accordion">
+ <t:parameter name="title1">First title</t:parameter>
+ <t:parameter name="content1">
+ <p>This is the content for the first pane</p>
+ <p>With some more text</p>
+ </t:parameter>
+ <t:parameter name="title2">Another title pane</t:parameter>
+ <t:parameter name="content2">
+ <p>With even more content</p>
+ </t:parameter>
+ <t:parameter name="title3">Latin text</t:parameter>
+ <t:parameter name="content3">
+ <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec libero ipsum, volutpat nec, posuere vitae, pulvinar ut, quam. Morbi fringilla pulvinar nisi. Cras luctus leo sed orci. In id mi eget nunc blandit nonummy. Morbi at lacus. Ut sed elit. Donec libero. Sed feugiat tempor erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla facilisi. Nam lorem mi, accumsan id, commodo sit amet, interdum sit amet, augue.</p>
+ <p>Cras massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum accumsan neque vitae odio. Phasellus luctus arcu quis nibh. Maecenas leo. Ut aliquam hendrerit odio. Vestibulum luctus diam nec enim. Nam mi. Etiam eros turpis, ultrices et, ullamcorper nec, posuere sed, nisi. Integer placerat risus sit amet purus. Nulla elit purus, consequat sed, blandit in, feugiat bibendum, quam. In hac habitasse platea dictumst. Ut vel lorem. Ut pharetra leo. Sed sit amet felis. Nunc sed eros. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed elit metus, euismod sed, laoreet a, aliquam a, enim.</p>
+ </t:parameter>
+ </span>
+{code}
+
+The component automatically handles the hiding of all (except one) panel at the start, and making sure the correct pane is selected when the title is clicked on.
+
+How the accordion is displayed is handled using CSS. The classes which are used depend on the accordion component id. This also assures it will work when there are several accordion components on a page (just assure they have a different id).
+
+{code}
+.accordion_tit {
+ background-color: lightgray;
+ color: black;
+ height: 15px;
+ font-weight: normal;
+ padding-left: 5px;
+ padding-top: 3px;
+ padding-bottom: 3px;
+ cursor: pointer;
+}
+
+.accordion_tit a:link,
+.accordion_tit a:visited,
+.accordion_tit a:active,
+.accordion_tit a:hover {
+ color: black;
+ text-decoration: none;
+}
+
+.accordion_atit {
+ font-weight: bold;
+}
+
+.accordion_ct {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ padding-left: 10px;
+ padding-right: 2px;
+ background-color: beige;
+ overflow: auto;
+ height: 200px;
+}
+{code}
Copied: trunk/src/site/wiki/tool/breadcrumbs.wiki (from rev 883, trunk/equanda-tapestry5/src/site/wiki/breadcrumbs.wiki)
===================================================================
--- trunk/src/site/wiki/tool/breadcrumbs.wiki (rev 0)
+++ trunk/src/site/wiki/tool/breadcrumbs.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -0,0 +1,49 @@
+h1. Breadcrumbs
+
+The breadcrumbs components displays a list of links that have been visited as the user navigates through the tapestry pages. The user can select a previously visited crumb which will take them back to that page without losing any of their session information. When moving to a crumb, this will also reset the breadcrumbs to the state at the time the page was visited.
+
+{code}
+ <t:type="equanda/Breadcrumb" t:id="breadcrumb"/>
+{code}
+
+As the user navigates through the pages, the page they are coming from is appended to the end of the breadcrumbs (done by the application code). The breadcrumb name appended is the page title.
+Certain links should clear the breadcrumbs component when clicked. A variant of the pagelink component which has this behaviour should be provided.
+
+*Session retrieval*
+As the list of breadcrumbs grows, it should be possible to select any of the crumbs. When this happens, the current breadcrumb list should be shortened to indicate that the current page is the last crumb in the list. Also, the current state of this page (and the entire web session) should be as it was when the user left it.
+
+To support the latter, a conversation ID must be added as a query on the URL. E.g
+{code}
+http://localhost:8080/eportfolio-dp/assertionedit/srX8M5rTTo1RRn?cid=00112233445566
+{code}
+This will be a 14-digit code (UOID can be used). When a new page is selected, the existing session is serialized (using JBoss serialization library) and added to the EquandaNavigation table. This session can then be retrieved once the CID is known.
+
+h2. Implementation
+
+h3. BreadCrumbs Component
+
+A new BreadCrumbs component will be created. This will store the state in a ASO (application state object).
+This ASO should provide at least the following methods :
+- clear
+- add page : add using a link (with correct handling of the conversation), title and context. The context is used to determine whether the most recent page from the breadcrumb should be replaced or not. This is for example useful when switching between different selector pages for a table.
+
+h3. Conversation filter
+
+The conversation filter serves two purposes.
+- assure the session state is restored when clinking a link in the breadcrumbs.
+- allow multi-tabbed use inside the application (and hopefully also correct back button handling).
+
+The principle is simple, the session state is stored in the EquandaNavigation table (see org.equanda.infrastructure.infrastructure.xml, currently commented).
+When a page is visited, if the conversion id is retrieved, the session state is restored based on the conversation id to assure correct session state.
+
+This should be implementable using a request filter.
+
+When a page request comes in, the conversation id is retrieved. This is done first by looking at the url, and if that fails the "Referer" header is examined to see if that contains a conversaton id.
+If a conversation id was found, the session state is replaced by the stored stated from the conversation.
+The conversation is then investigate to see if it was marked as "starting". In that case a new EquandaNavigation object is created, the session state copied into it and the "starting" state set. A http redirect is then returned with the requesting url with the id of the new navigation object as new location (302 status with "Location" header).
+
+On the outbound path of the page request, the session state should be stored in a new EquandaNavigation object (serialized using JBoss serialization) and the "starting" flag is cleared.
+
+For requests which are not page requests, an attempt should be made to figure out the conversation state from the request and referer url. If a conversation id is found, then the session should be replaced based on that.
+
+It will need to be verified that ajax requests will be fully functional when two conversations are ongoing in different tabs in the browser.
Copied: trunk/src/site/wiki/tool/formactionlink.wiki (from rev 883, trunk/equanda-tapestry5/src/site/wiki/formactionlink.wiki)
===================================================================
--- trunk/src/site/wiki/tool/formactionlink.wiki (rev 0)
+++ trunk/src/site/wiki/tool/formactionlink.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -0,0 +1,25 @@
+h1. FormActionLink
+
+This is a component which looks and feels like a standard Tapestry [ActionLink|http://tapestry.apache.org/tapestry5/tapestry-core/ref/org/apache/tapestry/corelib/components/ActionLink.html]. However, this is supposed to be used inside a equanda/Form component and then assures that the form is submitted (and thus state saved) before actually processing the action.
+
+This component only works when embedded in a ["equanda/FormSupport"|formsupport.html] component which is correctly intergrated. Otherwise it does nothing.
+
+Simple example of use :
+{code}
+<t:form>
+ <div t:id="formSupport">
+
+ <t:errors/>
+
+ <t:equanda.formactionlink t:id="DoSomething">Do something</t:equanda.formactionlink>
+
+ </div>
+</t:form>
+{code}
+And in the code, just act as a normal actionlink :
+{code}
+Object onActionFromDoSomething()
+{
+ // now something should be done :-)
+}
+{code}
Copied: trunk/src/site/wiki/tool/formsupport.wiki (from rev 883, trunk/equanda-tapestry5/src/site/wiki/formsupport.wiki)
===================================================================
--- trunk/src/site/wiki/tool/formsupport.wiki (rev 0)
+++ trunk/src/site/wiki/tool/formsupport.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -0,0 +1,29 @@
+h1. FormSupport
+
+This component needs to be integrated in a form to allow the [FormActionLink|formactionlink.html] component to work.
+It needs to be integrated both in your template and some support code added in the page or component class which includes it.
+
+This handles the magic which assures the FormActionLinks actually work.
+
+How to include in the template:
+{code}
+<t:form>
+ <div t:id="formSupport">
+
+ <t:errors/>
+
+ <!-- include your form content here -->
+
+ </div>
+</t:form>
+{code}
+In the component of page class, the following needs to be put.
+{code}
+@Component
+private FormSupport formSupport;
+
+public Object onSubmit()
+{
+ return formSupport.getLinkTarget();
+}
+{code}
Copied: trunk/src/site/wiki/tool/formtraversal.wiki (from rev 883, trunk/equanda-tapestry5/src/site/wiki/formtraversal.wiki)
===================================================================
--- trunk/src/site/wiki/tool/formtraversal.wiki (rev 0)
+++ trunk/src/site/wiki/tool/formtraversal.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -0,0 +1,54 @@
+h1. FormTraversal
+
+This component is intended to give consistent user interface behaviour which allows easy and efficient form completion without using a mouse.
+It achieves this by
+- assuring focus starts in the first editable input element on the page
+- allow traversing the (useable) form elements using tab or enter
+- allow page submit by pressing ctrl-enter
+
+To use it, include the following snippet in your template (probably the layout).
+It is recommended to include this is late as possible in your layout to assure the focus is not changed by script code which is executed after this.
+
+{code}
+<span t:type="equanda/FormTraversal"/>
+{code}
+
+To assure the first item on the focus receives focus (as controlled by this component), you need to turn off the tapestry built-in autofocus behaviour.
+This can be done by definint your form like this.
+{code}
+<t:form autofocus="false">
+ ....
+</t:form>
+{code}
+
+The exact behaviour is influenced by the class on the elements.
+- defaultSubmit : the first element which can be found with this class is "clicked on" when the user presses ctrl-enter.
+- eqTravSkip : any element marked with this class never receives focus (skip)
+- eqTravFw : when going forward through the form using tab or enter, and an element with this class is encountered, then the element is "clicked on". This is for example used in the [Tabs|tabs.html] component to automatically move to the next tab.
+- eqTravBw : when going backward through the form using shift-tab, and an element with this class is encountered, then the element is "clicked on". This is for example used in the [Tabs|tabs.html] component to automatically move to the next tab.
+- eqTravMove : when an element is encountered with this class, then searching the next object continues at the object with the id given in the "href" attribute for the element (optionally preceded by a hash).
+- eqTravEnter : when a textarea is marked using this class, then enter jumps to a new line in the form.
+
+
+h2. ctrl-enter
+
+This key is used to submit the form. It looks for (the first) DOM object with class "defaultSubmit" and invokes that. You probably want to highlight that button.
+{code}
+.defaultSubmit {
+ font-weight: bold;
+}
+{code}
+
+h2. enter
+
+To assure behaviour is consistent, pressing enter is (normally) considered the same as pressing tab.
+When inside a textarea (which is not marked with the class "eqTravEnter"), the user should press shift-enter to go to a new line.
+
+Differences with tab behaviour are
+- shift-enter does not move backwards
+- when pressing enter on an element marked with the class "defaultButton" then that element is "clicked on".
+- when pressing enter in a textarea, focus is still moved to the next element, except when the element is marked using the "eqTravEnter" class.
+
+h2. tab
+
+This moves forward or backward through the page. It only considers visible, enabled links, buttons and form elements, with the extra handling based on the classes as mentioned above.
\ No newline at end of file
Copied: trunk/src/site/wiki/tool/jspagedloop.wiki (from rev 883, trunk/equanda-tapestry5/src/site/wiki/jspagedloop.wiki)
===================================================================
--- trunk/src/site/wiki/tool/jspagedloop.wiki (rev 0)
+++ trunk/src/site/wiki/tool/jspagedloop.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -0,0 +1,28 @@
+h1. Tabs
+
+JSPagedLoop component loops an iterable list of values and allows you to immediately jump to a particular page index within the overall data set without page submit.
+The component also allows you to add hidden items which can be displayed by clickin the "Add" link (again, without form submit).
+
+Parameters of the component :
+- clientId : the client id.
+- source : defines the collection of values for the loop to iterate over.
+- value : the current value.
+- volatile : same as standard Loop component.
+- index : the index into the source items.
+- elementName : The element to render. If not null, then the loop will render the indicated element around its body (on each pass through the loop). The default is derived from the component template.
+- rowsPerPage : the number of rows of data displayed on each page.
+- additionalRowCount : additional rows which can by dynamically added by Java Script.
+- addRowLinkTitle : title of the "Add" link.
+- objectCreatorDelegate : instance of _org.equanda.tapestry5.base.ObjectCreatorDelegate_ which allows to create new object and add it to the collection.
+
+To component can be passed set of block parameters: "empty" and "bottomBlock". "empty" block will be displayed when value collection is empty. "bottomBlock" will be displayed instead of the Java Script "Add" link when all additional rows are visible.
+
+{code}
+<div t:id="pagedLoop" t:type="equanda/JSPagedLoop" source="1..10" value="current" volatile="true" index="index" rowsPerPage="2" additionalRowCount="2" addRowLinkTitle="Add" objectCreatorDelegate="prop:this">
+ <t:parameter name="empty"></t:parameter>
+ <t:parameter name="bottomBlock">
+ <t:equanda.formactionlink t:id="Add">Add</t:equanda.formactionlink>
+ </t:parameter>
+ <p>Current loop value is: ${current}</p>
+</div>
+{code}
\ No newline at end of file
Copied: trunk/src/site/wiki/tool/manifest.wiki (from rev 883, trunk/equanda-tapestry5/src/site/wiki/manifest.wiki)
===================================================================
--- trunk/src/site/wiki/tool/manifest.wiki (rev 0)
+++ trunk/src/site/wiki/tool/manifest.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -0,0 +1,49 @@
+h1. manifest binding prefix
+
+This binding allows you to include values from the manifest file. It will search through all manifest files, and on the first occurence of the key, the value will be returned.
+
+For example the following
+{code}
+${manifest:Build-Jdk}
+{code}
+will display the jdk which was used to build the jar containing the first manifest which contains the key.
+
+It is most practical for displaying version numbers etc. When the master pom for the project contains the following (here taken from equanda itself)
+{code}
+<plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>buildnumber-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>validate</phase>
+ <goals>
+ <goal>create</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <doCheck>false</doCheck>
+ <doUpdate>false</doUpdate>
+ </configuration>
+</plugin>
+<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifest>
+ <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+ </manifest>
+ <manifestEntries>
+ <equanda-build>${buildNumber}</equanda-build>
+ <equanda-version>${project.version}</equanda-version>
+ </manifestEntries>
+ </archive>
+ </configuration>
+</plugin>
+{code}
+The including
+{code}
+equanda version used ${manifest:equanda-version}, build ${manifest:equanda-build}
+{code}
+Will display the data which was included at compile time.
Copied: trunk/src/site/wiki/tool/script.wiki (from rev 883, trunk/equanda-tapestry5/src/site/wiki/script.wiki)
===================================================================
--- trunk/src/site/wiki/tool/script.wiki (rev 0)
+++ trunk/src/site/wiki/tool/script.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -0,0 +1,36 @@
+h1. equanda provided scripts
+
+h2. equanda.js
+
+Can be used by adding the following in your page class :
+{code}
+@Inject
+@Path( "classpath:/org/equanda/tapestry5/resources/equanda.js" )
+private Asset equandaJs;
+
+public Asset getEquandaJs() { return equandaJs; }
+{code}
+And using this in your template as (in the "head" section) :
+{code}
+<script src="${equandaJs}" language="javascript" type="text/javascript" />
+{code}
+
+It provides the following javascript functions
+
+h3. equandaWindowHeight()
+
+Get the browser window height (browser independent). This can for example be used to assure an [Accordion|accordion.html] fills the height of the window.
+
+h3. equandaWindowWidth()
+
+Get the browser window width (browser independent).
+
+h3. eqCC() (equandaConvertCase)
+
+This function allow automatic case conversion on a input field. Use by adding a onkeyup event (extra parameter) handler on the input component.
+{code}
+onkeyup="eqCC( this, 2);"
+{code}
+This function eight does expects the form element to work on, and a value indicating how to convert the case.
+- 1 : convert everything to lower case
+- 2 : convert everything to upper case
Copied: trunk/src/site/wiki/tool/tabs.wiki (from rev 883, trunk/equanda-tapestry5/src/site/wiki/tabs.wiki)
===================================================================
--- trunk/src/site/wiki/tool/tabs.wiki (rev 0)
+++ trunk/src/site/wiki/tool/tabs.wiki 2008-12-03 11:38:48 UTC (rev 886)
@@ -0,0 +1,99 @@
+h1. Tabs / MemTabs
+
+A tabs component which allows grouping objects in tab pages.
+
+You have to pass the title and content panes as parameters to the tabs component. There is currently a limitation of fifty panels. Only panels which have both a title and content parameter block are displayed, however the indexes do not need to be sequential (hence the need for a limit).
+You can specify a "titleIcon" parameter block which allows display a icon (or something else) on each tab.
+Parameter "exclude" allows to skip rendering of specified tab indicated by it's index. Negative "exclude" value will remove last N tabs;
+The currently selected pane is remembered between requests.
+- For the *Tabs* component this is done via a cookie that is identified by the component's id. This implies that tabs components with the same id on different pages will share this cookie. If this is not wanted than each tabs should get a unique id, even if they are on different page, or use MemTabs.
+- For the *MemTabs* component the state is persisted in the session and updated using an ajax request when you change tab.
+Using "contentAll" it is possible to have a banner displayed at the top of each tab page.
+
+The component has some built in features to function well in combination with the [FormTraversal|formtraversal.html] component. Specifically, moving between the fields on the form (using tab or enter) will also traverse to the next ir previous tb page when needed. You probably want to use CSS to hide the links which accomplish this.
+
+{code}
+ <span t:type="equanda/Tabs" t:id="tabs" t:exclude="-1">
+ <t:parameter name="title1">First title</t:parameter>
+ <t:parameter name="content1">
+ <p>This is the content for the first tab</p>
+ <p>With some more text</p>
+ </t:parameter>
+ <t:parameter name="title2">Another title pane</t:parameter>
+ <t:parameter name="content2">
+ <p>With even more content</p>
+ </t:parameter>
+ <t:parameter name="title3">Latin text</t:parameter>
+ <t:parameter name="content3">
+ <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec libero ipsum, volutpat nec, posuere vitae, pulvinar ut, quam. Morbi fringilla pulvinar nisi. Cras luctus leo sed orci. In id mi eget nunc blandit nonummy. Morbi at lacus. Ut sed elit. Donec libero. Sed feugiat tempor erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla facilisi. Nam lorem mi, accumsan id, commodo sit amet, interdum sit amet, augue.</p>
+ <p>Cras massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum accumsan neque vitae odio. Phasellus luctus arcu quis nibh. Maecenas leo. Ut aliquam hendrerit odio. Vestibulum luctus diam nec enim. Nam mi. Etiam eros turpis, ultrices et, ullamcorper nec, posuere sed, nisi. Integer placerat risus sit amet purus. Nulla elit purus, consequat sed, blandit in, feugiat bibendum, quam. In hac habitasse platea dictumst. Ut vel lorem. Ut pharetra leo. Sed sit amet felis. Nunc sed eros. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed elit metus, euismod sed, laoreet a, aliquam a, enim.</p>
+ </t:parameter>
+ <t:parameter name="title4">Excluded Title</t:parameter>
+ <t:parameter name="content4">
+ Excluded content
+ </t:parameter>
+ <t:parameter name="contentAll">
+ <p>This banner should be repeated on all pages.</p>
+ </t:parameter>
+ </span>
+{code}
+
+How the tabs are displayed is handled using CSS....
[truncated message content] |