class views_plugin_display_feed in Views (for Drupal 7) 6.3
Same name and namespace in other branches
- 6.2 plugins/views_plugin_display_feed.inc \views_plugin_display_feed
- 7.3 plugins/views_plugin_display_feed.inc \views_plugin_display_feed
The plugin that handles a feed, such as RSS or atom.
For the most part, feeds are page displays but with some subtle differences.
Hierarchy
- class \views_object
- class \views_plugin
- class \views_plugin_display
- class \views_plugin_display_page
- class \views_plugin_display_feed
- class \views_plugin_display_page
- class \views_plugin_display
- class \views_plugin
Expanded class hierarchy of views_plugin_display_feed
Related topics
1 string reference to 'views_plugin_display_feed'
- views_views_plugins in includes/
plugins.inc - Implementation of hook_views_plugins
File
- plugins/
views_plugin_display_feed.inc, line 14 - Contains the feed display plugin.
View source
class views_plugin_display_feed extends views_plugin_display_page {
function uses_breadcrumb() {
return FALSE;
}
function get_style_type() {
return 'feed';
}
/**
* Feeds do not go through the normal page theming mechanism. Instead, they
* go through their own little theme function and then return NULL so that
* Drupal believes that the page has already rendered itself...which it has.
*/
function execute() {
$output = $this->view
->render();
if (empty($output)) {
return drupal_not_found();
}
print $output;
}
function preview() {
if (!empty($this->view->live_preview)) {
return '<pre>' . check_plain($this->view
->render()) . '</pre>';
}
return $this->view
->render();
}
/**
* Instead of going through the standard views_view.tpl.php, delegate this
* to the style handler.
*/
function render() {
return $this->view->style_plugin
->render($this->view->result);
}
function defaultable_sections($section = NULL) {
if (in_array($section, array(
'style_options',
'style_plugin',
'row_options',
'row_plugin',
))) {
return FALSE;
}
$sections = parent::defaultable_sections($section);
// Tell views our sitename_title option belongs in the title section.
if ($section == 'title') {
$sections[] = 'sitename_title';
}
elseif (!$section) {
$sections['title'][] = 'sitename_title';
}
return $sections;
}
function option_definition() {
$options = parent::option_definition();
$options['displays'] = array(
'default' => array(),
);
// Overrides for standard stuff:
$options['style_plugin']['default'] = 'rss';
$options['style_options']['default'] = array(
'mission_description' => FALSE,
'description' => '',
);
$options['sitename_title']['default'] = FALSE;
$options['row_plugin']['default'] = '';
$options['defaults']['default']['style_plugin'] = FALSE;
$options['defaults']['default']['style_options'] = FALSE;
$options['defaults']['default']['row_plugin'] = FALSE;
$options['defaults']['default']['row_options'] = FALSE;
return $options;
}
function options_summary(&$categories, &$options) {
// It is very important to call the parent function here:
parent::options_summary($categories, $options);
// Since we're childing off the 'page' type, we'll still *call* our
// category 'page' but let's override it so it says feed settings.
$categories['page'] = array(
'title' => t('Feed settings'),
);
if ($this
->get_option('sitename_title')) {
$options['title']['value'] = t('Using the site name');
}
// I don't think we want to give feeds menus directly.
unset($options['menu']);
$displays = array_filter($this
->get_option('displays'));
if (count($displays) > 1) {
$attach_to = t('Multiple displays');
}
else {
if (count($displays) == 1) {
$display = array_shift($displays);
if (!empty($this->view->display[$display])) {
$attach_to = check_plain($this->view->display[$display]->display_title);
}
}
}
if (!isset($attach_to)) {
$attach_to = t('None');
}
$options['displays'] = array(
'category' => 'page',
'title' => t('Attach to'),
'value' => $attach_to,
);
}
/**
* Provide the default form for setting options.
*/
function options_form(&$form, &$form_state) {
// It is very important to call the parent function here.
parent::options_form($form, $form_state);
switch ($form_state['section']) {
case 'title':
$title = $form['title'];
// A little juggling to move the 'title' field beyond our checkbox.
unset($form['title']);
$form['sitename_title'] = array(
'#type' => 'checkbox',
'#title' => t('Use the site name for the title'),
'#default_value' => $this
->get_option('sitename_title'),
);
$form['title'] = $title;
$form['title']['#process'] = array(
'views_process_dependency',
);
$form['title']['#dependency'] = array(
'edit-sitename-title' => array(
FALSE,
),
);
break;
case 'displays':
$form['#title'] .= t('Attach to');
$displays = array();
foreach ($this->view->display as $display_id => $display) {
if (!empty($display->handler) && $display->handler
->accept_attachments()) {
$displays[$display_id] = $display->display_title;
}
}
$form['displays'] = array(
'#type' => 'checkboxes',
'#description' => t('The feed icon will be available only to the selected displays.'),
'#options' => $displays,
'#default_value' => $this
->get_option('displays'),
);
break;
case 'path':
$form['path']['#description'] = t('This view will be displayed by visiting this path on your site. It is recommended that the path be something like "path/%/%/feed" or "path/%/%/rss.xml", putting one % in the path for each argument you have defined in the view.');
}
}
/**
* Perform any necessary changes to the form values prior to storage.
* There is no need for this function to actually store the data.
*/
function options_submit($form, &$form_state) {
// It is very important to call the parent function here:
parent::options_submit($form, $form_state);
switch ($form_state['section']) {
case 'title':
$this
->set_option('sitename_title', $form_state['values']['sitename_title']);
break;
case 'displays':
$this
->set_option($form_state['section'], $form_state['values'][$form_state['section']]);
break;
}
}
/**
* Attach to another view.
*/
function attach_to($display_id) {
$displays = $this
->get_option('displays');
if (empty($displays[$display_id])) {
return;
}
// Defer to the feed style; it may put in meta information, and/or
// attach a feed icon.
$plugin = $this
->get_plugin();
if ($plugin) {
$clone = $this->view
->clone_view();
$clone
->set_display($this->display->id);
$clone
->build_title();
$plugin
->attach_to($display_id, $this
->get_path(), $clone
->get_title());
// Clean up
$clone
->destroy();
unset($clone);
}
}
function uses_link_display() {
return TRUE;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
views_object:: |
property | Handler's definition | ||
views_object:: |
property | Except for displays, options for the object will be held here. | 1 | |
views_object:: |
function | |||
views_object:: |
function | Set default options on this object. Called by the constructor in a complex chain to deal with backward compatibility. | 1 | |
views_object:: |
function | Set default options. For backward compatibility, it sends the options array; this is a feature that will likely disappear at some point. | ||
views_object:: |
function | Let the handler know what its full definition is. | ||
views_object:: |
function | Unpack options over our existing defaults, drilling down into arrays so that defaults don't get totally blown away. | ||
views_object:: |
function | Unpack a single option definition. | ||
views_object:: |
function | Unpacks each handler to store translatable texts. | ||
views_object:: |
function | |||
views_plugin:: |
property | The current used views display. | ||
views_plugin:: |
property | The plugin type of this plugin, for example style or query. | ||
views_plugin:: |
function | Provide a list of additional theme functions for the theme information page | ||
views_plugin:: |
function | Provide a full list of possible theme templates used by this style. | ||
views_plugin_display:: |
property | Stores all availible display extenders. | ||
views_plugin_display:: |
property | |||
views_plugin_display:: |
property |
The top object of a view. Overrides views_plugin:: |
||
views_plugin_display:: |
function | Can this display accept attachments? | ||
views_plugin_display:: |
function | Determine if the user has access to this display of the view. | ||
views_plugin_display:: |
function | Add an override button for a given section, allowing the user to change whether this info is stored on the default display or on the current display. | ||
views_plugin_display:: |
function |
Views handlers use a special construct function so that we can more
easily construct them with variable arguments. Overrides views_object:: |
||
views_plugin_display:: |
function |
Overrides views_object:: |
||
views_plugin_display:: |
function | Determine if this display should display the exposed filters widgets, so the view will know whether or not to render them. | 1 | |
views_plugin_display:: |
function | Special method to export items that have handlers. | ||
views_plugin_display:: |
function |
Override of export_option() Overrides views_object:: |
||
views_plugin_display:: |
function | Special handling for plugin export | ||
views_plugin_display:: |
function | Special handling for the style export. | ||
views_plugin_display:: |
function | Format a list of theme templates for output by the theme info helper. | ||
views_plugin_display:: |
function | Returns to tokens for arguments. | ||
views_plugin_display:: |
function | Retrieve a list of fields for the current display with the relationship associated if it exists. | ||
views_plugin_display:: |
function | Get the handler object for a single handler. | ||
views_plugin_display:: |
function | Get a full array of handlers for $type. This caches them. | ||
views_plugin_display:: |
function | Check to see which display to use when creating links within a view using this display. | ||
views_plugin_display:: |
function | Intelligently get an option either from this display or from the default display, if directed to do so. | ||
views_plugin_display:: |
function | Return the base path to use for this display. | ||
views_plugin_display:: |
function | Get the instance of a plugin, for example style or row. | ||
views_plugin_display:: |
function | Provide the block system with any exposed widget blocks for this display. | ||
views_plugin_display:: |
function | If this display creates a block, implement one of these. | ||
views_plugin_display:: |
function | If this display creates a page with a menu item, implement it here. | ||
views_plugin_display:: |
function | |||
views_plugin_display:: |
function | Determine if a given option is set to use the default display or the current display | ||
views_plugin_display:: |
function | Determine if this display is the 'default' display which contains fallback settings | 1 | |
views_plugin_display:: |
function | Check if the provided identifier is unique. | ||
views_plugin_display:: |
function | If override/revert was clicked, perform the proper toggle. | ||
views_plugin_display:: |
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:: |
function | Set an option and force it to be an override. | ||
views_plugin_display:: |
function | Set up any variables on the view prior to execution. These are separated from execute because they are extremely common and unlikely to be overridden on an individual display. | ||
views_plugin_display:: |
function |
Inject anything into the query that the display handler needs. Overrides views_plugin:: |
||
views_plugin_display:: |
function | |||
views_plugin_display:: |
function | |||
views_plugin_display:: |
function | Not all display plugins will support filtering | ||
views_plugin_display:: |
function | |||
views_plugin_display:: |
function | Legacy functions. | ||
views_plugin_display:: |
function | Render the 'more' link | ||
views_plugin_display:: |
function | Not all display plugins will suppert pager rendering. | 1 | |
views_plugin_display:: |
function | Intelligently set an option either from this display or from the default display, if directed to do so. | ||
views_plugin_display:: |
function | Flip the override setting for the given section. | ||
views_plugin_display:: |
function | Special method to unpack items that have handlers. | ||
views_plugin_display:: |
function | Special handling for plugin unpacking. | ||
views_plugin_display:: |
function | |||
views_plugin_display:: |
function | Determine if this display uses exposed filters, so the view will know whether or not to build them. | 2 | |
views_plugin_display:: |
function | Check to see if the display can put the exposed formin a block. | ||
views_plugin_display:: |
function | Determine if the display's style uses fields. | ||
views_plugin_display:: |
function | Does the display use AJAX? | ||
views_plugin_display:: |
function | Does the display have groupby enabled? | ||
views_plugin_display:: |
function | Does the display have a more link enabled? | ||
views_plugin_display:: |
function | Should the enabled display more link be shown when no more items? | ||
views_plugin_display:: |
function | Does the display have custom link text? | ||
views_plugin_display:: |
function | Does the display have a pager enabled? | 1 | |
views_plugin_display:: |
function | Render any special blocks provided for this display. | ||
views_plugin_display_feed:: |
function |
Attach to another view. Overrides views_plugin_display:: |
||
views_plugin_display_feed:: |
function |
Static member function to list which sections are defaultable
and what items each section contains. Overrides views_plugin_display:: |
||
views_plugin_display_feed:: |
function |
Feeds do not go through the normal page theming mechanism. Instead, they
go through their own little theme function and then return NULL so that
Drupal believes that the page has already rendered itself...which it has. Overrides views_plugin_display_page:: |
||
views_plugin_display_feed:: |
function |
Displays can require a certain type of style plugin. By default, they will
be 'normal'. Overrides views_plugin_display:: |
||
views_plugin_display_feed:: |
function |
Provide the default form for setting options. Overrides views_plugin_display_page:: |
||
views_plugin_display_feed:: |
function |
Perform any necessary changes to the form values prior to storage.
There is no need for this function to actually store the data. Overrides views_plugin_display_page:: |
||
views_plugin_display_feed:: |
function |
Provide the summary for page options in the views UI. Overrides views_plugin_display_page:: |
||
views_plugin_display_feed:: |
function |
Information about options for all kinds of purposes will be held here. Overrides views_plugin_display_page:: |
||
views_plugin_display_feed:: |
function |
Fully render the display for the purposes of a live preview or
some other AJAXy reason. Overrides views_plugin_display:: |
||
views_plugin_display_feed:: |
function |
Instead of going through the standard views_view.tpl.php, delegate this
to the style handler. Overrides views_plugin_display:: |
||
views_plugin_display_feed:: |
function |
Check to see if the display needs a breadcrumb Overrides views_plugin_display_page:: |
||
views_plugin_display_feed:: |
function |
Check to see if the display has some need to link to another display. Overrides views_plugin_display:: |
||
views_plugin_display_page:: |
function | Add this display's path information to Drupal's menu system. | ||
views_plugin_display_page:: |
function |
The page display has a path. Overrides views_plugin_display:: |
||
views_plugin_display_page:: |
function |
Validate the options form. Overrides views_plugin_display:: |
||
views_plugin_display_page:: |
function |
Make sure the display and all associated handlers are valid. Overrides views_plugin_display:: |