diff --git a/mod/assign/feedback/editpdf/tests/behat/annotate_pdf.feature b/mod/assign/feedback/editpdf/tests/behat/annotate_pdf.feature
index 10e533ce4b9..c1dfa7ad70e 100644
--- a/mod/assign/feedback/editpdf/tests/behat/annotate_pdf.feature
+++ b/mod/assign/feedback/editpdf/tests/behat/annotate_pdf.feature
@@ -54,7 +54,9 @@ Feature: In an assignment, teacher can annotate PDF files during grading
And I click on "Grade" "link" in the "Submitted for grading" "table_row"
And I follow "Launch PDF editor..."
And I change window size to "large"
+ And I should see "Page 1 of 3"
And I click on ".navigate-next-button" "css_element"
+ And I should see "Page 2 of 3"
And I click on ".stampbutton" "css_element"
And I click on ".linebutton" "css_element"
And I click on ".commentcolourbutton" "css_element"
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 286c0f3910e..311826c55bb 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
@@ -4090,6 +4090,7 @@ EDITOR.prototype = {
setup_navigation : function() {
var pageselect,
i,
+ strinfo,
option,
previousbutton,
nextbutton;
@@ -4101,7 +4102,8 @@ EDITOR.prototype = {
for (i = 0; i < this.pages.length; i++) {
option = Y.Node.create(' ');
option.setAttribute('value', i);
- option.setHTML(M.util.get_string('pagenumber', 'assignfeedback_editpdf', i+1));
+ strinfo = {page: i+1, total: this.pages.length};
+ option.setHTML(M.util.get_string('pagexofy', 'assignfeedback_editpdf', strinfo));
pageselect.append(option);
}
}
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 28d56f59ff8..eccd7d0a494 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
@@ -4,5 +4,5 @@ YUI.add("moodle-assignfeedback_editpdf-editor",function(e,t){var n=M.cfg.wwwroot
,n),O.superclass.initializer.call(this,t)},callback_handler:function(t){t.preventDefault();var n=this.get("callback"),r=this.get("context"),i;this.hide(),i=e.bind(n,r,t),i()}},{NAME:A,ATTRS:{stamps:{value:[]},callback:{value:null},context:{value:null}}}),M.assignfeedback_editpdf=M.assignfeedback_editpdf||{},M.assignfeedback_editpdf.stamppicker=O;var _="Commentmenu",D;D=function(e){D.superclass.constructor.apply(this,[e])},e.extend(D,M.assignfeedback_editpdf.dropdown,{initializer:function(t){var n,r,i,s;s=this.get("comment"),n=e.Node.create('
'),r=e.Node.create(''+M.util.get_string("addtoquicklist","assignfeedback_editpdf")+" "),r.on("click",s.add_to_quicklist,s),r.on("key",s.add_to_quicklist,"enter,space",s),n.append(r),r=e.Node.create(''+M.util.get_string("deletecomment","assignfeedback_editpdf")+" "),r.on("click",function(e){e.preventDefault(),this.menu.hide(),this.remove()},s),r.on("key",function(){s.menu.hide(),s.remove()},"enter,space",s),n.append(r),r=e.Node.create(" "),n.append(r),this.set("headerText",M.util.get_string("commentcontextmenu","assignfeedback_editpdf")),i=e.Node.create("
"),i.append(n),this.set("bodyContent",i),D.superclass.initializer.call(this,t)},show:function(){var t=this.get("boundingBox").one("ul");t.all(".quicklist_comment").remove(!0);var n=this.get("comment");n.deleteme=!1,e.each(n.editor.quicklist.comments,function(r){var i=e.Node.create(''),s=e.Node.create(''+r.rawtext+" "),o=e.Node.create('");i.append(s),i.append(o),t.append(i),s.on("click",n.set_from_quick_comment,n,r),s.on("key",n.set_from_quick_comment,"space,enter",n,r),o.on("click",n.remove_from_quicklist,n,r),o.on("key",n.remove_from_quicklist,"space,enter",n,r)},this),D.superclass.show.call(this)}},{NAME:_,ATTRS:{comment:{value:null}}}),M.assignfeedback_editpdf=M.assignfeedback_editpdf||{},M.assignfeedback_editpdf.commentmenu=D;var P="commentsearch",H;H=function(e){e.draggable=!1,e.centered=!0,e.width="400px",e.visible=!1,e.headerContent=M.util.get_string("searchcomments","assignfeedback_editpdf"),e.footerContent="",H.superclass.constructor.apply(this,[e])},e.extend(H,M.core.dialogue,{initializer:function(t){var n,r,i,s,o,u;u=this.get("boundingBox"),u.addClass("assignfeedback_editpdf_commentsearch"),n=this.get("editor"),r=e.Node.create("
"),i=M.util.get_string("filter","assignfeedback_editpdf"),s=e.Node.create(' '),r.append(s),o=e.Node.create(''),r.append(o),s.on("keyup",this.filter_search_comments,this),o.delegate("click",this.focus_on_comment,"a",this),o.delegate("key",this.focus_on_comment,"enter,space","a",this),this.set("bodyContent",r),H.superclass.initializer.call(this,t)},filter_search_comments:function(){var t,n,r,i;i=this.get("id"),t=e.one("#"+i+s.SEARCHFILTER),n=e.one("#"+i+s.SEARCHCOMMENTSLIST),r=t.get("value"),n.all("li").each(function(e){e.get("text").indexOf(r)!==-1?e.show():e.hide()})},focus_on_comment:function(e){e.preventDefault();var t=e.target.ancestor("li"),n=t.getData("comment"),r=this.get("editor");this.hide(),n.pageno===r.currentpage?n.drawable.nodes[0].one("textarea").focus():(r.currentpage=n.pageno,r.change_page(),n.drawable.nodes[0].one("textarea").focus())},show:function(){var t=this.get("boundingBox").one("ul"),n=this.get("editor");t.all("li").remove(!0),e.each(n.pages,function(n){e.each(n.comments,function(n){var r=e.Node.create(''+n.rawtext+" ");t.append(r),r.setData("comment",n)},this)},this),this.centerDialogue(),H.superclass.show.call(this)}},{NAME:P,ATTRS:{editor:{value:null}}}),e.Base.modifyAttrs(H,{modal:{getter:function(){return!0}}}),M.assignfeedback_editpdf=M.assignfeedback_editpdf||{},M.assignfeedback_editpdf.commentsearch=H;var B=function(t,n,r,i,o,u,l,c){this.editor=t,this.gradeid=n||0,this.x=parseInt(i,10)||0,this.y=parseInt(o,10)||0,this.width=parseInt(u,10)||0,this.rawtext=c||"",this.pageno=r||0,this.colour=l||"yellow",this.drawable=!1,this.deleteme=!1,this.menulink=null,this.menu=null,this.clean=function(){return{gradeid:this.gradeid,x:parseInt(this.x,10),y:parseInt(this.y,10),width:parseInt(this.width,10),rawtext:this.rawtext,pageno:this.currentpage,colour:this.colour}},this.draw=function(t){var n=new M.assignfeedback_editpdf.drawable(this.editor),r,i=this.editor.get_dialogue_element(s.DRAWINGREGION),o,u,l,c;return r=e.Node.create(""),o=e.Node.create(''),u=e.Node.create(' '),this.menulink=u,o.append(r),this.editor.get("readonly")?r.setAttribute("readonly","readonly"):o.append(u),this.width<100&&(this.width=100),l=this.editor.get_window_coordinates(new M.assignfeedback_editpdf.point(this.x,this.y)),r.setStyles({width:this.width+"px",backgroundColor:f[this.colour],color:a}),i.append(o),o.setStyle("position","absolute"),o.setX(l.x),o.setY(l.y),n.store_position(o,l.x,l.y),n.nodes.push(o),r.set("value",this.rawtext),c=r.get("scrollHeight"),r.setStyles({height:c+"px",overflow:"hidden"}),this.editor.get("readonly")||this.attach_events(r,u),t&&r.focus(),this.drawable=n,n},this.delete_comment_later=function(){this.deleteme&&this.remove()},this.attach_events=function(t,n){t.on("blur",function(){this.rawtext=t.get("value"),this.width=parseInt(t.getStyle("width"),10),this.rawtext.replace(/^\s+|\s+$/g,"")===""&&(this.deleteme=!0,e.later(400,this,this.delete_comment_later)),this.editor.save_current_page(),this.editor.editingcomment=!1},this),n.setData("comment",this),t.on("keyup",function(){var e=t.get("scrollHeight"
),n=parseInt(t.getStyle("height"),10);e===n+8&&(e-=8),t.setStyle("height",e+"px")}),t.on("gesturemovestart",function(e){t.setData("dragging",!0),t.setData("offsetx",e.clientX-t.getX()),t.setData("offsety",e.clientY-t.getY())}),t.on("gesturemoveend",function(){t.setData("dragging",!1),this.editor.save_current_page()},null,this),t.on("gesturemove",function(e){var n=e.clientX-t.getData("offsetx"),r=e.clientY-t.getData("offsety"),i,s,o,u,a;i=parseInt(t.getStyle("width"),10),s=parseInt(t.getStyle("height"),10),o=this.editor.get_canvas_coordinates(new M.assignfeedback_editpdf.point(n,r)),a=this.editor.get_canvas_bounds(!0),a.x=0,a.y=0,a.width-=i+42,a.height-=s+8,o.clip(a),this.x=o.x,this.y=o.y,u=this.editor.get_window_coordinates(o),t.ancestor().setX(u.x),t.ancestor().setY(u.y),this.drawable.store_position(t.ancestor(),u.x,u.y)},null,this),this.menu=new M.assignfeedback_editpdf.commentmenu({buttonNode:this.menulink,comment:this})},this.remove=function(){var e=0,t;t=this.editor.pages[this.editor.currentpage].comments;for(e=0;e=0&&this.comments.splice(e,1)},failure:function(e,t){return M.core.exception(t.responseText)}}},e.io(r,i)},this.load=function(){var t=n,r;r={method:"get",context:this,sync:!1,data:{sesskey:M.cfg.sesskey,action:"loadquicklist",userid:this.editor.get("userid"),attemptnumber:this.editor.get("attemptnumber"),assignmentid:this.editor.get("assignmentid")},on:{success:function(t,n){var r;try{r=e.JSON.parse(n.responseText);if(r.error)return new M.core.ajaxException(r);e.each(r,function(e){var t=new M.assignfeedback_editpdf.quickcomment(e.id,e.rawtext,e.width,e.colour);this.comments.push(t)},this)}catch(i){return new M.core.exception(i)}},failure:function(e,t){return M.core.exception(t.responseText)}}},e.io(t,r)}};M.assignfeedback_editpdf=M.assignfeedback_editpdf||{},M.assignfeedback_editpdf.quickcommentlist=F;var I=function(){I.superclass.constructor.apply(this,arguments)};I.prototype={dialogue:null,pagecount:0,currentpage:0,pages:[],loadingicon:null,pageimage:null,graphic:null,currentedit:new M.assignfeedback_editpdf.edit,currentdrawable:!1,drawables:[],currentcomment:null,currentannotation:null,lastanntationtool:"pen",quicklist:null,searchcommentswindow:null,currentstamp:null,stamps:[],editingcomment:!1,initializer:function(){var t;t=e.one("#"+this.get("linkid")),t&&(t.on("click",this.link_handler,this),t.on("key",this.link_handler,"down:13",this),this.currentedit.start=!1,this.currentedit.end=!1,this.get("readonly")||(this.quicklist=new M.assignfeedback_editpdf.quickcommentlist(this)))},refresh_button_state:function(){var e,t,n;e=this.get_dialogue_element(s.COMMENTCOLOURBUTTON),n=M.util.image_url("background_colour_"+this.currentedit.commentcolour,"assignfeedback_editpdf"),e.one("img").setAttribute("src",n),this.currentedit.commentcolour==="clear"?e.one("img").setStyle("borderStyle","dashed"):e.one("img").setStyle("borderStyle","solid"),e=this.get_dialogue_element(s.ANNOTATIONCOLOURBUTTON),n=M.util.image_url("colour_"+this.currentedit.annotationcolour,"assignfeedback_editpdf"),e.one("img").setAttribute("src",n),t=this.get_dialogue_element(h[this.currentedit.tool]),t.addClass("assignfeedback_editpdf_selectedbutton"),t.setAttribute("aria-pressed","true"),e=this.get_dialogue_element(s.STAMPSBUTTON),e.one("img").setAttrs({src:this.get_stamp_image_url(this.currentedit.stamp),height:"16",width:"16"})},get_canvas_bounds:function(){var e=this.get_dialogue_element(s.DRAWINGCANVAS),t=e.getXY(),n=t[0],r=t[1],i=parseInt(e.getStyle("width"),10),o=parseInt(e.getStyle
("height"),10);return new M.assignfeedback_editpdf.rect(n,r,i,o)},get_canvas_coordinates:function(e){var t=this.get_canvas_bounds(),n=new M.assignfeedback_editpdf.point(e.x-t.x,e.y-t.y);return t.x=t.y=0,n.clip(t),n},get_window_coordinates:function(e){var t=this.get_canvas_bounds(),n=new M.assignfeedback_editpdf.point(e.x+t.x,e.y+t.y);return n},link_handler:function(t){var n,r,o=!0;t.preventDefault(),this.dialogue||(this.dialogue=new M.core.dialogue({headerContent:this.get("header"),bodyContent:this.get("body"),footerContent:this.get("footer"),modal:!0,width:"840px",visible:!1,draggable:!0}),this.dialogue.get("boundingBox").addClass(i.DIALOGUE),this.loadingicon=this.get_dialogue_element(s.LOADINGICON),n=this.get_dialogue_element(s.DRAWINGCANVAS),this.graphic=new e.Graphic({render:n}),r=this.get_dialogue_element(s.DRAWINGREGION),r.on("scroll",this.move_canvas,this),this.get("readonly")||(n.on("gesturemovestart",this.edit_start,null,this),n.on("gesturemove",this.edit_move,null,this),n.on("gesturemoveend",this.edit_end,null,this),this.refresh_button_state()),this.load_all_pages(),n.on("windowresize",this.resize,this),o=!1),this.dialogue.centerDialogue(),this.dialogue.show(),this.dialogue.dd.on("drag:end",this.redraw,this),o&&this.resize()},load_all_pages:function(){var t=n,i,o,u;i={method:"get",context:this,sync:!1,data:{sesskey:M.cfg.sesskey,action:"loadallpages",userid:this.get("userid"),attemptnumber:this.get("attemptnumber"),assignmentid:this.get("assignmentid"),readonly:this.get("readonly")?1:0},on:{success:function(e,t){this.all_pages_loaded(t.responseText)},failure:function(e,t){return new M.core.exception(t.responseText)}}},e.io(t,i),this.pagecount<=0&&(o={method:"get",context:this,sync:!1,data:{sesskey:M.cfg.sesskey,action:"conversionstatus",userid:this.get("userid"),attemptnumber:this.get("attemptnumber"),assignmentid:this.get("assignmentid")},on:{success:function(t,n){u=0;if(this.pagecount===0){var i=this.get("pagetotal"),a=this.get_dialogue_element(s.PROGRESSBARCONTAINER),f=a.one(".bar");if(f){var l=n.response/i*100;f.setStyle("width",l+"%"),a.setAttribute("aria-valuenow",l)}e.later(1e3,this,function(){e.io(r,o)})}},failure:function(t,n){return u+=1,this.pagecount===0&&u<5&&e.later(1e3,this,function(){e.io(r,o)}),new M.core.exception(n.responseText)}}},e.later(1e3,this,function(){u=0,e.io(r,o)}))},all_pages_loaded:function(t){var n,r,i,s,o;try{n=e.JSON.parse(t);if(n.error||!n.pagecount){this.dialogue.hide(),o=new M.core.alert({message:M.util.get_string("cannotopenpdf","assignfeedback_editpdf")}),o.show();return}}catch(u){this.dialogue.hide(),o=new M.core.alert({title:M.util.get_string("cannotopenpdf","assignfeedback_editpdf")}),o.show();return}this.pagecount=n.pagecount,this.pages=n.pages;for(r=0;r0&&(r=e)},this),r},setup_toolbar:function(){var t,n,r,i,o,u,a,c;i=this.get_dialogue_element(s.SEARCHCOMMENTSBUTTON),i.on("click",this.open_search_comments,this),i.on("key",this.open_search_comments,"down:13",this);if(this.get("readonly"))return;e.each(h,function(e,n){t=this.get_dialogue_element(e),t.on("click",this.handle_tool_button,this,n),t.on("key",this.handle_tool_button,"down:13",this,n),t.setAttribute("aria-pressed","false")},this),n=this.get_dialogue_element(s.COMMENTCOLOURBUTTON),a=new M.assignfeedback_editpdf.colourpicker({buttonNode:n,colours:f,iconprefix:"background_colour_",callback:function(e){var t=e.target.getAttribute("data-colour");t||(t=e.target.ancestor().getAttribute("data-colour")),this.currentedit.commentcolour=t,this.handle_tool_button(e,"comment")},context:this}),r=this.get_dialogue_element(s.ANNOTATIONCOLOURBUTTON),a=new M.assignfeedback_editpdf.colourpicker({buttonNode:r,iconprefix:"colour_",colours:l,callback:function(e){var t=e.target.getAttribute("data-colour");t||(t=e.target.ancestor().getAttribute("data-colour")),this.currentedit.annotationcolour=t,this.lastannotationtool?this.handle_tool_button(e,this.lastannotationtool):this.handle_tool_button(e,"pen")},context:this}),u=this.get("stampfiles"),u.length<=0?this.get_dialogue_element(h.stamp).ancestor().hide():(c=u[0].substr(u[0].lastIndexOf("/")+1),this.currentedit.stamp=c,o=this.get_dialogue_element(s.STAMPSBUTTON),a=new M.assignfeedback_editpdf.stamppicker({buttonNode:o,stamps:u,callback:function(e){var t=e.target.getAttribute("data-stamp"),n;t||(t=e.target.ancestor().getAttribute("data-stamp")),n=t.substr(t.lastIndexOf("/")),this.currentedit.stamp=n,this.handle_tool_button(e,"stamp")},context:this}),this.refresh_button_state())},handle_tool_button:function(e,t){var n;e.preventDefault(),n=this.get_dialogue_element(h[this.currentedit.tool]),n.removeClass("assignfeedback_editpdf_selectedbutton"),n.setAttribute("aria-pressed","false"),this.currentedit.tool=t,t!=="comment"&&t!=="select"&&t!=="stamp"&&(this.lastannotationtool=t),this.refresh_button_state()},stringify_current_page:function(){var t=[],n=[],r,i=0;for(i=0;it.width||i.y<0||i.y>t.height)return;this.currentedit.tool==="pen"&&this.currentedit.path.push(i),this.currentedit.tool==="select"?this.currentannotation&&this.currentedit&&this.currentannotation.move(this.currentedit.annotationstart.x+i.x-this.currentedit.start.x,this.currentedit.annotationstart.y+i.y-this.currentedit.start.y):this.currentedit.start&&(this.currentedit.end=i,this.redraw_current_edit())},edit_end:function(){var e,t,n;e=(new Date).getTime()-this.currentedit.start;if(e0)this.drawables.pop().erase();for(e=0;e0?n.removeAttribute("disabled"):n.setAttribute("disabled","true"),this.currentpage"),r.setAttribute("value",n),r.setHTML(M.util.get_string("pagenumber","assignfeedback_editpdf",n+1)),t.append(r);t.removeAttribute("disabled"),t.on("change",function(){this.currentpage=t.get("value"),this.change_page()},this),i=this.get_dialogue_element(s.PREVIOUSBUTTON),o=this.get_dialogue_element(s.NEXTBUTTON),i.on("click",this.previous_page,this),i.on("key",this.previous_page,"down:13",this),o.on("click",this.next_page,this),o.on("key",this.next_page,"down:13",this)},previous_page:function(e){e.preventDefault(),this.currentpage--,this.currentpage<0&&(this.currentpage=0),this.change_page()},next_page:function(e){e.preventDefault(),this.currentpage++,this.currentpage>=this.pages.length&&(this.currentpage=this.
-pages.length-1),this.change_page()},move_canvas:function(){var e,t,n,r;e=this.get_dialogue_element(s.DRAWINGREGION),t=parseInt(e.get("scrollLeft"),10),n=parseInt(e.get("scrollTop"),10);for(r=0;rt.width||i.y<0||i.y>t.height)return;this.currentedit.tool==="pen"&&this.currentedit.path.push(i),this.currentedit.tool==="select"?this.currentannotation&&this.currentedit&&this.currentannotation.move(this.currentedit.annotationstart.x+i.x-this.currentedit.start.x,this.currentedit.annotationstart.y+i.y-this.currentedit.start.y):this.currentedit.start&&(this.currentedit.end=i,this.redraw_current_edit())},edit_end:function(){var e,t,n;e=(new Date).getTime()-this.currentedit.start;if(e0)this.drawables.pop().erase();for(e=0;e0?n.removeAttribute("disabled"):n.setAttribute("disabled","true"),this.currentpage"),i.setAttribute("value",n),r={page:n+1,total:this.pages.length},i.setHTML(M.util.get_string("pagexofy","assignfeedback_editpdf",r)),t.append(i);t.removeAttribute("disabled"),t.on("change",function(){this.currentpage=t.get("value"),this.change_page()},this),o=this.get_dialogue_element(s.PREVIOUSBUTTON),u=this.get_dialogue_element(s.NEXTBUTTON),o.on("click",this.previous_page,this),o.on("key",this.previous_page,"down:13",this),u.on("click",this.next_page,this),u.on("key",this.next_page,"down:13",this)},previous_page:function(e){e.preventDefault(),this.currentpage--,this.currentpage<0&&(this.currentpage=0),this.change_page()},next_page:function(e){e.preventDefault(),this.currentpage++,this.currentpage>=this.pages
+.length&&(this.currentpage=this.pages.length-1),this.change_page()},move_canvas:function(){var e,t,n,r;e=this.get_dialogue_element(s.DRAWINGREGION),t=parseInt(e.get("scrollLeft"),10),n=parseInt(e.get("scrollTop"),10);for(r=0;r');
option.setAttribute('value', i);
- option.setHTML(M.util.get_string('pagenumber', 'assignfeedback_editpdf', i+1));
+ strinfo = {page: i+1, total: this.pages.length};
+ option.setHTML(M.util.get_string('pagexofy', 'assignfeedback_editpdf', strinfo));
pageselect.append(option);
}
}
diff --git a/mod/assign/feedback/editpdf/yui/src/editor/js/editor.js b/mod/assign/feedback/editpdf/yui/src/editor/js/editor.js
index 4f38c877306..82f9ef5dcb5 100644
--- a/mod/assign/feedback/editpdf/yui/src/editor/js/editor.js
+++ b/mod/assign/feedback/editpdf/yui/src/editor/js/editor.js
@@ -1035,6 +1035,7 @@ EDITOR.prototype = {
setup_navigation : function() {
var pageselect,
i,
+ strinfo,
option,
previousbutton,
nextbutton;
@@ -1046,7 +1047,8 @@ EDITOR.prototype = {
for (i = 0; i < this.pages.length; i++) {
option = Y.Node.create(' ');
option.setAttribute('value', i);
- option.setHTML(M.util.get_string('pagenumber', 'assignfeedback_editpdf', i+1));
+ strinfo = {page: i+1, total: this.pages.length};
+ option.setHTML(M.util.get_string('pagexofy', 'assignfeedback_editpdf', strinfo));
pageselect.append(option);
}
}