Index: https://svn.onehippo.org/repos/closed/projects/ons/trunk/defensie/bootstrap/configuration/src/main/resources/namespaces/defensiebaz/illustrationupload.xml
===================================================================
--- https://svn.onehippo.org/repos/closed/projects/ons/trunk/defensie/bootstrap/configuration/src/main/resources/namespaces/defensiebaz/illustrationupload.xml (revision 174096)
+++ https://svn.onehippo.org/repos/closed/projects/ons/trunk/defensie/bootstrap/configuration/src/main/resources/namespaces/defensiebaz/illustrationupload.xml (revision 174097)
@@ -61,6 +61,7 @@
platformcomponents:documentresource
+ resource-required
required
Index: https://svn.onehippo.org/repos/closed/projects/ons/trunk/defensie/bootstrap/configuration/src/main/resources/namespaces/defensiebaz/mutationupload.xml
===================================================================
--- https://svn.onehippo.org/repos/closed/projects/ons/trunk/defensie/bootstrap/configuration/src/main/resources/namespaces/defensiebaz/mutationupload.xml (revision 174096)
+++ https://svn.onehippo.org/repos/closed/projects/ons/trunk/defensie/bootstrap/configuration/src/main/resources/namespaces/defensiebaz/mutationupload.xml (revision 174097)
@@ -61,6 +61,7 @@
platformcomponents:documentresource
+ resource-required
required
Index: plugins/core/cms/src/main/java/nl/rijksoverheid/platform/cms/frontend/plugins/validator/ResourceRequiredValidator.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- plugins/core/cms/src/main/java/nl/rijksoverheid/platform/cms/frontend/plugins/validator/ResourceRequiredValidator.java (revision 174097)
+++ plugins/core/cms/src/main/java/nl/rijksoverheid/platform/cms/frontend/plugins/validator/ResourceRequiredValidator.java (revision 174097)
@@ -0,0 +1,76 @@
+package nl.rijksoverheid.platform.cms.frontend.plugins.validator;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.jcr.Node;
+import javax.jcr.Property;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.nodetype.NodeType;
+import javax.jcr.nodetype.NodeTypeManager;
+
+import org.apache.wicket.model.IModel;
+import org.hippoecm.frontend.editor.validator.plugins.AbstractCmsValidator;
+import org.hippoecm.frontend.model.JcrNodeModel;
+import org.hippoecm.frontend.plugin.IPluginContext;
+import org.hippoecm.frontend.plugin.config.IPluginConfig;
+import org.hippoecm.frontend.validation.IFieldValidator;
+import org.hippoecm.frontend.validation.ValidationException;
+import org.hippoecm.frontend.validation.Violation;
+import org.hippoecm.repository.api.HippoNodeType;
+
+import nl.rijksoverheid.platform.cms.util.PluginHelper;
+
+/**
+ * ResourceRequiredValidator validates fields that are a (subtype of) {@link: HippoNodeType.NT_RESOURCE} that a resource
+ * has been uploaded.
+ *
+ * @author David de Bos
+ */
+public class ResourceRequiredValidator extends AbstractCmsValidator {
+
+ public static final String INVALID_VALIDATION_EXCEPTION_ERROR_MESSAGE = "Invalid validation exception. " +
+ "A ResourceRequiredValidator can only be used for field types that are a (subtype of) " +
+ HippoNodeType.NT_RESOURCE;
+
+ public ResourceRequiredValidator(final IPluginContext context, final IPluginConfig config) {
+ super(context, config);
+ }
+
+ @Override
+ public void preValidation(final IFieldValidator type) throws ValidationException {
+ if (!isAHippoResource(type)) {
+ throw new ValidationException(INVALID_VALIDATION_EXCEPTION_ERROR_MESSAGE);
+ }
+ }
+
+ private boolean isAHippoResource(final IFieldValidator type) throws ValidationException {
+ String jcrTypeName = type.getFieldType().getType();
+ try {
+ Session jcrSession = PluginHelper.obtainJcrSession();
+ NodeTypeManager typeManager = jcrSession.getWorkspace().getNodeTypeManager();
+ NodeType nodeType = typeManager.getNodeType(jcrTypeName);
+ return nodeType.isNodeType(HippoNodeType.NT_RESOURCE);
+ } catch (RepositoryException e) {
+ throw new ValidationException(e);
+ }
+ }
+
+ @Override
+ public Set validate(final IFieldValidator fieldValidator, final JcrNodeModel model,
+ final IModel childModel) throws ValidationException {
+ Set violations = new HashSet<>();
+ try {
+ Node node = ((JcrNodeModel) childModel).getNode();
+ Property resourceData = node.getProperty("jcr:data");
+ if (!(resourceData.getLength() > 0)) {
+ violations.add(fieldValidator.newValueViolation(childModel, getTranslation()));
+ }
+ } catch (Exception e) {
+ throw new ValidationException(e);
+ }
+
+ return violations;
+ }
+}
Index: plugins/core/repository/src/main/resources/configuration/frontend/cms-validators/resource-required-translations.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- plugins/core/repository/src/main/resources/configuration/frontend/cms-validators/resource-required-translations.xml (revision 174097)
+++ plugins/core/repository/src/main/resources/configuration/frontend/cms-validators/resource-required-translations.xml (revision 174097)
@@ -0,0 +1,31 @@
+
+
+
+ frontend:pluginconfig
+
+
+ hippo:translated
+
+
+
+ hippo:translation
+
+
+ nl
+
+
+ U moet een bestand uploaden
+
+
+
+
+ hippo:translation
+
+
+ en
+
+
+ You must upload a file
+
+
+
Index: plugins/core/repository/src/main/resources/configuration/frontend/cms-validators/resource-required.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- plugins/core/repository/src/main/resources/configuration/frontend/cms-validators/resource-required.xml (revision 174097)
+++ plugins/core/repository/src/main/resources/configuration/frontend/cms-validators/resource-required.xml (revision 174097)
@@ -0,0 +1,9 @@
+
+
+
+ frontend:plugin
+
+
+ nl.rijksoverheid.platform.cms.frontend.plugins.validator.ResourceRequiredValidator
+
+
Index: plugins/core/repository/src/main/resources/hippoecm-extension.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- plugins/core/repository/src/main/resources/hippoecm-extension.xml (revision 174096)
+++ plugins/core/repository/src/main/resources/hippoecm-extension.xml (revision 174097)
@@ -1968,6 +1968,42 @@
+
+
+ true
+
+
+ hippo:initializeitem
+
+
+ 32002.8
+
+
+ configuration/frontend/cms-validators/resource-required.xml
+
+
+ /hippo:configuration/hippo:frontend/cms/cms-validators
+
+
+
+
+
+ true
+
+
+ hippo:initializeitem
+
+
+ 32002.9
+
+
+ configuration/frontend/cms-validators/resource-required-translations.xml
+
+
+ /hippo:configuration/hippo:frontend/cms/cms-validators/validationTranslator/hippostd:translations
+
+
+
hippo:initializeitem
\ No newline at end of file