AutorÃa | Ultima modificación | Ver Log |
/* eslint-disable no-unused-vars */var COMMENTSEARCHNAME = "commentsearch",COMMENTSEARCH;/*** Provides an in browser PDF editor.** @module moodle-assignfeedback_editpdf-editor*//*** This is a searchable dialogue of comments.** @namespace M.assignfeedback_editpdf* @class commentsearch* @constructor* @extends M.core.dialogue*/COMMENTSEARCH = function(config) {config.draggable = false;config.centered = true;config.width = '400px';config.visible = false;config.headerContent = M.util.get_string('searchcomments', 'assignfeedback_editpdf');config.footerContent = '';COMMENTSEARCH.superclass.constructor.apply(this, [config]);};Y.extend(COMMENTSEARCH, M.core.dialogue, {/*** Initialise the menu.** @method initializer* @return void*/initializer: function() {var editor,container,placeholder,commentfilter,commentlist,bb;bb = this.get('boundingBox');bb.addClass('assignfeedback_editpdf_commentsearch');editor = this.get('editor');container = Y.Node.create('<div/>');placeholder = M.util.get_string('filter', 'assignfeedback_editpdf');commentfilter = Y.Node.create('<input type="text" size="20" placeholder="' + placeholder + '"/>');container.append(commentfilter);commentlist = Y.Node.create('<ul role="menu" class="assignfeedback_editpdf_search"/>');container.append(commentlist);commentfilter.on('keyup', this.filter_search_comments, this);commentlist.delegate('click', this.focus_on_comment, 'a', this);commentlist.delegate('key', this.focus_on_comment, 'enter,space', 'a', this);// Set the body content.this.set('bodyContent', container);},/*** Event handler to filter the list of comments.** @protected* @method filter_search_comments*/filter_search_comments: function() {var filternode,commentslist,filtertext,dialogueid;dialogueid = this.get('id');filternode = Y.one('#' + dialogueid + SELECTOR.SEARCHFILTER);commentslist = Y.one('#' + dialogueid + SELECTOR.SEARCHCOMMENTSLIST);filtertext = filternode.get('value');commentslist.all('li').each(function(node) {if (node.get('text').indexOf(filtertext) !== -1) {node.show();} else {node.hide();}});},/*** Event handler to focus on a selected comment.** @param Event e* @protected* @method focus_on_comment*/focus_on_comment: function(e) {e.preventDefault();var target = e.target.ancestor('li'),comment = target.getData('comment'),editor = this.get('editor');this.hide();comment.pageno = comment.clean().pageno;if (comment.pageno !== editor.currentpage) {// Comment is on a different page.editor.currentpage = comment.pageno;editor.change_page();}comment.node = comment.drawable.nodes[0].one('textarea');comment.node.ancestor('div').removeClass('commentcollapsed');comment.node.focus();},/*** Show the menu.** @method show* @return void*/show: function() {var commentlist = this.get('boundingBox').one('ul'),editor = this.get('editor');commentlist.all('li').remove(true);// Rebuild the latest list of comments.Y.each(editor.pages, function(page) {Y.each(page.comments, function(comment) {var commentnode = Y.Node.create('<li><a href="#" tabindex="-1"><pre>' + comment.rawtext + '</pre></a></li>');commentlist.append(commentnode);commentnode.setData('comment', comment);}, this);}, this);this.centerDialogue();COMMENTSEARCH.superclass.show.call(this);}}, {NAME: COMMENTSEARCHNAME,ATTRS: {/*** The editor this search window is attached to.** @attribute editor* @type M.assignfeedback_editpdf.editor* @default null*/editor: {value: null}}});Y.Base.modifyAttrs(COMMENTSEARCH, {/*** Whether the widget should be modal or not.** Moodle override: We override this for commentsearch to force it always true.** @attribute Modal* @type Boolean* @default true*/modal: {getter: function() {return true;}}});M.assignfeedback_editpdf = M.assignfeedback_editpdf || {};M.assignfeedback_editpdf.commentsearch = COMMENTSEARCH;