class references_dialog_plugin_display in References dialog 7
A plugin to handle defaults on a view.
Hierarchy
- class \views_object
- class \views_plugin
- class \views_plugin_display
- class \views_plugin
Expanded class hierarchy of references_dialog_plugin_display
1 string reference to 'references_dialog_plugin_display'
- references_dialog_views_plugins in ./
references_dialog.module - Implements of hook_views_plugins().
File
- views/
references_dialog_plugin_display.inc, line 13 - Contains the default display plugin.
View source
class references_dialog_plugin_display extends views_plugin_display {
function option_definition() {
$options = parent::option_definition();
// Allow the use of any style plugin.
unset($options['style_plugin']['default']);
$options['defaults']['default']['style_plugin'] = TRUE;
$options['defaults']['default']['style_options'] = FALSE;
$options['row_plugin']['default'] = 'fields';
$options['defaults']['default']['row_plugin'] = FALSE;
$options['defaults']['default']['row_options'] = FALSE;
// Set the things we actually add with this plugin.
$options['attach'] = array(
'default' => array(),
);
return $options;
}
function options_summary(&$categories, &$options) {
parent::options_summary($categories, $options);
$categories['references_dialog'] = array(
'title' => t('References Dialog'),
'column' => 'second',
'build' => array(
'#weight' => -10,
),
);
$attachables = $this
->get_option('attach');
$options['attach'] = array(
'category' => 'references_dialog',
'title' => t('Attached to'),
'value' => views_ui_truncate(implode(',', $attachables), 24),
);
}
function get_entity_type() {
// Find the entity that matches our base table.
$entities = entity_get_info();
foreach ($entities as $entity_type => $entity_info) {
if ($entity_info['base table'] == $this->view->base_table) {
return $entity_type;
}
}
}
function options_form(&$form, &$form_state) {
parent::options_form($form, $form_state);
if ($form_state['section'] == 'attach') {
// Find the entity that matches our base table.
$entities = entity_get_info();
foreach ($entities as $entity_type => $entity_info) {
if ($entity_info['base table'] == $this->view->base_table) {
break;
}
}
$attachables = references_dialog_get_search_view_attachables($entity_type);
$options = array();
foreach ($attachables as $name => $attachable) {
$options[$name] = $attachable['label'];
}
$form['attach'] = array(
'#type' => 'checkboxes',
'#options' => $options,
'#default_value' => $this
->get_option('attach'),
'#title' => t('Attach to'),
'#description' => t('Choose what to attach this view to.'),
);
}
}
function options_submit(&$form, &$form_state) {
parent::options_submit($form, $form_state);
if ($form_state['section'] == 'attach') {
$this
->set_option('attach', $this
->_sanitize_checkboxes($form_state['values']['attach']));
}
}
function _sanitize_checkboxes($boxes) {
$sanitized = array();
foreach ($boxes as $key => $box) {
if ($box) {
$sanitized[] = $box;
}
}
return $sanitized;
}
function _set_access_arguments(&$items) {
$access_plugin = $this
->get_plugin('access');
if (!isset($access_plugin)) {
$access_plugin = views_get_plugin('access', 'none');
}
// Get access callback might return an array of the callback + the dynamic arguments.
$access_plugin_callback = $access_plugin
->get_access_callback();
if (is_array($access_plugin_callback)) {
$access_arguments = array();
// Find the plugin arguments.
$access_plugin_method = array_shift($access_plugin_callback);
$access_plugin_arguments = array_shift($access_plugin_callback);
if (!is_array($access_plugin_arguments)) {
$access_plugin_arguments = array();
}
$access_arguments[0] = array(
$access_plugin_method,
&$access_plugin_arguments,
);
// Move the plugin arguments to the access arguments array.
$i = 1;
foreach ($access_plugin_arguments as $key => $value) {
if (is_int($value)) {
$access_arguments[$i] = $value;
$access_plugin_arguments[$key] = $i;
$i++;
}
}
}
else {
$access_arguments = array(
$access_plugin_callback,
);
}
foreach ($items as &$item) {
$item['access arguments'] = $access_arguments;
}
}
function execute_hook_menu() {
$items = array();
$attachables = $this
->get_option('attach');
$view_name = $this->view->name;
$display_name = $this->display->id;
foreach ($attachables as $attachable) {
$items['references-dialog/search/' . $view_name . '/' . $display_name . '/' . $attachable] = array(
'type' => MENU_CALLBACK,
'page callback' => 'references_dialog_search_view',
'page arguments' => array(
$view_name,
$display_name,
$attachable,
),
'access callback' => 'views_access',
);
}
$this
->_set_access_arguments($items);
return $items;
}
function uses_exposed() {
return TRUE;
}
/**
* Override references_plugin_display, and
* allow for other style types.
*/
function get_style_type() {
return 'normal';
}
function get_path() {
// If we have information about the instance, then use it to build the proper
// path.
if (isset($this->view->references_dialog['attachable'])) {
$attachable =& $this->view->references_dialog['attachable']['name'];
$view_name = $this->view->name;
$display_name = $this->display->id;
return 'references-dialog/search/' . $view_name . '/' . $display_name . '/' . $attachable;
}
else {
return parent::get_path();
}
}
function execute() {
// Let the world know that this is the page view we're using.
views_set_page_view($this->view);
// Prior to this being called, the $view should already be set to this
// display, and arguments should be set on the view.
$this->view
->build();
if (!empty($this->view->build_info['fail'])) {
return drupal_not_found();
}
$this->view
->get_breadcrumb(TRUE);
// And the title, which is much easier.
drupal_set_title(filter_xss_admin($this->view
->get_title()), PASS_THROUGH);
$content = $this->view
->render();
return $content;
}
function query() {
// At this point we need to see if our widget needs to inject something
// into the query in order to filter out unwanted data.
if (isset($this->view->references_dialog['attachable']['query'])) {
$this->view->references_dialog['attachable']['query']($this->view);
}
}
function render() {
$output = theme($this
->theme_functions(), array(
'view' => $this->view,
));
// Let's add the data necessary to javascript, so that we can
// act upon it there.
$js_result = array();
$entity_type = $this
->get_entity_type();
// The only safe way to determine the title of each item is to load the entities.
// We also need to know the specific
$entity_ids = array();
foreach ($this->view->result as $row => $result) {
$entity_ids[] = $result->{$this->view->base_field};
}
$entities = entity_load($entity_type, $entity_ids);
foreach ($this->view->result as $result) {
$js_result[] = array(
'entity_id' => $result->{$this->view->base_field},
'title' => entity_label($entity_type, $entities[$result->{$this->view->base_field}]),
'entity_type' => $entity_type,
);
}
drupal_add_js(drupal_get_path('module', 'references_dialog') . '/js/search-reference.js');
drupal_add_js(array(
'ReferencesDialog' => array(
'entities' => $js_result,
),
), 'setting');
return $output;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
references_dialog_plugin_display:: |
function |
When used externally, this is how a view gets run and returns
data in the format required. Overrides views_plugin_display:: |
||
references_dialog_plugin_display:: |
function | |||
references_dialog_plugin_display:: |
function | |||
references_dialog_plugin_display:: |
function |
Return the base path to use for this display. Overrides views_plugin_display:: |
||
references_dialog_plugin_display:: |
function |
Override references_plugin_display, and
allow for other style types. Overrides views_plugin_display:: |
||
references_dialog_plugin_display:: |
function |
Provide the default form for setting options. Overrides views_plugin_display:: |
||
references_dialog_plugin_display:: |
function |
Perform any necessary changes to the form values prior to storage. Overrides views_plugin_display:: |
||
references_dialog_plugin_display:: |
function |
Provide the default summary for options in the views UI. Overrides views_plugin_display:: |
||
references_dialog_plugin_display:: |
function |
Information about options for all kinds of purposes will be held here. Overrides views_plugin_display:: |
||
references_dialog_plugin_display:: |
function |
Inject anything into the query that the display handler needs. Overrides views_plugin_display:: |
||
references_dialog_plugin_display:: |
function |
Render this display. Overrides views_plugin_display:: |
||
references_dialog_plugin_display:: |
function |
Does this display uses exposed filters? Overrides views_plugin_display:: |
||
references_dialog_plugin_display:: |
function | |||
references_dialog_plugin_display:: |
function | |||
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 | Provide some helpful text for the arguments. | 1 |
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 | Provide some helpful text for pagers. | 1 |
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 | ||
views_plugin_display:: |
public | function | Check to see if the display has a 'path' field. | 1 |
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 |
Validate the options form. Overrides views_plugin:: |
1 |
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 | ||
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 | Check to see if the display needs a breadcrumb. | 1 |
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 |
Make sure the display and all associated handlers are valid. Overrides views_plugin:: |
1 |
views_plugin_display:: |
public | function | Render any special blocks provided for this display. |