Folgende Änderungen im Modul sci-organization:
- Konfigurationsklasse hinzugefügt - SciProject * Description und Funding zusammengefasst * Die Beschreibung kann wie bei ccm-types-article als Datei hochgeladen werden. git-svn-id: https://svn.libreccm.org/ccm/trunk@568 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
8387aa52c4
commit
d0e92f426e
|
|
@ -27,13 +27,6 @@
|
||||||
component="com.arsdigita.cms.contenttypes.ui.SciProjectDescriptionStep"
|
component="com.arsdigita.cms.contenttypes.ui.SciProjectDescriptionStep"
|
||||||
ordering="2"/>
|
ordering="2"/>
|
||||||
|
|
||||||
<ctd:authoring-step
|
|
||||||
labelKey="sciorganization.ui.project_funding.title"
|
|
||||||
labelBundle="com.arsdigita.cms.contenttypes.ui.SciProjectResources"
|
|
||||||
descriptionKey="sciorganization.ui.project_funding.title.funding"
|
|
||||||
component="com.arsdigita.cms.contenttypes.ui.SciProjectFundingStep"
|
|
||||||
ordering="3"/>
|
|
||||||
|
|
||||||
<ctd:include href="/WEB-INF/content-types/assign-categories-step.xml"/>
|
<ctd:include href="/WEB-INF/content-types/assign-categories-step.xml"/>
|
||||||
|
|
||||||
</ctd:authoring-kit>
|
</ctd:authoring-kit>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<registry>
|
<registry>
|
||||||
<!-- <config class="com.arsdigita.cms.SciOrganizationConfig" storage="ccm-sci-types-organization/sciorganizations.properties"/> -->
|
<config class="com.arsdigita.cms.contenttypes.SciOrganizationConfig"
|
||||||
|
storage="ccm-sci-types-organization/sciorganization.properties"/>
|
||||||
</registry>
|
</registry>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,59 @@
|
||||||
|
package com.arsdigita.cms.contenttypes;
|
||||||
|
|
||||||
|
import com.arsdigita.runtime.AbstractConfig;
|
||||||
|
import com.arsdigita.util.parameter.BooleanParameter;
|
||||||
|
import com.arsdigita.util.parameter.Parameter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter
|
||||||
|
*/
|
||||||
|
public class SciOrganizationConfig extends AbstractConfig {
|
||||||
|
|
||||||
|
private final Parameter m_projectFundingHide;
|
||||||
|
private final Parameter m_projectFundingDhtml;
|
||||||
|
private final Parameter m_projectMaterialsHide;
|
||||||
|
private final Parameter m_organizationPersonsHide;
|
||||||
|
|
||||||
|
public SciOrganizationConfig() {
|
||||||
|
m_projectFundingHide = new BooleanParameter(
|
||||||
|
"com.arsdigita.cms.contenttypes.sciproject.funding_hide",
|
||||||
|
Parameter.REQUIRED,
|
||||||
|
Boolean.FALSE);
|
||||||
|
m_projectFundingDhtml = new BooleanParameter(
|
||||||
|
"com.arsdigita.cms.contenttypes.sciproject.funding_dhtml",
|
||||||
|
Parameter.REQUIRED,
|
||||||
|
Boolean.FALSE);
|
||||||
|
m_projectMaterialsHide = new BooleanParameter(
|
||||||
|
"com.arsdigita.cms.contenttypes.sciproject.materials_hide",
|
||||||
|
Parameter.REQUIRED,
|
||||||
|
Boolean.FALSE);
|
||||||
|
m_organizationPersonsHide = new BooleanParameter(
|
||||||
|
"com.arsdigita.cms.contenttypes.sciorganization.persons_hide",
|
||||||
|
Parameter.REQUIRED,
|
||||||
|
Boolean.TRUE);
|
||||||
|
|
||||||
|
register(m_projectFundingHide);
|
||||||
|
register(m_projectFundingDhtml);
|
||||||
|
register(m_projectMaterialsHide);
|
||||||
|
register(m_organizationPersonsHide);
|
||||||
|
|
||||||
|
loadInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
public final boolean getProjectFundingHide() {
|
||||||
|
return (Boolean) get(m_projectFundingHide);
|
||||||
|
}
|
||||||
|
|
||||||
|
public final boolean getProjectFundingDhtml() {
|
||||||
|
return (Boolean) get(m_projectFundingDhtml);
|
||||||
|
}
|
||||||
|
|
||||||
|
public final boolean getProjectMaterialsHide() {
|
||||||
|
return (Boolean) get(m_projectMaterialsHide);
|
||||||
|
}
|
||||||
|
|
||||||
|
public final boolean getOrganizationPersonsHide() {
|
||||||
|
return (Boolean) get(m_organizationPersonsHide);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
com.arsdigita.cms.contenttypes.sciproject.funding_hide.title = Hide funding text input
|
||||||
|
com.arsdigita.cms.contenttypes.sciproject.funding_hide.purpose = Hide the funding text inpu
|
||||||
|
com.arsdigita.cms.contenttypes.sciproject.funding_hide.example = false
|
||||||
|
com.arsdigita.cms.contenttypes.sciproject.funding_hide.format = [boolean]
|
||||||
|
|
||||||
|
com.arsdigita.cms.contenttypes.sciproject.funding_dhtml.title = Toggles the DHTML for funding
|
||||||
|
com.arsdigita.cms.contenttypes.sciproject.funding_dhtml.purpose = Toggles the DHTML editor
|
||||||
|
com.arsdigita.cms.contenttypes.sciproject.funding_dhtml.example = false
|
||||||
|
com.arsdigita.cms.contenttypes.sciproject.funding_dhtml.format = [boolean]
|
||||||
|
|
||||||
|
com.arsdigita.cms.contenttypes.sciproject.materials_hide.title = Hides the step for linking materials with a project
|
||||||
|
com.arsdigita.cms.contenttypes.sciproject.materials_hide.purpose = Hides the step for linking materials with a project
|
||||||
|
com.arsdigita.cms.contenttypes.sciproject.materials_hide.example = false
|
||||||
|
com.arsdigita.cms.contenttypes.sciproject.materials_hide.format = [boolean]
|
||||||
|
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.persons_hide.title = Hides the persons step for SciOrganization
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.persons_hide.purpose = Hides the persons step for SciOrganization
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.persons_hide.example = true
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.persons_hide.format = [boolean]
|
||||||
|
|
@ -48,6 +48,13 @@ public class SciProject extends GenericOrganizationalUnit {
|
||||||
public static final String BASE_DATA_OBJECT_TYPE =
|
public static final String BASE_DATA_OBJECT_TYPE =
|
||||||
"com.arsdigita.cms.contenttypes.SciProject";
|
"com.arsdigita.cms.contenttypes.SciProject";
|
||||||
|
|
||||||
|
private static final SciOrganizationConfig s_config =
|
||||||
|
new SciOrganizationConfig();
|
||||||
|
|
||||||
|
static {
|
||||||
|
s_config.load();
|
||||||
|
}
|
||||||
|
|
||||||
public SciProject() {
|
public SciProject() {
|
||||||
super(BASE_DATA_OBJECT_TYPE);
|
super(BASE_DATA_OBJECT_TYPE);
|
||||||
}
|
}
|
||||||
|
|
@ -68,6 +75,10 @@ public class SciProject extends GenericOrganizationalUnit {
|
||||||
super(type);
|
super(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static final SciOrganizationConfig getConfig() {
|
||||||
|
return s_config;
|
||||||
|
}
|
||||||
|
|
||||||
public Date getBegin() {
|
public Date getBegin() {
|
||||||
return (Date) get(BEGIN);
|
return (Date) get(BEGIN);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,12 @@ package com.arsdigita.cms.contenttypes.ui;
|
||||||
|
|
||||||
import com.arsdigita.bebop.FormData;
|
import com.arsdigita.bebop.FormData;
|
||||||
import com.arsdigita.bebop.FormProcessException;
|
import com.arsdigita.bebop.FormProcessException;
|
||||||
|
import com.arsdigita.bebop.Label;
|
||||||
import com.arsdigita.bebop.PageState;
|
import com.arsdigita.bebop.PageState;
|
||||||
import com.arsdigita.bebop.event.FormInitListener;
|
import com.arsdigita.bebop.event.FormInitListener;
|
||||||
import com.arsdigita.bebop.event.FormProcessListener;
|
import com.arsdigita.bebop.event.FormProcessListener;
|
||||||
import com.arsdigita.bebop.event.FormSectionEvent;
|
import com.arsdigita.bebop.event.FormSectionEvent;
|
||||||
|
import com.arsdigita.bebop.form.TextArea;
|
||||||
import com.arsdigita.bebop.parameters.ParameterModel;
|
import com.arsdigita.bebop.parameters.ParameterModel;
|
||||||
import com.arsdigita.bebop.parameters.StringParameter;
|
import com.arsdigita.bebop.parameters.StringParameter;
|
||||||
import com.arsdigita.cms.ItemSelectionModel;
|
import com.arsdigita.cms.ItemSelectionModel;
|
||||||
|
|
@ -17,23 +19,43 @@ import com.arsdigita.cms.ui.authoring.BasicItemForm;
|
||||||
*
|
*
|
||||||
* @author Jens Pelzetter
|
* @author Jens Pelzetter
|
||||||
*/
|
*/
|
||||||
public class SciProjectEditDescForm
|
public class SciProjectDescriptionEditForm
|
||||||
extends BasicItemForm
|
extends BasicItemForm
|
||||||
implements FormProcessListener,
|
implements FormProcessListener,
|
||||||
FormInitListener {
|
FormInitListener {
|
||||||
|
|
||||||
public SciProjectEditDescForm(ItemSelectionModel itemModel) {
|
public SciProjectDescriptionEditForm(ItemSelectionModel itemModel) {
|
||||||
super("sciprojectEditDescForm", itemModel);
|
super("sciprojectEditDescForm", itemModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void addWidgets() {
|
protected void addWidgets() {
|
||||||
|
add(new Label(SciOrganizationGlobalizationUtil.globalize(
|
||||||
|
"sciorganizazion.ui.project.description")));
|
||||||
ParameterModel descParam = new StringParameter(
|
ParameterModel descParam = new StringParameter(
|
||||||
SciProject.PROJECT_DESCRIPTION);
|
SciProject.PROJECT_DESCRIPTION);
|
||||||
CMSDHTMLEditor desc = new CMSDHTMLEditor(descParam);
|
CMSDHTMLEditor desc = new CMSDHTMLEditor(descParam);
|
||||||
desc.setCols(75);
|
desc.setCols(75);
|
||||||
desc.setRows(25);
|
desc.setRows(25);
|
||||||
add(desc);
|
add(desc);
|
||||||
|
|
||||||
|
|
||||||
|
if (!SciProject.getConfig().getProjectFundingHide()) {
|
||||||
|
add(new Label(SciOrganizationGlobalizationUtil.globalize(
|
||||||
|
"sciorganizazion.ui.project.funding")));
|
||||||
|
ParameterModel fundingParam = new StringParameter(
|
||||||
|
SciProject.FUNDING);
|
||||||
|
TextArea funding;
|
||||||
|
if (SciProject.getConfig().getProjectFundingDhtml()) {
|
||||||
|
funding = new CMSDHTMLEditor(fundingParam);
|
||||||
|
} else {
|
||||||
|
funding = new TextArea(fundingParam);
|
||||||
|
}
|
||||||
|
|
||||||
|
funding.setCols(75);
|
||||||
|
funding.setRows(25);
|
||||||
|
add(funding);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -46,6 +68,9 @@ public class SciProjectEditDescForm
|
||||||
|
|
||||||
data.put(SciProject.PROJECT_DESCRIPTION,
|
data.put(SciProject.PROJECT_DESCRIPTION,
|
||||||
project.getProjectDescription());
|
project.getProjectDescription());
|
||||||
|
if (!SciProject.getConfig().getProjectFundingHide()) {
|
||||||
|
data.put(SciProject.FUNDING, project.getFunding());
|
||||||
|
}
|
||||||
|
|
||||||
setVisible(state, true);
|
setVisible(state, true);
|
||||||
}
|
}
|
||||||
|
|
@ -62,6 +87,10 @@ public class SciProjectEditDescForm
|
||||||
isSelected(state)) {
|
isSelected(state)) {
|
||||||
project.setProjectDescription((String) data.get(
|
project.setProjectDescription((String) data.get(
|
||||||
SciProject.PROJECT_DESCRIPTION));
|
SciProject.PROJECT_DESCRIPTION));
|
||||||
|
if (!SciProject.getConfig().getProjectFundingHide()) {
|
||||||
|
project.setFunding((String) data.get(
|
||||||
|
SciProject.FUNDING));
|
||||||
|
}
|
||||||
|
|
||||||
project.save();
|
project.save();
|
||||||
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.arsdigita.cms.contenttypes.ui;
|
package com.arsdigita.cms.contenttypes.ui;
|
||||||
|
|
||||||
import com.arsdigita.bebop.Component;
|
import com.arsdigita.bebop.Component;
|
||||||
|
import com.arsdigita.bebop.Form;
|
||||||
import com.arsdigita.cms.ItemSelectionModel;
|
import com.arsdigita.cms.ItemSelectionModel;
|
||||||
import com.arsdigita.cms.contenttypes.SciProject;
|
import com.arsdigita.cms.contenttypes.SciProject;
|
||||||
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
|
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
|
||||||
|
|
@ -16,6 +17,7 @@ import com.arsdigita.toolbox.ui.DomainObjectPropertySheet;
|
||||||
public class SciProjectDescriptionStep extends SimpleEditStep {
|
public class SciProjectDescriptionStep extends SimpleEditStep {
|
||||||
|
|
||||||
private String EDIT_PROJECT_DESC_SHEET_NAME = "editProjectDesc";
|
private String EDIT_PROJECT_DESC_SHEET_NAME = "editProjectDesc";
|
||||||
|
private String UPLOAD_PROJECT_DESC_SHEET_NAME = "uploadProjectDesc";
|
||||||
|
|
||||||
public SciProjectDescriptionStep(ItemSelectionModel itemModel,
|
public SciProjectDescriptionStep(ItemSelectionModel itemModel,
|
||||||
AuthoringKitWizard parent) {
|
AuthoringKitWizard parent) {
|
||||||
|
|
@ -27,13 +29,22 @@ public class SciProjectDescriptionStep extends SimpleEditStep {
|
||||||
String prefix) {
|
String prefix) {
|
||||||
super(itemModel, parent, prefix);
|
super(itemModel, parent, prefix);
|
||||||
|
|
||||||
BasicItemForm editDescForm = new SciProjectEditDescForm(itemModel);
|
BasicItemForm editDescForm =
|
||||||
|
new SciProjectDescriptionEditForm(itemModel);
|
||||||
add(EDIT_PROJECT_DESC_SHEET_NAME,
|
add(EDIT_PROJECT_DESC_SHEET_NAME,
|
||||||
(String) SciOrganizationGlobalizationUtil.globalize(
|
(String) SciOrganizationGlobalizationUtil.globalize(
|
||||||
"sciorganization.ui.project.edit_desc").localize(),
|
"sciorganization.ui.project.edit_desc").localize(),
|
||||||
new WorkflowLockedComponentAccess(editDescForm, itemModel),
|
new WorkflowLockedComponentAccess(editDescForm, itemModel),
|
||||||
editDescForm.getSaveCancelSection().getCancelButton());
|
editDescForm.getSaveCancelSection().getCancelButton());
|
||||||
|
|
||||||
|
SciProjectDescriptionUploadForm uploadDescForm =
|
||||||
|
new SciProjectDescriptionUploadForm(itemModel);
|
||||||
|
add(UPLOAD_PROJECT_DESC_SHEET_NAME,
|
||||||
|
(String) SciOrganizationGlobalizationUtil.globalize(
|
||||||
|
"sciorganization.ui.project.upload_desc").localize(),
|
||||||
|
new WorkflowLockedComponentAccess(uploadDescForm, itemModel),
|
||||||
|
uploadDescForm.getSaveCancelSection().getCancelButton());
|
||||||
|
|
||||||
setDisplayComponent(
|
setDisplayComponent(
|
||||||
getSciProjectEditDescSheet(itemModel));
|
getSciProjectEditDescSheet(itemModel));
|
||||||
|
|
||||||
|
|
@ -45,8 +56,11 @@ public class SciProjectDescriptionStep extends SimpleEditStep {
|
||||||
itemModel);
|
itemModel);
|
||||||
|
|
||||||
sheet.add(SciOrganizationGlobalizationUtil.globalize(
|
sheet.add(SciOrganizationGlobalizationUtil.globalize(
|
||||||
"sciorganizaztion.ui.project.desc"),
|
"sciorganization.ui.project.desc"),
|
||||||
SciProject.PROJECT_DESCRIPTION);
|
SciProject.PROJECT_DESCRIPTION);
|
||||||
|
sheet.add(SciOrganizationGlobalizationUtil.globalize(
|
||||||
|
"sciorganization.ui.project.funding"),
|
||||||
|
SciProject.FUNDING);
|
||||||
|
|
||||||
return sheet;
|
return sheet;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,236 @@
|
||||||
|
package com.arsdigita.cms.contenttypes.ui;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.BoxPanel;
|
||||||
|
import com.arsdigita.bebop.Form;
|
||||||
|
import com.arsdigita.bebop.FormProcessException;
|
||||||
|
import com.arsdigita.bebop.Label;
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
import com.arsdigita.bebop.RequestLocal;
|
||||||
|
import com.arsdigita.bebop.SaveCancelSection;
|
||||||
|
import com.arsdigita.bebop.event.FormInitListener;
|
||||||
|
import com.arsdigita.bebop.event.FormProcessListener;
|
||||||
|
import com.arsdigita.bebop.event.FormSectionEvent;
|
||||||
|
import com.arsdigita.bebop.event.FormValidationListener;
|
||||||
|
import com.arsdigita.bebop.form.FormErrorDisplay;
|
||||||
|
import com.arsdigita.bebop.parameters.NotNullValidationListener;
|
||||||
|
import com.arsdigita.bebop.util.GlobalizationUtil;
|
||||||
|
import com.arsdigita.cms.ItemSelectionModel;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciProject;
|
||||||
|
import com.arsdigita.cms.ui.FileUploadSection;
|
||||||
|
import com.arsdigita.globalization.Globalization;
|
||||||
|
import com.arsdigita.kernel.Kernel;
|
||||||
|
import com.arsdigita.mimetypes.MimeType;
|
||||||
|
import com.arsdigita.mimetypes.MimeTypeStatus;
|
||||||
|
import com.arsdigita.mimetypes.TextMimeType;
|
||||||
|
import com.arsdigita.mimetypes.converters.ConvertFormat;
|
||||||
|
import com.arsdigita.util.UncheckedWrapperException;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter
|
||||||
|
*/
|
||||||
|
public class SciProjectDescriptionUploadForm
|
||||||
|
extends Form
|
||||||
|
implements FormInitListener,
|
||||||
|
FormProcessListener,
|
||||||
|
FormValidationListener {
|
||||||
|
|
||||||
|
private ItemSelectionModel m_itemModel;
|
||||||
|
private FileUploadSection m_fileUploadSection;
|
||||||
|
private SaveCancelSection m_saveCancelSection;
|
||||||
|
private RequestLocal m_fileUploadContent;
|
||||||
|
private RequestLocal m_fileUploadContentUsedInso;
|
||||||
|
private Logger s_log = Logger.getLogger(
|
||||||
|
SciProjectDescriptionUploadForm.class);
|
||||||
|
|
||||||
|
public SciProjectDescriptionUploadForm(ItemSelectionModel itemModel) {
|
||||||
|
super("sciprojectUploadDescFrom", new BoxPanel(BoxPanel.VERTICAL));
|
||||||
|
m_itemModel = itemModel;
|
||||||
|
setMethod(Form.POST);
|
||||||
|
setEncType("multipart/form-data");
|
||||||
|
m_fileUploadContent = new RequestLocal();
|
||||||
|
m_fileUploadContentUsedInso = new RequestLocal();
|
||||||
|
addWidgets();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void addWidgets() {
|
||||||
|
add(new Label(SciOrganizationGlobalizationUtil.globalize(
|
||||||
|
"sciorganization.ui.project.description.upload")));
|
||||||
|
m_fileUploadSection = new FileUploadSection(
|
||||||
|
SciOrganizationGlobalizationUtil.globalize(
|
||||||
|
"sciorganization.ui.project.description.upload.mimetype"),
|
||||||
|
"mime",
|
||||||
|
"text/plain");
|
||||||
|
m_fileUploadSection.getFileUploadWidget().addValidationListener(
|
||||||
|
new NotNullValidationListener());
|
||||||
|
m_fileUploadSection.getMimeTypeWidget().setDefaultValue(
|
||||||
|
FileUploadSection.GUESS_MIME);
|
||||||
|
add(m_fileUploadSection);
|
||||||
|
|
||||||
|
m_saveCancelSection = new SaveCancelSection();
|
||||||
|
add(m_saveCancelSection);
|
||||||
|
|
||||||
|
add(new FormErrorDisplay(this));
|
||||||
|
|
||||||
|
this.addValidationListener(this);
|
||||||
|
this.addProcessListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the save/cancel section for this form
|
||||||
|
*/
|
||||||
|
public SaveCancelSection getSaveCancelSection() {
|
||||||
|
return m_saveCancelSection;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(FormSectionEvent fse) throws FormProcessException {
|
||||||
|
PageState state = fse.getPageState();
|
||||||
|
|
||||||
|
setVisible(state, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validate file upload
|
||||||
|
* @param e
|
||||||
|
* @throws FormProcessException
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void validate(FormSectionEvent e) throws FormProcessException {
|
||||||
|
|
||||||
|
MimeType mime = m_fileUploadSection.getMimeType(e);
|
||||||
|
boolean textType = mime.getPrefix().equals(TextMimeType.TEXT_PREFIX);
|
||||||
|
|
||||||
|
validateFileType(mime, textType);
|
||||||
|
|
||||||
|
// Convert the file to HTML, if possible
|
||||||
|
File file = m_fileUploadSection.getFile(e);
|
||||||
|
byte[] file_bytes = readFileBytes(file);
|
||||||
|
boolean[] used_inso = new boolean[1];
|
||||||
|
String file_content = convertBytes(file_bytes, textType, used_inso);
|
||||||
|
|
||||||
|
if (TextMimeType.MIME_TEXT_HTML.equals(mime.getMimeType())) {
|
||||||
|
file_content = extractHTMLBody(file_content);
|
||||||
|
}
|
||||||
|
|
||||||
|
PageState state = e.getPageState();
|
||||||
|
m_fileUploadContent.set(state, file_content);
|
||||||
|
m_fileUploadContentUsedInso.set(state, used_inso[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void process(FormSectionEvent fse) throws FormProcessException {
|
||||||
|
s_log.debug("Processing upload...");
|
||||||
|
PageState state = fse.getPageState();
|
||||||
|
//File file = m_fileUploadSection.getFile(fse);
|
||||||
|
SciProject project = (SciProject) m_itemModel.getSelectedObject(state);
|
||||||
|
|
||||||
|
String uploadContent = (String) m_fileUploadContent.get(state);
|
||||||
|
//boolean usedInso = (Boolean) m_fileUploadContentUsedInso.get(state);
|
||||||
|
|
||||||
|
s_log.debug(String.format("Setting project description to: %s",
|
||||||
|
uploadContent));
|
||||||
|
project.setProjectDescription(uploadContent);
|
||||||
|
s_log.debug("Saving project.");
|
||||||
|
project.save();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validateFileType(MimeType mime, boolean textType)
|
||||||
|
throws FormProcessException {
|
||||||
|
|
||||||
|
boolean validType = textType || ((mime instanceof TextMimeType) && ((TextMimeType) mime).
|
||||||
|
allowINSOConvert().booleanValue());
|
||||||
|
|
||||||
|
if (!validType) {
|
||||||
|
throw new FormProcessException("Cannot load " + "files of type " + mime.
|
||||||
|
getMimeType() + " into the article body.");
|
||||||
|
} else {
|
||||||
|
boolean insoWorks = MimeTypeStatus.getMimeTypeStatus().
|
||||||
|
getInsoFilterWorks().intValue() == 1;
|
||||||
|
|
||||||
|
if (!textType && !insoWorks) {
|
||||||
|
// Can't convert. inso filter is not working. Give message.
|
||||||
|
throw new FormProcessException(
|
||||||
|
"Could not convert to html "
|
||||||
|
+ "format because interMedia INSO filter is not installed.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* read in the content of the file (in bytes).
|
||||||
|
*/
|
||||||
|
private byte[] readFileBytes(File file) throws FormProcessException {
|
||||||
|
byte[] file_bytes;
|
||||||
|
try {
|
||||||
|
FileInputStream fs = new FileInputStream(file);
|
||||||
|
file_bytes = new byte[fs.available()];
|
||||||
|
fs.read(file_bytes);
|
||||||
|
fs.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new FormProcessException(
|
||||||
|
((String) GlobalizationUtil.globalize(
|
||||||
|
"cms.ui.authoring.unable_to_load_file").
|
||||||
|
localize()).concat(e.getMessage()));
|
||||||
|
}
|
||||||
|
return file_bytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert bytes to String, possibly using INSO filter to convert to
|
||||||
|
* HTML type
|
||||||
|
*/
|
||||||
|
private String convertBytes(byte[] file_bytes, boolean text_type,
|
||||||
|
boolean[] used_inso)
|
||||||
|
throws FormProcessException {
|
||||||
|
String file_content;
|
||||||
|
// If mime type is not text type, try to convert to html
|
||||||
|
if (!text_type) {
|
||||||
|
file_content = ConvertFormat.toHTML(file_bytes);
|
||||||
|
if (file_content != null) {
|
||||||
|
// Converted successfully, flag type should be html
|
||||||
|
used_inso[0] = true;
|
||||||
|
} else {
|
||||||
|
throw new FormProcessException(
|
||||||
|
"Could not convert to html format. "
|
||||||
|
+ "interMedia INSO filter conversion failed.");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Text type, no need to convert
|
||||||
|
String enc = Globalization.getDefaultCharset(Kernel.getContext().
|
||||||
|
getLocale());
|
||||||
|
try {
|
||||||
|
file_content = new String(file_bytes, enc);
|
||||||
|
} catch (UnsupportedEncodingException ex) {
|
||||||
|
throw new UncheckedWrapperException("cannot convert to encoding "
|
||||||
|
+ enc, ex);
|
||||||
|
}
|
||||||
|
used_inso[0] = false;
|
||||||
|
}
|
||||||
|
return file_content;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extract the contents of the html Body tag.
|
||||||
|
* (Done to prevent base and other header tags
|
||||||
|
* from interfering with page display).
|
||||||
|
*/
|
||||||
|
private String extractHTMLBody(String htmlText)
|
||||||
|
throws FormProcessException {
|
||||||
|
String lc = htmlText.toLowerCase();
|
||||||
|
int bodyStart = lc.indexOf("<body");
|
||||||
|
int bodyStart_v = lc.indexOf(">", bodyStart);
|
||||||
|
int bodyEnd = lc.indexOf("</body>", bodyStart_v);
|
||||||
|
if (bodyStart == -1 || bodyEnd == -1) {
|
||||||
|
final String errMsg =
|
||||||
|
"The file (which should be type "
|
||||||
|
+ "HTML) is missing the <body> or </body> tag.";
|
||||||
|
throw new FormProcessException(errMsg);
|
||||||
|
}
|
||||||
|
return htmlText.substring(bodyStart_v + 1, bodyEnd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,67 +0,0 @@
|
||||||
package com.arsdigita.cms.contenttypes.ui;
|
|
||||||
|
|
||||||
import com.arsdigita.bebop.FormData;
|
|
||||||
import com.arsdigita.bebop.FormProcessException;
|
|
||||||
import com.arsdigita.bebop.PageState;
|
|
||||||
import com.arsdigita.bebop.event.FormInitListener;
|
|
||||||
import com.arsdigita.bebop.event.FormProcessListener;
|
|
||||||
import com.arsdigita.bebop.event.FormSectionEvent;
|
|
||||||
import com.arsdigita.bebop.parameters.ParameterModel;
|
|
||||||
import com.arsdigita.bebop.parameters.StringParameter;
|
|
||||||
import com.arsdigita.cms.ItemSelectionModel;
|
|
||||||
import com.arsdigita.cms.contenttypes.SciProject;
|
|
||||||
import com.arsdigita.cms.ui.CMSDHTMLEditor;
|
|
||||||
import com.arsdigita.cms.ui.authoring.BasicItemForm;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author Jens Pelzetter
|
|
||||||
*/
|
|
||||||
public class SciProjectFundingForm
|
|
||||||
extends BasicItemForm
|
|
||||||
implements FormProcessListener,
|
|
||||||
FormInitListener {
|
|
||||||
|
|
||||||
public SciProjectFundingForm(ItemSelectionModel itemModel) {
|
|
||||||
super("sciprojectEditFundingForm", itemModel);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void addWidgets() {
|
|
||||||
ParameterModel fundingParam = new StringParameter(
|
|
||||||
SciProject.FUNDING);
|
|
||||||
CMSDHTMLEditor funding = new CMSDHTMLEditor(fundingParam);
|
|
||||||
funding.setCols(75);
|
|
||||||
funding.setRows(25);
|
|
||||||
add(funding);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void init(FormSectionEvent fse) throws FormProcessException {
|
|
||||||
PageState state = fse.getPageState();
|
|
||||||
|
|
||||||
FormData data = fse.getFormData();
|
|
||||||
SciProject project = (SciProject) getItemSelectionModel().
|
|
||||||
getSelectedObject(state);
|
|
||||||
|
|
||||||
data.put(SciProject.FUNDING, project.getFunding());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void process(FormSectionEvent fse) throws FormProcessException {
|
|
||||||
PageState state = fse.getPageState();
|
|
||||||
|
|
||||||
FormData data = fse.getFormData();
|
|
||||||
SciProject project = (SciProject) getItemSelectionModel().
|
|
||||||
getSelectedObject(state);
|
|
||||||
|
|
||||||
if ((project != null) && this.getSaveCancelSection().getSaveButton().
|
|
||||||
isSelected(state)) {
|
|
||||||
project.setFunding((String) data.get(SciProject.FUNDING));
|
|
||||||
|
|
||||||
project.save();
|
|
||||||
|
|
||||||
init(fse);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
||||||
package com.arsdigita.cms.contenttypes.ui;
|
|
||||||
|
|
||||||
import com.arsdigita.bebop.Component;
|
|
||||||
import com.arsdigita.cms.ItemSelectionModel;
|
|
||||||
import com.arsdigita.cms.contenttypes.SciProject;
|
|
||||||
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
|
|
||||||
import com.arsdigita.cms.ui.authoring.BasicItemForm;
|
|
||||||
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
|
|
||||||
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
|
|
||||||
import com.arsdigita.toolbox.ui.DomainObjectPropertySheet;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author Jens Pelzetter
|
|
||||||
*/
|
|
||||||
public class SciProjectFundingStep extends SimpleEditStep {
|
|
||||||
|
|
||||||
private String EDIT_FUNDING_SHEET_NAME = "editFunding";
|
|
||||||
|
|
||||||
public SciProjectFundingStep(ItemSelectionModel itemModel,
|
|
||||||
AuthoringKitWizard parent) {
|
|
||||||
this(itemModel, parent, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public SciProjectFundingStep(ItemSelectionModel itemModel,
|
|
||||||
AuthoringKitWizard parent,
|
|
||||||
String prefix) {
|
|
||||||
super(itemModel, parent, prefix);
|
|
||||||
|
|
||||||
BasicItemForm editFundingForm = new SciProjectFundingForm(itemModel);
|
|
||||||
add(EDIT_FUNDING_SHEET_NAME,
|
|
||||||
(String) SciOrganizationGlobalizationUtil.globalize(
|
|
||||||
"sciorganization.ui.project.edit_funding").localize(),
|
|
||||||
new WorkflowLockedComponentAccess(editFundingForm, itemModel),
|
|
||||||
editFundingForm.getSaveCancelSection().getCancelButton());
|
|
||||||
|
|
||||||
setDisplayComponent(
|
|
||||||
getSciProjectFundingSheet(itemModel));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Component getSciProjectFundingSheet(
|
|
||||||
ItemSelectionModel itemModel) {
|
|
||||||
DomainObjectPropertySheet sheet = new DomainObjectPropertySheet(
|
|
||||||
itemModel);
|
|
||||||
|
|
||||||
sheet.add(SciOrganizationGlobalizationUtil.globalize(
|
|
||||||
"sciorganization.ui.project.funding"),
|
|
||||||
SciProject.FUNDING);
|
|
||||||
|
|
||||||
return sheet;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -14,7 +14,6 @@ import com.arsdigita.bebop.parameters.ParameterModel;
|
||||||
import com.arsdigita.bebop.parameters.StringParameter;
|
import com.arsdigita.bebop.parameters.StringParameter;
|
||||||
import com.arsdigita.cms.ItemSelectionModel;
|
import com.arsdigita.cms.ItemSelectionModel;
|
||||||
import com.arsdigita.cms.contenttypes.SciProject;
|
import com.arsdigita.cms.contenttypes.SciProject;
|
||||||
import com.arsdigita.cms.ui.CMSDHTMLEditor;
|
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.GregorianCalendar;
|
import java.util.GregorianCalendar;
|
||||||
|
|
||||||
|
|
@ -64,27 +63,9 @@ public class SciProjectPropertyForm
|
||||||
ParameterModel shortDescParam = new StringParameter(
|
ParameterModel shortDescParam = new StringParameter(
|
||||||
SciProject.PROJECT_SHORT_DESCRIPTION);
|
SciProject.PROJECT_SHORT_DESCRIPTION);
|
||||||
TextArea shortDesc = new TextArea(shortDescParam);
|
TextArea shortDesc = new TextArea(shortDescParam);
|
||||||
shortDesc.setCols(60);
|
shortDesc.setCols(75);
|
||||||
shortDesc.setRows(20);
|
shortDesc.setRows(5);
|
||||||
add(shortDesc);
|
add(shortDesc);
|
||||||
|
|
||||||
/*add(new Label(SciOrganizationGlobalizationUtil.globalize(
|
|
||||||
"sciorganization.ui.project.description")));
|
|
||||||
ParameterModel descParam = new StringParameter(
|
|
||||||
SciProject.PROJECT_DESCRIPTION);
|
|
||||||
CMSDHTMLEditor desc = new CMSDHTMLEditor(descParam);
|
|
||||||
desc.setCols(75);
|
|
||||||
desc.setRows(25);
|
|
||||||
add(desc);*/
|
|
||||||
|
|
||||||
/*add(new Label(SciOrganizationGlobalizationUtil.globalize(
|
|
||||||
"sciorganization.ui.project.funding")));
|
|
||||||
ParameterModel fundingParam = new StringParameter(
|
|
||||||
SciProject.FUNDING);
|
|
||||||
CMSDHTMLEditor funding = new CMSDHTMLEditor(fundingParam);
|
|
||||||
funding.setCols(60);
|
|
||||||
funding.setRows(18);
|
|
||||||
add(funding);*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue