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 26 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 42 public WeblogEntryMacros( PageContext ctx, Date date ) 43 { 44 super( ctx, null ); 45 mDate = date; 46 } 47 48 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( getWebsite(), 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 91 public String showEntryDate() 92 { 93 return this.toString(); 94 } 95 96 104 public String showFormattedEntryDate( String format ) 105 { 106 return this.view( format ); 107 } 108 109 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 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 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 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 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&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 233 public String view( String pattern ) 234 { 235 SimpleDateFormat format = new SimpleDateFormat ( pattern ); 236 return format.format( mDate ); 237 } 238 239 public String toString() 240 { 241 return view("EEEE MMMM dd, yyyy"); 242 } 243 } 244 245 | Popular Tags |