All files / web/bundles/pimui/js pim-wysiwyg.js

41.67% Statements 5/12
100% Branches 0/0
40% Functions 2/5
41.67% Lines 5/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77                  1183x           1183x                         1183x 3883x         1183x                                                                                    
'use strict';
 
/**
 * This class is used to manage wysiwyg
 *
 * @author    Willy Mesnage <willy.mesnage@akeneo.com>
 * @copyright 2015 Akeneo SAS (http://www.akeneo.com)
 * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 */
define(
    ['jquery', 'underscore', 'backbone', 'summernote'],
    function ($, _, Backbone) {
        /**
         * Wysiwyg editor default configuration
         */
        var config = {
            disableResizeEditor: true,
            height: 200,
            iconPrefix: 'icon-',
            toolbar: [
                ['font', ['bold', 'italic', 'underline', 'clear']],
                ['para', ['ul', 'ol']],
                ['insert', ['link']],
                ['view', ['codeview']]
            ],
            prettifyHtml: false
        };
 
        Backbone.Router.prototype.on('route', function () {
            $('textarea.wysiwyg').each(function () {
                $(this).destroy();
            });
        });
 
        return {
            /**
             * Wysiwyg editor settings
             */
            settings: [],
 
            /**
             * Initialise the wysiwyg
             *
             * @param {jquery} $el
             * @param {Array}  options
             *
             * @returns {Object}
             */
            init: function ($el, options) {
                this.settings = _.extend(
                    _.clone(config),
                    options
                );
 
                $el.summernote(this.settings);
 
                return this;
            },
 
            /**
             * Put the wysiwyg in readonly mode for the given element
             *
             * @param {jquery} $el
             *
             * @returns {Object}
             */
            readonly: function ($el) {
                var editable = $el.parent().find('.note-editable');
 
                editable.attr('contenteditable', false);
 
                return this;
            }
        };
    }
);