Source code: org/roller/presentation/weblog/tags/WeblogCategoryChooserTag.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.WeblogManager;
7 import org.roller.pojos.UserData;
8 import org.roller.pojos.WeblogCategoryData;
9 import org.roller.presentation.RollerRequest;
10
11 import java.io.PrintWriter;
12 import java.util.Hashtable;
13 import java.util.Iterator;
14 import java.util.List;
15
16 import javax.servlet.http.HttpServletRequest;
17 import javax.servlet.jsp.JspException;
18 import javax.servlet.jsp.tagext.Tag;
19
20
21 /**
22 * @jsp.tag name="WeblogCatagoryChooser"
23 */
24 public class WeblogCategoryChooserTag
25 extends org.roller.presentation.tags.HybridTag
26 {
27 private static Log mLogger =
28 LogFactory.getFactory().getInstance(WeblogCategoryChooserTag.class);
29
30 //-------------------------------------------------------------
31 /**
32 * Process start tag.
33 * @return EVAL_SKIP_BODY
34 */
35 public int doStartTag( PrintWriter pw ) throws JspException
36 {
37 try
38 {
39 HttpServletRequest req =
40 (HttpServletRequest)pageContext.getRequest();
41 RollerRequest rreq = RollerRequest.getRollerRequest(
42 (HttpServletRequest)pageContext.getRequest());
43
44 WeblogManager weblogMgr =
45 rreq.getRoller().getWeblogManager();
46
47 UserData user = rreq.getUser();
48 List weblogCats =
49 weblogMgr.getWeblogCategories( user.getUserName());
50
51 String rawUrl = req.getContextPath()+"/page/"+user.getUserName();
52
53 pw.println("<div class=\"rWeblogCategoryChooser\">");
54
55 Hashtable params = new Hashtable();
56 params.put( RollerRequest.USERNAME_KEY, user.getUserName() );
57 String weblog = RequestUtils.computeURL(
58 pageContext,
59 null, // forward
60 rawUrl, // href
61 null, // page
62 null,
63 params, // params
64 null, // anchor
65 false); // redirect
66 String catClass = "rUnchosenCategory";
67 String chosenCat =
68 req.getParameter(RollerRequest.WEBLOGCATEGORYNAME_KEY);
69 if ( chosenCat != null )
70 {
71 pw.println(
72 "<a href=\""+weblog+"\" class=\""+catClass+"\">"
73 + "All" +
74 "</a>");
75 }
76 else
77 {
78 catClass = "rChosenCategory";
79 pw.println(
80 "<span class=\""+catClass+"\">"
81 + "All" +
82 "</span>");
83 }
84
85 for (Iterator wbcItr = weblogCats.iterator();
86 wbcItr.hasNext(); ) {
87
88 WeblogCategoryData category = (WeblogCategoryData) wbcItr.next();
89 String catName = category.getName();
90
91 params = new Hashtable();
92
93 String pid = pageContext.getRequest().getParameter(
94 RollerRequest.PAGEID_KEY );
95 if (pid != null) params.put( RollerRequest.PAGEID_KEY,pid);
96
97 //params.put( RollerRequest.USERNAME_KEY, user.getUserName() );
98 params.put( RollerRequest.WEBLOGCATEGORYNAME_KEY,
99 catName);
100
101 pw.println(" | ");
102 weblog = RequestUtils.computeURL(
103 pageContext,
104 null, // forward
105 rawUrl, // href
106 null, // page
107 null,
108 params, // params
109 null, // anchor
110 false); // redirect
111
112 catClass = "rUnchosenCategory";
113 chosenCat =
114 req.getParameter(RollerRequest.WEBLOGCATEGORYNAME_KEY);
115 if ( chosenCat != null
116 && chosenCat.equals(catName) )
117 {
118 catClass = "rChosenCategory";
119 pw.println(
120 "<span class=\""+catClass+"\">"
121 + catName +
122 "</span>");
123 }
124 else
125 {
126 pw.println(
127 "<a href=\""+weblog+"\" class=\""+catClass+"\">"
128 + catName +
129 "</a>");
130 }
131 }
132
133 pw.println("</div>");
134 }
135 catch (Exception e)
136 {
137 mLogger.error("Exception",e);
138 throw new JspException(e);
139 }
140 return Tag.SKIP_BODY;
141 }
142 }
143