Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
YUI.add('moodle-atto_align-button', function (Y, NAME) {
2
 
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/>.
17
 
18
/*
19
 * @package    atto_align
20
 * @copyright  2014 Frédéric Massart
21
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
22
 */
23
 
24
/**
25
 * @module moodle-atto_align-button
26
 */
27
 
28
/**
29
 * Atto text editor align plugin.
30
 *
31
 * @namespace M.atto_align
32
 * @class button
33
 * @extends M.editor_atto.EditorPlugin
34
 */
35
 
36
Y.namespace('M.atto_align').Button = Y.Base.create('button', Y.M.editor_atto.EditorPlugin, [], {
37
    initializer: function() {
38
        var alignment;
39
 
40
        alignment = 'justifyLeft';
41
        this.addButton({
42
            icon: 'e/align_left',
43
            title: 'leftalign',
44
            buttonName: alignment,
45
            callback: this._changeStyle,
46
            callbackArgs: alignment
47
        });
48
 
49
        alignment = 'justifyCenter';
50
        this.addButton({
51
            icon: 'e/align_center',
52
            title: 'center',
53
            buttonName: alignment,
54
            callback: this._changeStyle,
55
            callbackArgs: alignment
56
        });
57
 
58
        alignment = 'justifyRight';
59
        this.addButton({
60
            icon: 'e/align_right',
61
            title: 'rightalign',
62
            buttonName: alignment,
63
            callback: this._changeStyle,
64
            callbackArgs: alignment
65
        });
66
    },
67
 
68
 
69
    /**
70
     * Change the alignment to the specified justification.
71
     *
72
     * @method _changeStyle
73
     * @param {EventFacade} e
74
     * @param {string} justification The execCommand for the new justification.
75
     * @private
76
     */
77
    _changeStyle: function(e, justification) {
78
        var host = this.get('host');
79
 
80
        // We temporarily re-enable CSS styling to try to have the most consistency.
81
        // Though, IE, as always, is stubborn and will do its own thing...
82
        host.enableCssStyling();
83
 
84
        document.execCommand(justification, false, null);
85
 
86
        // To clean up IE's mess.
87
        this.editor.all('*[align]').each(function(node) {
88
            var align = node.get('align');
89
            if (align) {
90
                node.setStyle('text-align', align);
91
                node.removeAttribute('align');
92
            }
93
        }, this);
94
 
95
        // Re-disable the CSS styling after making the change.
96
        host.disableCssStyling();
97
 
98
        // Mark the text as having been updated.
99
        this.markUpdated();
100
 
101
        this.editor.focus();
102
    }
103
});
104
 
105
 
106
}, '@VERSION@', {"requires": ["moodle-editor_atto-plugin"]});