file_entity.admin.inc in Media Browser Plus 7.2
Adjustment on the file_entity admin interface.
File
includes/file_entity.admin.incView source
<?php
/**
* @file
* Adjustment on the file_entity admin interface.
*/
/**
* Implements hook_form_FORM_ID_alter() for file_entity_admin_files().
*
* Alter the media browser from to enable new UI.
*/
function media_browser_plus_form_file_entity_admin_file_alter(&$form, &$form_state) {
// File entity version > 01.03.2013
media_browser_plus_form_file_entity_admin_files_alter($form, $form_state);
unset($form['filter'], $form['admin']);
}
/**
* Implements hook_form_FORM_ID_alter() for file_entity_admin_files().
*
* Alter the media browser from to enable new UI.
*/
function media_browser_plus_form_file_entity_admin_files_alter(&$form, &$form_state) {
$path = drupal_get_path('module', 'media_browser_plus');
// Add css for both views.
$form['#attached']['library'][] = array(
'media_browser_plus',
'media_browser_plus',
);
$form['#attached']['library'][] = array(
'media_browser_plus',
'colorbox',
);
// Set base href for javascript requests.
$settings = media_browser_plus_main_view_javascript_settings();
$form['#attached']['js'][] = array(
'type' => 'setting',
'data' => $settings,
);
// Adding extended js and css.
$form['#attached']['js'][] = $path . '/js/media_browser_plus.admin.js';
drupal_add_library('system', 'ui.draggable');
drupal_add_library('system', 'ui.droppable');
// Check which mode we are in.
$menu_item = menu_get_item();
$show_list_browser = !isset($menu_item['map'][3]) || $menu_item['map'][3] != 'thumbnails';
if (variable_get('media_browser_plus_thumbnails_as_default_browser', TRUE) && !empty($menu_item['map']) && count($menu_item['map']) == 3) {
$show_list_browser = FALSE;
}
if ($show_list_browser) {
return _media_browser_plus_media_admin_list_alter($form, $form_state);
}
// Check access rights.
if (!media_browser_plus_access('media grid view')) {
drupal_access_denied();
return array();
}
// Removing options form part.
unset($form['options']);
if (!media_browser_plus_access('media list view') || !media_browser_plus_access('media grid view')) {
unset($form['switch']);
}
unset($form['pager']);
$form['files'] = media_browser_plus_grid_view_form();
$form['media-basket'] = media_browser_plus_media_basket_form();
if (media_browser_plus_access('preview media')) {
$form['media-preview'] = media_browser_plus_media_preview_form();
}
return $form;
}
/**
* Validation handler.
*/
function media_browser_plus_file_entity_admin_files_validate($form, &$form_state) {
// Copy input files to values.
if ($form_state['values']['op'] != t('Download')) {
$form_state['values']['files'] = isset($form_state['input']['files']) ? $form_state['input']['files'] : NULL;
// Call the old validate.
form_load_include($form_state, 'inc', 'file_entity', 'file_entity.admin');
file_entity_admin_files_validate($form, $form_state);
}
}
/**
* Submit handler for file edit.
*/
function media_browser_plus_edit_multiple_redirect($form, &$form_state) {
$fids = array_keys(array_filter($form_state['values']['files']));
$fid = reset($fids);
$fids = implode(' ', $fids);
$folder = NULL;
if (($file = file_load($fid)) && isset($file->field_folder[LANGUAGE_NONE][0])) {
$folder = $file->field_folder[LANGUAGE_NONE][0]['tid'];
}
$form_state['redirect'] = array(
'admin/content/file/edit_multiple/' . $fids,
array(
'query' => array(
'destination' => $_GET['q'] . '?folder=' . $folder,
),
),
);
}
/**
* Submit handler for file deletion.
*/
function media_browser_plus_delete_multiple_redirect($form, &$form_state) {
$fids = array_keys(array_filter($form_state['values']['files']));
$fid = reset($fids);
$fids = implode(' ', $fids);
$folder = NULL;
if (($file = file_load($fid)) && isset($file->field_folder[LANGUAGE_NONE][0])) {
$folder = $file->field_folder[LANGUAGE_NONE][0]['tid'];
}
$form_state['redirect'] = array(
'admin/content/file/delete_multiple/' . $fids,
array(
'query' => array(
'destination' => 'admin/content/file/thumbnails?folder=' . $folder,
),
),
);
}
/**
* Alter the media list display.
*/
function _media_browser_plus_media_admin_list_alter(&$form, &$form_state) {
global $user;
if (array_key_exists('operation', $form_state['input']) == TRUE && $form_state['input']['operation'] == 'delete') {
// Deleting operation is running, don't interfere.
}
else {
// Check access rights.
if (!media_browser_plus_access('media list view')) {
drupal_access_denied();
return array();
}
$header = array(
'title' => array(
'data' => t('Title'),
'specifier' => 'filename',
'type' => 'property',
'field' => 'f.filename',
),
'type' => array(
'data' => t('Type'),
'specifier' => 'filemime',
'type' => 'property',
'field' => 'f.filemime',
),
'folder' => array(
'data' => t('Folder'),
'specifier' => array(
'field' => 'field_folder',
'column' => 'tid',
),
'type' => 'field',
),
'size' => array(
'data' => t('Size'),
'specifier' => 'filesize',
'type' => 'property',
'field' => 'f.filesize',
),
'author' => array(
'data' => t('Author'),
'specifier' => 'uid',
'type' => 'property',
'field' => 'u.name',
),
'timestamp' => array(
'data' => t('Updated'),
'specifier' => 'timestamp',
'type' => 'property',
'sort' => 'desc',
'field' => 'f.timestamp',
),
'operations' => array(
'data' => t('Operations'),
),
);
$destination = drupal_get_destination();
$options = array();
$media_entities = media_browser_plus_load_multiple(array(
'conditions' => array(),
'header' => $header,
));
// Gather the data from each media object.
foreach ($media_entities->results as $media) {
// Load folder name.
$folder = '';
if (isset($media->field_folder[LANGUAGE_NONE][0]['tid']) && ($term = taxonomy_term_load($media->field_folder[LANGUAGE_NONE][0]['tid']))) {
$folder = $term->name;
}
// Load user object if media author is not the current user.
if ($media->uid != $user->uid) {
$media_user = user_load($media->uid);
}
else {
// Media author is the same as current user no need to load the user.
$media_user = $user;
}
$options[$media->fid] = array(
'title' => theme('media_link', array(
'file' => $media,
)),
'folder' => $folder,
'type' => check_plain($media->filemime),
'size' => format_size($media->filesize),
'author' => theme('username', array(
'account' => $media_user,
)),
'timestamp' => format_date($media->timestamp, 'short'),
);
$options[$media->fid]['operations'] = l(t('edit'), 'file/' . $media->fid . '/edit', array(
'query' => $destination,
));
}
// Grab old options.
if (array_key_exists('options', $form)) {
$ops = $form['options']['operation']['#options'];
}
else {
$ops = array();
}
// Redo the options form.
unset($form['options']);
$form['options'] = array(
'#type' => 'fieldset',
'#title' => t('Operations'),
'#weight' => -10,
'operations' => array(
'#type' => 'container',
'#prefix' => '<div class="container-inline">',
'#suffix' => '</div>',
'operation' => array(
'#type' => 'select',
'#options' => $ops,
'#default_value' => 'delete',
),
'submit' => array(
'#type' => 'submit',
'#value' => t('Submit'),
'#submit' => $form['#submit'],
),
),
'folder' => array(
'#type' => 'container',
'selected_folder' => array(
'#type' => 'select',
'#title' => t('Media Folder*'),
'#required' => FALSE,
'#options' => _media_browser_plus_folder_list(),
),
'submit' => array(
'#type' => 'container',
'#prefix' => '<div class="container-inline">',
'#suffix' => '</div>',
'submit' => array(
'#type' => 'submit',
'#value' => t('Change Folder'),
'#submit' => array(
'media_browser_plus_media_admin_folder_change_submit',
),
),
'notice' => array(
'#type' => 'item',
'#markup' => t('*: change will be applied to ALL selected media files'),
),
),
),
);
$form['files']['#header'] = $header;
$form['files']['#options'] = $options;
// Reset pager.
$form['pager'] = array(
'#markup' => _media_browser_plus_pager($media_entities->page, $media_entities->pages),
);
}
return $form;
}
/**
* Changes the folder of the submitted media items.
*/
function media_browser_plus_media_admin_folder_change_submit(&$form, &$form_state) {
// Get IDs.
$fids = array_keys(array_filter($form_state['values']['files']));
$folder = (int) $form_state['values']['selected_folder'];
$media_entities = file_load_multiple($fids);
// Apply folder.
foreach ($media_entities as $media) {
if (isset($media->field_folder[LANGUAGE_NONE][0]['tid'])) {
$media->field_folder[LANGUAGE_NONE][0]['tid'] = $folder;
}
else {
$media->field_folder = array(
LANGUAGE_NONE => array(
array(
'tid' => $folder,
),
),
);
}
media_browser_plus_move_file($folder, $media);
}
drupal_set_message(t('Folder changes applied successfully'));
}
Functions
Name![]() |
Description |
---|---|
media_browser_plus_delete_multiple_redirect | Submit handler for file deletion. |
media_browser_plus_edit_multiple_redirect | Submit handler for file edit. |
media_browser_plus_file_entity_admin_files_validate | Validation handler. |
media_browser_plus_form_file_entity_admin_files_alter | Implements hook_form_FORM_ID_alter() for file_entity_admin_files(). |
media_browser_plus_form_file_entity_admin_file_alter | Implements hook_form_FORM_ID_alter() for file_entity_admin_files(). |
media_browser_plus_media_admin_folder_change_submit | Changes the folder of the submitted media items. |
_media_browser_plus_media_admin_list_alter | Alter the media list display. |