MDL-35876 - Blocks - Adding verbose move here descriptions to blocks for accessibility

This commit is contained in:
Jason Fowler
2013-03-26 14:21:38 +08:00
parent 373a8e052c
commit 6671fa735a
7 changed files with 36 additions and 19 deletions
+2 -1
View File
@@ -47,7 +47,8 @@ $string['hideblock'] = 'Hide {$a} block';
$string['hidedockpanel'] = 'Hide the dock panel';
$string['hidepanel'] = 'Hide panel';
$string['moveblock'] = 'Move {$a} block';
$string['moveblockhere'] = 'Move block here';
$string['moveblockafter'] = 'Move block to after {$a} block';
$string['moveblockbefore'] = 'Move block to before {$a} block';
$string['movingthisblockcancel'] = 'Moving this block ({$a})';
$string['onthispage'] = 'On this page';
$string['pagetypes'] = 'Page types';
+2 -4
View File
@@ -945,8 +945,6 @@ class block_manager {
if ($first) {
$lastweight = $first->instance->weight - 2;
}
$strmoveblockhere = get_string('moveblockhere', 'block');
}
foreach ($instances as $instance) {
@@ -957,7 +955,7 @@ class block_manager {
if ($this->movingblock && $lastweight != $instance->instance->weight &&
$content->blockinstanceid != $this->movingblock && $lastblock != $this->movingblock) {
$results[] = new block_move_target($strmoveblockhere, $this->get_move_target_url($region, ($lastweight + $instance->instance->weight)/2));
$results[] = new block_move_target($this->get_move_target_url($region, ($lastweight + $instance->instance->weight)/2));
}
if ($content->blockinstanceid == $this->movingblock) {
@@ -972,7 +970,7 @@ class block_manager {
}
if ($this->movingblock && $lastblock != $this->movingblock) {
$results[] = new block_move_target($strmoveblockhere, $this->get_move_target_url($region, $lastweight + 1));
$results[] = new block_move_target($this->get_move_target_url($region, $lastweight + 1));
}
return $results;
}
+1 -8
View File
@@ -2497,18 +2497,11 @@ class block_move_target {
*/
public $url;
/**
* @var string label
*/
public $text;
/**
* Constructor
* @param string $text
* @param moodle_url $url
*/
public function __construct($text, moodle_url $url) {
$this->text = $text;
public function __construct(moodle_url $url) {
$this->url = $url;
}
}
+18 -4
View File
@@ -1215,13 +1215,20 @@ class core_renderer extends renderer_base {
*/
public function blocks_for_region($region) {
$blockcontents = $this->page->blocks->get_content_for_region($region, $this);
$blocks = $this->page->blocks->get_blocks_for_region($region);
$lastblock = null;
$zones = array();
foreach ($blocks as $block) {
$zones[] = $block->title;
}
$output = '';
foreach ($blockcontents as $bc) {
if ($bc instanceof block_contents) {
$output .= $this->block($bc, $region);
$lastblock = $bc->title;
} else if ($bc instanceof block_move_target) {
$output .= $this->block_move_target($bc);
$output .= $this->block_move_target($bc, $zones, $lastblock);
} else {
throw new coding_exception('Unexpected type of thing (' . get_class($bc) . ') found in list of block contents.');
}
@@ -1233,10 +1240,17 @@ class core_renderer extends renderer_base {
* Output a place where the block that is currently being moved can be dropped.
*
* @param block_move_target $target with the necessary details.
* @param array $zones array of areas where the block can be moved to
* @param string $previous the block located before the area currently being rendered.
* @return string the HTML to be output.
*/
public function block_move_target($target) {
return html_writer::tag('a', html_writer::tag('span', $target->text, array('class' => 'accesshide')), array('href' => $target->url, 'class' => 'blockmovetarget'));
public function block_move_target($target, $zones, $previous) {
if ($previous == null) {
$position = get_string('moveblockbefore', 'block', $zones[0]);
} else {
$position = get_string('moveblockafter', 'block', $previous);
}
return html_writer::tag('a', html_writer::tag('span', $position, array('class' => 'accesshide')), array('href' => $target->url, 'class' => 'blockmovetarget'));
}
/**
+1
View File
@@ -34,6 +34,7 @@ information provided here is intended especially for developers.
* condition_info:get_condition_user_fields($formatoptions) now accepts the optional
param $formatoptions, that will determine if the field names are processed by
format_string() with the passed options.
* output renderer changed to support more verbose move-block-here descriptions.
YUI changes:
* M.util.help_icon has been deprecated. Code should be updated to use moodle-core-popuphelp
+9 -2
View File
@@ -694,16 +694,23 @@ class theme_mymobile_core_renderer extends core_renderer {
*/
public function blocks_for_region($region) {
$blockcontents = $this->page->blocks->get_content_for_region($region, $this);
$blocks = $this->page->blocks->get_blocks_for_region($region);
$lastblock = null;
$zones = array();
foreach ($blocks as $block) {
$zones[] = $block->title;
}
$output = '';
foreach ($blockcontents as $bc) {
if ($bc instanceof block_contents) {
$lastblock = $bc->title;
// We don't want to print navigation and settings blocks here.
if ($bc->attributes['class'] != 'block_settings block' && $bc->attributes['class'] != 'block_navigation block') {
$output .= $this->block($bc, $region);
}
} else if ($bc instanceof block_move_target) {
$output .= $this->block_move_target($bc);
$output .= $this->block_move_target($bc, $zones, $lastblock);
} else {
throw new coding_exception('Unexpected type of thing (' . get_class($bc) . ') found in list of block contents.');
}
+3
View File
@@ -8,6 +8,9 @@ DOM changes:
* new setting $THEME->yuicssmodules = array('cssreset', 'cssfonts', 'cssgrids', 'cssbase'); which
allows themes to use different CSS reset normalisers such as cssnormalize YUI module
Renderer changes:
* Mymobile theme changed to support more verbose move-block-here descriptions.
=== 2.4 ===
required changes: