#226587 by JohnAlbin, E.Z, et al: Make sidebar regions semantic and RTL-friendly.

merge-requests/26/head
Angie Byron 2009-08-03 03:04:34 +00:00
parent 7fc6e2eaf9
commit 0bd7fcbf38
23 changed files with 156 additions and 104 deletions

View File

@ -1898,11 +1898,11 @@ function template_preprocess_page(&$variables) {
// Set up layout variable.
$variables['layout'] = 'none';
if (!empty($variables['page']['left'])) {
$variables['layout'] = 'left';
if (!empty($variables['page']['sidebar_first'])) {
$variables['layout'] = 'first';
}
if (!empty($variables['page']['right'])) {
$variables['layout'] = ($variables['layout'] == 'left') ? 'both' : 'right';
if (!empty($variables['page']['sidebar_second'])) {
$variables['layout'] = ($variables['layout'] == 'first') ? 'both' : 'second';
}
// Construct page title

View File

@ -238,11 +238,11 @@ function template_preprocess_maintenance_page(&$variables) {
// Setup layout variable.
$variables['layout'] = 'none';
if (!empty($variables['left'])) {
$variables['layout'] = 'left';
if (!empty($variables['sidebar_first'])) {
$variables['layout'] = 'first';
}
if (!empty($variables['right'])) {
$variables['layout'] = ($variables['layout'] == 'left') ? 'both' : 'right';
if (!empty($variables['sidebar_second'])) {
$variables['layout'] = ($variables['layout'] == 'first') ? 'both' : 'second';
}
// Construct page title

View File

@ -241,8 +241,8 @@ function block_page_alter($page) {
// Load all region content assigned via blocks.
foreach (array_keys($all_regions) as $region) {
// Prevent left and right regions from rendering blocks when 'show_blocks' == FALSE.
if (!empty($page['#show_blocks']) || ($region != 'left' && $region != 'right')) {
// Prevent sidebar regions from rendering blocks when 'show_blocks' == FALSE.
if (!empty($page['#show_blocks']) || (strpos($region, 'sidebar_') !== 0)) {
// Assign blocks to region.
if ($blocks = block_get_blocks_by_region($region)) {
$page[$region] = $blocks;

View File

@ -27,9 +27,9 @@ class BlockTestCase extends DrupalWebTestCase {
// Define the existing regions
$this->regions = array();
$this->regions[] = array('name' => 'header', 'id' => 'header-region');
$this->regions[] = array('name' => 'left', 'id' => 'sidebar-left');
$this->regions[] = array('name' => 'sidebar_first', 'id' => 'sidebar-first');
$this->regions[] = array('name' => 'content', 'id' => 'center');
$this->regions[] = array('name' => 'right', 'id' => 'sidebar-right');
$this->regions[] = array('name' => 'sidebar_second', 'id' => 'sidebar-second');
$this->regions[] = array('name' => 'footer');
}
@ -80,7 +80,7 @@ class BlockTestCase extends DrupalWebTestCase {
// Set the created box to a specific region.
$bid = db_query("SELECT bid FROM {box} WHERE info = :info", array(':info' => $box['info']))->fetchField();
$edit = array();
$edit['block_' . $bid . '[region]'] = 'left';
$edit['block_' . $bid . '[region]'] = $this->regions[1]['name'];
$this->drupalPost('admin/structure/block', $edit, t('Save blocks'));
// Confirm that the box is being displayed using configured text format.
@ -115,7 +115,7 @@ class BlockTestCase extends DrupalWebTestCase {
$edit['roles[2]'] = TRUE;
$this->drupalPost('admin/structure/block/configure/' . $block['module'] . '/' . $block['delta'], $edit, t('Save block'));
// Move block to the left sidebar.
// Move block to the first sidebar.
$this->moveBlockToRegion($block, $this->regions[1]);
$this->drupalGet('');
@ -171,9 +171,9 @@ class BlockTestCase extends DrupalWebTestCase {
// For convenience of developers, put the navigation block back.
$edit = array();
$edit[$block['module'] . '_' . $block['delta'] . '[region]'] = 'left';
$edit[$block['module'] . '_' . $block['delta'] . '[region]'] = $this->regions[1]['name'];
$this->drupalPost('admin/structure/block', $edit, t('Save blocks'));
$this->assertText(t('The block settings have been updated.'), t('Block successfully move to left region.'));
$this->assertText(t('The block settings have been updated.'), t('Block successfully move to first sidebar region.'));
$this->drupalPost('admin/structure/block/configure/' . $block['module'] . '/' . $block['delta'], array('title' => 'Navigation'), t('Save block'));
$this->assertText(t('The block configuration has been saved.'), t('Block title set.'));
@ -262,7 +262,7 @@ class NewDefaultThemeBlocks extends DrupalWebTestCase {
$result = db_query("SELECT * FROM {block} WHERE theme='stark'");
foreach ($result as $block) {
unset($block->theme, $block->bid);
$this->assertEqual($blocks[$block->module][$block->delta], $block, t('Block matched'));
$this->assertEqual($blocks[$block->module][$block->delta], $block, t('Block %name matched', array('%name' => $block->module . '-' . $block->delta)));
}
}
}

View File

@ -62,7 +62,7 @@ class BlogTestCase extends DrupalWebTestCase {
$this->drupalLogin($this->big_user);
// Enable the recent blog block.
$edit = array();
$edit['blog_recent[region]'] = 'right';
$edit['blog_recent[region]'] = 'sidebar_second';
$this->drupalPost('admin/structure/block', $edit, t('Save blocks'));
$this->assertResponse(200);

View File

@ -651,10 +651,10 @@ class CommentBlockFunctionalTest extends CommentHelperCase {
// Set the block to a region to confirm block is available.
$edit = array(
'comment_recent[region]' => 'left',
'comment_recent[region]' => 'sidebar_first',
);
$this->drupalPost('admin/structure/block', $edit, t('Save blocks'));
$this->assertText(t('The block settings have been updated.'), t('Block saved to left region.'));
$this->assertText(t('The block settings have been updated.'), t('Block saved to first sidebar region.'));
// Set block title and variables.
$block = array(

View File

@ -76,14 +76,14 @@ class ForumTestCase extends DrupalWebTestCase {
// Enable the active forum block.
$edit = array();
$edit['forum_active[region]'] = 'right';
$edit['forum_active[region]'] = 'sidebar_second';
$this->drupalPost('admin/structure/block', $edit, t('Save blocks'));
$this->assertResponse(200);
$this->assertText(t('The block settings have been updated.'), t('[Active forum topics] Forum block was enabled'));
// Enable the new forum block.
$edit = array();
$edit['forum_new[region]'] = 'right';
$edit['forum_new[region]'] = 'sidebar_second';
$this->drupalPost('admin/structure/block', $edit, t('Save blocks'));
$this->assertResponse(200);
$this->assertText(t('The block settings have been updated.'), t('[New forum topics] Forum block was enabled'));

View File

@ -1055,7 +1055,7 @@ class LanguageSwitchingFunctionalTest extends DrupalWebTestCase {
function testLanguageBlock() {
// Enable the language switching block.
$edit = array(
'locale_language-switcher[region]' => 'left',
'locale_language-switcher[region]' => 'sidebar_first',
);
$this->drupalPost('admin/structure/block', $edit, t('Save blocks'));

View File

@ -125,7 +125,7 @@ class MenuTestCase extends DrupalWebTestCase {
// Enable the custom menu block.
$menu_name = 'menu-' . $menu_name; // Drupal prepends the name with 'menu-'.
$edit = array();
$edit['menu_' . $menu_name . '[region]'] = 'left';
$edit['menu_' . $menu_name . '[region]'] = 'sidebar_first';
$this->drupalPost('admin/structure/block', $edit, t('Save blocks'));
$this->assertResponse(200);
$this->assertText(t('The block settings have been updated.'), t('Custom menu block was enabled'));

View File

@ -4,6 +4,17 @@ div.admin-panel .body {
padding: 0 8px 2px 4px;
}
div.admin .left {
float: right;
margin-left: 0;
margin-right: 1em;
}
div.admin .right {
float: left;
margin-left: 1em;
margin-right: 0;
}
div.admin .expert-link {
text-align: left;
margin-right: 0;

View File

@ -22,14 +22,14 @@ div.admin {
}
div.admin .left {
float: left;
float: left; /* LTR */
width: 47%;
margin-left: 1em;
margin-left: 1em; /* LTR */
}
div.admin .right {
float: right;
float: right; /* LTR */
width: 47%;
margin-right: 1em;
margin-right: 1em; /* LTR */
}
div.admin .expert-link {

View File

@ -57,10 +57,10 @@
<div id="container" class="clearfix">
<?php if (!empty($left)): ?>
<div id="sidebar-left" class="column sidebar">
<?php print $left; ?>
</div> <!-- /sidebar-left -->
<?php if (!empty($sidebar_first)): ?>
<div id="sidebar-first" class="column sidebar">
<?php print $sidebar_first; ?>
</div> <!-- /sidebar-first -->
<?php endif; ?>
<div id="main" class="column"><div id="main-squeeze">
@ -75,10 +75,10 @@
</div></div> <!-- /main-squeeze /main -->
<?php if (!empty($right)): ?>
<div id="sidebar-right" class="column sidebar">
<?php print $right; ?>
</div> <!-- /sidebar-right -->
<?php if (!empty($sidebar_second)): ?>
<div id="sidebar-second" class="column sidebar">
<?php print $sidebar_second; ?>
</div> <!-- /sidebar-second -->
<?php endif; ?>
</div> <!-- /container -->

View File

@ -46,10 +46,10 @@
* - node-type-[node type]: When viewing a single node, the type of that node.
* For example, if the node is a "Blog entry" it would result in "node-type-blog".
* Note that the machine name will often be in a short form of the human readable label.
* The following only apply with the default 'left' and 'right' block regions:
* The following only apply with the default 'sidebar_first' and 'sidebar_second' block regions:
* - two-sidebars: When both sidebars have content.
* - no-sidebars: When no sidebar content exists.
* - one-sidebar and sidebar-left or sidebar-right: A combination of the two classes
* - one-sidebar and sidebar-first or sidebar-second: A combination of the two classes
* when only one of the two sidebars have content.
*
* Site identity:
@ -77,8 +77,8 @@
* - $help: Dynamic help text, mostly for admin pages.
* - $content: The main content of the current page.
* - $feed_icons: A string of all feed icons for the current page.
* - $left: Items for the left sidebar.
* - $right: Items for the right sidebar.
* - $sidebar_first: Items for the first sidebar.
* - $sidebar_second: Items for the second sidebar.
* - $highlight: Items for the highlighted content region.
*
* Opening and closing data:
@ -177,16 +177,16 @@
<?php print $feed_icons; ?>
</div></div> <!-- /.section, /#content -->
<?php if ($left): ?>
<div id="sidebar-left" class="column sidebar"><div class="section region">
<?php print $left; ?>
</div></div> <!-- /.section, /#sidebar-left -->
<?php if ($sidebar_first): ?>
<div id="sidebar-first" class="column sidebar"><div class="section region">
<?php print $sidebar_first; ?>
</div></div> <!-- /.section, /#sidebar-first -->
<?php endif; ?>
<?php if ($right): ?>
<div id="sidebar-right" class="column sidebar"><div class="section region">
<?php print $right; ?>
</div></div> <!-- /.section, /#sidebar-right -->
<?php if ($sidebar_second): ?>
<div id="sidebar-second" class="column sidebar"><div class="section region">
<?php print $sidebar_second; ?>
</div></div> <!-- /.section, /#sidebar-second -->
<?php endif; ?>
</div></div> <!-- /#main, /#main-wrapper -->

View File

@ -1987,6 +1987,10 @@ function system_update_7021() {
$ret[] = update_sql("INSERT INTO {block} (module, delta, theme, status, weight, region, pages, cache) VALUES ('system', 'main', '" . $theme->name . "', 1, 0, 'content', '', -1)");
}
// Migrate blocks from left/right regions to first/second regions.
$ret[] = update_sql("UPDATE {block} SET region = 'sidebar_first' WHERE region = 'left'");
$ret[] = update_sql("UPDATE {block} SET region = 'sidebar_second' WHERE region = 'right'");
// Migrate contact form information.
if ($contact_help = variable_get('contact_form_information', '')) {
$bid = db_insert('box')->fields(array('body' => $contact_help, 'info' => 'Contact page help', 'format' => FILTER_FORMAT_DEFAULT))->execute();

View File

@ -1841,8 +1841,8 @@ function _system_get_theme_data() {
// Set defaults for theme info.
$defaults = array(
'regions' => array(
'left' => 'Left sidebar',
'right' => 'Right sidebar',
'sidebar_first' => 'Left sidebar',
'sidebar_second' => 'Right sidebar',
'content' => 'Content',
'header' => 'Header',
'footer' => 'Footer',

View File

@ -40,7 +40,7 @@ function default_profile_site_setup(&$install_state) {
'theme' => 'garland',
'status' => 1,
'weight' => 0,
'region' => 'left',
'region' => 'sidebar_first',
'pages' => '',
'cache' => -1,
),
@ -50,7 +50,7 @@ function default_profile_site_setup(&$install_state) {
'theme' => 'garland',
'status' => 1,
'weight' => 0,
'region' => 'left',
'region' => 'sidebar_first',
'pages' => '',
'cache' => -1,
),
@ -60,7 +60,7 @@ function default_profile_site_setup(&$install_state) {
'theme' => 'garland',
'status' => 1,
'weight' => 1,
'region' => 'left',
'region' => 'sidebar_first',
'pages' => '',
'cache' => -1,
),

View File

@ -61,10 +61,10 @@
</div> <!-- /header -->
<?php if ($left): ?>
<div id="sidebar-left" class="sidebar">
<?php if ($sidebar_first): ?>
<div id="sidebar-first" class="sidebar">
<?php if ($search_box): ?><div class="block block-theme"><?php print $search_box ?></div><?php endif; ?>
<?php print $left ?>
<?php print $sidebar_first ?>
</div>
<?php endif; ?>
@ -78,9 +78,9 @@
<div id="footer"><?php print $footer ?></div>
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
<?php if ($right): ?>
<div id="sidebar-right" class="sidebar">
<?php print $right ?>
<?php if ($sidebar_second): ?>
<div id="sidebar-second" class="sidebar">
<?php print $sidebar_second ?>
</div>
<?php endif; ?>

View File

@ -8,7 +8,7 @@ body.two-sidebars #wrapper #container {
width: 980px;
}
body.sidebar-left #wrapper #container,
body.sidebar-right #wrapper #container {
body.sidebar-first #wrapper #container,
body.sidebar-second #wrapper #container {
width: 770px;
}

View File

@ -38,10 +38,10 @@
<?php if ($secondary_nav): print $secondary_nav; endif; ?>
</div> <!-- /#header -->
<?php if ($left): ?>
<div id="sidebar-left" class="sidebar">
<?php if ($sidebar_first): ?>
<div id="sidebar-first" class="sidebar">
<?php if ($search_box): ?><div class="block block-theme"><?php print $search_box ?></div><?php endif; ?>
<?php print $left ?>
<?php print $sidebar_first ?>
</div>
<?php endif; ?>
@ -61,10 +61,10 @@
<div id="footer"><?php print $footer ?></div>
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
<?php if ($right): ?>
<div id="sidebar-right" class="sidebar">
<?php if (!$left && $search_box): ?><div class="block block-theme"><?php print $search_box ?></div><?php endif; ?>
<?php print $right ?>
<?php if ($sidebar_second): ?>
<div id="sidebar-second" class="sidebar">
<?php if (!$sidebar_first && $search_box): ?><div class="block block-theme"><?php print $search_box ?></div><?php endif; ?>
<?php print $sidebar_second ?>
</div>
<?php endif; ?>

View File

@ -12,12 +12,12 @@ ul.main-menu, ul.secondary-menu,
display: none;
}
body.two-sidebars, body.sidebar-left, body.sidebar-right, body {
body.two-sidebars, body.sidebar-first, body.sidebar-second, body {
width: 640px;
}
body.sidebar-left #center, body.sidebar-right #center, body.two-sidebars #center,
body.sidebar-left #squeeze, body.sidebar-right #squeeze, body.two-sidebars #squeeze {
body.sidebar-first #center, body.sidebar-second #center, body.two-sidebars #center,
body.sidebar-first #squeeze, body.sidebar-second #squeeze, body.two-sidebars #squeeze {
margin: 0;
}

View File

@ -86,11 +86,48 @@ dl dd {
float: right;
}
#sidebar-left .block-region {
#wrapper #container #center {
float: right;
}
body.sidebar-first #center {
margin-left: 0;
margin-right: -210px;
}
body.sidebar-second #center {
margin-left: -210px;
margin-right: 0;
}
/* And add blanks left and right for the sidebars to fill */
body.sidebar-first #squeeze {
margin-left: 0;
margin-right: 210px;
}
body.sidebar-second #squeeze {
margin-left: 210px;
margin-right: 0;
}
#wrapper #container .sidebar {
float: right;
}
#sidebar-first .block {
padding: 0 0 0 15px;
}
#sidebar-second .block {
padding: 0 15px 0 0;
}
#sidebar-first .block-region {
margin: 0 0 0 15px;
}
#sidebar-right .block-region {
#sidebar-second .block-region {
margin: 0 15px 0px 0;
}
@ -270,7 +307,7 @@ ul.secondary li a, ul.secondary li.active a, ul.secondary li a:hover, ul.seconda
position: relative;
}
#sidebar-right{
#sidebar-second {
position: absolute;
right: 0;
}

View File

@ -377,33 +377,33 @@ body.two-sidebars {
min-width: 980px;
}
/* With 2 columns, require a minimum width of 800px. */
body.sidebar-left, body.sidebar-right {
body.sidebar-first, body.sidebar-second {
min-width: 780px;
}
/* We must define 100% width to avoid the body being too narrow for near-empty pages */
#wrapper #container #center {
float: left;
float: left; /* LTR */
width: 100%;
}
/* So we move the #center container over the sidebars to compensate */
body.sidebar-left #center {
margin-left: -210px;
body.sidebar-first #center {
margin-left: -210px; /* LTR */
}
body.sidebar-right #center {
margin-right: -210px;
body.sidebar-second #center {
margin-right: -210px; /* LTR */
}
body.two-sidebars #center {
margin: 0 -210px;
}
/* And add blanks left and right for the sidebars to fill */
body.sidebar-left #squeeze {
margin-left: 210px;
body.sidebar-first #squeeze {
margin-left: 210px; /* LTR */
}
body.sidebar-right #squeeze {
margin-right: 210px;
body.sidebar-second #squeeze {
margin-right: 210px; /* LTR */
}
body.two-sidebars #squeeze {
margin: 0 210px;
@ -413,7 +413,7 @@ body.two-sidebars #squeeze {
#wrapper #container .sidebar {
margin: 60px 0 5em;
width: 210px;
float: left;
float: left; /* LTR */
z-index: 2;
position: relative;
}
@ -422,23 +422,23 @@ body.two-sidebars #squeeze {
margin: 0 0 1.5em 0;
}
#sidebar-left .block {
padding: 0 15px 0 0px;
#sidebar-first .block {
padding: 0 15px 0 0; /* LTR */
}
#sidebar-right .block {
padding: 0 0px 0 15px;
#sidebar-second .block {
padding: 0 0 0 15px; /* LTR */
}
.block .content {
margin: 0.5em 0;
}
#sidebar-left .block-region {
#sidebar-first .block-region {
margin: 0 15px 0 0px; /* LTR */
}
#sidebar-right .block-region {
#sidebar-second .block-region {
margin: 0 0px 0 15px; /* LTR */
}
@ -486,11 +486,11 @@ body.two-sidebars #squeeze {
z-index: 3;
}
body.sidebar-left #footer {
body.sidebar-first #footer {
margin-left: -210px;
}
body.sidebar-right #footer {
body.sidebar-second #footer {
margin-right: -210px;
}

View File

@ -17,8 +17,8 @@
*/
#content,
#sidebar-left,
#sidebar-right {
#sidebar-first,
#sidebar-second {
float: left;
display: inline;
position: relative;
@ -27,11 +27,11 @@
#content {
width: 100%;
}
body.sidebar-left #content {
body.sidebar-first #content {
width: 80%;
left: 20%;
left: 20%; /* LTR */
}
body.sidebar-right #content {
body.sidebar-second #content {
width: 80%;
}
body.two-sidebars #content {
@ -39,17 +39,17 @@ body.two-sidebars #content {
left: 20%;
}
#sidebar-left {
#sidebar-first {
width: 20%;
left: -80%;
left: -80%; /* LTR */
}
body.two-sidebars #sidebar-left {
left: -60%;
body.two-sidebars #sidebar-first {
left: -60%; /* LTR */
}
#sidebar-right {
float: right;
#sidebar-second {
float: right; /* LTR */
width: 20%;
}