001: /*
002: * $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/categorytree/impl/CategoryTreeListenerImpl.java,v 1.28 2008/01/02 10:14:43 tbtrung Exp $
003: * $Author: tbtrung $
004: * $Revision: 1.28 $
005: * $Date: 2008/01/02 10:14:43 $
006: *
007: * ====================================================================
008: *
009: * Copyright (C) 2002-2007 by MyVietnam.net
010: *
011: * All copyright notices regarding mvnForum MUST remain
012: * intact in the scripts and in the outputted HTML.
013: * The "powered by" text/logo with a link back to
014: * http://www.mvnForum.com and http://www.MyVietnam.net in
015: * the footer of the pages MUST remain visible when the pages
016: * are viewed on the internet or intranet.
017: *
018: * This program is free software; you can redistribute it and/or modify
019: * it under the terms of the GNU General Public License as published by
020: * the Free Software Foundation; either version 2 of the License, or
021: * any later version.
022: *
023: * This program is distributed in the hope that it will be useful,
024: * but WITHOUT ANY WARRANTY; without even the implied warranty of
025: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
026: * GNU General Public License for more details.
027: *
028: * You should have received a copy of the GNU General Public License
029: * along with this program; if not, write to the Free Software
030: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
031: *
032: * Support can be obtained from support forums at:
033: * http://www.mvnForum.com/mvnforum/index
034: *
035: * Correspondence and Marketing Questions can be sent to:
036: * info at MyVietnam net
037: *
038: * @author: Phuong Pham Dinh Duy
039: */
040: package com.mvnforum.categorytree.impl;
041:
042: import java.io.IOException;
043: import java.util.Locale;
044:
045: import net.myvietnam.mvncore.exception.DatabaseException;
046: import net.myvietnam.mvncore.service.MvnCoreServiceFactory;
047: import net.myvietnam.mvncore.service.URLResolverService;
048: import net.myvietnam.mvncore.util.I18nUtil;
049: import net.myvietnam.mvncore.web.GenericRequest;
050: import net.myvietnam.mvncore.web.GenericResponse;
051:
052: import com.mvnforum.*;
053: import com.mvnforum.auth.*;
054: import com.mvnforum.categorytree.CategoryTreeEvent;
055: import com.mvnforum.db.CategoryBean;
056: import com.mvnforum.db.ForumBean;
057:
058: import freemarker.cache.ClassTemplateLoader;
059: import freemarker.cache.TemplateLoader;
060: import freemarker.template.*;
061:
062: public class CategoryTreeListenerImpl extends FtlCategoryTreeListener {
063:
064: private GenericRequest request;
065: private GenericResponse response;
066:
067: private OnlineUser onlineUser;
068: private MVNForumPermission permission;
069: private static URLResolverService urlResolver = MvnCoreServiceFactory
070: .getMvnCoreService().getURLResolverService();
071:
072: private static Template template;
073:
074: private boolean flag = false;
075: private Locale locale;
076:
077: private boolean hasReadActiveCurrentForum = false;
078: private boolean hasUnreadActiveCurrentForum = false;
079: private boolean hasReadClosedCurrentForum = false;
080: private boolean hasUnreadClosedCurrentForum = false;
081: private boolean hasReadLockedCurrentForum = false;
082: private boolean hasUnreadLockedCurrentForum = false;
083: private boolean hasReadDisabledCurrentForum = false;
084: private boolean hasUnreadDisabledCurrentForum = false;
085:
086: static {
087: // we want to load template only once but process more times
088: try {
089: Configuration conf = new Configuration();
090: TemplateLoader loader = new ClassTemplateLoader(
091: CategoryTreeListenerImpl.class);
092: conf.setTemplateLoader(loader);
093: template = conf.getTemplate("forummanagement.ftl");
094: } catch (IOException e) {
095: e.printStackTrace();
096: }
097: }
098:
099: public CategoryTreeListenerImpl(GenericRequest request,
100: GenericResponse response) throws AuthenticationException,
101: DatabaseException {
102: this .request = request;
103: this .response = response;
104: onlineUser = OnlineUserManager.getInstance().getOnlineUser(
105: request);
106: permission = onlineUser.getPermission();
107: locale = I18nUtil.getLocaleInRequest(request);
108: init(template);
109: }
110:
111: public String drawHeader(CategoryTreeEvent event) {
112: SimpleHash subRoot = new SimpleHash();
113:
114: subRoot.put("RowType", "header");
115:
116: String name_desc = MVNForumResourceBundle.getString(locale,
117: "mvnforum.common.forum.name_desc");
118: subRoot.put("name_desc", name_desc);
119:
120: String order = MVNForumResourceBundle.getString(locale,
121: "mvnforum.common.order");
122: subRoot.put("order", order);
123:
124: String creation_date = MVNForumResourceBundle.getString(locale,
125: "mvnforum.common.forum.create_date");
126: subRoot.put("creation_date", creation_date);
127:
128: String type = MVNForumResourceBundle.getString(locale,
129: "mvnforum.common.forum.type");
130: subRoot.put("type", type);
131:
132: String mode_moderation = MVNForumResourceBundle.getString(
133: locale, "mvnforum.common.forum.moderation_mode");
134: subRoot.put("mode_moderation", mode_moderation);
135:
136: String add = MVNForumResourceBundle.getString(locale,
137: "mvnforum.common.action.add");
138: subRoot.put("add", add);
139:
140: String group_permission = MVNForumResourceBundle.getString(
141: locale, "mvnforum.common.permission.group_permission");
142: subRoot.put("group_permission", group_permission);
143:
144: String member_permission = MVNForumResourceBundle.getString(
145: locale, "mvnforum.common.permission.member_permission");
146: subRoot.put("member_permission", member_permission);
147:
148: String edit = MVNForumResourceBundle.getString(locale,
149: "mvnforum.common.action.edit");
150: subRoot.put("edit", edit);
151:
152: String delete = MVNForumResourceBundle.getString(locale,
153: "mvnforum.common.action.delete");
154: subRoot.put("delete", delete);
155:
156: rows.add(subRoot);
157:
158: return "";
159: }
160:
161: public String drawFooter(CategoryTreeEvent event) {
162:
163: SimpleHash row = new SimpleHash();
164:
165: boolean checkNoCategory = (event.getDepth() == 0);
166: row.put("checkNoCategory", checkNoCategory);
167: if (checkNoCategory) {
168: String no_category = MVNForumResourceBundle.getString(
169: locale,
170: "mvnforum.user.listforums.table.no_category");
171: row.put("no_category", no_category);
172: }
173:
174: row.put("ContextPath", request.getContextPath());
175: row.put("hasReadActiveCurrentForum", hasReadActiveCurrentForum);
176: row.put("hasUnreadActiveCurrentForum",
177: hasUnreadActiveCurrentForum);
178: row.put("hasReadClosedCurrentForum", hasReadClosedCurrentForum);
179: row.put("hasUnreadClosedCurrentForum",
180: hasUnreadClosedCurrentForum);
181: row.put("hasReadLockedCurrentForum", hasReadLockedCurrentForum);
182: row.put("hasUnreadLockedCurrentForum",
183: hasUnreadLockedCurrentForum);
184: row.put("hasReadDisabledCurrentForum",
185: hasReadDisabledCurrentForum);
186: row.put("hasUnreadDisabledCurrentForum",
187: hasUnreadDisabledCurrentForum);
188:
189: if (hasReadActiveCurrentForum) {
190: String no_new = MVNForumResourceBundle.getString(locale,
191: "mvnforum.common.legend.forum.read_active");
192: row.put("no_new", no_new);
193: }
194: if (hasUnreadActiveCurrentForum) {
195: String has_new = MVNForumResourceBundle.getString(locale,
196: "mvnforum.common.legend.forum.unread_active");
197: row.put("has_new", has_new);
198: }
199: if (hasReadClosedCurrentForum) {
200: String no_new = MVNForumResourceBundle.getString(locale,
201: "mvnforum.common.legend.forum.read_closed");
202: row.put("closed_no_new", no_new);
203: }
204: if (hasUnreadClosedCurrentForum) {
205: String has_new = MVNForumResourceBundle.getString(locale,
206: "mvnforum.common.legend.forum.unread_closed");
207: row.put("closed_has_new", has_new);
208: }
209: if (hasReadLockedCurrentForum) {
210: String no_new = MVNForumResourceBundle.getString(locale,
211: "mvnforum.common.legend.forum.read_locked");
212: row.put("locked_no_new", no_new);
213: }
214: if (hasUnreadLockedCurrentForum) {
215: String has_new = MVNForumResourceBundle.getString(locale,
216: "mvnforum.common.legend.forum.unread_locked");
217: row.put("locked_has_new", has_new);
218: }
219: if (hasReadDisabledCurrentForum) {
220: String no_new = MVNForumResourceBundle.getString(locale,
221: "mvnforum.common.legend.forum.read_disabled");
222: row.put("disabled_no_new", no_new);
223: }
224: if (hasUnreadDisabledCurrentForum) {
225: String has_new = MVNForumResourceBundle.getString(locale,
226: "mvnforum.common.legend.forum.unread_disabled");
227: row.put("disabled_has_new", has_new);
228: }
229:
230: row.put("RowType", "footer");
231: rows.add(row);
232:
233: return "";
234: }
235:
236: public String drawCategory(CategoryTreeEvent event) {
237: SimpleHash subRoot = new SimpleHash();
238: CategoryBean category = (CategoryBean) event.getSource();
239: if (event.hasForum()) {
240: flag = true;
241: }
242:
243: String no_forum_in_category = MVNForumResourceBundle.getString(
244: locale, "mvnforum.admin.forummanagement.no_forum");
245: subRoot.put("no_forum_in_category", no_forum_in_category);
246:
247: subRoot.put("flag", flag);
248: subRoot.put("CatName", category.getCategoryName());
249: subRoot.put("ContextPath", request.getContextPath());
250: subRoot.put("CatOrder",
251: new Integer(category.getCategoryOrder()));
252:
253: String filteredCategoryDesc = MyUtil.filter(category
254: .getCategoryDesc(), false/*html*/, true/*emotion*/,
255: true/*mvnCode*/, true/*newLine*/, true/*URL*/);
256: subRoot.put("FilteredCatDesc", filteredCategoryDesc);
257:
258: String catUpLink = urlResolver.encodeURL(request, response,
259: "updatecategoryorder?category="
260: + category.getCategoryID() + "&action=up",
261: URLResolverService.ACTION_URL);
262: subRoot.put("CatUpLink", catUpLink);
263:
264: String catDownLink = urlResolver
265: .encodeURL(request, response,
266: "updatecategoryorder?category="
267: + category.getCategoryID()
268: + "&action=down",
269: URLResolverService.ACTION_URL);
270: subRoot.put("CatDownLink", catDownLink);
271:
272: subRoot.put("moveUp", MVNForumResourceBundle.getString(locale,
273: "mvnforum.common.order.move_up"));
274: subRoot.put("moveDown", MVNForumResourceBundle.getString(
275: locale, "mvnforum.common.order.move_down"));
276:
277: String gmtCatCreationDate = onlineUser
278: .getGMTTimestampFormat(category
279: .getCategoryCreationDate());
280: subRoot.put("GMTCatCreationDate", gmtCatCreationDate);
281:
282: String add_forum = MVNForumResourceBundle.getString(locale,
283: "mvnforum.admin.addforum.title");
284: subRoot.put("add_forum", add_forum);
285:
286: subRoot.put("CanAddForum", permission.canAddForum());
287: subRoot.put("CanEditCat", permission.canEditCategory());
288:
289: boolean CanDeleteCat = !(event.hasForum() || event
290: .hasSubCategory())
291: && permission.canDeleteCategory();
292: subRoot.put("CanDeleteCat", CanDeleteCat);
293:
294: StringBuffer deleteCathref = new StringBuffer();
295: deleteCathref.append(urlResolver.encodeURL(request, response,
296: "deletecategory?category=" + category.getCategoryID()));
297: subRoot.put("deleteCathref", deleteCathref.toString());
298:
299: String addForumLink = urlResolver.encodeURL(request, response,
300: "addforum?category=" + category.getCategoryID());
301: subRoot.put("AddForumLink", addForumLink);
302:
303: String editCatLink = urlResolver.encodeURL(request, response,
304: "editcategory?category=" + category.getCategoryID());
305: subRoot.put("EditCatLink", editCatLink);
306:
307: String delete = MVNForumResourceBundle.getString(locale,
308: "mvnforum.common.action.delete");
309: subRoot.put("delete", delete);
310:
311: subRoot.put("RowType", "Category");
312:
313: rows.add(subRoot);
314: flag = false;
315:
316: return "";
317: }
318:
319: public String drawForum(CategoryTreeEvent event) {
320:
321: SimpleHash subRoot = new SimpleHash();
322:
323: ForumBean forum = (ForumBean) event.getSource();
324: subRoot.put("ContextPath", request.getContextPath());
325: subRoot
326: .put(
327: "Disabled",
328: (forum.getForumStatus() == ForumBean.FORUM_STATUS_DISABLED));
329: subRoot.put("ForumName", forum.getForumName());
330:
331: String forumIcon = MyUtil.getForumIconName(onlineUser
332: .getLastLogonTimestamp().getTime(), forum
333: .getForumLastPostDate().getTime(), forum
334: .getForumStatus(), forum.getForumThreadCount());
335: subRoot.put("forumIcon", forumIcon);
336:
337: if (forumIcon.equals(MyUtil.FORUM_ICON_READ_ACTIVE)) {
338: hasReadActiveCurrentForum = true;
339: } else if (forumIcon.equals(MyUtil.FORUM_ICON_UNREAD_ACTIVE)) {
340: hasUnreadActiveCurrentForum = true;
341: } else if (forumIcon.equals(MyUtil.FORUM_ICON_READ_CLOSED)) {
342: hasReadClosedCurrentForum = true;
343: } else if (forumIcon.equals(MyUtil.FORUM_ICON_UNREAD_CLOSED)) {
344: hasUnreadClosedCurrentForum = true;
345: } else if (forumIcon.equals(MyUtil.FORUM_ICON_READ_LOCKED)) {
346: hasReadLockedCurrentForum = true;
347: } else if (forumIcon.equals(MyUtil.FORUM_ICON_UNREAD_LOCKED)) {
348: hasUnreadLockedCurrentForum = true;
349: } else if (forumIcon.equals(MyUtil.FORUM_ICON_READ_DISABLED)) {
350: hasReadDisabledCurrentForum = true;
351: } else if (forumIcon.equals(MyUtil.FORUM_ICON_UNREAD_DISABLED)) {
352: hasUnreadDisabledCurrentForum = true;
353: }
354:
355: String filteredForumDesc = MyUtil.filter(forum.getForumDesc(),
356: false/*html*/, true/*emotion*/, true/*mvnCode*/,
357: true/*newLine*/, true/*URL*/);
358: subRoot.put("FilteredForumDesc", filteredForumDesc);
359: subRoot.put("ForumOrder", new Integer(forum.getForumOrder()));
360:
361: String gmtForumCreationDate = onlineUser
362: .getGMTTimestampFormat(forum.getForumCreationDate());
363: subRoot.put("GMTForumCreationDate", gmtForumCreationDate);
364: subRoot.put("ForumTypeName", LocaleMessageUtil
365: .getForumTypeDescFromInt(onlineUser.getLocale(), forum
366: .getForumType()));
367: subRoot.put("ForumModeName", LocaleMessageUtil
368: .getForumModeDescFromInt(onlineUser.getLocale(), forum
369: .getForumModerationMode()));
370: subRoot.put("CanEditForum", permission.canEditForum(forum
371: .getForumID()));
372: subRoot.put("CanAssignForum", permission.canAssignToForum(forum
373: .getForumID()));
374: subRoot.put("CanDeleteForum", permission.canDeleteForum(forum
375: .getForumID()));
376: subRoot.put("CanReadPost", permission.canReadPost(forum
377: .getForumID()));
378:
379: String forumUpLink = urlResolver.encodeURL(request, response,
380: "updateforumorder?forum=" + forum.getForumID()
381: + "&action=up", URLResolverService.ACTION_URL);
382: subRoot.put("ForumUpLink", forumUpLink);
383:
384: String forumDownLink = urlResolver
385: .encodeURL(request, response, "updateforumorder?forum="
386: + forum.getForumID() + "&action=down",
387: URLResolverService.ACTION_URL);
388: subRoot.put("ForumDownLink", forumDownLink);
389:
390: String groupAssignLink = urlResolver.encodeURL(request,
391: response, "assigngrouptoforum?forum="
392: + forum.getForumID());
393: subRoot.put("GroupAssignLink", groupAssignLink);
394:
395: String memberAssignLink = urlResolver.encodeURL(request,
396: response, "assignmembertoforum?forum="
397: + forum.getForumID());
398: subRoot.put("MemberAssignLink", memberAssignLink);
399:
400: String editForumLink = urlResolver.encodeURL(request, response,
401: "editforum?forum=" + forum.getForumID());
402: subRoot.put("EditForumLink", editForumLink);
403:
404: String deleteForumLink = urlResolver.encodeURL(request,
405: response, "deleteforum?forum=" + forum.getForumID());
406: subRoot.put("DeleteForumLink", deleteForumLink);
407:
408: String delete = MVNForumResourceBundle.getString(locale,
409: "mvnforum.common.action.delete");
410: subRoot.put("delete", delete);
411:
412: subRoot.put("RowType", "Forum");
413:
414: rows.add(subRoot);
415:
416: return "";
417: }
418:
419: public String drawSeparator(CategoryTreeEvent event) {
420: return "";
421: }
422:
423: public void setDepthTree(int depth) {
424: //this.depth = depth;
425: }
426: }
|