/* * EditItemStatus.java * * Version: $Revision: 3705 $ * * Date: $Date: 2009-04-11 18:02:24 +0100 (Sat, 11 Apr 2009) $ * * Copyright (c) 2002, Hewlett-Packard Company and Massachusetts * Institute of Technology. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * - Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * - Neither the name of the Hewlett-Packard Company nor the name of the * Massachusetts Institute of Technology nor the names of their * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ package org.dspace.app.xmlui.aspect.administrative.item; import java.sql.SQLException; import org.dspace.app.xmlui.cocoon.AbstractDSpaceTransformer; import org.dspace.app.xmlui.wing.Message; import org.dspace.app.xmlui.wing.WingException; import org.dspace.app.xmlui.wing.element.Body; import org.dspace.app.xmlui.wing.element.Button; import org.dspace.app.xmlui.wing.element.Division; import org.dspace.app.xmlui.wing.element.List; import org.dspace.app.xmlui.wing.element.PageMeta; import org.dspace.authorize.AuthorizeManager; import org.dspace.content.Collection; import org.dspace.content.Item; import org.dspace.core.ConfigurationManager; /** * Display basic meta-meta information about the item and allow the user to change * it's state such as withdraw or reinstate, possibily even completely deleting the item! * * @author Jay Paz * @author Scott Phillips */ public class EditItemStatusForm extends AbstractDSpaceTransformer { /** Language strings */ private static final Message T_dspace_home = message("xmlui.general.dspace_home"); private static final Message T_submit_return = message("xmlui.general.return"); private static final Message T_item_trail = message("xmlui.administrative.item.general.item_trail"); private static final Message T_option_head = message("xmlui.administrative.item.general.option_head"); private static final Message T_option_status = message("xmlui.administrative.item.general.option_status"); private static final Message T_option_bitstreams = message("xmlui.administrative.item.general.option_bitstreams"); private static final Message T_option_metadata = message("xmlui.administrative.item.general.option_metadata"); private static final Message T_option_view = message("xmlui.administrative.item.general.option_view"); private static final Message T_title = message("xmlui.administrative.item.EditItemStatusForm.title"); private static final Message T_trail = message("xmlui.administrative.item.EditItemStatusForm.trail"); private static final Message T_para1 = message("xmlui.administrative.item.EditItemStatusForm.para1"); private static final Message T_label_id = message("xmlui.administrative.item.EditItemStatusForm.label_id"); private static final Message T_label_handle = message("xmlui.administrative.item.EditItemStatusForm.label_handle"); private static final Message T_label_modified = message("xmlui.administrative.item.EditItemStatusForm.label_modified"); private static final Message T_label_in = message("xmlui.administrative.item.EditItemStatusForm.label_in"); private static final Message T_label_page = message("xmlui.administrative.item.EditItemStatusForm.label_page"); private static final Message T_label_auth = message("xmlui.administrative.item.EditItemStatusForm.label_auth"); private static final Message T_label_withdraw = message("xmlui.administrative.item.EditItemStatusForm.label_withdraw"); private static final Message T_label_reinstate = message("xmlui.administrative.item.EditItemStatusForm.label_reinstate"); private static final Message T_label_delete = message("xmlui.administrative.item.EditItemStatusForm.label_delete"); private static final Message T_submit_authorizations = message("xmlui.administrative.item.EditItemStatusForm.submit_authorizations"); private static final Message T_submit_withdraw = message("xmlui.administrative.item.EditItemStatusForm.submit_withdraw"); private static final Message T_submit_reinstate = message("xmlui.administrative.item.EditItemStatusForm.submit_reinstate"); private static final Message T_submit_delete = message("xmlui.administrative.item.EditItemStatusForm.submit_delete"); private static final Message T_na = message("xmlui.administrative.item.EditItemStatusForm.na"); private static final Message T_sysadmins_only = message("xmlui.administrative.item.EditItemStatusForm.sysadmins_only"); public void addPageMeta(PageMeta pageMeta) throws WingException { pageMeta.addMetadata("title").addContent(T_title); pageMeta.addTrailLink(contextPath + "/", T_dspace_home); pageMeta.addTrailLink(contextPath + "/admin/item",T_item_trail); pageMeta.addTrail().addContent(T_trail); } public void addBody(Body body) throws SQLException, WingException { // Get our parameters and state int itemID = parameters.getParameterAsInteger("itemID",-1); Item item = Item.find(context, itemID); String baseURL = contextPath+"/admin/item?administrative-continue="+knot.getId(); // DIVISION: main Division main = body.addInteractiveDivision("edit-item-status", contextPath+"/admin/item", Division.METHOD_POST,"primary administrative edit-item-status"); main.setHead(T_option_head); // LIST: options List options = main.addList("options",List.TYPE_SIMPLE,"horizontal"); options.addItem().addHighlight("bold").addXref(baseURL+"&submit_status",T_option_status); options.addItem().addXref(baseURL+"&submit_bitstreams",T_option_bitstreams); options.addItem().addXref(baseURL+"&submit_metadata",T_option_metadata); options.addItem().addXref(baseURL + "&view_item", T_option_view); // PARA: Helpfull instructions main.addPara(T_para1); // LIST: Item meta-meta information List itemInfo = main.addList("item-info"); itemInfo.addLabel(T_label_id); itemInfo.addItem(String.valueOf(item.getID())); itemInfo.addLabel(T_label_handle); itemInfo.addItem(item.getHandle()==null?"None":item.getHandle()); itemInfo.addLabel(T_label_modified); itemInfo.addItem(item.getLastModified().toString()); itemInfo.addLabel(T_label_in); List subList = itemInfo.addList("collections", List.TYPE_SIMPLE); Collection[] collections = item.getCollections(); for(Collection collection : collections) { subList.addItem(collection.getMetadata("name")); } itemInfo.addLabel(T_label_page); if(item.getHandle()==null){ itemInfo.addItem(T_na); } else{ itemInfo.addItem().addXref(ConfigurationManager.getProperty("dspace.url") + "/handle/" + item.getHandle(),ConfigurationManager.getProperty("dspace.url") + "/handle/" + item.getHandle()); } itemInfo.addLabel(T_label_auth); addAdministratorOnlyButton(itemInfo.addItem(), "submit_authorization", T_submit_authorizations, item); if(!item.isWithdrawn()) { itemInfo.addLabel(T_label_withdraw); //itemInfo.addItem().addButton("submit_withdraw").setValue(T_submit_withdraw); addAdministratorOnlyButton(itemInfo.addItem(), "submit_withdraw", T_submit_withdraw, item); } else { itemInfo.addLabel(T_label_reinstate); //itemInfo.addItem().addButton("submit_reinstate").setValue(T_submit_reinstate); addAdministratorOnlyButton(itemInfo.addItem(), "submit_reinstate", T_submit_reinstate, item); } itemInfo.addLabel(T_label_delete); addAdministratorOnlyButton(itemInfo.addItem(), "submit_delete", T_submit_delete, item); // PARA: main actions main.addPara().addButton("submit_return").setValue(T_submit_return); main.addHidden("administrative-continue").setValue(knot.getId()); } private void addAdministratorOnlyButton(org.dspace.app.xmlui.wing.element.Item item, String buttonName, Message buttonLabel, Item currentItem) throws WingException, SQLException { Button button = item.addButton(buttonName); button.setValue(buttonLabel); if ( ! AuthorizeManager.isAdmin(context) ) { if ( currentItem.canEdit() && ! buttonName.equals("submit_delete") ) { button.setDisabled(); item.addHighlight("fade").addContent(T_sysadmins_only); } } } }