diff --git a/yui/build/moodle-atto_multilang2-button/moodle-atto_multilang2-button-coverage.js b/yui/build/moodle-atto_multilang2-button/moodle-atto_multilang2-button-coverage.js index 1b84dab7b21f..cbd3fbe6e8a7 100644 --- a/yui/build/moodle-atto_multilang2-button/moodle-atto_multilang2-button-coverage.js +++ b/yui/build/moodle-atto_multilang2-button/moodle-atto_multilang2-button-coverage.js @@ -1,6 +1,6 @@ if (typeof __coverage__ === 'undefined') { __coverage__ = {}; } if (!__coverage__['build/moodle-atto_multilang2-button/moodle-atto_multilang2-button.js']) { - __coverage__['build/moodle-atto_multilang2-button/moodle-atto_multilang2-button.js'] = {"path":"build/moodle-atto_multilang2-button/moodle-atto_multilang2-button.js","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":41},"end":{"line":1,"column":60}}},"2":{"name":"(anonymous_2)","line":53,"loc":{"start":{"line":53,"column":17},"end":{"line":53,"column":28}}},"3":{"name":"(anonymous_3)","line":82,"loc":{"start":{"line":82,"column":29},"end":{"line":82,"column":40}}},"4":{"name":"(anonymous_4)","line":113,"loc":{"start":{"line":113,"column":14},"end":{"line":113,"column":36}}},"5":{"name":"(anonymous_5)","line":138,"loc":{"start":{"line":138,"column":23},"end":{"line":138,"column":34}}},"6":{"name":"(anonymous_6)","line":171,"loc":{"start":{"line":171,"column":27},"end":{"line":171,"column":38}}},"7":{"name":"(anonymous_7)","line":192,"loc":{"start":{"line":192,"column":24},"end":{"line":192,"column":35}}},"8":{"name":"(anonymous_8)","line":208,"loc":{"start":{"line":208,"column":24},"end":{"line":208,"column":36}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":261,"column":61}},"2":{"start":{"line":28,"column":0},"end":{"line":41,"column":46}},"3":{"start":{"line":51,"column":0},"end":{"line":258,"column":3}},"4":{"start":{"line":54,"column":8},"end":{"line":55,"column":30}},"5":{"start":{"line":57,"column":8},"end":{"line":71,"column":9}},"6":{"start":{"line":58,"column":12},"end":{"line":58,"column":58}},"7":{"start":{"line":60,"column":12},"end":{"line":67,"column":15}},"8":{"start":{"line":69,"column":12},"end":{"line":69,"column":91}},"9":{"start":{"line":70,"column":12},"end":{"line":70,"column":38}},"10":{"start":{"line":83,"column":8},"end":{"line":85,"column":21}},"11":{"start":{"line":87,"column":8},"end":{"line":87,"column":57}},"12":{"start":{"line":89,"column":8},"end":{"line":96,"column":9}},"13":{"start":{"line":90,"column":12},"end":{"line":95,"column":13}},"14":{"start":{"line":91,"column":16},"end":{"line":94,"column":19}},"15":{"start":{"line":98,"column":8},"end":{"line":98,"column":28}},"16":{"start":{"line":114,"column":8},"end":{"line":117,"column":20}},"17":{"start":{"line":119,"column":8},"end":{"line":119,"column":45}},"18":{"start":{"line":120,"column":8},"end":{"line":120,"column":87}},"19":{"start":{"line":122,"column":8},"end":{"line":122,"column":71}},"20":{"start":{"line":123,"column":8},"end":{"line":123,"column":73}},"21":{"start":{"line":125,"column":8},"end":{"line":125,"column":54}},"22":{"start":{"line":127,"column":8},"end":{"line":127,"column":27}},"23":{"start":{"line":139,"column":8},"end":{"line":143,"column":19}},"24":{"start":{"line":145,"column":8},"end":{"line":160,"column":9}},"25":{"start":{"line":146,"column":12},"end":{"line":146,"column":46}},"26":{"start":{"line":148,"column":12},"end":{"line":154,"column":13}},"27":{"start":{"line":149,"column":16},"end":{"line":149,"column":58}},"28":{"start":{"line":150,"column":16},"end":{"line":152,"column":17}},"29":{"start":{"line":151,"column":20},"end":{"line":151,"column":87}},"30":{"start":{"line":153,"column":16},"end":{"line":153,"column":43}},"31":{"start":{"line":156,"column":15},"end":{"line":160,"column":9}},"32":{"start":{"line":157,"column":12},"end":{"line":159,"column":13}},"33":{"start":{"line":158,"column":16},"end":{"line":158,"column":65}},"34":{"start":{"line":162,"column":8},"end":{"line":162,"column":20}},"35":{"start":{"line":172,"column":8},"end":{"line":176,"column":22}},"36":{"start":{"line":178,"column":8},"end":{"line":178,"column":67}},"37":{"start":{"line":179,"column":8},"end":{"line":179,"column":63}},"38":{"start":{"line":181,"column":8},"end":{"line":183,"column":9}},"39":{"start":{"line":182,"column":12},"end":{"line":182,"column":70}},"40":{"start":{"line":193,"column":8},"end":{"line":193,"column":53}},"41":{"start":{"line":195,"column":8},"end":{"line":195,"column":64}},"42":{"start":{"line":209,"column":8},"end":{"line":216,"column":30}},"43":{"start":{"line":218,"column":8},"end":{"line":218,"column":27}},"44":{"start":{"line":220,"column":8},"end":{"line":220,"column":48}},"45":{"start":{"line":221,"column":8},"end":{"line":221,"column":46}},"46":{"start":{"line":223,"column":8},"end":{"line":223,"column":78}},"47":{"start":{"line":224,"column":8},"end":{"line":224,"column":61}},"48":{"start":{"line":226,"column":8},"end":{"line":239,"column":9}},"49":{"start":{"line":227,"column":12},"end":{"line":234,"column":13}},"50":{"start":{"line":228,"column":16},"end":{"line":228,"column":56}},"51":{"start":{"line":229,"column":16},"end":{"line":229,"column":73}},"52":{"start":{"line":231,"column":16},"end":{"line":231,"column":69}},"53":{"start":{"line":233,"column":16},"end":{"line":233,"column":77}},"54":{"start":{"line":236,"column":12},"end":{"line":236,"column":49}},"55":{"start":{"line":238,"column":12},"end":{"line":238,"column":31}},"56":{"start":{"line":241,"column":8},"end":{"line":241,"column":22}},"57":{"start":{"line":243,"column":8},"end":{"line":243,"column":39}}},"branchMap":{"1":{"line":57,"type":"if","locations":[{"start":{"line":57,"column":8},"end":{"line":57,"column":8}},{"start":{"line":57,"column":8},"end":{"line":57,"column":8}}]},"2":{"line":90,"type":"if","locations":[{"start":{"line":90,"column":12},"end":{"line":90,"column":12}},{"start":{"line":90,"column":12},"end":{"line":90,"column":12}}]},"3":{"line":120,"type":"cond-expr","locations":[{"start":{"line":120,"column":66},"end":{"line":120,"column":74}},{"start":{"line":120,"column":77},"end":{"line":120,"column":86}}]},"4":{"line":145,"type":"if","locations":[{"start":{"line":145,"column":8},"end":{"line":145,"column":8}},{"start":{"line":145,"column":8},"end":{"line":145,"column":8}}]},"5":{"line":148,"type":"if","locations":[{"start":{"line":148,"column":12},"end":{"line":148,"column":12}},{"start":{"line":148,"column":12},"end":{"line":148,"column":12}}]},"6":{"line":156,"type":"if","locations":[{"start":{"line":156,"column":15},"end":{"line":156,"column":15}},{"start":{"line":156,"column":15},"end":{"line":156,"column":15}}]},"7":{"line":157,"type":"if","locations":[{"start":{"line":157,"column":12},"end":{"line":157,"column":12}},{"start":{"line":157,"column":12},"end":{"line":157,"column":12}}]},"8":{"line":181,"type":"if","locations":[{"start":{"line":181,"column":8},"end":{"line":181,"column":8}},{"start":{"line":181,"column":8},"end":{"line":181,"column":8}}]},"9":{"line":181,"type":"binary-expr","locations":[{"start":{"line":181,"column":12},"end":{"line":181,"column":22}},{"start":{"line":181,"column":26},"end":{"line":181,"column":35}}]},"10":{"line":226,"type":"if","locations":[{"start":{"line":226,"column":8},"end":{"line":226,"column":8}},{"start":{"line":226,"column":8},"end":{"line":226,"column":8}}]}},"code":["(function () { YUI.add('moodle-atto_multilang2-button', function (Y, NAME) {","","// This file is part of Moodle - http://moodle.org/","//","// Moodle is free software: you can redistribute it and/or modify","// it under the terms of the GNU General Public License as published by","// the Free Software Foundation, either version 3 of the License, or","// (at your option) any later version.","//","// Moodle is distributed in the hope that it will be useful,","// but WITHOUT ANY WARRANTY; without even the implied warranty of","// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the","// GNU General Public License for more details.","//","// You should have received a copy of the GNU General Public License","// along with Moodle. If not, see .","","/**"," * @package atto_multilang2"," * @copyright 2015 onwards Julen Pardo & Mondragon Unibertsitatea"," * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later"," */","","/**"," * @module moodle-atto_multilang2-button"," */","","var CLASSES = {"," TAG: 'filter-multilang-tag'"," },",""," LANG_WILDCARD = '%lang',"," CONTENT_WILDCARD = '%content',"," ATTR_LANGUAGES = 'languages',"," ATTR_CAPABILITY = 'capability',"," DEFAULT_LANGUAGE = '{\"en\":\"English (en)\"}',"," OPENING_SPAN = '',"," TEMPLATE = '' +"," ' ' + OPENING_SPAN + '{mlang ' + LANG_WILDCARD + '}' +"," CONTENT_WILDCARD +"," OPENING_SPAN + '{mlang} ';","","/**"," * Atto text editor multilanguage plugin."," *"," * @namespace M.atto_multilang2"," * @class button"," * @extends M.editor_atto.EditorPlugin"," */","","Y.namespace('M.atto_multilang2').Button = Y.Base.create('button', Y.M.editor_atto.EditorPlugin, [], {",""," initializer: function() {"," var hascapability = this.get(ATTR_CAPABILITY),"," toolbarItems = [];",""," if (hascapability) {"," toolbarItems = this._initializeToolbarItems();",""," this.addToolbarMenu({"," globalItemConfig: {"," callback: this._addTags"," },"," icon: 'icon',"," iconComponent: 'atto_multilang2',"," items: toolbarItems"," });",""," this.get('host').on('atto:selectionchanged', this._checkSelectionChange, this);"," this._setSubmitListener();"," }"," },",""," /**"," * Initializes the toolbar items, which will be the installed languages,"," * received as parameter."," *"," * @method _initializeToolbarItems"," * @private"," * @return {Array} installed language strings"," */"," _initializeToolbarItems: function() {"," var toolbarItems = [],"," languages,"," langCode;",""," languages = JSON.parse(this.get(ATTR_LANGUAGES));",""," for (langCode in languages) {"," if (languages.hasOwnProperty(langCode)) {"," toolbarItems.push({"," text: languages[langCode],"," callbackArgs: langCode"," });"," }"," }",""," return toolbarItems;"," },",""," /**"," * Retrieves the selected text, wraps it with the multilang tags,"," * and replaces the selected text in the editor with with it."," *"," * If there is no content selected, a \" \" will be inserted; otherwhise,"," * it's impossible to place the cursor inside the {mlang} tags."," *"," * @method _addTags"," * @param {EventFacade} e"," * @param {string} langCode the language code"," * @private"," */"," _addTags: function(e, langCode) {"," var selection,"," host = this.get('host'),"," taggedContent = TEMPLATE,"," content;",""," selection = this._getSelectionHTML();"," content = (host.getSelection().toString().length === 0) ? ' ' : selection;",""," taggedContent = taggedContent.replace(LANG_WILDCARD, langCode);"," taggedContent = taggedContent.replace(CONTENT_WILDCARD, content);",""," host.insertContentAtFocusPoint(taggedContent);",""," this.markUpdated();"," },",""," /**"," * Retrieves selected text with its HTML."," * Took from: http://stackoverflow.com/questions/4176923/html-of-selected-text/4177234#4177234"," *"," * @method _getSelectionHTML"," * @private"," * @return {string} selected text's html; empty if nothing selected"," */"," _getSelectionHTML: function() {"," var html = '',"," selection,"," container,"," index,"," lenght;",""," if (typeof window.getSelection !== 'undefined') {"," selection = window.getSelection();",""," if (selection.rangeCount) {"," container = document.createElement('div');"," for (index = 0, lenght = selection.rangeCount; index < lenght; ++index) {"," container.appendChild(selection.getRangeAt(index).cloneContents());"," }"," html = container.innerHTML;"," }",""," } else if (typeof document.selection !== 'undefined') {"," if (document.selection.type === 'Text') {"," html = document.selection.createRange().htmlText;"," }"," }",""," return html;"," },"," /**"," * Listens to every change of the text cursor in the text area. If the"," * cursor is placed within a multilang tag, the whole tag is selected."," *"," * @method _checkSelectionChange"," * @private"," */"," _checkSelectionChange: function() {"," var host = this.get('host'),"," node = host.getSelectionParentNode(),"," nodeValue = Y.one(node).get('text'),"," isTextNode,"," isLangTag;",""," isTextNode = Y.one(node).toString().indexOf('#text') > - 1;"," isLangTag = (nodeValue.match(/\\{mlang/g).length === 1);",""," if (isTextNode && isLangTag) {"," host.setSelection(host.getSelectionFromNode(Y.one(node)));"," }"," },",""," /**"," * Sets the submit listener to the function that finds the spaned {mlang} tags."," *"," * @method _setSubmitListener"," * @private"," */"," _setSubmitListener: function() {"," var submitbutton = Y.one('#id_submitbutton');",""," submitbutton.on('click', this._cleanTagsOnSubmit, this);"," },",""," /**"," * Cleans the tags around the {mlang} tags when the form is submitted."," * Is necessary to prevent the default action first (the form submission) to"," * start working. When finished, with \"detach\", the default submit listener"," * is restored, so the form can be submitted."," *"," * @method _cleanTagsOnSubmit"," * @param {EventFacade} e"," * @private"," */"," _cleanTagsOnSubmit: function(e) {"," var submitbutton = Y.one('#id_submitbutton'),"," textarea,"," innerHTML,"," spanedmlangtags,"," spanedmlangtag,"," index,"," cleanmlangtag,"," regularExpression;",""," e.preventDefault();",""," textarea = Y.one('#id_messageeditable');"," innerHTML = textarea.get('innerHTML');",""," regularExpression = new RegExp(OPENING_SPAN + '.*?' + '', 'g');"," spanedmlangtags = innerHTML.match(regularExpression);",""," if (spanedmlangtags !== null) {"," for (index = 0; index < spanedmlangtags.length; index++) {"," spanedmlangtag = spanedmlangtags[index];"," cleanmlangtag = spanedmlangtag.replace(OPENING_SPAN, '');",""," cleanmlangtag = cleanmlangtag.replace('', '');",""," innerHTML = innerHTML.replace(spanedmlangtag, cleanmlangtag);"," }",""," textarea.set('innerHTML', innerHTML);",""," this.markUpdated();"," }",""," this.detach();",""," submitbutton.simulate('click');"," }","","}, {"," ATTRS: {"," /**"," * The list of installed languages"," *"," * @attribute languages"," * @type array"," * @default {\"en\":\"English (en)\"}"," */"," languages: DEFAULT_LANGUAGE,"," capability: true"," }","});","","","}, '@VERSION@', {\"requires\": [\"moodle-editor_atto-plugin\"]});","","}());"]}; + __coverage__['build/moodle-atto_multilang2-button/moodle-atto_multilang2-button.js'] = {"path":"build/moodle-atto_multilang2-button/moodle-atto_multilang2-button.js","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":41},"end":{"line":1,"column":60}}},"2":{"name":"(anonymous_2)","line":53,"loc":{"start":{"line":53,"column":17},"end":{"line":53,"column":28}}},"3":{"name":"(anonymous_3)","line":83,"loc":{"start":{"line":83,"column":29},"end":{"line":83,"column":40}}},"4":{"name":"(anonymous_4)","line":114,"loc":{"start":{"line":114,"column":14},"end":{"line":114,"column":36}}},"5":{"name":"(anonymous_5)","line":139,"loc":{"start":{"line":139,"column":23},"end":{"line":139,"column":34}}},"6":{"name":"(anonymous_6)","line":172,"loc":{"start":{"line":172,"column":27},"end":{"line":172,"column":38}}},"7":{"name":"(anonymous_7)","line":193,"loc":{"start":{"line":193,"column":24},"end":{"line":193,"column":35}}},"8":{"name":"(anonymous_8)","line":209,"loc":{"start":{"line":209,"column":24},"end":{"line":209,"column":36}}},"9":{"name":"(anonymous_9)","line":256,"loc":{"start":{"line":256,"column":25},"end":{"line":256,"column":36}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":296,"column":61}},"2":{"start":{"line":28,"column":0},"end":{"line":41,"column":46}},"3":{"start":{"line":51,"column":0},"end":{"line":293,"column":3}},"4":{"start":{"line":54,"column":8},"end":{"line":55,"column":30}},"5":{"start":{"line":57,"column":8},"end":{"line":72,"column":9}},"6":{"start":{"line":58,"column":12},"end":{"line":58,"column":39}},"7":{"start":{"line":59,"column":12},"end":{"line":59,"column":58}},"8":{"start":{"line":61,"column":12},"end":{"line":68,"column":15}},"9":{"start":{"line":70,"column":12},"end":{"line":70,"column":91}},"10":{"start":{"line":71,"column":12},"end":{"line":71,"column":38}},"11":{"start":{"line":84,"column":8},"end":{"line":86,"column":21}},"12":{"start":{"line":88,"column":8},"end":{"line":88,"column":57}},"13":{"start":{"line":90,"column":8},"end":{"line":97,"column":9}},"14":{"start":{"line":91,"column":12},"end":{"line":96,"column":13}},"15":{"start":{"line":92,"column":16},"end":{"line":95,"column":19}},"16":{"start":{"line":99,"column":8},"end":{"line":99,"column":28}},"17":{"start":{"line":115,"column":8},"end":{"line":118,"column":20}},"18":{"start":{"line":120,"column":8},"end":{"line":120,"column":45}},"19":{"start":{"line":121,"column":8},"end":{"line":121,"column":87}},"20":{"start":{"line":123,"column":8},"end":{"line":123,"column":71}},"21":{"start":{"line":124,"column":8},"end":{"line":124,"column":73}},"22":{"start":{"line":126,"column":8},"end":{"line":126,"column":54}},"23":{"start":{"line":128,"column":8},"end":{"line":128,"column":27}},"24":{"start":{"line":140,"column":8},"end":{"line":144,"column":19}},"25":{"start":{"line":146,"column":8},"end":{"line":161,"column":9}},"26":{"start":{"line":147,"column":12},"end":{"line":147,"column":46}},"27":{"start":{"line":149,"column":12},"end":{"line":155,"column":13}},"28":{"start":{"line":150,"column":16},"end":{"line":150,"column":58}},"29":{"start":{"line":151,"column":16},"end":{"line":153,"column":17}},"30":{"start":{"line":152,"column":20},"end":{"line":152,"column":87}},"31":{"start":{"line":154,"column":16},"end":{"line":154,"column":43}},"32":{"start":{"line":157,"column":15},"end":{"line":161,"column":9}},"33":{"start":{"line":158,"column":12},"end":{"line":160,"column":13}},"34":{"start":{"line":159,"column":16},"end":{"line":159,"column":65}},"35":{"start":{"line":163,"column":8},"end":{"line":163,"column":20}},"36":{"start":{"line":173,"column":8},"end":{"line":177,"column":22}},"37":{"start":{"line":179,"column":8},"end":{"line":179,"column":67}},"38":{"start":{"line":180,"column":8},"end":{"line":180,"column":63}},"39":{"start":{"line":182,"column":8},"end":{"line":184,"column":9}},"40":{"start":{"line":183,"column":12},"end":{"line":183,"column":70}},"41":{"start":{"line":194,"column":8},"end":{"line":194,"column":53}},"42":{"start":{"line":196,"column":8},"end":{"line":196,"column":64}},"43":{"start":{"line":210,"column":8},"end":{"line":217,"column":30}},"44":{"start":{"line":219,"column":8},"end":{"line":219,"column":27}},"45":{"start":{"line":221,"column":8},"end":{"line":221,"column":48}},"46":{"start":{"line":222,"column":8},"end":{"line":222,"column":46}},"47":{"start":{"line":224,"column":8},"end":{"line":224,"column":78}},"48":{"start":{"line":225,"column":8},"end":{"line":225,"column":61}},"49":{"start":{"line":227,"column":8},"end":{"line":240,"column":9}},"50":{"start":{"line":228,"column":12},"end":{"line":235,"column":13}},"51":{"start":{"line":229,"column":16},"end":{"line":229,"column":56}},"52":{"start":{"line":230,"column":16},"end":{"line":230,"column":73}},"53":{"start":{"line":232,"column":16},"end":{"line":232,"column":69}},"54":{"start":{"line":234,"column":16},"end":{"line":234,"column":77}},"55":{"start":{"line":237,"column":12},"end":{"line":237,"column":49}},"56":{"start":{"line":239,"column":12},"end":{"line":239,"column":31}},"57":{"start":{"line":242,"column":8},"end":{"line":242,"column":22}},"58":{"start":{"line":244,"column":8},"end":{"line":244,"column":39}},"59":{"start":{"line":257,"column":8},"end":{"line":263,"column":30}},"60":{"start":{"line":265,"column":8},"end":{"line":265,"column":58}},"61":{"start":{"line":266,"column":8},"end":{"line":266,"column":55}},"62":{"start":{"line":268,"column":8},"end":{"line":278,"column":9}},"63":{"start":{"line":269,"column":12},"end":{"line":275,"column":13}},"64":{"start":{"line":270,"column":16},"end":{"line":270,"column":44}},"65":{"start":{"line":272,"column":16},"end":{"line":272,"column":72}},"66":{"start":{"line":274,"column":16},"end":{"line":274,"column":75}},"67":{"start":{"line":277,"column":12},"end":{"line":277,"column":49}}},"branchMap":{"1":{"line":57,"type":"if","locations":[{"start":{"line":57,"column":8},"end":{"line":57,"column":8}},{"start":{"line":57,"column":8},"end":{"line":57,"column":8}}]},"2":{"line":91,"type":"if","locations":[{"start":{"line":91,"column":12},"end":{"line":91,"column":12}},{"start":{"line":91,"column":12},"end":{"line":91,"column":12}}]},"3":{"line":121,"type":"cond-expr","locations":[{"start":{"line":121,"column":66},"end":{"line":121,"column":74}},{"start":{"line":121,"column":77},"end":{"line":121,"column":86}}]},"4":{"line":146,"type":"if","locations":[{"start":{"line":146,"column":8},"end":{"line":146,"column":8}},{"start":{"line":146,"column":8},"end":{"line":146,"column":8}}]},"5":{"line":149,"type":"if","locations":[{"start":{"line":149,"column":12},"end":{"line":149,"column":12}},{"start":{"line":149,"column":12},"end":{"line":149,"column":12}}]},"6":{"line":157,"type":"if","locations":[{"start":{"line":157,"column":15},"end":{"line":157,"column":15}},{"start":{"line":157,"column":15},"end":{"line":157,"column":15}}]},"7":{"line":158,"type":"if","locations":[{"start":{"line":158,"column":12},"end":{"line":158,"column":12}},{"start":{"line":158,"column":12},"end":{"line":158,"column":12}}]},"8":{"line":182,"type":"if","locations":[{"start":{"line":182,"column":8},"end":{"line":182,"column":8}},{"start":{"line":182,"column":8},"end":{"line":182,"column":8}}]},"9":{"line":182,"type":"binary-expr","locations":[{"start":{"line":182,"column":12},"end":{"line":182,"column":22}},{"start":{"line":182,"column":26},"end":{"line":182,"column":35}}]},"10":{"line":227,"type":"if","locations":[{"start":{"line":227,"column":8},"end":{"line":227,"column":8}},{"start":{"line":227,"column":8},"end":{"line":227,"column":8}}]},"11":{"line":268,"type":"if","locations":[{"start":{"line":268,"column":8},"end":{"line":268,"column":8}},{"start":{"line":268,"column":8},"end":{"line":268,"column":8}}]}},"code":["(function () { YUI.add('moodle-atto_multilang2-button', function (Y, NAME) {","","// This file is part of Moodle - http://moodle.org/","//","// Moodle is free software: you can redistribute it and/or modify","// it under the terms of the GNU General Public License as published by","// the Free Software Foundation, either version 3 of the License, or","// (at your option) any later version.","//","// Moodle is distributed in the hope that it will be useful,","// but WITHOUT ANY WARRANTY; without even the implied warranty of","// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the","// GNU General Public License for more details.","//","// You should have received a copy of the GNU General Public License","// along with Moodle. If not, see .","","/**"," * @package atto_multilang2"," * @copyright 2015 onwards Julen Pardo & Mondragon Unibertsitatea"," * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later"," */","","/**"," * @module moodle-atto_multilang2-button"," */","","var CLASSES = {"," TAG: 'filter-multilang-tag'"," },",""," LANG_WILDCARD = '%lang',"," CONTENT_WILDCARD = '%content',"," ATTR_LANGUAGES = 'languages',"," ATTR_CAPABILITY = 'capability',"," DEFAULT_LANGUAGE = '{\"en\":\"English (en)\"}',"," OPENING_SPAN = '',"," TEMPLATE = '' +"," ' ' + OPENING_SPAN + '{mlang ' + LANG_WILDCARD + '}' +"," CONTENT_WILDCARD +"," OPENING_SPAN + '{mlang} ';","","/**"," * Atto text editor multilanguage plugin."," *"," * @namespace M.atto_multilang2"," * @class button"," * @extends M.editor_atto.EditorPlugin"," */","","Y.namespace('M.atto_multilang2').Button = Y.Base.create('button', Y.M.editor_atto.EditorPlugin, [], {",""," initializer: function() {"," var hascapability = this.get(ATTR_CAPABILITY),"," toolbarItems = [];",""," if (hascapability) {"," this._decorateTagsOnInit();"," toolbarItems = this._initializeToolbarItems();",""," this.addToolbarMenu({"," globalItemConfig: {"," callback: this._addTags"," },"," icon: 'icon',"," iconComponent: 'atto_multilang2',"," items: toolbarItems"," });",""," this.get('host').on('atto:selectionchanged', this._checkSelectionChange, this);"," this._setSubmitListener();"," }"," },",""," /**"," * Initializes the toolbar items, which will be the installed languages,"," * received as parameter."," *"," * @method _initializeToolbarItems"," * @private"," * @return {Array} installed language strings"," */"," _initializeToolbarItems: function() {"," var toolbarItems = [],"," languages,"," langCode;",""," languages = JSON.parse(this.get(ATTR_LANGUAGES));",""," for (langCode in languages) {"," if (languages.hasOwnProperty(langCode)) {"," toolbarItems.push({"," text: languages[langCode],"," callbackArgs: langCode"," });"," }"," }",""," return toolbarItems;"," },",""," /**"," * Retrieves the selected text, wraps it with the multilang tags,"," * and replaces the selected text in the editor with with it."," *"," * If there is no content selected, a \" \" will be inserted; otherwhise,"," * it's impossible to place the cursor inside the {mlang} tags."," *"," * @method _addTags"," * @param {EventFacade} e"," * @param {string} langCode the language code"," * @private"," */"," _addTags: function(e, langCode) {"," var selection,"," host = this.get('host'),"," taggedContent = TEMPLATE,"," content;",""," selection = this._getSelectionHTML();"," content = (host.getSelection().toString().length === 0) ? ' ' : selection;",""," taggedContent = taggedContent.replace(LANG_WILDCARD, langCode);"," taggedContent = taggedContent.replace(CONTENT_WILDCARD, content);",""," host.insertContentAtFocusPoint(taggedContent);",""," this.markUpdated();"," },",""," /**"," * Retrieves selected text with its HTML."," * Took from: http://stackoverflow.com/questions/4176923/html-of-selected-text/4177234#4177234"," *"," * @method _getSelectionHTML"," * @private"," * @return {string} selected text's html; empty if nothing selected"," */"," _getSelectionHTML: function() {"," var html = '',"," selection,"," container,"," index,"," lenght;",""," if (typeof window.getSelection !== 'undefined') {"," selection = window.getSelection();",""," if (selection.rangeCount) {"," container = document.createElement('div');"," for (index = 0, lenght = selection.rangeCount; index < lenght; ++index) {"," container.appendChild(selection.getRangeAt(index).cloneContents());"," }"," html = container.innerHTML;"," }",""," } else if (typeof document.selection !== 'undefined') {"," if (document.selection.type === 'Text') {"," html = document.selection.createRange().htmlText;"," }"," }",""," return html;"," },"," /**"," * Listens to every change of the text cursor in the text area. If the"," * cursor is placed within a multilang tag, the whole tag is selected."," *"," * @method _checkSelectionChange"," * @private"," */"," _checkSelectionChange: function() {"," var host = this.get('host'),"," node = host.getSelectionParentNode(),"," nodeValue = Y.one(node).get('text'),"," isTextNode,"," isLangTag;",""," isTextNode = Y.one(node).toString().indexOf('#text') > - 1;"," isLangTag = (nodeValue.match(/\\{mlang/g).length === 1);",""," if (isTextNode && isLangTag) {"," host.setSelection(host.getSelectionFromNode(Y.one(node)));"," }"," },",""," /**"," * Sets the submit listener to the function that finds the spaned {mlang} tags."," *"," * @method _setSubmitListener"," * @private"," */"," _setSubmitListener: function() {"," var submitbutton = Y.one('#id_submitbutton');",""," submitbutton.on('click', this._cleanTagsOnSubmit, this);"," },",""," /**"," * Cleans the tags around the {mlang} tags when the form is submitted."," * Is necessary to prevent the default action first (the form submission) to"," * start working. When finished, with \"detach\", the default submit listener"," * is restored, so the form can be submitted."," *"," * @method _cleanTagsOnSubmit"," * @param {EventFacade} e"," * @private"," */"," _cleanTagsOnSubmit: function(e) {"," var submitbutton = Y.one('#id_submitbutton'),"," textarea,"," innerHTML,"," spanedmlangtags,"," spanedmlangtag,"," index,"," cleanmlangtag,"," regularExpression;",""," e.preventDefault();",""," textarea = Y.one('#id_messageeditable');"," innerHTML = textarea.get('innerHTML');",""," regularExpression = new RegExp(OPENING_SPAN + '.*?' + '', 'g');"," spanedmlangtags = innerHTML.match(regularExpression);",""," if (spanedmlangtags !== null) {"," for (index = 0; index < spanedmlangtags.length; index++) {"," spanedmlangtag = spanedmlangtags[index];"," cleanmlangtag = spanedmlangtag.replace(OPENING_SPAN, '');",""," cleanmlangtag = cleanmlangtag.replace('', '');",""," innerHTML = innerHTML.replace(spanedmlangtag, cleanmlangtag);"," }",""," textarea.set('innerHTML', innerHTML);",""," this.markUpdated();"," }",""," this.detach();",""," submitbutton.simulate('click');"," },",""," /**"," * Adds the tags to the {mlang} tags when the editor is loaded."," * In this case, we DON'T HAVE TO CALL TO markUpdated(). Why? Honestly,"," * I don't know. But, if we call it after setting the HTML, the {mlang}"," * tags flicker with the decoration, and returns to their original state."," *"," * @method _decorateTagsOnInit"," * @private"," */"," _decorateTagsOnInit: function() {"," var textarea = Y.one('#id_messageeditable'),"," innerHTML = textarea.get('innerHTML'),"," regularExpression,"," mlangtags,"," mlangtag,"," index,"," decoratedmlangtag;",""," regularExpression = new RegExp('{mlang.*?}', 'g');"," mlangtags = innerHTML.match(regularExpression);",""," if (mlangtags !== null) {"," for (index = 0; index < mlangtags.length; index++) {"," mlangtag = mlangtags[index];",""," decoratedmlangtag = OPENING_SPAN + mlangtag + '';",""," innerHTML = innerHTML.replace(mlangtag, decoratedmlangtag);"," }",""," textarea.set('innerHTML', innerHTML);"," }"," }","","}, {"," ATTRS: {"," /**"," * The list of installed languages"," *"," * @attribute languages"," * @type array"," * @default {\"en\":\"English (en)\"}"," */"," languages: DEFAULT_LANGUAGE,"," capability: true"," }","});","","","}, '@VERSION@', {\"requires\": [\"moodle-editor_atto-plugin\"]});","","}());"]}; } var __cov_xlcucJyua6odXhLRctX6xg = __coverage__['build/moodle-atto_multilang2-button/moodle-atto_multilang2-button.js']; -__cov_xlcucJyua6odXhLRctX6xg.s['1']++;YUI.add('moodle-atto_multilang2-button',function(Y,NAME){__cov_xlcucJyua6odXhLRctX6xg.f['1']++;__cov_xlcucJyua6odXhLRctX6xg.s['2']++;var CLASSES={TAG:'filter-multilang-tag'},LANG_WILDCARD='%lang',CONTENT_WILDCARD='%content',ATTR_LANGUAGES='languages',ATTR_CAPABILITY='capability',DEFAULT_LANGUAGE='{"en":"English (en)"}',OPENING_SPAN='',TEMPLATE=''+' '+OPENING_SPAN+'{mlang '+LANG_WILDCARD+'}'+CONTENT_WILDCARD+OPENING_SPAN+'{mlang} ';__cov_xlcucJyua6odXhLRctX6xg.s['3']++;Y.namespace('M.atto_multilang2').Button=Y.Base.create('button',Y.M.editor_atto.EditorPlugin,[],{initializer:function(){__cov_xlcucJyua6odXhLRctX6xg.f['2']++;__cov_xlcucJyua6odXhLRctX6xg.s['4']++;var hascapability=this.get(ATTR_CAPABILITY),toolbarItems=[];__cov_xlcucJyua6odXhLRctX6xg.s['5']++;if(hascapability){__cov_xlcucJyua6odXhLRctX6xg.b['1'][0]++;__cov_xlcucJyua6odXhLRctX6xg.s['6']++;toolbarItems=this._initializeToolbarItems();__cov_xlcucJyua6odXhLRctX6xg.s['7']++;this.addToolbarMenu({globalItemConfig:{callback:this._addTags},icon:'icon',iconComponent:'atto_multilang2',items:toolbarItems});__cov_xlcucJyua6odXhLRctX6xg.s['8']++;this.get('host').on('atto:selectionchanged',this._checkSelectionChange,this);__cov_xlcucJyua6odXhLRctX6xg.s['9']++;this._setSubmitListener();}else{__cov_xlcucJyua6odXhLRctX6xg.b['1'][1]++;}},_initializeToolbarItems:function(){__cov_xlcucJyua6odXhLRctX6xg.f['3']++;__cov_xlcucJyua6odXhLRctX6xg.s['10']++;var toolbarItems=[],languages,langCode;__cov_xlcucJyua6odXhLRctX6xg.s['11']++;languages=JSON.parse(this.get(ATTR_LANGUAGES));__cov_xlcucJyua6odXhLRctX6xg.s['12']++;for(langCode in languages){__cov_xlcucJyua6odXhLRctX6xg.s['13']++;if(languages.hasOwnProperty(langCode)){__cov_xlcucJyua6odXhLRctX6xg.b['2'][0]++;__cov_xlcucJyua6odXhLRctX6xg.s['14']++;toolbarItems.push({text:languages[langCode],callbackArgs:langCode});}else{__cov_xlcucJyua6odXhLRctX6xg.b['2'][1]++;}}__cov_xlcucJyua6odXhLRctX6xg.s['15']++;return toolbarItems;},_addTags:function(e,langCode){__cov_xlcucJyua6odXhLRctX6xg.f['4']++;__cov_xlcucJyua6odXhLRctX6xg.s['16']++;var selection,host=this.get('host'),taggedContent=TEMPLATE,content;__cov_xlcucJyua6odXhLRctX6xg.s['17']++;selection=this._getSelectionHTML();__cov_xlcucJyua6odXhLRctX6xg.s['18']++;content=host.getSelection().toString().length===0?(__cov_xlcucJyua6odXhLRctX6xg.b['3'][0]++,' '):(__cov_xlcucJyua6odXhLRctX6xg.b['3'][1]++,selection);__cov_xlcucJyua6odXhLRctX6xg.s['19']++;taggedContent=taggedContent.replace(LANG_WILDCARD,langCode);__cov_xlcucJyua6odXhLRctX6xg.s['20']++;taggedContent=taggedContent.replace(CONTENT_WILDCARD,content);__cov_xlcucJyua6odXhLRctX6xg.s['21']++;host.insertContentAtFocusPoint(taggedContent);__cov_xlcucJyua6odXhLRctX6xg.s['22']++;this.markUpdated();},_getSelectionHTML:function(){__cov_xlcucJyua6odXhLRctX6xg.f['5']++;__cov_xlcucJyua6odXhLRctX6xg.s['23']++;var html='',selection,container,index,lenght;__cov_xlcucJyua6odXhLRctX6xg.s['24']++;if(typeof window.getSelection!=='undefined'){__cov_xlcucJyua6odXhLRctX6xg.b['4'][0]++;__cov_xlcucJyua6odXhLRctX6xg.s['25']++;selection=window.getSelection();__cov_xlcucJyua6odXhLRctX6xg.s['26']++;if(selection.rangeCount){__cov_xlcucJyua6odXhLRctX6xg.b['5'][0]++;__cov_xlcucJyua6odXhLRctX6xg.s['27']++;container=document.createElement('div');__cov_xlcucJyua6odXhLRctX6xg.s['28']++;for(index=0,lenght=selection.rangeCount;index-1;__cov_xlcucJyua6odXhLRctX6xg.s['37']++;isLangTag=nodeValue.match(/\{mlang/g).length===1;__cov_xlcucJyua6odXhLRctX6xg.s['38']++;if((__cov_xlcucJyua6odXhLRctX6xg.b['9'][0]++,isTextNode)&&(__cov_xlcucJyua6odXhLRctX6xg.b['9'][1]++,isLangTag)){__cov_xlcucJyua6odXhLRctX6xg.b['8'][0]++;__cov_xlcucJyua6odXhLRctX6xg.s['39']++;host.setSelection(host.getSelectionFromNode(Y.one(node)));}else{__cov_xlcucJyua6odXhLRctX6xg.b['8'][1]++;}},_setSubmitListener:function(){__cov_xlcucJyua6odXhLRctX6xg.f['7']++;__cov_xlcucJyua6odXhLRctX6xg.s['40']++;var submitbutton=Y.one('#id_submitbutton');__cov_xlcucJyua6odXhLRctX6xg.s['41']++;submitbutton.on('click',this._cleanTagsOnSubmit,this);},_cleanTagsOnSubmit:function(e){__cov_xlcucJyua6odXhLRctX6xg.f['8']++;__cov_xlcucJyua6odXhLRctX6xg.s['42']++;var submitbutton=Y.one('#id_submitbutton'),textarea,innerHTML,spanedmlangtags,spanedmlangtag,index,cleanmlangtag,regularExpression;__cov_xlcucJyua6odXhLRctX6xg.s['43']++;e.preventDefault();__cov_xlcucJyua6odXhLRctX6xg.s['44']++;textarea=Y.one('#id_messageeditable');__cov_xlcucJyua6odXhLRctX6xg.s['45']++;innerHTML=textarea.get('innerHTML');__cov_xlcucJyua6odXhLRctX6xg.s['46']++;regularExpression=new RegExp(OPENING_SPAN+'.*?'+'','g');__cov_xlcucJyua6odXhLRctX6xg.s['47']++;spanedmlangtags=innerHTML.match(regularExpression);__cov_xlcucJyua6odXhLRctX6xg.s['48']++;if(spanedmlangtags!==null){__cov_xlcucJyua6odXhLRctX6xg.b['10'][0]++;__cov_xlcucJyua6odXhLRctX6xg.s['49']++;for(index=0;index','');__cov_xlcucJyua6odXhLRctX6xg.s['53']++;innerHTML=innerHTML.replace(spanedmlangtag,cleanmlangtag);}__cov_xlcucJyua6odXhLRctX6xg.s['54']++;textarea.set('innerHTML',innerHTML);__cov_xlcucJyua6odXhLRctX6xg.s['55']++;this.markUpdated();}else{__cov_xlcucJyua6odXhLRctX6xg.b['10'][1]++;}__cov_xlcucJyua6odXhLRctX6xg.s['56']++;this.detach();__cov_xlcucJyua6odXhLRctX6xg.s['57']++;submitbutton.simulate('click');}},{ATTRS:{languages:DEFAULT_LANGUAGE,capability:true}});},'@VERSION@',{'requires':['moodle-editor_atto-plugin']}); +__cov_xlcucJyua6odXhLRctX6xg.s['1']++;YUI.add('moodle-atto_multilang2-button',function(Y,NAME){__cov_xlcucJyua6odXhLRctX6xg.f['1']++;__cov_xlcucJyua6odXhLRctX6xg.s['2']++;var CLASSES={TAG:'filter-multilang-tag'},LANG_WILDCARD='%lang',CONTENT_WILDCARD='%content',ATTR_LANGUAGES='languages',ATTR_CAPABILITY='capability',DEFAULT_LANGUAGE='{"en":"English (en)"}',OPENING_SPAN='',TEMPLATE=''+' '+OPENING_SPAN+'{mlang '+LANG_WILDCARD+'}'+CONTENT_WILDCARD+OPENING_SPAN+'{mlang} ';__cov_xlcucJyua6odXhLRctX6xg.s['3']++;Y.namespace('M.atto_multilang2').Button=Y.Base.create('button',Y.M.editor_atto.EditorPlugin,[],{initializer:function(){__cov_xlcucJyua6odXhLRctX6xg.f['2']++;__cov_xlcucJyua6odXhLRctX6xg.s['4']++;var hascapability=this.get(ATTR_CAPABILITY),toolbarItems=[];__cov_xlcucJyua6odXhLRctX6xg.s['5']++;if(hascapability){__cov_xlcucJyua6odXhLRctX6xg.b['1'][0]++;__cov_xlcucJyua6odXhLRctX6xg.s['6']++;this._decorateTagsOnInit();__cov_xlcucJyua6odXhLRctX6xg.s['7']++;toolbarItems=this._initializeToolbarItems();__cov_xlcucJyua6odXhLRctX6xg.s['8']++;this.addToolbarMenu({globalItemConfig:{callback:this._addTags},icon:'icon',iconComponent:'atto_multilang2',items:toolbarItems});__cov_xlcucJyua6odXhLRctX6xg.s['9']++;this.get('host').on('atto:selectionchanged',this._checkSelectionChange,this);__cov_xlcucJyua6odXhLRctX6xg.s['10']++;this._setSubmitListener();}else{__cov_xlcucJyua6odXhLRctX6xg.b['1'][1]++;}},_initializeToolbarItems:function(){__cov_xlcucJyua6odXhLRctX6xg.f['3']++;__cov_xlcucJyua6odXhLRctX6xg.s['11']++;var toolbarItems=[],languages,langCode;__cov_xlcucJyua6odXhLRctX6xg.s['12']++;languages=JSON.parse(this.get(ATTR_LANGUAGES));__cov_xlcucJyua6odXhLRctX6xg.s['13']++;for(langCode in languages){__cov_xlcucJyua6odXhLRctX6xg.s['14']++;if(languages.hasOwnProperty(langCode)){__cov_xlcucJyua6odXhLRctX6xg.b['2'][0]++;__cov_xlcucJyua6odXhLRctX6xg.s['15']++;toolbarItems.push({text:languages[langCode],callbackArgs:langCode});}else{__cov_xlcucJyua6odXhLRctX6xg.b['2'][1]++;}}__cov_xlcucJyua6odXhLRctX6xg.s['16']++;return toolbarItems;},_addTags:function(e,langCode){__cov_xlcucJyua6odXhLRctX6xg.f['4']++;__cov_xlcucJyua6odXhLRctX6xg.s['17']++;var selection,host=this.get('host'),taggedContent=TEMPLATE,content;__cov_xlcucJyua6odXhLRctX6xg.s['18']++;selection=this._getSelectionHTML();__cov_xlcucJyua6odXhLRctX6xg.s['19']++;content=host.getSelection().toString().length===0?(__cov_xlcucJyua6odXhLRctX6xg.b['3'][0]++,' '):(__cov_xlcucJyua6odXhLRctX6xg.b['3'][1]++,selection);__cov_xlcucJyua6odXhLRctX6xg.s['20']++;taggedContent=taggedContent.replace(LANG_WILDCARD,langCode);__cov_xlcucJyua6odXhLRctX6xg.s['21']++;taggedContent=taggedContent.replace(CONTENT_WILDCARD,content);__cov_xlcucJyua6odXhLRctX6xg.s['22']++;host.insertContentAtFocusPoint(taggedContent);__cov_xlcucJyua6odXhLRctX6xg.s['23']++;this.markUpdated();},_getSelectionHTML:function(){__cov_xlcucJyua6odXhLRctX6xg.f['5']++;__cov_xlcucJyua6odXhLRctX6xg.s['24']++;var html='',selection,container,index,lenght;__cov_xlcucJyua6odXhLRctX6xg.s['25']++;if(typeof window.getSelection!=='undefined'){__cov_xlcucJyua6odXhLRctX6xg.b['4'][0]++;__cov_xlcucJyua6odXhLRctX6xg.s['26']++;selection=window.getSelection();__cov_xlcucJyua6odXhLRctX6xg.s['27']++;if(selection.rangeCount){__cov_xlcucJyua6odXhLRctX6xg.b['5'][0]++;__cov_xlcucJyua6odXhLRctX6xg.s['28']++;container=document.createElement('div');__cov_xlcucJyua6odXhLRctX6xg.s['29']++;for(index=0,lenght=selection.rangeCount;index-1;__cov_xlcucJyua6odXhLRctX6xg.s['38']++;isLangTag=nodeValue.match(/\{mlang/g).length===1;__cov_xlcucJyua6odXhLRctX6xg.s['39']++;if((__cov_xlcucJyua6odXhLRctX6xg.b['9'][0]++,isTextNode)&&(__cov_xlcucJyua6odXhLRctX6xg.b['9'][1]++,isLangTag)){__cov_xlcucJyua6odXhLRctX6xg.b['8'][0]++;__cov_xlcucJyua6odXhLRctX6xg.s['40']++;host.setSelection(host.getSelectionFromNode(Y.one(node)));}else{__cov_xlcucJyua6odXhLRctX6xg.b['8'][1]++;}},_setSubmitListener:function(){__cov_xlcucJyua6odXhLRctX6xg.f['7']++;__cov_xlcucJyua6odXhLRctX6xg.s['41']++;var submitbutton=Y.one('#id_submitbutton');__cov_xlcucJyua6odXhLRctX6xg.s['42']++;submitbutton.on('click',this._cleanTagsOnSubmit,this);},_cleanTagsOnSubmit:function(e){__cov_xlcucJyua6odXhLRctX6xg.f['8']++;__cov_xlcucJyua6odXhLRctX6xg.s['43']++;var submitbutton=Y.one('#id_submitbutton'),textarea,innerHTML,spanedmlangtags,spanedmlangtag,index,cleanmlangtag,regularExpression;__cov_xlcucJyua6odXhLRctX6xg.s['44']++;e.preventDefault();__cov_xlcucJyua6odXhLRctX6xg.s['45']++;textarea=Y.one('#id_messageeditable');__cov_xlcucJyua6odXhLRctX6xg.s['46']++;innerHTML=textarea.get('innerHTML');__cov_xlcucJyua6odXhLRctX6xg.s['47']++;regularExpression=new RegExp(OPENING_SPAN+'.*?'+'','g');__cov_xlcucJyua6odXhLRctX6xg.s['48']++;spanedmlangtags=innerHTML.match(regularExpression);__cov_xlcucJyua6odXhLRctX6xg.s['49']++;if(spanedmlangtags!==null){__cov_xlcucJyua6odXhLRctX6xg.b['10'][0]++;__cov_xlcucJyua6odXhLRctX6xg.s['50']++;for(index=0;index','');__cov_xlcucJyua6odXhLRctX6xg.s['54']++;innerHTML=innerHTML.replace(spanedmlangtag,cleanmlangtag);}__cov_xlcucJyua6odXhLRctX6xg.s['55']++;textarea.set('innerHTML',innerHTML);__cov_xlcucJyua6odXhLRctX6xg.s['56']++;this.markUpdated();}else{__cov_xlcucJyua6odXhLRctX6xg.b['10'][1]++;}__cov_xlcucJyua6odXhLRctX6xg.s['57']++;this.detach();__cov_xlcucJyua6odXhLRctX6xg.s['58']++;submitbutton.simulate('click');},_decorateTagsOnInit:function(){__cov_xlcucJyua6odXhLRctX6xg.f['9']++;__cov_xlcucJyua6odXhLRctX6xg.s['59']++;var textarea=Y.one('#id_messageeditable'),innerHTML=textarea.get('innerHTML'),regularExpression,mlangtags,mlangtag,index,decoratedmlangtag;__cov_xlcucJyua6odXhLRctX6xg.s['60']++;regularExpression=new RegExp('{mlang.*?}','g');__cov_xlcucJyua6odXhLRctX6xg.s['61']++;mlangtags=innerHTML.match(regularExpression);__cov_xlcucJyua6odXhLRctX6xg.s['62']++;if(mlangtags!==null){__cov_xlcucJyua6odXhLRctX6xg.b['11'][0]++;__cov_xlcucJyua6odXhLRctX6xg.s['63']++;for(index=0;index';__cov_xlcucJyua6odXhLRctX6xg.s['66']++;innerHTML=innerHTML.replace(mlangtag,decoratedmlangtag);}__cov_xlcucJyua6odXhLRctX6xg.s['67']++;textarea.set('innerHTML',innerHTML);}else{__cov_xlcucJyua6odXhLRctX6xg.b['11'][1]++;}}},{ATTRS:{languages:DEFAULT_LANGUAGE,capability:true}});},'@VERSION@',{'requires':['moodle-editor_atto-plugin']}); diff --git a/yui/build/moodle-atto_multilang2-button/moodle-atto_multilang2-button-debug.js b/yui/build/moodle-atto_multilang2-button/moodle-atto_multilang2-button-debug.js index 4958f9ae5edc..cd395742c8b1 100644 --- a/yui/build/moodle-atto_multilang2-button/moodle-atto_multilang2-button-debug.js +++ b/yui/build/moodle-atto_multilang2-button/moodle-atto_multilang2-button-debug.js @@ -55,6 +55,7 @@ Y.namespace('M.atto_multilang2').Button = Y.Base.create('button', Y.M.editor_att toolbarItems = []; if (hascapability) { + this._decorateTagsOnInit(); toolbarItems = this._initializeToolbarItems(); this.addToolbarMenu({ @@ -241,6 +242,40 @@ Y.namespace('M.atto_multilang2').Button = Y.Base.create('button', Y.M.editor_att this.detach(); submitbutton.simulate('click'); + }, + + /** + * Adds the tags to the {mlang} tags when the editor is loaded. + * In this case, we DON'T HAVE TO CALL TO markUpdated(). Why? Honestly, + * I don't know. But, if we call it after setting the HTML, the {mlang} + * tags flicker with the decoration, and returns to their original state. + * + * @method _decorateTagsOnInit + * @private + */ + _decorateTagsOnInit: function() { + var textarea = Y.one('#id_messageeditable'), + innerHTML = textarea.get('innerHTML'), + regularExpression, + mlangtags, + mlangtag, + index, + decoratedmlangtag; + + regularExpression = new RegExp('{mlang.*?}', 'g'); + mlangtags = innerHTML.match(regularExpression); + + if (mlangtags !== null) { + for (index = 0; index < mlangtags.length; index++) { + mlangtag = mlangtags[index]; + + decoratedmlangtag = OPENING_SPAN + mlangtag + ''; + + innerHTML = innerHTML.replace(mlangtag, decoratedmlangtag); + } + + textarea.set('innerHTML', innerHTML); + } } }, { diff --git a/yui/build/moodle-atto_multilang2-button/moodle-atto_multilang2-button-min.js b/yui/build/moodle-atto_multilang2-button/moodle-atto_multilang2-button-min.js index aa4be5808af6..4cd04dca1dd3 100644 --- a/yui/build/moodle-atto_multilang2-button/moodle-atto_multilang2-button-min.js +++ b/yui/build/moodle-atto_multilang2-button/moodle-atto_multilang2-button-min.js @@ -1 +1 @@ -YUI.add("moodle-atto_multilang2-button",function(e,t){var n={TAG:"filter-multilang-tag"},r="%lang",i="%content",s="languages",o="capability",u='{"en":"English (en)"}',a='',f=" "+a+"{mlang "+r+"}"+i+a+"{mlang} ";e.namespace("M.atto_multilang2").Button=e.Base.create("button",e.M.editor_atto.EditorPlugin,[],{initializer:function(){var e=this.get(o),t=[];e&&(t=this._initializeToolbarItems(),this.addToolbarMenu({globalItemConfig:{callback:this._addTags},icon:"icon",iconComponent:"atto_multilang2",items:t}),this.get("host").on("atto:selectionchanged",this._checkSelectionChange,this),this._setSubmitListener())},_initializeToolbarItems:function(){var e=[],t,n;t=JSON.parse(this.get(s));for(n in t)t.hasOwnProperty(n)&&e.push({text:t[n],callbackArgs:n});return e},_addTags:function(e,t){var n,s=this.get("host"),o=f,u;n=this._getSelectionHTML(),u=s.getSelection().toString().length===0?" ":n,o=o.replace(r,t),o=o.replace(i,u),s.insertContentAtFocusPoint(o),this.markUpdated()},_getSelectionHTML:function(){var e="",t,n,r,i;if(typeof window.getSelection!="undefined"){t=window.getSelection();if(t.rangeCount){n=document.createElement("div");for(r=0,i=t.rangeCount;r-1,s=r.match(/\{mlang/g).length===1,i&&s&&t.setSelection(t.getSelectionFromNode(e.one(n)))},_setSubmitListener:function(){var t=e.one("#id_submitbutton");t.on("click",this._cleanTagsOnSubmit,this)},_cleanTagsOnSubmit:function(t){var n=e.one("#id_submitbutton"),r,i,s,o,u,f,l;t.preventDefault(),r=e.one("#id_messageeditable"),i=r.get("innerHTML"),l=new RegExp(a+".*?"+"","g"),s=i.match(l);if(s!==null){for(u=0;u",""),i=i.replace(o,f);r.set("innerHTML",i),this.markUpdated()}this.detach(),n.simulate("click")}},{ATTRS:{languages:u,capability:!0}})},"@VERSION@",{requires:["moodle-editor_atto-plugin"]}); +YUI.add("moodle-atto_multilang2-button",function(e,t){var n={TAG:"filter-multilang-tag"},r="%lang",i="%content",s="languages",o="capability",u='{"en":"English (en)"}',a='',f=" "+a+"{mlang "+r+"}"+i+a+"{mlang} ";e.namespace("M.atto_multilang2").Button=e.Base.create("button",e.M.editor_atto.EditorPlugin,[],{initializer:function(){var e=this.get(o),t=[];e&&(this._decorateTagsOnInit(),t=this._initializeToolbarItems(),this.addToolbarMenu({globalItemConfig:{callback:this._addTags},icon:"icon",iconComponent:"atto_multilang2",items:t}),this.get("host").on("atto:selectionchanged",this._checkSelectionChange,this),this._setSubmitListener())},_initializeToolbarItems:function(){var e=[],t,n;t=JSON.parse(this.get(s));for(n in t)t.hasOwnProperty(n)&&e.push({text:t[n],callbackArgs:n});return e},_addTags:function(e,t){var n,s=this.get("host"),o=f,u;n=this._getSelectionHTML(),u=s.getSelection().toString().length===0?" ":n,o=o.replace(r,t),o=o.replace(i,u),s.insertContentAtFocusPoint(o),this.markUpdated()},_getSelectionHTML:function(){var e="",t,n,r,i;if(typeof window.getSelection!="undefined"){t=window.getSelection();if(t.rangeCount){n=document.createElement("div");for(r=0,i=t.rangeCount;r-1,s=r.match(/\{mlang/g).length===1,i&&s&&t.setSelection(t.getSelectionFromNode(e.one(n)))},_setSubmitListener:function(){var t=e.one("#id_submitbutton");t.on("click",this._cleanTagsOnSubmit,this)},_cleanTagsOnSubmit:function(t){var n=e.one("#id_submitbutton"),r,i,s,o,u,f,l;t.preventDefault(),r=e.one("#id_messageeditable"),i=r.get("innerHTML"),l=new RegExp(a+".*?"+"","g"),s=i.match(l);if(s!==null){for(u=0;u",""),i=i.replace(o,f);r.set("innerHTML",i),this.markUpdated()}this.detach(),n.simulate("click")},_decorateTagsOnInit:function(){var t=e.one("#id_messageeditable"),n=t.get("innerHTML"),r,i,s,o,u;r=new RegExp("{mlang.*?}","g"),i=n.match(r);if(i!==null){for(o=0;o",n=n.replace(s,u);t.set("innerHTML",n)}}},{ATTRS:{languages:u,capability:!0}})},"@VERSION@",{requires:["moodle-editor_atto-plugin"]}); diff --git a/yui/build/moodle-atto_multilang2-button/moodle-atto_multilang2-button.js b/yui/build/moodle-atto_multilang2-button/moodle-atto_multilang2-button.js index 4958f9ae5edc..cd395742c8b1 100644 --- a/yui/build/moodle-atto_multilang2-button/moodle-atto_multilang2-button.js +++ b/yui/build/moodle-atto_multilang2-button/moodle-atto_multilang2-button.js @@ -55,6 +55,7 @@ Y.namespace('M.atto_multilang2').Button = Y.Base.create('button', Y.M.editor_att toolbarItems = []; if (hascapability) { + this._decorateTagsOnInit(); toolbarItems = this._initializeToolbarItems(); this.addToolbarMenu({ @@ -241,6 +242,40 @@ Y.namespace('M.atto_multilang2').Button = Y.Base.create('button', Y.M.editor_att this.detach(); submitbutton.simulate('click'); + }, + + /** + * Adds the tags to the {mlang} tags when the editor is loaded. + * In this case, we DON'T HAVE TO CALL TO markUpdated(). Why? Honestly, + * I don't know. But, if we call it after setting the HTML, the {mlang} + * tags flicker with the decoration, and returns to their original state. + * + * @method _decorateTagsOnInit + * @private + */ + _decorateTagsOnInit: function() { + var textarea = Y.one('#id_messageeditable'), + innerHTML = textarea.get('innerHTML'), + regularExpression, + mlangtags, + mlangtag, + index, + decoratedmlangtag; + + regularExpression = new RegExp('{mlang.*?}', 'g'); + mlangtags = innerHTML.match(regularExpression); + + if (mlangtags !== null) { + for (index = 0; index < mlangtags.length; index++) { + mlangtag = mlangtags[index]; + + decoratedmlangtag = OPENING_SPAN + mlangtag + ''; + + innerHTML = innerHTML.replace(mlangtag, decoratedmlangtag); + } + + textarea.set('innerHTML', innerHTML); + } } }, { diff --git a/yui/src/button/js/button.js b/yui/src/button/js/button.js index e259bd897ed3..9f8a5280b806 100644 --- a/yui/src/button/js/button.js +++ b/yui/src/button/js/button.js @@ -53,6 +53,7 @@ Y.namespace('M.atto_multilang2').Button = Y.Base.create('button', Y.M.editor_att toolbarItems = []; if (hascapability) { + this._decorateTagsOnInit(); toolbarItems = this._initializeToolbarItems(); this.addToolbarMenu({ @@ -239,6 +240,40 @@ Y.namespace('M.atto_multilang2').Button = Y.Base.create('button', Y.M.editor_att this.detach(); submitbutton.simulate('click'); + }, + + /** + * Adds the tags to the {mlang} tags when the editor is loaded. + * In this case, we DON'T HAVE TO CALL TO markUpdated(). Why? Honestly, + * I don't know. But, if we call it after setting the HTML, the {mlang} + * tags flicker with the decoration, and returns to their original state. + * + * @method _decorateTagsOnInit + * @private + */ + _decorateTagsOnInit: function() { + var textarea = Y.one('#id_messageeditable'), + innerHTML = textarea.get('innerHTML'), + regularExpression, + mlangtags, + mlangtag, + index, + decoratedmlangtag; + + regularExpression = new RegExp('{mlang.*?}', 'g'); + mlangtags = innerHTML.match(regularExpression); + + if (mlangtags !== null) { + for (index = 0; index < mlangtags.length; index++) { + mlangtag = mlangtags[index]; + + decoratedmlangtag = OPENING_SPAN + mlangtag + ''; + + innerHTML = innerHTML.replace(mlangtag, decoratedmlangtag); + } + + textarea.set('innerHTML', innerHTML); + } } }, {