1 package org.roller.presentation.bookmarks.tags; 2 3 import org.apache.commons.logging.Log; 4 import org.apache.commons.logging.LogFactory; 5 import org.roller.model.BookmarkManager; 6 import org.roller.pojos.BookmarkComparator; 7 import org.roller.pojos.BookmarkData; 8 import org.roller.pojos.FolderData; 9 import org.roller.pojos.UserData; 10 import org.roller.presentation.RollerContext; 11 import org.roller.presentation.RollerRequest; 12 import org.roller.util.Utilities; 13 14 import java.io.IOException ; 15 import java.io.PrintWriter ; 16 import java.net.MalformedURLException ; 17 import java.util.Collection ; 18 import java.util.Enumeration ; 19 import java.util.Hashtable ; 20 import java.util.Iterator ; 21 import java.util.List ; 22 import java.util.Set ; 23 import java.util.Vector ; 24 25 import javax.servlet.http.HttpServletRequest ; 26 import javax.servlet.jsp.JspException ; 27 import javax.servlet.jsp.PageContext ; 28 import javax.servlet.jsp.tagext.Tag ; 29 30 31 46 public class ViewBookmarksTag extends org.roller.presentation.tags.HybridTag 47 { 48 static final long serialVersionUID = -4357415994168654686L; 49 50 private static Log mLogger = 51 LogFactory.getFactory().getInstance(ViewBookmarksTag.class); 52 53 54 public String getFolderName() { return mFolderName; } 55 public void setFolderName(String v) { mFolderName = v; } 56 private String mFolderName = null; 57 58 59 public String getTitle() { return mTitle; } 60 public void setTitle(String v) { mTitle = v; } 61 private String mTitle = null; 62 63 64 public boolean getShowFolderName() { return mShowFolderName; } 65 public void setShowFolderName(boolean v) { mShowFolderName = v; } 66 private boolean mShowFolderName = true; 67 68 69 public boolean getExpandingFolder() { return mExpandingFolder; } 70 public void setExpandingFolder(boolean v) { mExpandingFolder = v; } 71 private boolean mExpandingFolder = false; 72 73 75 public String view( String folderName, String title ) 76 { 77 mFolderName = folderName; 78 mTitle = title; 79 return emit(); 80 } 81 82 public String view( String folderName, boolean showFolderName ) 83 { 84 mFolderName = folderName; 85 mShowFolderName = showFolderName; 86 return emit(); 87 } 88 89 public String view( String folderName, boolean showFolderName, boolean expandingFolder ) 90 { 91 mFolderName = folderName; 92 mShowFolderName = showFolderName; 93 mExpandingFolder = expandingFolder; 94 return emit(); 95 } 96 97 102 public int doStartTag( PrintWriter pw ) throws JspException 103 { 104 try 105 { 106 HttpServletRequest req = 107 (HttpServletRequest )pageContext.getRequest(); 108 RollerRequest rreq = RollerRequest.getRollerRequest(req); 109 BookmarkManager bookmarkMgr = 110 rreq.getRoller().getBookmarkManager(); 111 UserData user = rreq.getUser(); 112 113 FolderData fd = bookmarkMgr.getFolder( 114 rreq.getWebsite(), mFolderName); 115 116 if ( fd == null ) 117 { 118 pw.print("<span class=\"error\">"); 119 pw.print("Error fetching folder named "+mFolderName); 120 pw.print("</span>"); 121 return Tag.SKIP_BODY; 122 } 123 emitFolderHTML( pw, pageContext, fd, user ); 124 return Tag.SKIP_BODY; 125 } 126 catch (Exception e) 127 { 128 mLogger.error("Exception",e); 129 throw new JspException ( 130 e.getClass().toString()+": "+e.getMessage(),e); 131 } 132 } 133 134 public void emitBookmarkHTML( PrintWriter pw, PageContext ctx, 136 BookmarkData bookmark, UserData user ) 137 throws IOException , MalformedURLException 138 { 139 HttpServletRequest request = (HttpServletRequest )ctx.getRequest(); 140 String cpath = request.getContextPath(); 141 142 String resourcePath = request.getContextPath() 143 + RollerContext.getUploadPath(pageContext.getServletContext()) 144 + "/" + user.getUserName(); 145 146 if ( bookmark.getImage()!=null 147 && !bookmark.getImage().trim().equals("") ) 148 { 149 pw.print("<a HREF=\""+bookmark.getUrl()+"\">"); 150 pw.println("<img SRC=\"" 151 + resourcePath + "/" + bookmark.getImage() + "\" " 152 + "alt=\"" + bookmark.getName() + "\" /> " ); 153 pw.println("</a><br />"); 154 } 155 else if ( bookmark.getFeedUrl()!=null 156 && !bookmark.getFeedUrl().trim().equals("") ) 157 { 158 pw.print("<a class=\"rBookmark\" HREF=\""+bookmark.getUrl()+"\""); 159 if ( !bookmark.getDescription().trim().equals("") ) 160 { 161 pw.print(" title=\""+bookmark.getDescription()+"\""); 162 } 163 pw.print(" >"); 164 pw.println( bookmark.getName()+"</a>"); 165 166 pw.println( "<a HREF=\""+bookmark.getFeedUrl()+"\">" ); 167 pw.print ( "<img SRC=\""+cpath+"/images/smrssbadge.gif\" " ); 168 pw.println( "alt=\"URL of site's RSS feed\"" ); 169 pw.println( "class=\"smrssbadge\" /></a>" ); 170 171 pw.println( "<br />" ); 172 } 173 else 174 { 175 pw.print( "<a HREF=\"" ); 176 pw.print( bookmark.getUrl() ); 177 pw.print( "\" " ); 178 pw.print( "class=\"rBookmark" ); 179 pw.print( bookmark.getWeight() ); 180 pw.print( "\" " ); 181 pw.print( "title=\"" ); 182 pw.print( bookmark.getDescription() ); 183 pw.print( "\" >" ); 184 pw.print( bookmark.getName() ); 185 pw.println( "</a><br />" ); 186 } 187 } 188 189 public void emitFolderHTML( PrintWriter pw, PageContext ctx, 191 FolderData folder, UserData user ) 192 throws IOException , MalformedURLException 193 { 194 HttpServletRequest request = (HttpServletRequest )ctx.getRequest(); 195 String cpath = request.getContextPath(); 196 String divId = Utilities.stringReplace( folder.getName(), " ", "_" ); 198 divId = Utilities.stringReplace( divId, "'", "" ); 200 201 if ( mShowFolderName && !mExpandingFolder ) 202 { 203 pw.println( "<div class=\"rFolder\">"+folder.getName()+"</div>" ); 204 } 205 206 if ( mShowFolderName && mExpandingFolder ) 207 { 208 pw.print( "<div class=\"rFolder\"><a HREF=\"javascript:" ); 209 pw.print( "toggleFolder('"+divId+"')\"><span id=\"i"+divId+"\">" ); 210 pw.print( "+</span> "+folder.getName()+"</a></div>" ); 211 pw.println( "<div id=\""+divId+"\" style=\"display: none\">" ); 212 } 213 214 Collection bookmarks = folder.getBookmarks(); 215 Iterator iter = bookmarks.iterator(); 217 while ( iter.hasNext() ) 218 { 219 BookmarkData bookmark = (BookmarkData)iter.next(); 220 emitBookmarkHTML( pw, ctx, bookmark, user ); 221 } 222 223 if (mShowFolderName && mExpandingFolder) 224 { 225 pw.println( "</div>" ); 226 pw.println( "<script type=\"text/javascript\">" ); 227 pw.println( "<!--" ); 228 pw.println( " folderPreference('"+divId+"');" ); 229 pw.println( "// -->"); 230 pw.println( "</script>" ); 231 } 232 } 233 } 234 235 | Popular Tags |