From 38584d1167d365dff942ebb785394b2989b2aebe Mon Sep 17 00:00:00 2001 From: sam marshall Date: Tue, 23 Sep 2014 12:09:03 +0100 Subject: [PATCH] MDL-47380 Availability: Editing interface broken in IE8 --- .../moodle-core_availability-form-debug.js | 10 ++++------ .../moodle-core_availability-form-min.js | 2 +- .../moodle-core_availability-form.js | 10 ++++------ availability/yui/src/form/js/form.js | 10 ++++------ 4 files changed, 13 insertions(+), 19 deletions(-) diff --git a/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form-debug.js b/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form-debug.js index b7c0509f51e..185800c2818 100644 --- a/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form-debug.js +++ b/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form-debug.js @@ -928,20 +928,19 @@ M.core_availability.Item.prototype.pluginNode = null; M.core_availability.EyeIcon = function(individual, shown) { this.individual = individual; this.span = Y.Node.create(''); - var iconBase = M.cfg.wwwroot + '/theme/image.php/' + M.cfg.theme + '/core/' + M.cfg.themerev; var icon = Y.Node.create(''); this.span.appendChild(icon); // Set up button text and icon. var suffix = individual ? '_individual' : '_all'; var setHidden = function() { - icon.set('src', iconBase + '/i/show'); + icon.set('src', M.util.image_url('i/show', 'core')); icon.set('alt', M.str.availability['hidden' + suffix]); this.span.set('title', M.str.availability['hidden' + suffix] + ' \u2022 ' + M.str.availability.show_verb); }; var setShown = function() { - icon.set('src', iconBase + '/i/hide'); + icon.set('src', M.util.image_url('i/hide', 'core')); icon.set('alt', M.str.availability['shown' + suffix]); this.span.set('title', M.str.availability['shown' + suffix] + ' \u2022 ' + M.str.availability.hide_verb); @@ -1006,9 +1005,8 @@ M.core_availability.EyeIcon.prototype.isHidden = function() { M.core_availability.DeleteIcon = function(toDelete) { this.span = Y.Node.create(''); - var img = Y.Node.create('' + M.str.moodle['delete'] + ''); + var img = Y.Node.create('' + M.str.moodle['delete'] + ''); this.span.appendChild(img); var click = function(e) { e.preventDefault(); diff --git a/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form-min.js b/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form-min.js index 82b5c5b4890..9c578a0e917 100644 --- a/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form-min.js +++ b/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form-min.js @@ -1,3 +1,3 @@ YUI.add("moodle-core_availability-form",function(e,t){M.core_availability=M.core_availability||{},M.core_availability.form={plugins:{},field:null,mainDiv:null,rootList:null,idCounter:0,init:function(t){for(var n in t){var r=t[n],i=M[r[0]].form;i.init.apply(i,r)}this.field=e.one("#id_availabilityconditionsjson"),this.field.setAttribute("aria-hidden","true"),this.mainDiv=e.Node.create(''),this.field.insert(this.mainDiv,"after");var s=this.field.get("value"),o=null;if(s!=="")try{o=e.JSON.parse(s)}catch(u){this.field.set("value","")}this.rootList=new M.core_availability.List(o,!0),this.mainDiv.appendChild(this.rootList.node),this.update(),this.rootList.renumber(),this.mainDiv.setAttribute("aria-live","polite"),this.field.ancestor("form").on("submit",function(){this.mainDiv.all("input,textarea,select").set("disabled",!0)},this)},update:function(){var t=this.rootList.getValue(),n=[];this.rootList.fillErrors(n),n.length!==0&&(t.errors=n),this.field.set("value",e.JSON.stringify(t))}},M.core_availability.plugin={allowAdd:!1,init:function(e,t,n){var r=e.replace(/^availability_/,"");this.allowAdd=t,M.core_availability.form.plugins[r]=this,this.initInner.apply(this,n)},initInner:function(){},getNode:function(){throw"getNode not implemented"},fillValue:function(){throw"fillValue not implemented"},fillErrors:function(){},focusAfterAdd:function(e){var t=e.one("input:not([disabled]),select:not([disabled])");t.focus()}},M.core_availability.List=function(t,n,r){this.children=[],n!==undefined&&(this.root=n);var i=M.str.availability;this.node=e.Node.create('

'+i.listheader_sign_before+' "+''+i.listheader_single+""+''+i.listheader_multi_before+' "+i.listheader_multi_after+"
"+'
'+'
'+M.str.moodle.none+"
"+'
'),n||this.node.addClass("availability-childlist"),this.inner=this.node.one("> .availability-inner");var s=!0;n?(t&&t.show!==undefined&&(s=t.show),this.eyeIcon=new M.core_availability.EyeIcon(!1,s),this.node.one(".availability-header").get("firstChild").insert(this.eyeIcon.span,"before")):r&&(t&&t.showc!==undefined&&(s=t.showc),this.eyeIcon=new M.core_availability.EyeIcon(!1,s),this.inner.insert(this.eyeIcon.span,"before"));if(!n){var o=new M.core_availability.DeleteIcon(this),u=this.node.one(".availability-none");u.appendChild(document.createTextNode(" ")),u.appendChild(o.span),u.appendChild(e.Node.create(''+M.str.availability.invalid+""))}var a=e.Node.create('");a.on("click",function(){this.clickAdd()},this),this.node.one("div.availability-button").appendChild(a);if(t){switch(t.op){case"&":case"|":this.node.one(".availability-neg").set("value","");break;case"!&":case"!|":this.node.one(".availability-neg").set("value","!")}switch(t.op){case"&":case"!&":this.node.one(".availability-op").set("value","&");break;case"|":case"!|":this.node.one(".availability-op").set("value","|")}for(var f=0;f0&&this.inner.one(".availability-children").appendChild(e.Node.create('
')),this.children.push(t),this.inner.one(".availability-children").appendChild(t.node)},M.core_availability.List.prototype.focusAfterAdd=function(){this.inner.one("button").focus()},M.core_availability.List.prototype.isIndividualShowIcons=function(){if(!this.root)throw"Can only call this on root list";var e=this.node.one(".availability-neg").get("value")==="!",t=this.node.one(".availability-op").get("value")==="|";return!e&&!t||e&&t},M.core_availability.List.prototype.renumber=function(e){var t={count:this.children.length},n;e===undefined?(t.number="",n=""):(t.number=e+":",n=e+".");var r=M.util.get_string("setheading","availability",t);this.node.one("> h3").set("innerHTML",r);for(var i=0;i0?(this.inner.one("> .availability-children").removeAttribute("aria-hidden"),this.inner.one("> .availability-none").setAttribute("aria-hidden","true"),this.inner.one("> .availability-header").removeAttribute("aria-hidden"),this.children.length>1?(this.inner.one(".availability-single").setAttribute("aria-hidden","true"),this.inner.one(".availability-multi").removeAttribute("aria-hidden")):(this.inner.one(".availability-single").removeAttribute("aria-hidden"),this.inner.one(".availability-multi").setAttribute("aria-hidden","true"))):(this.inner.one("> .availability-children").setAttribute("aria-hidden","true"),this.inner.one("> .availability-none" ).removeAttribute("aria-hidden"),this.inner.one("> .availability-header").setAttribute("aria-hidden","true"));if(this.root){var e=this.isIndividualShowIcons();for(var t=0;t .availability-children > .availability-connector span.label").each(function(e){e.set("innerHTML",r)})},M.core_availability.List.prototype.deleteDescendant=function(e){for(var t=0;t0&&(r.previous(".availability-connector")?r.previous(".availability-connector").remove():r.next(".availability-connector").remove()),this.inner.one("> .availability-children").removeChild(r),M.core_availability.form.update(),this.updateHtml(),this.inner.one("> .availability-button").one("button").focus(),!0}if(n instanceof M.core_availability.List){var i=n.deleteDescendant(e);if(i)return!0}}return!1},M.core_availability.List.prototype.clickAdd=function(){var t=e.Node.create('
    "),n=t.one("button"),r={dialog:null},i=t.one("ul"),s,o,u,a;for(var f in M.core_availability.form.plugins){if(!M.core_availability.form.plugins[f].allowAdd)continue;s=e.Node.create('
  • '),o="availability_addrestriction_"+f;var l=M.str["availability_"+f];u=e.Node.create('"),u.on("click",this.getAddHandler(f,r),this),s.appendChild(u),a=e.Node.create('"),s.appendChild(a),i.appendChild(s)}s=e.Node.create('
  • '),o="availability_addrestriction_list_",u=e.Node.create('"),u.on("click",this.getAddHandler(null,r),this),s.appendChild(u),a=e.Node.create('"),s.appendChild(a),i.appendChild(s);var c={headerContent:M.str.availability.addrestriction,bodyContent:t,additionalBaseClass:"availability-dialogue",draggable:!0,modal:!0,closeButton:!1,width:"450px"};r.dialog=new M.core.dialogue(c),r.dialog.show(),n.on("click",function(){r.dialog.destroy(),this.inner.one("> .availability-button").one("button").focus()},this)},M.core_availability.List.prototype.getAddHandler=function(e,t){return function(){e?newItem=new M.core_availability.Item({type:e,creating:!0},this.root):newItem=new M.core_availability.List({c:[],showc:!0},!1,this.root),this.addChild(newItem),M.core_availability.form.update(),M.core_availability.form.rootList.renumber(),this.updateHtml(),t.dialog.destroy(),newItem.focusAfterAdd()}},M.core_availability.List.prototype.getValue=function(){var e={};e.op=this.node.one(".availability-neg").get("value")+this.node.one(".availability-op").get("value"),e.c=[];var t;for(t=0;t'+M.str.availability.missingplugin+"")):(this.plugin=M.core_availability.form.plugins[t.type],this.pluginNode=this.plugin.getNode(t),this.pluginNode.addClass("availability_"+t.type)),this.node=e.Node.create('

    ');if(n){var r=!0;t.showc!==undefined&&(r=t.showc),this.eyeIcon=new M.core_availability.EyeIcon(!0,r),this.node.appendChild(this.eyeIcon.span)}this.pluginNode.addClass("availability-plugincontrols"),this.node.appendChild(this.pluginNode);var i=new M.core_availability.DeleteIcon(this);this.node.appendChild(i.span),this.node.appendChild(document.createTextNode(" ")),this.node.appendChild(e.Node.create(''))},M.core_availability.Item.prototype.getValue=function(){return value={type:this.pluginType},this.plugin&&this.plugin.fillValue(value,this.pluginNode),value},M.core_availability.Item.prototype.fillErrors=function(e){var t=e.length;this.plugin?this.plugin.fillErrors(e,this.pluginNode):e.push("core_availability:item_unknowntype");var n=this.node.one("> .label-warning");e.length!==t&&!n.get("firstChild")?n.appendChild(document.createTextNode(M.str.availability.invalid)):e.length===t&&n.get("firstChild")&&n.get("firstChild").remove()},M.core_availability.Item.prototype.renumber=function(e){var t={number:e};this.plugin?t.type=M.str["availability_"+this.pluginType].title:t.type="["+this.pluginType+"]",t.number=e+":";var n=M.util.get_string("itemheading","availability",t);this.node.one("> h3").set("innerHTML",n)},M.core_availability.Item.prototype.focusAfterAdd=function(){this.plugin.focusAfterAdd(this.pluginNode)},M.core_availability.Item.prototype.pluginType=null,M.core_availability.Item.prototype.plugin=null,M.core_availability.Item.prototype.eyeIcon= -null,M.core_availability.Item.prototype.node=null,M.core_availability.Item.prototype.pluginNode=null,M.core_availability.EyeIcon=function(t,n){this.individual=t,this.span=e.Node.create('
    ');var r=M.cfg.wwwroot+"/theme/image.php/"+M.cfg.theme+"/core/"+M.cfg.themerev,i=e.Node.create("");this.span.appendChild(i);var s=t?"_individual":"_all",o=function(){i.set("src",r+"/i/show"),i.set("alt",M.str.availability["hidden"+s]),this.span.set("title",M.str.availability["hidden"+s]+" \u2022 "+M.str.availability.show_verb)},u=function(){i.set("src",r+"/i/hide"),i.set("alt",M.str.availability["shown"+s]),this.span.set("title",M.str.availability["shown"+s]+" \u2022 "+M.str.availability.hide_verb)};n?u.call(this):o.call(this);var a=function(e){e.preventDefault(),this.isHidden()?u.call(this):o.call(this),M.core_availability.form.update()};this.span.on("click",a,this),this.span.on("key",a,"up:32",this),this.span.on("key",function(e){e.preventDefault()},"down:32",this)},M.core_availability.EyeIcon.prototype.individual=!1,M.core_availability.EyeIcon.prototype.span=null,M.core_availability.EyeIcon.prototype.isHidden=function(){var e=this.individual?"_individual":"_all",t=M.str.availability["hidden"+e];return this.span.one("img").get("alt")===t},M.core_availability.DeleteIcon=function(t){this.span=e.Node.create('');var n=e.Node.create(''+M.str.moodle[');this.span.appendChild(n);var r=function(e){e.preventDefault(),M.core_availability.form.rootList.deleteDescendant(t),M.core_availability.form.rootList.renumber()};this.span.on("click",r,this),this.span.on("key",r,"up:32",this),this.span.on("key",function(e){e.preventDefault()},"down:32",this)},M.core_availability.DeleteIcon.prototype.span=null},"@VERSION@",{requires:["base","node","event","panel","moodle-core-notification-dialogue","json"]}); +null,M.core_availability.Item.prototype.node=null,M.core_availability.Item.prototype.pluginNode=null,M.core_availability.EyeIcon=function(t,n){this.individual=t,this.span=e.Node.create('');var r=e.Node.create("");this.span.appendChild(r);var i=t?"_individual":"_all",s=function(){r.set("src",M.util.image_url("i/show","core")),r.set("alt",M.str.availability["hidden"+i]),this.span.set("title",M.str.availability["hidden"+i]+" \u2022 "+M.str.availability.show_verb)},o=function(){r.set("src",M.util.image_url("i/hide","core")),r.set("alt",M.str.availability["shown"+i]),this.span.set("title",M.str.availability["shown"+i]+" \u2022 "+M.str.availability.hide_verb)};n?o.call(this):s.call(this);var u=function(e){e.preventDefault(),this.isHidden()?o.call(this):s.call(this),M.core_availability.form.update()};this.span.on("click",u,this),this.span.on("key",u,"up:32",this),this.span.on("key",function(e){e.preventDefault()},"down:32",this)},M.core_availability.EyeIcon.prototype.individual=!1,M.core_availability.EyeIcon.prototype.span=null,M.core_availability.EyeIcon.prototype.isHidden=function(){var e=this.individual?"_individual":"_all",t=M.str.availability["hidden"+e];return this.span.one("img").get("alt")===t},M.core_availability.DeleteIcon=function(t){this.span=e.Node.create('');var n=e.Node.create(''+M.str.moodle[');this.span.appendChild(n);var r=function(e){e.preventDefault(),M.core_availability.form.rootList.deleteDescendant(t),M.core_availability.form.rootList.renumber()};this.span.on("click",r,this),this.span.on("key",r,"up:32",this),this.span.on("key",function(e){e.preventDefault()},"down:32",this)},M.core_availability.DeleteIcon.prototype.span=null},"@VERSION@",{requires:["base","node","event","panel","moodle-core-notification-dialogue","json"]}); diff --git a/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form.js b/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form.js index b7c0509f51e..185800c2818 100644 --- a/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form.js +++ b/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form.js @@ -928,20 +928,19 @@ M.core_availability.Item.prototype.pluginNode = null; M.core_availability.EyeIcon = function(individual, shown) { this.individual = individual; this.span = Y.Node.create(''); - var iconBase = M.cfg.wwwroot + '/theme/image.php/' + M.cfg.theme + '/core/' + M.cfg.themerev; var icon = Y.Node.create(''); this.span.appendChild(icon); // Set up button text and icon. var suffix = individual ? '_individual' : '_all'; var setHidden = function() { - icon.set('src', iconBase + '/i/show'); + icon.set('src', M.util.image_url('i/show', 'core')); icon.set('alt', M.str.availability['hidden' + suffix]); this.span.set('title', M.str.availability['hidden' + suffix] + ' \u2022 ' + M.str.availability.show_verb); }; var setShown = function() { - icon.set('src', iconBase + '/i/hide'); + icon.set('src', M.util.image_url('i/hide', 'core')); icon.set('alt', M.str.availability['shown' + suffix]); this.span.set('title', M.str.availability['shown' + suffix] + ' \u2022 ' + M.str.availability.hide_verb); @@ -1006,9 +1005,8 @@ M.core_availability.EyeIcon.prototype.isHidden = function() { M.core_availability.DeleteIcon = function(toDelete) { this.span = Y.Node.create(''); - var img = Y.Node.create('' + M.str.moodle['delete'] + ''); + var img = Y.Node.create('' + M.str.moodle['delete'] + ''); this.span.appendChild(img); var click = function(e) { e.preventDefault(); diff --git a/availability/yui/src/form/js/form.js b/availability/yui/src/form/js/form.js index 5f26ced1128..099fe5ebd09 100644 --- a/availability/yui/src/form/js/form.js +++ b/availability/yui/src/form/js/form.js @@ -926,20 +926,19 @@ M.core_availability.Item.prototype.pluginNode = null; M.core_availability.EyeIcon = function(individual, shown) { this.individual = individual; this.span = Y.Node.create(''); - var iconBase = M.cfg.wwwroot + '/theme/image.php/' + M.cfg.theme + '/core/' + M.cfg.themerev; var icon = Y.Node.create(''); this.span.appendChild(icon); // Set up button text and icon. var suffix = individual ? '_individual' : '_all'; var setHidden = function() { - icon.set('src', iconBase + '/i/show'); + icon.set('src', M.util.image_url('i/show', 'core')); icon.set('alt', M.str.availability['hidden' + suffix]); this.span.set('title', M.str.availability['hidden' + suffix] + ' \u2022 ' + M.str.availability.show_verb); }; var setShown = function() { - icon.set('src', iconBase + '/i/hide'); + icon.set('src', M.util.image_url('i/hide', 'core')); icon.set('alt', M.str.availability['shown' + suffix]); this.span.set('title', M.str.availability['shown' + suffix] + ' \u2022 ' + M.str.availability.hide_verb); @@ -1004,9 +1003,8 @@ M.core_availability.EyeIcon.prototype.isHidden = function() { M.core_availability.DeleteIcon = function(toDelete) { this.span = Y.Node.create(''); - var img = Y.Node.create('' + M.str.moodle['delete'] + ''); + var img = Y.Node.create('' + M.str.moodle['delete'] + ''); this.span.appendChild(img); var click = function(e) { e.preventDefault();