diff options
Diffstat (limited to 'sites/all/modules/media/modules/media_bulk_upload/includes/media_bulk_upload.pages.inc')
-rw-r--r-- | sites/all/modules/media/modules/media_bulk_upload/includes/media_bulk_upload.pages.inc | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/sites/all/modules/media/modules/media_bulk_upload/includes/media_bulk_upload.pages.inc b/sites/all/modules/media/modules/media_bulk_upload/includes/media_bulk_upload.pages.inc new file mode 100644 index 000000000..41287ebb0 --- /dev/null +++ b/sites/all/modules/media/modules/media_bulk_upload/includes/media_bulk_upload.pages.inc @@ -0,0 +1,95 @@ +<?php + +/** + * @file + * Common pages for the Media Bulk Upload module. + */ + +/** + * 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 media_bulk_upload_file_operation_edit_multiple() + */ +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; + + // 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; +} |