type)) > 0) {
$form['dragndrop_uploads'] = array(
'#type' => 'fieldset',
'#title' => t("Drag'n'Drop Uploads settings"),
'#group' => 'additional_settings',
'#collapsible' => TRUE,
'#collapsed' => TRUE,
);
$form['dragndrop_uploads']['dragndrop_uploads_widget'] = array(
'#type' => 'select',
'#title' => t('Upload widget'),
'#options' => array('' => '') + $widgets,
'#default_value' => array_key_exists(variable_get('dragndrop_uploads_widget_' . $form['#node_type']->type, 0), $widgets)
? variable_get('dragndrop_uploads_widget_' . $form['#node_type']->type, 0) : 0,
'#ajax' => array(
'callback' => 'dragndrop_uploads_js',
'wrapper' => 'edit-dragndrop-uploads-wrapper',
),
'#description' => t("Leave blank to disable Drag'n'Drop Uploads functionality."),
'#prefix' => '
',
);
$widget = variable_get('dragndrop_uploads_widget_' . $form['#node_type']->type, 0) !== 0
? unserialize(variable_get('dragndrop_uploads_widget_' . $form['#node_type']->type, 0)) : NULL;
if (!function_exists('field_ui_formatter_options')) {
module_load_include('inc', 'field_ui', 'field_ui.admin');
}
$formatter_options = !is_null($widget['module']) ? field_ui_formatter_options($widget['module']) : array();
$form['dragndrop_uploads']['dragndrop_uploads_formatter'] = array(
'#type' => 'select',
'#title' => t('Output style'),
'#options' => $formatter_options,
'#default_value' => array_key_exists(variable_get('dragndrop_uploads_formatter_' . $form['#node_type']->type, 0), $formatter_options)
? variable_get('dragndrop_uploads_formatter_' . $form['#node_type']->type, 0) : 0,
'#disabled' => count($formatter_options) == 0,
'#suffix' => '
',
);
$form['dragndrop_uploads']['dragndrop_uploads_hide'] = array(
'#type' => 'checkbox',
'#title' => t('Hide upload widget?'),
'#default_value' => variable_get('dragndrop_uploads_hide_' . $form['#node_type']->type, 0),
);
}
}
/**
* Implements hook_form_alter().
*/
function dragndrop_uploads_form_alter(&$form, $form_state, $form_id) {
if (strstr($form_id, '_node_form') && count($widgets = _dragndrop_uploads_widgets($form['#node']->type)) > 0 && ($data = variable_get('dragndrop_uploads_widget_' . $form['#node']->type, '')) !== '') {
// Add Drag'n'Drop Uploads core assets.
drupal_add_js(drupal_get_path('module', 'dragndrop_uploads') . '/dragndrop_uploads.js');
drupal_add_css(drupal_get_path('module', 'dragndrop_uploads') . '/dragndrop_uploads.css');
// Add Drag'n'Drop Uploads form elements.
$form['dragndrop_uploads'] = array('#markup' => '');
//$form['dragndrop_uploads_progress'] = array('#markup' => theme('progress_bar', array('percent' => 0, 'message' => 'Uploading file')));
// Add Drag'n'Drop Uploads specified upload widget settings.
drupal_add_js(
array(
'dragNDropUploads' => array(
'hide' => variable_get('dragndrop_uploads_hide_' . $form['#node']->type, 0),
// 'target' => NULL,
// 'trigger' => FALSE
) + _dragndrop_uploads_js_data($widgets, unserialize($data))
),
'setting'
);
}
}
/**
* Returns selected Node Types available upload widgets.
*/
function _dragndrop_uploads_widgets($type) {
$widgets = array();
// Invoke hook_dragndrop_uploads_widgets().
foreach (module_implements('dragndrop_uploads_widgets') as $module) {
$function = $module . '_dragndrop_uploads_widgets';
$function($type, $widgets);
}
return $widgets;
}
/**
* Returns selected upload widgets JavaScript settings.
*/
function _dragndrop_uploads_js_data($widgets, $selected) {
// Invoke hook_dragndrop_uploads_js_data().
$data = array();
foreach ($widgets as $widget => $label) {
$widget = unserialize($widget);
$function = (isset($widget['widget']) ? $widget['widget'] : $widget['module']) . '_dragndrop_uploads_js_data';
if (function_exists($function)) {
$widget_data = $function($widget);
$data += $widget_data;
}
if ($selected == $widget) {
$selected_data = array_values($widget_data);
}
}
return array('dropzones' => array_merge(array(
'default' => array_merge(
$selected_data[0], array('id' => 'default', 'selector' => 'textarea', 'target' => TRUE)
)), $data
));
}
/**
* Returns CCK Formatters relevant to selected upload widget.
*/
function dragndrop_uploads_js($form, $form_state) {
$null = theme('status_messages');
return drupal_render($form['dragndrop_uploads']['dragndrop_uploads_widget']) . drupal_render($form['dragndrop_uploads']['dragndrop_uploads_formatter']);
}