'panels_content_views', 'admin' => 'panels_admin_views', ); return $items; } /** * Output function for the 'views' content type. Outputs a views * based on the module and delta supplied in the configuration. */ function panels_content_views($conf) { $view = views_get_view($conf['view']); if ($view) { if (function_exists('views_access') && !views_access($view)) { return NULL; } $arguments = explode('/', $_GET['q']); $args = $conf['args']; foreach ($arguments as $id => $arg) { $args = str_replace("%$id", $arg, $args); } $args = preg_replace('/\\/%\d/', '', $args); $args = $args ? explode('/', $args) : array(); if ($conf['url']) { $view->url = $conf['url']; } $content = views_build_view($conf['type'], $view, $args, intval($conf['pager_id']), intval($conf['nodes_per_page'])); $title = $conf['show_title'] ? views_get_title($view, $conf['type']) : NULL; $output = theme('panels_content_views', $content, $title); } return $output; } function theme_panels_content_views($content, $title) { if ($title) { $output .= '

' . $title . '

'; } $output .= $content; return $output; } /** * Callback to perform administrative functions on the content views */ function panels_admin_views($op, &$arg, $arg2 = NULL) { switch ($op) { case 'list': $conf = $arg; $view = views_get_view($conf['view']); return 'Views: ' . $view->name . ' (' . $view->description . ')'; case 'add button': $result = db_query("SELECT name, description FROM {view_view}"); while ($view = db_fetch_object($result)) { $views[$view->name] = $view->name . ': ' . $view->description; } views_load_cache(); $default_views = _views_get_default_views(); $views_status = variable_get('views_defaults', array()); foreach ($default_views as $view) { if (!$views[$view->name] && ($views_status[$view->name] == 'enabled' || (!$views_status[$view->name] && !$view->disabled))) { $views[$view->name] = check_plain($view->name . ': ' . $view->description); } } ksort($views); $form['view'] = array( '#type' => 'select', '#options' => $views, '#title' => t('Choose a view from the views module'), ); $form['submit'] = array( '#type' => 'button', '#value' => t('Add view'), ); $form['#prefix'] = '
'; $form['#suffix'] = '
'; return $form; case 'add': if ($_POST['op'] != t('Add view')) { return; } $conf = $arg; $view = views_get_view($conf['view']); if ($view->page) { $conf['type'] = 'page'; $conf['nodes_per_page'] = $view->nodes_per_page; } else { $conf['type'] = 'block'; $conf['nodes_per_page'] = $view->nodes_per_block; } $conf['pager_id'] = 0; return $conf; case 'edit': $conf = &$arg; $form['view'] = array( '#type' => 'hidden', '#default_value' => $conf['view'], ); $form['type'] = array( '#type' => 'select', '#default_value' => $conf['type'], '#title' => t('View type'), '#description' => t('Select which type of the view to display.'), '#options' => array('page' => t('Page'), 'block' => t('Block'), 'embed' => t('Embedded')), ); $form['pager_id'] = array( '#type' => 'textfield', '#default_value' => $conf['pager_id'], '#title' => t('Pager ID'), '#size' => 4, '#description' => t('Select the numeric pager ID to use, or 0 to not have use paging. Select "1" if you aren\'t sure what this means'), ); $form['nodes_per_page'] = array( '#type' => 'textfield', '#default_value' => $conf['nodes_per_page'], '#title' => t('Posts to Display'), '#size' => 4, '#description' => t('Select the number of posts to display, or 0 to display all results.'), ); $form['args'] = array( '#type' => 'textfield', '#default_value' => $conf['args'], '#title' => t('View arguments'), '#size' => 12, '#description' => t('Arguments to send to the view as if they were part of the URL in the form of arg1/arg2/arg3. You can use %0, %1, %2, etc, to use arguments from the actual URL. For example, if your panel URL is foo/bar, and someone hits foo/bar/5 use %2 to get the 5.'), ); $form['url'] = array( '#type' => 'textfield', '#default_value' => $conf['url'], '#title' => t('Override URL'), '#size' => 12, '#description' => t('If this is set, override the View URL; this can sometimes be useful to set to the panel URL'), ); $form['show_title'] = array( '#type' => 'checkbox', '#default_value' => $conf['show_title'], '#title' => t('Display view title'), '#description' => t('If checked, the title of the view will be displayed.'), ); return $form; case 'validate': // This one has nothing to validate. $form_values = &$arg; $form = $arg2; return; case 'save': // For this one, the form values go directly into the config. $form = &$arg; return $form; } } }