dragndrop_upload_multi.module in Drag & Drop Upload 7
Provides a multiupload functionality for Drag & Drop Upload Widget.
File
modules/dragndrop_upload_multi/dragndrop_upload_multi.moduleView source
<?php
/**
* @file
* Provides a multiupload functionality for Drag & Drop Upload Widget.
*/
/**
* Custom process callback for the 'dragndrop_upload_widget' widget.
*/
function dragndrop_upload_multi_element_process($element, &$form_state, $form) {
$element['upload']['#attributes'] = array(
'multiple' => 'multiple',
);
$element['upload']['#name'] .= '[]';
return $element;
}
/**
* Implements hook_field_widget_form_alter().
*
* Adds necessary value_callback and process callbacks for the multiupload
* functionality.
*/
function dragndrop_upload_multi_field_widget_form_alter(&$element, &$form_state, $context) {
$widget =& $context['instance']['widget'];
if (in_array($widget['type'], array(
'dragndrop_upload_file',
'dragndrop_upload_image',
))) {
if ($widget['settings']['multiupload']) {
if ($context['field']['cardinality'] != 1) {
foreach (element_children($element) as $delta) {
$element[$delta]['#value_callback'] = 'dragndrop_upload_multi_widget_value';
$element[$delta]['#process'][] = 'dragndrop_upload_multi_element_process';
}
$element['#process'][] = 'mfw_field_widget_process_multiple';
}
}
}
}
/**
* The value callback for the widgets.
*
* Adds additional check for multiple fields: prevents showing several
* widgets on validation errors.
*
* @param $element
* @param bool $input
* @param $form_state
* @return array|bool
* @see mfw_field_widget_value().
*/
function dragndrop_upload_multi_widget_value(&$element, $input = FALSE, &$form_state) {
$return = mfw_field_widget_value($element, $input, $form_state);
if ($input !== FALSE) {
$added =& drupal_static(__FUNCTION__, array());
$key = implode('-', array_slice($element['#array_parents'], 0, -1));
if (!empty($added[$key])) {
if (empty($return['fid'])) {
$element['#access'] = FALSE;
}
}
$added[$key] = TRUE;
}
return $return;
}
/**
* Implements hook_dnd_upload_widget_settings_form_alter().
*/
function dragndrop_upload_multi_dnd_upload_widget_settings_form_alter(&$form) {
$form['dragndrop_fieldset']['multiupload'] += array(
'#description' => t('Allow multiple files to be uploaded at once.<br/>The setting is' . ' available when field cardinality (Number of values) is greater than 1'),
'#states' => array(
'disabled' => array(
'select[name="field[cardinality]"]' => array(
'value' => 1,
),
),
),
);
}
Functions
Name![]() |
Description |
---|---|
dragndrop_upload_multi_dnd_upload_widget_settings_form_alter | Implements hook_dnd_upload_widget_settings_form_alter(). |
dragndrop_upload_multi_element_process | Custom process callback for the 'dragndrop_upload_widget' widget. |
dragndrop_upload_multi_field_widget_form_alter | Implements hook_field_widget_form_alter(). |
dragndrop_upload_multi_widget_value | The value callback for the widgets. |