function _views_content_get_context_from_display in Chaos Tool Suite (ctools) 7
Get the child plugin for a view context display.
This can return both the context and relationship style. The $required parameter is used to distinguish if context is required or not, so we know whether we need it suitable as a pure context (i.e, no context required) or a relationship (i.e, context required).
4 calls to _views_content_get_context_from_display()
- views_content_context_view_get_child in views_content/
plugins/ contexts/ view.inc - views_content_context_view_get_children in views_content/
plugins/ contexts/ view.inc - views_content_view_from_argument_get_child in views_content/
plugins/ relationships/ view_from_argument.inc - views_content_view_from_argument_get_children in views_content/
plugins/ relationships/ view_from_argument.inc
File
- views_content/
views_content.module, line 224 - Provides views as panels content, configurable by the administrator. Each view provided as panel content must be configured in advance, but once configured, building panels with views is a little bit simpler.
Code
function _views_content_get_context_from_display($view, $id, $parent, $required = TRUE) {
$title = views_content_get_display_title($view, $id, 'admin_title');
$description = $view->description;
$contexts = array();
$arguments = $view->display_handler
->get_argument_input();
ctools_include('views');
foreach ($arguments as $argument) {
$argument['label'] = $argument['name'] ? $argument['name'] : '';
$contexts[] = ctools_views_get_argument_context($argument);
}
$pass = FALSE;
if ($required) {
// If context is required, make sure we have at least one optional
// or required context.
foreach ($contexts as $context) {
if (is_object($context)) {
$pass = TRUE;
break;
}
}
if (!$pass) {
return;
}
}
else {
// If context is not required, then having any required context
// causes a fail.
foreach ($contexts as $context) {
if (is_object($context) && get_class($context) == 'ctools_context_required') {
return;
}
}
// Since we know we don't want contexts, we an unset this now.
$contexts = array();
}
if ($required) {
$function = 'views_content_view_from_argument_context';
}
else {
$function = 'views_content_context_view_create';
}
return array(
'title' => $title,
'description' => filter_xss_admin($description),
'required context' => $contexts,
'keyword' => 'view',
'context' => $function,
'context name' => $view->name,
'name' => $parent . ':' . $view->name . '-' . $id,
'view name' => $view->name,
'view display id' => $id,
);
}