array('selectedMedia' => array_values($files)));
drupal_add_js($setting, 'setting');
return $output;
}
$plugins = media_get_browser_plugin_info();
// Allow parameters to provide a list of enabled or disabled media browser
// plugins.
if (!empty($params['enabledPlugins'])) {
$plugins = array_intersect_key($plugins, array_fill_keys($params['enabledPlugins'], 1));
}
elseif (!empty($params['disabledPlugins'])) {
$plugins = array_diff_key($plugins, array_fill_keys($params['disabledPlugins'], 1));
}
// Render plugins.
$plugin_output = array();
foreach ($plugins as $key => $plugin_info) {
// Support the old CTools style handler definition.
if (!isset($plugin_info['class']) && !empty($plugin_info['handler'])) {
if (is_string($plugin_info['handler'])) {
$plugin_info['class'] = $plugin_info['handler'];
}
elseif (isset($plugin_info['handler']['class'])) {
$plugin_info['class'] = $plugin_info['handler']['class'];
}
}
if (empty($plugin_info['class']) || !class_exists($plugin_info['class'])) {
continue;
}
$plugin = new $plugin_info['class']($plugin_info, $params);
if ($plugin->access()) {
$plugin_output[$key] = $plugin->view();
if (!empty($plugin_output[$key]) && is_array($plugin_output[$key])) {
$plugin_output[$key] += array(
'#title' => $plugin_info['title'],
'#weight' => isset($plugin_info['weight']) ? $plugin_info['weight'] : 0,
);
}
else {
unset($plugin_output[$key]);
continue;
}
}
else {
continue;
}
// We need to ensure that a submit button is available on each tab. If the
// plugin is not returning a form element we need to add a submit button.
// This is a fairly broad assumption.
if (empty($plugin_output[$key]['#form']) && !empty($plugin_output[$key]['#markup'])) {
$fake_buttons = '
';
$plugin_output[$key]['#markup'] .= $fake_buttons;
}
}
// Allow modules to change the tab names or whatever else they want to change
// before we render. Perhaps this should be an alter on the theming function
// that we should write to be making the tabs.
drupal_alter('media_browser_plugins', $plugin_output);
$tabs = array();
$settings = array('media' => array('browser' => array()));
foreach (element_children($plugin_output, TRUE) as $key) {
// Add any JavaScript settings from the browser tab.
if (!empty($plugin_output[$key]['#settings'])) {
$settings['media']['browser'][$key] = $plugin_output[$key]['#settings'];
}
// If this is a "ajax" style tab, add the href, otherwise an id. jQuery UI
// will use an href value to load content from that url
$tabid = 'media-tab-' . check_plain($key);
if (!empty($plugin_output[$key]['#callback'])) {
$href = $plugin_output[$key]['#callback'];
}
else {
$attributes = array(
'class' => array('media-browser-tab'),
'id' => $tabid,
'data-tabid' => $key,
);
// Create a div for each tab's content.
$plugin_output[$key] += array(
'#prefix' => '