From 40b41d6f4034ac5d067462b1f03153f5877286b2 Mon Sep 17 00:00:00 2001
From: Dane Powell <git@danepowell.com>
Date: Thu, 1 Oct 2015 09:59:39 -0500
Subject: [PATCH] Issue #2558517 by vaccinemedia, panche, Dane Powell: Added
 validation for required paragraph fields.

---
 paragraphs.field_widget.inc | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/paragraphs.field_widget.inc b/paragraphs.field_widget.inc
index ef219f1..621e053 100644
--- a/paragraphs.field_widget.inc
+++ b/paragraphs.field_widget.inc
@@ -144,6 +144,7 @@ function paragraphs_field_multiple_value_form($field, $instance, $langcode, $ite
       '#suffix' => '</div>',
       '#max_delta' => $max,
       '#instance' => $instance,
+      '#element_validate' => array('_paragraph_multiple_field_validate'),
     );
 
     // Add 'add more' button, if not working with a programmed form.
@@ -1092,3 +1093,21 @@ function paragraphs_restore_submit($form, &$form_state) {
 
   $form_state['rebuild'] = TRUE;
 }
+
+/**
+ * Form Validation for submitting a node with required paragraph fields
+ */
+function _paragraph_multiple_field_validate($element, &$form_state) {
+  $value_count = 0;
+  if (!empty($form_state['values'][$element['#field_name']])) {
+    foreach ($form_state['values'][$element['#field_name']][LANGUAGE_NONE] as $key => $vals) {
+      if(is_numeric($key) && !array_key_exists('restore_button', $vals['actions'])) {
+        $value_count++;
+      }
+    }
+  }
+
+  if ($element['#required'] == 1 && $value_count < 1) {
+    form_error($element, t('The "!name" field is required', array('!name' => t($element['#title']))));
+  }
+}
-- 
2.1.4

