libreccm-legacy/ccm-cms/src/com/arsdigita/cms/portlet/ContentItemPortlet.java

171 lines
5.9 KiB
Java
Executable File

/*
* Copyright (C) 2003-2004 Red Hat Inc. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.portlet;
import com.arsdigita.bebop.RequestLocal;
import com.arsdigita.bebop.portal.AbstractPortletRenderer;
import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.ui.portlet.ContentItemPortletEditor;
import com.arsdigita.cms.ui.portlet.ContentItemPortletRenderer;
import com.arsdigita.domain.DomainObject;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.kernel.ACSObjectInstantiator;
import com.arsdigita.kernel.ResourceType;
import com.arsdigita.kernel.ResourceTypeConfig;
import com.arsdigita.kernel.ui.ResourceConfigFormSection;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.portal.Portlet;
import com.arsdigita.portal.PortletType;
import org.apache.log4j.Logger;
public class ContentItemPortlet extends Portlet {
/** Private logger instance for this class. */
private static final Logger s_log = Logger.getLogger(ContentItemPortlet.class);
public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.cms.portlet.ContentItemPortlet";
public static final String ITEM = "item";
public ContentItemPortlet(DataObject dataObject) {
super(dataObject);
}
protected String getBaseDataObjectType() {
return BASE_DATA_OBJECT_TYPE;
}
public ContentItem getContentItem() {
return (ContentItem) DomainObjectFactory.newInstance
((DataObject) get(ITEM));
}
public void setContentItem(ContentItem item) {
setAssociation(ITEM, item);
}
public AbstractPortletRenderer doGetPortletRenderer() {
return new ContentItemPortletRenderer(this);
}
/**
* Load the portlet type into database. Part of the non-recurring loader
* step as part of the installation.
*
* Usage: in loader.run(final ScriptContext ctx):
* ContentItemPortlet.loadPortletType();
*/
public static void loadPortletType()
{
PortletType type = PortletType
.createPortletType("Content Item",
PortletType.WIDE_PROFILE,
ContentItemPortlet.BASE_DATA_OBJECT_TYPE);
type.setDescription("Displays the body of a content item");
s_log.info("Loading portlet type " + type);
}
/**
* Reccurring initialization of the portlet each time ccm starts.
*
* It registers an object instantiator with the portal infrastructure.
* Usage: in initialize.init(domainInitEvent):
* ContentItemPortlet.initPortlet();
*/
public static void initPortlet()
{
// register instantiator
DomainObjectFactory.registerInstantiator(BASE_DATA_OBJECT_TYPE,
new ACSObjectInstantiator()
{
public DomainObject doNewInstance(DataObject dataObject)
{
return new ContentItemPortlet(dataObject);
}
});
new ResourceTypeConfig(BASE_DATA_OBJECT_TYPE)
{
public ResourceConfigFormSection getCreateFormSection(
final ResourceType resType,
final RequestLocal parentAppRL)
{
return new ContentItemPortletEditor(resType, parentAppRL);
}
public ResourceConfigFormSection getModifyFormSection(
final RequestLocal application)
{
return new ContentItemPortletEditor(application);
}
};
}
// Alternative way to load and initialize a portlet using class PortletSetup.
// It performs the loading step as well as the registerInstantiator step in
// one class and can be used by the loader as well as the initializer. Was
// especially useful in the old initializer system where the loading step and
// the recurring initialization step were not separated.
//
// private void loadContentItemPortlet() {
//
// PortletSetup setup = new PortletSetup(s_log);
// setup.setPortletObjectType(ContentItemPortlet.BASE_DATA_OBJECT_TYPE);
// setup.setTitle("Content Item");
// setup.setDescription("Displays the body of a content item");
// setup.setProfile(PortletType.WIDE_PROFILE);
//
// setup.setInstantiator(new ACSObjectInstantiator() {
// protected DomainObject doNewInstance(DataObject dataObject) {
// return new ContentItemPortlet(dataObject);
// }
// });
// setup.run();
//
// new ResourceTypeConfig(ContentItemPortlet.BASE_DATA_OBJECT_TYPE) {
// public ResourceConfigFormSection getCreateFormSection
// (final ResourceType resType, final RequestLocal parentAppRL) {
// final ResourceConfigFormSection config =
// new ContentItemPortletEditor(resType, parentAppRL);
//
// return config;
// }
//
// public ResourceConfigFormSection getModifyFormSection
// (final RequestLocal application) {
// final ContentItemPortletEditor config =
// new ContentItemPortletEditor(application);
//
// return config;
// }
// };
//
// }
}