diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/FileAssetForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/FileAssetForm.java
new file mode 100644
index 000000000..c0937cb26
--- /dev/null
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/FileAssetForm.java
@@ -0,0 +1,43 @@
+/*
+ * 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.assets.forms;
+
+import com.arsdigita.bebop.PageState;
+import com.arsdigita.cms.ui.assets.AssetPane;
+import org.librecms.assets.BinaryAsset;
+import org.librecms.assets.FileAsset;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+public class FileAssetForm extends BinaryAssetForm {
+
+ public FileAssetForm(final AssetPane assetPane) {
+ super(assetPane);
+ }
+
+ @Override
+ protected BinaryAsset createBinaryAsset(final PageState state) {
+ return new FileAsset();
+ }
+
+
+
+}
diff --git a/ccm-cms/src/main/java/org/librecms/Cms.java b/ccm-cms/src/main/java/org/librecms/Cms.java
index 88afe7762..e83e3de4d 100644
--- a/ccm-cms/src/main/java/org/librecms/Cms.java
+++ b/ccm-cms/src/main/java/org/librecms/Cms.java
@@ -36,6 +36,7 @@ import org.librecms.contenttypes.News;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
+import org.librecms.assets.FileAsset;
import org.librecms.assets.SideNote;
@@ -50,7 +51,8 @@ import org.librecms.assets.SideNote;
descBundle = CmsConstants.CONTENT_CENTER_DESC_BUNDLE,
creator = ContentCenterAppCreator.class,
servlet = ContentCenterServlet.class
- ),
+ )
+ ,
@ApplicationType(
name = CmsConstants.CONTENT_SECTION_APP_TYPE,
applicationClass = ContentSection.class,
@@ -62,10 +64,14 @@ import org.librecms.assets.SideNote;
)
}
)
-@ContentTypes({Article.class, Event.class, MultiPartArticle.class, News.class})
-@AssetTypes({Bookmark.class,
- ExternalVideoAsset.class,
- LegalMetadata.class,
+@ContentTypes({Article.class,
+ Event.class,
+ MultiPartArticle.class,
+ News.class})
+@AssetTypes({Bookmark.class,
+ ExternalVideoAsset.class,
+ FileAsset.class,
+ LegalMetadata.class,
SideNote.class})
public class Cms implements CcmModule {
diff --git a/ccm-cms/src/main/java/org/librecms/assets/File.java b/ccm-cms/src/main/java/org/librecms/assets/FileAsset.java
similarity index 76%
rename from ccm-cms/src/main/java/org/librecms/assets/File.java
rename to ccm-cms/src/main/java/org/librecms/assets/FileAsset.java
index 4caec5012..903931be9 100644
--- a/ccm-cms/src/main/java/org/librecms/assets/File.java
+++ b/ccm-cms/src/main/java/org/librecms/assets/FileAsset.java
@@ -17,12 +17,14 @@
* MA 02110-1301 USA
*/package org.librecms.assets;
+import com.arsdigita.cms.ui.assets.forms.FileAssetForm;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Table;
import org.hibernate.envers.Audited;
import static org.librecms.CmsConstants.*;
+import static org.librecms.assets.AssetConstants.*;
/**
* An asset for making files available for download.
@@ -32,7 +34,12 @@ import static org.librecms.CmsConstants.*;
@Entity
@Table(name = "FILES", schema = DB_SCHEMA)
@Audited
-public class File extends BinaryAsset implements Serializable {
+@AssetType(assetForm = FileAssetForm.class,
+ labelKey = "fileasset.label",
+ labelBundle = ASSETS_BUNDLE,
+ descriptionKey = "fileasset.description",
+ descriptionBundle = ASSETS_BUNDLE)
+public class FileAsset extends BinaryAsset implements Serializable {
private static final long serialVersionUID = -8195062456502964401L;
@@ -53,16 +60,16 @@ public class File extends BinaryAsset implements Serializable {
return false;
}
- if (!(obj instanceof File)) {
+ if (!(obj instanceof FileAsset)) {
return false;
}
- final File other = (File) obj;
+ final FileAsset other = (FileAsset) obj;
return other.canEqual(this);
}
@Override
public boolean canEqual(final Object obj) {
- return obj instanceof File;
+ return obj instanceof FileAsset;
}
diff --git a/ccm-cms/src/main/resources/org/librecms/assets/Assets.properties b/ccm-cms/src/main/resources/org/librecms/assets/Assets.properties
index 880320ffb..fd4a37545 100644
--- a/ccm-cms/src/main/resources/org/librecms/assets/Assets.properties
+++ b/ccm-cms/src/main/resources/org/librecms/assets/Assets.properties
@@ -7,3 +7,5 @@ sidenote.label=Side note
sidenote.description=Additional information. Usually appears in the right or left column of an webpage.
external_video_asset.label=External Video
external_video_asset.description=An external video e.g. on YouTube. The presentation will either be a link or an embedded video.
+fileasset.label=File
+fileasset.description=A downloadable file, for instance a PDF file or a ZIP file
diff --git a/ccm-cms/src/main/resources/org/librecms/assets/Assets_de.properties b/ccm-cms/src/main/resources/org/librecms/assets/Assets_de.properties
index 3af530d1f..093beaa38 100644
--- a/ccm-cms/src/main/resources/org/librecms/assets/Assets_de.properties
+++ b/ccm-cms/src/main/resources/org/librecms/assets/Assets_de.properties
@@ -7,3 +7,5 @@ sidenote.label=Randbemerkung
sidenote.description=Randbemerkung mit zus\u00e4tzlichen Informationen. Erscheint in der Regel in der rechten oder linken Spalte einer Webseite.
external_video_asset.label=Externes Video
external_video_asset.description=Externes Video z.B. auf YouTube. Wird entweder als Link oder eingebettet angezeigt.
+fileasset.label=Datei
+fileasset.description=Eine herunterladebare Datei, beispielsweise eine PDF-Datei oder ZIP-Datei
diff --git a/ccm-cms/src/test/java/org/librecms/contentsection/AssetManagerTest.java b/ccm-cms/src/test/java/org/librecms/contentsection/AssetManagerTest.java
index ab6109075..6a1957ab2 100644
--- a/ccm-cms/src/test/java/org/librecms/contentsection/AssetManagerTest.java
+++ b/ccm-cms/src/test/java/org/librecms/contentsection/AssetManagerTest.java
@@ -53,7 +53,7 @@ import javax.activation.MimeType;
import javax.activation.MimeTypeParseException;
import org.jboss.arquillian.persistence.CleanupUsingScript;
-import org.librecms.assets.File;
+import org.librecms.assets.FileAsset;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
@@ -215,7 +215,7 @@ public class AssetManagerTest {
final Folder folder = folderRepo.findById(-420L).get();
assertThat(folder, is(not(nullValue())));
- final File file = new File();
+ final FileAsset file = new FileAsset();
file.setDisplayName("datasheet.pdf");
file.setFileName("datasheet.pdf");
file.setMimeType(new MimeType("application/pdf"));
@@ -262,7 +262,7 @@ public class AssetManagerTest {
"datasets/org/librecms/contentsection/AssetManagerTest/data.xml")
@ShouldThrowException(IllegalArgumentException.class)
public void shareAssetFolderIsNull() throws MimeTypeParseException {
- final File file = new File();
+ final FileAsset file = new FileAsset();
file.setDisplayName("datasheet.pdf");
file.setFileName("datasheet.pdf");
file.setMimeType(new MimeType("application/pdf"));
diff --git a/ccm-cms/src/test/java/org/librecms/contentsection/AssetRepositoryTest.java b/ccm-cms/src/test/java/org/librecms/contentsection/AssetRepositoryTest.java
index 39f675af5..23f3bcd0f 100644
--- a/ccm-cms/src/test/java/org/librecms/contentsection/AssetRepositoryTest.java
+++ b/ccm-cms/src/test/java/org/librecms/contentsection/AssetRepositoryTest.java
@@ -49,7 +49,7 @@ import java.util.Optional;
import javax.inject.Inject;
import org.jboss.arquillian.persistence.CleanupUsingScript;
-import org.librecms.assets.File;
+import org.librecms.assets.FileAsset;
import org.librecms.assets.Image;
import org.librecms.assets.VideoAsset;
@@ -256,7 +256,7 @@ public class AssetRepositoryTest {
assertThat(datasheet.isPresent(), is(true));
assertThat(datasheet.get(), is(instanceOf(Asset.class)));
assertThat(datasheet.get(), is(instanceOf(BinaryAsset.class)));
- assertThat(datasheet.get(), is(instanceOf(File.class)));
+ assertThat(datasheet.get(), is(instanceOf(FileAsset.class)));
assertThat(datasheet.get().getDisplayName(), is(equalTo(
"product1-datasheet.pdf")));
@@ -274,8 +274,7 @@ public class AssetRepositoryTest {
public void findAssetByUuidAndType() {
final Optional asset = assetRepo.findByUuidAndType(
"4635589f-b87a-46d9-979e-6af14af063e5", Image.class);
- final Optional none = assetRepo.findByUuidAndType(
- "4635589f-b87a-46d9-979e-6af14af063e5", File.class);
+ final Optional none = assetRepo.findByUuidAndType("4635589f-b87a-46d9-979e-6af14af063e5", FileAsset.class);
assertThat(asset.isPresent(), is(true));
assertThat(asset.get().getDisplayName(), is(equalTo("header.png")));
@@ -293,7 +292,7 @@ public class AssetRepositoryTest {
"datasets/org/librecms/contentsection/AssetRepositoryTest/data.xml")
public void findAssetByType() {
final List images = assetRepo.findByType(Image.class);
- final List files = assetRepo.findByType(File.class);
+ final List files = assetRepo.findByType(FileAsset.class);
assertThat(images.isEmpty(), is(false));
assertThat(files.isEmpty(), is(false));
@@ -402,7 +401,7 @@ public class AssetRepositoryTest {
final List images = assetRepo.filterByFolderAndType(media,
Image.class);
final List files = assetRepo.filterByFolderAndType(media,
- File.class);
+ FileAsset.class);
final List videos = assetRepo.filterByFolderAndType(
media, VideoAsset.class);
@@ -434,7 +433,7 @@ public class AssetRepositoryTest {
assertThat(assetRepo.countFilterByFolderAndType(media, Image.class),
is(3L));
- assertThat(assetRepo.countFilterByFolderAndType(media, File.class),
+ assertThat(assetRepo.countFilterByFolderAndType(media, FileAsset.class),
is(2L));
assertThat(assetRepo.countFilterByFolderAndType(media, VideoAsset.class),
is(0L));
@@ -454,8 +453,7 @@ public class AssetRepositoryTest {
final List result1 = assetRepo.filterByFolderAndTypeAndTitle(
media, Image.class, "hea");
- final List result2 = assetRepo.filterByFolderAndTypeAndTitle(
- media, File.class, "hea");
+ final List result2 = assetRepo.filterByFolderAndTypeAndTitle(media, FileAsset.class, "hea");
assertThat(result1.size(), is(2));
assertThat(result2.size(), is(0));
@@ -477,8 +475,7 @@ public class AssetRepositoryTest {
assertThat(assetRepo.countFilterByFolderAndTypeAndTitle(
media, Image.class, "hea"),
is(2L));
- assertThat(assetRepo.countFilterByFolderAndTypeAndTitle(
- media, File.class, "hea"),
+ assertThat(assetRepo.countFilterByFolderAndTypeAndTitle(media, FileAsset.class, "hea"),
is(0L));
}