diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/contenttypes/AbstractTextUploadForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/contenttypes/AbstractTextUploadForm.java deleted file mode 100644 index 4839dbaae..000000000 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/contenttypes/AbstractTextUploadForm.java +++ /dev/null @@ -1,296 +0,0 @@ -/* - * Copyright (C) 2019 LibreCCM Foundation. - * - * 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., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.cms.ui.contenttypes; - -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.ui.FileUploadSection; -import com.arsdigita.globalization.Globalization; -import com.arsdigita.globalization.GlobalizedMessage; -import com.arsdigita.util.UncheckedWrapperException; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.awt.image.Kernel; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.nio.charset.StandardCharsets; - -import javax.activation.MimeType; - -/** - * - * @author Jens Pelzetter - */ -/** - *
- * An abstract base form for uploading Texts. The code of this class has been - * extracted from {@link TextAssetBody}, the form for editing an TextAsset (used - * for example for Article). The TextAsset has the disadvantage of storing its - * information in a separate table, so that information of a content item is - * spread over several tables. - *
- *- * To use this form, define a property for your object which has the Java type - * String and the database type CLOB, like this: - *
- *- * String[0..1] text = ct_yourContenttype.text CLOB - *- *
- * To use this form your have to overwrite three methods: - *
- *
- * This method is called to pass the uploaded text to the edited object. In
- * the method, you have to retrieve the current selected object from the
- * itemModel parameter and call the appropriate
- * set of your class, and its save method. An simple example:
- *
- * @Override
- * public void setText(ItemSelectionModel itemModel,
- * PageState state,
- * String text) {
- * YourContentType obj = (YourContentType) itemModel.getSelectedObject(state);
- * obj.setText(text);
- * obj.save();
- * }
- *
- *
- * @param itemModel The {@link ItemSelectionModel} used by the form.
- * @param state The current {@link PageState}.
- * @param text The uploaded text.
- */
- public abstract void setText(ItemSelectionModel itemModel,
- PageState state,
- String text);
-
- protected void addWidgets() {
- add(new Label(getLabelText()));
- fileUploadSection = new FileUploadSection(
- getMimeTypeLabel(),
- "mime",
- "text/plain");
- fileUploadSection.getFileUploadWidget().addValidationListener(
- new NotNullValidationListener());
- fileUploadSection.getMimeTypeWidget().setDefaultValue(
- FileUploadSection.GUESS_MIME);
- add(fileUploadSection);
-
- saveCancelSection = new SaveCancelSection();
- add(saveCancelSection);
-
- add(new FormErrorDisplay(this));
-
- addValidationListener(this);
- addProcessListener(this);
- }
-
- /**
- * @return the save/cancel section for this form
- */
- public SaveCancelSection getSaveCancelSection() {
- return saveCancelSection;
- }
-
- @Override
- public void init(final FormSectionEvent event) throws FormProcessException {
- final PageState state = event.getPageState();
-
- setVisible(state, true);
- }
-
- /**
- * Validate file upload
- *
- * @param event
- *
- * @throws FormProcessException
- */
- @Override
- public void validate(final FormSectionEvent event) throws
- FormProcessException {
-
- final MimeType mime = fileUploadSection.getMimeType(event);
- boolean textType = mime.getPrimaryType().equals("text");
-
- validateFileType(mime, textType);
-
- // Convert the file to HTML, if possible
- final File file = fileUploadSection.getFile(event);
- byte[] file_bytes = readFileBytes(file);
- boolean[] used_inso = new boolean[1];
- String file_content = convertBytes(file_bytes, textType, used_inso);
-
- if ("text/html".equals(mime.toString())) {
- file_content = extractHTMLBody(file_content);
- }
-
- final PageState state = event.getPageState();
- fileUploadContent.set(state, file_content);
- fileUploadContentUsedInso.set(state, used_inso[0]);
- }
-
- @Override
- public void process(final FormSectionEvent event)
- throws FormProcessException {
- LOGGER.debug("Processing upload...");
- final PageState state = event.getPageState();
- //File file = fileUploadSection.getFile(fse);
- //SciProject project = (SciProject) itemModel.getSelectedObject(state);
-
- final String uploadContent = (String) fileUploadContent.get(state);
- //boolean usedInso = (Boolean) fileUploadContentUsedInso.get(state);
-
- LOGGER.debug(String.format("Setting project description to: %s",
- uploadContent));
- //project.setProjectDescription(uploadContent);
- LOGGER.debug("Saving project.");
- //project.save();
- setText(itemModel, state, uploadContent);
- }
-
- private void validateFileType(final MimeType mime, final boolean textType)
- throws FormProcessException {
-
- boolean validType = textType;
-
- if (!validType) {
- throw new FormProcessException(GlobalizationUtil.globalize(
- "cms.ui.authoring.invalid_file_type"));
- }
- }
-
- /**
- * read in the content of the file (in bytes).
- */
- private byte[] readFileBytes(final File file) throws FormProcessException {
- final byte[] fileBytes;
- try (FileInputStream fileInputStream = new FileInputStream(file)) {
- fileBytes = new byte[fileInputStream.available()];
- fileInputStream.read(fileBytes);
- } catch (IOException ex) {
- throw new FormProcessException(GlobalizationUtil.globalize(
- "cms.ui.authoring.unable_to_load_file"));
- }
- return fileBytes;
- }
-
- /**
- * Convert bytes to String, possibly using INSO filter to convert to HTML
- * type
- */
- private String convertBytes(final byte[] fileBytes,
- final boolean textType,
- final boolean[] usedInso)
- throws FormProcessException {
-
- return new String(fileBytes, StandardCharsets.UTF_8);
- }
-
- /**
- * Extract the contents of the html Body tag. (Done to prevent base and
- * other header tags from interfering with page display).
- */
- private String extractHTMLBody(final String htmlText)
- throws FormProcessException {
-
- final String lc = htmlText.toLowerCase();
- final int bodyStart = lc.indexOf("", bodyStart);
- final int bodyEnd = lc.indexOf("", bodyStart_v);
- if (bodyStart == -1 || bodyEnd == -1) {
- throw new FormProcessException(GlobalizationUtil.globalize(
- "cms.ui.authoring.html_file_missing_body_tags"));
- }
- return htmlText.substring(bodyStart_v + 1, bodyEnd);
- }
-
-}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/contenttypes/EventCreateForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/contenttypes/EventCreateForm.java
deleted file mode 100644
index 2dcfe31bd..000000000
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/contenttypes/EventCreateForm.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2017 LibreCCM Foundation.
- *
- * 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., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.cms.ui.contenttypes;
-
-import com.arsdigita.bebop.FormData;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.form.Date;
-import com.arsdigita.bebop.parameters.NotEmptyValidationListener;
-import com.arsdigita.bebop.parameters.StringParameter;
-import com.arsdigita.cms.ItemSelectionModel;
-import com.arsdigita.cms.ui.authoring.CreationSelector;
-import com.arsdigita.cms.ui.authoring.PageCreateForm;
-import com.arsdigita.globalization.GlobalizedMessage;
-
-import org.librecms.CmsConstants;
-import org.librecms.contentsection.ContentItemInitializer;
-import org.librecms.contenttypes.Event;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class EventCreateForm extends PageCreateForm {
-
- private static final String START_DATE = "startDate";
-
- private Date startDate;
-
- public EventCreateForm(final ItemSelectionModel itemSelectionModel,
- final CreationSelector creationSelector,
- final StringParameter selectedLanguageParam) {
-
- super(itemSelectionModel, creationSelector, selectedLanguageParam);
- }
-
- @Override
- protected void addWidgets() {
-
- super.addWidgets();
-
- add(new Label(new GlobalizedMessage(
- "cms.contenttypes.ui.event.start_date",
- CmsConstants.CMS_BUNDLE)));
- startDate = new Date(START_DATE);
- startDate.addValidationListener(new NotEmptyValidationListener());
- add(startDate);
- }
-
- @Override
- protected ContentItemInitializer> getItemInitializer(
- final FormData data, final PageState state) {
-
- return item -> ((Event) item)
- .setStartDate((java.util.Date) startDate.getValue(state));
- }
-
-}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/contenttypes/NewsCreateForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/contenttypes/NewsCreateForm.java
deleted file mode 100644
index 89f314ade..000000000
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/contenttypes/NewsCreateForm.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2017 LibreCCM Foundation.
- *
- * 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., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.cms.ui.contenttypes;
-
-import com.arsdigita.bebop.FormData;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.form.Date;
-import com.arsdigita.bebop.parameters.NotEmptyValidationListener;
-import com.arsdigita.bebop.parameters.StringParameter;
-import com.arsdigita.cms.ItemSelectionModel;
-import com.arsdigita.cms.ui.authoring.CreationSelector;
-import com.arsdigita.cms.ui.authoring.PageCreateForm;
-import com.arsdigita.globalization.GlobalizedMessage;
-
-import org.librecms.CmsConstants;
-import org.librecms.contentsection.ContentItemInitializer;
-import org.librecms.contenttypes.News;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class NewsCreateForm extends PageCreateForm {
-
- private static final String NEWS_DATE = "newsDate";
-
- private Date newsDate;
-
- public NewsCreateForm(final ItemSelectionModel itemSelectionModel,
- final CreationSelector creationSelector,
- final StringParameter selectedLanguageParam) {
-
- super(itemSelectionModel, creationSelector, selectedLanguageParam);
- }
-
- @Override
- protected void addWidgets() {
-
- super.addWidgets();
-
- add(new Label(new GlobalizedMessage("cms.contenttypes.ui.newsitem.date",
- CmsConstants.CMS_BUNDLE)));
- newsDate = new Date(NEWS_DATE);
- newsDate.addValidationListener(new NotEmptyValidationListener());
- add(newsDate);
- }
-
- @Override
- protected ContentItemInitializer> getItemInitializer(
- final FormData data, final PageState state) {
-
- return item -> ((News) item)
- .setReleaseDate((java.util.Date) newsDate.getValue(state));
- }
-
-}