View Javadoc

1   package net.sourceforge.blogentis.plugins.impl;
2   
3   //-----------------------------------------------------------------------
4   //Blogentis - a blog publishing platform.
5   //Copyright (C) 2004 Tassos Bassoukos <abassouk@gmail.com>
6   //
7   //This library is free software; you can redistribute it and/or
8   //modify it under the terms of the GNU Lesser General Public
9   //License as published by the Free Software Foundation; either
10  //version 2.1 of the License, or (at your option) any later version.
11  //
12  //This library is distributed in the hope that it will be useful,
13  //but WITHOUT ANY WARRANTY; without even the implied warranty of
14  //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  //Lesser General Public License for more details.
16  //
17  //You should have received a copy of the GNU Lesser General Public
18  //License along with this library; if not, write to the Free Software
19  //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20  //-----------------------------------------------------------------------
21  //
22  //$Id: UserNavigationExtension.java,v 1.3 2004/11/02 00:58:50 tassos Exp $
23  //
24  
25  import java.util.Arrays;
26  import java.util.List;
27  
28  import net.sourceforge.blogentis.om.Blog;
29  import net.sourceforge.blogentis.plugins.IPlugin;
30  import net.sourceforge.blogentis.plugins.base.AbstractNavigationExtension;
31  import net.sourceforge.blogentis.turbine.BlogRunData;
32  import net.sourceforge.blogentis.utils.AbsoluteLinkURL;
33  import net.sourceforge.blogentis.utils.tools.SecurityTool;
34  
35  /***
36   * This extension adds user preferences to the navigations.
37   * 
38   * @author abas
39   */
40  public class UserNavigationExtension
41          extends AbstractNavigationExtension {
42  
43      private static final String USER_PREFS = "UserPrefs";
44  
45      public UserNavigationExtension(IPlugin plugin, Blog blog) {
46          super(plugin, blog);
47      }
48  
49      private static final LinkToTemplate[] userPrefsPages = new LinkToSplitPage[] {
50              new LinkToSplitPage("UserIndex", "Your Feeds", "0"),
51              new LinkToSplitPage("UserIndex", "Personal Info", "1"),
52              new LinkToSplitPage("UserIndex", "Set Password", "2"),
53              new LinkToSplitPage("UserIndex", "Preferences", "3")};
54  
55      private static final AbstractLink[] authoringActions = new AbstractLink[] {
56              new EditPost(),
57              new LinkToParameterPage("PostEdit", "New Post", "create", "true",
58                  AuthorAuthenticator)};
59  
60      private static final List userList = Arrays.asList(userPrefsPages),
61              authoringList = Arrays.asList(authoringActions);
62  
63      private static final AbstractLink adminLink = new LinkToTemplate(
64          "BlogUsers", "Admin", BlogAdminAuthenticator),
65              userIndex = new LinkToTemplate("UserIndex", "Preferences"),
66              logIn = new LogInOut("LogoutUser", "Logout"),
67              logOut = new LinkToTemplate("LoginUser", "Login");
68  
69      public void addNavigations(BlogRunData data, String navName, List links) {
70          SecurityTool st = new SecurityTool(data);
71          if (USER_PREFS.equals(navName)) {
72              links.addAll(userList);
73          } else if (USER_ACTIONS_NAME.equals(navName)) {
74              if (data.getUser().hasLoggedIn()) {
75                  links.addAll(authoringList);
76                  links.add(adminLink);
77                  links.add(userIndex);
78                  links.add(logIn);
79              } else {
80                  links.add(logOut);
81              }
82          } else if (AUTHORING_ACTIONS_NAME.equals(navName)) {
83              links.addAll(authoringList);
84          }
85      }
86  
87      public String getName() {
88          return "User preferences additions to navigation";
89      }
90  
91      public static class EditPost
92              extends AbstractLink {
93          public EditPost() {
94              super("Edit Post", new Authenticator() {
95                  public boolean isVisible(BlogRunData data) {
96                      return new SecurityTool(data).getCanEditThisPost();
97                  }
98              });
99          }
100 
101         public AbsoluteLinkURL getLink(BlogRunData data, AbsoluteLinkURL link) {
102             return link.thisPage(data).setPage("PostEdit");
103         }
104 
105         public boolean isCurrentPage(BlogRunData data) {
106             return false;
107         }
108     }
109 
110     public static class LogInOut
111             extends AbstractLink {
112         String action;
113 
114         public LogInOut(String action, String name) {
115             super(name, null);
116             this.action = action;
117         }
118 
119         public AbsoluteLinkURL getLink(BlogRunData data, AbsoluteLinkURL link) {
120             return link.thisPage(data).setAction(action);
121         }
122 
123         public boolean isCurrentPage(BlogRunData data) {
124             return false;
125         }
126     }
127 }