t('Rounded corners'), 'description' => t('Presents the panes or panels with a rounded corner box around them'), 'render region' => 'panels_rounded_corners_style_render_region', 'render pane' => 'panels_rounded_corners_style_render_pane', 'settings form' => 'panels_rounded_corners_style_settings_form', 'hook theme' => array( 'panels_rounded_corners_box' => array( 'variables' => array('content' => NULL), 'path' => panels_get_path('plugins/styles/corners'), 'template' => 'panels-rounded-corners-box', ), ), ); /** * Render callback. * * @ingroup themeable */ function theme_panels_rounded_corners_style_render_region($vars) { $display = $vars['display']; $region_id = $vars['region_id']; $panes = $vars['panes']; $settings = $vars['settings']; $output = ''; // Determine where to put the box. If empty or 'pane' around each pane. If // 'panel' then just around the whole panel. $where = empty($settings['corner_location']) ? 'pane' : $settings['corner_location']; $print_separator = FALSE; foreach ($panes as $pane_id => $pane) { // Add the separator if we've already displayed a pane. if ($print_separator) { $output .= '
 
'; } if ($where == 'pane') { $output .= theme('panels_rounded_corners_box', array('content' => $pane)); } else { $output .= $pane; $print_separator = TRUE; } } if ($where == 'panel') { $output = theme('panels_rounded_corners_box', array('content' => $output)); } panels_add_rounded_corners_css($display, $where); return $output; } function panels_add_rounded_corners_css($display, $where) { static $displays_used = array(); if (empty($displays_used[$display->css_id])) { panels_rounded_corners_css($display, $where); $displays_used[$display->css_id] = TRUE; } } /** * Render callback for a single pane. */ function theme_panels_rounded_corners_style_render_pane($vars) { $content = $vars['content']; $pane = $vars['pane']; $display = $vars['display']; if (empty($content->content)) { return; } $output = theme('panels_pane', array('content' => $content, 'pane' => $pane, 'display' => $display)); // Just stick a box around the standard theme_panels_pane. $output = theme('panels_rounded_corners_box', array('content' => $output)); panels_add_rounded_corners_css($display, 'pane'); return $output; } /** * Settings form callback. */ function panels_rounded_corners_style_settings_form($style_settings) { $form['corner_location'] = array( '#type' => 'select', '#title' => t('Box around'), '#options' => array( 'pane' => t('Each pane'), 'panel' => t('Each region'), ), '#default_value' => (isset($style_settings['corner_location'])) ? $style_settings['corner_location'] : 'ul', '#description' => t('Choose whether to include the box around each pane (piece of content) or region (each column or region)'), ); return $form; } /** * Generates the dynamic CSS. * * @param $display * A Panels display object. */ function panels_rounded_corners_css($display) { $idstr = empty($display->css_id) ? '.rounded-corner' : "#$display->css_id"; $css_id = 'rounded-corner:' . $idstr; ctools_include('css'); $filename = ctools_css_retrieve($css_id); if (!$filename) { $filename = ctools_css_store($css_id, _panels_rounded_corners_css($idstr), FALSE); } drupal_add_css($filename, array('preprocess' => TRUE)); } /** * Generates the dynamic CSS. */ function _panels_rounded_corners_css($idstr) { $url = panels_get_path('plugins/styles/corners', TRUE); $css = <<