| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350 | 
							- /* jshint expr: true */
 
- !(function($, wysi) {
 
-   'use strict';
 
-   var templates = function(key, locale, options) {
 
-     return wysi.tpl[key]({locale: locale, options: options});
 
-   };
 
-   var Wysihtml5 = function(el, options) {
 
-     this.el = el;
 
-     var toolbarOpts = options || defaultOptions;
 
-     for(var t in toolbarOpts.customTemplates) {
 
-       wysi.tpl[t] = toolbarOpts.customTemplates[t];
 
-     }
 
-     this.toolbar = this.createToolbar(el, toolbarOpts);
 
-     this.editor =  this.createEditor(options);
 
-     window.editor = this.editor;
 
-     $('iframe.wysihtml5-sandbox').each(function(i, el){
 
-       $(el.contentWindow).off('focus.wysihtml5').on({
 
-         'focus.wysihtml5' : function(){
 
-           $('li.dropdown').removeClass('open');
 
-         }
 
-       });
 
-     });
 
-   };
 
-   Wysihtml5.prototype = {
 
-     constructor: Wysihtml5,
 
-     createEditor: function(options) {
 
-       options = options || {};
 
-       // Add the toolbar to a clone of the options object so multiple instances
 
-       // of the WYISYWG don't break because 'toolbar' is already defined
 
-       options = $.extend(true, {}, options);
 
-       options.toolbar = this.toolbar[0];
 
-       var editor = new wysi.Editor(this.el[0], options);
 
-       if(options && options.events) {
 
-         for(var eventName in options.events) {
 
-           editor.on(eventName, options.events[eventName]);
 
-         }
 
-       }
 
-       return editor;
 
-     },
 
-     createToolbar: function(el, options) {
 
-       var self = this;
 
-       var toolbar = $('<ul/>', {
 
-         'class' : 'wysihtml5-toolbar',
 
-         'style': 'display:none'
 
-       });
 
-       var culture = options.locale || defaultOptions.locale || 'en';
 
-       for(var key in defaultOptions) {
 
-         var value = false;
 
-         if(options[key] !== undefined) {
 
-           if(options[key] === true) {
 
-             value = true;
 
-           }
 
-         } else {
 
-           value = defaultOptions[key];
 
-         }
 
-         if(value === true) {
 
-           toolbar.append(templates(key, locale[culture], options));
 
-           if(key === 'html') {
 
-             this.initHtml(toolbar);
 
-           }
 
-           if(key === 'link') {
 
-             this.initInsertLink(toolbar);
 
-           }
 
-           if(key === 'image') {
 
-             this.initInsertImage(toolbar);
 
-           }
 
-         }
 
-       }
 
-       if(options.toolbar) {
 
-         for(key in options.toolbar) {
 
-           toolbar.append(options.toolbar[key]);
 
-         }
 
-       }
 
-       toolbar.find('a[data-wysihtml5-command="formatBlock"]').click(function(e) {
 
-         var target = e.target || e.srcElement;
 
-         var el = $(target);
 
-         self.toolbar.find('.current-font').text(el.html());
 
-       });
 
-       toolbar.find('a[data-wysihtml5-command="foreColor"]').click(function(e) {
 
-         var target = e.target || e.srcElement;
 
-         var el = $(target);
 
-         self.toolbar.find('.current-color').text(el.html());
 
-       });
 
-       this.el.before(toolbar);
 
-       return toolbar;
 
-     },
 
-     initHtml: function(toolbar) {
 
-       var changeViewSelector = 'a[data-wysihtml5-action="change_view"]';
 
-       toolbar.find(changeViewSelector).click(function(e) {
 
-         toolbar.find('a.btn').not(changeViewSelector).toggleClass('disabled');
 
-       });
 
-     },
 
-     initInsertImage: function(toolbar) {
 
-       var self = this;
 
-       var insertImageModal = toolbar.find('.bootstrap-wysihtml5-insert-image-modal');
 
-       var urlInput = insertImageModal.find('.bootstrap-wysihtml5-insert-image-url');
 
-       var insertButton = insertImageModal.find('a.btn-primary');
 
-       var initialValue = urlInput.val();
 
-       var caretBookmark;
 
-       var insertImage = function() {
 
-         var url = urlInput.val();
 
-         urlInput.val(initialValue);
 
-         self.editor.currentView.element.focus();
 
-         if (caretBookmark) {
 
-           self.editor.composer.selection.setBookmark(caretBookmark);
 
-           caretBookmark = null;
 
-         }
 
-         self.editor.composer.commands.exec('insertImage', url);
 
-       };
 
-       urlInput.keypress(function(e) {
 
-         if(e.which == 13) {
 
-           insertImage();
 
-           insertImageModal.modal('hide');
 
-         }
 
-       });
 
-       insertButton.click(insertImage);
 
-       insertImageModal.on('shown', function() {
 
-         urlInput.focus();
 
-       });
 
-       insertImageModal.on('hide', function() {
 
-         self.editor.currentView.element.focus();
 
-       });
 
-       toolbar.find('a[data-wysihtml5-command=insertImage]').click(function() {
 
-         var activeButton = $(this).hasClass('wysihtml5-command-active');
 
-         if (!activeButton) {
 
-           self.editor.currentView.element.focus(false);
 
-           caretBookmark = self.editor.composer.selection.getBookmark();
 
-           insertImageModal.appendTo('body').modal('show');
 
-           insertImageModal.on('click.dismiss.modal', '[data-dismiss="modal"]', function(e) {
 
-             e.stopPropagation();
 
-           });
 
-           return false;
 
-         }
 
-         else {
 
-           return true;
 
-         }
 
-       });
 
-     },
 
-     initInsertLink: function(toolbar) {
 
-       var self = this;
 
-       var insertLinkModal = toolbar.find('.bootstrap-wysihtml5-insert-link-modal');
 
-       var urlInput = insertLinkModal.find('.bootstrap-wysihtml5-insert-link-url');
 
-       var targetInput = insertLinkModal.find('.bootstrap-wysihtml5-insert-link-target');
 
-       var insertButton = insertLinkModal.find('a.btn-primary');
 
-       var initialValue = urlInput.val();
 
-       var caretBookmark;
 
-       var insertLink = function() {
 
-         var url = urlInput.val();
 
-         urlInput.val(initialValue);
 
-         self.editor.currentView.element.focus();
 
-         if (caretBookmark) {
 
-           self.editor.composer.selection.setBookmark(caretBookmark);
 
-           caretBookmark = null;
 
-         }
 
-         var newWindow = targetInput.prop('checked');
 
-         self.editor.composer.commands.exec('createLink', {
 
-           'href' : url,
 
-           'target' : (newWindow ? '_blank' : '_self'),
 
-           'rel' : (newWindow ? 'nofollow' : '')
 
-         });
 
-       };
 
-       var pressedEnter = false;
 
-       urlInput.keypress(function(e) {
 
-         if(e.which == 13) {
 
-           insertLink();
 
-           insertLinkModal.modal('hide');
 
-         }
 
-       });
 
-       insertButton.click(insertLink);
 
-       insertLinkModal.on('shown', function() {
 
-         urlInput.focus();
 
-       });
 
-       insertLinkModal.on('hide', function() {
 
-         self.editor.currentView.element.focus();
 
-       });
 
-       toolbar.find('a[data-wysihtml5-command=createLink]').click(function() {
 
-         var activeButton = $(this).hasClass('wysihtml5-command-active');
 
-         if (!activeButton) {
 
-           self.editor.currentView.element.focus(false);
 
-           caretBookmark = self.editor.composer.selection.getBookmark();
 
-           insertLinkModal.appendTo('body').modal('show');
 
-           insertLinkModal.on('click.dismiss.modal', '[data-dismiss="modal"]', function(e) {
 
-             e.stopPropagation();
 
-           });
 
-           return false;
 
-         }
 
-         else {
 
-           return true;
 
-         }
 
-       });
 
-     }
 
-   };
 
-   // these define our public api
 
-   var methods = {
 
-     resetDefaults: function() {
 
-       $.fn.wysihtml5.defaultOptions = $.extend(true, {}, $.fn.wysihtml5.defaultOptionsCache);
 
-     },
 
-     bypassDefaults: function(options) {
 
-       return this.each(function () {
 
-         var $this = $(this);
 
-         $this.data('wysihtml5', new Wysihtml5($this, options));
 
-       });
 
-     },
 
-     shallowExtend: function (options) {
 
-       var settings = $.extend({}, $.fn.wysihtml5.defaultOptions, options || {}, $(this).data());
 
-       var that = this;
 
-       return methods.bypassDefaults.apply(that, [settings]);
 
-     },
 
-     deepExtend: function(options) {
 
-       var settings = $.extend(true, {}, $.fn.wysihtml5.defaultOptions, options || {});
 
-       var that = this;
 
-       return methods.bypassDefaults.apply(that, [settings]);
 
-     },
 
-     init: function(options) {
 
-       var that = this;
 
-       return methods.shallowExtend.apply(that, [options]);
 
-     }
 
-   };
 
-   $.fn.wysihtml5 = function ( method ) {
 
-     if ( methods[method] ) {
 
-       return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
 
-     } else if ( typeof method === 'object' || ! method ) {
 
-       return methods.init.apply( this, arguments );
 
-     } else {
 
-       $.error( 'Method ' +  method + ' does not exist on jQuery.wysihtml5' );
 
-     }    
 
-   };
 
-   $.fn.wysihtml5.Constructor = Wysihtml5;
 
-   var defaultOptions = $.fn.wysihtml5.defaultOptions = {
 
-     'font-styles': true,
 
-     'color': false,
 
-     'emphasis': true,
 
-     'lists': true,
 
-     'html': false,
 
-     'link': true,
 
-     'image': true,
 
-     events: {},
 
-     parserRules: {
 
-       classes: {
 
-         'wysiwyg-color-silver' : 1,
 
-         'wysiwyg-color-gray' : 1,
 
-         'wysiwyg-color-white' : 1,
 
-         'wysiwyg-color-maroon' : 1,
 
-         'wysiwyg-color-red' : 1,
 
-         'wysiwyg-color-purple' : 1,
 
-         'wysiwyg-color-fuchsia' : 1,
 
-         'wysiwyg-color-green' : 1,
 
-         'wysiwyg-color-lime' : 1,
 
-         'wysiwyg-color-olive' : 1,
 
-         'wysiwyg-color-yellow' : 1,
 
-         'wysiwyg-color-navy' : 1,
 
-         'wysiwyg-color-blue' : 1,
 
-         'wysiwyg-color-teal' : 1,
 
-         'wysiwyg-color-aqua' : 1,
 
-         'wysiwyg-color-orange' : 1
 
-       },
 
-       tags: {
 
-         'b':  {},
 
-         'i':  {},
 
-         'strong': {},
 
-         'em': {},
 
-         'p': {},
 
-         'br': {},
 
-         'ol': {},
 
-         'ul': {},
 
-         'li': {},
 
-         'h1': {},
 
-         'h2': {},
 
-         'h3': {},
 
-         'h4': {},
 
-         'h5': {},
 
-         'h6': {},
 
-         'blockquote': {},
 
-         'u': 1,
 
-         'img': {
 
-           'check_attributes': {
 
-             'width': 'numbers',
 
-             'alt': 'alt',
 
-             'src': 'url',
 
-             'height': 'numbers'
 
-           }
 
-         },
 
-         'a':  {
 
-           check_attributes: {
 
-             'href': 'url' // important to avoid XSS
 
-           },
 
-           'set_attributes': {
 
-             'target': '_blank',
 
-             'rel': 'nofollow'
 
-           }
 
-         },
 
-         'span': 1,
 
-         'div': 1,
 
-         // to allow save and edit files with code tag hacks
 
-         'code': 1,
 
-         'pre': 1
 
-       }
 
-     },
 
-     locale: 'en'
 
-   };
 
-   if (typeof $.fn.wysihtml5.defaultOptionsCache === 'undefined') {
 
-     $.fn.wysihtml5.defaultOptionsCache = $.extend(true, {}, $.fn.wysihtml5.defaultOptions);
 
-   }
 
-   var locale = $.fn.wysihtml5.locale = {};
 
- })(window.jQuery, window.wysihtml5);
 
 
  |