Fixes for bug MDL-12256, "Course AJAX has very poor accessibility - ALT text" (includes white-space cleanup).

This commit is contained in:
nfreear
2007-11-19 17:22:04 +00:00
parent f7a5b3ad3a
commit f8eaeffa21
4 changed files with 68 additions and 36 deletions
+12 -7
View File
@@ -145,13 +145,18 @@ main_class.prototype.get_section_index = function(el) {
}
main_class.prototype.mk_button = function(tag, imgSrc, attributes, imgAttributes) {
//create button and return object
main_class.prototype.mk_button = function(tag, imgSrc, text, attributes, imgAttributes) {
//Create button and return object.
//Set the text: the container TITLE or image ALT attributes can be overridden, eg.
// main.mk_button('a', '/i/move_2d.gif', strmove, [['title', strmoveshort]]);
var container = document.createElement(tag);
container.style.cursor = 'pointer';
container.style.cursor = 'pointer';
container.setAttribute('title', text);
var image = document.createElement('img');
image.setAttribute('src', main.portal.strings['pixpath']+imgSrc);
image.setAttribute('alt', text);
//image.setAttribute('title', '');
container.appendChild(image);
if (attributes != null) {
@@ -161,7 +166,7 @@ main_class.prototype.mk_button = function(tag, imgSrc, attributes, imgAttributes
}
if (imgAttributes != null) {
for (var c=0; c<imgAttributes.length; c++) {
image.setAttribute(imgAttributes[c][0], imgAttributes[c][1]);
image.setAttribute(imgAttributes[c][0], imgAttributes[c][1]);
}
}
image.setAttribute('hspace', '3');
@@ -222,9 +227,9 @@ main_class.prototype.update_marker = function(newMarker) {
}
main_class.prototype.getString = function(title, variable) {
if (this.portal.strings[title]) {
return this.portal.strings[title].replace(/_var_/, variable);
main_class.prototype.getString = function(identifier, variable) {
if (this.portal.strings[identifier]) {
return this.portal.strings[identifier].replace(/_var_/, variable);
}
}
+7
View File
@@ -195,7 +195,14 @@ class jsportal {
$output .= " main.portal.blocks = new Array(".$blocksoutput.");\n";
$output .= " main.portal.strings['wwwroot']='".$CFG->wwwroot."';\n";
$output .= " main.portal.strings['pixpath']='".$CFG->pixpath."';\n";
$output .= " main.portal.strings['marker']='".get_string('markthistopic', '', '_var_')."';\n";
$output .= " main.portal.strings['marked']='".get_string('markedthistopic', '', '_var_')."';\n";
$output .= " main.portal.strings['hide']='".get_string('hide')."';\n";
$output .= " main.portal.strings['hidesection']='".get_string('hidesection', '', '_var_')."';\n";
$output .= " main.portal.strings['show']='".get_string('show')."';\n";
$output .= " main.portal.strings['delete']='".get_string('delete')."';\n";
$output .= " main.portal.strings['move']='".get_string('move')."';\n";
$output .= " main.portal.strings['movesection']='".get_string('movesection', '', '_var_')."';\n";
$output .= " main.portal.strings['moveleft']='".get_string('moveleft')."';\n";
$output .= " main.portal.strings['moveright']='".get_string('moveright')."';\n";
$output .= " main.portal.strings['update']='".get_string('update')."';\n";
+8 -3
View File
@@ -202,10 +202,10 @@ block_class.prototype.reset_regions = function() {
block_class.prototype.init_buttons = function() {
var viewbutton = main.mk_button('a', '/t/hide.gif', [['class', 'icon hide']]);
var viewbutton = main.mk_button('a', '/t/hide.gif', main.portal.strings['hide'], [['class', 'icon hide']]);
YAHOO.util.Event.addListener(viewbutton, 'click', this.toggle_hide, this, true);
var deletebutton = main.mk_button('a', '/t/delete.gif', [['class', 'icon delete']]);
var deletebutton = main.mk_button('a', '/t/delete.gif', main.portal.strings['delete'], [['class', 'icon delete']]);
YAHOO.util.Event.addListener(deletebutton, 'click', this.delete_button, this, true);
this.viewbutton = viewbutton;
@@ -220,10 +220,13 @@ block_class.prototype.init_buttons = function() {
block_class.prototype.toggle_hide = function(e, target, isCosmetic) {
var strhide = main.portal.strings['hide'];
var strshow = main.portal.strings['show'];
if (YAHOO.util.Dom.hasClass(this.getEl(), 'hidden')) {
this.getEl().className = this.originalClass;
this.viewbutton.childNodes[0].src = this.viewbutton.childNodes[0].src.replace(/show.gif/i, 'hide.gif');
this.viewbutton.childNodes[0].alt = this.viewbutton.childNodes[0].alt.replace(strshow, strhide);
this.viewbutton.title = this.viewbutton.title.replace(strshow, strhide);
if (!isCosmetic) {
main.connect('POST', 'class=block&field=visible', null,
@@ -233,6 +236,8 @@ block_class.prototype.toggle_hide = function(e, target, isCosmetic) {
this.originalClass = this.getEl().className;
this.getEl().className = "hidden sideblock";
this.viewbutton.childNodes[0].src = this.viewbutton.childNodes[0].src.replace(/hide.gif/i,'show.gif');
this.viewbutton.childNodes[0].alt = this.viewbutton.childNodes[0].alt.replace(strhide, strshow);
this.viewbutton.title = this.viewbutton.title.replace(strhide, strshow);
if (!isCosmetic) {
main.connect('POST', 'class=block&field=visible', null,
+41 -26
View File
@@ -88,13 +88,14 @@ section_class.prototype.init_buttons = function() {
commandContainer.removeChild(commandContainer.childNodes[i])
}
if (!this.isWeekFormat) {
var highlightbutton = main.mk_button('div', '/i/marker.gif');
if (!this.isWeekFormat) {
var highlightbutton = main.mk_button('div', '/i/marker.gif', main.getString('marker', this.sectionId));
YAHOO.util.Event.addListener(highlightbutton, 'click', this.mk_marker, this, true);
commandContainer.appendChild(highlightbutton);
this.highlightButton = highlightbutton;
this.highlightButton = highlightbutton;
}
var viewbutton = main.mk_button('div', '/i/hide.gif');
var viewbutton = main.mk_button('div', '/i/hide.gif', main.getString('hidesection', this.sectionId),
[['title', main.portal.strings['hide'] ]]);
YAHOO.util.Event.addListener(viewbutton, 'click', this.toggle_hide, this,true);
commandContainer.appendChild(viewbutton);
this.viewButton = viewbutton;
@@ -102,8 +103,8 @@ section_class.prototype.init_buttons = function() {
section_class.prototype.add_handle = function() {
var handleRef = main.mk_button('a', '/i/move_2d.gif',
[['style','cursor:move'], ['title', main.portal.strings['move']]]);
var handleRef = main.mk_button('a', '/i/move_2d.gif', main.getString('movesection', this.sectionId),
[['title', main.portal.strings['move'] ], ['style','cursor:move']]);
YAHOO.util.Dom.generateId(handleRef, 'sectionHandle');
@@ -284,9 +285,13 @@ section_class.prototype.swap_with_section = function(sectionIn) {
section_class.prototype.toggle_hide = function(e,target,superficial) {
if (this.hidden) {
var strhide = main.portal.strings['hide'];
var strshow = main.portal.strings['show'];
if (this.hidden) {
YAHOO.util.Dom.removeClass(this.getEl(), 'hidden');
this.viewButton.childNodes[0].src = this.viewButton.childNodes[0].src.replace(/show.gif/i, 'hide.gif');
this.viewButton.childNodes[0].src = this.viewButton.childNodes[0].src.replace(/show.gif/i, 'hide.gif');
this.viewButton.childNodes[0].alt = this.viewButton.childNodes[0].alt.replace(strshow, strhide);
this.viewButton.title = this.viewButton.title.replace(strshow, strhide);
this.hidden = false;
if (!superficial) {
@@ -299,7 +304,9 @@ section_class.prototype.toggle_hide = function(e,target,superficial) {
} else {
YAHOO.util.Dom.addClass(this.getEl(), 'hidden');
this.viewButton.childNodes[0].src = this.viewButton.childNodes[0].src.replace(/hide.gif/i, 'show.gif');
this.viewButton.childNodes[0].src = this.viewButton.childNodes[0].src.replace(/hide.gif/i, 'show.gif');
this.viewButton.childNodes[0].alt = this.viewButton.childNodes[0].alt.replace(strhide, strshow);
this.viewButton.title = this.viewButton.title.replace(strhide, strshow);
this.hidden = true;
if (!superficial) {
@@ -606,8 +613,8 @@ resource_class.prototype.init_buttons = function() {
commandContainer.innerHTML = '';
// Add move-handle for drag and drop.
var handleRef = main.mk_button('a', '/i/move_2d.gif',
[['style', 'cursor:move'], ['title', main.portal.strings['move']]],
var handleRef = main.mk_button('a', '/i/move_2d.gif', main.portal.strings['move'],
[['style', 'cursor:move']],
[['height', '11'], ['width', '11'], ['style', 'margin-right:3px; border:0;']]);
YAHOO.util.Dom.generateId(handleRef, 'sectionHandle');
@@ -617,16 +624,16 @@ resource_class.prototype.init_buttons = function() {
// Add indentation buttons if needed (move left, move right).
if (moveLeft) {
var button = main.mk_button('a', '/t/left.gif', [['title', main.portal.strings['moveleft']],
['class', 'editing_moveleft']]);
var button = main.mk_button('a', '/t/left.gif', main.portal.strings['moveleft'],
[['class', 'editing_moveleft']]);
YAHOO.util.Event.addListener(button, 'click', this.indent_left, this, true);
commandContainer.appendChild(button);
this.indentLeftButton = button;
}
if (moveRight) {
var button = main.mk_button('a', '/t/right.gif', [['title', main.portal.strings['moveright']],
['class', 'editing_moveright']]);
var button = main.mk_button('a', '/t/right.gif', main.portal.strings['moveright'],
[['class', 'editing_moveright']]);
YAHOO.util.Event.addListener(button, 'click', this.indent_right, this, true);
commandContainer.appendChild(button);
this.indentRightButton = button;
@@ -636,15 +643,15 @@ resource_class.prototype.init_buttons = function() {
commandContainer.appendChild(updateButton);
// Add the delete button.
var button = main.mk_button('a', '/t/delete.gif');
var button = main.mk_button('a', '/t/delete.gif', main.portal.strings['delete']);
YAHOO.util.Event.addListener(button, 'click', this.delete_button, this, true);
commandContainer.appendChild(button);
// Add the hide or show button.
if (this.hidden) {
var button = main.mk_button('a', '/t/show.gif');
var button = main.mk_button('a', '/t/show.gif', main.portal.strings['show']);
} else {
var button = main.mk_button('a', '/t/hide.gif');
var button = main.mk_button('a', '/t/hide.gif', main.portal.strings['hide']);
}
YAHOO.util.Event.addListener(button, 'click', this.toggle_hide, this, true);
commandContainer.appendChild(button);
@@ -653,11 +660,11 @@ resource_class.prototype.init_buttons = function() {
// Add the groupmode button if needed.
if (this.groupmode != null) {
if (this.groupmode == this.NOGROUPS) {
var button = main.mk_button('a', '/t/groupn.gif', [['title', strgroupsnone]]);
var button = main.mk_button('a', '/t/groupn.gif', strgroupsnone);
} else if (this.groupmode == this.SEPARATEGROUPS) {
var button = main.mk_button('a', '/t/groups.gif', [['title', strgroupsseparate]]);
var button = main.mk_button('a', '/t/groups.gif', strgroupsseparate);
} else {
var button = main.mk_button('a', '/t/groupv.gif', [['title', strgroupsvisible]]);
var button = main.mk_button('a', '/t/groupv.gif', strgroupsvisible);
}
YAHOO.util.Event.addListener(button, 'click', this.toggle_groupmode, this, true);
commandContainer.appendChild(button);
@@ -704,6 +711,7 @@ resource_class.prototype.indent_right = function() {
spacer.setAttribute('src', main.portal.strings['pixpath']+'/spacer.gif');
spacer.className = 'spacer';
spacer.setAttribute('alt', '');
spacer.setAttribute('width', '20');
spacer.setAttribute('height', '12');
@@ -717,8 +725,8 @@ resource_class.prototype.indent_right = function() {
'span', this.getEl())[0];
if (!this.indentLeftButton) {
var button = main.mk_button('a', '/t/left.gif', [['title', main.portal.strings['moveleft']],
['class', 'editing_moveleft']]);
var button = main.mk_button('a', '/t/left.gif', main.portal.strings['moveleft'],
[['class', 'editing_moveleft']]);
YAHOO.util.Event.addListener(button, 'click', this.indent_left, this, true);
commandContainer.insertBefore(button, this.indentRightButton);
this.indentLeftButton = button;
@@ -729,6 +737,8 @@ resource_class.prototype.indent_right = function() {
resource_class.prototype.toggle_hide = function(target, e, superficial, force) {
var strhide = main.portal.strings['hide'];
var strshow = main.portal.strings['show'];
if (force != null) {
if (this.debug) {
YAHOO.log("Resource "+this.getEl().id+" forced to "+force);
@@ -738,6 +748,8 @@ resource_class.prototype.toggle_hide = function(target, e, superficial, force) {
if (this.hidden) {
YAHOO.util.Dom.removeClass(this.linkContainer, 'dimmed');
this.viewButton.childNodes[0].src = this.viewButton.childNodes[0].src.replace(/show.gif/i, 'hide.gif');
this.viewButton.childNodes[0].alt = this.viewButton.childNodes[0].alt.replace(strshow, strhide);
this.viewButton.title = this.viewButton.title.replace(strshow, strhide);
this.hidden = false;
if (!superficial) {
@@ -746,6 +758,8 @@ resource_class.prototype.toggle_hide = function(target, e, superficial, force) {
} else {
YAHOO.util.Dom.addClass(this.linkContainer, 'dimmed');
this.viewButton.childNodes[0].src = this.viewButton.childNodes[0].src.replace(/hide.gif/i, 'show.gif');
this.viewButton.childNodes[0].alt = this.viewButton.childNodes[0].alt.replace(strhide, strshow);
this.viewButton.title = this.viewButton.title.replace(strhide, strshow);
this.hidden = true;
if (!superficial) {
@@ -764,7 +778,7 @@ resource_class.prototype.toggle_groupmode = function() {
this.groupmode = 0;
}
var newtitle = this.groupButton.getElementsByTagName('img')[0].title;
var newtitle = this.groupButton.title;
switch (this.groupmode) {
case 0:
@@ -777,8 +791,9 @@ resource_class.prototype.toggle_groupmode = function() {
newtitle = main.portal.strings['groupsvisible']+' ('+main.portal.strings['clicktochange']+')';
break;
}
this.groupButton.getElementsByTagName('img')[0].title = newtitle;
this.groupButton.getElementsByTagName('img')[0].alt = newtitle;
this.groupButton.title = newtitle;
this.groupButton.getElementsByTagName('img')[0].src = main.portal.strings['pixpath']+this.groupImages[this.groupmode];
main.connect('POST', 'class=resource&field=groupmode', null, 'value='+this.groupmode+'&id='+this.id);