diff options
author | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-10-05 02:43:01 +0000 |
---|---|---|
committer | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-10-05 02:43:01 +0000 |
commit | 93eb8b341392b5a04488d0d3a0a9d8136da6a2cf (patch) | |
tree | c89749ab99ae2c368be24221b4603a9d4886f69e | |
parent | 03f9a31663c2aa8e1e62f7c8ee8d8eefbb1444db (diff) | |
download | brdo-93eb8b341392b5a04488d0d3a0a9d8136da6a2cf.tar.gz brdo-93eb8b341392b5a04488d0d3a0a9d8136da6a2cf.tar.bz2 |
#60552 by JohnAlbin: Added Add region.tpl.php for all regions in themes.
-rw-r--r-- | includes/common.inc | 4 | ||||
-rw-r--r-- | includes/theme.inc | 19 | ||||
-rw-r--r-- | modules/block/block-admin-display-form.tpl.php | 4 | ||||
-rw-r--r-- | modules/block/block.css | 2 | ||||
-rw-r--r-- | modules/block/block.test | 14 | ||||
-rw-r--r-- | modules/system/page.tpl.php | 20 | ||||
-rw-r--r-- | modules/system/region.tpl.php | 32 | ||||
-rw-r--r-- | modules/system/system.module | 13 | ||||
-rw-r--r-- | themes/garland/page.tpl.php | 4 | ||||
-rw-r--r-- | themes/garland/style-rtl.css | 2 | ||||
-rw-r--r-- | themes/garland/style.css | 28 | ||||
-rw-r--r-- | themes/garland/template.php | 9 |
12 files changed, 108 insertions, 43 deletions
diff --git a/includes/common.inc b/includes/common.inc index e6630ca79..ba1218d46 100644 --- a/includes/common.inc +++ b/includes/common.inc @@ -4808,6 +4808,10 @@ function drupal_common_theme() { 'install_page' => array( 'arguments' => array('content' => NULL), ), + 'region' => array( + 'arguments' => array('elements' => NULL), + 'template' => 'region', + ), 'task_list' => array( 'arguments' => array('items' => NULL, 'active' => NULL), ), diff --git a/includes/theme.inc b/includes/theme.inc index 73fdf8575..20571c178 100644 --- a/includes/theme.inc +++ b/includes/theme.inc @@ -2404,3 +2404,22 @@ function template_preprocess_maintenance_page(&$variables) { $variables['template_file'] = 'maintenance-page-offline'; } } + +/** + * Preprocess variables for region.tpl.php + * + * Prepare the values passed to the theme_region function to be passed into a + * pluggable template engine. Uses the region name to generate a template file + * suggestions. If none are found, the default region.tpl.php is used. + * + * @see region.tpl.php + */ +function template_preprocess_region(&$variables) { + // Create the $content variable that templates expect. + $variables['content'] = $variables['elements']['#children']; + $variables['region'] = $variables['elements']['#region']; + + $region = 'region-' . str_replace('_', '-', $variables['region']); + $variables['classes_array'][] = $region; + $variables['template_files'][] = $region; +} diff --git a/modules/block/block-admin-display-form.tpl.php b/modules/block/block-admin-display-form.tpl.php index 5195f4af1..f7c9b1cf6 100644 --- a/modules/block/block-admin-display-form.tpl.php +++ b/modules/block/block-admin-display-form.tpl.php @@ -45,8 +45,8 @@ <tbody> <?php $row = 0; ?> <?php foreach ($block_regions as $region => $title): ?> - <tr class="region region-<?php print $region?>"> - <td colspan="5" class="region"><?php print $title; ?></td> + <tr class="region-title region-title-<?php print $region?>"> + <td colspan="5"><?php print $title; ?></td> </tr> <tr class="region-message region-<?php print $region?>-message <?php print empty($block_listing[$region]) ? 'region-empty' : 'region-populated'; ?>"> <td colspan="5"><em><?php print t('No blocks in this region'); ?></em></td> diff --git a/modules/block/block.css b/modules/block/block.css index 3d579ee6c..56ba1c560 100644 --- a/modules/block/block.css +++ b/modules/block/block.css @@ -1,6 +1,6 @@ /* $Id$ */ -#blocks td.region { +#blocks tr.region-title td { font-weight: bold; } #blocks tr.region-message { diff --git a/modules/block/block.test b/modules/block/block.test index 085d5c36a..02b774ca8 100644 --- a/modules/block/block.test +++ b/modules/block/block.test @@ -26,10 +26,10 @@ class BlockTestCase extends DrupalWebTestCase { // Define the existing regions $this->regions = array(); - $this->regions[] = array('name' => 'header', 'id' => 'header-region'); - $this->regions[] = array('name' => 'sidebar_first', 'id' => 'sidebar-first'); - $this->regions[] = array('name' => 'content', 'id' => 'center'); - $this->regions[] = array('name' => 'sidebar_second', 'id' => 'sidebar-second'); + $this->regions[] = array('name' => 'header', 'class' => 'region region-header clearfix'); + $this->regions[] = array('name' => 'sidebar_first'); + $this->regions[] = array('name' => 'content'); + $this->regions[] = array('name' => 'sidebar_second'); $this->regions[] = array('name' => 'footer'); } @@ -193,8 +193,8 @@ class BlockTestCase extends DrupalWebTestCase { function moveBlockToRegion($block, $region) { // If an id for an region hasn't been specified, we assume it's the same as the name. - if (!(isset($region['id']))) { - $region['id'] = $region['name']; + if (!(isset($region['class']))) { + $region['class'] = 'region region-' . str_replace('_', '-', $region['name']); } // Set the created block to a specific region. @@ -209,7 +209,7 @@ class BlockTestCase extends DrupalWebTestCase { $this->assertText(t($block['title']), t('Block successfully being displayed on the page.')); // Confirm that the custom block was found at the proper region. - $xpath = '//div[@id="' . $region['id'] . '"]//div[@id="block-' . $block['module'] . '-' . $block['delta'] . '"]/*'; + $xpath = '//div[@class="' . $region['class'] . '"]//div[@id="block-' . $block['module'] . '-' . $block['delta'] . '"]/*'; $this->assertFieldByXPath($xpath, FALSE, t('Custom block found in %region_name region.', array('%region_name' => $region['name']))); } } diff --git a/modules/system/page.tpl.php b/modules/system/page.tpl.php index 417a18c3f..c7c0d5526 100644 --- a/modules/system/page.tpl.php +++ b/modules/system/page.tpl.php @@ -86,11 +86,7 @@ </div> <!-- /#name-and-slogan --> <?php endif; ?> - <?php if ($page['header']): ?> - <div id="header-region" class="region"> - <?php print render($page['header']); ?> - </div> - <?php endif; ?> + <?php print render($page['header']); ?> </div></div> <!-- /.section, /#header --> @@ -114,20 +110,18 @@ <?php if ($tabs): ?><div class="tabs"><?php print $tabs; ?></div><?php endif; ?> <?php print render($page['help']); ?> <?php if ($action_links): ?><ul class="action-links"><?php print $action_links; ?></ul><?php endif; ?> - <div id="content-area" class="region"> - <?php print render($page['content']); ?> - </div> <!-- /#content-area --> + <?php print render($page['content']); ?> <?php print $feed_icons; ?> </div></div> <!-- /.section, /#content --> <?php if ($page['sidebar_first']): ?> - <div id="sidebar-first" class="column sidebar"><div class="section region"> + <div id="sidebar-first" class="column sidebar"><div class="section"> <?php print render($page['sidebar_first']); ?> </div></div> <!-- /.section, /#sidebar-first --> <?php endif; ?> <?php if ($page['sidebar_second']): ?> - <div id="sidebar-second" class="column sidebar"><div class="section region"> + <div id="sidebar-second" class="column sidebar"><div class="section"> <?php print render($page['sidebar_second']); ?> </div></div> <!-- /.section, /#sidebar-second --> <?php endif; ?> @@ -136,11 +130,7 @@ <div id="footer"><div class="section"> <?php print theme('links', $secondary_menu, array('id' => 'secondary-menu', 'class' => array('links', 'clearfix')), t('Secondary menu')); ?> - <?php if ($page['footer']): ?> - <div id="footer-region" class="region"> - <?php print render($page['footer']); ?> - </div> - <?php endif; ?> + <?php print render($page['footer']); ?> </div></div> <!-- /.section, /#footer --> </div></div> <!-- /#page, /#page-wrapper --> diff --git a/modules/system/region.tpl.php b/modules/system/region.tpl.php new file mode 100644 index 000000000..8d10e78df --- /dev/null +++ b/modules/system/region.tpl.php @@ -0,0 +1,32 @@ +<?php +// $Id$ + +/** + * @file + * Default theme implementation to display a region. + * + * Available variables: + * - $content: The content for this region, typically blocks. + * - $classes: String of classes that can be used to style contextually through + * CSS. It can be manipulated through the variable $classes_array from + * preprocess functions. The default values can be one or more of the following: + * - region: The current template type, i.e., "theming hook". + * - region-[name]: The name of the region with underscores replaced with + * dashes. For example, the page_top region would have a region-page-top class. + * - $region: The name of the region variable as defined in the theme's .info file. + * + * Helper variables: + * - $classes_array: Array of html class attribute values. It is flattened + * into a string within the variable $classes. + * - $is_admin: Flags true when the current user is an administrator. + * - $is_front: Flags true when presented in the front page. + * - $logged_in: Flags true when the current user is a logged-in member. + * + * @see template_preprocess() + * @see template_preprocess_region() + * @see template_process() + */ +?> +<div class="<?php print $classes; ?>"> + <?php print $content; ?> +</div> diff --git a/modules/system/system.module b/modules/system/system.module index 6a5d8187c..4464e6c54 100644 --- a/modules/system/system.module +++ b/modules/system/system.module @@ -2714,7 +2714,6 @@ function theme_system_compact_link() { return $output; } - /** * Send Drupal and the major version number in the META GENERATOR HTML. * @@ -2802,6 +2801,18 @@ function system_page_build(&$page) { '#markup' => theme('system_run_cron_image', 'system/run-cron-image'), ); } + + // Find all block regions so they can be rendered. + $regions = system_region_list($GLOBALS['theme']); + + // Load all region content assigned via blocks. + foreach (array_keys($regions) as $region) { + // Don't render empty regions. + if (!empty($page[$region])) { + $page[$region]['#theme_wrappers'][] = 'region'; + $page[$region]['#region'] = $region; + } + } } /** diff --git a/themes/garland/page.tpl.php b/themes/garland/page.tpl.php index fffc233b1..ca3b563b8 100644 --- a/themes/garland/page.tpl.php +++ b/themes/garland/page.tpl.php @@ -1,7 +1,7 @@ <?php // $Id$ ?> - <div id="header-region" class="clearfix"><?php print render($page['header']); ?></div> + <?php print render($page['header']); ?> <div id="wrapper"> <div id="container" class="clearfix"> @@ -42,7 +42,7 @@ <?php print render($page['content']); ?> </div> <?php print $feed_icons ?> - <div id="footer"><?php print render($page['footer']) ?></div> + <?php print render($page['footer']) ?> </div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center --> <?php if ($page['sidebar_second']): ?> diff --git a/themes/garland/style-rtl.css b/themes/garland/style-rtl.css index 71fb9be81..729f9fad9 100644 --- a/themes/garland/style-rtl.css +++ b/themes/garland/style-rtl.css @@ -72,7 +72,7 @@ dl dd { margin: 2em 0 1em 0.5em; } -#header-region h2 { +.region-header h2 { margin: 0 0 0 1em; } diff --git a/themes/garland/style.css b/themes/garland/style.css index 801ed1a47..2b1f7d54a 100644 --- a/themes/garland/style.css +++ b/themes/garland/style.css @@ -218,7 +218,7 @@ tr.even td.active { background-color: #e6f1f7; } -td.region, td.module, td.container, td.category { +td.region-title, td.module, td.container, td.category { border-top: 1.5em solid #fff; border-bottom: 1px solid #b4d7f0; background-color: #d4e7f3; @@ -226,7 +226,7 @@ td.region, td.module, td.container, td.category { font-weight: bold; } -tr:first-child td.region, tr:first-child td.module, tr:first-child td.container, tr:first-child td.category { +tr:first-child td.region-title, tr:first-child td.module, tr:first-child td.container, tr:first-child td.category { border-top-width: 0; } @@ -293,17 +293,17 @@ table .form-button, table .form-submit { /** * Layout */ -#header-region { +.region-header { min-height: 1em; background: #d2e6f3 url(images/bg-navigation.png) repeat-x 50% 100%; } -#header-region .block { +.region-header .block { display: block; margin: 0 1em; } -#header-region .block-region { +.region-header .block-region { display: block; margin: 0 0.5em 1em; padding: 0.5em; @@ -311,7 +311,7 @@ table .form-button, table .form-submit { top: 0.5em; } -#header-region * { +.region-header * { display: inline; line-height: 1.5em; margin-top: 0; @@ -319,19 +319,19 @@ table .form-button, table .form-submit { } /* Prevent the previous directive from showing the content of script elements in Mozilla browsers. */ -#header-region script { +.region-header script { display: none; } -#header-region p, #header-region img { +.region-header p, .region-header img { margin-top: 0.5em; } -#header-region h2 { +.region-header h2 { margin: 0 1em 0 0; /* LTR */ } -#header-region h3, #header-region label, #header-region li { +.region-header h3, .region-header label, .region-header li { margin: 0 1em; padding: 0; background: none; @@ -471,7 +471,7 @@ body.two-sidebars #squeeze { min-height: 400px; } -#wrapper #container #footer { +#wrapper #container .region-footer { float: none; clear: both; text-align: center; @@ -486,15 +486,15 @@ body.two-sidebars #squeeze { z-index: 3; } -body.sidebar-first #footer { +body.sidebar-first .region-footer { margin-left: -210px; } -body.sidebar-second #footer { +body.sidebar-second .region-footer { margin-right: -210px; } -body.two-sidebars #footer { +body.two-sidebars .region-footer { margin: 0 -210px; } diff --git a/themes/garland/template.php b/themes/garland/template.php index 560020315..154216c41 100644 --- a/themes/garland/template.php +++ b/themes/garland/template.php @@ -93,6 +93,15 @@ function garland_process_page(&$vars) { } /** + * Override or insert variables into the region template. + */ +function garland_preprocess_region(&$vars) { + if ($vars['region'] == 'header') { + $vars['classes_array'][] = 'clearfix'; + } +} + +/** * Returns the rendered local tasks. The default implementation renders * them as tabs. Overridden to split the secondary tasks. */ |