Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
// This file is part of Moodle - http://moodle.org/
2
//
3
// Moodle is free software: you can redistribute it and/or modify
4
// it under the terms of the GNU General Public License as published by
5
// the Free Software Foundation, either version 3 of the License, or
6
// (at your option) any later version.
7
//
8
// Moodle is distributed in the hope that it will be useful,
9
// but WITHOUT ANY WARRANTY; without even the implied warranty of
10
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
// GNU General Public License for more details.
12
//
13
// You should have received a copy of the GNU General Public License
14
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
15
 
16
/*
17
 * @package    atto_subscript
18
 * @copyright  2014 Rosiana Wijaya <rwijaya@moodle.com>
19
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
20
 */
21
 
22
/**
23
 * @module moodle-atto_subscript-button
24
 */
25
 
26
/**
27
 * Atto text editor subscript plugin.
28
 *
29
 * @namespace M.atto_subscript
30
 * @class button
31
 * @extends M.editor_atto.EditorPlugin
32
 */
33
 
34
Y.namespace('M.atto_subscript').Button = Y.Base.create('button', Y.M.editor_atto.EditorPlugin, [], {
35
    /**
36
     * A rangy object to alter CSS classes.
37
     *
38
     * @property _subscriptApplier
39
     * @type Object
40
     * @private
41
     */
42
    _subscriptApplier: null,
43
 
44
    /**
45
     * A rangy object to alter CSS classes.
46
     *
47
     * @property _superscriptApplier
48
     * @type Object
49
     * @private
50
     */
51
    _superscriptApplier: null,
52
 
53
    initializer: function() {
54
        this.addButton({
55
            buttonName: 'subscript',
56
            callback: this.toggleSubscript,
57
            icon: 'e/subscript',
58
            inlineFormat: true,
59
 
60
            // Watch the following tags and add/remove highlighting as appropriate:
61
            tags: 'sub'
62
        });
63
        this._subscriptApplier = window.rangy.createClassApplier("editor-subscript");
64
        this._superscriptApplier = window.rangy.createClassApplier("editor-superscript");
65
    },
66
 
67
    /**
68
     * Toggle subscripts in selection
69
     *
70
     * @method toggleSubscript
71
     */
72
    toggleSubscript: function() {
73
        // Replace all the sub and sup tags.
74
        this.get('host').changeToCSS('sup', 'editor-superscript');
75
        this.get('host').changeToCSS('sub', 'editor-subscript');
76
 
77
        // Remove all superscripts inselection and toggle subscript.
78
        this._superscriptApplier.undoToSelection();
79
        this._subscriptApplier.toggleSelection();
80
 
81
        // Replace CSS classes with tags.
82
        this.get('host').changeToTags('editor-subscript', 'sub');
83
        this.get('host').changeToTags('editor-superscript', 'sup');
84
    }
85
});