Author: gmazza
Date: Tue Aug 27 19:43:38 2013
New Revision: 1517951

URL: http://svn.apache.org/r1517951
Log:
Fixing members list (showing pending members, removing deleted members, show 
proper error message if user already invited) and functionality for limited 
blogger (no error messages due to no mail service on document submission, 
allows limited to delete his own drafts and pending docs, remove inaccessible 
comments and entries tabs), some better named functions in UserManager & 
WeblogPermission.orm.xml.

Modified:
    
roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/UserManager.java
    
roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.java
    
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/UserDataServlet.java
    
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/MainMenu.java
    
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryAdd.java
    
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryEdit.java
    
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryRemove.java
    
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Members.java
    
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MembersInvite.java
    
roller/trunk/app/src/main/resources/org/apache/roller/weblogger/pojos/WeblogPermission.orm.xml
    
roller/trunk/app/src/main/resources/org/apache/roller/weblogger/ui/struts2/editor/editor-menu.xml
    roller/trunk/app/src/main/resources/struts.xml
    roller/trunk/app/src/main/webapp/WEB-INF/jsps/core/MainMenu.jsp
    roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/EntryAdd.jsp
    roller/trunk/app/src/main/webapp/WEB-INF/tiles.xml
    roller/trunk/app/src/main/webapp/themes/frontpage/_header.vm
    
roller/trunk/app/src/test/java/org/apache/roller/weblogger/business/PermissionTest.java

Modified: 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/UserManager.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/UserManager.java?rev=1517951&r1=1517950&r2=1517951&view=diff
==============================================================================
--- 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/UserManager.java
 (original)
+++ 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/UserManager.java
 Tue Aug 27 19:43:38 2013
@@ -116,7 +116,6 @@ public interface UserManager {
      * to users created within a certain date range, and the results can be
      * confined to a certain offset & length for paging abilities.
      * 
-     * @param weblog Confine results to users with permission to a certain 
weblog.
      * @param enabled True for enabled only, False for disabled only (or null 
for all)
      * @param startDate Restrict to those created after startDate (or null for 
all)
      * @param endDate Restrict to those created before startDate (or null for 
all)
@@ -187,8 +186,8 @@ public interface UserManager {
     
     
     /**
-     * Get user atribute value
-     * @param user User
+     * Get user attribute value
+     * @param userName User
      * @param attribute Atribute name
      * @return List of user attributes
      */
@@ -197,7 +196,7 @@ public interface UserManager {
     
     /**
      * Set user atribute value
-     * @param user User
+     * @param userName User
      * @param attribute Atribute name     
      * @param value Atribute value
      * @throws org.apache.roller.weblogger.WebloggerException
@@ -251,7 +250,6 @@ public interface UserManager {
      * (changes state of permission record to pending = true)
      * @param weblog  Weblog to grant permissions in
      * @param user    User to grant permissions to
-     * @param actions Actions to be granted
      */
     void confirmWeblogPermission(Weblog weblog, User user)
             throws WebloggerException;
@@ -262,7 +260,6 @@ public interface UserManager {
      * (removes permission record)
      * @param weblog  Weblog to grant permissions in
      * @param user    User to grant permissions to
-     * @param actions Actions to be granted
      */
     void declineWeblogPermission(Weblog weblog, User user)
             throws WebloggerException;
@@ -289,31 +286,41 @@ public interface UserManager {
     /**
      * Get all of user's pending weblog permissions.
      */
-    List<WeblogPermission> getWeblogPermissionsPending(User user)
+    List<WeblogPermission> getPendingWeblogPermissions(User user)
             throws WebloggerException;
-    
-    
+
     /**
-     * Get all permissions associated with a weblog.
+     * Get all active permissions associated with a weblog.
      */
     List<WeblogPermission> getWeblogPermissions(Weblog weblog)
             throws WebloggerException;
-    
-    
+
     /**
      * Get all pending permissions associated with a weblog.
      */
-    List<WeblogPermission> getWeblogPermissionsPending(Weblog weblog)
+    List<WeblogPermission> getPendingWeblogPermissions(Weblog weblog)
             throws WebloggerException;
-    
-    
+
+    /**
+     * Get all permissions (pending or actual) for a weblog.
+     */
+    List<WeblogPermission> getWeblogPermissionsIncludingPending(Weblog weblog)
+            throws WebloggerException;
+
+
     /**
      * Get user's permission within a weblog or null if none.
      */
     WeblogPermission getWeblogPermission(Weblog weblog, User user)
-            throws WebloggerException;        
-    
-    
+            throws WebloggerException;
+
+    /**
+     * Get user's permission (pending or actual) for a weblog
+     */
+    WeblogPermission getWeblogPermissionIncludingPending(Weblog weblog, User 
user)
+            throws WebloggerException;
+
+
     //--------------------------------------------------------------- role CRUD
 
     

Modified: 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.java?rev=1517951&r1=1517950&r2=1517951&view=diff
==============================================================================
--- 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.java
 (original)
+++ 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.java
 Tue Aug 27 19:43:38 2013
@@ -569,7 +569,18 @@ public class JPAUserManagerImpl implemen
 
     
     public WeblogPermission getWeblogPermission(Weblog weblog, User user) 
throws WebloggerException {
-        Query q = 
strategy.getNamedQuery("WeblogPermission.getByUserName&WeblogId&NotPending");
+        Query q = 
strategy.getNamedQuery("WeblogPermission.getByUserName&WeblogId");
+        q.setParameter(1, user.getUserName());
+        q.setParameter(2, weblog.getHandle());
+        try {
+            return (WeblogPermission)q.getSingleResult();
+        } catch (NoResultException ignored) {
+            return null;
+        }
+    }
+
+    public WeblogPermission getWeblogPermissionIncludingPending(Weblog weblog, 
User user) throws WebloggerException {
+        Query q = 
strategy.getNamedQuery("WeblogPermission.getByUserName&WeblogIdIncludingPending");
         q.setParameter(1, user.getUserName());
         q.setParameter(2, weblog.getHandle());
         try {
@@ -579,11 +590,10 @@ public class JPAUserManagerImpl implemen
         }
     }
 
-    
     public void grantWeblogPermission(Weblog weblog, User user, List<String> 
actions) throws WebloggerException {
 
         // first, see if user already has a permission for the specified object
-        Query q = 
strategy.getNamedQuery("WeblogPermission.getByUserName&WeblogId");
+        Query q = 
strategy.getNamedQuery("WeblogPermission.getByUserName&WeblogIdIncludingPending");
         q.setParameter(1, user.getUserName());
         q.setParameter(2, weblog.getHandle());
         WeblogPermission existingPerm = null;
@@ -606,7 +616,7 @@ public class JPAUserManagerImpl implemen
     public void grantWeblogPermissionPending(Weblog weblog, User user, 
List<String> actions) throws WebloggerException {
 
         // first, see if user already has a permission for the specified object
-        Query q = 
strategy.getNamedQuery("WeblogPermission.getByUserName&WeblogId");
+        Query q = 
strategy.getNamedQuery("WeblogPermission.getByUserName&WeblogIdIncludingPending");
         q.setParameter(1, user.getUserName());
         q.setParameter(2, weblog.getHandle());
         WeblogPermission existingPerm = null;
@@ -630,7 +640,7 @@ public class JPAUserManagerImpl implemen
     public void confirmWeblogPermission(Weblog weblog, User user) throws 
WebloggerException {
 
         // get specified permission
-        Query q = 
strategy.getNamedQuery("WeblogPermission.getByUserName&WeblogId");
+        Query q = 
strategy.getNamedQuery("WeblogPermission.getByUserName&WeblogIdIncludingPending");
         q.setParameter(1, user.getUserName());
         q.setParameter(2, weblog.getHandle());
         WeblogPermission existingPerm = null;
@@ -649,7 +659,7 @@ public class JPAUserManagerImpl implemen
     public void declineWeblogPermission(Weblog weblog, User user) throws 
WebloggerException {
 
         // get specified permission
-        Query q = 
strategy.getNamedQuery("WeblogPermission.getByUserName&WeblogId");
+        Query q = 
strategy.getNamedQuery("WeblogPermission.getByUserName&WeblogIdIncludingPending");
         q.setParameter(1, user.getUserName());
         q.setParameter(2, weblog.getHandle());
         WeblogPermission existingPerm = null;
@@ -666,7 +676,7 @@ public class JPAUserManagerImpl implemen
     public void revokeWeblogPermission(Weblog weblog, User user, List<String> 
actions) throws WebloggerException {
 
         // get specified permission
-        Query q = 
strategy.getNamedQuery("WeblogPermission.getByUserName&WeblogId");
+        Query q = 
strategy.getNamedQuery("WeblogPermission.getByUserName&WeblogIdIncludingPending");
         q.setParameter(1, user.getUserName());
         q.setParameter(2, weblog.getHandle());
         WeblogPermission oldperm = null;
@@ -676,7 +686,7 @@ public class JPAUserManagerImpl implemen
             throw new WebloggerException("ERROR: permission not found");
         }
 
-// remove actions specified in perm agument
+        // remove actions specified in perm argument
         oldperm.removeActions(actions);
 
         if (oldperm.isEmpty()) {
@@ -695,28 +705,30 @@ public class JPAUserManagerImpl implemen
         return (List<WeblogPermission>)q.getResultList();
     }
 
-    
     public List<WeblogPermission> getWeblogPermissions(Weblog weblog) throws 
WebloggerException {
         Query q = strategy.getNamedQuery("WeblogPermission.getByWeblogId");
         q.setParameter(1, weblog.getHandle());
         return (List<WeblogPermission>)q.getResultList();
     }
 
-    
-    public List<WeblogPermission> getWeblogPermissionsPending(User user) 
throws WebloggerException {
+    public List<WeblogPermission> getWeblogPermissionsIncludingPending(Weblog 
weblog) throws WebloggerException {
+        Query q = 
strategy.getNamedQuery("WeblogPermission.getByWeblogIdIncludingPending");
+        q.setParameter(1, weblog.getHandle());
+        return (List<WeblogPermission>)q.getResultList();
+    }
+
+    public List<WeblogPermission> getPendingWeblogPermissions(User user) 
throws WebloggerException {
         Query q = 
strategy.getNamedQuery("WeblogPermission.getByUserName&Pending");
         q.setParameter(1, user.getUserName());
         return (List<WeblogPermission>)q.getResultList();
     }
 
-
-    public List<WeblogPermission> getWeblogPermissionsPending(Weblog weblog) 
throws WebloggerException {
+    public List<WeblogPermission> getPendingWeblogPermissions(Weblog weblog) 
throws WebloggerException {
         Query q = 
strategy.getNamedQuery("WeblogPermission.getByWeblogId&Pending");
         q.setParameter(1, weblog.getHandle());
         return (List<WeblogPermission>)q.getResultList();
     }
 
-    
 //-------------------------------------------------------------- role CRUD
  
     

Modified: 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/UserDataServlet.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/UserDataServlet.java?rev=1517951&r1=1517950&r2=1517951&view=diff
==============================================================================
--- 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/UserDataServlet.java
 (original)
+++ 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/UserDataServlet.java
 Tue Aug 27 19:43:38 2013
@@ -57,11 +57,17 @@ public class UserDataServlet extends Htt
         Boolean enabledOnly = null;
         int offset = 0;
         int length = MAX_LENGTH;
-        if ("true".equals(request.getParameter("enabled"))) enabledOnly = 
Boolean.TRUE;
-        if ("false".equals(request.getParameter("enabled"))) enabledOnly = 
Boolean.FALSE;
-        try { offset = Integer.parseInt(request.getParameter("offset"));
+        if ("true".equals(request.getParameter("enabled"))) {
+            enabledOnly = Boolean.TRUE;
+        }
+        if ("false".equals(request.getParameter("enabled"))) {
+            enabledOnly = Boolean.FALSE;
+        }
+        try {
+            offset = Integer.parseInt(request.getParameter("offset"));
         } catch (Exception ignored) {}
-        try { length = Integer.parseInt(request.getParameter("length"));
+        try {
+            length = Integer.parseInt(request.getParameter("length"));
         } catch (Exception ignored) {}
         
         Weblogger roller = WebloggerFactory.getWeblogger();

Modified: 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/MainMenu.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/MainMenu.java?rev=1517951&r1=1517950&r2=1517951&view=diff
==============================================================================
--- 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/MainMenu.java
 (original)
+++ 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/MainMenu.java
 Tue Aug 27 19:43:38 2013
@@ -136,7 +136,7 @@ public class MainMenu extends UIAction {
     public List getPendingPermissions() {
         try {
             UserManager mgr = WebloggerFactory.getWeblogger().getUserManager();
-            return mgr.getWeblogPermissionsPending(getAuthenticatedUser());
+            return mgr.getPendingWeblogPermissions(getAuthenticatedUser());
         } catch(Exception e) {
             return Collections.EMPTY_LIST;
         }

Modified: 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryAdd.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryAdd.java?rev=1517951&r1=1517950&r2=1517951&view=diff
==============================================================================
--- 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryAdd.java
 (original)
+++ 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryAdd.java
 Tue Aug 27 19:43:38 2013
@@ -201,7 +201,9 @@ public final class EntryAdd extends Entr
 
                                if (entry.isPending()) {
                                        // implies that entry just changed to 
pending
-                                       MailUtil.sendPendingEntryNotice(entry);
+                                       if (MailUtil.isMailConfigured()) {
+                        MailUtil.sendPendingEntryNotice(entry);
+                    }
                                        
addMessage("weblogEdit.submittedForReview");
                                } else {
                                        addMessage("weblogEdit.changesSaved");

Modified: 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryEdit.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryEdit.java?rev=1517951&r1=1517950&r2=1517951&view=diff
==============================================================================
--- 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryEdit.java
 (original)
+++ 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryEdit.java
 Tue Aug 27 19:43:38 2013
@@ -235,7 +235,9 @@ public final class EntryEdit extends Ent
 
                 if (entry.isPending()) {
                     // implies that entry just changed to pending
-                    MailUtil.sendPendingEntryNotice(entry);
+                    if (MailUtil.isMailConfigured()) {
+                        MailUtil.sendPendingEntryNotice(entry);
+                    }
                     addMessage("weblogEdit.submittedForReview");
                 } else {
                     addMessage("weblogEdit.changesSaved");

Modified: 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryRemove.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryRemove.java?rev=1517951&r1=1517950&r2=1517951&view=diff
==============================================================================
--- 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryRemove.java
 (original)
+++ 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryRemove.java
 Tue Aug 27 19:43:38 2013
@@ -25,8 +25,12 @@ import org.apache.roller.weblogger.busin
 import org.apache.roller.weblogger.business.WeblogEntryManager;
 import org.apache.roller.weblogger.business.search.IndexManager;
 import org.apache.roller.weblogger.pojos.WeblogEntry;
+import org.apache.roller.weblogger.pojos.WeblogPermission;
 import org.apache.roller.weblogger.util.cache.CacheManager;
 
+import java.util.Collections;
+import java.util.List;
+
 /**
  * Remove a weblog entry.
  */
@@ -130,4 +134,9 @@ public class EntryRemove extends EntryBa
                this.removeEntry = removeEntry;
        }
 
+    // allow LIMITED users to delete their own draft/pending blog entries
+    public List<String> requiredWeblogPermissionActions() {
+        return Collections.singletonList(WeblogPermission.EDIT_DRAFT);
+    }
+
 }

Modified: 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Members.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Members.java?rev=1517951&r1=1517950&r2=1517951&view=diff
==============================================================================
--- 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Members.java
 (original)
+++ 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Members.java
 Tue Aug 27 19:43:38 2013
@@ -73,21 +73,21 @@ public class Members extends UIAction im
     
     public String save() {
         
-        log.debug("Attempting to processing weblog permissions updates");
+        log.debug("Attempting to process weblog permissions updates");
         
         int removed = 0;
         int changed = 0;
         List<WeblogPermission> permsList = new ArrayList<WeblogPermission>();
         try {
             UserManager userMgr = 
WebloggerFactory.getWeblogger().getUserManager();   
-            List<WeblogPermission> permissions = 
userMgr.getWeblogPermissions(getActionWeblog());
+            List<WeblogPermission> permissions = 
userMgr.getWeblogPermissionsIncludingPending(getActionWeblog());
 
             // we have to copy the permissions list so that when we remove 
permissions
             // below we don't get ConcurrentModificationExceptions
             for( WeblogPermission perm : permissions ) {
                 permsList.add(perm);
             }
-        
+            // one iteration for each line (user) in the members table
             for (WeblogPermission perms : permsList) {
                 
                 String sval = getParameter("perm-" + perms.getUser().getId());
@@ -108,8 +108,8 @@ public class Members extends UIAction im
                         
                     } 
                     if (!error && !perms.hasAction(sval)) {
-                        if (sval == null) {
-                            userMgr.revokeWeblogPermission(
+                        if ("-1".equals(sval)) {
+                             userMgr.revokeWeblogPermission(
                                     perms.getWeblog(), perms.getUser(), 
WeblogPermission.ALL_ACTIONS);
                             removed++;
                         } else {
@@ -167,7 +167,7 @@ public class Members extends UIAction im
     
     public List<WeblogPermission> getWeblogPermissions() {
         try {
-            return 
WebloggerFactory.getWeblogger().getUserManager().getWeblogPermissions(getActionWeblog());
+            return 
WebloggerFactory.getWeblogger().getUserManager().getWeblogPermissionsIncludingPending(getActionWeblog());
         } catch (WebloggerException ex) {
             // serious problem, but not much we can do here
             log.error("ERROR getting weblog permissions", ex);

Modified: 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MembersInvite.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MembersInvite.java?rev=1517951&r1=1517950&r2=1517951&view=diff
==============================================================================
--- 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MembersInvite.java
 (original)
+++ 
roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MembersInvite.java
 Tue Aug 27 19:43:38 2013
@@ -70,7 +70,7 @@ public class MembersInvite extends UIAct
             return SUCCESS;
         }
         
-        log.debug("Showing weblog inivitation form");
+        log.debug("Showing weblog invitation form");
         
         return INPUT;
     }
@@ -112,8 +112,8 @@ public class MembersInvite extends UIAct
         
         // check for existing permissions or invitation
         try {
-            WeblogPermission perm = 
umgr.getWeblogPermission(getActionWeblog(), user);
-            
+            WeblogPermission perm = 
umgr.getWeblogPermissionIncludingPending(getActionWeblog(), user);
+
             if (perm != null && perm.isPending()) {
                 addError("inviteMember.error.userAlreadyInvited");
             } else if (perm != null) {

Modified: 
roller/trunk/app/src/main/resources/org/apache/roller/weblogger/pojos/WeblogPermission.orm.xml
URL: 
http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/pojos/WeblogPermission.orm.xml?rev=1517951&r1=1517950&r2=1517951&view=diff
==============================================================================
--- 
roller/trunk/app/src/main/resources/org/apache/roller/weblogger/pojos/WeblogPermission.orm.xml
 (original)
+++ 
roller/trunk/app/src/main/resources/org/apache/roller/weblogger/pojos/WeblogPermission.orm.xml
 Tue Aug 27 19:43:38 2013
@@ -7,35 +7,35 @@
     <entity metadata-complete="true" name="WeblogPermission"
             class="org.apache.roller.weblogger.pojos.WeblogPermission" 
access="PROPERTY">
         <discriminator-value>Weblog</discriminator-value>
-        
-        <named-query name="WeblogPermission.getAll">
-            <query>SELECT p FROM WeblogPermission p</query>
-        </named-query>
-        
+
         <named-query name="WeblogPermission.getByUserName">
             <query>SELECT p FROM WeblogPermission p WHERE p.userName = ?1 AND 
p.pending &lt;&gt; TRUE</query>
         </named-query>
-        
+
+        <named-query name="WeblogPermission.getByUserName&amp;Pending">
+            <query>SELECT p FROM WeblogPermission p WHERE p.userName = ?1 AND 
p.pending = TRUE</query>
+        </named-query>
+
         <named-query name="WeblogPermission.getByWeblogId">
             <query>SELECT p FROM WeblogPermission p WHERE p.objectId = ?1 AND 
p.pending &lt;&gt; TRUE</query>
         </named-query>
-        
-        <named-query name="WeblogPermission.getByUserName&amp;WeblogId">
-            <query>SELECT p FROM WeblogPermission p WHERE p.userName = ?1 AND 
p.objectId = ?2</query>
+
+        <named-query name="WeblogPermission.getByWeblogId&amp;Pending">
+            <query>SELECT p FROM WeblogPermission p WHERE p.objectId = ?1 AND 
p.pending = TRUE</query>
         </named-query>
-        
-        <named-query 
name="WeblogPermission.getByUserName&amp;WeblogId&amp;NotPending">
-            <query>SELECT p FROM WeblogPermission p WHERE p.userName = ?1 AND 
p.objectId = ?2 AND p.pending &lt;&gt; true</query>
+
+        <named-query name="WeblogPermission.getByWeblogIdIncludingPending">
+            <query>SELECT p FROM WeblogPermission p WHERE p.objectId = 
?1</query>
         </named-query>
-        
-        <named-query name="WeblogPermission.getByUserName&amp;Pending">
-            <query>SELECT p FROM WeblogPermission p WHERE p.userName = ?1 AND 
p.pending = TRUE</query>
+
+        <named-query name="WeblogPermission.getByUserName&amp;WeblogId">
+            <query>SELECT p FROM WeblogPermission p WHERE p.userName = ?1 AND 
p.objectId = ?2 AND p.pending &lt;&gt; true</query>
         </named-query>
-        
-        <named-query name="WeblogPermission.getByWeblogId&amp;Pending">
-            <query>SELECT p FROM WeblogPermission p WHERE p.objectId = ?1 AND 
p.pending = true</query>
+
+        <named-query 
name="WeblogPermission.getByUserName&amp;WeblogIdIncludingPending">
+            <query>SELECT p FROM WeblogPermission p WHERE p.userName = ?1 AND 
p.objectId = ?2</query>
         </named-query>
-        
+
         <attributes>
             <transient name="user"/>
             <transient name="weblog"/>

Modified: 
roller/trunk/app/src/main/resources/org/apache/roller/weblogger/ui/struts2/editor/editor-menu.xml
URL: 
http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/org/apache/roller/weblogger/ui/struts2/editor/editor-menu.xml?rev=1517951&r1=1517950&r2=1517951&view=diff
==============================================================================
--- 
roller/trunk/app/src/main/resources/org/apache/roller/weblogger/ui/struts2/editor/editor-menu.xml
 (original)
+++ 
roller/trunk/app/src/main/resources/org/apache/roller/weblogger/ui/struts2/editor/editor-menu.xml
 Tue Aug 27 19:43:38 2013
@@ -1,7 +1,7 @@
 <!-- 
 Defines the Roller Weblog Editor/Admin UI menu and roles allowed to use each 
 menu. See also, admin-menu.xml, which defines the Global Admin menu.
-Each menu or menu item is governed by four attrbibutes:
+Each menu or menu item is governed by four attributes:
 
     1) globalPerms: these are the global permissions required to view the item
        Possible values:
@@ -9,9 +9,9 @@ Each menu or menu item is governed by fo
        - login:    allowed to login and save profile
        - weblog:   is allowed to create and user weblogs
        - comment:  allowed to comment on weblogs
-       Use "any" to indicate that role is not required to view ite
+       Use "any" to indicate that role is not required to view item
        
-    2) webogPerms: these are the weblog specific permissions required to view 
item
+    2) weblogPerms: these are the weblog specific permissions required to view 
item
        - post:        edit and publish entries, bookmarks
        - edit_draft:  create and edit draft posts only
        - admin:       edit and publish entries, edit categories, manage users, 
etc.
@@ -34,7 +34,7 @@ Each menu or menu item is governed by fo
         <menu-item action="entries" 
                    name="tabbedmenu.weblog.archives" 
                    globalPerms="login"
-                   weblogPerms="edit_draft" />
+                   weblogPerms="post" />
         
         <menu-item action="comments" 
                    name="tabbedmenu.admin.commentManagement" 

Modified: roller/trunk/app/src/main/resources/struts.xml
URL: 
http://svn.apache.org/viewvc/roller/trunk/app/src/main/resources/struts.xml?rev=1517951&r1=1517950&r2=1517951&view=diff
==============================================================================
--- roller/trunk/app/src/main/resources/struts.xml (original)
+++ roller/trunk/app/src/main/resources/struts.xml Tue Aug 27 19:43:38 2013
@@ -223,13 +223,7 @@
     
     <!-- Weblogger Authoring UI -->
     <package name="weblogger-authoring" namespace="/roller-ui/authoring" 
extends="weblogger">
-        
-        <action name="entryAdd!*" method="{1}"
-                class="org.apache.roller.weblogger.ui.struts2.editor.EntryAdd">
-            <result name="input" type="tiles">.EntryAdd</result>
-            <result name="success" type="chain">entryEdit</result>
-        </action>
-        
+
         <action name="entryAddWithMediaFile!*" method="{1}"
                 
class="org.apache.roller.weblogger.ui.struts2.editor.EntryAddWithMediaFile">
             <result name="success" type="chain">entryAdd</result>
@@ -275,11 +269,17 @@
         </action>
 -->
                
-       <action name="mediaFileImageDim!*" method="{1}"
+           <action name="mediaFileImageDim!*" method="{1}"
                 
class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileImageDim">
             <result name="success" 
type="tiles">.MediaFileImageDimension</result>
         </action>
 
+        <action name="entryAdd!*" method="{1}"
+                class="org.apache.roller.weblogger.ui.struts2.editor.EntryAdd">
+            <result name="input" type="tiles">.EntryAdd</result>
+            <result name="success" type="chain">entryEdit</result>
+        </action>
+
         <action name="entryEdit!*" method="{1}"
                 
class="org.apache.roller.weblogger.ui.struts2.editor.EntryEdit">
             <result name="input" type="tiles">.EntryEdit</result>

Modified: roller/trunk/app/src/main/webapp/WEB-INF/jsps/core/MainMenu.jsp
URL: 
http://svn.apache.org/viewvc/roller/trunk/app/src/main/webapp/WEB-INF/jsps/core/MainMenu.jsp?rev=1517951&r1=1517950&r2=1517951&view=diff
==============================================================================
--- roller/trunk/app/src/main/webapp/WEB-INF/jsps/core/MainMenu.jsp (original)
+++ roller/trunk/app/src/main/webapp/WEB-INF/jsps/core/MainMenu.jsp Tue Aug 27 
19:43:38 2013
@@ -111,23 +111,27 @@
                        <s:a href="%{newEntry}"><s:text 
name="yourWebsites.newEntry" /></s:a>
                        <br />
 
-                       <%-- Show Entries link with count, TODO: show N/M where 
N is draft, M is published --%>
-                       <s:url action="entries" 
namespace="/roller-ui/authoring" id="editEntries">
-                           <s:param name="weblog" value="#perms.weblog.handle" 
/>
-                       </s:url>
-                       <img src='<s:url value="/images/table_multiple.png"/>' 
/>
-                       <s:a href="%{editEntries}"><s:text 
name="yourWebsites.editEntries" /> (<s:property 
value="#perms.weblog.entryCount" />)</s:a> 
-                       <br />
+                       <%-- Show Entries link with count for users above 
LIMITED permission --%>
+                       <s:if test='!(#perms.hasAction("edit_draft"))'>
+                           <s:url action="entries" 
namespace="/roller-ui/authoring" id="editEntries">
+                               <s:param name="weblog" 
value="#perms.weblog.handle" />
+                           </s:url>
+                           <img src='<s:url 
value="/images/table_multiple.png"/>' />
+                           <s:a href="%{editEntries}"><s:text 
name="yourWebsites.editEntries" /> (<s:property 
value="#perms.weblog.entryCount" />)</s:a>
+                           <br />
+                       </s:if>
 
-                       <%-- Show Comments link with count, TODO: show N/M 
where N is pending, M is approved --%>
-                       <s:url action="comments" 
namespace="/roller-ui/authoring" id="manageComments">
-                           <s:param name="weblog" value="#perms.weblog.handle" 
/>
-                       </s:url>
-                       <img src='<s:url value="/images/page_white_edit.png"/>' 
/>
-                       <s:a href="%{manageComments}"><s:text 
name="yourWebsites.manageComments" /> (<s:property 
value="#perms.weblog.commentCount" />)</s:a> 
-                       <br />
-                       
-                       <%-- Only adming get access to theme and config 
settings --%>
+                       <%-- Show Comments link with count for users above 
LIMITED permission --%>
+                       <s:if test='!(#perms.hasAction("edit_draft"))'>
+                           <s:url action="comments" 
namespace="/roller-ui/authoring" id="manageComments">
+                               <s:param name="weblog" 
value="#perms.weblog.handle" />
+                           </s:url>
+                           <img src='<s:url 
value="/images/page_white_edit.png"/>' />
+                           <s:a href="%{manageComments}"><s:text 
name="yourWebsites.manageComments" /> (<s:property 
value="#perms.weblog.commentCount" />)</s:a>
+                           <br />
+                       </s:if>
+
+                       <%-- Only admins get access to theme and config 
settings --%>
                        <s:if test='#perms.hasAction("admin")'>
                            
                            <%-- And only show theme option if custom themes 
are enabled --%>

Modified: roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/EntryAdd.jsp
URL: 
http://svn.apache.org/viewvc/roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/EntryAdd.jsp?rev=1517951&r1=1517950&r2=1517951&view=diff
==============================================================================
--- roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/EntryAdd.jsp (original)
+++ roller/trunk/app/src/main/webapp/WEB-INF/jsps/editor/EntryAdd.jsp Tue Aug 
27 19:43:38 2013
@@ -28,7 +28,7 @@
 
 <script type="text/javascript" src="<s:url 
value="/roller-ui/scripts/jquery-1.4.2.min.js" />"></script>
 <!-- Combo-handled YUI JS files: TODO add to roller-ui/yui or remove??
-<link rel="stylesheet" type="text/css" 
href="http://yui.yahooapis.com/combo?2.8.0r4/build/autocomplete/assets/skins/sam/autocomplete.css";>
 
+<link rel="stylesheet" type="text/css" 
href="http://yui.yahooapis.com/combo?2.8.0r4/build/autocomplete/assets/skins/sam/autocomplete.css";>
 <script type="text/javascript" 
src="http://yui.yahooapis.com/combo?2.8.0r4/build/animation/animation-min.js&2.8.0r4/build/connection/connection-min.js&2.8.0r4/build/datasource/datasource-min.js&2.8.0r4/build/autocomplete/autocomplete-min.js";></script>
 -->
 <style>

Modified: roller/trunk/app/src/main/webapp/WEB-INF/tiles.xml
URL: 
http://svn.apache.org/viewvc/roller/trunk/app/src/main/webapp/WEB-INF/tiles.xml?rev=1517951&r1=1517950&r2=1517951&view=diff
==============================================================================
--- roller/trunk/app/src/main/webapp/WEB-INF/tiles.xml (original)
+++ roller/trunk/app/src/main/webapp/WEB-INF/tiles.xml Tue Aug 27 19:43:38 2013
@@ -217,13 +217,6 @@
     
     
     <!-- weblog editor pages (and associates) -->
-    <definition name=".EntryAdd" extends=".tiles-tabbedpage" >
-        <put-attribute name="head" value="/WEB-INF/jsps/tiles/head-ajax.jsp" />
-        <put-attribute name="content" 
value="/WEB-INF/jsps/editor/EntryAdd.jsp" />
-        <put-attribute name="sidebar" 
value="/WEB-INF/jsps/editor/EntrySidebar.jsp" />
-        <put-attribute name="styles" 
value="/WEB-INF/jsps/tiles/css-sidebar.jsp" />
-    </definition>
-
     <definition name=".MediaFileAdd" extends=".tiles-tabbedpage" >
         <put-attribute name="head" value="/WEB-INF/jsps/tiles/head-ajax.jsp" />
         <put-attribute name="content" 
value="/WEB-INF/jsps/editor/MediaFileAdd.jsp" />
@@ -252,7 +245,6 @@
         <put-attribute name="content" 
value="/WEB-INF/jsps/editor/MediaFileImageDimension.jsp" />
     </definition>
     
-
     <definition name=".MediaFileSearchInclude" extends=".tiles-popuppage" >
         <put-attribute name="head" value="/WEB-INF/jsps/tiles/head-ajax.jsp" />
         <put-attribute name="content" 
value="/WEB-INF/jsps/editor/MediaFileSearch.jsp" />
@@ -300,14 +292,21 @@
         <put-attribute name="sidebar" 
value="/WEB-INF/jsps/editor/MediaFileSidebar.jsp" />
         <put-attribute name="styles" 
value="/WEB-INF/jsps/tiles/css-sidebar.jsp" />
     </definition>
-    
+
+    <definition name=".EntryAdd" extends=".tiles-tabbedpage" >
+        <put-attribute name="head" value="/WEB-INF/jsps/tiles/head-ajax.jsp" />
+        <put-attribute name="content" 
value="/WEB-INF/jsps/editor/EntryAdd.jsp" />
+        <put-attribute name="sidebar" 
value="/WEB-INF/jsps/editor/EntrySidebar.jsp" />
+        <put-attribute name="styles" 
value="/WEB-INF/jsps/tiles/css-sidebar.jsp" />
+    </definition>
+
     <definition name=".EntryEdit" extends=".tiles-tabbedpage" >
         <put-attribute name="head" value="/WEB-INF/jsps/tiles/head-ajax.jsp" />
         <put-attribute name="content" 
value="/WEB-INF/jsps/editor/EntryEdit.jsp" />
         <put-attribute name="sidebar" 
value="/WEB-INF/jsps/editor/EntrySidebar.jsp" />
         <put-attribute name="styles" 
value="/WEB-INF/jsps/tiles/css-sidebar.jsp" />
     </definition>
-    
+
     <definition name=".EntryRemove" extends=".tiles-tabbedpage" >
         <put-attribute name="content" 
value="/WEB-INF/jsps/editor/EntryRemove.jsp" />
         <put-attribute name="styles" 
value="/WEB-INF/jsps/tiles/css-nosidebar.jsp" />
@@ -324,7 +323,7 @@
         <put-attribute name="sidebar" 
value="/WEB-INF/jsps/editor/EntriesSidebar.jsp" />
         <put-attribute name="styles" 
value="/WEB-INF/jsps/tiles/css-sidebar.jsp" />
     </definition>
-    
+
     <definition name=".Comments" extends=".tiles-tabbedpage" >
         <put-attribute name="head" value="/WEB-INF/jsps/tiles/head-ajax.jsp" />
         <put-attribute name="content" 
value="/WEB-INF/jsps/editor/Comments.jsp" />

Modified: roller/trunk/app/src/main/webapp/themes/frontpage/_header.vm
URL: 
http://svn.apache.org/viewvc/roller/trunk/app/src/main/webapp/themes/frontpage/_header.vm?rev=1517951&r1=1517950&r2=1517951&view=diff
==============================================================================
--- roller/trunk/app/src/main/webapp/themes/frontpage/_header.vm (original)
+++ roller/trunk/app/src/main/webapp/themes/frontpage/_header.vm Tue Aug 27 
19:43:38 2013
@@ -26,7 +26,8 @@
                 <td class="bannerRight">
                    <a href="$url.absoluteSite">$config.siteName</a> |
                    <a href="$url.absoluteSite/roller-ui/menu.rol">Main 
Menu</a> |
-                   <a href="$url.login">Login</a>
+                   <a href="$url.login">Login</a> |
+                   <a href="$url.register">Register</a>
                 </td>
             </tr>
         </table>
@@ -39,4 +40,4 @@
         <div id="leftcontent"> 
         </div>
     </div>
-    
\ No newline at end of file
+    

Modified: 
roller/trunk/app/src/test/java/org/apache/roller/weblogger/business/PermissionTest.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/app/src/test/java/org/apache/roller/weblogger/business/PermissionTest.java?rev=1517951&r1=1517950&r2=1517951&view=diff
==============================================================================
--- 
roller/trunk/app/src/test/java/org/apache/roller/weblogger/business/PermissionTest.java
 (original)
+++ 
roller/trunk/app/src/test/java/org/apache/roller/weblogger/business/PermissionTest.java
 Tue Aug 27 19:43:38 2013
@@ -200,13 +200,13 @@ public class PermissionTest extends Test
         TestUtils.endSession(true);
 
         // get pending permissions for a user
-        perms = 
mgr.getWeblogPermissionsPending(TestUtils.getManagedUser(testUser));
+        perms = 
mgr.getPendingWeblogPermissions(TestUtils.getManagedUser(testUser));
         assertEquals(0, perms.size());
-        perms = 
mgr.getWeblogPermissionsPending(TestUtils.getManagedUser(user));
+        perms = 
mgr.getPendingWeblogPermissions(TestUtils.getManagedUser(user));
         assertEquals(1, perms.size());
 
         // get pending permissions for a weblog
-        perms = 
mgr.getWeblogPermissionsPending(TestUtils.getManagedWebsite(testWeblog));
+        perms = 
mgr.getPendingWeblogPermissions(TestUtils.getManagedWebsite(testWeblog));
         assertEquals(1, perms.size());            
 
         // get permissions for a specific user/weblog
@@ -224,7 +224,7 @@ public class PermissionTest extends Test
                 TestUtils.getManagedUser(user));
         assertNull(perm);
         
-        List<WeblogPermission> pendings = 
mgr.getWeblogPermissionsPending(user);
+        List<WeblogPermission> pendings = 
mgr.getPendingWeblogPermissions(user);
 
         // cleanup
         TestUtils.teardownPermissions(pendings.get(0));
@@ -268,8 +268,8 @@ public class PermissionTest extends Test
         // assert that invitation list is empty
         testWeblog = TestUtils.getManagedWebsite(testWeblog);
         user = TestUtils.getManagedUser(user);
-        assertTrue(umgr.getWeblogPermissionsPending(user).isEmpty());
-        assertTrue(umgr.getWeblogPermissionsPending(testWeblog).isEmpty());
+        assertTrue(umgr.getPendingWeblogPermissions(user).isEmpty());
+        assertTrue(umgr.getPendingWeblogPermissions(testWeblog).isEmpty());
 
         // assert that user is member of weblog
         assertNotNull(umgr.getWeblogPermission(testWeblog, user));
@@ -297,7 +297,7 @@ public class PermissionTest extends Test
     }
     
     
-        /**
+    /**
      * Tests weblog invitation process.
      */
     public void testPermissionChecks() throws Exception {


Reply via email to