class scald_plugin_display_library in Scald: Media Management made easy 7
Same name and namespace in other branches
- 6 scald_dnd_library/includes/scald_plugin_display_library.inc \scald_plugin_display_library
@file Provides a new view display for the scald library.
Hierarchy
- class \views_object
- class \views_plugin
- class \views_plugin_display
- class \views_plugin_display_page
- class \scald_plugin_display_library
- class \views_plugin_display_page
- class \views_plugin_display
- class \views_plugin
Expanded class hierarchy of scald_plugin_display_library
1 string reference to 'scald_plugin_display_library'
- scald_dnd_library_views_plugins in modules/
library/ scald_dnd_library/ includes/ scald_dnd_library.views.inc - Implements hook_views_plugins().
File
- modules/
library/ scald_dnd_library/ includes/ scald_plugin_display_library.inc, line 7 - Provides a new view display for the scald library.
View source
class scald_plugin_display_library extends views_plugin_display_page {
/**
* Overrides views_plugin_display_page::execute().
*
* The library won't go through the normal theming / page rendering
* process. Instead, we'll just fetch / render the atoms, and print
* the JSON by itself.
* We won't be returning anything, which tells Drupal that everything
* is already rendered.
*/
public function execute() {
$library = array();
$summary = array(
'criteria' => array(),
);
// Hide the links that Views would normally display, as they confuse
// DnD.
$this->view->hide_admin_links = TRUE;
// Execute the view to get all the filter that applies.
$this->view
->execute();
// And now extract a summary from all the options that were filled.
foreach ($this->view->filter as $id => $filter) {
if ($filter->options['exposed']) {
$value = $filter->value;
// For Date filters, we need to preprocess a bit the date. Well,
// ok, more than a bit...
if ($filter instanceof date_api_filter_handler) {
$dates = array();
if ($filter->operator == 'between') {
if ($value['min']) {
$d = date_make_date($value['min']);
$dates['min'] = '>' . date_format($d, $filter->format);
}
if ($value['max']) {
$d = date_make_date($value['max']);
$dates['max'] = '<' . date_format($d, $filter->format);
}
}
else {
if ($value['value']) {
$d = date_make_date($value['value']);
$dates['value'] = date_format($d, $filter->format);
}
}
$value = $dates;
}
elseif ($filter instanceof views_handler_filter_term_node_tid && is_array($value)) {
$names = array();
// When migrating to D7, use the very useful _multiple variant
// to reduce the number of queries.
foreach ($value as $tid) {
$term = taxonomy_term_load($tid);
$names[] = $term->name;
}
$value = $names;
}
elseif ($filter instanceof views_handler_filter_user_name && is_array($value)) {
$names = array();
foreach ($value as $uid) {
$account = user_load($uid);
$names[] = $account->name;
}
$value = $names;
}
elseif ($filter instanceof views_handler_filter_boolean_operator) {
if ($value == 'All') {
$value = '';
}
else {
$value = $filter->value_options[$value];
}
}
elseif (is_array($value) && isset($filter->value_options)) {
foreach ($value as $k => $key) {
if ($filter->value_options[$key]) {
$value[$k] = $filter->value_options[$key];
}
}
}
if (is_array($value)) {
$value = implode(', ', $value);
}
if ($value) {
$summary['criteria'][] = $filter->options['expose']['label'] . ': ' . $value;
}
}
}
// Add info about how we sort the view in the summary.
if (!empty($this->view->exposed_data)) {
$exposed_data = $this->view->exposed_data;
$sort_by = isset($exposed_data['sort_by']) ? $exposed_data['sort_by'] : FALSE;
if ($sort_by && isset($this->view->sort[$sort_by])) {
$label = $this->view->sort[$sort_by]->options['expose']['label'];
if (isset($exposed_data['sort_order']) && in_array($exposed_data['sort_order'], array(
'ASC',
'DESC',
))) {
$order = $exposed_data['sort_order'];
}
else {
$order = $this->view->sort[$sort_by]->options['expose']['order'];
}
$orders = array(
'ASC' => t('Ascending'),
'DESC' => t('Descending'),
);
$summary['sort'] = t('<span class="label">Sort:</span> @criteria', array(
'@criteria' => $label . ' ' . $orders[$order],
));
}
}
// Render our header based on the built summary.
$header = '<div class="summary">';
$header .= '<div class="toggle"></div><div class="title">' . t('search') . '</div>';
if (!empty($summary['sort'])) {
$header .= '<div class="sort">' . $summary['sort'] . '</div>';
}
$header .= theme('item_list', array(
'items' => $summary['criteria'],
));
$header .= '</div>';
// Prepare the "Quick add" buttons, that will appear next to the library,
// based on the user permissions.
$atom_types = scald_types();
$buttons = array(
'type' => 'ul',
'title' => NULL,
'attributes' => array(),
);
ctools_include('ajax');
ctools_include('modal');
foreach ($atom_types as $type) {
if (scald_action_permitted(new ScaldAtom($type->type), 'create')) {
$text = t($type->type);
$alt = t('Create a new !type atom', array(
'!type' => $text,
));
$buttons['items'][] = array(
'data' => ctools_modal_text_button($text, 'atom/add/' . $type->type . '/nojs', $alt, 'ctools-modal-custom-style'),
'class' => array(
'add-' . drupal_strtolower($type->type),
),
);
}
}
// Finally render the resulting library.
$view = $this->view
->render();
$messages = theme('status_messages');
$library['library'] = $messages . $view . $header;
foreach ($this->view->result as $result) {
$sid = $result->sid;
scald_dnd_library_add_item($library, $sid);
}
$library['menu'] = '<div class="scald-menu"><div class="add-buttons">' . theme('item_list', $buttons) . '</div></div>';
$library['library'] = '<div class="scald-library">' . $library['library'] . '</div>';
$library['anchor'] = '<div class="scald-anchor"></div>';
drupal_json_output($library);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
scald_plugin_display_library:: |
public | function |
Overrides views_plugin_display_page::execute(). Overrides views_plugin_display_page:: |
|
views_object:: |
public | property | Handler's definition. | |
views_object:: |
public | property | Except for displays, options for the object will be held here. | 1 |
views_object:: |
function | Collect this handler's option definition and alter them, ready for use. | ||
views_object:: |
public | function | Views handlers use a special construct function. | 4 |
views_object:: |
public | function | ||
views_object:: |
public | function | Always exports the option, regardless of the default value. | |
views_object:: |
public | function | Set default options on this object. | 1 |
views_object:: |
public | function | Set default options. | |
views_object:: |
public | function | Let the handler know what its full definition is. | |
views_object:: |
public | function | Unpack options over our existing defaults, drilling down into arrays so that defaults don't get totally blown away. | |
views_object:: |
public | function | Unpack a single option definition. | |
views_object:: |
public | function | Unpacks each handler to store translatable texts. | |
views_object:: |
public | function | ||
views_plugin:: |
public | property | The current used views display. | |
views_plugin:: |
public | property | The plugin name of this plugin, for example table or full. | |
views_plugin:: |
public | property | The plugin type of this plugin, for example style or query. | |
views_plugin:: |
public | function | Provide a list of additional theme functions for the theme info page. | |
views_plugin:: |
public | function | Return the human readable name of the display. | |
views_plugin:: |
public | function | Returns the summary of the settings in the display. | 8 |
views_plugin:: |
public | function | Provide a full list of possible theme templates used by this style. | |
views_plugin_display:: |
public | property | Stores all available display extenders. | |
views_plugin_display:: |
public | property | List of handlers for this display. | |
views_plugin_display:: |
public | property |
The top object of a view. Overrides views_plugin:: |
|
views_plugin_display:: |
public | function | Can this display accept attachments? | |
views_plugin_display:: |
public | function | Determine if the user has access to this display of the view. | |
views_plugin_display:: |
public | function | Allow displays to attach to other views. | 2 |
views_plugin_display:: |
public | function | List which sections are defaultable and what items each section contains. | 1 |
views_plugin_display:: |
public | function |
Destructor. Overrides views_object:: |
|
views_plugin_display:: |
public | function | Determine if this display should display the exposed filters widgets. | 1 |
views_plugin_display:: |
public | function | Special method to export items that have handlers. | |
views_plugin_display:: |
public | function |
Override of export_option() Overrides views_object:: |
|
views_plugin_display:: |
public | function | Special handling for plugin export. | |
views_plugin_display:: |
public | function | Special handling for the style export. | |
views_plugin_display:: |
public | function | Format a list of theme templates for output by the theme info helper. | |
views_plugin_display:: |
public | function | Returns to tokens for arguments. | |
views_plugin_display:: |
public | function | List of fields for the current display with the associated relationship. | |
views_plugin_display:: |
public | function | Get the handler object for a single handler. | |
views_plugin_display:: |
public | function | Get a full array of handlers for $type. This caches them. | |
views_plugin_display:: |
public | function | Check to see which display to use when creating links. | |
views_plugin_display:: |
public | function | Intelligently get an option either from this or default display. | |
views_plugin_display:: |
public | function | Return the base path to use for this display. | |
views_plugin_display:: |
public | function | Get the instance of a plugin, for example style or row. | |
views_plugin_display:: |
public | function | Provide the block system with any exposed widget blocks for this display. | |
views_plugin_display:: |
public | function | Displays can require a certain type of style plugin. | 1 |
views_plugin_display:: |
public | function | ||
views_plugin_display:: |
public | function | If this display creates a block, implement one of these. | |
views_plugin_display:: |
public | function | If this display creates a page with a menu item, implement it here. | |
views_plugin_display:: |
public | function | 1 | |
views_plugin_display:: |
public | function | Determine if a given option is set to use the default or current display. | |
views_plugin_display:: |
public | function | If this display is the 'default' display which contains fallback settings. | 1 |
views_plugin_display:: |
public | function | Check if the provided identifier is unique. | |
views_plugin_display:: |
public | function | If override/revert was clicked, perform the proper toggle. | |
views_plugin_display:: |
public | function | Because forms may be split up into sections, this provides an easy URL to exactly the right section. Don't override this. | |
views_plugin_display:: |
public | function | Set an option and force it to be an override. | |
views_plugin_display:: |
public | function | Fully render the display. | 1 |
views_plugin_display:: |
public | function | Set up any variables on the view prior to execution. | |
views_plugin_display:: |
public | function |
Inject anything into the query that the display handler needs. Overrides views_plugin:: |
|
views_plugin_display:: |
public | function | Render this display. | 1 |
views_plugin_display:: |
public | function | ||
views_plugin_display:: |
public | function | ||
views_plugin_display:: |
public | function | Not all display plugins will support filtering. | |
views_plugin_display:: |
public | function | Render the footer of the view. | |
views_plugin_display:: |
public | function | Render the header of the view. | |
views_plugin_display:: |
public | function | Render the 'more' link. | |
views_plugin_display:: |
public | function | Not all display plugins will suppert pager rendering. | 1 |
views_plugin_display:: |
public | function | Intelligently set an option either from this display or from the default display, if directed to do so. | |
views_plugin_display:: |
public | function | Flip the override setting for the given section. | |
views_plugin_display:: |
public | function | Special method to unpack items that have handlers. | |
views_plugin_display:: |
public | function | Special handling for plugin unpacking. | |
views_plugin_display:: |
public | function | ||
views_plugin_display:: |
public | function | Does this display uses exposed filters? | 2 |
views_plugin_display:: |
public | function | Check to see if the display can put the exposed form in a block. | |
views_plugin_display:: |
public | function | Determine if the display's style uses fields. | |
views_plugin_display:: |
public | function | Check to see if the display has some need to link to another display. | 1 |
views_plugin_display:: |
public | function | Does the display use AJAX? | |
views_plugin_display:: |
public | function | Does the display have groupby enabled? | |
views_plugin_display:: |
public | function | Does the display have a more link enabled? | |
views_plugin_display:: |
public | function | Should the enabled display more link be shown when no more items? | |
views_plugin_display:: |
public | function | Should the enabled display more link being opened in an new window? | |
views_plugin_display:: |
public | function | Does the display have custom link text? | |
views_plugin_display:: |
public | function | Does the display have a pager enabled? | 1 |
views_plugin_display:: |
public | function | Render any special blocks provided for this display. | |
views_plugin_display_page:: |
public | function | Add this display's path information to Drupal's menu system. | |
views_plugin_display_page:: |
public | function |
Provide some helpful text for the arguments. Overrides views_plugin_display:: |
|
views_plugin_display_page:: |
public | function |
Provide some helpful text for pagers. Overrides views_plugin_display:: |
|
views_plugin_display_page:: |
public | function |
The page display has a path. Overrides views_plugin_display:: |
|
views_plugin_display_page:: |
public | function |
Provide the default form for setting options. Overrides views_plugin_display:: |
1 |
views_plugin_display_page:: |
public | function |
Perform any necessary changes to the form values prior to storage. Overrides views_plugin_display:: |
1 |
views_plugin_display_page:: |
public | function |
Provide the summary for page options in the views UI. Overrides views_plugin_display:: |
1 |
views_plugin_display_page:: |
public | function |
Validate the options form. Overrides views_plugin_display:: |
|
views_plugin_display_page:: |
public | function |
Information about options for all kinds of purposes will be held here. Overrides views_plugin_display:: |
1 |
views_plugin_display_page:: |
public | function |
Check to see if the display needs a breadcrumb. Overrides views_plugin_display:: |
1 |
views_plugin_display_page:: |
public | function |
Make sure the display and all associated handlers are valid. Overrides views_plugin_display:: |