MyForums Portlet

Geändert:
 * Inkompatible Verwendung des Tags forum:forum entfernt. Stattdessen lautet das Tag nun forum:forumShortcut

git-svn-id: https://svn.libreccm.org/ccm/trunk@2202 8810af33-2d31-482b-a856-94f89814c4df
master
quasi 2013-06-11 06:36:58 +00:00
parent a97ec7426b
commit ee445f5ddd
1 changed files with 29 additions and 36 deletions

View File

@ -52,8 +52,7 @@ import com.arsdigita.portal.apportlet.AppPortlet;
public class MyForumsPortlet extends Portlet { public class MyForumsPortlet extends Portlet {
public static final String BASE_DATA_OBJECT_TYPE = public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.forum.MyForumsPortlet"; "com.arsdigita.forum.MyForumsPortlet";
protected String getBaseDataObjectType() { protected String getBaseDataObjectType() {
return BASE_DATA_OBJECT_TYPE; return BASE_DATA_OBJECT_TYPE;
@ -63,35 +62,30 @@ public class MyForumsPortlet extends Portlet {
super(dataObject); super(dataObject);
} }
protected AbstractPortletRenderer doGetPortletRenderer() { protected AbstractPortletRenderer doGetPortletRenderer() {
return new MyForumsPortletRenderer(this); return new MyForumsPortletRenderer(this);
} }
} }
class MyForumsPortletRenderer class MyForumsPortletRenderer
extends AbstractPortletRenderer extends AbstractPortletRenderer
implements Constants { implements Constants {
private MyForumsPortlet m_portlet; private MyForumsPortlet m_portlet;
public MyForumsPortletRenderer(MyForumsPortlet public MyForumsPortletRenderer(MyForumsPortlet portlet) {
portlet) {
m_portlet = portlet; m_portlet = portlet;
} }
protected void generateBodyXML(PageState pageState, protected void generateBodyXML(PageState pageState,
Element parent) { Element parent) {
Element content = parent.newChildElement(FORUM_XML_PREFIX + ":myForumsPortlet", Element content = parent.newChildElement(FORUM_XML_PREFIX + ":myForumsPortlet",
FORUM_XML_NS); FORUM_XML_NS);
Party party = Kernel.getContext().getParty(); Party party = Kernel.getContext().getParty();
if (party == null) { if (party == null) {
party = Kernel.getPublicUser(); party = Kernel.getPublicUser();
} }
DataCollection forums = SessionManager.getSession().retrieve(Forum.BASE_DATA_OBJECT_TYPE); DataCollection forums = SessionManager.getSession().retrieve(Forum.BASE_DATA_OBJECT_TYPE);
@ -100,24 +94,23 @@ class MyForumsPortletRenderer
while (forums.next()) { while (forums.next()) {
Forum forum = (Forum)DomainObjectFactory.newInstance(forums.getDataObject()); Forum forum = (Forum) DomainObjectFactory.newInstance(forums.getDataObject());
Element forumEl = content.newChildElement(FORUM_XML_PREFIX + ":forum", FORUM_XML_NS); Element forumEl = content.newChildElement(FORUM_XML_PREFIX + ":forumShortcut", FORUM_XML_NS);
URL url = URL.there(forum, "/", null); URL url = URL.there(forum, "/", null);
forumEl.addAttribute("url", url.toString()); forumEl.addAttribute("url", url.toString());
forumEl.addAttribute("title", forum.getTitle()); forumEl.addAttribute("title", forum.getTitle());
// display last forum update info // display last forum update info
ThreadCollection threads = forum.getThreads(); ThreadCollection threads = forum.getThreads();
threads.addOrder(MessageThread.LAST_UPDATE); threads.addOrder(MessageThread.LAST_UPDATE);
if (threads.next()) { if (threads.next()) {
MessageThread lastUpdatedThread = threads.getMessageThread(); MessageThread lastUpdatedThread = threads.getMessageThread();
forumEl.addAttribute("lastUpdated", new DateFormatter().format(lastUpdatedThread.getLatestUpdateDate())); forumEl.addAttribute("lastUpdated", new DateFormatter().format(lastUpdatedThread.getLatestUpdateDate()));
threads.close(); threads.close();
} else { } else {
forumEl.addAttribute("lastUpdated", ""); forumEl.addAttribute("lastUpdated", "");
} }
} }
} }
} }