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

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


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

  Modified:    examples/wiki/view/plugins/forumReplies   replyForm.xhtml
                        plugin.xhtml
  Log:
  Major rewrite of the most of the application
  
  Revision  Changes    Path
  1.2       +90 -31    jboss-seam/examples/wiki/view/plugins/forumReplies/replyForm.xhtml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: replyForm.xhtml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/view/plugins/forumReplies/replyForm.xhtml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- replyForm.xhtml	9 Nov 2007 15:00:29 -0000	1.1
  +++ replyForm.xhtml	19 Dec 2007 04:29:31 -0000	1.2
  @@ -8,75 +8,134 @@
          xmlns:a="https://ajax4jsf.dev.java.net/ajax"
          xmlns:wiki="http://jboss.com/products/seam/wiki">
   
  +<script type="text/javascript">
  +    function scrollToCommentForm() {
  +        window.scrollTo(0, jQuery('#forumRepliesPlugin\\:replyForm').offset().top)
  +        jQuery("#forumRepliesPlugin\\:replyForm\\:replyTextArea").focus();
  +    }
  +</script>
  +
  +<s:fragment rendered="#{replyHome.showForm}">
  +    <script type="text/javascript">jQuery(function () {scrollToCommentForm(); })</script>
  +    <script type="text/javascript">startSessionTimeoutCheck();</script>
  +</s:fragment>
  +
  +<s:fragment rendered="#{not replyHome.showForm}">
  +    <script type="text/javascript">stopSessionTimeoutCheck();</script>
  +</s:fragment>
  +
   <s:fragment rendered="#{s:hasPermission('Node', 'create', currentDirectory) and replyHome.showForm}">
   
       <div class="box">
   
       <h:form id="replyForm">
  -
           <div class="form">
   
  -            <div class="formHead">
  -                <h:outputText value="New Reply"/>
  +            <ui:include src="../../includes/statusIndicator.xhtml">
  +                <ui:param name="statusId" value="replyFormStatus"/>
  +            </ui:include>
  +
  +            <div class="formHead bottomBorder">
  +                <h:outputText value="#{messages['forum.label.NewReply']}"/>
               </div>
   
               <a:region>
  -                <s:div styleClass="formFields formBorder">
  +                <s:div rendered="#{replyHome.showForm}"
  +                       styleClass="formFields formBorder #{replyHome.instance.ownedByRegularUser ? '' : 'wideLabels'}">
  +
  +                    <s:fragment rendered="#{not replyHome.instance.ownedByRegularUser}">
  +                        <a:region>
  +                            <s:decorate id="userNameDecorate" template="../../includes/formFieldDecorate.xhtml">
  +                                <ui:define name="label">#{messages['forum.label.replyForm.Name']}</ui:define>
  +                                <h:inputText styleClass="ajaxSupport" tabindex="1" size="40" maxlength="100" required="true"
  +                                             id="userName" value="#{replyHome.instance.fromUserName}">
  +                                    <a:support status="replyFormStatus" event="onblur" reRender="userNameDecorate" oncomplete="onAjaxRequestComplete()"/>
  +                                </h:inputText>
  +                            </s:decorate>
  +                        </a:region>
  +
  +                        <s:decorate id="userEmailDecorate" template="../../includes/formFieldDecorate.xhtml">
  +                            <ui:define name="label">#{messages['forum.label.replyForm.Email']}</ui:define>
  +                            <h:inputText tabindex="1" size="40" maxlength="255" required="false"
  +                                         id="userEmail" value="#{replyHome.instance.fromUserEmail}">
  +                            </h:inputText>
  +                        </s:decorate>
  +
  +                        <s:decorate id="userHomepageDecorate" template="../../includes/formFieldDecorate.xhtml">
  +                            <ui:define name="label">#{messages['forum.label.replyForm.Homepage']}</ui:define>
  +                            <h:inputText tabindex="1" size="40" maxlength="1000" required="false"
  +                                         id="userHomepage" value="#{replyHome.instance.fromUserHomepage}">
  +                            </h:inputText>
  +                        </s:decorate>
  +                    </s:fragment>
   
                       <s:decorate id="subjectDecorate" template="../../includes/formFieldDecorate.xhtml">
  -                        <ui:define name="label">Subject</ui:define>
  -                        <h:inputText id="replySubject" tabindex="1" size="90" maxlength="255" required="true" value="#{replyHome.comment.subject}">
  -                            <a:support event="onblur" reRender="subjectDecorate"/>
  +                        <ui:define name="label">#{messages['forum.label.replyForm.Subject']}</ui:define>
  +                        <h:inputText styleClass="ajaxSupport" tabindex="1" size="40" maxlength="255" required="true"
  +                                     id="subject" value="#{replyHome.instance.subject}">
  +                            <a:support status="replyFormStatus" event="onblur" reRender="subjectDecorate" oncomplete="onAjaxRequestComplete()"/>
                           </h:inputText>
                       </s:decorate>
   
  +                    <!-- TODO: Update messsage label -->
                       <ui:include src="../../includes/wikiTextEditor.xhtml">
                           <ui:param name="textEditorId" value="reply"/>
                           <ui:param name="textPreviewId" value="replyPreview"/>
                           <ui:param name="namingContainer" value="forumRepliesPlugin\\\\:replyForm"/>
  -                        <ui:param name="label" value="Message"/>
  -                        <ui:param name="valueBinding" value="#{replyHome.comment.text}"/>
  +                        <ui:param name="statusId" value="replyFormStatus"/>
  +                        <ui:param name="label" value="#{messages['forum.label.replyForm.Message']}"/>
  +                        <ui:param name="valueBinding" value="#{replyHome.instance.content}"/>
                           <ui:param name="valueMaxLength" value="32768"/>
                           <ui:param name="valueRequired" value="true"/>
  -                        <ui:param name="textEditorColumns" value="88"/>
  +                        <ui:param name="textEditorColumns" value="#{replyHome.instance.ownedByRegularUser ? '80' : '50'}"/>
                           <ui:param name="textEditorRows" value="20"/>
                       </ui:include>
   
  -                    <s:div styleClass="marginLeft">
                           <ui:include src="../../includes/wikiTextPreview.xhtml">
                               <ui:param name="textPreviewId" value="replyPreview"/>
  -                            <ui:param name="valueBinding" value="#{replyHome.comment.text}"/>
  +                        <ui:param name="valueBinding" value="#{replyHome.instance.content}"/>
                               <ui:param name="enablePlugins" value="false"/>
                               <ui:param name="baseDocument" value="#{currentDocument}"/>
  -                            <ui:param name="baseDirectory" value="#{currentDirectory}"/>
  +                        <ui:param name="baseDirectory" value="#{currentDocument.parent}"/>
                           </ui:include>
  -                    </s:div>
  +
  +                    <s:decorate id="verifyCaptchaEntry" template="../../includes/captchaEntry.xhtml">
  +                        <ui:param name="statusId" value="replyFormStatus"/>
  +                        <ui:param name="rendered" value="#{!identity.loggedIn}"/>
  +                    </s:decorate>
   
                   </s:div>
   
  -                <div class="formControls">
  +                <s:div rendered="#{replyHome.showForm}"
  +                       styleClass="formControls #{replyHome.instance.ownedByRegularUser ? '' : 'wideLabels'}">
                       <div class="entry">
                           <div class="label">&#160;</div>
                           <div class="input">
   
  -                            <a:commandLink id="save" action="#{replyHome.persist}"
  -                                           reRender="forumPostingHeaderControls, forumRepliesPluginContainer, messageBoxContainer"
  -                                           tabindex="1" accesskey="#{messages['forum.button.Save.accesskey']}"
  -                                           styleClass="button saveButton">
  +                            <a:commandLink id="post"
  +                                           action="#{replyHome.persist}" tabindex="1"
  +                                           reRender="documentDisplay"
  +                                           accesskey="#{messages['forum.button.Save.accesskey']}"
  +                                           status="replyFormStatus"
  +                                           eventsQueue="ajaxEventQueue"
  +                                           oncomplete="onAjaxRequestComplete()"
  +                                           styleClass="button sessionEventTrigger">
                                   <h:outputText escape="false" styleClass="buttonLabel" value="#{messages['forum.button.Save']}"/>
                               </a:commandLink>
   
  -                            <a:commandLink action="#{replyHome.cancel}"
  +                            <a:commandLink action="#{replyHome.cancel}" tabindex="1"
  +                                           reRender="documentDisplay"
                                              immediate="true"
  -                                           reRender="forumPostingHeaderControls, forumRepliesPluginContainer, messageBoxContainer"
  -                                           tabindex="1" styleClass="buttonNonpersistent"
  -                                           accesskey="#{messages['forum.button.Cancel.accesskey']}">
  +                                           eventsQueue="ajaxEventQueue"
  +                                           accesskey="#{messages['forum.button.Cancel.accesskey']}"
  +                                           oncomplete="onAjaxRequestComplete()"
  +                                           styleClass="buttonNonpersistent sessionEventTrigger">
                                   <h:outputText styleClass="buttonLabel" escape="false" value="#{messages['forum.button.Cancel']}"/>
                               </a:commandLink>
   
                           </div>
                       </div>
  -                </div>
  +                </s:div>
   
               </a:region>
   
  
  
  
  1.3       +86 -125   jboss-seam/examples/wiki/view/plugins/forumReplies/plugin.xhtml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: plugin.xhtml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/view/plugins/forumReplies/plugin.xhtml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- plugin.xhtml	20 Nov 2007 08:05:12 -0000	1.2
  +++ plugin.xhtml	19 Dec 2007 04:29:31 -0000	1.3
  @@ -8,134 +8,95 @@
           xmlns:a="https://ajax4jsf.dev.java.net/ajax"
           xmlns:s="http://jboss.com/products/seam/taglib">
   
  -<s:span id="forumRepliesPluginContainer">
   
  -    <script type="text/javascript">jQuery(function() {
  -        jQuery(".userInfoPopupContainer")
  -                .jqm({trigger: false, overlay: 0});
  -    });</script>
  -    <script type="text/javascript">jQuery(function() {
  -        wrapBoxes();
  -    });</script>
  -
  -    <s:div styleClass="box" style="margin-top:25px" rendered="#{not empty replyHome.comments}">
  -
  -        <h:panelGrid columns="1" width="100%"
  -                     cellpadding="0" cellspacing="0" border="0">
  -
  -            <c:forEach var="c" items="#{replyHome.comments}">
  -                <s:div styleClass="replyContainer">
  -                    <a id="comment#{c.id}"/>
  -
  -                    <h:panelGrid columns="2"
  -                                 styleClass="replyHeaderGrid"
  -                                 columnClasses="replyHeaderInfo, replyHeaderControls"
  -                                 cellpadding="0" cellspacing="0" border="0">
  -
  -                        <s:span>
  -                            <s:span styleClass="item">
  -                                <h:outputText value="#{c.createdOn}">
  -                                    <f:convertDateTime type="both" timeZone="#{wikiPreferences.timeZone}"/>
  -                                </h:outputText>
  -                            </s:span>
  -
  -                            <s:fragment rendered="#{wiki:isRegularUser(c.fromUser)}">
  -                                <s:span styleClass="item">
  -                                    <s:span styleClass="undecoratedLink">
  -                                        <h:outputLink value="#" onclick="jQuery('#userInfoPopup#{c.id}').jqmShow();">
  -                                            <h:outputText value="#{c.fromUser.fullname}"/>
  -                                        </h:outputLink>
  -                                        <s:span rendered="#{c.fromUser.id != guestUser.id}">
  -                                            <h:outputText value=",&#160;"/>
  -                                            <h:outputLink value="#{wiki:escapeEmailURL(wiki:concat('mailto:', c.fromUser.email))}">
  -                                                <h:outputText value="#{wiki:escapeAtSymbol(c.fromUser.email)}"/>
  -                                            </h:outputLink>
  -                                        </s:span>
  -                                    </s:span>
  -                                </s:span>
  -
  -                                <ui:include src="../forumPosting/userInfoPopup.xhtml">
  -                                    <ui:param name="user" value="#{c.fromUser}"/>
  -                                    <ui:param name="userInfoPopupId" value="#{c.id}"/>
  -                                </ui:include>
  -                            </s:fragment>
  +    <!-- The forumPostingDocumentWrapper <div> is open! -->
   
  -                            <s:span styleClass="item" rendered="#{not wiki:isRegularUser(c.fromUser)}">
  -                                <h:outputText value="#{c.fromUser.fullname}"/>
  -                            </s:span>
  -
  -                            <s:span styleClass="item undecoratedLink">
  -                                <h:outputLink value="#{wiki:renderCommentPermLink(currentDocument, c)}" target="_top">
  -                                    <h:outputText value="#{messages['lacewiki.label.Link']}"/>
  -                                </h:outputLink>
  -                            </s:span>
  +        <s:div styleClass="commentSignature"
  +               rendered="#{not empty currentDocument.createdBy.profile.signature and not empty currentDocument.areaNumber}">
  +            <s:div styleClass="commentSignatureSeparator">
  +                <h:outputText value="&#160;"/>
  +            </s:div>
  +            <wiki:formattedText value="#{currentDocument.createdBy.profile.signature}"
  +                                linkStyleClass="regularLink"
  +                                brokenLinkStyleClass="brokenLink"
  +                                attachmentLinkStyleClass="regularLink"
  +                                thumbnailLinkStyleClass="regularLink"
  +                                linkBaseFile="#{currentDocument}"
  +                                currentAreaNumber="#{currentDocument.areaNumber}"
  +                                enablePlugins="false"/>
  +        </s:div>
   
  -                        </s:span>
  +        <s:div id="forumPostingControls" styleClass="forumPostingControls">
   
  -                        <h:form>
  -                        <h:panelGroup>
  +            <h:panelGroup rendered="#{not replyHome.showForm and replyHome.hasReplyPermission()}">
   
  -                            <a:commandLink rendered="#{s:hasPermission('Node', 'create', currentDirectory)
  -                                                       and not replyHome.showForm and currentDocument.enableCommentForm}"
  -                                           action="#{replyHome.newReplyToComment(c.id, false)}"
  -                                           reRender="forumPostingHeaderControls, forumRepliesPluginContainer, messageBoxContainer"
  -                                           focus="forumRepliesPlugin:replyForm:replyTextArea"
  -                                           tabindex="1" styleClass="buttonNonpersistent">
  -                                <h:outputText styleClass="buttonLabel" value="#{messages['forum.button.Reply.nokey']}"/>
  -                            </a:commandLink>
  -
  -                            <a:commandLink rendered="#{s:hasPermission('Node', 'create', currentDirectory)
  -                                                       and not replyHome.showForm and currentDocument.enableCommentForm}"
  -                                           action="#{replyHome.newReplyToComment(c.id, true)}"
  -                                           reRender="forumPostingHeaderControls, forumRepliesPluginContainer, messageBoxContainer"
  -                                           focus="forumRepliesPlugin:replyForm:replyTextArea"
  -                                           tabindex="1" styleClass="buttonNonpersistent">
  -                                <h:outputText styleClass="buttonLabel" value="#{messages['forum.button.Quote.nokey']}"/>
  -                            </a:commandLink>
  -
  -                            <a:commandLink rendered="#{s:hasPermission('User', 'isAdmin', currentUser) and not replyHome.showForm}"
  -                                           action="#{replyHome.remove(c.id)}"
  -                                           reRender="forumRepliesPluginContainer, messageBoxContainer"
  -                                           oncomplete="wrapBoxes();"
  -                                           styleClass="button">
  -                                <h:outputText styleClass="buttonLabel" value="#{messages['forum.button.RemoveReply']}"/>
  -                            </a:commandLink>
  +                <s:link tabindex="1"
  +                        action="#{replyHome.replyToDocument()}"
  +                        accesskey="#{messages['forum.button.Reply.accesskey']}"
  +                        styleClass="buttonNonpersistent">
  +                    <h:outputText styleClass="buttonLabel" escape="false" value="#{messages['forum.button.Reply']}"/>
  +                 </s:link>
  +
  +                <s:link tabindex="1"
  +                        action="#{replyHome.quoteDocument()}"
  +                        styleClass="buttonNonpersistent"
  +                        accesskey="#{messages['forum.button.Quote.accesskey']}">
  +                     <h:outputText styleClass="buttonLabel" escape="false" value="#{messages['forum.button.Quote']}"/>
  +                 </s:link>
   
                               </h:panelGroup>
  -                        </h:form>
   
  -                    </h:panelGrid>
  +        </s:div>
   
  -                    <s:div styleClass="replyContent">
  +    <!-- The forumPostingDocumentWrapper <div> is closed here! -->
  +    <h:outputText escape="false" value="&lt;/div>"/>
   
  +    <s:span id="forumRepliesContainer">
   
  -                        <s:div styleClass="replySubject undecoratedLink" rendered="#{currentDocument.name != c.subject}">
  -                            <h:outputLink value="#{wiki:renderCommentURL(currentDocument, c)}">
  -                                <h:outputText value="#{c.subject}"/>
  -                            </h:outputLink>
  -                        </s:div>
  +        <s:fragment rendered="#{currentDocument.enableComments}">
   
  -                        <s:div styleClass="replyText">
  -                            <wiki:formattedText value="#{c.text}"
  -                                                linkStyleClass="regularLink"
  -                                                brokenLinkStyleClass="brokenLink"
  -                                                attachmentLinkStyleClass="regularLink"
  -                                                thumbnailLinkStyleClass="regularLink"
  -                                                renderBaseDocument="#{currentDocument}"
  -                                                renderBaseDirectory="#{currentDirectory}"
  -                                                enablePlugins="false"/>
  -                        </s:div>
  +            <ui:decorate template="../../includes/commentsDisplay.xhtml">
  +                <ui:param name="titleSingular" value="#{messages['forum.label.Reply']}"/>
  +                <ui:param name="titlePlural" value="#{messages['forum.label.Replies']}"/>
  +                <ui:define name="controls">
  +
  +                    <s:fragment rendered="#{not replyHome.showForm and replyHome.hasReplyPermission()}">
  +
  +                        <s:link tabindex="102"
  +                                action="#{replyHome.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="#{replyHome.quote()}"
  +                                styleClass="buttonNonpersistent">
  +                            <f:param name="parentCommentId" value="#{c.id}"/>
  +                            <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.commentsDisplay.Quote']}"/>
  +                        </s:link>
   
  -                    </s:div>
  +                    </s:fragment>
   
  -                </s:div>
  -            </c:forEach>
  -        </h:panelGrid>
  +                     <s:fragment rendered="#{s:hasPermission('Comment', 'delete', currentDocument) and not replyHome.showForm}">
  +                        <a:jsFunction name="deleteReplyId#{c.id}"
  +                                      reRender="forumRepliesContainer"
  +                                      action="#{replyHome.remove(c.id)}"/>
  +                            <h:outputLink value="#"
  +                                  onclick="deleteConfirmation('#{messages['lacewiki.label.commentsDisplay.Comment']} \\'#{c.subject}\\'', 'deleteReplyId#{c.id}')"
  +                                  styleClass="button sessionEventTrigger">
  +                                <h:outputText styleClass="buttonLabel" value="#{messages['lacewiki.button.commentsDisplay.RemoveComment']}"/>
  +                        </h:outputLink>
  +                    </s:fragment>
  +                </ui:define>
  +            </ui:decorate>
   
  -    </s:div>
  +            <ui:include src="replyForm.xhtml">
  +                <ui:param name="home" value="#{replyHome}"/>
  +            </ui:include>
   
  -    <ui:include src="replyForm.xhtml"/>
  +        </s:fragment>
   
  -</s:span>
  +    </s:span>
   
   </wiki:plugin>
  \ No newline at end of file
  
  
  



More information about the jboss-cvs-commits mailing list