001: /*
002: * LicenseStep.java
003: *
004: * Version: $Revision: 1.4 $
005: *
006: * Date: $Date: 2006/07/13 23:20:54 $
007: *
008: * Copyright (c) 2002, Hewlett-Packard Company and Massachusetts
009: * Institute of Technology. All rights reserved.
010: *
011: * Redistribution and use in source and binary forms, with or without
012: * modification, are permitted provided that the following conditions are
013: * met:
014: *
015: * - Redistributions of source code must retain the above copyright
016: * notice, this list of conditions and the following disclaimer.
017: *
018: * - Redistributions in binary form must reproduce the above copyright
019: * notice, this list of conditions and the following disclaimer in the
020: * documentation and/or other materials provided with the distribution.
021: *
022: * - Neither the name of the Hewlett-Packard Company nor the name of the
023: * Massachusetts Institute of Technology nor the names of their
024: * contributors may be used to endorse or promote products derived from
025: * this software without specific prior written permission.
026: *
027: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
028: * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
029: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
030: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
031: * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
032: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
033: * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
034: * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
035: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
036: * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
037: * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
038: * DAMAGE.
039: */
040: package org.dspace.app.xmlui.aspect.submission.submit;
041:
042: import java.io.IOException;
043: import java.sql.SQLException;
044: import java.util.Map;
045:
046: import org.apache.avalon.framework.parameters.Parameters;
047: import org.apache.cocoon.ProcessingException;
048: import org.apache.cocoon.environment.SourceResolver;
049: import org.dspace.app.xmlui.utils.UIException;
050: import org.dspace.app.xmlui.aspect.submission.AbstractSubmissionStep;
051: import org.dspace.app.xmlui.wing.Message;
052: import org.dspace.app.xmlui.wing.WingException;
053: import org.dspace.app.xmlui.wing.element.Body;
054: import org.dspace.app.xmlui.wing.element.CheckBox;
055: import org.dspace.app.xmlui.wing.element.Division;
056: import org.dspace.app.xmlui.wing.element.List;
057: import org.dspace.authorize.AuthorizeException;
058: import org.dspace.content.Collection;
059: import org.dspace.license.CreativeCommons;
060: import org.xml.sax.SAXException;
061:
062: /**
063: * This is the last step of the item submission processes. During this
064: * step the user must agree to the collection's standard distribution
065: * license. If the user can not agree to the license they they may either
066: * save the submission untill a later time or remove the submission completely.
067: *
068: * This step will include the full license text inside the page using the
069: * HTML fragment method.
070: *
071: *
072: * @author Scott Phillips
073: * @author Tim Donohue (updated for Configurable Submission)
074: */
075: public class LicenseStep extends AbstractSubmissionStep {
076:
077: /** Language Strings **/
078: protected static final Message T_head = message("xmlui.Submission.submit.LicenseStep.head");
079: protected static final Message T_info1 = message("xmlui.Submission.submit.LicenseStep.info1");
080: protected static final Message T_info2 = message("xmlui.Submission.submit.LicenseStep.info2");
081: protected static final Message T_info3 = message("xmlui.Submission.submit.LicenseStep.info3");
082: protected static final Message T_decision_label = message("xmlui.Submission.submit.LicenseStep.decision_label");
083: protected static final Message T_decision_checkbox = message("xmlui.Submission.submit.LicenseStep.decision_checkbox");
084: protected static final Message T_decision_error = message("xmlui.Submission.submit.LicenseStep.decision_error");
085: protected static final Message T_submit_remove = message("xmlui.Submission.submit.LicenseStep.submit_remove");
086: protected static final Message T_submit_complete = message("xmlui.Submission.submit.LicenseStep.submit_complete");
087:
088: /**
089: * Global reference to Creative Commons license page
090: * (this is used when CC Licensing is enabled in dspace.cfg)
091: **/
092: private CCLicenseStep ccLicenseStep = null;
093:
094: /**
095: * Establish our required parameters, abstractStep will enforce these.
096: */
097: public LicenseStep() {
098: this .requireSubmission = true;
099: this .requireStep = true;
100: }
101:
102: /**
103: * Check if this is actually the creative commons license step
104: */
105: public void setup(SourceResolver resolver, Map objectModel,
106: String src, Parameters parameters)
107: throws ProcessingException, SAXException, IOException {
108: super .setup(resolver, objectModel, src, parameters);
109:
110: //if Creative Commons licensing is enabled, and
111: //we are on the 1st page of Licensing,
112: //then this is the CC License page
113: if (CreativeCommons.isEnabled() && this .getPage() == 1) {
114: ccLicenseStep = new CCLicenseStep();
115: ccLicenseStep.setup(resolver, objectModel, src, parameters);
116: } else
117: ccLicenseStep = null;
118:
119: }
120:
121: public void addBody(Body body) throws SAXException, WingException,
122: UIException, SQLException, IOException, AuthorizeException {
123: // If Creative Commons licensing is enabled,
124: // and we've initialized the CC license Page
125: // then load the CreativeCommons page!
126: if (CreativeCommons.isEnabled() && ccLicenseStep != null) {
127: //add body for CC License page
128: ccLicenseStep.addBody(body);
129: return;
130: }
131:
132: // Get the full text for the actuial licese
133: Collection collection = submission.getCollection();
134: String actionURL = contextPath + "/handle/"
135: + collection.getHandle() + "/submit";
136: String licenseText = collection.getLicense();
137:
138: Division div = body.addInteractiveDivision("submit-license",
139: actionURL, Division.METHOD_POST, "primary submission");
140: div.setHead(T_submission_head);
141: addSubmissionProgressList(div);
142:
143: Division inner = div.addDivision("submit-license-inner");
144: inner.setHead(T_head);
145: inner.addPara(T_info1);
146: inner.addPara(T_info2);
147:
148: // Add the actual text of the license:
149: Division displayLicense = inner.addDivision(
150: "submit-license-standard-text", "license-text");
151: displayLicense.addSimpleHTMLFragment(true, licenseText);
152:
153: inner.addPara(T_info3);
154:
155: List controls = inner.addList("submit-review", List.TYPE_FORM);
156:
157: CheckBox decision = controls.addItem().addCheckBox("decision");
158: decision.setLabel(T_decision_label);
159: decision.addOption("accept", T_decision_checkbox);
160:
161: // If user did not check "I accept" checkbox
162: if (this .errorFlag == org.dspace.submit.step.LicenseStep.STATUS_LICENSE_REJECTED) {
163: decision.addError(T_decision_error);
164: }
165:
166: //add standard control/paging buttons
167: addControlButtons(controls);
168:
169: div.addHidden("submission-continue").setValue(knot.getId());
170: }
171:
172: /**
173: * Each submission step must define its own information to be reviewed
174: * during the final Review/Verify Step in the submission process.
175: * <P>
176: * The information to review should be tacked onto the passed in
177: * List object.
178: * <P>
179: * NOTE: To remain consistent across all Steps, you should first
180: * add a sub-List object (with this step's name as the heading),
181: * by using a call to reviewList.addList(). This sublist is
182: * the list you return from this method!
183: *
184: * @param reviewList
185: * The List to which all reviewable information should be added
186: * @return
187: * The new sub-List object created by this step, which contains
188: * all the reviewable information. If this step has nothing to
189: * review, then return null!
190: */
191: public List addReviewSection(List reviewList) throws SAXException,
192: WingException, UIException, SQLException, IOException,
193: AuthorizeException {
194: //License step doesn't require reviewing
195: return null;
196: }
197: }
|