[jboss-cvs] JBossBlog SVN: r205 - in trunk: resources/WEB-INF and 11 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Feb 8 06:10:59 EST 2008


Author: adamw
Date: 2008-02-08 06:10:59 -0500 (Fri, 08 Feb 2008)
New Revision: 205

Added:
   trunk/src/action/org/jboss/blog/session/feed/posts/PostAuthorServiceBean.java
   trunk/src/model/org/jboss/blog/model/feed/PostAuthorType.java
Modified:
   trunk/resources/WEB-INF/pages.xml
   trunk/resources/messages_en.properties
   trunk/src/action/org/jboss/blog/session/feed/mod/FeedModBean.java
   trunk/src/action/org/jboss/blog/session/feed/mod/RemoteFeedModBean.java
   trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java
   trunk/src/action/org/jboss/blog/session/xml/velocity/tools/XmlTools.java
   trunk/src/model/org/jboss/blog/model/Post.java
   trunk/src/model/org/jboss/blog/model/feed/Feed.java
   trunk/src/model/org/jboss/blog/model/feed/RestrictedFeed.java
   trunk/view/common/post.xhtml
   trunk/view/manage/feed_mod.xhtml
   trunk/view/manage/remote/remote_add.xhtml
   trunk/view/manage/remote/remote_edit.xhtml
   trunk/view/manage/remote/remote_mod.xhtml
   trunk/view/manage/remote/remote_propose.xhtml
   trunk/view/manage/template/template_mod.xhtml
   trunk/view/stylesheet/blog.css
Log:


Modified: trunk/resources/WEB-INF/pages.xml
===================================================================
--- trunk/resources/WEB-INF/pages.xml	2008-02-08 08:45:43 UTC (rev 204)
+++ trunk/resources/WEB-INF/pages.xml	2008-02-08 11:10:59 UTC (rev 205)
@@ -102,6 +102,10 @@
             <end-conversation />
             <redirect view-id="/manage/index.xhtml" />
         </navigation>
+        <navigation from-action="#{remoteFeedMod.saveOnlyPostAuthorType}">
+            <end-conversation />
+            <redirect view-id="/manage/index.xhtml" />
+        </navigation>
     </page>
 
     <page view-id="/manage/remote/remote_propose.xhtml">

Modified: trunk/resources/messages_en.properties
===================================================================
--- trunk/resources/messages_en.properties	2008-02-08 08:45:43 UTC (rev 204)
+++ trunk/resources/messages_en.properties	2008-02-08 11:10:59 UTC (rev 205)
@@ -99,10 +99,14 @@
 blog.template.added=Template {0} of type {1} added.
 blog.template.new.existingname=A template with that name already exists.
 
-blog.feed.remote.updated=Remote feed's {0} address changed.
+blog.feed.remote.address.updated=Remote feed's {0} address changed.
+blog.feed.remote.postauthor.updated=Remote feed {0} updated.
 blog.feed.remote.invalid=Property: #0, #1.
 blog.feed.remote.adding.quickstart=Enter your atom/rss2 feed address in the box below; if it is correct \
   and the feed parses without any problems, you'll be able to proceed and fill in other details of the new feed.
+blog.feed.remote.mod.authors=You can choose how the author of a post is determined: the value can be either taken \
+  as it appears in the feed, can be always overwritten by the blog author (which is configurable later) or can be \
+  replaced by the blog author only when the post author is missing (default).
 
 blog.feed.aggregated.updated=Aggregated feed {0} changed.
 

Modified: trunk/src/action/org/jboss/blog/session/feed/mod/FeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/mod/FeedModBean.java	2008-02-08 08:45:43 UTC (rev 204)
+++ trunk/src/action/org/jboss/blog/session/feed/mod/FeedModBean.java	2008-02-08 11:10:59 UTC (rev 205)
@@ -1,6 +1,7 @@
 package org.jboss.blog.session.feed.mod;
 
 import org.jboss.blog.model.feed.Feed;
+import org.jboss.blog.model.feed.PostAuthorType;
 import org.jboss.blog.model.Post;
 import org.jboss.blog.model.Template;
 import org.jboss.blog.model.XmlType;
@@ -53,6 +54,7 @@
         feed.setTemplates(new HashMap<XmlType, Template>());
         feed.setAccepted(true);
         feed.setPosts(new ArrayList<Post>());
+        feed.setPostAuthorType(PostAuthorType.BLOG_AUTHOR_IF_MISSING);
     }
 
     public Feed getFeed() {

Modified: trunk/src/action/org/jboss/blog/session/feed/mod/RemoteFeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/mod/RemoteFeedModBean.java	2008-02-08 08:45:43 UTC (rev 204)
+++ trunk/src/action/org/jboss/blog/session/feed/mod/RemoteFeedModBean.java	2008-02-08 11:10:59 UTC (rev 205)
@@ -2,6 +2,7 @@
 
 import org.jboss.blog.model.feed.Feed;
 import org.jboss.blog.model.feed.RemoteFeed;
+import org.jboss.blog.model.feed.PostAuthorType;
 import org.jboss.blog.model.Post;
 import org.jboss.blog.session.feed.InvalidFeedTypeException;
 import org.jboss.blog.session.parser.ParserException;
@@ -133,9 +134,24 @@
 
         entityManager.flush();
 
-        facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.remote.updated",
+        facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.remote.address.updated",
                 getRemoteFeed().getName());
 
         Events.instance().raiseEvent("org.jboss.blog.feed.updated", getRemoteFeed().getName());
     }
+
+    public void saveOnlyPostAuthorType() {
+        PostAuthorType newPostAuthorType = getRemoteFeed().getPostAuthorType();
+
+        entityManager.refresh(getRemoteFeed());
+
+        getRemoteFeed().setPostAuthorType(newPostAuthorType);
+
+        entityManager.flush();
+
+        facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.remote.postauthor.updated",
+                getRemoteFeed().getName());
+
+        Events.instance().raiseEvent("org.jboss.blog.feed.updated", getRemoteFeed().getName());
+    }
 }

Added: trunk/src/action/org/jboss/blog/session/feed/posts/PostAuthorServiceBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/posts/PostAuthorServiceBean.java	                        (rev 0)
+++ trunk/src/action/org/jboss/blog/session/feed/posts/PostAuthorServiceBean.java	2008-02-08 11:10:59 UTC (rev 205)
@@ -0,0 +1,30 @@
+package org.jboss.blog.session.feed.posts;
+
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.ScopeType;
+import org.jboss.blog.model.Post;
+import org.jboss.blog.tools.StringTools;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Name("postAuthorService")
+ at Scope(ScopeType.STATELESS)
+public class PostAuthorServiceBean {
+    public String getAuthor(Post post) {
+        String postAuthor = post.getAuthor();
+        switch (post.getFeed().getPostAuthorType()) {
+            case POST_AUTHOR:
+                return postAuthor == null ? "" : postAuthor;
+
+            case BLOG_AUTHOR:
+                return post.getFeed().getAuthor();
+
+            case BLOG_AUTHOR_IF_MISSING:
+                return StringTools.isEmpty(postAuthor) ? post.getFeed().getAuthor() : postAuthor;
+        }
+
+        return null;
+    }
+}

Modified: trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java	2008-02-08 08:45:43 UTC (rev 204)
+++ trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java	2008-02-08 11:10:59 UTC (rev 205)
@@ -82,7 +82,7 @@
 
                     post.setFeed(feed);
 
-                    post.setAuthor(StringTools.isEmpty(entry.getAuthor()) ? feed.getAuthor() : entry.getAuthor());
+                    post.setAuthor(StringTools.isEmpty(entry.getAuthor()) ? null : entry.getAuthor());
 
                     // Setting content
                     String longestContent = entry.getDescription() == null ? "" : entry.getDescription().getValue();

Modified: trunk/src/action/org/jboss/blog/session/xml/velocity/tools/XmlTools.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/xml/velocity/tools/XmlTools.java	2008-02-08 08:45:43 UTC (rev 204)
+++ trunk/src/action/org/jboss/blog/session/xml/velocity/tools/XmlTools.java	2008-02-08 11:10:59 UTC (rev 205)
@@ -4,6 +4,7 @@
 import org.jboss.blog.model.Post;
 import org.jboss.blog.model.XmlType;
 import org.jboss.blog.session.view.LinkServiceBean;
+import org.jboss.blog.session.feed.posts.PostAuthorServiceBean;
 import org.jboss.seam.Component;
 
 import java.text.SimpleDateFormat;
@@ -45,4 +46,8 @@
     public String postLink(Post post) {
         return getLinkService().generatePostLink(post);
     }
+
+    public String postAuthor(Post post) {
+        return ((PostAuthorServiceBean) Component.getInstance("postAuthorService")).getAuthor(post);
+    }
 }

Modified: trunk/src/model/org/jboss/blog/model/Post.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/Post.java	2008-02-08 08:45:43 UTC (rev 204)
+++ trunk/src/model/org/jboss/blog/model/Post.java	2008-02-08 11:10:59 UTC (rev 205)
@@ -197,7 +197,12 @@
     public int compareTo(RestrictedPost post2) {
         int dateCompare = - GeneralTools.safeCompare(getPublished(), post2.getPublished());
         if (dateCompare == 0) {
-            return GeneralTools.safeCompare(getLink(), post2.getLink());
+            int linkCompare = GeneralTools.safeCompare(getLink(), post2.getLink());
+            if (linkCompare == 0) {
+                return GeneralTools.safeCompare(getId(), post2.getId());
+            } else {
+                return linkCompare;
+            }
         } else {
             return dateCompare;
         }

Modified: trunk/src/model/org/jboss/blog/model/feed/Feed.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/feed/Feed.java	2008-02-08 08:45:43 UTC (rev 204)
+++ trunk/src/model/org/jboss/blog/model/feed/Feed.java	2008-02-08 11:10:59 UTC (rev 205)
@@ -41,6 +41,7 @@
     @Length(max = 512)
     private String title;
 
+    @NotEmpty
     @Length(max = 256)
     private String author;
 
@@ -62,10 +63,11 @@
     private int maxPostsInFeed;
 
     @Column
-    private boolean useBlogAuthorInPosts;
-
+    private int maxPostsOnPage;
+  
     @Column
-    private int maxPostsOnPage;
+    @NotNull
+    private PostAuthorType postAuthorType;
 
     @Column
     @NotNull
@@ -159,12 +161,12 @@
         this.maxPostsOnPage = maxPostsOnPage;
     }
 
-    public boolean isUseBlogAuthorInPosts() {
-        return useBlogAuthorInPosts;
+    public PostAuthorType getPostAuthorType() {
+        return postAuthorType;
     }
 
-    public void setUseBlogAuthorInPosts(boolean useBlogAuthorInPosts) {
-        this.useBlogAuthorInPosts = useBlogAuthorInPosts;
+    public void setPostAuthorType(PostAuthorType postAuthorType) {
+        this.postAuthorType = postAuthorType;
     }
 
     public boolean isAccepted() {

Added: trunk/src/model/org/jboss/blog/model/feed/PostAuthorType.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/feed/PostAuthorType.java	                        (rev 0)
+++ trunk/src/model/org/jboss/blog/model/feed/PostAuthorType.java	2008-02-08 11:10:59 UTC (rev 205)
@@ -0,0 +1,10 @@
+package org.jboss.blog.model.feed;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public enum PostAuthorType {
+    BLOG_AUTHOR_IF_MISSING,
+    POST_AUTHOR,
+    BLOG_AUTHOR
+}

Modified: trunk/src/model/org/jboss/blog/model/feed/RestrictedFeed.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/feed/RestrictedFeed.java	2008-02-08 08:45:43 UTC (rev 204)
+++ trunk/src/model/org/jboss/blog/model/feed/RestrictedFeed.java	2008-02-08 11:10:59 UTC (rev 205)
@@ -18,6 +18,4 @@
     int getMaxPostsInFeed();
 
     int getMaxPostsOnPage();
-
-    boolean isUseBlogAuthorInPosts();
 }

Modified: trunk/view/common/post.xhtml
===================================================================
--- trunk/view/common/post.xhtml	2008-02-08 08:45:43 UTC (rev 204)
+++ trunk/view/common/post.xhtml	2008-02-08 11:10:59 UTC (rev 205)
@@ -16,7 +16,7 @@
     </h3>
 
     <p class="blogauthortag">
-        Published on #{post.published} by #{post.author} #{additionalHeader}
+        Published on #{post.published} by #{postAuthorService.getAuthor(post)} #{additionalHeader}
         [ <a href="#{post.link}">View original post</a> ]
     </p>
 

Modified: trunk/view/manage/feed_mod.xhtml
===================================================================
--- trunk/view/manage/feed_mod.xhtml	2008-02-08 08:45:43 UTC (rev 204)
+++ trunk/view/manage/feed_mod.xhtml	2008-02-08 11:10:59 UTC (rev 205)
@@ -14,10 +14,6 @@
             <p>Please fill in all the details that are necessary to handle your feed.</p>
         </li>
         <li>
-            <p>If posts in your feed do not contain author information, tick the checkbox near the bottom; then
-                the author of the blog will automatically become the author of the post.</p>
-        </li>
-        <li>
             <p>Also, choose an atom template that suites the type of your feed. Most of the time, 'standard' will
                 suffice, however if you have a podcast, choose 'podcast'.</p>
         </li>
@@ -131,22 +127,8 @@
     </a:outputPanel>
 </h:panelGroup>
 
-<h:outputLabel for="useBlogAuthorInPosts">Overwrite post author with blog author in posts:</h:outputLabel>
+<h:outputLabel><span class="required">*</span> Xml templates:</h:outputLabel>
 <h:panelGroup>
-    <h:selectBooleanCheckbox id="useBlogAuthorInPosts" value="#{feedMod.feed.useBlogAuthorInPosts}"
-                             required="true">
-        <a:support event="onblur" reRender="useBlogAuthorInPostsMessage" ajaxSingle="true"
-                   bypassUpdates="true"/>
-        <s:validate />
-    </h:selectBooleanCheckbox>
-
-    <a:outputPanel id="useBlogAuthorInPostsMessage">
-        <h:message for="useBlogAuthorInPosts" styleClass="error" />
-    </a:outputPanel>
-</h:panelGroup>
-
-<h:outputLabel for="useBlogAuthorInPosts"><span class="required">*</span> Xml templates:</h:outputLabel>
-<h:panelGroup>
     <h:dataTable var="templateType" value="#{feedMod.templateTypes}">
         <h:column>
             #{templateType}:

Modified: trunk/view/manage/remote/remote_add.xhtml
===================================================================
--- trunk/view/manage/remote/remote_add.xhtml	2008-02-08 08:45:43 UTC (rev 204)
+++ trunk/view/manage/remote/remote_add.xhtml	2008-02-08 11:10:59 UTC (rev 205)
@@ -18,6 +18,9 @@
                 <li>
                     <p>#{messages['blog.feed.remote.adding.quickstart']}</p>
                 </li>
+                <li>
+                    <p>#{messages['blog.feed.remote.mod.authors']}</p>
+                </li>
             </ul>
         </div>
 

Modified: trunk/view/manage/remote/remote_edit.xhtml
===================================================================
--- trunk/view/manage/remote/remote_edit.xhtml	2008-02-08 08:45:43 UTC (rev 204)
+++ trunk/view/manage/remote/remote_edit.xhtml	2008-02-08 11:10:59 UTC (rev 205)
@@ -19,6 +19,9 @@
                     <p>You can change the address of your feed, however use this option with caution; if you
                     have a completely new feed, maybe it's better to create a new remote feed instead?</p>
                 </li>
+                <li>
+                    <p>#{messages['blog.feed.remote.mod.authors']}</p>
+                </li>
             </ul>
         </div>
 

Modified: trunk/view/manage/remote/remote_mod.xhtml
===================================================================
--- trunk/view/manage/remote/remote_mod.xhtml	2008-02-08 08:45:43 UTC (rev 204)
+++ trunk/view/manage/remote/remote_mod.xhtml	2008-02-08 11:10:59 UTC (rev 205)
@@ -6,7 +6,7 @@
                 xmlns:f="http://java.sun.com/jsf/core"
                 xmlns:h="http://java.sun.com/jsf/html"
                 xmlns:rich="http://richfaces.org/rich"
-                xmlns:a="http://richfaces.org/a4j">    
+                xmlns:a="http://richfaces.org/a4j">
     <div class="adminforms">
         <h:form>
             <h:panelGrid columns="2">
@@ -34,6 +34,19 @@
                     </a:outputPanel>
                 </h:panelGroup>
 
+                <h:outputLabel for="postAuthorType"><span class="required">*</span> Post author:</h:outputLabel>
+                <h:panelGroup>
+                    <h:selectOneMenu id="postAuthorType" value="#{remoteFeedMod.remoteFeed.postAuthorType}"
+                                     required="true" styleClass="selectwide">
+                        <s:enumItem enumValue="BLOG_AUTHOR_IF_MISSING" label="Overwrite with blog author when post
+                            author is missing" />
+                        <s:enumItem enumValue="POST_AUTHOR" label="Always use original post author" />
+                        <s:enumItem enumValue="BLOG_AUTHOR" label="Always overwrite post author with blog author" />
+                        <s:convertEnum />
+                        <s:validate />
+                    </h:selectOneMenu>
+                </h:panelGroup>
+
                 <h:panelGroup />
                 <h:panelGroup id="parseStatus">
                     <h:panelGroup rendered="#{remoteFeedMod.parseOk}">
@@ -52,7 +65,7 @@
                         <li>
                             <a:commandButton action="#{remoteFeedMod.parseFeed}" value="Read and parse the feed"
                                              styleClass="submit"
-                                             reRender="parseStatus,proceed,linkMessage,link,captchaGraphic,captchaMessage" />
+                                             reRender="parseStatus,proceed,linkMessage,link,captchaGraphic,captchaMessage,postAuthorType" />
                         </li>
                     </s:fragment>
                     <s:fragment rendered="#{remoteFeedMod.parseOk and new}">
@@ -67,6 +80,12 @@
                                              styleClass="submit" />
                         </li>
                     </s:fragment>
+                    <s:fragment rendered="#{!new}">
+                        <li>
+                            <h:commandButton value="Save only 'post author'" action="#{remoteFeedMod.saveOnlyPostAuthorType}"
+                                             styleClass="submit" />
+                        </li>
+                    </s:fragment>
                     <li>
                         <s:button value="Cancel" view="#{backTo}" propagation="end" styleClass="submit" />
                     </li>

Modified: trunk/view/manage/remote/remote_propose.xhtml
===================================================================
--- trunk/view/manage/remote/remote_propose.xhtml	2008-02-08 08:45:43 UTC (rev 204)
+++ trunk/view/manage/remote/remote_propose.xhtml	2008-02-08 11:10:59 UTC (rev 205)
@@ -18,6 +18,9 @@
                 <li>
                     <p>#{messages['blog.feed.remote.adding.quickstart']}</p>
                 </li>
+                <li>
+                    <p>#{messages['blog.feed.remote.mod.authors']}</p>
+                </li>
             </ul>
         </div>
 

Modified: trunk/view/manage/template/template_mod.xhtml
===================================================================
--- trunk/view/manage/template/template_mod.xhtml	2008-02-08 08:45:43 UTC (rev 204)
+++ trunk/view/manage/template/template_mod.xhtml	2008-02-08 11:10:59 UTC (rev 205)
@@ -95,6 +95,7 @@
                         a link to a feed of the given type</li>
                     <li>$tools.postLink(org.jboss.blog.model.Post) - generates a link to the html version of the
                         given post</li>
+                    <li>$tools.postAuthor(org.jboss.blog.model.Post) - generates the author of the given post</li>
                 </ul>
             </li>
         </ul>

Modified: trunk/view/stylesheet/blog.css
===================================================================
--- trunk/view/stylesheet/blog.css	2008-02-08 08:45:43 UTC (rev 204)
+++ trunk/view/stylesheet/blog.css	2008-02-08 11:10:59 UTC (rev 205)
@@ -93,6 +93,7 @@
 	padding:.25em 0px;
 }
 
+/* MY CHANGES START HERE */
 /* ---------------------  Admin list ------------------------ */
 
 .adminlist {
@@ -170,3 +171,8 @@
 .empty {
     
 }
+
+.adminforms .selectwide {
+	width: 400px;
+	margin-bottom: 8px;
+}




More information about the jboss-cvs-commits mailing list