KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > roller > presentation > weblog > tags > WeblogEntryMacros


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 JavaDoc;
15 import java.util.ArrayList JavaDoc;
16 import java.util.Date JavaDoc;
17 import java.util.Hashtable JavaDoc;
18 import java.util.Iterator JavaDoc;
19 import java.util.List JavaDoc;
20
21 import javax.servlet.http.HttpServletRequest JavaDoc;
22 import javax.servlet.jsp.PageContext JavaDoc;
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 JavaDoc 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 JavaDoc ctx, Date JavaDoc date )
43     {
44         super( ctx, null );
45         mDate = date;
46     }
47     
48     //-----------------------------------------------------------------------
49
public List JavaDoc getDayLinkbacks()
50     {
51         List JavaDoc list = new ArrayList JavaDoc();
52         try
53         {
54             List JavaDoc refs = null;
55             
56             Roller roller = getRollerRequest().getRoller();
57             String JavaDoc userName = getRollerRequest().getUser().getUserName();
58             RefererManager refmgr = roller.getRefererManager();
59              
60             refs = refmgr.getReferersToDate( getWebsite(), view("yyyyMMdd") );
61                 
62             for (Iterator JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc showFormattedEntryDate( String JavaDoc 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 JavaDoc showEntryPermalink( WeblogEntryData entry )
119     {
120         HttpServletRequest JavaDoc request = getRollerRequest().getRequest();
121         String JavaDoc userName = getRollerRequest().getUser().getUserName();
122
123         String JavaDoc edit = null;
124         try
125         {
126             if ( getRollerRequest().isUserAuthorizedToEdit() )
127             {
128                 Hashtable JavaDoc params = new Hashtable JavaDoc();
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 JavaDoc e)
137         {
138            // should never happen, but if it does:
139
mLogger.error("ERROR creating Edit-Entry URL",e);
140         }
141
142         StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
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 JavaDoc showDayPermalink()
167     {
168         HttpServletRequest JavaDoc request =
169             (HttpServletRequest JavaDoc)mPageContext.getRequest();
170
171         String JavaDoc userName =
172             RollerRequest.getRollerRequest(request).getUser().getUserName();
173
174         StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
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 JavaDoc showCommentsLink( WeblogEntryData entry )
193     {
194         if (entry.getWebsite().getAllowComments().booleanValue())
195         {
196             HttpServletRequest JavaDoc request =
197                 (HttpServletRequest JavaDoc)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 JavaDoc comments = mgr.getComments( entry.getId() );
206                 commentCount = comments.size();
207             }
208             catch (Exception JavaDoc 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 JavaDoc link = new StringBuffer JavaDoc( request.getContextPath());
217             link.append( "/comment.do?method=edit&amp;entryid=");
218             link.append( entry.getId() );
219
220             StringBuffer JavaDoc sb = new StringBuffer JavaDoc("<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 JavaDoc view( String JavaDoc pattern )
234     {
235         SimpleDateFormat JavaDoc format = new SimpleDateFormat JavaDoc( pattern );
236         return format.format( mDate );
237     }
238     /** Format date using standard format. */
239     public String JavaDoc toString()
240     {
241         return view("EEEE MMMM dd, yyyy");
242     }
243 }
244
245
Popular Tags