Common subdirectories: video_upload_dev\images and video_upload_required\images
Common subdirectories: video_upload_dev\providers and video_upload_required\providers
Common subdirectories: video_upload_dev\tests and video_upload_required\tests
diff -upN video_upload_dev\video_upload.module video_upload_required\video_upload.module
--- video_upload_dev\video_upload.module	Wed Apr 28 22:31:29 2010
+++ video_upload_required\video_upload.module	Sun May 02 23:34:06 2010
@@ -354,6 +354,14 @@ function video_upload_widget_settings($o
  * Implementation of hook_widget().
  */
 function video_upload_widget(&$form, &$form_state, $field, $items, $delta = 0) {
+  // CCK doesn't give a validate callback at the field level...
+  // FAPI's #require is naive to complex structures...
+  // Filefield's validation ignores our fields...
+  // So, we validate at the field level ourselves.
+  if (empty($form['#validate']) || !in_array('video_upload_node_form_validate', $form['#validate'])) {
+    $form['#validate'][] = 'video_upload_node_form_validate';
+  }
+  
   if ($field['widget']['use_browser_upload_method']) {
     // The browser upload method is sufficiently different from direct upload
     // that it warrants entirely separate logic.
@@ -372,6 +380,31 @@ function video_upload_widget(&$form, &$f
   $element = filefield_widget($form, $form_state, $field, $items, $delta);
 
   return $element;
+}
+
+
+/**
+ * Additional #validate handler for the node form.
+ *
+ * This function checks the #required properties on video_upload fields.
+ */
+function video_upload_node_form_validate($form, &$form_state) {
+  $type = content_types($form['type']['#value']);
+  foreach ($type['fields'] as $field_name => $field) {
+    if ($field['module'] != 'video_upload') continue;
+    $empty = $field['module'] .'_content_is_empty';
+    $valid = FALSE;
+    if (!empty($form_state['values'][$field_name])) {
+      foreach ($form_state['values'][$field_name] as $delta => $item) {
+        if ($empty($item, $field)) continue;
+        $valid = TRUE;
+      }
+    }
+
+    if (!$valid && $field['required']) {
+      form_set_error($field_name, t('%title field is required.', array('%title' => $field['widget']['label'])));
+    }
+  }
 }
 
 /**
Common subdirectories: video_upload_dev\views and video_upload_required\views
