From 923641f71ce213f8f793550a16373652ee976431 Mon Sep 17 00:00:00 2001 From: Nathan Nguyen Date: Mon, 20 Aug 2018 12:56:34 +1000 Subject: [PATCH 1/2] MDL-62319 Assign: Grading interface is broken when using iOS 11.3 devices --- mod/assign/feedback/editpdf/styles.css | 1 + ...dle-assignfeedback_editpdf-editor-debug.js | 72 +++++++++++++++++- ...oodle-assignfeedback_editpdf-editor-min.js | 8 +- .../moodle-assignfeedback_editpdf-editor.js | 72 +++++++++++++++++- .../editpdf/yui/src/editor/js/editor.js | 73 ++++++++++++++++++- 5 files changed, 219 insertions(+), 7 deletions(-) diff --git a/mod/assign/feedback/editpdf/styles.css b/mod/assign/feedback/editpdf/styles.css index 163026442da..5c10516bc5f 100644 --- a/mod/assign/feedback/editpdf/styles.css +++ b/mod/assign/feedback/editpdf/styles.css @@ -35,6 +35,7 @@ position: absolute; overflow: auto; background-color: #ccc; + touch-action: none; } .assignfeedback_editpdf_widget { diff --git a/mod/assign/feedback/editpdf/yui/build/moodle-assignfeedback_editpdf-editor/moodle-assignfeedback_editpdf-editor-debug.js b/mod/assign/feedback/editpdf/yui/build/moodle-assignfeedback_editpdf-editor/moodle-assignfeedback_editpdf-editor-debug.js index dc22ae11bfb..98135ebebdd 100644 --- a/mod/assign/feedback/editpdf/yui/build/moodle-assignfeedback_editpdf-editor/moodle-assignfeedback_editpdf-editor-debug.js +++ b/mod/assign/feedback/editpdf/yui/build/moodle-assignfeedback_editpdf-editor/moodle-assignfeedback_editpdf-editor-debug.js @@ -3500,6 +3500,14 @@ EDITOR.prototype = { */ collapsecomments: true, + /** + * Check if passive option is supported + * @property isPassiveSupported + * @type Boolean + * @public + */ + isPassiveSupported : false, + /** * Called during the initialisation process of the object. * @method initializer @@ -4046,6 +4054,9 @@ EDITOR.prototype = { if (this.get('readonly')) { return; } + // Check if passive option is supported for event listener + this.check_passive_supported(); + // Setup the tool buttons. Y.each(TOOLSELECTOR, function(selector, tool) { toolnode = this.get_dialogue_element(selector); @@ -4139,6 +4150,16 @@ EDITOR.prototype = { if (tool !== "comment" && tool !== "select" && tool !== "drag" && tool !== "stamp") { this.lastannotationtool = tool; } + + var useragent = navigator.userAgent; + if (useragent.includes("Safari")) { + if (tool === "drag") { + this.enable_touch_scroll(); + } else { + this.disable_touch_scroll(); + } + } + this.refresh_button_state(); }, @@ -4683,6 +4704,56 @@ EDITOR.prototype = { for (i = 0; i < this.drawables.length; i++) { this.drawables[i].scroll_update(x, y); } + }, + + /** + * Check if Passive option is support + */ + check_passive_supported : function() { + try { + var options = Object.defineProperty && Object.defineProperty({}, 'passive', { + get: function() { + this.isPassiveSupported = true; + }.bind(this) + }); + + document.addEventListener('touchmove', options, options); + document.removeEventListener('touchmove', options, options); + + } catch (err) { + this.isPassiveSupported = false; + } + }, + + /** + * Disable Touch Move scrolling + */ + disable_touch_scroll : function() { + var drawingregion = this.get_dialogue_element(SELECTOR.DRAWINGREGION); + drawingregion.setStyle('overflow', 'hidden'); + if (this.isPassiveSupported) { + document.addEventListener('touchmove', this.stop_touch_scroll, {passive: false}); + } + }, + + /** + * Enable Touch Move scrolling + */ + enable_touch_scroll : function() { + var drawingregion = this.get_dialogue_element(SELECTOR.DRAWINGREGION); + drawingregion.setStyle('overflow', 'auto'); + if (this.isPassiveSupported) { + document.removeEventListener('touchmove', this.stop_touch_scroll, {passive: false}); + } + }, + + /** + * Stop Touch Scrolling + * @param {Object} e + */ + stop_touch_scroll : function(e) { + e.stopPropagation(); + e.preventDefault(); } }; @@ -4751,7 +4822,6 @@ M.assignfeedback_editpdf.editor.init = M.assignfeedback_editpdf.editor.init || f return M.assignfeedback_editpdf.instance; }; - }, '@VERSION@', { "requires": [ "base", diff --git a/mod/assign/feedback/editpdf/yui/build/moodle-assignfeedback_editpdf-editor/moodle-assignfeedback_editpdf-editor-min.js b/mod/assign/feedback/editpdf/yui/build/moodle-assignfeedback_editpdf-editor/moodle-assignfeedback_editpdf-editor-min.js index 827e3d25ece..3c52a7ef6a3 100644 --- a/mod/assign/feedback/editpdf/yui/build/moodle-assignfeedback_editpdf-editor/moodle-assignfeedback_editpdf-editor-min.js +++ b/mod/assign/feedback/editpdf/yui/build/moodle-assignfeedback_editpdf-editor/moodle-assignfeedback_editpdf-editor-min.js @@ -3,7 +3,7 @@ YUI.add("moodle-assignfeedback_editpdf-editor",function(e,t){var n=M.cfg.wwwroot M.assignfeedback_editpdf.drawable(this.editor),r,i,s;return i=new M.assignfeedback_editpdf.rect,i.bound([new M.assignfeedback_editpdf.point(t.start.x,t.start.y),new M.assignfeedback_editpdf.point(t.end.x,t.end.y)]),i.has_min_width()||i.set_min_width(),s=l[t.annotationcolour],s=s.replace("rgb","rgba"),s=s.replace(")",",0.5)"),r=this.editor.graphic.addShape({type:e.Rect,width:i.width,height:20,stroke:!1,fill:{color:s},x:i.x,y:t.start.y-10}),n.shapes.push(r),n},init_from_edit:function(e){var t=new M.assignfeedback_editpdf.rect;return t.bound([e.start,e.end]),this.gradeid=this.editor.get("gradeid"),this.pageno=this.editor.currentpage,this.x=t.x,this.y=e.start.y-10,this.endx=t.x+t.width,this.endy=e.start.y+10,this.colour=e.annotationcolour,this.page="",t.has_min_width()}}),M.assignfeedback_editpdf=M.assignfeedback_editpdf||{},M.assignfeedback_editpdf.annotationhighlight=x;var T=function(e){T.superclass.constructor.apply(this,[e])};T.NAME="annotationstamp",T.ATTRS={},e.extend(T,M.assignfeedback_editpdf.annotation,{draw:function(){var t=new M.assignfeedback_editpdf.drawable(this.editor),n=this.editor.get_dialogue_element(s.DRAWINGREGION),r,i;return i=this.editor.get_window_coordinates(new M.assignfeedback_editpdf.point(this.x,this.y)),r=e.Node.create("
"),r.setStyles({position:"absolute",display:"inline-block",backgroundImage:"url("+this.editor.get_stamp_image_url(this.path)+")",width:this.endx-this.x,height:this.endy-this.y,backgroundSize:"100% 100%",zIndex:50}),n.append(r),r.setX(i.x),r.setY(i.y),t.store_position(r,i.x,i.y),this.editor.get("readonly")||(r.on("gesturemovestart",this.editor.edit_start,null,this.editor),r.on("gesturemove",this.editor.edit_move,null,this.editor),r.on("gesturemoveend",this.editor.edit_end,null,this.editor)),t.nodes.push(r),this.drawable=t,T.superclass.draw.apply(this)},draw_current_edit:function(t){var n=new M.assignfeedback_editpdf.rect,r=new M.assignfeedback_editpdf.drawable(this.editor),i=this.editor.get_dialogue_element(s.DRAWINGREGION),o,u;return n.bound([t.start,t.end]),u=this.editor.get_window_coordinates(new M.assignfeedback_editpdf.point(n.x,n.y)),o=e.Node.create("
"),o.setStyles({position:"absolute",display:"inline-block",backgroundImage:"url("+this.editor.get_stamp_image_url(t.stamp)+")",width:n.width,height:n.height,backgroundSize:"100% 100%",zIndex:50}),i.append(o),o.setX(u.x),o.setY(u.y),r.store_position(o,u.x,u.y),r.nodes.push(o),r},init_from_edit:function(e){var t=new M.assignfeedback_editpdf.rect;return t.bound([e.start,e.end]),t.width<40&&(t.width=40),t.height<40&&(t.height=40),this.gradeid=this.editor.get("gradeid"),this.pageno=this.editor.currentpage,this.x=t.x,this.y=t.y,this.endx=t.x+t.width,this.endy=t.y+t.height,this.colour=e.annotationcolour,this.path=e.stamp,!0},move:function(e,t){var n=e-this.x,r=t-this.y;this.x+=n,this.y+=r,this.endx+=n,this.endy+=r,this.drawable&&this.drawable.erase(),this.editor.drawables.push(this.draw())}}),M.assignfeedback_editpdf=M.assignfeedback_editpdf||{},M.assignfeedback_editpdf.annotationstamp=T;var N="Dropdown menu",C;C=function(e){e.draggable=!1,e.centered=!1,e.width="auto",e.visible=!1,e.footerContent="",C.superclass.constructor.apply(this,[e])},e.extend(C,M.core.dialogue,{initializer:function(t){var n,r,i,s;C.superclass.initializer.call(this,t),s=this.get("boundingBox"),s.addClass("assignfeedback_editpdf_dropdown"),n=this.get("buttonNode"),r=this.bodyNode,i=e.Node.create("

"),i.addClass("accesshide"),i.setHTML(this.get("headerText")),r.prepend(i),r.on("clickoutside",function(e){this.get("visible")&&e.target.get("id")!==n.get("id")&&e.target.ancestor().get("id")!==n.get("id")&&(e.preventDefault(),this.hide())},this),n.on("click",function(e){e.preventDefault(),this.show()},this),n.on("key",this.show,"enter,space",this)},show:function(){var t=this.get("buttonNode"),n=C.superclass.show.call(this);return this.align(t,[e.WidgetPositionAlign.TL,e.WidgetPositionAlign.BL]),n}},{NAME:N,ATTRS:{headerText:{value:""},buttonNode:{value:null}}}),e.Base.modifyAttrs(C,{modal:{getter:function(){return!1}}}),M.assignfeedback_editpdf=M.assignfeedback_editpdf||{},M.assignfeedback_editpdf.dropdown=C;var k="Colourpicker",L;L=function(e){L.superclass.constructor.apply(this,[e])},e.extend(L,M.assignfeedback_editpdf.dropdown,{initializer:function(t){var n=e.Node.create('