[jboss-cvs] jboss-seam/examples/wiki/view ...

Christian Bauer christian at hibernate.org
Tue Dec 18 23:29:19 EST 2007


  User: cbauer  
  Date: 07/12/18 23:29:19

  Modified:    examples/wiki/view                           
                        dirDisplayPlain.xhtml dirDisplay_m.xhtml
                        dirDisplay_d.xhtml dirEdit_m.xhtml
                        docHistory_d.xhtml dirEdit_d.xhtml
                        docDisplay_m.xhtml docHistory_m.xhtml
                        search_d.xhtml tagDisplay_d.xhtml userHome_d.xhtml
                        docDisplayPlain.xhtml docDisplay_d.xhtml
                        docEdit_m.xhtml adminHome_d.xhtml userList_d.xhtml
                        docEdit_d.xhtml userRegister_d.xhtml
  Added:       examples/wiki/view                           
                        uploadCreate_d.xhtml userInfo_d.xhtml
                        testtemplate.xhtml uploadEdit_m.xhtml
                        userInfo_m.xhtml uploadEdit_d.xhtml
                        uploadCreate_m.xhtml
  Removed:     examples/wiki/view                           
                        fileEdit_d.xhtml fileEdit_m.xhtml
  Log:
  Major rewrite of the most of the application
  
  Revision  Changes    Path
  1.2       +18 -18    jboss-seam/examples/wiki/view/dirDisplayPlain.xhtml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: dirDisplayPlain.xhtml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/view/dirDisplayPlain.xhtml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- dirDisplayPlain.xhtml	24 Sep 2007 08:23:19 -0000	1.1
  +++ dirDisplayPlain.xhtml	19 Dec 2007 04:29:18 -0000	1.2
  @@ -17,8 +17,8 @@
   
           <h:panelGroup>
               <s:link view="/dirDisplayPlain.xhtml" tabindex="1" accesskey="."
  -                    rendered="#{!empty directoryHome.parentDirectory and s:hasPermission('Node','read',directoryHome.parentDirectory)}">
  -                <f:param name="directoryId" value="#{directoryHome.parentDirectory.id}"/>
  +                    rendered="#{!empty directoryHome.parentNode and s:hasPermission('Node','read',directoryHome.parentNode)}">
  +                <f:param name="directoryId" value="#{directoryHome.parentNode.id}"/>
                   <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.dirup.gif" width="18" height="20"
                                   style="vertical-align:middle;border:0;margin-bottom:-2px;margin-top:-3px;margin-right:10px;"/>
               </s:link>
  @@ -40,23 +40,23 @@
           </h:panelGroup>
       </div>
   
  -    <s:div styleClass="directoryEmpty" rendered="#{empty directoryHome.instance.children}">
  +    <s:div styleClass="directoryEmpty" rendered="#{empty directoryHome.childNodes}">
               <s:link view="/dirDisplayPlain.xhtml" tabindex="1" accesskey="."
  -                    rendered="#{!empty directoryHome.parentDirectory and s:hasPermission('Node','read',directoryHome.parentDirectory)}">
  -                <f:param name="directoryId" value="#{directoryHome.parentDirectory.id}"/>
  +                    rendered="#{!empty directoryHome.parentNode and s:hasPermission('Node','read',directoryHome.parentNode)}">
  +                <f:param name="directoryId" value="#{directoryHome.parentNode.id}"/>
                   <h:panelGrid columns="2">
                       <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.dirup.gif" width="18" height="20"/>
                       <h:outputText value=".."/>
                   </h:panelGrid>
               </s:link>
  -            <h:outputText rendered="#{empty directoryHome.parentDirectory or !s:hasPermission('Node','read',directoryHome.parentDirectory)}"
  +            <h:outputText rendered="#{empty directoryHome.parentNode or !s:hasPermission('Node','read',directoryHome.parentNode)}"
                             value="This directory is empty."/>
   
       </s:div>
   
       <h:dataTable id="directoryTable" var="node"
  -                 value="#{directoryHome.instance.children}"
  -                 rendered="#{!empty directoryHome.instance.children}"
  +                 value="#{directoryHome.childNodes}"
  +                 rendered="#{!empty directoryHome.childNodes}"
                    styleClass="datatable topLeftBottomBorder"
                    headerClass="regularHeader rightBorder"
                    columnClasses="onePercentColumn rightBorder alignCenter, defaultColumn rightBorder alignLeft"
  @@ -66,25 +66,25 @@
           <h:column>
               <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.dir.gif"
                               width="18" height="20"
  -                            rendered="#{wiki:isDirectory(node)}"/>
  +                            rendered="#{node.isInstance('WikiDirectory')}"/>
               <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.doc.gif"
                               width="18" height="20"
  -                            rendered="#{wiki:isDocument(node) and node != directoryHome.instance.defaultDocument}"/>
  +                            rendered="#{node.isInstance('WikiDocument') and node != directoryHome.instance.defaultFile}"/>
               <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.doc.default.gif"
                               width="18" height="20"
  -                            rendered="#{wiki:isDocument(node) and node == directoryHome.instance.defaultDocument}"/>
  +                            rendered="#{node.isInstance('WikiDocument') and node == directoryHome.instance.defaultFile}"/>
   
  -            <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{fileMetaMap[node.contentType].displayIcon}"
  +            <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{uploadTypes[node.contentType].displayIcon}"
                               width="18" height="20"
  -                            rendered="#{wiki:isFile(node) and !empty fileMetaMap[node.contentType]}"/>
  -            <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{fileMetaMap['generic'].displayIcon}"
  +                            rendered="#{node.isInstance('WikiUpload') and !empty uploadTypes[node.contentType]}"/>
  +            <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{uploadTypes['generic'].displayIcon}"
                               width="18" height="20"
  -                            rendered="#{wiki:isFile(node) and empty fileMetaMap[node.contentType]}"/>
  +                            rendered="#{node.isInstance('WikiUpload') and empty uploadTypes[node.contentType]}"/>
           </h:column>
   
           <h:column>
   
  -            <s:span rendered="#{wiki:isDirectory(node)}">
  +            <s:span rendered="#{node.isInstance('WikiDirectory')}">
                   <s:link id="browseDirectory" value="#{wiki:truncateString(node.name, 40, '...')}"
                           view="/dirDisplayPlain.xhtml"
                           rendered="#{s:hasPermission('Node','read',node)}" tabindex="2">
  @@ -93,14 +93,14 @@
                   <h:outputText value="#{wiki:truncateString(node.name, 40, '...')}" rendered="#{!s:hasPermission('Node','read',node)}"/>
               </s:span>
   
  -            <s:span rendered="#{wiki:isDocument(node)}">
  +            <s:span rendered="#{node.isInstance('WikiDocument')}">
                   <h:outputLink value="#{wiki:renderPlainURL(node)}" rendered="#{s:hasPermission('Node','read',node)}" tabindex="2">
                       <h:outputText value="#{wiki:truncateString(node.name, 40, '...')}"/>
                   </h:outputLink>
                   <h:outputText value="#{node.name}" rendered="#{!s:hasPermission('Node','read',node)}"/>
               </s:span>
   
  -            <h:panelGroup rendered="#{wiki:isFile(node) and !s:hasPermission('Node', 'edit', node)}">
  +            <h:panelGroup rendered="#{node.isInstance('WikiUpload') and !s:hasPermission('Node', 'edit', node)}">
                   <h:outputLink value="#{wiki:renderPlainURL(node)}">
                       <h:outputText value="#{wiki:truncateString(node.name, 30, '...')} (#{wiki:displayFilesize(node.filesize)}, #{node.contentType})"/>
                   </h:outputLink>
  
  
  
  1.3       +30 -28    jboss-seam/examples/wiki/view/dirDisplay_m.xhtml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: dirDisplay_m.xhtml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/view/dirDisplay_m.xhtml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- dirDisplay_m.xhtml	12 Oct 2007 16:31:24 -0000	1.2
  +++ dirDisplay_m.xhtml	19 Dec 2007 04:29:18 -0000	1.3
  @@ -12,7 +12,7 @@
   
   <ui:define name="control">
   
  -    <s:fragment rendered="#{!empty directoryHome.parentDirectory}">
  +    <s:fragment rendered="#{!empty directoryHome.parentNode}">
   
           <s:link id="createDir" styleClass="linkNavigation"
                   accesskey="#{messages['lacewiki.button.CreateSubdirectory.accesskey']}"
  @@ -22,14 +22,14 @@
               <f:param name="directoryId"/>
               <f:param name="parentDirectoryId" value="#{directoryHome.instance.id}"/>
           </s:link>
  -
  +        &#160;
           <s:link id="editDir" styleClass="linkNavigation"
                   accesskey="#{messages['lacewiki.button.EditDirectory.accesskey']}"
                   view="/dirEdit_#{skin}.xhtml"
                   rendered="#{s:hasPermission('Node', 'edit', directoryHome.instance)}">
               <h:outputText escape="false" value="#{messages['lacewiki.button.EditDirectory']}"/>
           </s:link>
  -
  +        &#160;
           <s:link id="createDoc" styleClass="linkNavigation"
                   accesskey="#{messages['lacewiki.button.NewDocument.accesskey']}"
                   view="/docEdit_#{skin}.xhtml"
  @@ -38,19 +38,19 @@
               <f:param name="documentId"/>
               <f:param name="parentDirectoryId" value="#{directoryHome.instance.id}"/>
           </s:link>
  -
  +        &#160;
           <s:link id="uploadFile" styleClass="linkNavigation"
                   accesskey="#{messages['lacewiki.button.UploadFile.accesskey']}"
  -                view="/fileEdit_#{skin}.xhtml"
  +                view="/uploadCreate_#{skin}.xhtml"
                   rendered="#{s:hasPermission('Node', 'create', directoryHome.instance)}">
               <h:outputText escape="false" value="#{messages['lacewiki.button.UploadFile']}"/>
  -            <f:param name="fileId"/>
               <f:param name="parentDirectoryId" value="#{directoryHome.instance.id}"/>
           </s:link>
  +        &#160;
   
       </s:fragment>
   
  -    <s:fragment rendered="#{empty directoryHome.parentDirectory}">
  +    <s:fragment rendered="#{empty directoryHome.parentNode}">
           <s:link id="createArea" styleClass="linkNavigation"
                   accesskey="#{messages['lacewiki.button.NewArea.accesskey']}"
                   view="/dirEdit_#{skin}.xhtml"
  @@ -96,23 +96,25 @@
       </h:panelGroup>
   </div>
   
  -<s:div styleClass="directoryEmpty" rendered="#{empty directoryHome.instance.children}">
  +<s:div styleClass="directoryEmpty" rendered="#{empty directoryHome.childNodes}">
           <s:link view="/dirDisplay_#{skin}.xhtml" tabindex="1" accesskey="."
  -                rendered="#{!empty directoryHome.parentDirectory and s:hasPermission('Node','read',directoryHome.parentDirectory)}">
  -            <f:param name="directoryId" value="#{directoryHome.parentDirectory.id}"/>
  +                rendered="#{!empty directoryHome.parentNode and s:hasPermission('Node','read',directoryHome.parentNode)}">
  +            <f:param name="directoryId" value="#{directoryHome.parentNode.id}"/>
               <h:panelGrid columns="2">
                   <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.dirup.gif" width="18" height="20"/>
                   <h:outputText value=".."/>
               </h:panelGrid>
           </s:link>
  -    <h:outputText rendered="#{empty directoryHome.parentDirectory or !s:hasPermission('Node','read',directoryHome.parentDirectory)}"
  +    <h:outputText rendered="#{empty directoryHome.parentNode or !s:hasPermission('Node','read',directoryHome.parentNode)}"
                     value="#{messages['lacewiki.label.dirDisplay.DirectoryIsEmpty']}"/>
   
   </s:div>
   
  +<!-- TODO: Add pager -->
  +
   <h:dataTable id="directoryTable" var="node"
  -             value="#{directoryHome.instance.children}"
  -             rendered="#{!empty directoryHome.instance.children}"
  +             value="#{directoryHome.childNodes}"
  +             rendered="#{!empty directoryHome.childNodes}"
                styleClass="datatable topLeftBottomBorder"
                headerClass="regularHeader rightBorder"
                columnClasses="onePercentColumn rightBorder alignCenter, defaultColumn rightBorder alignLeft"
  @@ -122,32 +124,32 @@
       <h:column>
           <f:facet name="header">
               <s:link view="/dirDisplay_#{skin}.xhtml" tabindex="1" accesskey="."
  -                    rendered="#{!empty directoryHome.parentDirectory and s:hasPermission('Node','read',directoryHome.parentDirectory)}">
  -                <f:param name="directoryId" value="#{directoryHome.parentDirectory.id}"/>
  +                    rendered="#{!empty directoryHome.parentNode and s:hasPermission('Node','read',directoryHome.parentNode)}">
  +                <f:param name="directoryId" value="#{directoryHome.parentNode.id}"/>
                   <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.dirup.gif" width="18" height="20"/>
               </s:link>
           </f:facet>
           <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.dir.gif"
                           width="18" height="20"
  -                        rendered="#{wiki:isDirectory(node)}"/>
  +                        rendered="#{node.isInstance('WikiDirectory')}"/>
           <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.doc.gif"
                           width="18" height="20"
  -                        rendered="#{wiki:isDocument(node) and node != directoryHome.instance.defaultDocument}"/>
  +                        rendered="#{node.isInstance('WikiDocument') and node != directoryHome.instance.defaultFile}"/>
           <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.doc.default.gif"
                           width="18" height="20"
  -                        rendered="#{wiki:isDocument(node) and node == directoryHome.instance.defaultDocument}"/>
  +                        rendered="#{node.isInstance('WikiDocument') and node == directoryHome.instance.defaultFile}"/>
   
  -        <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{fileMetaMap[node.contentType].displayIcon}"
  +        <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{uploadTypes[node.contentType].displayIcon}"
                           width="18" height="20"
  -                        rendered="#{wiki:isFile(node) and !empty fileMetaMap[node.contentType]}"/>
  -        <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{fileMetaMap['generic'].displayIcon}"
  +                        rendered="#{node.isInstance('WikiUpload') and !empty uploadTypes[node.contentType]}"/>
  +        <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{uploadTypes['generic'].displayIcon}"
                           width="18" height="20"
  -                        rendered="#{wiki:isFile(node) and empty fileMetaMap[node.contentType]}"/>
  +                        rendered="#{node.isInstance('WikiUpload') and empty uploadTypes[node.contentType]}"/>
       </h:column>
   
       <h:column>
   
  -        <s:span rendered="#{wiki:isDirectory(node)}">
  +        <s:span rendered="#{node.isInstance('WikiDirectory')}">
               <s:link id="browseDirectory" value="#{wiki:truncateString(node.name, 40, '...')}"
                       view="/dirDisplay_#{skin}.xhtml"
                       rendered="#{s:hasPermission('Node','read',node)}" tabindex="2">
  @@ -156,21 +158,21 @@
               <h:outputText value="#{wiki:truncateString(node.name, 40, '...')}" rendered="#{!s:hasPermission('Node','read',node)}"/>
           </s:span>
   
  -        <s:span rendered="#{wiki:isDocument(node)}">
  +        <s:span rendered="#{node.isInstance('WikiDocument')}">
               <h:outputLink value="#{wiki:renderURL(node)}" rendered="#{s:hasPermission('Node','read',node)}" tabindex="2">
                   <h:outputText value="#{wiki:truncateString(node.name, 40, '...')}"/>
               </h:outputLink>
               <h:outputText value="#{node.name}" rendered="#{!s:hasPermission('Node','read',node)}"/>
           </s:span>
   
  -        <s:span rendered="#{wiki:isFile(node) and s:hasPermission('Node', 'edit', node)}">
  -            <s:link id="editFile" value="#{wiki:truncateString(node.name, 30, '...')}" tabindex="2" view="/fileEdit_#{skin}.xhtml">
  -                <f:param name="fileId" value="#{node.id}"/>
  +        <s:span rendered="#{node.isInstance('WikiUpload') and s:hasPermission('Node', 'edit', node)}">
  +            <s:link id="editFile" value="#{wiki:truncateString(node.name, 30, '...')}" tabindex="2" view="/uploadEdit_#{skin}.xhtml">
  +                <f:param name="uploadId" value="#{node.id}"/>
                   <f:param name="parentDirectoryId" value="#{directoryHome.instance.id}"/>
               </s:link>
               <h:outputText value=" (#{wiki:displayFilesize(node.filesize)}, #{node.contentType})"/>
           </s:span>
  -        <h:panelGroup rendered="#{wiki:isFile(node) and !s:hasPermission('Node', 'edit', node)}">
  +        <h:panelGroup rendered="#{node.isInstance('WikiUpload') and !s:hasPermission('Node', 'edit', node)}">
               <h:outputLink value="#{wiki:renderURL(node)}">
                   <h:outputText value="#{wiki:truncateString(node.name, 30, '...')} (#{wiki:displayFilesize(node.filesize)}, #{node.contentType})"/>
               </h:outputLink>
  
  
  
  1.5       +106 -92   jboss-seam/examples/wiki/view/dirDisplay_d.xhtml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: dirDisplay_d.xhtml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/view/dirDisplay_d.xhtml,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -b -r1.4 -r1.5
  --- dirDisplay_d.xhtml	20 Nov 2007 08:05:08 -0000	1.4
  +++ dirDisplay_d.xhtml	19 Dec 2007 04:29:18 -0000	1.5
  @@ -6,14 +6,13 @@
                   xmlns:f="http://java.sun.com/jsf/core"
                   xmlns:h="http://java.sun.com/jsf/html"
                   xmlns:rich="http://richfaces.org/rich"
  -                xmlns:richtree="http://labs.jboss.com/jbossrichfaces/ui/treeModel"
                   template="themes/#{wikiPreferences.themeName}/template.xhtml">
   
   <ui:define name="screenname">#{directoryHome.instance.name}</ui:define>
   
   <ui:define name="controlTwo">
   
  -    <s:fragment rendered="#{!empty directoryHome.parentDirectory}">
  +    <s:fragment rendered="#{!empty directoryHome.parentNode}">
   
           <s:link id="createDir" styleClass="linkNavigation"
                   accesskey="#{messages['lacewiki.button.CreateSubdirectory.accesskey']}"
  @@ -42,16 +41,15 @@
   
           <s:link id="uploadFile" styleClass="linkNavigation"
                   accesskey="#{messages['lacewiki.button.UploadFile.accesskey']}"
  -                view="/fileEdit_#{skin}.xhtml"
  +                view="/uploadCreate_#{skin}.xhtml"
                   rendered="#{s:hasPermission('Node', 'create', directoryHome.instance)}">
               <h:outputText escape="false" value="#{messages['lacewiki.button.UploadFile']}"/>
  -            <f:param name="fileId"/>
               <f:param name="parentDirectoryId" value="#{directoryHome.instance.id}"/>
           </s:link>
   
       </s:fragment>
   
  -    <s:fragment rendered="#{empty directoryHome.parentDirectory}">
  +    <s:fragment rendered="#{empty directoryHome.parentNode}">
           <s:link id="createArea" styleClass="linkNavigation"
                   accesskey="#{messages['lacewiki.button.NewArea.accesskey']}"
                   view="/dirEdit_#{skin}.xhtml"
  @@ -99,86 +97,148 @@
           </h:panelGroup>
       </div>
   
  -    <s:div styleClass="directoryEmpty" rendered="#{empty directoryHome.instance.children}">
  +    <s:div styleClass="directoryEmpty" rendered="#{empty directoryHome.childNodes}">
               <s:link view="/dirDisplay_#{skin}.xhtml" tabindex="1" accesskey="."
  -                    rendered="#{!empty directoryHome.parentDirectory and s:hasPermission('Node','read',directoryHome.parentDirectory)}">
  -                <f:param name="directoryId" value="#{directoryHome.parentDirectory.id}"/>
  +                    rendered="#{!empty directoryHome.parentNode and s:hasPermission('Node','read',directoryHome.parentNode)}">
  +                <f:param name="directoryId" value="#{directoryHome.parentNode.id}"/>
                   <h:panelGrid columns="2">
                       <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.dirup.gif" width="18" height="20"/>
                       <h:outputText value=".."/>
                   </h:panelGrid>
               </s:link>
  -            <h:outputText rendered="#{empty directoryHome.parentDirectory or !s:hasPermission('Node','read',directoryHome.parentDirectory)}"
  +            <h:outputText rendered="#{empty directoryHome.parentNode or !s:hasPermission('Node','read',directoryHome.parentNode)}"
                             value="#{messages['lacewiki.label.dirDisplay.DirectoryIsEmpty']}"/>
   
       </s:div>
   
  +    <h:panelGrid columns="5" rendered="#{not empty directoryHome.childNodes and directoryHome.pager.numOfRecords > directoryHome.pager.pageSize}"
  +                 styleClass="pager"
  +                 columnClasses="pagerIconColumn,pagerIconColumn,pagerTextColumn,pagerIconColumn,pagerIconColumn"
  +                 cellpadding="0" cellspacing="0" border="0">
  +
  +
  +        <s:link view="/dirDisplay_#{skin}.xhtml" tabindex="1" target="_top"
  +                rendered="#{directoryHome.pager.previousPageAvailable}">
  +            <f:param name="page" value="0"/>
  +            <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/page.first.gif" width="13" height="11"/>
  +        </s:link>
  +        <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/blank.gif" width="13" height="11"
  +                        rendered="#{!directoryHome.pager.previousPageAvailable}"/>
  +
  +        <s:link view="/dirDisplay_#{skin}.xhtml" tabindex="1" target="_top"
  +                rendered="#{directoryHome.pager.previousPageAvailable}">
  +            <f:param name="page" value="#{directoryHome.pager.previousPage}"/>
  +            <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/page.previous.gif" width="13" height="11"/>
  +        </s:link>
  +        <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/blank.gif" width="13" height="11"
  +                        rendered="#{!directoryHome.pager.previousPageAvailable}"/>
  +
  +        <s:span>
  +            <h:outputText value="#{messages['lacewiki.label.dirDisplay.PagerShowing']}
  +                                    #{directoryHome.pager.firstRecord} #{messages['lacewiki.label.dirDisplay.PagerTo']}
  +                                    #{directoryHome.pager.lastRecord} #{messages['lacewiki.label.dirDisplay.PagerOf']}
  +                                    #{directoryHome.pager.numOfRecords} #{messages['lacewiki.label.dirDisplay.PagerElements']}"/>
  +        </s:span>
  +
  +        <s:link view="/dirDisplay_#{skin}.xhtml" tabindex="1" target="_top"
  +                rendered="#{directoryHome.pager.nextPageAvailable}">
  +            <f:param name="page" value="#{directoryHome.pager.nextPage}"/>
  +            <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/page.next.gif" width="13" height="11"/>
  +        </s:link>
  +        <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/blank.gif" width="13" height="11"
  +                        rendered="#{!directoryHome.pager.nextPageAvailable}"/>
  +
  +        <s:link view="/dirDisplay_#{skin}.xhtml" tabindex="1" target="_top"
  +                rendered="#{directoryHome.pager.nextPageAvailable}">
  +            <f:param name="page" value="#{directoryHome.pager.lastPage}"/>
  +            <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/page.last.gif" width="13" height="11"/>
  +        </s:link>
  +        <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/blank.gif" width="13" height="11"
  +                        rendered="#{!directoryHome.pager.nextPageAvailable}"/>
  +
  +    </h:panelGrid>
  +
       <h:dataTable id="directoryTable" var="node"
  -                 value="#{directoryHome.instance.children}"
  -                 rendered="#{!empty directoryHome.instance.children}"
  -                 styleClass="datatable topLeftBottomBorder"
  -                 headerClass="regularHeader rightBorder"
  +                 value="#{directoryHome.childNodes}"
  +                 rendered="#{!empty directoryHome.childNodes}"
  +                 styleClass="datatable topLeftBottomBorder smallFont"
  +                 headerClass="regularHeader rightBorder alignCenter"
                    columnClasses="onePercentColumn rightBorder alignCenter, defaultColumn rightBorder alignLeft,
                                   tenPercentColumn rightBorder alignLeft, fifteenPercentColumn rightBorder alignLeft,
                                   fifteenPercentColumn rightBorder alignLeft,twentyPercentColumn rightBorder alignCenter"
                    rowClasses="rowOdd,rowEven"
                    cellpadding="0" cellspacing="0" border="0">
  -
           <h:column>
               <f:facet name="header">
                   <s:link view="/dirDisplay_#{skin}.xhtml" tabindex="1" accesskey="."
  -                        rendered="#{!empty directoryHome.parentDirectory and s:hasPermission('Node','read',directoryHome.parentDirectory)}">
  -                    <f:param name="directoryId" value="#{directoryHome.parentDirectory.id}"/>
  +                        rendered="#{!empty directoryHome.parentNode and s:hasPermission('Node','read',directoryHome.parentNode)}">
  +                    <f:param name="directoryId" value="#{directoryHome.parentNode.id}"/>
                       <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.dirup.gif" width="18" height="20"/>
                   </s:link>
               </f:facet>
               <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.dir.gif"
                               width="18" height="20"
  -                            rendered="#{wiki:isDirectory(node)}"/>
  +                            rendered="#{node.isInstance('WikiDirectory')}"/>
               <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.doc.gif"
                               width="18" height="20"
  -                            rendered="#{wiki:isDocument(node) and node != directoryHome.instance.defaultDocument}"/>
  +                            rendered="#{node.isInstance('WikiDocument') and node != directoryHome.instance.defaultFile}"/>
               <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.doc.default.gif"
                               width="18" height="20"
  -                            rendered="#{wiki:isDocument(node) and node == directoryHome.instance.defaultDocument}"/>
  +                            rendered="#{node.isInstance('WikiDocument') and node == directoryHome.instance.defaultFile}"/>
   
  -            <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{fileMetaMap[node.contentType].displayIcon}"
  +            <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{uploadTypes[node.contentType].displayIcon}"
                               width="18" height="20"
  -                            rendered="#{wiki:isFile(node) and !empty fileMetaMap[node.contentType]}"/>
  -            <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{fileMetaMap['generic'].displayIcon}"
  +                            rendered="#{node.isInstance('WikiUpload') and !empty uploadTypes[node.contentType]}"/>
  +            <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{uploadTypes['generic'].displayIcon}"
                               width="18" height="20"
  -                            rendered="#{wiki:isFile(node) and empty fileMetaMap[node.contentType]}"/>
  +                            rendered="#{node.isInstance('WikiUpload') and empty uploadTypes[node.contentType]}"/>
           </h:column>
   
           <h:column>
               <f:facet name="header">
  -                #{messages['lacewiki.label.dirDisplay.Name']}
  +                <h:outputText value="#{messages['lacewiki.label.dirDisplay.Name']}"/>
               </f:facet>
   
  -            <s:span rendered="#{wiki:isDirectory(node)}">
  +            <s:span rendered="#{node.isInstance('WikiDirectory')}">
                   <s:link id="browseDirectory" value="#{wiki:truncateString(node.name, 40, '...')}"
                           view="/dirDisplay_#{skin}.xhtml"
  -                        rendered="#{s:hasPermission('Node','read',node)}" tabindex="2">
  +                        rendered="#{s:hasPermission('Node','read',node)}" tabindex="1">
                       <f:param name="directoryId" value="#{node.id}"/>
                   </s:link>
                   <h:outputText value="#{wiki:truncateString(node.name, 40, '...')}" rendered="#{!s:hasPermission('Node','read',node)}"/>
  +
  +                <s:link rendered="#{s:hasPermission('Node', 'edit', node)}"
  +                        styleClass="buttonNonpersistent" tabindex="1"
  +                        view="/dirEdit_#{skin}.xhtml">
  +                    <f:param name="directoryId" value="#{node.id}"/>
  +                    <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.Edit']}"/>
  +                </s:link>
  +
               </s:span>
   
  -            <s:span rendered="#{wiki:isDocument(node)}">
  -                <h:outputLink value="#{wiki:renderURL(node)}" rendered="#{s:hasPermission('Node','read',node)}" tabindex="2">
  +            <s:span rendered="#{node.isInstance('WikiDocument')}">
  +                <h:outputLink value="#{wiki:renderURL(node)}" rendered="#{s:hasPermission('Node','read',node)}" tabindex="1">
                       <h:outputText value="#{wiki:truncateString(node.name, 40, '...')}"/>
                   </h:outputLink>
                   <h:outputText value="#{node.name}" rendered="#{!s:hasPermission('Node','read',node)}"/>
  +
  +                <s:link rendered="#{s:hasPermission('Node', 'edit', node)}"
  +                        styleClass="buttonNonpersistent" tabindex="1"
  +                        view="/docEdit_#{skin}.xhtml">
  +                    <f:param name="documentId" value="#{node.id}"/>
  +                    <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.Edit']}"/>
  +                </s:link>
  +
               </s:span>
   
  -            <s:span rendered="#{wiki:isFile(node) and s:hasPermission('Node', 'edit', node)}">
  -                <s:link id="editFile" value="#{wiki:truncateString(node.name, 30, '...')}" tabindex="2" view="/fileEdit_#{skin}.xhtml">
  -                    <f:param name="fileId" value="#{node.id}"/>
  +            <s:span rendered="#{node.isInstance('WikiUpload') and s:hasPermission('Node', 'edit', node)}">
  +                <s:link id="editFile" value="#{wiki:truncateString(node.name, 30, '...')}" tabindex="1" view="/uploadEdit_#{skin}.xhtml">
  +                    <f:param name="uploadId" value="#{node.id}"/>
                       <f:param name="parentDirectoryId" value="#{directoryHome.instance.id}"/>
                   </s:link>
                   <h:outputText value=" (#{wiki:displayFilesize(node.filesize)}, #{node.contentType})"/>
               </s:span>
  -            <h:panelGroup rendered="#{wiki:isFile(node) and !s:hasPermission('Node', 'edit', node)}">
  +            <h:panelGroup rendered="#{node.isInstance('WikiUpload') and !s:hasPermission('Node', 'edit', node)}">
                   <h:outputLink value="#{wiki:renderURL(node)}">
                       <h:outputText value="#{wiki:truncateString(node.name, 30, '...')} (#{wiki:displayFilesize(node.filesize)}, #{node.contentType})"/>
                   </h:outputLink>
  @@ -190,7 +250,12 @@
               <f:facet name="header">
                   #{messages['lacewiki.label.dirDisplay.Owner']}
               </f:facet>
  -            #{node.createdBy.fullname}
  +            <s:span styleClass="undecoratedLink">
  +                <s:link view="/userInfo_#{skin}.xhtml" propagation="none">
  +                    <f:param name="userId" value="#{node.createdBy.id}"/>
  +                    <h:outputText value="#{node.createdBy.fullname}"/>
  +                </s:link>
  +            </s:span>
           </h:column>
   
           <h:column>
  @@ -212,9 +277,14 @@
                   #{messages['lacewiki.label.dirDisplay.LastModifiedOn']}
               </f:facet>
               <h:outputText value="#{node.lastModifiedOn}">
  -                <f:convertDateTime type="both" timeZone="#{wikiPreferences.timeZone}"/>
  +                <f:convertDateTime pattern="dd. MMM yyyy, HH:mm" timeZone="#{wikiPreferences.timeZone}"/>
               </h:outputText>
  -            (#{node.lastModifiedBy.username})
  +            (<s:span styleClass="undecoratedLink">
  +                <s:link view="/userInfo_#{skin}.xhtml" propagation="none">
  +                    <f:param name="userId" value="#{node.lastModifiedBy.id}"/>
  +                    <h:outputText value="#{node.lastModifiedBy.username}"/>
  +                </s:link>
  +            </s:span>)
           </h:column>
   
           <h:column rendered="#{empty node.lastModifiedOn or empty node.lastModifiedBy}">
  @@ -226,65 +296,9 @@
   
       </h:dataTable>
   
  +</div>
   
  -    <h:form id="dirTree" rendered="false">
  -        <ui:include src="includes/statusIndicator.xhtml"/>
  -
  -        #{directoryHome.instance.name}:
  -        <rich:tree value="#{directoryHome.tree}" var="nodeWrapper"
  -                   switchType="ajax" status="dirTree\:status"
  -                   nodeFace="#{wiki:getType(nodeWrapper.wrappedNode)}">
  -
  -            <rich:treeNode type="Directory">
  -                <f:facet name="icon">
  -                    <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.dir.gif" width="18" height="20"/>
  -                </f:facet>
  -                <f:facet name="iconLeaf">
  -                    <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.dir.gif" width="18" height="20"/>
  -                </f:facet>
  -                <h:outputText value="#{nodeWrapper.wrappedNode.name}"/> (#{nodeWrapper.level})
  -            </rich:treeNode>
  -
  -            <rich:treeNode type="Document">
  -                <f:facet name="icon">
  -                    <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.doc.gif" width="18" height="20"
  -                                    rendered="#{nodeWrapper.wrappedNode != nodeWrapper.wrappedParent.wrappedNode.defaultDocument}"/>
  -                    <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.doc.default.gif" width="18" height="20"
  -                                    rendered="#{nodeWrapper.wrappedNode == nodeWrapper.wrappedParent.wrappedNode.defaultDocument}"/>
  -                </f:facet>
  -                <f:facet name="iconLeaf">
  -                    <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.doc.gif" width="18" height="20"
  -                                    rendered="#{nodeWrapper.wrappedNode != nodeWrapper.wrappedParent.wrappedNode.defaultDocument}"/>
  -                    <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.doc.default.gif" width="18" height="20"
  -                                    rendered="#{nodeWrapper.wrappedNode == nodeWrapper.wrappedParent.wrappedNode.defaultDocument}"/>
  -                </f:facet>
  -                <h:outputText value="#{nodeWrapper.wrappedNode.name}"/> (#{nodeWrapper.level})
  -            </rich:treeNode>
  -
  -            <rich:treeNode type="File">
  -                <f:facet name="icon">
  -                    <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{fileMetaMap[nodeWrapper.wrappedNode.contentType].displayIcon}"
  -                                    width="18" height="20"
  -                                    rendered="#{!empty fileMetaMap[nodeWrapper.wrappedNode.contentType]}"/>
  -                    <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{fileMetaMap['generic'].displayIcon}"
  -                                    width="18" height="20"
  -                                    rendered="#{empty fileMetaMap[nodeWrapper.wrappedNode.contentType]}"/>
  -                </f:facet>
  -                <f:facet name="iconLeaf">
  -                    <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{fileMetaMap[nodeWrapper.wrappedNode.contentType].displayIcon}"
  -                                    width="18" height="20"
  -                                    rendered="#{!empty fileMetaMap[nodeWrapper.wrappedNode.contentType]}"/>
  -                    <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{fileMetaMap['generic'].displayIcon}"
  -                                    width="18" height="20"
  -                                    rendered="#{empty fileMetaMap[nodeWrapper.wrappedNode.contentType]}"/>
  -                </f:facet>
  -                <h:outputText value="#{nodeWrapper.wrappedNode.name}"/> (#{nodeWrapper.level})
  -            </rich:treeNode>
  -
  -        </rich:tree>
  -    </h:form>
   
  -</div>
   </ui:define>
   
   <ui:define name="footer">&#160;</ui:define>
  
  
  
  1.3       +7 -7      jboss-seam/examples/wiki/view/dirEdit_m.xhtml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: dirEdit_m.xhtml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/view/dirEdit_m.xhtml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- dirEdit_m.xhtml	12 Oct 2007 16:31:24 -0000	1.2
  +++ dirEdit_m.xhtml	19 Dec 2007 04:29:18 -0000	1.3
  @@ -31,8 +31,8 @@
   
       <h:form><s:validateAll>
   
  -        <s:div rendered="#{!empty directoryHome.parentDirectory}">
  -            #{messages['lacewiki.label.dirEdit.Parent']}:&#160;#{directoryHome.parentDirectory.name}
  +        <s:div rendered="#{!empty directoryHome.parentNode}">
  +            #{messages['lacewiki.label.dirEdit.Parent']}:&#160;#{directoryHome.parentNode.name}
           </s:div>
           <div class="errorMessage"><h:message for="name"/></div>
           <div>#{messages['lacewiki.label.dirEdit.Name']}:&#160;
  @@ -43,7 +43,7 @@
               <h:inputText id="description" size="30" maxlength="512" required="false" value="#{directoryHome.instance.description}"/>
           </div>
           <div>#{messages['lacewiki.label.dirEdit.DefaultDocument']}:&#160;
  -            <h:selectOneMenu value="#{directoryHome.instance.defaultDocument}" converter="#{restrictedEntityConverter}">
  +            <h:selectOneMenu value="#{directoryHome.instance.defaultFile}" converter="#{restrictedEntityConverter}">
                   <s:selectItems value="#{directoryHome.childDocuments}"
                                  var="document"
                                  label="#{wiki:truncateString(document.name, 40, '...')}"
  @@ -52,7 +52,7 @@
           </div>
           <div>
               <h:selectBooleanCheckbox value="#{directoryHome.hasFeed}"
  -                                     disabled="#{empty directoryHome.parentDirectory}"/>
  +                                     disabled="#{empty directoryHome.parentNode}"/>
               <h:outputText value="&#160;#{messages['lacewiki.label.dirEdit.EnableFeed']}"/>
           </div>
   
  @@ -62,10 +62,10 @@
               <h:commandButton action="#{directoryHome.update}" rendered="#{directoryHome.managed}"
                                value="#{messages['lacewiki.button.Update']}"/>
               <h:commandButton action="#{directoryHome.remove}"
  -                             rendered="#{empty directoryHome.instance.children
  +                             rendered="#{empty directoryHome.childNodes
                                           and directoryHome.managed
  -                                        and !empty directoryHome.parentDirectory
  -                                        and directoryHome.instance.id != wikiPreferences.memberAreaId}"
  +                                        and !empty directoryHome.parentNode
  +                                        and directoryHome.instance.id != memberArea.id}"
                                value="#{messages['lacewiki.button.Delete']}"/>
           </s:div>
   
  
  
  
  1.5       +61 -44    jboss-seam/examples/wiki/view/docHistory_d.xhtml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: docHistory_d.xhtml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/view/docHistory_d.xhtml,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -b -r1.4 -r1.5
  --- docHistory_d.xhtml	20 Nov 2007 08:05:08 -0000	1.4
  +++ docHistory_d.xhtml	19 Dec 2007 04:29:18 -0000	1.5
  @@ -10,12 +10,12 @@
                   template="themes/#{wikiPreferences.themeName}/template.xhtml">
   
   <ui:define name="screenname">
  -    <h:outputText value="#{messages['lacewiki.label.docHistory.DocumentHistory']} #{nodeHistory.currentNode.name}"/>
  +    <h:outputText value="#{messages['lacewiki.label.docHistory.DocumentHistory']} #{documentHistory.currentFile.name}"/>
   </ui:define>
   
   <ui:define name="controlTwo">
   
  -    <s:link id="close" styleClass="linkNavigation" action="exit"
  +    <s:link id="close" styleClass="linkNavigation sessionEventTrigger" action="exit"
               accesskey="#{messages['lacewiki.button.Close.accesskey']}">
           <h:outputText escape="false" value="#{messages['lacewiki.button.Close']}"/>
       </s:link>
  @@ -24,43 +24,50 @@
   
   <ui:define name="content">
   
  -<h:form rendered="#{historicalNodeList.rowCount >0}" styleClass="box">
  +<h:form id="historyForm" rendered="#{historicalFileList.rowCount >0}" styleClass="box">
   
   <div class="form">
  -    <div class="formHead">#{messages['lacewiki.label.docHistory.DocumentHistory']}: #{nodeHistory.currentNode.name}</div>
  +
  +    <ui:include src="includes/statusIndicator.xhtml">
  +        <ui:param name="statusId" value="historyFormStatus"/>
  +    </ui:include>
  +
  +    <script type="text/javascript">startSessionTimeoutCheck()</script>
  +
  +    <div class="formHead">#{messages['lacewiki.label.docHistory.DocumentHistory']}: #{documentHistory.currentFile.name}</div>
       <div class="formFields formBorder">
   
           <s:div styleClass="entry">
               <div class="label">#{messages['lacewiki.label.docHistory.CurrentRevision']}:</div>
               <div class="output">
  -                <h:outputText value="#{nodeHistory.currentNode.revision}"/>
  +                <h:outputText value="#{documentHistory.currentFile.revision}"/>
               </div>
           </s:div>
   
           <s:div styleClass="entry">
               <div class="label">#{messages['lacewiki.label.docHistory.Parent']}:</div>
               <div class="output">
  -                <h:outputText value="#{nodeHistory.currentNode.parent.name}"/>
  +                <h:outputText value="#{documentHistory.currentFile.parent.name}"/>
               </div>
           </s:div>
   
           <s:div styleClass="entry">
               <div class="label">#{messages['lacewiki.label.docHistory.CreatedOn']}:</div>
               <div class="output">
  -                <h:outputText value="#{nodeHistory.currentNode.createdOn}">
  -                    <f:convertDateTime type="both" timeZone="#{wikiPreferences.timeZone}"/>
  +                <h:outputText value="#{documentHistory.currentFile.createdOn}">
  +                    <f:convertDateTime pattern="dd. MMM yyyy, HH:mm" timeZone="#{wikiPreferences.timeZone}"/>
                   </h:outputText>
  -                (#{nodeHistory.currentNode.createdBy.username})
  +                (#{documentHistory.currentFile.createdBy.username})
               </div>
           </s:div>
   
  -        <s:div styleClass="entry" rendered="#{!empty nodeHistory.currentNode.lastModifiedBy}">
  +        <s:div styleClass="entry" rendered="#{!empty documentHistory.currentFile.lastModifiedBy}">
               <div class="label">#{messages['lacewiki.label.docHistory.LastModifiedOn']}:</div>
               <div class="output">
  -                <h:outputText value="#{nodeHistory.currentNode.lastModifiedOn}">
  -                    <f:convertDateTime type="both" timeZone="#{wikiPreferences.timeZone}"/>
  +                <h:outputText value="#{documentHistory.currentFile.lastModifiedOn}">
  +                    <f:convertDateTime pattern="dd. MMM yyyy, HH:mm" timeZone="#{wikiPreferences.timeZone}"/>
                   </h:outputText>
  -                (#{nodeHistory.currentNode.lastModifiedBy.username})
  +                (#{documentHistory.currentFile.lastModifiedBy.username})
               </div>
           </s:div>
   
  @@ -68,8 +75,8 @@
               <div class="label">#{messages['lacewiki.label.docHistory.HistoricalRevisions']}:</div>
               <div class="input">
   
  -                <h:dataTable id="historyTable" var="hnode" style="width:50%"
  -                             value="#{historicalNodeList}"
  +                <h:dataTable id="historyTable" var="hfile" style="width:70%"
  +                             value="#{historicalFileList}"
                                styleClass="datatable topLeftBottomBorder"
                                columnClasses="onePercentColumn rightBorder alignCenter,
                                               twentyPercentColumn rightBorder alignLeft,
  @@ -78,32 +85,44 @@
                                cellpadding="0" cellspacing="0" border="0">
   
                       <h:column>
  -                        #{hnode.revision}
  +                        <h:outputText value="#{hfile.revision}"/>
                       </h:column>
   
                       <h:column>
  -                        <h:outputText value="#{hnode.lastModifiedOn}">
  -                            <f:convertDateTime type="both" timeZone="#{wikiPreferences.timeZone}"/>
  +                        <s:fragment rendered="#{not empty hfile.lastModifiedOn}">
  +                            <h:outputText value="#{hfile.lastModifiedOn}">
  +                                <f:convertDateTime pattern="dd. MMM yyyy, HH:mm" timeZone="#{wikiPreferences.timeZone}"/>
                           </h:outputText>
  -                        <h:outputText value="&#160;(#{hnode.lastModifiedByUsername})" rendered="#{!empty hnode.lastModifiedByUsername}"/>
  -                        <h:outputText value="&#160;(unknown)" rendered="#{empty hnode.lastModifiedByUsername}"/>
  +                            <h:outputText value="&#160;(#{hfile.lastModifiedByUsername})" rendered="#{!empty hfile.lastModifiedByUsername}"/>
  +                        </s:fragment>
  +                        <s:fragment rendered="#{empty hfile.lastModifiedOn}">
  +                            <h:outputText value="(Initial Revision)"/>
  +                        </s:fragment>
                       </h:column>
   
                       <h:column>
  -                        <a:commandLink id="show"
  -                                       action="#{nodeHistory.displayHistoricalRevision}"
  -                                       reRender="messageBoxContainer, diffResult, historicalPreview"
  -                                       tabindex="3" styleClass="buttonNonpersistent">
  +                        <a:commandLink id="show" status="historyFormStatus"
  +                                       oncomplete="onAjaxRequestComplete()"
  +                                       action="#{documentHistory.displayHistoricalRevision}"
  +                                       reRender="messageBoxContainer, historyTable, diffResult, historicalPreview"
  +                                       tabindex="3" styleClass="buttonNonpersistent sessionEventTrigger">
                               <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.docHistory.Show']}"/>
                           </a:commandLink>
  -                        <s:link id="diff" action="#{nodeHistory.diff}" tabindex="3" styleClass="buttonNonpersistent">
  +
  +                        <s:link id="diff" rendered="#{empty documentHistory.diffResult or hfile.historicalFileId != documentHistory.historicalFileId}"
  +                                action="#{documentHistory.diff}" tabindex="3" styleClass="buttonNonpersistent sessionEventTrigger">
                               <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.docHistory.Diff']}"/>
  -                            <f:param name="historicalNodeId" value="#{hnode.historyId}"/>
  +                            <f:param name="historicalFileId" value="#{hfile.historicalFileId}"/>
                           </s:link>
  +                        <h:outputLink rendered="#{not empty documentHistory.diffResult and hfile.historicalFileId == documentHistory.historicalFileId}"
  +                                      value="#diffResult" tabindex="3" styleClass="buttonNonpersistent sessionEventTrigger">
  +                            <h:outputText styleClass="buttonLabel" value="Diff Output"/>
  +                        </h:outputLink>
  +
                           <h:commandLink id="rollback"
  -                                       action="#{nodeHistory.rollback}"
  -                                       tabindex="4" styleClass="buttonNonpersistent"
  -                                       rendered="#{s:hasPermission('Node', 'edit', nodeHistory.currentNode)}">
  +                                       action="#{documentHistory.rollback}"
  +                                       tabindex="4" styleClass="buttonNonpersistent sessionEventTrigger"
  +                                       rendered="#{s:hasPermission('Node', 'edit', documentHistory.currentFile)}">
                               <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.docHistory.Rollback']}"/>
                           </h:commandLink>
                       </h:column>
  @@ -121,9 +140,9 @@
                   <div class="label">&#160;</div>
                   <div class="input">
   
  -                    <h:commandLink id="purge" action="#{nodeHistory.purgeHistory}"
  +                    <h:commandLink id="purge" action="#{documentHistory.purgeHistory}"
                                  tabindex="4" accesskey="#{messages['lacewiki.button.docHistory.PurgeHistory.accesskey']}" 
  -                               styleClass="button">
  +                               styleClass="button sessionEventTrigger">
                           <h:outputText styleClass="buttonLabel" escape="false" value="#{messages['lacewiki.button.docHistory.PurgeHistory']}"/>
                       </h:commandLink>
       
  @@ -138,29 +157,27 @@
   <br/>
   
   <s:div id="diffResult">
  -    <s:div styleClass="box diffOutput" rendered="#{not empty nodeHistory.diffResult}">
  -        <script type="text/javascript">jQuery(function() {
  -            wrapBoxes();
  -        });</script>
  -        <h:outputText value="#{nodeHistory.diffResult}" escape="false"/>
  +    <s:div styleClass="box diffOutput" rendered="#{not empty documentHistory.diffResult}">
  +        <h:outputText value="#{documentHistory.diffResult}" escape="false"/>
       </s:div>
   </s:div>
   
   <s:div id="historicalPreview">
       <s:div id="documentDisplayContainer"
  -           rendered="#{not empty nodeHistory.displayedHistoricalNode}"
  +           rendered="#{not empty documentHistory.displayedHistoricalFile}"
              styleClass="box">
  -        <script type="text/javascript">jQuery(function() {
  -            wrapBoxes();
  -        });</script>
  +        <s:div rendered="#{documentHistory.displayedHistoricalFile.name != documentHistory.currentFile.name}">
  +            <h:outputText value="Revision document name: #{documentHistory.displayedHistoricalFile.name}"/>
  +            <hr/>
  +        </s:div>
           <s:div id="documentDisplay" styleClass="documentDisplay">
  -            <wiki:formattedText value="#{nodeHistory.displayedHistoricalNode.content}"
  +            <wiki:formattedText value="#{documentHistory.displayedHistoricalFile.content}"
                                   linkStyleClass="regularLink"
                                   brokenLinkStyleClass="brokenLink"
                                   attachmentLinkStyleClass="regularLink"
                                   thumbnailLinkStyleClass="regularLink"
  -                                renderBaseDocument="#{nodeHistory.currentNode}"
  -                                renderBaseDirectory="#{nodeHistory.currentNode.parent}"
  +                                linkBaseFile="#{documentHistory.currentFile}"
  +                                currentAreaNumber="#{documentHistory.currentFile.parent.areaNumber}"
                                   enablePlugins="false"/>
           </s:div>
       </s:div>
  
  
  
  1.4       +135 -107  jboss-seam/examples/wiki/view/dirEdit_d.xhtml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: dirEdit_d.xhtml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/view/dirEdit_d.xhtml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -b -r1.3 -r1.4
  --- dirEdit_d.xhtml	9 Nov 2007 15:08:24 -0000	1.3
  +++ dirEdit_d.xhtml	19 Dec 2007 04:29:18 -0000	1.4
  @@ -17,12 +17,12 @@
   
   <ui:define name="controlTwo">
   
  -    <s:link id="exitManaged" styleClass="linkNavigation" rendered="#{directoryHome.managed}" action="exitManaged"
  +    <s:link id="exitManaged" styleClass="linkNavigation sessionEventTrigger" rendered="#{directoryHome.managed}" action="exitManaged"
               accesskey="#{messages['lacewiki.button.ExitEditor.accesskey']}">
           <h:outputText escape="false" value="#{messages['lacewiki.button.ExitEditor']}"/>
       </s:link>
   
  -    <s:link id="exitUnmanaged" styleClass="linkNavigation" rendered="#{!directoryHome.managed}" action="exitUnmanaged"
  +    <s:link id="exitUnmanaged" styleClass="linkNavigation sessionEventTrigger" rendered="#{!directoryHome.managed}" action="exitUnmanaged"
               accesskey="#{messages['lacewiki.button.ExitEditor.accesskey']}">
           <h:outputText escape="false" value="#{messages['lacewiki.button.ExitEditor']}"/>
       </s:link>
  @@ -31,23 +31,20 @@
   
   <ui:define name="content">
   
  -<s:span rendered="#{s:hasPermission('User', 'isAdmin', currentUser) and directoryHome.managed and directoryHome.instance.id != wikiPreferences.memberAreaId}">
  +<s:span rendered="#{s:hasPermission('User', 'isAdmin', currentUser) and directoryHome.managed and directoryHome.instance.id != memberArea.id}">
       <ui:include src="includes/ownerSelector.xhtml">
           <ui:param name="home" value="#{directoryHome}"/>
       </ui:include>
   </s:span>
   
  -<s:span rendered="#{directoryHome.managed and !empty directoryHome.parentDirectory and directoryHome.instance.id != wikiPreferences.memberAreaId}">
  -    <ui:include src="includes/deleteConfirmation.xhtml">
  -        <ui:param name="home" value="#{directoryHome}"/>
  -    </ui:include>
  -</s:span>
  -
  -
   <h:form id="directoryEditForm" styleClass="box">
   <div class="form">
   
  -<ui:include src="includes/statusIndicator.xhtml"/>
  +<ui:include src="includes/statusIndicator.xhtml">
  +    <ui:param name="statusId" value="directoryEditFormStatus"/>
  +</ui:include>
  +
  +<script type="text/javascript">startSessionTimeoutCheck()</script>
   
   <div class="formHead">
       <h:outputText value="#{messages['lacewiki.label.dirEdit.CreateDirectory']}" rendered="#{!directoryHome.managed}"/>
  @@ -58,12 +55,12 @@
   
       <s:validateAll>
   
  -        <s:div styleClass="entry" rendered="#{!empty directoryHome.parentDirectory}">
  +        <s:div styleClass="entry" rendered="#{!empty directoryHome.parentNode}">
               <div class="label">
                   <h:outputText value="#{messages['lacewiki.label.dirEdit.Parent']}:"/>
               </div>
               <div class="output">
  -                <h:outputText value="#{directoryHome.parentDirectory.name}"/>
  +                <h:outputText value="#{directoryHome.parentNode.name}"/>
               </div>
           </s:div>
   
  @@ -73,131 +70,159 @@
               </div>
               <div class="output">
                   <h:outputText value="#{directoryHome.instance.createdOn}">
  -                    <f:convertDateTime type="both" timeZone="#{wikiPreferences.timeZone}"/>
  +                    <f:convertDateTime pattern="dd. MMM yyyy, HH:mm" timeZone="#{wikiPreferences.timeZone}"/>
                   </h:outputText>
                   <s:span id="ownerDisplay">&#160;(#{directoryHome.instance.createdBy.username})</s:span>
  -                <h:outputLink id="selectOwner" value="#" tabindex="1" styleClass="buttonNonpersistent"
  -                              rendered="#{s:hasPermission('User', 'isAdmin', currentUser) and directoryHome.instance.id != wikiPreferences.memberAreaId}"><j4j:idProxy
  +                <h:outputLink id="selectOwner" value="#" tabindex="1" styleClass="buttonNonpersistent sessionEventTrigger"
  +                              rendered="#{s:hasPermission('User', 'isAdmin', currentUser) and directoryHome.instance.id != memberArea.id}"><j4j:idProxy
                                   id="openDialogOwnerSelection"/><span class="buttonLabel">...</span></h:outputLink>
               </div>
           </s:div>
   
           <s:decorate id="nameDecorate" template="includes/formFieldDecorate.xhtml">
               <ui:define name="label">#{messages['lacewiki.label.dirEdit.Name']}</ui:define>
  -            <h:inputText size="25" maxlength="255" required="true" tabindex="1" value="#{directoryHome.instance.name}">
  -                <a:support status="directoryEditForm:status" event="onblur" reRender="nameDecorate"/>
  +            <h:inputText styleClass="ajaxSupport" size="25" maxlength="255" required="true" tabindex="1" value="#{directoryHome.instance.name}">
  +                <a:support status="directoryEditFormStatus" event="onblur" reRender="nameDecorate" oncomplete="onAjaxRequestComplete()"/>
               </h:inputText>
           </s:decorate>
   
           <s:decorate id="descriptionDecorate" template="includes/formFieldDecorate.xhtml">
               <ui:define name="label">#{messages['lacewiki.label.dirEdit.Description']}</ui:define>
  -            <h:inputText size="50" maxlength="512" required="false" tabindex="1" value="#{directoryHome.instance.description}">
  -                <a:support status="directoryEditForm:status" event="onblur" reRender="descriptionDecorate"/>
  +            <h:inputText styleClass="ajaxSupport" size="50" maxlength="512" required="false" tabindex="1" value="#{directoryHome.instance.description}">
  +                <a:support status="directoryEditFormStatus" event="onblur" reRender="descriptionDecorate" oncomplete="onAjaxRequestComplete()"/>
               </h:inputText>
           </s:decorate>
   
  -        <s:span rendered="#{directoryHome.instance.id != wikiPreferences.memberAreaId}">
  +        <s:span rendered="#{directoryHome.instance.id != memberArea.id}">
               <ui:include src="includes/accessLevelSelector.xhtml">
  -                <ui:param name="nodeHome" value="#{directoryHome}"/>
  +                <ui:param name="home" value="#{directoryHome}"/>
               </ui:include>
           </s:span>
   
       </s:validateAll>
   
  -    <s:span id="defaultDocumentSelector">
  -        <s:div styleClass="entry" rendered="#{directoryHome.managed and !empty directoryHome.parentDirectory and !empty directoryHome.childDocuments}">
  +    <s:div styleClass="entry" rendered="#{directoryHome.managed and !empty directoryHome.parentNode and !empty directoryHome.childDocuments}">
               <div class="label">
                   <h:outputText value="#{messages['lacewiki.label.dirEdit.DefaultDocument']}:"/>
               </div>
               <div class="input">
  -                <h:selectOneMenu value="#{directoryHome.instance.defaultDocument}" converter="#{restrictedEntityConverter}" tabindex="2">
  +            <h:selectOneMenu value="#{directoryHome.instance.defaultFile}" converter="#{restrictedEntityConverter}" tabindex="1">
                       <s:selectItems value="#{directoryHome.childDocuments}"
                                      var="document"
                                      label="#{wiki:truncateString(document.name, 40, '...')}"
  -                                   noSelectionLabel="No default document"/>
  +                               noSelectionLabel="#{messages['lacewiki.label.dirEdit.NoDefaultDocument']}"/>
                   </h:selectOneMenu>
               </div>
           </s:div>
  -    </s:span>
   
  +    <s:div id="menuEditor">
       <s:div styleClass="entry"
  -           rendered="#{!empty directoryHome.instance.children and s:hasPermission('Node', 'editMenu', directoryHome.instance)}">
  +               rendered="#{(!empty directoryHome.availableMenuItems or !empty directoryHome.menuItems) 
  +                           and s:hasPermission('Node', 'editMenu', directoryHome.instance)}">
           <div class="label">
               <h:outputText value="#{messages['lacewiki.label.dirEdit.MenuItems']}:"/>
           </div>
           <div class="input">
   
  -            <h:dataTable id="menuItemTable" var="node" style="width:50%"
  -                         value="#{directoryHome.instance.children}"
  +                <h:panelGrid columns="1" styleClass="topLeftBottomBorder rightBorder" cellpadding="0" cellspacing="0" border="0">
  +
  +                    <s:div styleClass="minorPadding" rendered="#{not empty directoryHome.availableMenuItems}">
  +                        <h:panelGroup>
  +                            <h:selectOneMenu value="#{directoryHome.selectedChildDirectory}" converter="#{restrictedEntityConverter}" tabindex="1">
  +                                <s:selectItems value="#{directoryHome.availableMenuItems}"
  +                                               var="dir"
  +                                               label="#{wiki:truncateString(dir.name, 40, '...')}"/>
  +                            </h:selectOneMenu>
  +                            <a:commandLink status="directoryEditFormStatus" tabindex="1"
  +                                           action="#{directoryHome.addMenuItem}"
  +                                           reRender="menuEditor"
  +                                           oncomplete="onAjaxRequestComplete()"
  +                                           styleClass="buttonNonpersistent sessionEventTrigger">
  +                                <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.Add']}"/>
  +                            </a:commandLink>
  +                        </h:panelGroup>
  +                    </s:div>
  +
  +                    <h:dataTable id="menuItemTable" var="menuItem"
  +                                 value="#{directoryHome.menuItems}"
                            styleClass="datatable"
  -                         columnClasses="onePercentColumn alignCenter, onePercentColumn alignCenter, onePercentColumn alignCenter, onePercentColumn alignCenter, defaultColumn alignLeft"
  +                                 columnClasses="onePercentColumn alignCenter, defaultColumn alignLeft, onePercentColumn alignCenter, onePercentColumn alignCenter, onePercentColumn alignCenter"
                            rowClasses="rowEven,rowOdd"
                            cellpadding="0" cellspacing="0" border="0">
   
                   <h:column>
  -                    <a:commandLink rendered="#{uiComponent['directoryEditForm:menuItemTable'].rowIndex != 0}"
  -                                   status="directoryEditForm:status"
  -                                   action="#{directoryHome.moveNode(uiComponent['directoryEditForm:menuItemTable'].rowIndex, uiComponent['directoryEditForm:menuItemTable'].rowIndex-1)}"
  -                                   reRender="menuItemTable, defaultDocumentSelector">
  -                        <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/up.gif" width="18" height="18"/>
  -                    </a:commandLink>
  +                            <a:outputPanel>
  +                                <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.dir.gif" width="18" height="20"/>
  +                            </a:outputPanel>
                   </h:column>
  +
                   <h:column>
  -                    <a:commandLink rendered="#{uiComponent['directoryEditForm:menuItemTable'].rowIndex != uiComponent['directoryEditForm:menuItemTable'].rowCount-1}"
  -                                   status="directoryEditForm:status"
  -                                   action="#{directoryHome.moveNode(uiComponent['directoryEditForm:menuItemTable'].rowIndex, uiComponent['directoryEditForm:menuItemTable'].rowIndex+1)}"
  -                                   reRender="menuItemTable, defaultDocumentSelector">
  -                        <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/down.gif" width="18" height="18"/>
  -                    </a:commandLink>
  +                            <a:outputPanel>
  +                                <h:outputText value="#{wiki:truncateString(menuItem.directory.name, 40, '...')}"/>
  +                            </a:outputPanel>
                   </h:column>
   
                   <h:column>
  -                    <h:selectBooleanCheckbox value="#{node.menuItem}" tabindex="3"/>
  +                            <a:commandLink status="directoryEditFormStatus" tabindex="1"
  +                                           action="#{directoryHome.removeMenuItem(menuItem.directoryId)}"
  +                                           reRender="menuEditor"
  +                                           oncomplete="onAjaxRequestComplete()"
  +                                           styleClass="buttonNonpersistent sessionEventTrigger">
  +                                <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.Remove']}"/>
  +                            </a:commandLink>
                   </h:column>
   
                   <h:column>
  -                    <a:outputPanel>
  -                        <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.dir.gif"
  -                                        width="18" height="20"
  -                                        rendered="#{wiki:isDirectory(node)}"/>
  -                        <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.doc.gif"
  -                                        width="18" height="20"
  -                                        rendered="#{wiki:isDocument(node)}"/>
  -                        <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{fileMetaMap[node.contentType].displayIcon}"
  -                                        width="18" height="20"
  -                                        rendered="#{wiki:isFile(node) and !empty fileMetaMap[node.contentType]}"/>
  -                        <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{fileMetaMap['generic'].displayIcon}"
  -                                        width="18" height="20"
  -                                        rendered="#{wiki:isFile(node) and empty fileMetaMap[node.contentType]}"/>
  -                    </a:outputPanel>
  +                            <a:commandLink rendered="#{uiComponent['directoryEditForm:menuItemTable'].rowIndex != 0}"
  +                                           status="directoryEditFormStatus"
  +                                           action="#{directoryHome.moveMenuItem(uiComponent['directoryEditForm:menuItemTable'].rowIndex, uiComponent['directoryEditForm:menuItemTable'].rowIndex-1)}"
  +                                           oncomplete="onAjaxRequestComplete()"
  +                                           styleClass="sessionEventTrigger" tabindex="1"
  +                                           reRender="menuEditor">
  +                                <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/up.gif" width="18" height="18"/>
  +                            </a:commandLink>
                   </h:column>
  -
                   <h:column>
  -                    <a:outputPanel>
  -                        <h:outputText value="#{wiki:truncateString(node.name, 40, '...')}"/>
  -                    </a:outputPanel>
  +                            <a:commandLink rendered="#{uiComponent['directoryEditForm:menuItemTable'].rowIndex != uiComponent['directoryEditForm:menuItemTable'].rowCount-1}"
  +                                           status="directoryEditFormStatus"
  +                                           action="#{directoryHome.moveMenuItem(uiComponent['directoryEditForm:menuItemTable'].rowIndex, uiComponent['directoryEditForm:menuItemTable'].rowIndex+1)}"
  +                                           oncomplete="onAjaxRequestComplete()"
  +                                           styleClass="sessionEventTrigger" tabindex="1"
  +                                           reRender="menuEditor">
  +                                <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/down.gif" width="18" height="18"/>
  +                            </a:commandLink>
                   </h:column>
   
               </h:dataTable>
   
  +                </h:panelGrid>
  +
           </div>
       </s:div>
  +    </s:div>
   
       <s:div styleClass="entry">
  -        <div class="label">&#160;</div>
  +        <div class="label">
  +            <h:outputText value="#{messages['lacewiki.label.dirEdit.Options']}:"/>
  +        </div>
           <div class="input">
  -            <h:selectBooleanCheckbox value="#{directoryHome.hasFeed}" tabindex="2"
  -                                     disabled="#{empty directoryHome.parentDirectory}"/>
  +            <h:selectBooleanCheckbox value="#{directoryHome.hasFeed}" tabindex="1"
  +                                     disabled="#{empty directoryHome.parentNode}"/>
               <h:outputText value="#{messages['lacewiki.label.dirEdit.EnableFeed']}"/>
               <a:commandLink id="resetFeed" reRender="messageBoxContainer"
                              action="#{directoryHome.resetFeed}"
                              rendered="#{!empty directoryHome.instance.feed}"
  -                           styleClass="buttonNonpersistent">
  +                           oncomplete="onAjaxRequestComplete()"
  +                           styleClass="buttonNonpersistent sessionEventTrigger" tabindex="1">
                   <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.dirEdit.ResetFeed']}"/>
               </a:commandLink>
           </div>
       </s:div>
   
  +    <ui:include src="includes/writeProtectionSelector.xhtml">
  +        <ui:param name="home" value="#{directoryHome}"/>
  +    </ui:include>
  +
   </div>
   <div class="formControls wideLabels">
   
  @@ -205,27 +230,30 @@
           <div class="label">&#160;</div>
           <div class="input">
   
  -            <h:commandLink id="save" styleClass="button"
  +            <h:commandLink id="save" styleClass="button sessionEventTrigger"
                              action="#{directoryHome.persist}"
                              rendered="#{!directoryHome.managed}"
  -                           tabindex="6" accesskey="#{messages['lacewiki.button.dirEdit.Save.accesskey']}">
  +                           tabindex="1" accesskey="#{messages['lacewiki.button.dirEdit.Save.accesskey']}">
                   <h:outputText escape="false" styleClass="buttonLabel" value="#{messages['lacewiki.button.dirEdit.Save']}"/>
               </h:commandLink>
   
  -            <h:commandLink id="update" styleClass="button"
  +            <h:commandLink id="update" styleClass="button sessionEventTrigger"
                              action="#{directoryHome.update}"
                              rendered="#{directoryHome.managed}"
  -                           tabindex="7" accesskey="#{messages['lacewiki.button.dirEdit.Update.accesskey']}">
  +                           tabindex="1" accesskey="#{messages['lacewiki.button.dirEdit.Update.accesskey']}">
                   <h:outputText escape="false" styleClass="buttonLabel" value="#{messages['lacewiki.button.dirEdit.Update']}"/>
               </h:commandLink>
   
  -            <h:outputLink id="delete" value="#" tabindex="8"
  +            <s:fragment rendered="#{directoryHome.managed and !empty directoryHome.parentNode and directoryHome.instance.id != memberArea.id}">
  +                <a:jsFunction name="deleteDirectory"
  +                              action="#{directoryHome.remove}"/>
  +                <h:outputLink value="#" tabindex="1"
                             accesskey="#{messages['lacewiki.button.dirEdit.Delete.accesskey']}" 
  -                          styleClass="button"
  -                          rendered="#{directoryHome.managed and !empty directoryHome.parentDirectory and directoryHome.instance.id != wikiPreferences.memberAreaId}"><j4j:idProxy
  -                          id="openDialogDelete"/>
  +                              onclick="deleteConfirmation('\\'#{directoryHome.instance.name}\\'', 'deleteDirectory')"
  +                              styleClass="button sessionEventTrigger">
                   <h:outputText escape="false" styleClass="buttonLabel" value="#{messages['lacewiki.button.dirEdit.Delete']}"/>
               </h:outputLink>
  +            </s:fragment>
   
           </div>
       </div>
  
  
  
  1.6       +270 -120  jboss-seam/examples/wiki/view/docDisplay_m.xhtml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: docDisplay_m.xhtml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/view/docDisplay_m.xhtml,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -b -r1.5 -r1.6
  --- docDisplay_m.xhtml	20 Nov 2007 08:05:08 -0000	1.5
  +++ docDisplay_m.xhtml	19 Dec 2007 04:29:18 -0000	1.6
  @@ -13,6 +13,8 @@
   
   <ui:define name="control">
   
  +    <s:fragment rendered="#{not documentHome.instance.macroPresent('hideControls') or s:hasPermission('User', 'isAdmin', currentUser)}">
  +
       <s:link id="createDoc" styleClass="linkNavigation" view="/docEdit_#{skin}.xhtml"
               accesskey="#{messages['lacewiki.button.CreateDocument.accesskey']}"
               rendered="#{s:hasPermission('Node', 'create', documentHome.instance.parent)}">
  @@ -20,149 +22,297 @@
           <f:param name="documentId" value=""/>
           <f:param name="parentDirectoryId" value="#{documentHome.instance.parent.id}"/>
       </s:link>
  -
  +        &#160;
       <s:link id="editDoc" styleClass="linkNavigation" view="/docEdit_#{skin}.xhtml"
               accesskey="#{messages['lacewiki.button.EditDocument.accesskey']}"
               rendered="#{s:hasPermission('Node', 'edit', documentHome.instance)}">
           <h:outputText escape="false" value="#{messages['lacewiki.button.EditDocument']}"/>
       </s:link>
  -
  -    <s:link id="showHistory" styleClass="linkNavigation" view="/docHistory_#{skin}.xhtml"
  +        &#160;
  +        <s:link id="showHistory" styleClass="linkNavigation"
               accesskey="#{messages['lacewiki.button.HistoryDocument.accesskey']}"
  -            rendered="#{documentHome.historicalNodesPresent}">
  +                view="/docHistory_#{skin}.xhtml"
  +                rendered="#{documentHome.historicalFilesPresent}">
           <h:outputText escape="false" value="#{messages['lacewiki.button.HistoryDocument']}"/>
  -        <f:param name="nodeId" value="#{documentHome.nodeId}"/>
  +            <f:param name="fileId" value="#{documentHome.nodeId}"/>
       </s:link>
  -
  +        &#160;
       <s:link id="browseDir" styleClass="linkNavigation" view="/dirDisplay_#{skin}.xhtml"
               accesskey="#{messages['lacewiki.button.BrowseDirectory.accesskey']}">
           <h:outputText escape="false" value="#{messages['lacewiki.button.BrowseDirectory']}"/>
  -        <f:param name="directoryId" value="#{documentHome.parentDirectory.id}"/>
  +            <f:param name="directoryId" value="#{documentHome.instance.parent.id}"/>
       </s:link>
   
  +    </s:fragment>
  +
   </ui:define>
   
   <ui:define name="content">
   
  +    <s:fragment rendered="#{s:hasPermission('Comment', 'create', documentHome.instance) and commentHome.showForm}">
  +        <hr/>
  +        <h3>
  +            <h:outputText value="#{messages['lacewiki.label.commentForm.PostComment']}:"/>
  +        </h3>
  +        <h:form id="commentForm"><s:validateAll>
  +
  +            <div class="errorMessage"><h:message for="userName"/></div>
  +            <div>#{messages['lacewiki.label.commentForm.Name']}:&#160;<br/><h:inputText size="30" maxlength="100" required="true" id="userName" value="#{commentHome.instance.fromUserName}"/></div>
  +
  +            <div class="errorMessage"><h:message for="userEmail"/></div>
  +            <div>#{messages['lacewiki.label.commentForm.Email']}:&#160;<br/><h:inputText size="30" maxlength="255" required="false" id="userEmail" value="#{commentHome.instance.fromUserEmail}"/></div>
  +
  +            <div class="errorMessage"><h:message for="userHomepage"/></div>
  +            <div>#{messages['lacewiki.label.commentForm.Homepage']}:&#160;<br/><h:inputText size="30" maxlength="1000" required="false" id="userHomepage" value="#{commentHome.instance.fromUserHomepage}"/></div>
  +
  +            <div class="errorMessage"><h:message for="subject"/></div>
  +            <div>#{messages['lacewiki.label.commentForm.Subject']}:&#160;<br/><h:inputText size="30" maxlength="255" required="true" id="subject" value="#{commentHome.instance.subject}"/></div>
  +
  +            <div class="errorMessage"><h:message for="comment"/></div>
  +            <div>
  +                <h:inputTextarea required="true"
  +                                 cols="45"
  +                                 rows="10"
  +                                 id="comment"
  +                                 value="#{commentHome.instance.content}"/>
  +            </div>
  +
  +            <s:div rendered="#{!identity.loggedIn}">
  +                <div class="errorMessage"><h:message for="verifyCaptcha"/></div>
  +                <div>#{messages['lacewiki.label.VerificationQuestion']}:&#160;<br/>
  +                    <h:panelGroup>
  +                        <h:inputText size="6" maxlength="6" required="true" id="verifyCaptcha" value="#{captcha.response}"/>
  +                        <h:graphicImage value="/seam/resource/captcha?nocache=#{wiki:generateRandomNumber()}"/>
  +                    </h:panelGroup>
  +                </div>
  +            </s:div>
  +
  +            <div class="formControls">
  +                <h:panelGroup>
  +                    <h:commandButton action="#{commentHome.persist}" value="#{messages['lacewiki.label.commentForm.PostComment']}"/>
  +                    <h:commandButton action="#{commentHome.cancel}" immediate="true" value="#{messages['lacewiki.label.Cancel']}"/>
  +                </h:panelGroup>
  +            </div>
  +
  +        </s:validateAll></h:form>
  +        <hr/>
  +    </s:fragment>
  +
  +
       <s:div id="documentDisplay" styleClass="documentDisplay">
  -        <s:div rendered="#{documentHome.instance.nameAsTitle}"><h1 class="documentTitle">#{documentHome.instance.name}</h1></s:div>
  +
  +        <c:if test="#{not empty documentHome.instance.areaNumber}">
  +
  +            <wiki:formattedText value="#{documentHome.instance.header}"
  +                                linkStyleClass="regularLink"
  +                                brokenLinkStyleClass="brokenLink"
  +                                attachmentLinkStyleClass="regularLink"
  +                                thumbnailLinkStyleClass="regularLink"
  +                                linkBaseFile="#{documentHome.instance}"
  +                                currentAreaNumber="#{documentHome.instance.areaNumber}"
  +                                enablePlugins="true"/>
  +
  +            <s:div rendered="#{documentHome.instance.nameAsTitle}">
  +                <h:outputLink value="#{wiki:renderURL(currentDocument)}">
  +                    <h1 class="documentTitle">#{documentHome.instance.name}</h1>
  +                </h:outputLink>
  +            </s:div>
  +
           <wiki:formattedText value="#{wiki:disableFloats(documentHome.instance.content)}"
                               linkStyleClass="regularLink"
                               brokenLinkStyleClass="brokenLink"
                               attachmentLinkStyleClass="regularLink"
                               thumbnailLinkStyleClass="regularLink"
  -                            renderBaseDocument="#{documentHome.instance}"
  -                            renderBaseDirectory="#{documentHome.parentDirectory}"
  +                                linkBaseFile="#{documentHome.instance}"
  +                                currentAreaNumber="#{documentHome.instance.areaNumber}"
  +                                enablePlugins="#{not documentHome.instance.macroPresent('disableContentMacros')}"/>
  +
  +            <wiki:formattedText value="#{documentHome.instance.footer}"
  +                                linkStyleClass="regularLink"
  +                                brokenLinkStyleClass="brokenLink"
  +                                attachmentLinkStyleClass="regularLink"
  +                                thumbnailLinkStyleClass="regularLink"
  +                                linkBaseFile="#{documentHome.instance}"
  +                                currentAreaNumber="#{documentHome.instance.areaNumber}"
                               enablePlugins="true"/>
  +        </c:if>
  +
       </s:div>
   
  -    <ui:include src="includes/attachmentDisplay.xhtml"/>
  +    <s:div styleClass="box" rendered="#{wikiTextAttachments.size() > 0}">
   
  -    <s:fragment rendered="#{not empty commentHome.comments and documentHome.instance.enableComments}">
  -        <br/>
  -        <div class="boxHeader">
  -            <h:outputText value="#{wiki:sizeOf(commentHome.comments)}&#160;#{messages['lacewiki.label.commentsDisplay.Comment']}:"
  -                          rendered="#{wiki:sizeOf(commentHome.comments) == 1}"/>
  -            <h:outputText value="#{wiki:sizeOf(commentHome.comments)}&#160;#{messages['lacewiki.label.commentsDisplay.Comments']}:"
  -                          rendered="#{wiki:sizeOf(commentHome.comments) > 1}"/>
  -        </div>
  +        <h3>
  +            <h:outputText value="#{messages['lacewiki.label.attachmentDisplay.Attachments']}:"/>
  +        </h3>
  +
  +        <h:dataTable value="#{wikiTextAttachments}" var="link"
  +             id="attachmentTable"
  +             rowClasses="rowOdd,rowEven">
  +            <h:column>
  +                <h:panelGrid columns="3">
  +                    <s:span><a name="attachment#{uiComponent['attachmentTable'].rowIndex + 1}"/></s:span>
  +                    <h:outputText value="#&#160;#{uiComponent['attachmentTable'].rowIndex + 1}"/>
  +                    <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{uploadTypes[link.file.contentType].displayIcon}"
  +                                    rendered="#{not empty uploadTypes[link.file.contentType]}" width="18" height="20"/>
  +                    <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{uploadTypes['generic'].displayIcon}"
  +                                    rendered="#{empty uploadTypes[link.file.contentType]}" width="18" height="20"/>
  +                </h:panelGrid>
  +            </h:column>
  +            <h:column>
  +                <h:panelGroup>
  +                    <h:outputLink value="#{wiki:renderURL(link.file)}">
  +                        <h:outputText value="#{link.file.name}"/>
  +                        &#160;
  +                        <h:outputText value="(#{link.file.filename}, #{wiki:displayFilesize(link.file.filesize)}, #{link.file.contentType})"/>
  +                    </h:outputLink>
  +                </h:panelGroup>
  +            </h:column>
  +        </h:dataTable>
  +
  +    </s:div>
  +
  +    <s:div rendered="#{wikiPreferences.showTags and not documentHome.instance.macroPresent('hideTags') and not empty documentHome.instance.tags}"
  +           styleClass="smallFont">
  +        <s:div>
  +            #{messages['lacewiki.label.docDisplay.Tags']}:&#160;
  +            <ui:repeat var="tag" value="#{documentHome.instance.tagsAsList}">
  +                <s:link view="/tagDisplay_#{skin}.xhtml" value="#{tag}">
  +                    <f:param value="#{tag}" name="tag"/>
  +                </s:link>
  +
  +                <h:outputText rendered="#{documentHome.instance.tagsAsList.indexOf(tag) &lt; documentHome.instance.tagsAsList.size()-1}"
  +                              value="&#160;|&#160;"/>
  +            </ui:repeat>
  +        </s:div>
  +    </s:div>
  +
  +    <s:div id="commentDisplayForm">
  +        <c:if test="#{not documentHome.instance.macroPresent('hideComments') and documentHome.instance.enableComments}">
  +
  +            <s:fragment rendered="#{s:hasPermission('Comment', 'create', documentHome.instance) and not commentHome.showForm}">
  +                <hr/>
  +                <s:button action="#{commentHome.newComment()}" value="#{messages['lacewiki.label.commentForm.PostComment']}"/>
  +                <hr/>
  +            </s:fragment>
   
  -        <h:panelGrid columns="1" rowClasses="rowEven, rowOdd">
  +            <s:div styleClass="box" rendered="#{not empty commentQuery.comments}">
   
  -            <c:forEach var="c" items="#{commentHome.comments}">
  +                <h3>
  +                    <h:outputText value="#{commentQuery.comments.size()}&#160;#{messages['lacewiki.label.commentsDisplay.Comment']}:"
  +                                  rendered="#{commentQuery.comments.size() == 1}"/>
  +                    <h:outputText value="#{commentQuery.comments.size()}&#160;#{messages['lacewiki.label.commentsDisplay.Comments']}:"
  +                                  rendered="#{commentQuery.comments.size() > 1}"/>
  +                </h3>
  +
  +                <h:panelGrid columns="1" rowClasses="rowOdd, rowEven">
  +
  +                    <c:forEach var="c" items="#{commentQuery.comments}">
   
                   <s:div>
   
  -                    <div class="commentSubject">
  -                        <h:outputText value="#{c.subject}" rendered="#{documentHome.instance.name != c.subject}"/>
  -                    </div>
  +                            <a id="comment#{c.id}"/>
  +
  +                            <s:div rendered="#{currentDocument.name != c.subject}">
  +                                <h3>
  +                                    <h:outputLink value="#{wiki:renderURL(c)}">
  +                                        <h:outputText value="#{c.subject}"/>
  +                                    </h:outputLink>
  +                                </h3>
  +                            </s:div>
   
  -                    <div class="commentAuthorDate">
  -                    <span class="commentDate">
  +                            <s:div styleClass="smallFont">
                           <h:outputText value="#{c.createdOn}">
                               <f:convertDateTime pattern="dd. MMM yyyy, HH:mm" timeZone="#{wikiPreferences.timeZone}"/>
                           </h:outputText>
  -                        <h:outputText value="&#160;#{wikiPreferences.timeZone}"/>
  -                    </span>
  -                        <s:span>&#160;(
  -                            <s:span styleClass="commentAuthor" rendered="#{empty c.fromUserHomepage}">#{c.fromUserName}</s:span>
  -                            <s:span styleClass="commentAuthor" rendered="#{!empty c.fromUserHomepage}"><a
  -                                    href="http://#{c.fromUserHomepage}">#{c.fromUserName}</a></s:span>
  -                            <s:span styleClass="commentAuthor" rendered="#{!empty c.fromUserEmail}">,&#160;
  -                                <h:outputLink value="#{wiki:escapeEmailURL(wiki:concat('mailto:', c.fromUserEmail))}">#{wiki:escapeAtSymbol(c.fromUserEmail)}</h:outputLink>
  -                            </s:span>)
  -                        </s:span>
  -                    </div>
   
  -                    <s:div styleClass="commentText" rendered="#{c.useWikiText}">
  -                        <wiki:formattedText value="#{c.text}"
  +                                <s:div rendered="#{c.ownedByRegularUser}">
  +                                    <s:link view="/userInfo_#{skin}.xhtml" propagation="none">
  +                                        <f:param name="userId" value="#{c.createdBy.id}"/>
  +                                        <h:outputText value="#{c.createdBy.fullname}"/>
  +                                    </s:link>
  +                                    <br/>
  +                                    <h:outputLink value="#{wiki:escapeEmailURL(wiki:concat('mailto:', c.createdBy.email))}">
  +                                        <h:outputText value="#{wiki:escapeAtSymbol(c.createdBy.email)}"/>
  +                                    </h:outputLink>
  +                                </s:div>
  +
  +                                <s:div rendered="#{not c.ownedByRegularUser}">
  +                                    <h:outputText rendered="#{empty c.fromUserHomepage}" value="#{c.fromUserName}"/>
  +                                    <s:fragment rendered="#{not empty c.fromUserHomepage}">
  +                                        <a href="#{c.fromUserHomepage}">#{c.fromUserName}</a>
  +                                    </s:fragment>
  +                                    <s:fragment rendered="#{not empty c.fromUserEmail}">
  +                                        <br/>
  +                                        <h:outputLink value="#{wiki:escapeEmailURL(wiki:concat('mailto:', c.fromUserEmail))}">
  +                                            <h:outputText value="#{wiki:escapeAtSymbol(c.fromUserEmail)}"/>
  +                                        </h:outputLink>
  +                                    </s:fragment>
  +                                </s:div>
  +                            </s:div>
  +
  +                            <s:div rendered="#{c.useWikiText and not empty currentDocument.areaNumber}">
  +                                <wiki:formattedText value="#{c.content}"
                                               linkStyleClass="regularLink"
                                               brokenLinkStyleClass="brokenLink"
                                               attachmentLinkStyleClass="regularLink"
                                               thumbnailLinkStyleClass="regularLink"
  -                                            renderBaseDocument="#{documentHome.instance}"
  -                                            renderBaseDirectory="#{documentHome.parentDirectory}"
  +                                                    linkBaseFile="#{currentDocument}"
  +                                                    currentAreaNumber="#{currentDocument.areaNumber}"
                                               enablePlugins="false"/>
                       </s:div>
  -                    <s:div styleClass="commentText" rendered="#{not c.useWikiText and documentHome.instance.name != c.subject}" style="margin-top:15px;">
  -                        <h:outputText value="#{wiki:escapeHTML(c.text, true)}" escape="false"/>
  +                            <s:div rendered="#{not c.useWikiText and currentDocument.name != c.subject}" style="margin-top:15px;">
  +                                <h:outputText value="#{wiki:escapeHTML(c.content, true)}" escape="false"/>
                       </s:div>
  -                    <s:div styleClass="commentText" rendered="#{not c.useWikiText and documentHome.instance.name == c.subject}">
  -                        <h:outputText value="#{wiki:escapeHTML(c.text, true)}" escape="false"/>
  +                            <s:div rendered="#{not c.useWikiText and currentDocument.name == c.subject}">
  +                                <h:outputText value="#{wiki:escapeHTML(c.content, true)}" escape="false"/>
                       </s:div>
   
  -                    <div align="right">
  -                        <h:form rendered="#{s:hasPermission('Comment', 'delete', documentHome.instance)}">
  -                            <h:commandButton action="#{commentHome.remove(c.id)}" value="Remove Comment"/>
  -                        </h:form>
  -                    </div>
  -
  +                            <s:div styleClass="smallFont"
  +                                   rendered="#{not empty c.createdBy.profile.signature and not empty currentDocument.areaNumber}">
  +                                <s:div>
  +                                    <h:outputText value="-- "/>
  +                                </s:div>
  +                                <wiki:formattedText value="#{c.createdBy.profile.signature}"
  +                                                    linkStyleClass="regularLink"
  +                                                    brokenLinkStyleClass="brokenLink"
  +                                                    attachmentLinkStyleClass="regularLink"
  +                                                    thumbnailLinkStyleClass="regularLink"
  +                                                    linkBaseFile="#{currentDocument}"
  +                                                    currentAreaNumber="#{currentDocument.areaNumber}"
  +                                                    enablePlugins="false"/>
                   </s:div>
   
  -            </c:forEach>
  +                            <h:form>
  +                            <h:panelGroup>
  +                                <s:fragment rendered="#{not commentHome.showForm and s:hasPermission('Comment', 'create', documentHome.instance)}">
  +
  +                                    <s:button action="#{commentHome.replyTo()}"
  +                                              value="#{messages['lacewiki.button.commentsDisplay.ReplyTo']}">
  +                                        <f:param name="parentCommentId" value="#{c.id}"/>
  +                                    </s:button>
  +
  +                                    <s:button action="#{commentHome.quote()}"
  +                                              value="#{messages['lacewiki.button.commentsDisplay.Quote']}">
  +                                        <f:param name="parentCommentId" value="#{c.id}"/>
  +                                    </s:button>
   
  -        </h:panelGrid>
       </s:fragment>
   
  -    <s:fragment rendered="#{documentHome.instance.enableComments and documentHome.instance.enableCommentForm and not documentHome.instance.macroPresent('hideComments')}">
  -        <br/>
  -        <div class="boxHeader">#{messages['lacewiki.label.commentForm.PostComment']}:</div>
  -        <h:form id="commentForm"><s:validateAll>
  -
  -            <div class="errorMessage"><h:message for="userName"/></div>
  -            <div>#{messages['lacewiki.label.commentForm.Name']}:&#160;<br/><h:inputText size="30" maxlength="100" required="true" id="userName" value="#{commentHome.comment.fromUserName}"/></div>
  -
  -            <div class="errorMessage"><h:message for="userEmail"/></div>
  -            <div>#{messages['lacewiki.label.commentForm.Email']}:&#160;<br/><h:inputText size="30" maxlength="255" required="false" id="userEmail" value="#{commentHome.comment.fromUserEmail}"/></div>
  -
  -            <div class="errorMessage"><h:message for="userHomepage"/></div>
  -            <div>#{messages['lacewiki.label.commentForm.Homepage']}:&#160;<br/><h:inputText size="30" maxlength="1000" required="false" id="userHomepage" value="#{commentHome.comment.fromUserHomepage}"/></div>
  -
  -            <div class="errorMessage"><h:message for="subject"/></div>
  -            <div>#{messages['lacewiki.label.commentForm.Subject']}:&#160;<br/><h:inputText size="30" maxlength="255" required="true" id="subject" value="#{commentHome.comment.subject}"/></div>
  +                                 <s:fragment rendered="#{s:hasPermission('Comment', 'delete', currentDocument) and not commentHome.showForm}">
   
  -            <div class="errorMessage"><h:message for="comment"/></div>
  -            <div>
  -                <h:inputTextarea required="true"
  -                                 cols="45"
  -                                 rows="5"
  -                                 id="comment"
  -                                 value="#{commentHome.comment.text}"/>
  -            </div>
  +                                     <h:commandButton action="#{commentHome.remove(c.id)}"
  +                                                      value="#{messages['lacewiki.button.commentsDisplay.RemoveComment']}"/>
  +                                </s:fragment>
  +                            </h:panelGroup>
  +                            </h:form>
   
  -            <s:div rendered="#{!identity.loggedIn}">
  -                <div>#{messages['lacewiki.label.VerificationQuestion']}:&#160;#{messages['lacewiki.label.VerificationQuestionQuestion']}&#160;<h:outputText value="#{captcha.question}"/>?</div>
  -                <div class="errorMessage"><h:message for="verifyCaptcha"/></div>
  -                <div>#{messages['lacewiki.label.VerificationEnterResponse']}:&#160;</div>
  -                <h:inputText size="5" maxlength="5" required="true" id="verifyCaptcha" value="#{captcha.response}"/>
               </s:div>
  +                    </c:forEach>
  +                </h:panelGrid>
   
  -            <div class="formControls">
  -                <h:commandButton action="#{commentHome.persist}" value="#{messages['lacewiki.label.commentForm.PostComment']}"/>
  -            </div>
  -    
  -        </s:validateAll></h:form>
  -    </s:fragment>
  +            </s:div>
  +        </c:if>
  +    </s:div>
   
   
   </ui:define>
  
  
  
  1.3       +20 -26    jboss-seam/examples/wiki/view/docHistory_m.xhtml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: docHistory_m.xhtml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/view/docHistory_m.xhtml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- docHistory_m.xhtml	12 Oct 2007 16:31:24 -0000	1.2
  +++ docHistory_m.xhtml	19 Dec 2007 04:29:18 -0000	1.3
  @@ -9,7 +9,7 @@
                   template="themes/#{wikiPreferences.themeName}/#{skin}/template.xhtml">
   
   <ui:define name="screenname">
  -    <h:outputText value="#{messages['lacewiki.label.docHistory.DocumentHistory']} #{nodeHistory.currentNode.name}"/>
  +    <h:outputText value="#{messages['lacewiki.label.docHistory.DocumentHistory']} #{documentHistory.currentFile.name}"/>
   </ui:define>
   
   <ui:define name="control">
  @@ -21,26 +21,26 @@
   
   <ui:define name="content">
   
  -<h:form rendered="#{historicalNodeList.rowCount >0}" styleClass="box">
  +<h:form rendered="#{historicalFileList.rowCount >0}" styleClass="box">
   
  -    <div>#{messages['lacewiki.label.docHistory.CurrentRevision']}:&#160;<h:outputText value="#{nodeHistory.currentNode.revision}"/></div>
  -    <div>#{messages['lacewiki.label.docHistory.Parent']}:&#160;<h:outputText value="#{nodeHistory.currentNode.parent.name}"/></div>
  +    <div>#{messages['lacewiki.label.docHistory.CurrentRevision']}:&#160;<h:outputText value="#{documentHistory.currentFile.revision}"/></div>
  +    <div>#{messages['lacewiki.label.docHistory.Parent']}:&#160;<h:outputText value="#{documentHistory.currentFile.parent.name}"/></div>
       <div>#{messages['lacewiki.label.docHistory.CreatedOn']}:&#160;
  -        <h:outputText value="#{nodeHistory.currentNode.createdOn}">
  -            <f:convertDateTime type="both" timeZone="#{wikiPreferences.timeZone}"/>
  +        <h:outputText value="#{documentHistory.currentFile.createdOn}">
  +            <f:convertDateTime pattern="dd. MMM yyyy, HH:mm" timeZone="#{wikiPreferences.timeZone}"/>
           </h:outputText>
  -        (#{nodeHistory.currentNode.createdBy.username})
  +        (#{documentHistory.currentFile.createdBy.username})
       </div>
       <div>#{messages['lacewiki.label.docHistory.LastModifiedOn']}:&#160;
  -        <h:outputText value="#{nodeHistory.currentNode.lastModifiedOn}">
  -            <f:convertDateTime type="both" timeZone="#{wikiPreferences.timeZone}"/>
  +        <h:outputText value="#{documentHistory.currentFile.lastModifiedOn}">
  +            <f:convertDateTime pattern="dd. MMM yyyy, HH:mm" timeZone="#{wikiPreferences.timeZone}"/>
           </h:outputText>
  -        (#{nodeHistory.currentNode.lastModifiedBy.username})
  +        (#{documentHistory.currentFile.lastModifiedBy.username})
       </div>
       <div>#{messages['lacewiki.label.docHistory.HistoricalRevisions']}:</div>
   
       <h:dataTable id="historyTable" var="hnode"
  -                 value="#{historicalNodeList}"
  +                 value="#{historicalFileList}"
                    rowClasses="rowEven, rowOdd"
                    cellpadding="5" cellspacing="0" border="1">
   
  @@ -50,26 +50,26 @@
   
           <h:column>
               <h:outputText value="#{hnode.lastModifiedOn}">
  -                <f:convertDateTime type="both" timeZone="#{wikiPreferences.timeZone}"/>
  +                <f:convertDateTime pattern="dd. MMM yyyy, HH:mm" timeZone="#{wikiPreferences.timeZone}"/>
               </h:outputText>
               <h:outputText value="&#160;(#{hnode.lastModifiedByUsername})" rendered="#{!empty hnode.lastModifiedByUsername}"/>
               <h:outputText value="&#160;(unknown)" rendered="#{empty hnode.lastModifiedByUsername}"/>
           </h:column>
   
           <h:column>
  -            <h:commandButton action="#{nodeHistory.displayHistoricalRevision}"
  +            <h:commandButton action="#{documentHistory.displayHistoricalRevision}"
                                value="#{messages['lacewiki.button.Show']}"/>
           </h:column>
           <h:column>
  -            <h:commandButton action="#{nodeHistory.rollback}"
  +            <h:commandButton action="#{documentHistory.rollback}"
                                value="#{messages['lacewiki.button.Rollback']}"
  -                             rendered="#{s:hasPermission('Node', 'edit', nodeHistory.currentNode)}"/>
  +                             rendered="#{s:hasPermission('Node', 'edit', documentHistory.currentFile)}"/>
           </h:column>
   
       </h:dataTable>
   
       <s:div rendered="#{s:hasPermission('User', 'isAdmin', currentUser)}" styleClass="formControls">
  -        <h:commandButton id="purge" action="#{nodeHistory.purgeHistory}"
  +        <h:commandButton id="purge" action="#{documentHistory.purgeHistory}"
                            value="#{messages['lacewiki.button.PurgeHistory']}"/>
       </s:div>
   
  @@ -77,23 +77,17 @@
   
   <br/>
   
  -<s:div id="diffResult">
  -    <s:div rendered="#{not empty nodeHistory.diffResult}">
  -        <h:outputText value="#{nodeHistory.diffResult}" escape="false"/>
  -    </s:div>
  -</s:div>
  -
   <s:div id="historicalPreview">
       <s:div id="documentDisplayContainer"
  -           rendered="#{not empty nodeHistory.displayedHistoricalNode}">
  +           rendered="#{not empty documentHistory.displayedHistoricalFile}">
           <s:div id="documentDisplay" styleClass="documentDisplay">
  -            <wiki:formattedText value="#{nodeHistory.displayedHistoricalNode.content}"
  +            <wiki:formattedText value="#{documentHistory.displayedHistoricalFile.content}"
                                   linkStyleClass="regularLink"
                                   brokenLinkStyleClass="brokenLink"
                                   attachmentLinkStyleClass="regularLink"
                                   thumbnailLinkStyleClass="regularLink"
  -                                renderBaseDocument="#{nodeHistory.currentNode}"
  -                                renderBaseDirectory="#{nodeHistory.currentNode.parent}"
  +                                linkBaseFile="#{documentHistory.currentFile}"
  +                                currentAreaNumber="#{documentHistory.currentFile.parent.areaNumber}"
                                   enablePlugins="false"/>
           </s:div>
       </s:div>
  
  
  
  1.3       +28 -16    jboss-seam/examples/wiki/view/search_d.xhtml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: search_d.xhtml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/view/search_d.xhtml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- search_d.xhtml	12 Oct 2007 16:31:24 -0000	1.2
  +++ search_d.xhtml	19 Dec 2007 04:29:18 -0000	1.3
  @@ -16,7 +16,7 @@
   
   <ui:define name="controlTwo">
   
  -    <s:link id="close" styleClass="linkNavigation" view="/wiki.xhtml" propagation="end"
  +    <s:link id="close" styleClass="linkNavigation sessionEventTrigger" view="/wiki.xhtml" propagation="end"
               accesskey="#{messages['lacewiki.button.Close.accesskey']}">
           <h:outputText escape="false" value="#{messages['lacewiki.button.Close']}"/>
       </s:link>
  @@ -28,15 +28,19 @@
       <h:form id="searchForm" styleClass="box">
           <s:div styleClass="form" id="searchControl">
   
  -            <ui:include src="includes/statusIndicator.xhtml"/>
  +            <ui:include src="includes/statusIndicator.xhtml">
  +                <ui:param name="statusId" value="searchFormStatus"/>
  +            </ui:include>
  +
  +            <script type="text/javascript">startSessionTimeoutCheck()</script>
   
               <a:region>
   
               <h:panelGrid columns="5"
                            styleClass="datatable topLeftBottomBorder"
                            headerClass="regularHeader rightBorder"
  -                         columnClasses="twentyPercentColumn formFields, twentyPercentColumn formFields,
  -                                        twentyPercentColumn formFields, twentyPercentColumn formFields,
  +                         columnClasses="formFields minorPadding, formFields minorPadding,
  +                                        formFields minorPadding, formFields minorPadding,
                                           defaultColumn alignCenter rightBorder formFields"
                            cellpadding="0" cellspacing="0" border="0">
   
  @@ -46,18 +50,19 @@
   
                   <h:panelGrid columns="2" cellpadding="0" cellspacing="0" border="0">
                       <h:outputText styleClass="label" value="In:&#160;"/>
  -                    <h:selectOneMenu value="#{wikiSearch.selectedSearchableEntity}" tabindex="1">
  +                    <h:selectOneMenu value="#{wikiSearch.selectedSearchableEntity}" tabindex="1" styleClass="ajaxSupport">
                           <s:selectItems value="#{searchRegistry.searchableEntities}"
                                          var="se"
                                          label="#{se.description}"
                                          noSelectionLabel="#{messages['lacewiki.label.search.All']}"/>
  -                        <a:support status="searchForm:status" event="onchange" reRender="searchControl, searchPager, searchResult" action="#{wikiSearch.search}"/>
  +                        <a:support status="searchFormStatus" event="onchange" reRender="searchControl, searchPager, searchResult"
  +                                   action="#{wikiSearch.search}" oncomplete="onAjaxRequestComplete()"/>
                       </h:selectOneMenu>
                   </h:panelGrid>
   
                   <h:panelGrid columns="2" rendered="#{empty wikiSearch.selectedSearchableEntity}" cellpadding="0" cellspacing="0" border="0">
                       <h:outputText styleClass="label" value="#{messages['lacewiki.label.search.Terms']}:&#160;"/>
  -                    <h:inputText value="#{wikiSearch.simpleQuery}" size="28" maxlength="1000" tabindex="1"/>
  +                    <h:inputText value="#{wikiSearch.simpleQuery}" size="25" maxlength="1000" tabindex="1"/>
                   </h:panelGrid>
                   <s:span rendered="#{not empty wikiSearch.selectedSearchableEntity}">&#160;</s:span>
   
  @@ -69,17 +74,20 @@
   
                   <h:panelGrid columns="2" cellpadding="0" cellspacing="0" border="0">
                       <h:outputText styleClass="label" value="#{messages['lacewiki.label.search.Results']}:&#160;"/>
  -                    <h:selectOneMenu value="#{wikiSearch.pageSize}" id="pageSize" tabindex="1">
  +                    <h:selectOneMenu value="#{wikiSearch.pageSize}" id="pageSize" tabindex="1" styleClass="ajaxSupport">
                           <f:selectItem itemLabel="5" itemValue="5"/>
                           <f:selectItem itemLabel="15" itemValue="15"/>
                           <f:selectItem itemLabel="50" itemValue="50"/>
  -                        <a:support status="searchForm:status" event="onchange" reRender="searchControl, searchPager, searchResult" action="#{wikiSearch.search}"/>
  +                        <a:support status="searchFormStatus" event="onchange" reRender="searchControl, searchPager, searchResult"
  +                                   action="#{wikiSearch.search}" oncomplete="onAjaxRequestComplete()"/>
                       </h:selectOneMenu>
                   </h:panelGrid>
   
  -                <a:commandLink id="find" styleClass="buttonNonpersistent" reRender="workspaceSwitcher, searchControl, searchPager, searchResult"
  -                               status="searchForm:status"
  +                <a:commandLink id="find" styleClass="buttonNonpersistent sessionEventTrigger"
  +                               reRender="workspaceSwitcher, searchControl, searchPager, searchResult"
  +                               status="searchFormStatus"
                                  action="#{wikiSearch.search()}"
  +                               oncomplete="onAjaxRequestComplete()"
                                  tabindex="1" accesskey="#{messages['lacewiki.button.search.Find.accesskey']}">
                       <h:outputText escape="false" styleClass="buttonLabel" value="#{messages['lacewiki.button.search.Find']}"/>
   
  @@ -138,13 +146,15 @@
                            cellpadding="0" cellspacing="0" border="0"
                            rendered="#{wikiSearch.totalCount > 0}">
   
  -                <h:commandLink action="#{wikiSearch.firstPage()}" rendered="#{wikiSearch.previousPageAvailable}" tabindex="7">
  +                <h:commandLink action="#{wikiSearch.firstPage()}" styleClass="sessionEventTrigger"
  +                               rendered="#{wikiSearch.previousPageAvailable}" tabindex="7">
                       <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/page.first.gif" width="13" height="11"/>
                   </h:commandLink>
                   <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/blank.gif" width="13" height="11"
                                   rendered="#{!wikiSearch.previousPageAvailable}"/>
   
  -                <h:commandLink action="#{wikiSearch.previousPage()}" rendered="#{wikiSearch.previousPageAvailable}" tabindex="7">
  +                <h:commandLink action="#{wikiSearch.previousPage()}" styleClass="sessionEventTrigger"
  +                               rendered="#{wikiSearch.previousPageAvailable}" tabindex="7">
                       <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/page.previous.gif" width="13" height="11"/>
                   </h:commandLink>
                   <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/blank.gif" width="13" height="11"
  @@ -154,13 +164,15 @@
                                        #{wikiSearch.lastRow} #{messages['lacewiki.label.search.Of']}
                                        #{wikiSearch.totalCount} #{messages['lacewiki.label.search.Hits']}"/>
   
  -                <h:commandLink action="#{wikiSearch.nextPage()}" rendered="#{wikiSearch.nextPageAvailable}" tabindex="7">
  +                <h:commandLink action="#{wikiSearch.nextPage()}" styleClass="sessionEventTrigger"
  +                               rendered="#{wikiSearch.nextPageAvailable}" tabindex="7">
                       <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/page.next.gif" width="13" height="11"/>
                   </h:commandLink>
                   <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/blank.gif" width="13" height="11"
                                   rendered="#{!wikiSearch.nextPageAvailable}"/>
   
  -                <h:commandLink action="#{wikiSearch.lastPage()}" rendered="#{wikiSearch.nextPageAvailable}" tabindex="7">
  +                <h:commandLink action="#{wikiSearch.lastPage()}" styleClass="sessionEventTrigger"
  +                               rendered="#{wikiSearch.nextPageAvailable}" tabindex="7">
                       <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/page.last.gif" width="13" height="11"/>
                   </h:commandLink>
                   <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/blank.gif" width="13" height="11"
  @@ -185,7 +197,7 @@
                           <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{hit.icon}" width="18" height="20"/>
                           <h:outputLink value="#{hit.link}" tabindex="1"><h:outputText escape="false" value="#{hit.title}"/></h:outputLink>
                       </h:panelGrid>
  -                    <h:outputText escape="false" value="#{hit.fragment}"/>
  +                    <h:outputText styleClass="smallFont" escape="false" value="#{hit.fragment}"/>
                   </h:column>
   
               </h:dataTable>
  
  
  
  1.3       +73 -20    jboss-seam/examples/wiki/view/tagDisplay_d.xhtml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: tagDisplay_d.xhtml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/view/tagDisplay_d.xhtml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- tagDisplay_d.xhtml	12 Oct 2007 16:31:24 -0000	1.2
  +++ tagDisplay_d.xhtml	19 Dec 2007 04:29:18 -0000	1.3
  @@ -7,65 +7,118 @@
                   xmlns:h="http://java.sun.com/jsf/html"
                   template="themes/#{wikiPreferences.themeName}/template.xhtml">
   
  +<ui:param name="hideControls" value="true"/>
  +
   <ui:define name="screenname">
  -    <h:outputText value="#{messages['lacewiki.label.tagDisplay.Tag']}: #{tagHome.tag}"/>
  +    <h:outputText value="#{messages['lacewiki.label.tagDisplay.Tag']}: #{tagQuery.tag}"/>
   </ui:define>
   
   <ui:define name="content">
   
   <div class="box">
   
  -    <h:dataTable id="tagTable" var="node"
  -                 value="#{tagHome.taggedDocuments}"
  -                 rendered="#{!empty tagHome.taggedDocuments}"
  -                 styleClass="datatable topLeftBottomBorder"
  -                 headerClass="regularHeader rightBorder"
  -                 columnClasses="onePercentColumn rightBorder alignLeft, defaultColumn rightBorder alignLeft,
  -                                twentyPercentColumn rightBorder alignLeft, twentyPercentColumn rightBorder alignLeft"
  +    <h:dataTable id="tagTable" var="file"
  +                 value="#{tagQuery.taggedFiles}"
  +                 rendered="#{!empty tagQuery.taggedFiles}"
  +                 styleClass="datatable topLeftBottomBorder smallFont"
  +                 headerClass="regularHeader rightBorder alignCenter"
  +                 columnClasses="defaultColumn rightBorder alignLeft, twentyPercentColumn rightBorder alignLeft,
  +                                tenPercentColumn rightBorder alignLeft,
  +                                tenPercentColumn rightBorder alignCenter, tenPercentColumn rightBorder alignCenter"
                    rowClasses="rowOdd,rowEven"
                    cellpadding="0" cellspacing="0" border="0">
   
           <h:column>
  +            <f:facet name="header">
  +                <h:outputText value="#{messages['lacewiki.label.tagDisplay.Tag']}: #{tagQuery.tag}"/>
  +            </f:facet>
  +
               <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.doc.gif"
  -                            width="18" height="20"/>
  +                            width="18" height="20" style="vertical-align:middle;margin-right: 5px;"
  +                            rendered="#{file.isInstance('WikiDocument')}"/>
  +            <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{uploadTypes[file.contentType].displayIcon}"
  +                            width="18" height="20" style="vertical-align:middle;margin-right: 5px;"
  +                            rendered="#{file.isInstance('WikiUpload') and !empty uploadTypes[file.contentType]}"/>
  +            <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/#{uploadTypes['generic'].displayIcon}"
  +                            width="18" height="20" style="vertical-align:middle;margin-right: 5px;"
  +                            rendered="#{file.isInstance('WikiUpload') and empty uploadTypes[file.contentType]}"/>
  +
  +            <s:span rendered="#{file.isInstance('WikiDocument')}">
  +                <h:outputLink value="#{wiki:renderURL(file)}" rendered="#{s:hasPermission('Node','read',file)}" tabindex="2">
  +                    <h:outputText value="#{wiki:truncateString(file.name, 40, '...')}"/>
  +                </h:outputLink>
  +                <h:outputText value="#{file.name}" rendered="#{!s:hasPermission('Node','read',file)}"/>
  +            </s:span>
  +
  +            <s:span rendered="#{file.isInstance('WikiUpload') and s:hasPermission('Node', 'edit', file)}">
  +                <s:link id="editFile" value="#{wiki:truncateString(file.name, 30, '...')}" tabindex="2" view="/uploadEdit_#{skin}.xhtml">
  +                    <f:param name="uploadId" value="#{file.id}"/>
  +                    <f:param name="parentDirectoryId" value="#{file.parent.id}"/>
  +                </s:link>
  +                <h:outputText value=" (#{wiki:displayFilesize(file.filesize)}, #{file.contentType})"/>
  +            </s:span>
  +            <h:panelGroup rendered="#{file.isInstance('WikiUpload') and !s:hasPermission('Node', 'edit', file)}">
  +                <h:outputLink value="#{wiki:renderURL(file)}">
  +                    <h:outputText value="#{wiki:truncateString(file.name, 30, '...')} (#{wiki:displayFilesize(file.filesize)}, #{file.contentType})"/>
  +                </h:outputLink>
  +            </h:panelGroup>
  +
           </h:column>
  +
           <h:column>
               <f:facet name="header">
  -                <h:outputText value="#{messages['lacewiki.label.tagDisplay.Tag']}: #{tagHome.tag}"/>
  +                <h:outputText value="#{messages['lacewiki.label.tagDisplay.InDirectory']}"/>
               </f:facet>
  -            <h:outputLink value="#{wiki:renderURL(node)}">#{node.name}</h:outputLink>
  +            <h:graphicImage value="/themes/#{wikiPreferences.themeName}/img/icon.dir.gif"
  +                            width="18" height="20" style="vertical-align: middle; margin-right: 5px;"/>
  +            <s:link value="#{wiki:truncateString(file.parent.name, 20, '...')}"
  +                    view="/dirDisplay_#{skin}.xhtml"
  +                    rendered="#{s:hasPermission('Node','read',file.parent)}" tabindex="1">
  +                <f:param name="directoryId" value="#{file.parent.id}"/>
  +            </s:link>
  +            <h:outputText value="#{wiki:truncateString(file.parent.name, 20, '...')}"
  +                          rendered="#{!s:hasPermission('Node','read',file)}"/>
           </h:column>
           <h:column>
               <f:facet name="header">
                   <h:outputText value="#{messages['lacewiki.label.tagDisplay.Owner']}"/>
               </f:facet>
  -            #{node.createdBy.fullname}
  +            <s:span styleClass="undecoratedLink">
  +                <s:link view="/userInfo_#{skin}.xhtml" propagation="none">
  +                    <f:param name="userId" value="#{file.createdBy.id}"/>
  +                    <h:outputText value="#{file.createdBy.fullname}"/>
  +                </s:link>
  +            </s:span>
           </h:column>
           <h:column>
               <f:facet name="header">
                   <h:outputText value="#{messages['lacewiki.label.tagDisplay.CreatedOn']}"/>
               </f:facet>
  -            <h:outputText value="#{node.createdOn}">
  -                <f:convertDateTime type="both" timeZone="#{wikiPreferences.timeZone}"/>
  +            <h:outputText value="#{file.createdOn}">
  +                <f:convertDateTime pattern="dd. MMM yyyy, HH:mm" timeZone="#{wikiPreferences.timeZone}"/>
               </h:outputText>
           </h:column>
  -        <h:column rendered="#{!empty node.lastModifiedOn and !empty node.lastModifiedBy}">
  +        <h:column rendered="#{!empty file.lastModifiedOn and !empty file.lastModifiedBy}">
               <f:facet name="header">
                   <h:outputText value="#{messages['lacewiki.label.tagDisplay.LastModifiedOn']}"/>
               </f:facet>
  -            <h:outputText value="#{node.lastModifiedOn}">
  -                <f:convertDateTime type="both" timeZone="#{wikiPreferences.timeZone}"/>
  +            <h:outputText value="#{file.lastModifiedOn}">
  +                <f:convertDateTime pattern="dd. MMM yyyy, HH:mm" timeZone="#{wikiPreferences.timeZone}"/>
               </h:outputText>
  -            (#{node.lastModifiedBy.username})
  +            (<s:span styleClass="undecoratedLink">
  +                <s:link view="/userInfo_#{skin}.xhtml" propagation="none">
  +                    <f:param name="userId" value="#{file.lastModifiedBy.id}"/>
  +                    <h:outputText value="#{file.lastModifiedBy.username}"/>
  +                </s:link>
  +            </s:span>)
           </h:column>
  -        <h:column rendered="#{empty node.lastModifiedOn or empty node.lastModifiedBy}">
  +        <h:column rendered="#{empty file.lastModifiedOn or empty file.lastModifiedBy}">
               <f:facet name="header">
                   <h:outputText value="#{messages['lacewiki.label.tagDisplay.LastModifiedOn']}"/>
               </f:facet>
               -
           </h:column>
   
  -
       </h:dataTable>
   
   </div>
  
  
  
  1.4       +90 -67    jboss-seam/examples/wiki/view/userHome_d.xhtml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: userHome_d.xhtml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/view/userHome_d.xhtml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -b -r1.3 -r1.4
  --- userHome_d.xhtml	12 Oct 2007 16:31:24 -0000	1.3
  +++ userHome_d.xhtml	19 Dec 2007 04:29:18 -0000	1.4
  @@ -16,7 +16,7 @@
   
   <ui:define name="controlTwo">
   
  -    <s:link id="close" styleClass="linkNavigation" view="/wiki.xhtml" propagation="end"
  +    <s:link id="close" styleClass="linkNavigation sessionEventTrigger" view="/wiki.xhtml" propagation="end"
               accesskey="#{messages['lacewiki.button.Close.accesskey']}">
           <h:outputText escape="false" value="#{messages['lacewiki.button.Close']}"/>
       </s:link>
  @@ -25,16 +25,14 @@
   
   <ui:define name="content">
   
  -<s:span rendered="#{s:hasPermission('User', 'delete', userHome.instance)}">
  -    <ui:include src="includes/deleteConfirmation.xhtml">
  -        <ui:param name="home" value="#{userHome}"/>
  -    </ui:include>
  -</s:span>
  -
   <h:form id="userHomeForm" styleClass="box" enctype="multipart/form-data">
       <div class="form">
   
  -        <ui:include src="includes/statusIndicator.xhtml"/>
  +        <ui:include src="includes/statusIndicator.xhtml">
  +            <ui:param name="statusId" value="userHomeFormStatus"/>
  +        </ui:include>
  +
  +        <script type="text/javascript">startSessionTimeoutCheck()</script>
   
           <script type="text/javascript">jQuery(function() {
               jQuery('#formTabs').tabs(2, {onClick: function(){formTabClicked()} });
  @@ -72,8 +70,8 @@
                           <ui:param name="tabId" value="userAccountTab"/>
                           <ui:param name="fieldId" value="firstname"/>
                           <ui:define name="label">#{messages['lacewiki.label.userHome.FirstName']}</ui:define>
  -                        <h:inputText tabindex="1" size="40" maxlength="63" required="true" value="#{userHome.instance.firstname}">
  -                            <a:support status="userHomeForm:status" event="onblur" reRender="firstnameDecorate"/>
  +                        <h:inputText styleClass="ajaxSupport" tabindex="1" size="40" maxlength="63" required="true" value="#{userHome.instance.firstname}">
  +                            <a:support status="userHomeFormStatus" event="onblur" reRender="firstnameDecorate" oncomplete="onAjaxRequestComplete()"/>
                           </h:inputText>
                       </s:decorate>
                       </a:region>
  @@ -83,8 +81,8 @@
                           <ui:param name="tabId" value="userAccountTab"/>
                           <ui:param name="fieldId" value="lastname"/>
                           <ui:define name="label">#{messages['lacewiki.label.userHome.LastName']}</ui:define>
  -                        <h:inputText tabindex="1" size="40" maxlength="63" required="true" value="#{userHome.instance.lastname}">
  -                            <a:support status="userHomeForm:status" event="onblur" reRender="lastnameDecorate"/>
  +                        <h:inputText styleClass="ajaxSupport" tabindex="1" size="40" maxlength="63" required="true" value="#{userHome.instance.lastname}">
  +                            <a:support status="userHomeFormStatus" event="onblur" reRender="lastnameDecorate" oncomplete="onAjaxRequestComplete()"/>
                           </h:inputText>
                       </s:decorate>
                       </a:region>
  @@ -94,9 +92,9 @@
                           <ui:param name="tabId" value="userAccountTab"/>
                           <ui:param name="fieldId" value="email"/>
                           <ui:define name="label">#{messages['lacewiki.label.userHome.Email']}</ui:define>
  -                        <h:inputText tabindex="1" size="40" maxlength="255" required="true" value="#{userHome.instance.email}"
  +                        <h:inputText  styleClass="ajaxSupport" tabindex="1" size="40" maxlength="255" required="true" value="#{userHome.instance.email}"
                                        disabled="#{userHome.instance.username == guestUser.username}">
  -                            <a:support status="userHomeForm:status" event="onblur" reRender="emailDecorate"/>
  +                            <a:support status="userHomeFormStatus" event="onblur" reRender="emailDecorate" oncomplete="onAjaxRequestComplete()"/>
                           </h:inputText>
                       </s:decorate>
                       </a:region>
  @@ -106,10 +104,11 @@
                           <ui:param name="tabId" value="userAccountTab"/>
                           <ui:param name="fieldId" value="username"/>
                           <ui:define name="label">#{messages['lacewiki.label.userHome.Username']}</ui:define>
  -                        <h:inputText tabindex="1" size="16" maxlength="16" required="true" value="#{userHome.instance.username}"
  +                        <h:inputText  styleClass="ajaxSupport" tabindex="1" size="16" maxlength="16" required="true" value="#{userHome.instance.username}"
                                        disabled="#{userHome.instance.username == adminUser.username
                                                    or userHome.instance.username == guestUser.username}">
  -                            <a:support status="userHomeForm:status" event="onblur" action="#{userHome.validateUsername}" reRender="usernameDecorate"/>
  +                            <a:support status="userHomeFormStatus" event="onblur" action="#{userHome.validateUsername}"
  +                                       reRender="usernameDecorate" oncomplete="onAjaxRequestComplete()"/>
                           </h:inputText>
                       </s:decorate>
                       </a:region>
  @@ -119,10 +118,11 @@
                           <ui:param name="tabId" value="userAccountTab"/>
                           <ui:param name="fieldId" value="password"/>
                           <ui:define name="label">#{messages['lacewiki.label.userHome.Password']}</ui:define>
  -                        <h:inputSecret tabindex="1" size="15" maxlength="15"
  +                        <h:inputSecret styleClass="ajaxSupport" tabindex="1" size="15" maxlength="15"
                                          redisplay="true" value="#{userHome.password}"
                                          disabled="#{userHome.instance.username == guestUser.username}">
  -                            <a:support status="userHomeForm:status" event="onblur" action="#{userHome.validatePassword}" reRender="passwordDecorate"/>
  +                            <a:support status="userHomeFormStatus" event="onblur" action="#{userHome.validatePassword}"
  +                                       reRender="passwordDecorate" oncomplete="onAjaxRequestComplete()"/>
                           </h:inputSecret>
                       </s:decorate>
                       </a:region>
  @@ -132,10 +132,11 @@
                           <ui:param name="tabId" value="userAccountTab"/>
                           <ui:param name="fieldId" value="passwordControl"/>
                           <ui:define name="label">#{messages['lacewiki.label.userHome.RepeatPassword']}</ui:define>
  -                        <h:inputSecret tabindex="1" size="15" maxlength="15"
  +                        <h:inputSecret styleClass="ajaxSupport" tabindex="1" size="15" maxlength="15"
                                          redisplay="true" value="#{userHome.passwordControl}"
                                          disabled="#{userHome.instance.username == guestUser.username}">
  -                            <a:support status="userHomeForm:status" event="onblur" action="#{userHome.validatePasswordControl}" reRender="passwordControlDecorate"/>
  +                            <a:support status="userHomeFormStatus" event="onblur" action="#{userHome.validatePasswordControl}"
  +                                       reRender="passwordControlDecorate" oncomplete="onAjaxRequestComplete()"/>
                           </h:inputSecret>
                       </s:decorate>
                       </a:region>
  @@ -179,6 +180,7 @@
               <div class="formFields wideLabels">
                   <s:validateAll>
   
  +                    <s:div id="portraitEditor">
                       <s:div styleClass="entry" rendered="#{!empty userHome.instance.profile.image}">
                           <div class="label">
                               <h:outputText value="#{messages['lacewiki.label.userHome.Portrait']}"/>
  @@ -188,19 +190,40 @@
                           </div>
                       </s:div>
   
  +                        <s:div styleClass="entry" rendered="#{!empty userHome.instance.profile.image}">
  +                            <div class="label">&#160;</div>
  +                            <div class="input">
  +                                <a:commandLink action="#{userHome.removePortrait()}"
  +                                               reRender="portraitEditor, messageBoxContainer"
  +                                               oncomplete="onCompleteAjaxRequest()"
  +                                               styleClass="buttonNonpersistent sessionEventTrigger" tabindex="1">
  +                                    <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.userHome.RemovePortrait']}"/>
  +                                </a:commandLink>
  +                            </div>
  +                        </s:div>
  +
  +                        <s:span styleClass="sessionEventTrigger">
                       <s:decorate id="uploadDecorate" template="includes/formFieldDecorate.xhtml">
                           <ui:param name="tabId" value="userProfileTab"/>
                           <ui:param name="fieldId" value="userimage"/>
  -                        <ui:define name="label">#{messages['lacewiki.label.userHome.UploadPortrait']} (#{messages['lacewiki.label.userHome.UploadMax']}. #{wiki:displayFilesize(200000)})</ui:define>
  -                        <s:fileUpload id="upload" data="#{userHome.portraitImageData}"
  -                                                  contentType="#{userHome.portraitContentType}"/>
  +                                <ui:define name="label">
  +                                    #{messages['lacewiki.label.userHome.UploadPortrait']}
  +                                    (#{messages['lacewiki.label.upload.UploadMax']}
  +                                     #{wiki:displayFilesize(org.jboss.seam.web.multipartFilter.maxRequestSize)})
  +                                </ui:define>
  +                                <s:fileUpload id="upload" data="#{userHome.uploader.data}"
  +                                              contentType="#{userHome.uploader.contentType}"
  +                                              fileName="#{userHome.uploader.filename}"/>
                       </s:decorate>
  +                        </s:span>
  +                    </s:div>
   
                       <ui:include src="includes/wikiTextEditor.xhtml">
                           <ui:param name="tabId" value="userProfileTab"/>
                           <ui:param name="textEditorId" value="bio"/>
                           <ui:param name="textPreviewId" value="bioPreview"/>
                           <ui:param name="namingContainer" value="userHomeForm"/>
  +                        <ui:param name="statusId" value="userHomeFormStatus"/>
                           <ui:param name="label" value="#{messages['lacewiki.label.userHome.Bio']}"/>
                           <ui:param name="valueBinding" value="#{userHome.instance.profile.bio}"/>
                           <ui:param name="valueMaxLength" value="1000"/>
  @@ -208,21 +231,19 @@
                           <ui:param name="textEditorRows" value="5"/>
                       </ui:include>
   
  -                    <s:div styleClass="wideMarginLeft">
                           <ui:include src="includes/wikiTextPreview.xhtml">
                               <ui:param name="textPreviewId" value="bioPreview"/>
                               <ui:param name="valueBinding" value="#{userHome.instance.profile.bio}"/>
                               <ui:param name="baseDocument" value="#{wikiStart}"/>
                               <ui:param name="baseDirectory" value="#{wikiStart.parent}"/>
                           </ui:include>
  -                    </s:div>
   
                       <s:decorate id="websiteDecorate" template="includes/formFieldDecorate.xhtml">
                           <ui:param name="tabId" value="userProfileTab"/>
                           <ui:param name="fieldId" value="website"/>
                           <ui:define name="label">#{messages['lacewiki.label.userHome.Website']}</ui:define>
  -                        <h:inputText tabindex="1" size="60" maxlength="1000" value="#{userHome.instance.profile.website}">
  -                            <a:support status="userHomeForm:status" event="onblur" reRender="websiteDecorate"/>
  +                        <h:inputText styleClass="ajaxSupport" tabindex="1" size="55" maxlength="1000" value="#{userHome.instance.profile.website}">
  +                            <a:support status="userHomeFormStatus" event="onblur" reRender="websiteDecorate" oncomplete="onAjaxRequestComplete()"/>
                           </h:inputText>
                       </s:decorate>
   
  @@ -230,8 +251,8 @@
                           <ui:param name="tabId" value="userProfileTab"/>
                           <ui:param name="fieldId" value="location"/>
                           <ui:define name="label">#{messages['lacewiki.label.userHome.Location']}</ui:define>
  -                        <h:inputText tabindex="1" size="40" maxlength="255" value="#{userHome.instance.profile.location}">
  -                            <a:support status="userHomeForm:status" event="onblur" reRender="locationDecorate"/>
  +                        <h:inputText styleClass="ajaxSupport" tabindex="1" size="55" maxlength="255" value="#{userHome.instance.profile.location}">
  +                            <a:support status="userHomeFormStatus" event="onblur" reRender="locationDecorate" oncomplete="onAjaxRequestComplete()"/>
                           </h:inputText>
                       </s:decorate>
   
  @@ -239,8 +260,8 @@
                           <ui:param name="tabId" value="userProfileTab"/>
                           <ui:param name="fieldId" value="occupation"/>
                           <ui:define name="label">#{messages['lacewiki.label.userHome.Occupation']}</ui:define>
  -                        <h:inputText tabindex="1" size="60" maxlength="1000" value="#{userHome.instance.profile.occupation}">
  -                            <a:support status="userHomeForm:status" event="onblur" reRender="occupationDecorate"/>
  +                        <h:inputText styleClass="ajaxSupport" tabindex="1" size="55" maxlength="1000" value="#{userHome.instance.profile.occupation}">
  +                            <a:support status="userHomeFormStatus" event="onblur" reRender="occupationDecorate" oncomplete="onAjaxRequestComplete()"/>
                           </h:inputText>
                       </s:decorate>
   
  @@ -249,6 +270,7 @@
                           <ui:param name="textEditorId" value="signature"/>
                           <ui:param name="textPreviewId" value="signaturePreview"/>
                           <ui:param name="namingContainer" value="userHomeForm"/>
  +                        <ui:param name="statusId" value="userHomeFormStatus"/>
                           <ui:param name="label" value="#{messages['lacewiki.label.userHome.Signature']}"/>
                           <ui:param name="valueBinding" value="#{userHome.instance.profile.signature}"/>
                           <ui:param name="valueMaxLength" value="1000"/>
  @@ -256,14 +278,12 @@
                           <ui:param name="textEditorRows" value="5"/>
                       </ui:include>
   
  -                    <s:div styleClass="wideMarginLeft">
                           <ui:include src="includes/wikiTextPreview.xhtml">
                               <ui:param name="textPreviewId" value="signaturePreview"/>
                               <ui:param name="valueBinding" value="#{userHome.instance.profile.signature}"/>
                               <ui:param name="baseDocument" value="#{wikiStart}"/>
                               <ui:param name="baseDirectory" value="#{wikiStart.parent}"/>
                           </ui:include>
  -                    </s:div>
   
                   </s:validateAll>
               </div>
  @@ -286,7 +306,7 @@
               <div class="label">&#160;</div>
               <div class="input">
   
  -                <h:commandLink id="createHomeDirectory" styleClass="buttonNonpersistent"
  +                <h:commandLink id="createHomeDirectory" styleClass="buttonNonpersistent sessionEventTrigger"
                                  tabindex="1"
                                  rendered="#{empty userHome.instance.memberHome
                                              and userHome.instance.id != guestUser.id
  @@ -296,20 +316,23 @@
                       <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.userHome.CreateHomeDirectory']}"/>
                   </h:commandLink>
   
  -                <h:commandLink id="update" styleClass="button saveButton"
  +                <h:commandLink id="update" styleClass="button saveButton sessionEventTrigger"
                                  action="#{userHome.update}"
                                  tabindex="1"
                                  accesskey="#{messages['lacewiki.button.userHome.SaveSettings.accesskey']}">
                       <h:outputText escape="false" styleClass="buttonLabel" value="#{messages['lacewiki.button.userHome.SaveSettings']}"/>
                   </h:commandLink>
   
  -                <h:outputLink id="delete" value="#" tabindex="1"
  +                <s:fragment rendered="#{s:hasPermission('User', 'delete', userHome.instance)}">
  +                    <a:jsFunction name="deleteUser"
  +                                  action="#{userHome.remove}"/>
  +                    <h:outputLink value="#" tabindex="1"
                                 accesskey="#{messages['lacewiki.button.userHome.Delete.accesskey']}"
  -                              styleClass="button"
  -                              rendered="#{s:hasPermission('User', 'delete', userHome.instance)}"><j4j:idProxy id="openDialogDelete"/>
  +                                  onclick="deleteConfirmation('\\'#{userHome.instance.username}\\'', 'deleteUser')"
  +                                  styleClass="button sessionEventTrigger">
                       <h:outputText escape="false" styleClass="buttonLabel" value="#{messages['lacewiki.button.userHome.Delete']}"/>
                   </h:outputLink>
  -
  +                </s:fragment>
   
               </div>
           </div>
  
  
  
  1.2       +2 -2      jboss-seam/examples/wiki/view/docDisplayPlain.xhtml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: docDisplayPlain.xhtml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/view/docDisplayPlain.xhtml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- docDisplayPlain.xhtml	24 Sep 2007 08:23:19 -0000	1.1
  +++ docDisplayPlain.xhtml	19 Dec 2007 04:29:18 -0000	1.2
  @@ -19,8 +19,8 @@
                           brokenLinkStyleClass="brokenLink"
                           attachmentLinkStyleClass="regularLink"
                           thumbnailLinkStyleClass="regularLink"
  -                        renderBaseDocument="#{documentHome.instance}"
  -                        renderBaseDirectory="#{documentHome.parentDirectory}"
  +                        linkBaseFile="#{documentHome.instance}"
  +                        currentAreaNumber="#{documentHome.parentNode.areaNumber}"
                           internalTargetFrame="_self"
                           externalTargetFrame="_top"
                           plainView="true"
  
  
  
  1.9       +107 -36   jboss-seam/examples/wiki/view/docDisplay_d.xhtml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: docDisplay_d.xhtml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/view/docDisplay_d.xhtml,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -b -r1.8 -r1.9
  --- docDisplay_d.xhtml	20 Nov 2007 08:05:08 -0000	1.8
  +++ docDisplay_d.xhtml	19 Dec 2007 04:29:18 -0000	1.9
  @@ -6,16 +6,16 @@
                   xmlns:f="http://java.sun.com/jsf/core"
                   xmlns:h="http://java.sun.com/jsf/html"
                   xmlns:wiki="http://jboss.com/products/seam/wiki"
  -                xmlns:j4j="http://javascript4jsf.dev.java.net/"
  +                xmlns:c="http://java.sun.com/jstl/core"
                   xmlns:a="https://ajax4jsf.dev.java.net/ajax"
                   xmlns:rich="http://richfaces.org/rich"
                   template="themes/#{wikiPreferences.themeName}/template.xhtml">
   
   <ui:define name="includeHeaders">
   
  -    <s:fragment rendered="#{not empty documentHome.parentDirectory.feed}">
  +    <s:fragment rendered="#{not empty documentHome.instance.parent.feed}">
           <link rel="alternate" type="application/atom+xml"
  -              title="#{documentHome.parentDirectory.name}"
  +              title="#{documentHome.instance.parent.name}"
                 href="#{facesContext.externalContext.request.contextPath}/servlets/feeds/atom.seam?feedId=#{currentDirectory.feed.id}"/>
           
       </s:fragment>
  @@ -47,16 +47,16 @@
           <s:link id="showHistory" styleClass="linkNavigation"
                   accesskey="#{messages['lacewiki.button.HistoryDocument.accesskey']}"
                   view="/docHistory_#{skin}.xhtml"
  -                rendered="#{documentHome.historicalNodesPresent}">
  +                rendered="#{documentHome.historicalFilesPresent}">
               <h:outputText escape="false" value="#{messages['lacewiki.button.HistoryDocument']}"/>
  -            <f:param name="nodeId" value="#{documentHome.nodeId}"/>
  +            <f:param name="fileId" value="#{documentHome.nodeId}"/>
           </s:link>
   
           <s:link id="browseDir" styleClass="linkNavigation"
                   accesskey="#{messages['lacewiki.button.BrowseDirectory.accesskey']}"
                   view="/dirDisplay_#{skin}.xhtml">
               <h:outputText escape="false" value="#{messages['lacewiki.button.BrowseDirectory']}"/>
  -            <f:param name="directoryId" value="#{documentHome.parentDirectory.id}"/>
  +            <f:param name="directoryId" value="#{documentHome.instance.parent.id}"/>
           </s:link>
   
       </s:fragment>
  @@ -79,41 +79,69 @@
   
       <div id="documentDisplayContainer" class="box">
           <s:div id="documentDisplay" styleClass="documentDisplay">
  -            <s:div rendered="#{documentHome.instance.nameAsTitle}"><h1 class="documentTitle">#{documentHome.instance.name}</h1></s:div>
  +
  +            <c:if test="#{not empty documentHome.instance.areaNumber}">
  +
  +                <wiki:formattedText value="#{documentHome.instance.header}"
  +                                    linkStyleClass="regularLink"
  +                                    brokenLinkStyleClass="brokenLink"
  +                                    attachmentLinkStyleClass="regularLink"
  +                                    thumbnailLinkStyleClass="regularLink"
  +                                    linkBaseFile="#{documentHome.instance}"
  +                                    currentAreaNumber="#{documentHome.instance.areaNumber}"
  +                                    enablePlugins="true"/>
  +
  +                <s:div rendered="#{documentHome.instance.nameAsTitle}">
  +                    <h:outputLink value="#{wiki:renderURL(currentDocument)}">
  +                        <h1 class="documentTitle">#{documentHome.instance.name}</h1>
  +                    </h:outputLink>
  +                </s:div>
  +
               <wiki:formattedText value="#{documentHome.instance.content}"
                                   linkStyleClass="regularLink"
                                   brokenLinkStyleClass="brokenLink"
                                   attachmentLinkStyleClass="regularLink"
                                   thumbnailLinkStyleClass="regularLink"
  -                                renderBaseDocument="#{documentHome.instance}"
  -                                renderBaseDirectory="#{documentHome.parentDirectory}"
  +                                    linkBaseFile="#{documentHome.instance}"
  +                                    currentAreaNumber="#{documentHome.instance.areaNumber}"
  +                                    enablePlugins="#{not documentHome.instance.macroPresent('disableContentMacros')}"/>
  +
  +                <wiki:formattedText value="#{documentHome.instance.footer}"
  +                                    linkStyleClass="regularLink"
  +                                    brokenLinkStyleClass="brokenLink"
  +                                    attachmentLinkStyleClass="regularLink"
  +                                    thumbnailLinkStyleClass="regularLink"
  +                                    linkBaseFile="#{documentHome.instance}"
  +                                    currentAreaNumber="#{documentHome.instance.areaNumber}"
                                   enablePlugins="true"/>
  +            </c:if>
  +
           </s:div>
   
           <s:div rendered="#{wikiPreferences.showTags and not documentHome.instance.macroPresent('hideTags') and not empty documentHome.instance.tags}"
  -               styleClass="documentTags undecoratedLink">
  +               styleClass="documentTags undecoratedLink smallFont">
               <s:div>
                   #{messages['lacewiki.label.docDisplay.Tags']}:&#160;
  -                <ui:repeat var="tag" value="#{documentHome.instance.tagsSplit}">
  +                <ui:repeat var="tag" value="#{documentHome.instance.tagsAsList}">
                       <s:link view="/tagDisplay_#{skin}.xhtml" value="#{tag}">
                           <f:param value="#{tag}" name="tag"/>
                       </s:link>
   
  -                    <h:outputText rendered="#{documentHome.instance.tagsSplit.indexOf(tag) &lt; documentHome.instance.tagsSplit.size()-1}"
  +                    <h:outputText rendered="#{documentHome.instance.tagsAsList.indexOf(tag) &lt; documentHome.instance.tagsAsList.size()-1}"
                                     value="&#160;|&#160;"/>
                   </ui:repeat>
               </s:div>
           </s:div>
   
           <s:div rendered="#{wikiPreferences.showDocumentCreatorHistory and not documentHome.instance.macroPresent('hideCreatorHistory')}"
  -               styleClass="documentCreatorHistory undecoratedLink">
  +               styleClass="documentCreatorHistory undecoratedLink smallFont">
               <s:div>
                   #{messages['lacewiki.label.docDisplay.Created']}:&#160;
                   <h:outputText value="#{documentHome.instance.createdOn}">
                       <f:convertDateTime pattern="dd. MMM yyyy, HH:mm" timeZone="#{wikiPreferences.timeZone}"/>
                   </h:outputText>
                   <h:outputText value="&#160;#{wikiPreferences.timeZone}&#160;("/>
  -                <h:outputLink value="#{wiki:renderHomeURL(documentHome.instance.createdBy)}"
  +                <h:outputLink value="#{wiki:renderURL(documentHome.instance.createdBy.memberHome)}"
                                 rendered="#{!empty documentHome.instance.createdBy.memberHome}">
                       <h:outputText value="#{documentHome.instance.createdBy.fullname}"/>
                   </h:outputLink>
  @@ -127,7 +155,7 @@
                       <f:convertDateTime pattern="dd. MMM yyyy, HH:mm" timeZone="#{wikiPreferences.timeZone}"/>
                   </h:outputText>
                   <h:outputText value="&#160;#{wikiPreferences.timeZone}&#160;("/>
  -                <h:outputLink value="#{wiki:renderHomeURL(documentHome.instance.lastModifiedBy)}"
  +                <h:outputLink value="#{wiki:renderURL(documentHome.instance.lastModifiedBy.memberHome)}"
                                 rendered="#{!empty documentHome.instance.lastModifiedBy.memberHome}">
                       <h:outputText value="#{documentHome.instance.lastModifiedBy.fullname}"/>
                   </h:outputLink>
  @@ -135,23 +163,29 @@
                                 value="#{documentHome.instance.lastModifiedBy.fullname}"/>
                   <h:outputText value=")"/>
               </s:div>
  -            <s:div rendered="#{documentHome.historicalNodesPresent}">
  +
  +            <s:div rendered="#{documentHome.historicalFilesPresent}">
                   #{messages['lacewiki.label.docDisplay.Revisions']}:&#160;
  -                <ui:repeat var="hnode" value="#{documentHome.historicalNodes}">
  +                <ui:repeat var="hfile" value="#{documentHome.historicalFiles}">
   
  -                    <h:outputText value="#{hnode.lastModifiedOn}">
  +                    <s:fragment rendered="#{not empty hfile.lastModifiedOn}">
  +                        <h:outputText value="#{hfile.lastModifiedOn}">
                           <f:convertDateTime pattern="dd. MMM yyyy, HH:mm" timeZone="#{wikiPreferences.timeZone}"/>
                       </h:outputText>
  -                    <h:outputText value="&#160;#{wikiPreferences.timeZone}&#160;(#{hnode.lastModifiedByUsername})"/>
  +                        <h:outputText value="&#160;#{wikiPreferences.timeZone}&#160;(#{hfile.lastModifiedByUsername})"/>
  +                    </s:fragment>
  +                    <s:fragment rendered="#{empty hfile.lastModifiedOn}">
  +                        <h:outputText value="(Initial Revision)"/>
  +                    </s:fragment>
   
                       &#160;
  -                    <s:link view="/docHistory_#{skin}.xhtml" action="#{nodeHistory.diff}">
  +                    <s:link view="/docHistory_#{skin}.xhtml" action="#{documentHistory.diff}">
                           <h:outputText value="#{messages['lacewiki.label.docDisplay.Diff']}"/>
  -                        <f:param name="nodeId" value="#{documentHome.instance.id}"/>
  -                        <f:param name="historicalNodeId" value="#{hnode.historyId}"/>
  +                        <f:param name="fileId" value="#{documentHome.instance.id}"/>
  +                        <f:param name="historicalFileId" value="#{hfile.historicalFileId}"/>
                       </s:link>
   
  -                    <h:outputText rendered="#{documentHome.historicalNodes.indexOf(hnode) &lt; documentHome.historicalNodes.size()-1}"
  +                    <h:outputText rendered="#{documentHome.historicalFiles.indexOf(hfile) &lt; documentHome.historicalFiles.size()-1}"
                                     value="&#160;|&#160;"/>
   
                   </ui:repeat>
  @@ -162,11 +196,48 @@
   
       <ui:include src="includes/attachmentDisplay.xhtml"/>
   
  -    <s:span id="commentDisplayForm" rendered="#{not documentHome.instance.macroPresent('hideComments')}">
  -        <ui:include src="includes/commentsDisplay.xhtml"/>
  +    <s:div id="commentDisplayForm">
  +        <c:if test="#{not documentHome.instance.macroPresent('hideComments') and documentHome.instance.enableComments}">
  +            <ui:decorate template="includes/commentsDisplay.xhtml">
  +                <ui:param name="titleSingular" value="#{messages['lacewiki.label.commentsDisplay.Comment']}"/>
  +                <ui:param name="titlePlural" value="#{messages['lacewiki.label.commentsDisplay.Comments']}"/>
  +                <ui:define name="controls">
  +
  +                    <s:fragment rendered="#{not commentHome.showForm and s:hasPermission('Comment', 'create', documentHome.instance)}">
  +
  +                        <s:link tabindex="102"
  +                                action="#{commentHome.replyTo()}"
  +                                styleClass="buttonNonpersistent">
  +                            <f:param name="parentCommentId" value="#{c.id}"/>
  +                            <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.commentsDisplay.ReplyTo']}"/>
  +                        </s:link>
  +
  +                        <s:link tabindex="102"
  +                                action="#{commentHome.quote()}"
  +                                styleClass="buttonNonpersistent">
  +                            <f:param name="parentCommentId" value="#{c.id}"/>
  +                            <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.commentsDisplay.Quote']}"/>
  +                        </s:link>
   
  +                    </s:fragment>
  +
  +                     <s:fragment rendered="#{s:hasPermission('Comment', 'delete', currentDocument) and not commentHome.showForm}">
  +                        <a:jsFunction name="deleteCommentId#{c.id}"
  +                                      reRender="commentDisplayForm"
  +                                      action="#{commentHome.remove(c.id)}"/>
  +                            <h:outputLink value="#"
  +                                  onclick="deleteConfirmation('#{messages['lacewiki.label.commentsDisplay.Comment']} \\'#{c.subject}\\'', 'deleteCommentId#{c.id}')"
  +                                  styleClass="button">
  +                                <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.commentsDisplay.RemoveComment']}"/>
  +                        </h:outputLink>
  +                    </s:fragment>
  +                </ui:define>
  +            </ui:decorate>
  +            <s:fragment rendered="#{s:hasPermission('Comment', 'create', documentHome.instance)}">
           <ui:include src="includes/commentForm.xhtml"/>
  -    </s:span>
  +            </s:fragment>
  +        </c:if>
  +    </s:div>
   
   </ui:define>
   
  
  
  
  1.3       +3 -3      jboss-seam/examples/wiki/view/docEdit_m.xhtml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: docEdit_m.xhtml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/view/docEdit_m.xhtml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- docEdit_m.xhtml	12 Oct 2007 16:31:24 -0000	1.2
  +++ docEdit_m.xhtml	19 Dec 2007 04:29:18 -0000	1.3
  @@ -31,7 +31,7 @@
   
       <h:form><s:validateAll>
   
  -        <div>#{messages['lacewiki.label.docEdit.Directory']}:&#160;#{documentHome.parentDirectory.name}</div>
  +        <div>#{messages['lacewiki.label.docEdit.Directory']}:&#160;#{documentHome.parentNode.name}</div>
           <div class="errorMessage"><h:message for="name"/></div>
           <div>#{messages['lacewiki.label.docEdit.Name']}:&#160;
               <h:inputText id="name" size="30" maxlength="255" required="true" value="#{documentHome.instance.name}"/>
  @@ -58,13 +58,13 @@
           </s:fragment>
   
           <s:fragment rendered="#{documentHome.managed}">
  -            <s:fragment rendered="#{documentHome.siteFeedEntryPresent}">
  +            <s:fragment rendered="#{documentHome.onSiteFeed}">
                   <div>
                       <h:selectBooleanCheckbox value="#{documentHome.pushOnFeeds}"/>
                       &#160;#{messages['lacewiki.label.docEdit.PushOnFeeds']}
                   </div>
               </s:fragment>
  -            <s:fragment rendered="#{not documentHome.siteFeedEntryPresent}">
  +            <s:fragment rendered="#{not documentHome.onSiteFeed}">
                   <s:div styleClass="entry">
                       <div>
                           <h:selectBooleanCheckbox value="#{documentHome.pushOnFeeds}"/>
  
  
  
  1.5       +21 -14    jboss-seam/examples/wiki/view/adminHome_d.xhtml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: adminHome_d.xhtml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/view/adminHome_d.xhtml,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -b -r1.4 -r1.5
  --- adminHome_d.xhtml	12 Oct 2007 16:31:24 -0000	1.4
  +++ adminHome_d.xhtml	19 Dec 2007 04:29:18 -0000	1.5
  @@ -16,7 +16,7 @@
   
   <ui:define name="controlTwo">
   
  -    <s:link id="close" styleClass="linkNavigation" view="/wiki.xhtml" propagation="end"
  +    <s:link id="close" styleClass="linkNavigation sessionEventTrigger" view="/wiki.xhtml" propagation="end"
               accesskey="#{messages['lacewiki.button.Close.accesskey']}">
           <h:outputText escape="false" value="#{messages['lacewiki.button.Close']}"/>
       </s:link>
  @@ -25,7 +25,6 @@
   
   <ui:define name="content">
   
  -<script type="text/javascript" src="seam/resource/remoting/resource/remote.js"></script>
   <script type="text/javascript" src="seam/resource/remoting/interface.js?adminHome"></script>
   <script type="text/javascript">
       Seam.Remoting.displayLoadingMessage = function() {};
  @@ -58,7 +57,11 @@
   <h:form id="adminForm" styleClass="box">
       <div class="form">
   
  -        <ui:include src="includes/statusIndicator.xhtml"/>
  +        <ui:include src="includes/statusIndicator.xhtml">
  +            <ui:param name="statusId" value="adminFormStatus"/>
  +        </ui:include>
  +
  +        <script type="text/javascript">startSessionTimeoutCheck()</script>
   
           <script type="text/javascript">jQuery(function() {
               jQuery('#formTabs').tabs(2, {onClick: function(){formTabClicked()} });
  @@ -105,7 +108,7 @@
                                value="#{indexedEntities}"
                                rendered="#{indexedEntities.rowCount >0}"
                                styleClass="datatable topLeftBottomBorder"
  -                             headerClass="regularHeader rightBorder"
  +                             headerClass="regularHeader rightBorder smallFont"
                                columnClasses="twentyPercentColumn rightBorder alignLeft,
                                               tenPercentColumn rightBorder alignCenter,
                                               tenPercentColumn rightBorder alignCenter,
  @@ -142,8 +145,8 @@
                           <script type="text/javascript">
                               jQuery(function(){ getIndexingProgress("#{ie.clazz.name}") });
                           </script>
  -                        <a:commandLink status="adminForm:status" id="resetSearchIndex" styleClass="button resetIndexButton" reRender="indexStatistics"
  -                                       action="#{adminHome.resetSearchIndex()}">
  +                        <a:commandLink status="adminFormStatus" id="resetSearchIndex" styleClass="button resetIndexButton sessionEventTrigger" reRender="indexStatistics"
  +                                       action="#{adminHome.resetSearchIndex()}" oncomplete="onAjaxRequestComplete()">
                               <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.adminHome.RebuildIndex']}"/>
                           </a:commandLink>
                       </h:column>
  @@ -165,7 +168,7 @@
                            value="#{linkProtocols}"
                            rendered="#{linkProtocols.rowCount >0}"
                            styleClass="datatable topLeftBottomBorder"
  -                         headerClass="regularHeader rightBorder"
  +                         headerClass="regularHeader rightBorder smallFont"
                            columnClasses="twentyPercentColumn rightBorder alignLeft,
                                           defaultColumn rightBorder alignLeft,
                                           tenPercentColumn rightBorder alignCenter"
  @@ -185,9 +188,10 @@
                       #{lp.link}
                   </h:column>
                   <h:column>
  -                    <a:commandLink status="adminForm:status" id="removeLinkProtocol" styleClass="buttonNonpersistent" reRender="linkProtocolsRegion"
  -                                   action="#{adminHome.removeLinkProtocol()}">
  -                        <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.adminHome.Remove']}"/>
  +                    <a:commandLink status="adminFormStatus" id="removeLinkProtocol"
  +                                   styleClass="buttonNonpersistent sessionEventTrigger" reRender="linkProtocolsRegion"
  +                                   action="#{adminHome.removeLinkProtocol()}" oncomplete="onAjaxRequestComplete()">
  +                        <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.Remove']}"/>
                       </a:commandLink>
                   </h:column>
               </h:dataTable>
  @@ -209,9 +213,10 @@
                   <div class="entry">
                       <div class="label">&#160;</div>
                       <div class="input">
  -                        <a:commandLink status="adminForm:status" id="addLinkProtocol" styleClass="buttonNonpersistent" reRender="linkProtocolsRegion"
  -                                       action="#{adminHome.addLinkProtocol}">
  -                            <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.adminHome.Add']}"/>
  +                        <a:commandLink status="adminFormStatus" id="addLinkProtocol"
  +                                       styleClass="buttonNonpersistent sessionEventTrigger" reRender="linkProtocolsRegion"
  +                                       action="#{adminHome.addLinkProtocol}" oncomplete="onAjaxRequestComplete()">
  +                            <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.Add']}"/>
                           </a:commandLink>
                       </div>
                   </div>
  @@ -238,8 +243,10 @@
               <div class="label">&#160;</div>
               <div class="input">
   
  -                <a:commandLink status="adminForm:status" id="update" styleClass="button saveButton" reRender="body" oncomplete="wrapBoxes();"
  +                <a:commandLink status="adminFormStatus" id="update"
  +                               styleClass="button saveButton sessionEventTrigger" reRender="body"
                                  action="#{adminHome.update}"
  +                               oncomplete="onAjaxRequestComplete()"
                                  tabindex="9"
                                  accesskey="#{messages['lacewiki.button.adminHome.SaveSettings.accesskey']}">
                       <h:outputText escape="false" styleClass="buttonLabel" value="#{messages['lacewiki.button.adminHome.SaveSettings']}"/>
  
  
  
  1.4       +23 -12    jboss-seam/examples/wiki/view/userList_d.xhtml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: userList_d.xhtml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/view/userList_d.xhtml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -b -r1.3 -r1.4
  --- userList_d.xhtml	19 Nov 2007 15:51:25 -0000	1.3
  +++ userList_d.xhtml	19 Dec 2007 04:29:18 -0000	1.4
  @@ -31,17 +31,21 @@
   <ui:define name="content">
   
       <h:form id="userSearchForm" styleClass="box">
  -
           <div class="form" id="userSearchControl">
   
  -            <ui:include src="includes/statusIndicator.xhtml"/>
  +            <ui:include src="includes/statusIndicator.xhtml">
  +                <ui:param name="statusId" value="userSearchFormStatus"/>
  +            </ui:include>
   
               <h:panelGrid columns="6"
  -                         styleClass="datatable topLeftBottomBorder"
  +                         styleClass="datatable topLeftBottomBorder smallFont"
                            headerClass="regularHeader rightBorder"
  -                         columnClasses="tenPercentColumn formFields, tenPercentColumn formFields, tenPercentColumn formFields,
  -                                        tenPercentColumn formFields, twentyPercentColumn alignLeft formFields,
  -                                        defaultColumn alignRight formFields rightBorder"
  +                         columnClasses="formFields minorPadding,
  +                                        formFields minorPadding,
  +                                        formFields minorPadding,
  +                                        formFields minorPadding,
  +                                        formFields minorPadding,
  +                                        defaultColumn rightBorder formFields minorPadding"
                            cellpadding="0" cellspacing="0" border="0">
   
                   <f:facet name="header">
  @@ -125,7 +129,7 @@
           <h:dataTable id="userTable" var="u"
                        value="#{usersList}"
                        rendered="#{usersList.rowCount >0}"
  -                     styleClass="datatable topLeftBottomBorder"
  +                     styleClass="datatable topLeftBottomBorder smallFont"
                        headerClass="sortableHeader rightBorder alignCenter"
                        columnClasses="tenPercentColumn rightBorder alignLeft,
                                       twentyPercentColumn rightBorder alignLeft,
  @@ -147,9 +151,16 @@
                           <h:outputText value="#{messages['lacewiki.label.userList.Username']}"/>
                       </h:commandLink>
                   </f:facet>
  -                <h:outputLink value="#{wiki:renderHomeURL(u)}" rendered="#{!empty u.memberHome}">#{u.username}</h:outputLink>
  +                <s:fragment rendered="#{u.admin or u.guest}">
  +                    <h:outputText value="#{u.username}"/>
  +                </s:fragment>
  +                <s:fragment rendered="#{not u.admin and not u.guest}">
  +                    <s:link view="/userInfo_#{skin}.xhtml" propagation="none">
  +                        <f:param name="userId" value="#{u.id}"/>
                   <h:outputText rendered="#{empty u.memberHome}" value="#{u.username}"/>
  +                    </s:link>
                   <h:outputText rendered="#{!u.activated}" value="&#160;(#{messages['lacewiki.label.userList.NotActivated']})"/>
  +                </s:fragment>
               </h:column>
   
               <h:column>
  @@ -202,7 +213,7 @@
                       </h:commandLink>
                   </f:facet>
                   <h:outputText value="#{u.createdOn}">
  -                    <f:convertDateTime type="both" timeZone="#{wikiPreferences.timeZone}"/>
  +                    <f:convertDateTime pattern="dd. MMM yyyy, HH:mm" timeZone="#{wikiPreferences.timeZone}"/>
                   </h:outputText>
               </h:column>
   
  @@ -217,7 +228,7 @@
                       </h:commandLink>
                   </f:facet>
                   <h:outputText value="#{u.lastLoginOn}" rendered="#{not empty u.lastLoginOn}">
  -                    <f:convertDateTime type="both" timeZone="#{wikiPreferences.timeZone}"/>
  +                    <f:convertDateTime pattern="dd. MMM yyyy, HH:mm" timeZone="#{wikiPreferences.timeZone}"/>
                   </h:outputText>
                   <h:outputText value="-" rendered="#{empty u.lastLoginOn}"/>
               </h:column>
  
  
  
  1.10      +50 -100   jboss-seam/examples/wiki/view/docEdit_d.xhtml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: docEdit_d.xhtml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/view/docEdit_d.xhtml,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -b -r1.9 -r1.10
  --- docEdit_d.xhtml	9 Nov 2007 15:08:24 -0000	1.9
  +++ docEdit_d.xhtml	19 Dec 2007 04:29:18 -0000	1.10
  @@ -17,12 +17,12 @@
   
   <ui:define name="controlTwo">
   
  -    <s:link id="exitManaged" styleClass="linkNavigation" rendered="#{documentHome.managed}" action="exitManaged"
  +    <s:link id="exitManaged" styleClass="linkNavigation sessionEventTrigger" rendered="#{documentHome.managed}" action="exitManaged"
               accesskey="#{messages['lacewiki.button.ExitEditor.accesskey']}">
           <h:outputText escape="false" value="#{messages['lacewiki.button.ExitEditor']}"/>
       </s:link>
   
  -    <s:link id="exitUnmanaged" styleClass="linkNavigation" rendered="#{!documentHome.managed}" action="exitUnmanaged"
  +    <s:link id="exitUnmanaged" styleClass="linkNavigation sessionEventTrigger" rendered="#{!documentHome.managed}" action="exitUnmanaged"
               accesskey="#{messages['lacewiki.button.ExitEditor.accesskey']}">
           <h:outputText escape="false" value="#{messages['lacewiki.button.ExitEditor']}"/>
       </s:link>
  @@ -31,30 +31,21 @@
   
   <ui:define name="content">
   
  -    <s:span rendered="#{documentHome.managed}">
  -        <ui:include src="includes/directorySelector.xhtml">
  -            <ui:param name="home" value="#{documentHome}"/>
  -        </ui:include>
  -    </s:span>
  -
       <s:span rendered="#{s:hasPermission('User', 'isAdmin', currentUser) and documentHome.managed}">
           <ui:include src="includes/ownerSelector.xhtml">
               <ui:param name="home" value="#{documentHome}"/>
           </ui:include>
       </s:span>
   
  -    <s:span rendered="#{documentHome.managed and documentHome.instance.id != wikiStart.id}">
  -        <ui:include src="includes/deleteConfirmation.xhtml">
  -            <ui:param name="home" value="#{documentHome}"/>
  -        </ui:include>
  -    </s:span>
  -
  -
       <div id="docEditFormContainer" class="box">
       <h:form id="docEditForm">
           <div class="form">
   
  -            <ui:include src="includes/statusIndicator.xhtml"/>
  +            <ui:include src="includes/statusIndicator.xhtml">
  +                <ui:param name="statusId" value="docEditFormStatus"/>
  +            </ui:include>
  +
  +            <script type="text/javascript">startSessionTimeoutCheck();</script>
   
               <script type="text/javascript">jQuery(function() {
                   jQuery('#formTabs').tabs(2, {onClick: function(){formTabClicked()} });
  @@ -80,12 +71,7 @@
                               <s:div styleClass="entry">
                                   <div class="label">#{messages['lacewiki.label.docEdit.Directory']}:</div>
                                   <div class="output">
  -                                    <s:span id="directoryNameDisplay">#{documentHome.parentDirectory.name}</s:span>
  -
  -                                    <h:outputLink id="selectDirectory" rendered="#{documentHome.managed}"
  -                                                  value="#" tabindex="1"
  -                                                  styleClass="buttonNonpersistent"><j4j:idProxy
  -                                            id="openDialogDirectorySelection"/><span class="buttonLabel">...</span></h:outputLink>
  +                                    <s:span id="directoryNameDisplay">#{documentHome.parentNode.name}</s:span>
                                   </div>
                               </s:div>
   
  @@ -93,16 +79,16 @@
                                   <ui:param name="tabId" value="docContentTab"/>
                                   <ui:param name="fieldId" value="name"/>
                                   <ui:define name="label">#{messages['lacewiki.label.docEdit.Name']}</ui:define>
  -                                <h:inputText tabindex="1" size="70" maxlength="255" required="true" value="#{documentHome.instance.name}">
  -                                    <a:support status="docEditForm:status" event="onblur" reRender="nameDecorate, contentPreview"/>
  +                                <h:inputText styleClass="ajaxSupport" tabindex="1" size="65" maxlength="200" required="true" value="#{documentHome.instance.name}">
  +                                    <a:support status="docEditFormStatus" event="onblur" reRender="nameDecorate, contentPreview" oncomplete="onAjaxRequestComplete()"/>
                                   </h:inputText>
                               </s:decorate>
   
                               <s:div styleClass="entry">
                                   <div class="label">&#160;</div>
                                   <div class="input">
  -                                    <h:selectBooleanCheckbox value="#{documentHome.instance.nameAsTitle}" tabindex="1">
  -                                        <a:support status="docEditForm:status" event="onchange" reRender="contentPreview"/>
  +                                    <h:selectBooleanCheckbox styleClass="ajaxSupport" value="#{documentHome.instance.nameAsTitle}" tabindex="1">
  +                                        <a:support status="docEditFormStatus" event="onchange" reRender="contentPreview" oncomplete="onAjaxRequestComplete()"/>
                                       </h:selectBooleanCheckbox>
                                       <h:outputText value="#{messages['lacewiki.label.docEdit.RenderNameAsTitle']}"/>
                                   </div>
  @@ -120,8 +106,8 @@
                                   <s:div styleClass="entry">
                                       <div class="label">&#160;</div>
                                       <div class="input">
  -                                        <h:selectBooleanCheckbox value="#{documentHome.pushOnFeeds}" tabindex="1">
  -                                            <a:support status="docEditForm:status" event="onchange" reRender="pushOnSiteFeedSwitchUnmanaged"/>
  +                                        <h:selectBooleanCheckbox styleClass="ajaxSupport" value="#{documentHome.pushOnFeeds}" tabindex="1">
  +                                            <a:support status="docEditFormStatus" event="onchange" reRender="pushOnSiteFeedSwitchUnmanaged" oncomplete="onAjaxRequestComplete()"/>
                                           </h:selectBooleanCheckbox>
                                           <h:outputText value="#{messages['lacewiki.label.docEdit.CreateOnParentFeeds']}"/>
                                       </div>
  @@ -138,7 +124,7 @@
                               </s:fragment>
   
                               <s:fragment rendered="#{documentHome.managed}">
  -                                <s:fragment rendered="#{documentHome.siteFeedEntryPresent}">
  +                                <s:fragment rendered="#{documentHome.onSiteFeed}">
                                       <s:div styleClass="entry">
                                           <div class="label">&#160;</div>
                                           <div class="input">
  @@ -147,12 +133,12 @@
                                           </div>
                                       </s:div>
                                   </s:fragment>
  -                                <s:fragment rendered="#{not documentHome.siteFeedEntryPresent}">
  +                                <s:fragment rendered="#{not documentHome.onSiteFeed}">
                                       <s:div styleClass="entry">
                                           <div class="label">&#160;</div>
                                           <div class="input">
  -                                            <h:selectBooleanCheckbox value="#{documentHome.pushOnFeeds}" tabindex="1">
  -                                                <a:support status="docEditForm:status" event="onchange" reRender="pushOnSiteFeedSwitch"/>
  +                                            <h:selectBooleanCheckbox styleClass="ajaxSupport" value="#{documentHome.pushOnFeeds}" tabindex="1">
  +                                                <a:support status="docEditFormStatus" event="onchange" reRender="pushOnSiteFeedSwitch" oncomplete="onAjaxRequestComplete()"/>
                                               </h:selectBooleanCheckbox>
                                               <h:outputText value="#{messages['lacewiki.label.docEdit.PushOnParentFeeds']}"/>
                                           </div>
  @@ -173,6 +159,7 @@
                                   <ui:param name="textEditorId" value="content"/>
                                   <ui:param name="textPreviewId" value="#{documentHome.enabledPreview ? 'contentPreview' : ''}"/>
                                   <ui:param name="namingContainer" value="docEditForm"/>
  +                                <ui:param name="statusId" value="docEditFormStatus"/>
                                   <ui:param name="label" value="#{messages['lacewiki.label.docEdit.Content']}"/>
                                   <ui:param name="textEditorColumns" value="#{docEditorPreferences.properties['regularEditAreaColumns']}"/>
                                   <ui:param name="textEditorRows" value="#{docEditorPreferences.properties['regularEditAreaRows']}"/>
  @@ -185,9 +172,10 @@
                                   <h:message for="previewSwitch"/>
                                   <div class="label">&#160;</div>
                                   <div class="input">
  -                                    <h:selectBooleanCheckbox value="#{documentHome.enabledPreview}" tabindex="1" id="previewSwitch">
  -                                        <a:support status="docEditForm:status"
  +                                    <h:selectBooleanCheckbox styleClass="ajaxSupport" value="#{documentHome.enabledPreview}" tabindex="1" id="previewSwitch">
  +                                        <a:support status="docEditFormStatus"
                                                      event="onchange"
  +                                                   oncomplete="onAjaxRequestComplete()"
                                                      reRender="contentPreview, docEditForm:contentTextEditor, pluginSwitch"/>
                                       </h:selectBooleanCheckbox>
                                       <h:outputText value="#{messages['lacewiki.label.docEdit.EnableLivePreview']}"/>
  @@ -195,11 +183,11 @@
                               </s:div>
   
                               <s:div id="pluginSwitch">
  -                                <s:div styleClass="entry" rendered="#{documentHome.enabledPreview}">
  +                                <s:div styleClass="entry" rendered="false">
                                       <div class="label">&#160;</div>
                                       <div class="input">
  -                                        <h:selectBooleanCheckbox value="#{documentHome.showPluginPrefs}" tabindex="1">
  -                                            <a:support status="docEditForm:status" event="onchange" reRender="contentPreview"/>
  +                                        <h:selectBooleanCheckbox styleClass="ajaxSupport" value="#{documentHome.showPluginPrefs}" tabindex="1">
  +                                            <a:support status="docEditFormStatus" event="onchange" reRender="contentPreview" oncomplete="onAjaxRequestComplete()"/>
                                           </h:selectBooleanCheckbox>
                                           <h:outputText value="#{messages['lacewiki.label.docEdit.ShowPluginSettings']}"/>
                                       </div>
  @@ -222,7 +210,7 @@
                                   </div>
                                   <div class="output">
                                       <h:outputText value="#{documentHome.instance.createdOn}">
  -                                        <f:convertDateTime type="both" timeZone="#{wikiPreferences.timeZone}"/>
  +                                        <f:convertDateTime pattern="dd. MMM yyyy, HH:mm" timeZone="#{wikiPreferences.timeZone}"/>
                                       </h:outputText>
                                       <s:span id="ownerDisplay">&#160;(#{documentHome.instance.createdBy.username})</s:span>
                                       <h:outputLink id="selectOwner" value="#" tabindex="1" styleClass="buttonNonpersistent"
  @@ -232,7 +220,7 @@
                               </s:div>
   
                               <ui:include src="includes/accessLevelSelector.xhtml">
  -                                <ui:param name="nodeHome" value="#{documentHome}"/>
  +                                <ui:param name="home" value="#{documentHome}"/>
                               </ui:include>
   
                               <s:div styleClass="entry">
  @@ -240,8 +228,8 @@
                                       <h:outputText value="#{messages['lacewiki.label.docEdit.Options']}:"/>
                                   </div>
                                   <div class="input">
  -                                    <h:selectBooleanCheckbox value="#{documentHome.instance.enableComments}" tabindex="1">
  -                                        <a:support status="docEditForm:status" event="onchange" reRender="commentFormSwitch"/>
  +                                    <h:selectBooleanCheckbox styleClass="ajaxSupport" value="#{documentHome.instance.enableComments}" tabindex="1">
  +                                        <a:support status="docEditFormStatus" event="onchange" reRender="commentFormSwitch" oncomplete="onAjaxRequestComplete()"/>
                                       </h:selectBooleanCheckbox>
                                       <h:outputText value="#{messages['lacewiki.label.docEdit.EnableComments']}"/>
                                   </div>
  @@ -269,53 +257,14 @@
   
                               </s:div>
   
  -                            <s:div styleClass="entry">
  -                                <div class="label">
  -                                    <h:outputText value="#{messages['lacewiki.label.docEdit.Tags']}:"/>
  -                                </div>
  -                                <div class="input">
  -                                    <h:inputText id="tagsInput" tabindex="1" size="70" maxlength="1024" required="false" value="#{documentHome.instance.tags}">
  -                                        <a:support event="onblur" reRender="popularTagsList"/>
  -                                    </h:inputText>
  -                                </div>
  -                            </s:div>
  -
  -                            <script type="text/javascript">
  -                                function appendTag(tag) {
  -                                    oldValue = jQuery('#docEditForm\\:tagsInput').val();
  -                                    if (oldValue != null &amp;&amp; oldValue.length > 0) {
  -                                        jQuery('#docEditForm\\:tagsInput').val(
  -                                            trimString(oldValue) + (stringEndsWith(trimString(oldValue), ",") ? " " : ", ") + tag
  -                                        );
  -                                    } else {
  -                                        jQuery('#docEditForm\\:tagsInput').val(tag);
  -                                    }
  -                                    refreshPopularTagsList();
  -                                }
  -                            </script>
  -                            <a:jsFunction name="refreshPopularTagsList"
  -                                          reRender="popularTagsList"/>
  -
  -                            <s:div styleClass="entry" id="popularTagsList">
  -                                <div class="label">
  -                                    <h:outputText value="#{messages['lacewiki.label.docEdit.PopularTags']}:"/>
  -                                </div>
  -                                <div class="input">
  -                                    <h:panelGroup>
  -                                        <ui:repeat var="tagCount" value="#{documentHome.popularTags}">
  -                                            <s:span styleClass="undecoratedLink">
  -                                                <s:fragment rendered="#{not empty tagCount.tag and not documentHome.instance.tags.contains(tagCount.tag)}">
  -                                                    <h:outputLink value="#"
  -                                                                  onclick="appendTag('#{tagCount.tag}')" >#{tagCount.tag}</h:outputLink>
  -                                                    &#160;
  -                                                </s:fragment>
  -                                            </s:span>
  -                                        </ui:repeat>
  -                                    </h:panelGroup>
  -                                    
  -                                </div>
  -                            </s:div>
  +                            <ui:include src="includes/writeProtectionSelector.xhtml">
  +                                <ui:param name="home" value="#{documentHome}"/>
  +                            </ui:include>
                               
  +                            <ui:include src="includes/tagEditor.xhtml">
  +                                <ui:param name="namingContainer" value="docEditForm"/>
  +                                <ui:param name="home" value="#{documentHome}"/>
  +                            </ui:include>
   
                           </div>
                       </a:region>
  @@ -332,23 +281,27 @@
                           <h:commandLink id="save" action="#{documentHome.persist}"
                                          rendered="#{!documentHome.managed}"
                                          tabindex="1" accesskey="#{messages['lacewiki.button.docEdit.Save.accesskey']}"
  -                                       styleClass="button saveButton">
  +                                       styleClass="button saveButton sessionEventTrigger">
                               <h:outputText escape="false" styleClass="buttonLabel" value="#{messages['lacewiki.button.docEdit.Save']}"/>
                           </h:commandLink>
   
                           <h:commandLink id="update" action="#{documentHome.update}"
                                      rendered="#{documentHome.managed}"
                                      tabindex="1" accesskey="#{messages['lacewiki.button.docEdit.Update.accesskey']}"
  -                                   styleClass="button saveButton">
  +                                   styleClass="button saveButton sessionEventTrigger">
                               <h:outputText escape="false" styleClass="buttonLabel" value="#{messages['lacewiki.button.docEdit.Update']}"/>
                           </h:commandLink>
   
  -                        <h:outputLink id="delete" value="#" tabindex="1"
  +                        <s:fragment rendered="#{documentHome.managed and documentHome.instance.id != wikiStart.id}">
  +                            <a:jsFunction name="deleteDocument"
  +                                          action="#{documentHome.remove}"/>
  +                            <h:outputLink value="#" tabindex="1"
                                         accesskey="#{messages['lacewiki.button.docEdit.Delete.accesskey']}"
  -                                      styleClass="button"
  -                                      rendered="#{documentHome.managed and documentHome.instance.id != wikiStart.id}"><j4j:idProxy id="openDialogDelete"/>
  +                                          onclick="deleteConfirmation('\\'#{documentHome.instance.name}\\'', 'deleteDocument')"
  +                                          styleClass="button sessionEventTrigger">
                               <h:outputText escape="false" styleClass="buttonLabel" value="#{messages['lacewiki.button.docEdit.Delete']}"/>
                           </h:outputLink>
  +                        </s:fragment>
   
                       </div>
                   </div>
  @@ -365,9 +318,6 @@
           <s:div id="documentDisplayContainer"
                  rendered="#{documentHome.enabledPreview}"
                  styleClass="box">
  -            <script type="text/javascript">jQuery(function() {
  -                wrapBoxes();
  -            });</script>
               <s:fragment rendered="#{documentHome.instance.macroPresent('clearBackground')}">
                   <script type="text/javascript">jQuery(function() {
                       clearDocumentBackground();
  @@ -380,8 +330,8 @@
                                       brokenLinkStyleClass="brokenLink"
                                       attachmentLinkStyleClass="regularLink"
                                       thumbnailLinkStyleClass="regularLink"
  -                                    renderBaseDocument="#{documentHome.instance}"
  -                                    renderBaseDirectory="#{documentHome.parentDirectory}"
  +                                    linkBaseFile="#{documentHome.instance}"
  +                                    currentAreaNumber="#{documentHome.parentNode.areaNumber}"
                                       enablePlugins="true"/>
               </s:div>
           </s:div>
  
  
  
  1.3       +29 -36    jboss-seam/examples/wiki/view/userRegister_d.xhtml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: userRegister_d.xhtml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/view/userRegister_d.xhtml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- userRegister_d.xhtml	12 Oct 2007 16:31:24 -0000	1.2
  +++ userRegister_d.xhtml	19 Dec 2007 04:29:18 -0000	1.3
  @@ -6,7 +6,6 @@
                   xmlns:f="http://java.sun.com/jsf/core"
                   xmlns:h="http://java.sun.com/jsf/html"
                   xmlns:a="https://ajax4jsf.dev.java.net/ajax"
  -                xmlns:wiki="http://jboss.com/products/seam/wiki"
                   template="themes/#{wikiPreferences.themeName}/template.xhtml">
   
   <ui:define name="screenname">
  @@ -15,7 +14,7 @@
   
   <ui:define name="controlTwo">
   
  -    <s:link id="close" styleClass="linkNavigation" view="/wiki.xhtml" propagation="end"
  +    <s:link id="close" styleClass="linkNavigation sessionEventTrigger" view="/wiki.xhtml" propagation="end"
               accesskey="#{messages['lacewiki.button.Close.accesskey']}">
           <h:outputText escape="false" value="#{messages['lacewiki.button.Close']}"/>
       </s:link>
  @@ -27,7 +26,11 @@
   <h:form id="userRegisterForm" styleClass="box">
       <div class="form">
   
  -        <ui:include src="includes/statusIndicator.xhtml"/>
  +        <ui:include src="includes/statusIndicator.xhtml">
  +            <ui:param name="statusId" value="userRegisterFormStatus"/>
  +        </ui:include>
  +
  +        <script type="text/javascript">startSessionTimeoutCheck()</script>
   
           <div class="formHead">
               <h:outputText rendered="#{not s:hasPermission('User', 'isAdmin', currentUser)}"
  @@ -41,8 +44,8 @@
               <a:region>
               <s:decorate id="firstnameDecorate" template="includes/formFieldDecorate.xhtml">
                   <ui:define name="label">#{messages['lacewiki.label.userRegister.FirstName']}</ui:define>
  -                <h:inputText tabindex="1" size="40" maxlength="63" required="true" value="#{userHome.instance.firstname}">
  -                    <a:support status="userRegisterForm:status" event="onblur" reRender="firstnameDecorate"/>
  +                <h:inputText styleClass="ajaxSupport" tabindex="1" size="40" maxlength="63" required="true" value="#{userHome.instance.firstname}">
  +                    <a:support status="userRegisterFormStatus" event="onblur" reRender="firstnameDecorate" oncomplete="onAjaxRequestComplete()"/>
                   </h:inputText>
               </s:decorate>
               </a:region>
  @@ -50,8 +53,8 @@
               <a:region>
               <s:decorate id="lastnameDecorate" template="includes/formFieldDecorate.xhtml">
                   <ui:define name="label">#{messages['lacewiki.label.userRegister.LastName']}</ui:define>
  -                <h:inputText tabindex="1" size="40" maxlength="63" required="true" value="#{userHome.instance.lastname}">
  -                    <a:support status="userRegisterForm:status" event="onblur" reRender="lastnameDecorate"/>
  +                <h:inputText styleClass="ajaxSupport" tabindex="1" size="40" maxlength="63" required="true" value="#{userHome.instance.lastname}">
  +                    <a:support status="userRegisterFormStatus" event="onblur" reRender="lastnameDecorate" oncomplete="onAjaxRequestComplete()"/>
                   </h:inputText>
               </s:decorate>
               </a:region>
  @@ -59,8 +62,8 @@
               <a:region>
               <s:decorate id="emailDecorate" template="includes/formFieldDecorate.xhtml">
                   <ui:define name="label">#{messages['lacewiki.label.userRegister.Email']}</ui:define>
  -                <h:inputText tabindex="3" size="40" maxlength="255" required="true" value="#{userHome.instance.email}">
  -                    <a:support status="userRegisterForm:status" event="onblur" reRender="emailDecorate"/>
  +                <h:inputText styleClass="ajaxSupport" tabindex="1" size="40" maxlength="255" required="true" value="#{userHome.instance.email}">
  +                    <a:support status="userRegisterFormStatus" event="onblur" reRender="emailDecorate" oncomplete="onAjaxRequestComplete()"/>
                   </h:inputText>
               </s:decorate>
               </a:region>
  @@ -68,8 +71,9 @@
               <a:region>
               <s:decorate id="usernameDecorate" template="includes/formFieldDecorate.xhtml">
                   <ui:define name="label">#{messages['lacewiki.label.userRegister.Username']}</ui:define>
  -                <h:inputText tabindex="4" size="16" maxlength="16" required="true" id="username" value="#{userHome.instance.username}">
  -                    <a:support status="userRegisterForm:status" event="onblur" action="#{userHome.validateUsername}" reRender="usernameDecorate"/>
  +                <h:inputText styleClass="ajaxSupport" tabindex="1" size="16" maxlength="16" required="true" id="username" value="#{userHome.instance.username}">
  +                    <a:support status="userRegisterFormStatus" event="onblur" action="#{userHome.validateUsername}"
  +                               reRender="usernameDecorate" oncomplete="onAjaxRequestComplete()"/>
                   </h:inputText>
               </s:decorate>
               </a:region>
  @@ -77,9 +81,10 @@
               <a:region>
               <s:decorate id="passwordDecorate" template="includes/formFieldDecorate.xhtml">
                   <ui:define name="label">#{messages['lacewiki.label.userRegister.Password']}</ui:define>
  -                <h:inputSecret tabindex="5" size="15" maxlength="15"
  +                <h:inputSecret styleClass="ajaxSupport" tabindex="1" size="15" maxlength="15"
                                  redisplay="true" value="#{userHome.password}">
  -                    <a:support status="userRegisterForm:status" event="onblur" action="#{userHome.validatePassword}" reRender="passwordDecorate"/>
  +                    <a:support status="userRegisterFormStatus" event="onblur" action="#{userHome.validatePassword}"
  +                               reRender="passwordDecorate" oncomplete="onAjaxRequestComplete()"/>
                   </h:inputSecret>
               </s:decorate>
               </a:region>
  @@ -87,30 +92,18 @@
               <a:region>
               <s:decorate id="passwordControlDecorate" template="includes/formFieldDecorate.xhtml">
                   <ui:define name="label">#{messages['lacewiki.label.userRegister.RepeatPassword']}</ui:define>
  -                <h:inputSecret tabindex="6" size="15" maxlength="15"
  +                <h:inputSecret styleClass="ajaxSupport" tabindex="1" size="15" maxlength="15"
                                  redisplay="true" value="#{userHome.passwordControl}">
  -                    <a:support status="userRegisterForm:status" event="onblur" action="#{userHome.validatePasswordControl}" reRender="passwordControlDecorate"/>
  +                    <a:support status="userRegisterFormStatus" event="onblur" action="#{userHome.validatePasswordControl}"
  +                               reRender="passwordControlDecorate" oncomplete="onAjaxRequestComplete()"/>
                   </h:inputSecret>
               </s:decorate>
               </a:region>
   
  -            <a:region>
  -            <s:div rendered="#{not s:hasPermission('User', 'isAdmin', currentUser)}">
  -                <s:div styleClass="entry">
  -                    <div class="label">#{messages['lacewiki.label.VerificationQuestion']}:</div>
  -                    <div class="output">
  -                        #{messages['lacewiki.label.VerificationQuestionQuestion']}&#160;<h:outputText value="#{captcha.question}"/>?
  -                    </div>
  -                </s:div>
  -
  -                <s:decorate id="verifyCaptchaDecorate" template="includes/formFieldDecorate.xhtml">
  -                    <ui:define name="label">#{messages['lacewiki.label.VerificationEnterResponse']}</ui:define>
  -                    <h:inputSecret tabindex="7" size="5" maxlength="5" required="true"
  -                                   redisplay="true" id="verifyCaptcha" value="#{captcha.response}">
  -                    </h:inputSecret>
  +            <s:decorate id="verifyCaptchaEntry" template="includes/captchaEntry.xhtml">
  +                <ui:param name="statusId" value="userRegisterFormStatus"/>
  +                <ui:param name="rendered" value="#{not s:hasPermission('User', 'isAdmin', currentUser)}"/>
                   </s:decorate>
  -            </s:div>
  -            </a:region>
   
           </div>
   
  @@ -120,15 +113,15 @@
                   <div class="label">&#160;</div>
                   <div class="input">
   
  -                    <h:commandLink id="register" styleClass="button" rendered="#{not s:hasPermission('User', 'isAdmin', currentUser)}"
  +                    <h:commandLink id="register" styleClass="button sessionEventTrigger" rendered="#{not s:hasPermission('User', 'isAdmin', currentUser)}"
                                      action="#{userHome.persist}"
  -                                   tabindex="8" accesskey="#{messages['lacewiki.button.userRegister.Register.accesskey']}">
  +                                   tabindex="1" accesskey="#{messages['lacewiki.button.userRegister.Register.accesskey']}">
                           <h:outputText escape="false" styleClass="buttonLabel" value="#{messages['lacewiki.button.userRegister.Register']}"/>
                       </h:commandLink>
   
  -                    <h:commandLink id="create" styleClass="button" rendered="#{s:hasPermission('User', 'isAdmin', currentUser)}"
  +                    <h:commandLink id="create" styleClass="button sessionEventTrigger" rendered="#{s:hasPermission('User', 'isAdmin', currentUser)}"
                                      action="#{userHome.persist}"
  -                                   tabindex="8" accesskey="#{messages['lacewiki.button.userRegister.Create.accesskey']}">
  +                                   tabindex="1" accesskey="#{messages['lacewiki.button.userRegister.Create.accesskey']}">
                           <h:outputText escape="false" styleClass="buttonLabel" value="#{messages['lacewiki.button.userRegister.Create']}"/>
                       </h:commandLink>
                   </div>
  
  
  
  1.1      date: 2007/12/19 04:29:18;  author: cbauer;  state: Exp;jboss-seam/examples/wiki/view/uploadCreate_d.xhtml
  
  Index: uploadCreate_d.xhtml
  ===================================================================
  <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <ui:composition xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:s="http://jboss.com/products/seam/taglib"
                  xmlns:ui="http://java.sun.com/jsf/facelets"
                  xmlns:f="http://java.sun.com/jsf/core"
                  xmlns:h="http://java.sun.com/jsf/html"
                  xmlns:wiki="http://jboss.com/products/seam/wiki"
                  xmlns:j4j="http://javascript4jsf.dev.java.net/"
                  xmlns:a="https://ajax4jsf.dev.java.net/ajax"
                  template="themes/#{wikiPreferences.themeName}/template.xhtml">
  
  <ui:define name="screenname">
      <h:outputText value="#{messages['lacewiki.label.upload.UploadFile']}"/>
  </ui:define>
  
  <ui:define name="controlTwo">
  
      <s:link id="exit" styleClass="linkNavigation" action="exit"
              accesskey="#{messages['lacewiki.button.ExitEditor.accesskey']}">
          <h:outputText escape="false" value="#{messages['lacewiki.button.ExitEditor']}"/>
      </s:link>
  
  </ui:define>
  
  <ui:define name="content">
  
      <h:form id="uploadForm" styleClass="box" enctype="multipart/form-data">
          <div class="form">
  
              <ui:include src="includes/statusIndicator.xhtml">
                  <ui:param name="statusId" value="uploadFormStatus"/>
              </ui:include>
  
              <script type="text/javascript">startSessionTimeoutCheck()</script>
  
              <div class="formHead">
                  <h:outputText value="#{messages['lacewiki.label.upload.UploadFile']}"/>
              </div>
  
              <div class="formFields formBorder wideLabels">
  
                  <s:div id="uploadControl" styleClass="sessionEventTrigger">
                      <s:decorate id="uploadDecorate" template="includes/formFieldDecorate.xhtml">
                          <ui:define name="label">
                              #{messages['lacewiki.label.upload.Upload']}
                              (#{messages['lacewiki.label.upload.UploadMax']}
                               #{wiki:displayFilesize(org.jboss.seam.web.multipartFilter.maxRequestSize)})
                          </ui:define>
                          <s:fileUpload id="upload" data="#{uploader.data}" contentType="#{uploader.contentType}" fileName="#{uploader.filename}"/>
                      </s:decorate>
                  </s:div>
  
              </div>
              <div class="formControls wideLabels">
  
                  <div class="entry">
                      <div class="label">&#160;</div>
                      <div class="input">
  
                          <h:commandLink id="save" action="#{uploader.uploadNewInstance()}"
                                         tabindex="1" accesskey="#{messages['lacewiki.button.upload.Upload.accesskey']}"
                                         styleClass="buttonNonpersistent sessionEventTrigger">
                              <h:outputText escape="false" styleClass="buttonLabel" value="#{messages['lacewiki.button.upload.Upload']}"/>
                          </h:commandLink>
  
                      </div>
                  </div>
  
              </div>
  
          </div>
      </h:form>
  
  </ui:define>
  
  <ui:define name="footer">&#160;</ui:define>
  
  
  </ui:composition>
  
  
  
  
  1.1      date: 2007/12/19 04:29:18;  author: cbauer;  state: Exp;jboss-seam/examples/wiki/view/userInfo_d.xhtml
  
  Index: userInfo_d.xhtml
  ===================================================================
  <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <ui:composition xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:s="http://jboss.com/products/seam/taglib"
                  xmlns:ui="http://java.sun.com/jsf/facelets"
                  xmlns:f="http://java.sun.com/jsf/core"
                  xmlns:h="http://java.sun.com/jsf/html"
                  xmlns:a="https://ajax4jsf.dev.java.net/ajax"
                  xmlns:j4j="http://javascript4jsf.dev.java.net/"
                  xmlns:wiki="http://jboss.com/products/seam/wiki"
                  template="themes/#{wikiPreferences.themeName}/template.xhtml">
  
  <ui:param name="hideControls" value="#{not s:hasPermission('User', 'isAdmin', currentUser)}"/>
  
  <ui:define name="screenname">
      <h:outputText value="#{messages['lacewiki.label.userInfo.UserInfo']} '#{userHome.instance.username}'"/>
  </ui:define>
  
  <ui:define name="controlTwo">
  
      <s:link id="editUser" styleClass="linkNavigation"
              accesskey="#{messages['lacewiki.button.userInfo.EditAccount.accesskey']}"
              view="/userHome_#{skin}.xhtml" propagation="none"
              rendered="#{s:hasPermission('User', 'isAdmin', currentUser)}">
          <f:param name="userId" value="#{userHome.instance.id}"/>
          <h:outputText escape="false" value="#{messages['lacewiki.button.userInfo.EditAccount']}"/>
      </s:link>
  
  </ui:define>
  
  <ui:define name="content">
  
      <h:panelGrid columns="2" styleClass="userInfo" cellpadding="0" border="0" cellspacing="0"
                   columnClasses="userInfoDetails, userInfoProfile">
  
          <s:div>
  
              <s:div styleClass="form bottomBorder">
                  <s:div styleClass="formHead">
                      <h:outputText value="#{messages['lacewiki.label.userInfo.UserInfo']} '#{userHome.instance.username}'"/>
                  </s:div>
                  <s:div styleClass="formFields formBorder">
  
                      <s:div styleClass="entry">
                          <s:div styleClass="label">
                              <h:outputText value="#{messages['lacewiki.label.userInfo.JoinedOn']}:"/>
                          </s:div>
                          <s:div styleClass="output">
                              <h:outputText value="#{userHome.instance.createdOn}">
                                  <f:convertDateTime pattern="dd. MMM yyyy, HH:mm" timeZone="#{wikiPreferences.timeZone}"/>
                              </h:outputText>
                              <h:outputText value="&#160;(#{messages['lacewiki.label.userInfo.NotActivated']})"
                                            rendered="#{not userHome.instance.admin and not userHome.instance.guest
                                                        and not userHome.instance.activated}"/>
                          </s:div>
                      </s:div>
  
                      <s:div styleClass="entry" rendered="#{not empty userHome.instance.lastLoginOn}">
                          <s:div styleClass="label">
                              <h:outputText value="#{messages['lacewiki.label.userInfo.LastLoginOn']}:"/>
                          </s:div>
                          <s:div styleClass="output">
                              <h:outputText value="#{userHome.instance.lastLoginOn}">
                                  <f:convertDateTime pattern="dd. MMM yyyy, HH:mm" timeZone="#{wikiPreferences.timeZone}"/>
                              </h:outputText>
                          </s:div>
                      </s:div>
  
                  </s:div>
              </s:div>
  
          </s:div>
  
          <s:div>
              <ui:include src="includes/userInfo.xhtml">
                  <ui:param name="user" value="#{userHome.instance}"/>
              </ui:include>
          </s:div>
  
      </h:panelGrid>
  
  </ui:define>
  
  <ui:define name="footer">&#160;</ui:define>
  
  </ui:composition>
  
  
  
  1.1      date: 2007/12/19 04:29:18;  author: cbauer;  state: Exp;jboss-seam/examples/wiki/view/testtemplate.xhtml
  
  Index: testtemplate.xhtml
  ===================================================================
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:wiki="http://jboss.com/products/seam/wiki"
        xmlns:s="http://jboss.com/products/seam/taglib"
        xmlns:a="https://ajax4jsf.dev.java.net/ajax">
  
  <head><title>Test</title>
  
      <script type="text/javascript" src="#{wikiPreferences.baseUrl}/seam/resource/remoting/resource/remote.js"></script>
  
      <script type="text/javascript" src="#{wikiPreferences.baseUrl}/seam/resource/remoting/interface.js?httpSessionChecker"></script>
  
      <script type="text/javascript">
          Seam.Remoting.displayLoadingMessage = function() {};
          Seam.Remoting.hideLoadingMessage = function() {};
  
          var sessionChecker = Seam.Component.getInstance("httpSessionChecker");
          var test = null;
  
          function startTest() {
              alert("Start");
              test = setInterval('sessionChecker.isNewSession(testCallback)', 3000);
          }
  
          function testCallback(result) {
              window.status = result;
          }
      </script>
  
  </head>
  <body>
  
  <ui:insert name="content"/>
  
  </body>
  </html>
  
  
  1.1      date: 2007/12/19 04:29:18;  author: cbauer;  state: Exp;jboss-seam/examples/wiki/view/uploadEdit_m.xhtml
  
  Index: uploadEdit_m.xhtml
  ===================================================================
  <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <ui:composition xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:s="http://jboss.com/products/seam/taglib"
                  xmlns:ui="http://java.sun.com/jsf/facelets"
                  xmlns:f="http://java.sun.com/jsf/core"
                  xmlns:h="http://java.sun.com/jsf/html"
                  xmlns:wiki="http://jboss.com/products/seam/wiki"
                  template="themes/#{wikiPreferences.themeName}/#{skin}/template.xhtml">
  
  <ui:define name="screenname">
      <h:outputText value="#{messages['lacewiki.label.uploadEdit.UploadFile']}" rendered="#{!uploadHome.managed}"/>
      <h:outputText value="#{messages['lacewiki.label.uploadEdit.EditFile']}" rendered="#{uploadHome.managed}"/>
  </ui:define>
  
  <ui:define name="control">
  
      <s:link id="exit" styleClass="linkNavigation" action="exit"
              accesskey="#{messages['lacewiki.button.ExitEditor.accesskey']}">
          <h:outputText escape="false" value="#{messages['lacewiki.button.ExitEditor']}"/>
      </s:link>
  
  </ui:define>
  
  <ui:define name="content">
  
      <h:form enctype="multipart/form-data"><s:validateAll>
  
          <div>#{messages['lacewiki.label.uploadEdit.Directory']}:&#160;#{uploadHome.parentNode.name}</div>
          <div class="errorMessage"><h:message for="name"/></div>
          <div>#{messages['lacewiki.label.uploadEdit.Name']}:&#160;
              <h:inputText id="name" size="30" maxlength="255" required="true" value="#{uploadHome.instance.name}"/>
          </div>
          <s:div rendered="#{uploadHome.managed}">
              #{messages['lacewiki.label.uploadEdit.FileDetails']}:&#160;
              <h:panelGroup>
                  <h:outputLink value="#{wiki:renderURL(uploadHome.instance)}">
                      <h:outputText value="#{uploadHome.instance.filename}, #{wiki:displayFilesize(uploadHome.instance.filesize)}, #{uploadHome.instance.contentType}"/>
                  </h:outputLink>
              </h:panelGroup>
          </s:div>
  
          <div>
              <hr/>
              #{messages['lacewiki.label.uploadEdit.Upload']} (#{messages['lacewiki.label.uploadEdit.UploadMax']} #{wiki:displayFilesize(org.jboss.seam.web.multipartFilter.maxRequestSize)}):&#160;
              <h:panelGroup>
                  <s:fileUpload id="upload" data="#{uploader.data}" contentType="#{uploader.contentType}" fileName="#{uploader.filename}"/>
                  <h:commandButton action="#{uploadHome.uploadUpdateInstance()}" value="#{messages['lacewiki.button.upload.UploadOverwrite']}"/>
              </h:panelGroup>
              <hr/>
          </div>
  
          <ui:include src="includes/#{uploadHome.uploadEditor.includeName}.xhtml">
              <ui:param name="editor" value="#{uploadHome.uploadEditor}"/>
          </ui:include>
  
          <!--
          <s:div id="uploadControl">
              <s:decorate id="uploadDecorate" template="includes/formFieldDecorate.xhtml">
                  <ui:define name="label">
                      #{messages['lacewiki.label.upload.Upload']}
                      (#{messages['lacewiki.label.upload.UploadMax']}
                       #{wiki:displayFilesize(org.jboss.seam.web.multipartFilter.maxRequestSize)})
                  </ui:define>
                  <h:panelGroup>
                      <s:fileUpload id="upload" data="#{uploader.data}" contentType="#{uploader.contentType}" fileName="#{uploader.filename}"/>
                      <h:commandLink action="#{uploadHome.uploadUpdateInstance()}"
                                     tabindex="1" styleClass="buttonNonpersistent">
                          <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.upload.UploadOverwrite']}"/>
                      </h:commandLink>
                  </h:panelGroup>
              </s:decorate>
          </s:div>
          -->
          
          <!--
          <s:div rendered="#{uploadHome.managed and not empty uploadHome.instance.imageMetaInfo}">
              <div>
                  #{messages['lacewiki.label.uploadEdit.OriginalImageSize']}:&#160;#{uploadHome.instance.imageMetaInfo.sizeX} x #{uploadHome.instance.imageMetaInfo.sizeY} pixel
              </div>
              <h:panelGrid columns="1">
                  <h:panelGroup>
                      <h:commandButton id="zoomOut" action="#{uploadHome.zoomPreviewOut}"
                                       value="#{messages['lacewiki.button.uploadEdit.ZoomOut']}"/>
                      <h:commandButton id="actualSize" action="#{uploadHome.zoomActualSize}"
                                       value="#{messages['lacewiki.button.uploadEdit.ActualSize']}"/>
                      <h:commandButton id="zoomIn" action="#{uploadHome.zoomPreviewIn}"
                                       value="#{messages['lacewiki.button.uploadEdit.ZoomIn']}"/>
                  </h:panelGroup>
                  <h:outputLink value="#{facesContext.externalContext.requestContextPath}/servlets/files/download.seam?fileId=#{uploadHome.instance.id}">
                      <s:graphicImage value="#{uploadHome.instance.data}" style="border: 1px solid black;">
                          <s:transformImageSize width="#{uploadHome.imagePreviewSize}" maintainRatio="true"/>
                      </s:graphicImage>
                  </h:outputLink>
              </h:panelGrid>
  
              <div>#{messages['lacewiki.label.uploadEdit.ShowInDocuments']}:&#160;
                  <h:selectOneMenu value="#{uploadHome.instance.imageMetaInfo.thumbnail}" styleClass="" tabindex="4">
                      <f:selectItem itemLabel="#{messages['lacewiki.label.uploadEdit.SmallThumbnail']}" itemValue="S"/>
                      <f:selectItem itemLabel="#{messages['lacewiki.label.uploadEdit.MediumThumbnail']}" itemValue="M"/>
                      <f:selectItem itemLabel="#{messages['lacewiki.label.uploadEdit.LargeThumbnail']}" itemValue="L"/>
                      <f:selectItem itemLabel="#{messages['lacewiki.label.uploadEdit.FullSize']}" itemValue="F"/>
                      <f:selectItem itemLabel="#{messages['lacewiki.label.uploadEdit.AsAttachment']}" itemValue="A"/>
                  </h:selectOneMenu>
              </div>
  
          </s:div>
  
          <div>
              #{messages['lacewiki.label.uploadEdit.Upload']} (#{messages['lacewiki.label.uploadEdit.UploadMax']} #{wiki:displayFilesize(org.jboss.seam.web.multipartFilter.maxRequestSize)}):&#160;
              <s:fileUpload id="upload" data="#{uploadHome.filedata}" contentType="#{uploadHome.contentType}" fileName="#{uploadHome.filename}"/>
          </div>
          -->
  
          <div class="formControls">
  
              <h:commandButton action="#{uploadHome.persist}" rendered="#{!uploadHome.managed}"
                               value="#{messages['lacewiki.button.Save']}"/>
              <h:commandButton action="#{uploadHome.update}" rendered="#{uploadHome.managed}"
                               value="#{messages['lacewiki.button.Update']}"/>
              <h:commandButton action="#{uploadHome.remove}" rendered="#{uploadHome.managed}"
                               value="#{messages['lacewiki.button.Delete']}"/>
  
          </div>
  
      </s:validateAll></h:form>
  
  </ui:define>
  
  </ui:composition>
  
  
  
  1.1      date: 2007/12/19 04:29:18;  author: cbauer;  state: Exp;jboss-seam/examples/wiki/view/userInfo_m.xhtml
  
  Index: userInfo_m.xhtml
  ===================================================================
  <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <ui:composition xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:s="http://jboss.com/products/seam/taglib"
                  xmlns:ui="http://java.sun.com/jsf/facelets"
                  xmlns:f="http://java.sun.com/jsf/core"
                  xmlns:h="http://java.sun.com/jsf/html"
                  xmlns:wiki="http://jboss.com/products/seam/wiki"
                  template="themes/#{wikiPreferences.themeName}/#{skin}/template.xhtml">
  
  <ui:define name="screenname">
      <h:outputText value="#{messages['lacewiki.label.userInfo.UserInfo']}"/>
  </ui:define>
  
  <ui:define name="content">
      <h:outputText value="#{messages['lacewiki.label.userHome.NotAvailableForSkin']}"/>
  </ui:define>
  
  </ui:composition>
  
  
  
  1.1      date: 2007/12/19 04:29:18;  author: cbauer;  state: Exp;jboss-seam/examples/wiki/view/uploadEdit_d.xhtml
  
  Index: uploadEdit_d.xhtml
  ===================================================================
  <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <ui:composition xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:s="http://jboss.com/products/seam/taglib"
                  xmlns:ui="http://java.sun.com/jsf/facelets"
                  xmlns:f="http://java.sun.com/jsf/core"
                  xmlns:h="http://java.sun.com/jsf/html"
                  xmlns:wiki="http://jboss.com/products/seam/wiki"
                  xmlns:j4j="http://javascript4jsf.dev.java.net/"
                  xmlns:a="https://ajax4jsf.dev.java.net/ajax"
                  template="themes/#{wikiPreferences.themeName}/template.xhtml">
  
  <ui:define name="screenname">
      <h:outputText value="#{messages['lacewiki.label.uploadEdit.UploadFile']}" rendered="#{!uploadHome.managed}"/>
      <h:outputText value="#{messages['lacewiki.label.uploadEdit.EditFile']}" rendered="#{uploadHome.managed}"/>
  </ui:define>
  
  <ui:define name="controlTwo">
  
      <s:link id="exit" styleClass="linkNavigation sessionEventTrigger" action="exit"
              accesskey="#{messages['lacewiki.button.ExitEditor.accesskey']}">
          <h:outputText escape="false" value="#{messages['lacewiki.button.ExitEditor']}"/>
      </s:link>
  
  </ui:define>
  
  <ui:define name="content">
  
      <s:span rendered="#{s:hasPermission('User', 'isAdmin', currentUser) and uploadHome.managed}">
          <ui:include src="includes/ownerSelector.xhtml">
              <ui:param name="home" value="#{uploadHome}"/>
          </ui:include>
      </s:span>
  
      <h:form id="uploadEditForm" styleClass="box" enctype="multipart/form-data">
          <div class="form">
  
              <ui:include src="includes/statusIndicator.xhtml">
                  <ui:param name="statusId" value="uploadEditFormStatus"/>
              </ui:include>
  
              <script type="text/javascript">startSessionTimeoutCheck()</script>
  
              <div class="formHead">
                  <h:outputText value="#{messages['lacewiki.label.uploadEdit.UploadFile']}" rendered="#{!uploadHome.managed}"/>
                  <h:outputText value="#{messages['lacewiki.label.uploadEdit.EditFile']}" rendered="#{uploadHome.managed}"/>
              </div>
  
              <div class="formFields formBorder wideLabels">
  
                  <s:div styleClass="entry">
                      <div class="label">#{messages['lacewiki.label.uploadEdit.Directory']}:</div>
                      <div class="output">
                          <s:span id="directoryNameDisplay">#{uploadHome.parentNode.name}</s:span>
                      </div>
                  </s:div>
  
                  <s:div styleClass="entry" rendered="#{uploadHome.managed}">
                      <div class="label">#{messages['lacewiki.label.uploadEdit.CreatedOn']}:</div>
                      <div class="output">
                          <h:outputText value="#{uploadHome.instance.createdOn}">
                              <f:convertDateTime pattern="dd. MMM yyyy, HH:mm" timeZone="#{wikiPreferences.timeZone}"/>
                          </h:outputText>
                          <s:span id="ownerDisplay">&#160;(#{uploadHome.instance.createdBy.username})</s:span>
                          <h:outputLink id="selectOwner" value="#" tabindex="1" styleClass="buttonNonpersistent sessionEventTrigger"
                                        rendered="#{s:hasPermission('User', 'isAdmin', currentUser)}"><j4j:idProxy
                                          id="openDialogOwnerSelection"/><span class="buttonLabel">...</span></h:outputLink>
                      </div>
                  </s:div>
  
                  <s:decorate id="nameDecorate" template="includes/formFieldDecorate.xhtml">
                      <ui:define name="label">#{messages['lacewiki.label.uploadEdit.Name']}</ui:define>
                      <h:inputText styleClass="ajaxSupport" size="50" maxlength="255" required="true" tabindex="1" value="#{uploadHome.instance.name}">
                          <a:support status="uploadEditFormStatus" event="onblur" reRender="nameDecorate" oncomplete="onAjaxRequestComplete()"/>
                      </h:inputText>
                  </s:decorate>
  
                  <ui:include src="includes/accessLevelSelector.xhtml">
                      <ui:param name="home" value="#{uploadHome}"/>
                  </ui:include>
  
                  <ui:include src="includes/writeProtectionSelector.xhtml">
                      <ui:param name="home" value="#{uploadHome}"/>
                  </ui:include>
  
                  <s:div id="details" rendered="#{uploadHome.managed}">
  
                      <div class="entry">
                          <div class="label">#{messages['lacewiki.label.uploadEdit.FileDetails']}:</div>
                          <div class="output">
                              <h:panelGroup>
                                  <h:outputLink value="#{wiki:renderURL(uploadHome.instance)}" styleClass="sessionEventTrigger">
                                      <h:outputText value="#{uploadHome.instance.filename}, #{wiki:displayFilesize(uploadHome.instance.filesize)}, #{uploadHome.instance.contentType}"/>
                                  </h:outputLink>
                              </h:panelGroup>
                          </div>
                      </div>
  
                      <s:div id="uploadControl" styleClass="sessionEventTrigger">
                          <s:decorate id="uploadDecorate" template="includes/formFieldDecorate.xhtml">
                              <ui:define name="label">
                                  #{messages['lacewiki.label.upload.Upload']}
                                  (#{messages['lacewiki.label.upload.UploadMax']}
                                   #{wiki:displayFilesize(org.jboss.seam.web.multipartFilter.maxRequestSize)})
                              </ui:define>
                              <h:panelGroup>
                                  <s:fileUpload id="upload" data="#{uploader.data}" contentType="#{uploader.contentType}" fileName="#{uploader.filename}"/>
                                  <h:commandLink action="#{uploadHome.uploadUpdateInstance()}"
                                                 tabindex="1" styleClass="buttonNonpersistent">
                                      <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.upload.UploadOverwrite']}"/>
                                  </h:commandLink>
                              </h:panelGroup>
                          </s:decorate>
                      </s:div>
  
                  </s:div>
  
                  <ui:include src="includes/#{uploadHome.uploadEditor.includeName}.xhtml">
                      <ui:param name="editor" value="#{uploadHome.uploadEditor}"/>
                  </ui:include>
  
                  <ui:include src="includes/tagEditor.xhtml">
                      <ui:param name="namingContainer" value="uploadEditForm"/>
                      <ui:param name="home" value="#{uploadHome}"/>
                  </ui:include>
  
              </div>
              <div class="formControls wideLabels">
  
                  <div class="entry">
                      <div class="label">&#160;</div>
                      <div class="input">
  
                          <h:commandLink id="save" action="#{uploadHome.persist}"
                                         rendered="#{!uploadHome.managed}"
                                         tabindex="1" accesskey="#{messages['lacewiki.button.uploadEdit.Save.accesskey']}"
                                         styleClass="button sessionEventTrigger">
                              <h:outputText escape="false" styleClass="buttonLabel" value="#{messages['lacewiki.button.uploadEdit.Save']}"/>
                          </h:commandLink>
  
                          <h:commandLink id="update" action="#{uploadHome.update}"
                                     rendered="#{uploadHome.managed}"
                                     tabindex="1" accesskey="#{messages['lacewiki.button.uploadEdit.Update.accesskey']}"
                                     styleClass="button sessionEventTrigger">
                              <h:outputText escape="false" styleClass="buttonLabel" value="#{messages['lacewiki.button.uploadEdit.Update']}"/>
                          </h:commandLink>
  
                          <s:fragment rendered="#{uploadHome.managed}">
                              <a:jsFunction name="deleteUpload"
                                            action="#{uploadHome.remove}"/>
                              <h:outputLink value="#" tabindex="1"
                                            accesskey="#{messages['lacewiki.button.uploadEdit.Delete.accesskey']}"
                                            onclick="deleteConfirmation('\\'#{uploadHome.instance.name}\\'', 'deleteUpload')"
                                            styleClass="button sessionEventTrigger">
                                  <h:outputText escape="false" styleClass="buttonLabel" value="#{messages['lacewiki.button.uploadEdit.Delete']}"/>
                              </h:outputLink>
                          </s:fragment>
  
                      </div>
                  </div>
  
              </div>
  
          </div>
      </h:form>
  
  </ui:define>
  
  <ui:define name="footer">&#160;</ui:define>
  
  
  </ui:composition>
  
  
  
  
  1.1      date: 2007/12/19 04:29:18;  author: cbauer;  state: Exp;jboss-seam/examples/wiki/view/uploadCreate_m.xhtml
  
  Index: uploadCreate_m.xhtml
  ===================================================================
  <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <ui:composition xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:s="http://jboss.com/products/seam/taglib"
                  xmlns:ui="http://java.sun.com/jsf/facelets"
                  xmlns:f="http://java.sun.com/jsf/core"
                  xmlns:h="http://java.sun.com/jsf/html"
                  xmlns:wiki="http://jboss.com/products/seam/wiki"
                  template="themes/#{wikiPreferences.themeName}/#{skin}/template.xhtml">
  
  <ui:define name="screenname">
      <h:outputText value="#{messages['lacewiki.label.upload.UploadFile']}"/>
  </ui:define>
  
  <ui:define name="control">
  
      <s:link id="exit" styleClass="linkNavigation" action="exit"
              accesskey="#{messages['lacewiki.button.ExitEditor.accesskey']}">
          <h:outputText escape="false" value="#{messages['lacewiki.button.ExitEditor']}"/>
      </s:link>
  
  </ui:define>
  
  <ui:define name="content">
  
      <h:form id="uploadForm" enctype="multipart/form-data">
  
          <div>
              <hr/>
              <h:message for="upload"/>
              #{messages['lacewiki.label.uploadEdit.Upload']} (#{messages['lacewiki.label.uploadEdit.UploadMax']} #{wiki:displayFilesize(org.jboss.seam.web.multipartFilter.maxRequestSize)}):&#160;
              <s:fileUpload id="upload" data="#{uploader.data}" contentType="#{uploader.contentType}" fileName="#{uploader.filename}"/>
              <hr/>
          </div>
  
          <div class="formControls">
              <h:commandButton action="#{uploader.uploadNewInstance()}" value="#{messages['lacewiki.button.Save']}"/>
          </div>
      </h:form>
  
  </ui:define>
  
  <ui:define name="footer">&#160;</ui:define>
  
  
  </ui:composition>
  
  
  
  



More information about the jboss-cvs-commits mailing list