ba14c132c16d024834700e6c24c97ca83c2ed90d
[moodle.git] / lib / editor / atto / plugins / rtl / yui / build / moodle-atto_rtl-button / moodle-atto_rtl-button-debug.js
1 YUI.add('moodle-atto_rtl-button', function (Y, NAME) {
3 // This file is part of Moodle - http://moodle.org/
4 //
5 // Moodle is free software: you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation, either version 3 of the License, or
8 // (at your option) any later version.
9 //
10 // Moodle is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
18 /*
19  * @package    atto_rtl
20  * @copyright  2014 Jerome Mouneyrac
21  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
22  */
24 /**
25  * @module moodle-atto_rtl-button
26  */
28 /**
29  * Atto text editor rtl plugin.
30  *
31  * @namespace M.atto_rtl
32  * @class button
33  * @extends M.editor_atto.EditorPlugin
34  */
36 Y.namespace('M.atto_rtl').Button = Y.Base.create('button', Y.M.editor_atto.EditorPlugin, [], {
37     initializer: function() {
38         var direction;
40         direction = 'ltr';
41         this.addButton({
42             icon: 'e/left_to_right',
43             title: direction,
44             buttonName: direction,
45             callback: this._toggleRTL,
46             callbackArgs: direction
47         });
49         direction = 'rtl';
50         this.addButton({
51             icon: 'e/right_to_left',
52             title: direction,
53             buttonName: direction,
54             callback: this._toggleRTL,
55             callbackArgs: direction
56         });
57     },
59     /**
60      * Toggle the RTL/LTR values based on the supplied direction.
61      *
62      * @method _toggleRTL
63      * @param {EventFacade} e
64      * @param {String} direction
65      */
66     _toggleRTL: function(e, direction) {
67         var host = this.get('host'),
68             sourceSelection = rangy.saveSelection(),
69             selection = host.getSelection(),
70             newDirection = {
71                 rtl: 'ltr',
72                 ltr: 'rtl'
73             };
74         if (selection) {
75             // Format the selection to be sure it has a tag parent (not the contenteditable).
76             var parentNode = host.formatSelectionBlock(),
77                 parentDOMNode = parentNode.getDOMNode();
79             var currentDirection = parentDOMNode.getAttribute('dir');
80             if (currentDirection === direction) {
81                 parentDOMNode.setAttribute("dir", newDirection[direction]);
82             } else {
83                 parentDOMNode.setAttribute("dir", direction);
84             }
86             // Change selection from the containing paragraph to the original one.
87             rangy.restoreSelection(sourceSelection);
88             // Mark the text as having been updated.
89             this.markUpdated();
90         }
91     }
92 });
95 }, '@VERSION@', {"requires": ["moodle-editor_atto-plugin"]});