function media_browser_plus_media_filter in Media Browser Plus 7
Same name and namespace in other branches
- 7.2 includes/media_browser_plus.pages.inc \media_browser_plus_media_filter()
@todo Document what this function does.
1 string reference to 'media_browser_plus_media_filter'
- media_browser_plus_menu in ./
media_browser_plus.module - Implements hook_menu().
File
- includes/
media_browser_plus.pages.inc, line 113 - Common pages for the media browser plus module.
Code
function media_browser_plus_media_filter() {
$form = array();
$path = drupal_get_path('module', 'media_browser_plus');
$form['#attached']['js'][] = $path . '/js/media_browser_plus.filter.js';
$form['#attached']['css'][] = $path . '/css/media_browser_plus.filter.css';
// Getting the media folders for filter selection
$folders = _media_browser_plus_folder_list();
// Setting default filter selections - overwritten when a filter is active.
$selected_types = array_keys(media_type_get_types());
$selected_folders = array_keys($folders);
// Apply filter settings.
if (isset($_SESSION['media-filter'])) {
if (count($_SESSION['media-filter']['type'])) {
$selected_types = explode(',', $_SESSION['media-filter']['type']);
}
if (count($_SESSION['media-filter']['field_folder'])) {
$selected_folders = $_SESSION['media-filter']['field_folder'];
}
}
// Check for tags.
$field_tags = '';
if (isset($_SESSION['media-filter']['field_tags']) && count($_SESSION['media-filter']['field_tags'])) {
// Use name buffer array to be able to nicely implode with clean comma
// seperation.
$names = array();
foreach ($_SESSION['media-filter']['field_tags'] as $tid) {
$term = taxonomy_term_load($tid);
$names[] = $term->name;
}
$field_tags = implode(', ', $names);
}
// Get media types.
$types = media_type_get_types();
$media_types = array();
// User labels as display and value for backend.
foreach ($types as $value => $type) {
$access = TRUE;
foreach (module_implements('media_type_access') as $module) {
$access = module_invoke($module, 'media_type_access', $type);
if ($access === FALSE) {
break;
}
else {
$access = TRUE;
}
}
if ($access) {
$media_types[$value] = $type->label;
}
}
$close = 0;
if (isset($_SESSION['media-filter-autoclose'])) {
$close = (int) $_SESSION['media-filter-autoclose'];
}
$settings['media_browser_plus'] = array(
'autoclose' => $close,
);
// Reset otherwise it always auto closes.
unset($_SESSION['media-filter-autoclose']);
// Attach settings.
$form['#attached']['js'][] = array(
'type' => 'setting',
'data' => $settings,
);
$form['filter'] = array(
'#type' => 'fieldset',
'#title' => isset($_SESSION['media-filter']) ? t('Show only items where') : t('Create Filter'),
'#collapsible' => FALSE,
'#collapsed' => FALSE,
'#weight' => -10,
'#prefix' => '<div id="media-preview-wrapper">',
'#suffix' => '</div>',
'#attributes' => array(
'id' => 'media-filter',
),
'column_one' => array(
'#type' => 'container',
'#prefix' => '<div style="float:left; padding-right: 20px;">',
'#suffix' => '</div>',
'#attributes' => array(),
'filename' => array(
'#type' => 'textfield',
'#title' => t('Title'),
'#maxlength' => 125,
'#size' => 40,
'#value' => isset($_SESSION['media-filter']['filename']) ? $_SESSION['media-filter']['filename'] : '',
'#required' => FALSE,
),
'field_tags' => array(
'#attributes' => array(
'id' => 'media-field-tags-filter',
),
'#type' => 'textfield',
'#value' => $field_tags,
'#field_name' => 'field_tags',
'#columns' => array(
'tid',
),
'#title' => t('Tags'),
'#size' => 40,
'#description' => t('Enter a comma-separated list of words to filter your media.'),
'#required' => FALSE,
'#delta' => 0,
'#language' => LANGUAGE_NONE,
'#type' => 'textfield',
'#autocomplete_path' => 'taxonomy/autocomplete/field_tags',
'#element_validate' => array(
'media_browser_plus_prepare_taxonomy_autocomplete_validate',
'taxonomy_autocomplete_validate',
),
),
'prevent_autoclose' => array(
'#type' => 'checkbox',
'#weight' => 10,
'#attributes' => array(
'id' => array(
'media-filter-autoclose',
),
),
'#title' => t('prevent window from closing after form submit'),
'#default_value' => isset($_SESSION['media-filter']['prevent_autoclose']) ? (int) $_SESSION['media-filter']['prevent_autoclose'] : 0,
),
),
'column_two' => array(
'#type' => 'container',
'#prefix' => '<div style="float:left; padding-right: 20px;">',
'#suffix' => '</div>',
'#attributes' => array(),
'criterias' => array(
'#type' => 'container',
'#attributes' => array(),
'media_type' => array(
'#type' => 'select',
'#title' => t('Media Type'),
'#multiple' => TRUE,
'#options' => $media_types,
'#default_value' => $selected_types,
'#weight' => 5,
'#required' => FALSE,
'#attributes' => array(
'class' => array(
'media-filter-select',
),
),
'#prefix' => '<div style="float:left; padding-right: 20px;">',
'#suffix' => '</div>',
),
'field_folder' => array(
'#type' => 'select',
'#title' => t('Media Folder'),
'#multiple' => TRUE,
'#required' => FALSE,
'#options' => $folders,
'#default_value' => $selected_folders,
'#weight' => 6,
'#attributes' => array(
'class' => array(
'media-filter-select',
),
),
'#prefix' => '<div style="float:left; padding-right: 20px;">',
'#suffix' => '</div>',
),
'include_subfolders' => array(
'#type' => 'checkbox',
'#weight' => 10,
'#attributes' => array(
'class' => array(
'media-filter',
),
),
'#title' => t('include subfolders of selected folders'),
'#default_value' => isset($_SESSION['media-filter']['include_subfolders']) ? $_SESSION['media-filter']['include_subfolders'] : 0,
),
),
),
'column_three' => array(
'#type' => 'container',
'#prefix' => '<div style="float:left; padding-right: 20px;">',
'#suffix' => '</div>',
'#attributes' => array(),
'submit' => array(
'#type' => 'submit',
'#value' => isset($_SESSION['media-filter']) ? t('Update Filter') : t('Create Filter'),
'#submit' => array(
'media_browser_plus_media_filter_submit',
),
'#limit_validation_errors' => array(),
'#validate' => array(
'media_browser_plus_media_filter_validate',
),
'#prefix' => '<div>',
'#suffix' => '</div>',
),
),
);
if (isset($_SESSION['media-filter'])) {
$form['filter']['column_three']['clear'] = array(
'#type' => 'submit',
'#value' => t('Reset Filter'),
'#submit' => array(
'media_browser_plus_media_filter_clear',
),
'#limit_validation_errors' => array(),
'#validate' => array(
'media_browser_plus_media_filter_validate',
),
'#prefix' => '<div>',
'#suffix' => '</div>',
);
}
return $form;
}