Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/roller/presentation/weblog/tags/WeblogEntryMacros.java


1   package org.roller.presentation.weblog.tags;
2   
3   import org.apache.commons.logging.Log;
4   import org.apache.commons.logging.LogFactory;
5   import org.apache.struts.util.RequestUtils;
6   import org.roller.model.RefererManager;
7   import org.roller.model.Roller;
8   import org.roller.model.WeblogManager;
9   import org.roller.pojos.RefererData;
10  import org.roller.pojos.WeblogEntryData;
11  import org.roller.presentation.RollerRequest;
12  import org.roller.presentation.velocity.Macros;
13  
14  import java.text.SimpleDateFormat;
15  import java.util.ArrayList;
16  import java.util.Date;
17  import java.util.Hashtable;
18  import java.util.Iterator;
19  import java.util.List;
20  
21  import javax.servlet.http.HttpServletRequest;
22  import javax.servlet.jsp.PageContext;
23  
24  //////////////////////////////////////////////////////////////////////////////
25  
26  /**
27   * Provides the macros object that is available to Roller day templates.
28   */
29  public class WeblogEntryMacros extends Macros 
30  {
31      private static Log mLogger = 
32          LogFactory.getFactory().getInstance(RollerRequest.class);
33  
34      private Date mDate = null;
35  
36      //-----------------------------------------------------------------------
37      /**
38       * Construct macros object for page context and date.
39       * @param ctx JSP page context being processed.
40       * @param date Data formatter for entry's date.
41       */
42      public WeblogEntryMacros( PageContext ctx, Date date )
43      {
44          super( ctx, null );
45          mDate = date;
46      }
47      
48      //-----------------------------------------------------------------------
49      public List getDayLinkbacks()
50      {
51          List list = new ArrayList();
52          try
53          {
54              List refs = null;
55              
56              Roller roller = getRollerRequest().getRoller();
57              String userName = getRollerRequest().getUser().getUserName();
58              RefererManager refmgr = roller.getRefererManager();
59               
60              refs = refmgr.getReferersToDate( userName, view("yyyyMMdd") ); 
61                  
62              for (Iterator rdItr = refs.iterator(); rdItr.hasNext();) {
63            RefererData referer = (RefererData) rdItr.next();
64            
65            if ( referer.getTitle()==null ) continue;
66            if ( referer.getTitle().trim().equals("") ) continue;
67            if ( referer.getExcerpt()==null ) continue;
68            if ( referer.getExcerpt().trim().equals("") ) continue;
69      
70            if (   referer.getVisible().booleanValue() 
71              || getRollerRequest().isUserAuthorizedToEdit() )
72            { 
73              list.add( referer );
74            }
75          }
76                
77          }
78          catch (Exception e)
79          {
80              mLogger.error("Getting referers",e);
81          }
82          return list;
83      }
84      
85      //-----------------------------------------------------------------------
86      /** Show entry date using standard format.
87       * @deprecated Use methods on
88       * {@link org.roller.presentation.weblog.WeblogEntryDataEx WeblogEntryDataEx}
89       * instead.
90       */
91      public String showEntryDate()
92      {
93          return this.toString();
94      }
95      
96      //-----------------------------------------------------------------------
97      /** Show entry date using specified
98       * {@link java.text.SimpleDateFormat SimpleDateFormat}
99       * format.
100      * @deprecated Use methods on
101      * {@link org.roller.presentation.weblog.WeblogEntryDataEx WeblogEntryDataEx}
102      * instead.
103      */
104     public String showFormattedEntryDate( String format )
105     {
106         return this.view( format );
107     }
108 
109     //-----------------------------------------------------------------------
110     /**
111      * Show entry permalink and an edit-entry link if logged in as editor.
112      * @param entry Weblog entry for which permalink is to be shown.
113      * @deprecated Use methods on
114      * {@link org.roller.presentation.weblog.WeblogEntryDataEx WeblogEntryDataEx}
115      * instead.
116      * @return HTML for displaying entry permalink icon with permalink.
117      */
118     public String showEntryPermalink( WeblogEntryData entry )
119     {
120         HttpServletRequest request = getRollerRequest().getRequest();
121         String userName = getRollerRequest().getUser().getUserName();
122 
123         String edit = null;
124         try
125         {
126             if ( getRollerRequest().isUserAuthorizedToEdit() )
127             {
128                 Hashtable params = new Hashtable();
129                 params.put( RollerRequest.WEBLOGENTRYID_KEY, entry.getId());
130                 params.put( RollerRequest.USERNAME_KEY, userName);
131                 params.put( RollerRequest.ANCHOR_KEY, entry.getAnchor());
132                 edit = RequestUtils.computeURL( mPageContext,
133                     "editWeblog", null, null, params,null,false);
134             }
135         }
136         catch (Exception e)
137         {
138            // should never happen, but if it does:
139            mLogger.error("ERROR creating Edit-Entry URL",e);
140         }
141 
142         StringBuffer sb = new StringBuffer();
143         sb.append( "<a href=\"");
144         sb.append( request.getContextPath());
145         sb.append( "/page/");
146         sb.append( userName );
147         sb.append( "/");
148         sb.append( showFormattedEntryDate("yyyyMMdd") );
149         sb.append( "#" );
150         sb.append( entry.getAnchor() );
151         sb.append( "\" title=\"Permanent link to this weblog entry\"" );
152         sb.append( " class=\"entrypermalink\">#</a>" );
153         if ( edit != null )
154         {
155             sb.append( " [<a href=\""+edit+"\">Edit</a>]" );
156         }
157 
158         return sb.toString();
159     }
160 
161     //-----------------------------------------------------------------------
162     /**
163      * Show day permalink and an edit-entry link if logged in as editor.
164      * @return HTML for displaying day permalink icon with permalink.
165      */
166     public String showDayPermalink()
167     {
168         HttpServletRequest request =
169             (HttpServletRequest)mPageContext.getRequest();
170 
171         String userName = 
172             RollerRequest.getRollerRequest(request).getUser().getUserName();
173 
174         StringBuffer sb = new StringBuffer();
175         sb.append( "<a href=\"");
176         sb.append( request.getContextPath());
177         sb.append( "/page/");
178         sb.append( userName );
179         sb.append( "/");
180         sb.append( showFormattedEntryDate("yyyyMMdd") );
181         sb.append( "\"><img class=\"daypermalink\" src=\"" );
182         sb.append( request.getContextPath() );
183         sb.append( "/images/permalink.gif\" ");
184         sb.append( "title=\"Permanent link to this day\" " );
185         sb.append( "alt=\"" + showFormattedEntryDate("yyyyMMdd") + "\"/></a>" );
186 
187         return sb.toString();
188     }
189 
190     //-----------------------------------------------------------------------
191 
192     public String showCommentsLink( WeblogEntryData entry )
193     {
194         if (entry.getWebsite().getAllowComments().booleanValue())
195         {
196             HttpServletRequest request =
197                 (HttpServletRequest)mPageContext.getRequest();
198 
199             int commentCount = 0;
200             RollerRequest rreq = null;
201             try
202             {
203                 rreq = RollerRequest.getRollerRequest(request);
204                 WeblogManager mgr = rreq.getRoller().getWeblogManager();
205                 List comments = mgr.getComments( entry.getId() );
206                 commentCount = comments.size();
207             }
208             catch (Exception e)
209             {
210                 // should never happen, but if it does:
211                 if (rreq != null)
212                    mLogger.error("ERROR in showCommentsLink",e);
213                 else
214                     System.err.println("ERROR in showCommentsLink:"+e.toString());
215             }
216             StringBuffer link = new StringBuffer( request.getContextPath());
217             link.append( "/comment.do?method=edit&amp;entryid=");
218             link.append( entry.getId() );
219 
220             StringBuffer sb = new StringBuffer("<a href=\"");            
221             sb.append( link );
222             sb.append("\" onclick=\"window.open('");
223             sb.append( link ).append("','comments','");
224             sb.append("width=480,height=480,scrollbars=yes,status=yes');");
225             sb.append("return false\" class=\"entrycommentslink\">Comments [");
226             sb.append(commentCount).append("]</a>");
227             return sb.toString();
228         }
229         return "";
230     }
231     
232     /** Format date using pattern */
233     public String view( String pattern )
234     {
235         SimpleDateFormat format = new SimpleDateFormat( pattern );
236         return format.format( mDate );
237     }
238     /** Format date using standard format. */
239     public String toString()
240     {
241         return view("EEEE MMMM dd, yyyy");
242     }
243 }
244