You are here

function media_bulk_upload_file_page_edit_multiple in D7 Media 7.4

Same name and namespace in other branches
  1. 7.2 modules/media_bulk_upload/includes/media_bulk_upload.pages.inc \media_bulk_upload_file_page_edit_multiple()
  2. 7.3 modules/media_bulk_upload/includes/media_bulk_upload.pages.inc \media_bulk_upload_file_page_edit_multiple()

Menu callback; Edit multiple files on the same page using multiform module.

@todo When http://drupal.org/node/1227706 is fixed, filter the $files array using file_access($file, 'edit').

See also

media_bulk_upload_file_operation_edit_multiple()

1 call to media_bulk_upload_file_page_edit_multiple()
media_browser in includes/media.browser.inc
Media browser page callback.
1 string reference to 'media_bulk_upload_file_page_edit_multiple'
media_bulk_upload_menu in modules/media_bulk_upload/media_bulk_upload.module
Implements hook_menu().

File

modules/media_bulk_upload/includes/media_bulk_upload.pages.inc, line 16
Common pages for the Media Bulk Upload module.

Code

function media_bulk_upload_file_page_edit_multiple($files) {
  if (empty($files)) {
    return MENU_ACCESS_DENIED;
  }
  $forms = array();
  foreach ($files as $file) {

    // To maintain unique form_ids, append the file id.
    $forms[] = array(
      'media_edit_' . $file->fid,
      $file,
    );
  }
  $form = call_user_func_array('multiform_get_form', $forms);
  $form['#attributes']['class'][] = 'media-bulk-upload-multiedit-form';

  // Improve the display of each file form.
  foreach (element_children($form['multiform']) as $key) {
    $fid = $form['multiform'][$key]['fid']['#value'];
    $file = $files[$fid];

    // Add the filename to each 'subform'.
    $title = t('<em>Edit @type</em> @title', array(
      '@type' => $file->type,
      '@title' => $file->filename,
    ));
    $form['multiform'][$key]['#prefix'] = '<h2>' . $title . '</h2>';

    // Remove the 'replace file' functionality.
    $form['multiform'][$key]['replace_upload']['#access'] = FALSE;
    $form['multiform'][$key]['replace_keep_original_filename']['#access'] = FALSE;

    // Remove any actions.
    $form['multiform'][$key]['actions']['#access'] = FALSE;

    // Hide additional settings under a collapsible fieldset.
    $form['multiform'][$key]['settings'] = array(
      '#type' => 'fieldset',
      '#title' => t('Additional settings'),
      '#weight' => 99,
      '#collapsible' => TRUE,
      '#collapsed' => TRUE,
      // FAPI #collapsed and #collapsible not available in a render array.
      '#attached' => array(
        'js' => array(
          'misc/form.js',
          'misc/collapse.js',
        ),
      ),
      '#attributes' => array(
        'class' => array(
          'collapsible',
          'collapsed',
        ),
      ),
    );
    $form['multiform'][$key]['settings']['additional_settings'] = $form['multiform'][$key]['additional_settings'];
    unset($form['multiform'][$key]['additional_settings']);
  }
  if (isset($form['buttons']['Delete'])) {
    $form['buttons']['Delete']['#access'] = FALSE;
  }

  // Add a cancel button at the bottom of the form.
  $form['buttons']['cancel'] = array(
    '#type' => 'link',
    '#title' => t('Cancel'),
    '#weight' => 50,
  );
  if (isset($_GET['destination'])) {
    $form['buttons']['cancel']['#href'] = $_GET['destination'];
  }
  else {
    if (user_access('administer files')) {
      $form['buttons']['cancel']['#href'] = 'admin/content/file';
    }
    else {
      $form['buttons']['cancel']['#href'] = '<front>';
    }
  }

  // Override the page title since each file form sets a title.
  drupal_set_title(t('Edit multiple files'));

  // Allow other modules to alter the form.
  drupal_alter('media_bulk_upload_edit_multiple_form', $form);
  return $form;
}