diff --git a/DemoUsingCustomDirective.html b/DemoUsingCustomDirective.html new file mode 100644 index 0000000..fd882c5 --- /dev/null +++ b/DemoUsingCustomDirective.html @@ -0,0 +1,39 @@ + + +
+ + + + + + + + + +" }; - - var fontsizes = { "Small" :"2", - "Normal":"3", - "Medium":"4", - "Large" :"5", - "Huge" :"6" }; - - var colors = [ { name: 'Black', hex: '#000000' }, + var fonts = { + //"Sans serif": "arial,helvetica,sans-serif", + //"Serif": "times new roman,serif", + //"Wide": "arial black,sans-serif", + //"Narrow": "arial narrow,sans-serif", + //"Comic Sans MS": "comic sans ms,sans-serif", + //"Courier New": "courier new,monospace", + //"Garamond": "garamond,serif", + //"Georgia": "georgia,serif", + //"Tahoma": "tahoma,sans-serif", + //"Trebuchet MS": "trebuchet ms,sans-serif", + //"Verdana": "verdana,sans-serif" + "Andale Mono":"andale mono,monospace", + "Arial":"arial,helvetica,sans-serif", + "Arial Black":"arial black,sans-serif", + "Book Antiqua":"book antiqua,palatino,serif", + "Comic Sans MS":"comic sans ms,sans-serif", + "Courier New":"courier new,courier,monospace", + "Georgia":"georgia,palatino,serif", + "Helvetica":"helvetica,arial,sans-serif", + "Impact":"impact,sans-serif", + "Symbol":"symbol", + "Tahoma":"tahoma,arial,helvetica,sans-serif", + "Terminal":"terminal,monaco,monospace", + "Times New Roman":"times new roman,times,serif", + "Trebuchet MS":"trebuchet ms,geneva,sans-serif", + "Verdana":"verdana,geneva,sans-serif", + "Webdings":"webdings", + "Wingdings":"wingdings,zapf dingbats" + }; + + var styles = { + "Heading 1": "
" + }; + + var fontsizes = { + //"test":"1", + //"Small": "2", + //"Normal": "3", + //"Medium": "4", + //"Large": "5", + //"Huge": "6" + "10px": "2", + "12px": "2.3", + "14px": "2.6", + "18px": "3", + "24px": "4", + "32px": "5", + "36px":"6" + }; + + var colors = [{ name: 'Black', hex: '#000000' }, { name: 'MediumBlack', hex: '#444444' }, { name: 'LightBlack', hex: '#666666' }, { name: 'DimBlack', hex: '#999999' }, @@ -406,15 +442,15 @@ You should have received a copy of the GNU General Public License along with thi { name: 'Magenta', hex: '#FF00FF' }, { name: 'libreak', hex: null }, - - { name: 'LightPink', hex: '#FFB6C1'}, - { name: 'Bisque', hex: '#FCE5CD'}, - { name: 'BlanchedAlmond', hex: '#FFF2CC'}, - { name: 'LightLime', hex: '#D9EAD3'}, - { name: 'LightCyan', hex: '#D0E0E3'}, - { name: 'AliceBlue', hex: '#CFE2F3'}, - { name: 'Lavender', hex: '#D9D2E9'}, - { name: 'Thistle', hex: '#EAD1DC'}, + + { name: 'LightPink', hex: '#FFB6C1' }, + { name: 'Bisque', hex: '#FCE5CD' }, + { name: 'BlanchedAlmond', hex: '#FFF2CC' }, + { name: 'LightLime', hex: '#D9EAD3' }, + { name: 'LightCyan', hex: '#D0E0E3' }, + { name: 'AliceBlue', hex: '#CFE2F3' }, + { name: 'Lavender', hex: '#D9D2E9' }, + { name: 'Thistle', hex: '#EAD1DC' }, { name: 'LightCoral', hex: '#EA9999' }, { name: 'Wheat', hex: '#F9CB9C' }, @@ -459,1024 +495,1100 @@ You should have received a copy of the GNU General Public License along with thi { name: 'DarkSlateGray', hex: '#0C343D' }, { name: 'Navy', hex: '#073763' }, { name: 'MidnightBlue', hex: '#20124D' }, - { name: 'DarkMaroon', hex: '#4C1130' } ]; - - var specialchars = [{ name:"Exclamation ", text:"!"}, - { name:"At", text:"@"}, - { name:"Hash", text:"#"}, - { name:"Percentage", text:"%"}, - { name:"Uppercase", text:"^"}, - { name:"Ampersand", text:"&"}, - { name:"Asterisk", text:"*"}, - { name:"OpenBracket", text:"("}, - { name:"CloseBracket", text:")"}, - { name:"Underscore", text:"_"}, - { name:"Hiphen", text:"-"}, - { name:"Plus", text:"+"}, - { name:"Equalto", text:"="}, - { name:"OpenSquareBracket", text:"["}, - { name:"CloseSquareBracket", text:"]"}, - { name:"OpenCurly", text:"{"}, - { name:"CloseCurly", text:"}"}, - { name:"Pipe", text:"|"}, - { name:"Colon", text:":"}, - { name:"Semicolon", text:";"}, - { name:"Single quote", text:"'"}, - { name:"Double quote", text:"""}, - { name:"Left single curly quote", text:"‘"}, - { name:"right single curly quote", text:"’"}, - { name:"Forward-slash", text:"/"}, - { name:"Back-slash", text:"\"}, - { name:"LessThan", text:"<"}, - { name:"GreaterThan", text:">"}, - { name:"QuestionMark", text:"?"}, - { name:"Tilda", text:"~"}, - { name:"Grave accent", text:"`"}, - { name:"Micron", text:"µ"}, - { name:"Paragraph sign", text:"¶"}, - { name:"Plus/minus", text:"±"}, - { name:"Trademark", text:"™"}, - { name:"Copyright", text:"©"}, - { name:"Registered", text:"®"}, - { name:"Section", text:"§"}, - { name:"right double angle quotes", text:"»"}, - { name:"fraction one quarter", text:"¼"}, - { name:"fraction one half", text:"½"}, - { name:"fraction three quarters", text:"¾"}, - { name:"Dollar", text:"$"}, - { name:"Euro", text:"€"}, - { name:"Pound", text:"£"}, - { name:"Yen", text:"¥"}, - { name:"Cent", text:"¢"}, - { name:"IndianRupee", text:"₹"},]; - - var menuItems = { 'fonteffects': true, - 'texteffects': true, - 'aligneffects': true, - 'textformats':true, - 'actions' : true, - 'insertoptions' : true, - 'extraeffects' : true, - 'advancedoptions' : true, - 'screeneffects':true, - - 'fonts' : { "select":true, - "default": "Font", - "tooltip": "Fonts", - "commandname": "fontName", - "custom":null }, - - 'styles' : { "select":true, - "default": "Formatting", - "tooltip": "Paragraph Format", - "commandname": "formatBlock", - "custom":null }, - - 'font_size': { "select":true, - "default": "Font size", - "tooltip": "Font Size", - "commandname":"fontSize", - "custom":null }, - - 'color' : { "text":"A", - "icon": "fa fa-font", - "tooltip": "Text/Background Color", - "commandname":null, - "custom":function(button){ - var editor = $(this); - var flag = 0; - var paletteCntr = $('
',{id:"paletteCntr",class:"activeColour", css :{"display":"none","width":"335px"}}).click(function(event){event.stopPropagation();}); - var paletteDiv = $('',{id:"colorpellete"}); - var palette = $(''); - } - }}, - - 'indent' : { "text": "Indent", - "icon":"fa fa-indent", - "tooltip": "Increase Indent", - "commandname":"indent", - "custom":null }, - - 'outdent' : { "text": "Outdent", - "icon":"fa fa-outdent", - "tooltip": "Decrease Indent", - "commandname":"outdent", - "custom":null }, - - 'print' : { "text": "Print", - "icon":"fa fa-print", - "tooltip": "Print", - "commandname":null, - "custom":function(){ - oDoc = $(this).data("editor"); - var oPrntWin = window.open("","_blank","width=450,height=470,left=400,top=100,menubar=yes,toolbar=no,location=no,scrollbars=yes"); - oPrntWin.document.open(); - oPrntWin.document.write("',{id:"special_ui"}); - var editor_Content = this; - if($(this).data("editor").data("splcharsBtn")){ - flag = 1; - $(this).data("editor").data("splcharsBtn", null); - } - else - $(this).data("editor").data("splcharsBtn", 1); - - if(flag==0){ - for (var i = 0; i < specialchars.length; i++){ - splCharUi.append($('').html(specialchars[i].text).attr('title',specialchars[i].name).mousedown(function(event){ event.preventDefault();}).click(function(event){ - if(navigator.userAgent.match(/MSIE/i) || navigator.userAgent.match(/Windows NT.*Trident\//)){ - var specCharHtml = $(this).html(); - methods.insertTextAtSelection.apply(this,[specCharHtml,'html']); - } - else{ - document.execCommand('insertHTML',false,$(this).html()); - } - $('#specialchar').remove(); - $(editor_Content).data("editor").data("splcharsBtn", null); - })); - } - splCharUi.prependTo(splCharDiv); - splCharDiv.insertAfter(button) - $('#specialchar').slideDown('slow'); - } - else - $('#specialchar').remove(); - }}, - - 'source' : { "text": "Source", - "icon":"fa fa-code", - "tooltip": "Source", - "commandname":null, - "custom":function(button, params){ methods.getSource.apply(this, [button, params]) } }, - "params": {"obj":null}, - }; - - var menuGroups = {'texteffects' : ['bold', 'italics', 'underline', 'color'], - 'aligneffects': ['l_align','c_align', 'r_align', 'justify'], - 'textformats': ['indent', 'outdent', 'block_quote', 'ol', 'ul'], - 'fonteffects' : ['fonts', 'styles', 'font_size'], - 'actions' : ['undo', 'redo'], - 'insertoptions' : ['insert_link', 'unlink', 'insert_img', 'insert_table'], - 'extraeffects' : ['strikeout', 'hr_line', 'splchars'], - 'advancedoptions' : ['print', 'rm_format', 'select_all', 'source'], - 'screeneffects' : ['togglescreen'] - }; - - var settings = $.extend({ - 'texteffects':true, - 'aligneffects':true, - 'textformats':true, - 'fonteffects':true, - 'actions' : true, - 'insertoptions' : true, - 'extraeffects' : true, - 'advancedoptions' : true, - 'screeneffects':true, + var htmlTableCntr = $(''); + var tblAttributes = [ + { attribute: "align", value: tblAlign }, + { attribute: "border", value: tblBorder }, + { attribute: "cellspacing", value: tblCellspacing }, + { attribute: "cellpadding", value: tblCellpadding }, + { attribute: "width", value: tblWidth }, + { attribute: "height", value: tblHeight }, + ]; + var htmlTable = methods.getHTMLTable.apply(this, [tblRows, tblColumns, tblAttributes]); + htmlTable.appendTo(htmlTableCntr); + if (navigator.userAgent.match(/MSIE/i) || navigator.userAgent.match(/Windows NT.*Trident\//)) + methods.restoreSelection.apply(this, [htmlTableCntr.html(), 'html']); + else + document.execCommand('insertHTML', false, htmlTableCntr.html()); + $("#InsertTable" + _idSuffix).modal("hide"); + $(editorObj).data("editor").focus(); + } + }, + + 'hr_line': { + "text": "HR", + "icon": "fa fa-minus", + "tooltip": "Horizontal Rule", + "commandname": "insertHorizontalRule", + "custom": null + }, + + 'block_quote': { + "text": "Block Quote", + "icon": "fa fa-quote-right", + "tooltip": "Block Quote", + "commandname": null, + "custom": function () { + methods.setStyleWithCSS.apply(this); + if (navigator.userAgent.match(/MSIE/i) || navigator.userAgent.match(/Windows NT.*Trident\//)) { + document.execCommand('indent', false, null); + } + else { + document.execCommand('formatBlock', false, '
'); + } + } + }, + + 'indent': { + "text": "Indent", + "icon": "fa fa-indent", + "tooltip": "Increase Indent", + "commandname": "indent", + "custom": null + }, + + 'outdent': { + "text": "Outdent", + "icon": "fa fa-outdent", + "tooltip": "Decrease Indent", + "commandname": "outdent", + "custom": null + }, + + 'print': { + "text": "Print", + "icon": "fa fa-print", + "tooltip": "Print", + "commandname": null, + "custom": function () { + oDoc = $(this).data("editor"); + var oPrntWin = window.open("", "_blank", "width=450,height=470,left=400,top=100,menubar=yes,toolbar=no,location=no,scrollbars=yes"); + oPrntWin.document.open(); + oPrntWin.document.write("', { id: "special_ui" }); + var editor_Content = this; + if ($(this).data("editor").data("splcharsBtn")) { + flag = 1; + $(this).data("editor").data("splcharsBtn", null); + } + else + $(this).data("editor").data("splcharsBtn", 1); + + if (flag == 0) { + for (var i = 0; i < specialchars.length; i++) { + splCharUi.append($('').html(specialchars[i].text).attr('title', specialchars[i].name).mousedown(function (event) { event.preventDefault(); }).click(function (event) { + if (navigator.userAgent.match(/MSIE/i) || navigator.userAgent.match(/Windows NT.*Trident\//)) { + var specCharHtml = $(this).html(); + methods.insertTextAtSelection.apply(this, [specCharHtml, 'html']); + } + else { + document.execCommand('insertHTML', false, $(this).html()); + } + $('#specialchar').remove(); + $(editor_Content).data("editor").data("splcharsBtn", null); + })); + } + splCharUi.prependTo(splCharDiv); + splCharDiv.insertAfter(button) + $('#specialchar').slideDown('slow'); + } + else + $('#specialchar').remove(); + } + }, + + 'source': { + "text": "Source", + "icon": "fa fa-code", + "tooltip": "Source", + "commandname": null, + "custom": function (button, params) { methods.getSource.apply(this, [button, params]) } + }, + "params": { "obj": null }, + }; + + var menuGroups = { + 'texteffects': ['bold', 'italics', 'underline', 'color'], + 'aligneffects': ['l_align', 'c_align', 'r_align', 'justify'], + 'textformats': ['indent', 'outdent', 'block_quote', 'ol', 'ul'], + 'fonteffects': ['fonts', 'styles', 'font_size'], + 'actions': ['undo', 'redo'], + 'insertoptions': ['insert_link', 'unlink', 'insert_img', 'insert_table'], + 'extraeffects': ['strikeout', 'hr_line', 'splchars'], + 'advancedoptions': ['print', 'rm_format', 'select_all', 'source'], + 'screeneffects': ['togglescreen'] + }; + + var settings = $.extend({ + 'texteffects': true, + 'aligneffects': true, + 'textformats': true, + 'fonteffects': true, + 'actions': true, + 'insertoptions': true, + 'extraeffects': true, + 'advancedoptions': true, + 'screeneffects': true, 'bold': true, 'italics': true, - 'underline':true, - 'ol':true, - 'ul':true, - 'undo':true, - 'redo':true, - 'l_align':true, - 'r_align':true, - 'c_align':true, - 'justify':true, - 'insert_link':true, - 'unlink':true, - 'insert_img':true, - 'hr_line':true, - 'block_quote':true, - 'source':true, - 'strikeout':true, - 'indent':true, - 'outdent':true, - 'fonts':fonts, - 'styles':styles, - 'print':true, - 'rm_format':true, - 'status_bar':true, - 'font_size':fontsizes, - 'color':colors, - 'splchars':specialchars, - 'insert_table':true, - 'select_all':true, - 'togglescreen':true - },options); - - var containerDiv = $("",{ class : "row-fluid Editor-container" }); - var $this = $(this).hide(); - $this.after(containerDiv); - var menuBar = $( "",{ id : "menuBarDiv_" + $(this).attr("id"), - class : "row-fluid line-control-menu-bar" - }).prependTo(containerDiv); - var editor = $( "",{ class : "Editor-editor", - css : {overflow: "auto"}, - contenteditable:"true" - }).appendTo(containerDiv); - var statusBar = $("", { id : "statusbar_" + $(this).attr("id"), - class: "row-fluid line-control-status-bar", - unselectable:"on", - }).appendTo(containerDiv); - $(this).data("menuBar", menuBar); - $(this).data("editor", editor); - $(this).data("statusBar", statusBar); - var editor_Content = this; - if(settings['status_bar']){ - editor.keyup(function(event){ + 'underline': true, + 'ol': true, + 'ul': true, + 'undo': true, + 'redo': true, + 'l_align': true, + 'r_align': true, + 'c_align': true, + 'justify': true, + 'insert_link': true, + 'unlink': true, + 'insert_img': true, + 'hr_line': true, + 'block_quote': true, + 'source': false, + 'strikeout': true, + 'indent': true, + 'outdent': true, + 'fonts': fonts, + 'styles': styles, + 'print': true, + 'rm_format': true, + 'status_bar': false, + 'font_size': fontsizes, + 'color': colors, + 'splchars': specialchars, + 'insert_table': true, + 'select_all': true, + 'togglescreen': true + }, options); + + var containerDiv = $("", { class: "row-fluid Editor-container" }); + var $this = $(this).hide(); + $this.after(containerDiv); + var menuBar = $("", { + id: "menuBarDiv_" + $(this).attr("id"), + class: "row-fluid line-control-menu-bar" + }).prependTo(containerDiv); + var id="Container_" + $(this).attr("id") + //var editor = $('
') + // .appendTo(containerDiv); + var editor = $("", { + id: "Container_" + $(this).attr("id"), + class: "Editor-editor", + css: { overflow: "auto" }, + contenteditable: "true" + }).appendTo(containerDiv); + var statusBar = $("", { + id: "statusbar_" + $(this).attr("id"), + class: "row-fluid line-control-status-bar", + unselectable: "on", + }).appendTo(containerDiv); + $(this).data("menuBar", menuBar); + $(this).data("editor", editor); + $(this).data("statusBar", statusBar); + var editor_Content = this; + if (settings['status_bar']) { + editor.keyup(function (event) { + console.log('editorjs keyup'); var wordCount = methods.getWordCount.apply(editor_Content); var charCount = methods.getCharCount.apply(editor_Content); - $(editor_Content).data("statusBar").html(''+'Words : '+wordCount+''); - $(editor_Content).data("statusBar").append(''+'Characters : '+charCount+''); - }); - } - - - for(var item in menuItems){ - if(!settings[item] ){ //if the display is not set to true for the button in the settings. - if(settings[item] in menuGroups){ - for(var each in menuGroups[item]){ - settings[each] = false; - } - } - continue; - } - if(item in menuGroups){ - var group = $("",{class:"btn-group"}); - for(var index=0;index')) { //Clicked outside - if($("#specialchar").is(':visible')) - { + $(editor_Content).data("statusBar").html(' ' + 'Words : ' + wordCount + ''); + $(editor_Content).data("statusBar").append('' + 'Characters : ' + charCount + ''); + $(editor_Content).data("statusBar").append('' + 'Remaining Characters : ' + (100000 - charCount) + ''); + }); + } + + + for (var item in menuItems) { + if (!settings[item]) { //if the display is not set to true for the button in the settings. + if (settings[item] in menuGroups) { + for (var each in menuGroups[item]) { + settings[each] = false; + } + } + continue; + } + if (item in menuGroups) { + var group = $("", { class: "btn-group" }); + for (var index = 0; index < menuGroups[item].length; index++) { + var value = menuGroups[item][index]; + if (settings[value]) { + var menuItem = methods.createMenuItem.apply(this, [menuItems[value], settings[value], true]); + group.append(menuItem); + } + settings[value] = false; + } + menuBar.append(group); + } + else { + var menuItem = methods.createMenuItem.apply(this, [menuItems[item], settings[item], true]); + menuBar.append(menuItem); + } + } + + //For contextmenu + $(document.body).mousedown(function (event) { + var target = $(event.target); + if (!target.parents().andSelf().is('#context-menu')) { // Clicked outside + $('#context-menu').remove(); + } + if (!target.parents().andSelf().is('#specialchar') && (target.closest('a').html() != '')) { //Clicked outside + if ($("#specialchar").is(':visible')) { $(editor_Content).data("editor").data("splcharsBtn", null); $('#specialchar').remove(); - } - } - if (!target.parents().andSelf().is('#paletteCntr') && (target.closest('a').html()!='')) { //Clicked outside - if($("#paletteCntr").is(':visible')) - { + } + } + if (!target.parents().andSelf().is('#paletteCntr') && (target.closest('a').html() != '')) { //Clicked outside + if ($("#paletteCntr").is(':visible')) { $(editor_Content).data("editor").data("colorBtn", null); $('#paletteCntr').remove(); - } - } - }); - editor.bind("contextmenu", function(e){ - if($('#context-menu').length) - $('#context-menu').remove(); - var cMenu = $('',{id:"context-menu" - }).css({position:"absolute", top:e.pageY, left: e.pageX, "z-index":9999 - }).click(function(event){ - event.stopPropagation(); - }); - var cMenuUl = $('',{ class:"dropdown-menu on","role":"menu"}); - e.preventDefault(); - if($(e.target).is('a')){ - methods.createOpenLinkContext.apply(this,[e,cMenuUl]); - methods.createLinkContext.apply(this,[e,cMenuUl]); - cMenuUl.appendTo(cMenu); - cMenu.appendTo('body'); - } - else if($(e.target).is('td') || $(e.target).is("th")){ - methods.createTableContext.apply(this,[e,cMenuUl]); - cMenuUl.appendTo(cMenu); - cMenu.appendTo('body'); - } - else if($(e.target).is('img')){ - - methods.createImageContext.apply(this,[e,cMenuUl]); - cMenuUl.appendTo(cMenu); - cMenu.appendTo('body'); - } - }); + } + } + }); + editor.bind("contextmenu", function (e) { + if ($('#context-menu').length) + $('#context-menu').remove(); + var cMenu = $('', { + id: "context-menu" + }).css({ + position: "absolute", top: e.pageY, left: e.pageX, "z-index": 9999 + }).click(function (event) { + event.stopPropagation(); + }); + var cMenuUl = $('
', { class: "dropdown-menu on", "role": "menu" }); + e.preventDefault(); + if ($(e.target).is('a')) { + methods.createLinkContext.apply(this, [e, cMenuUl]); + cMenuUl.appendTo(cMenu); + cMenu.appendTo('body'); + } + else if ($(e.target).is('td') || $(e.target).is("th")) { + methods.createTableContext.apply(this, [e, cMenuUl]); + cMenuUl.appendTo(cMenu); + cMenu.appendTo('body'); + } + else if ($(e.target).is('img')) { + + methods.createImageContext.apply(this, [e, cMenuUl]); + cMenuUl.appendTo(cMenu); + cMenu.appendTo('body'); + } + }); }, - createLinkContext: function(event,cMenuUl){ - var cMenuli = $('').append($('',{ - id:"rem_link", - "href":"javascript:void(0)", - "text":"RemoveLink" - }).click(function(e){ - return function(){ - $(e.target).contents().unwrap(); - $('#context-menu').remove(); - }}(event))); + createLinkContext: function (event, cMenuUl) { + var cMenuli = $('').append($('', { + id: "rem_link", + "href": "javascript:void(0)", + "text": "RemoveLink" + }).click(function (e) { + return function () { + $(e.target).contents().unwrap(); + $('#context-menu').remove(); + } + }(event))); cMenuli.appendTo(cMenuUl); }, - createOpenLinkContext: function(event,cMenuUl){ - var cMenulia = $('').append($('',{ - id:"open_link", - "text":"OpenLink" - }).click(function(e){ - return function(){ - window.open(e.target.getAttribute('href'), '_blank'); - }}(event))); - cMenulia.appendTo(cMenuUl); - }, - createImageContext: function(event,cMenuUl){ - var cModalId="imgAttribute"; - var cModalHeader="Image Attributes"; - var imgModalBody=methods.imageAttributeWidget.apply(this,["edit"]); - var onSave = function(){ + + createImageContext: function (event, cMenuUl) { + var cModalId = "imgAttribute"; + var cModalHeader = "Image Attributes"; + var imgModalBody = methods.imageAttributeWidget.apply(this, ["edit"]); + var onSave = function () { var urlPattern = /(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/; var imageAlt = $('#imgAlt').val(); var imageTarget = $('#imgTarget').val(); - if(imageAlt==""){ - methods.showMessage.apply(this,["imageErrMsg","Please enter image alternative text"]); + if (imageAlt == "") { + methods.showMessage.apply(this, ["imageErrMsg", "Please enter image alternative text"]); return false; } - if(imageTarget!=""&& !imageTarget.match(urlPattern)){ - methods.showMessage.apply(this,["imageErrMsg","Please enter valid url"]); + if (imageTarget != "" && !imageTarget.match(urlPattern)) { + methods.showMessage.apply(this, ["imageErrMsg", "Please enter valid url"]); return false; } - if($("#imgHidden").val()!=""){ - var imgId = $("#imgHidden").val(); - $("#"+imgId).attr('alt',imageAlt); - if(imageTarget!="") - { - if($("#wrap_"+imgId).length) - $("#wrap_"+imgId).attr("href",imageTarget); - else - $("#"+imgId).wrap($('',{ id:"wrap_"+imgId,href:imageTarget,target:"_blank"})); - } - else - { - if($("#wrap_"+imgId).length) - $("#"+imgId).unwrap(); - } - } + if ($("#imgHidden").val() != "") { + var imgId = $("#imgHidden").val(); + $("#" + imgId).attr('alt', imageAlt); + if (imageTarget != "") { + if ($("#wrap_" + imgId).length) + $("#wrap_" + imgId).attr("href", imageTarget); + else + $("#" + imgId).wrap($('', { id: "wrap_" + imgId, href: imageTarget, target: "_blank" })); + } + else { + if ($("#wrap_" + imgId).length) + $("#" + imgId).unwrap(); + } + } $("#imgAttribute").modal("hide"); editorObj.data("editor").focus(); }; - methods.createModal.apply(this,[cModalId,cModalHeader, imgModalBody, onSave]); - var modalTrigger = $('',{ href:"#"+cModalId, - "text":"Image Attributes", - "data-toggle":"modal" - }).click( function(e){ - return function(){ - $('#context-menu').remove(); - var stamp = (new Date).getTime(); - $('#imgAlt').val($(e.target).closest("img").attr("alt")); - $('#imgTarget').val(''); - - if(typeof $(e.target).closest("img").attr("id")!=="undefined"){ - var identifier = $(e.target).closest("img").attr("id"); - $('#imgHidden').val(identifier); - if($('#wrap_'+identifier).length) - $('#imgTarget').val($('#wrap_'+identifier).attr("href")); - else - $('#imgTarget').val(''); - } - else{ - $(e.target).closest("img").attr("id","img_"+stamp) - $('#imgHidden').val("img_"+stamp); - } - - }}(event)); + methods.createModal.apply(this, [cModalId, cModalHeader, imgModalBody, onSave]); + var modalTrigger = $('', { + href: "#" + cModalId, + "text": "Image Attributes", + "data-toggle": "modal" + }).click(function (e) { + return function () { + $('#context-menu').remove(); + var stamp = (new Date).getTime(); + $('#imgAlt').val($(e.target).closest("img").attr("alt")); + $('#imgTarget').val(''); + + if (typeof $(e.target).closest("img").attr("id") !== "undefined") { + var identifier = $(e.target).closest("img").attr("id"); + $('#imgHidden').val(identifier); + if ($('#wrap_' + identifier).length) + $('#imgTarget').val($('#wrap_' + identifier).attr("href")); + else + $('#imgTarget').val(''); + } + else { + $(e.target).closest("img").attr("id", "img_" + stamp) + $('#imgHidden').val("img_" + stamp); + } + + } + }(event)); cMenuUl.append($('').append(modalTrigger)) - .append($('').append($('',{text:"Remove Image"}).click( - function(e) { return function(){ + .append($('').append($('', { text: "Remove Image" }).click( + function (e) { + return function () { $('#context-menu').remove(); - $(e.target).closest("img").remove(); - }}(event)))); + $(e.target).closest("img").remove(); + } + }(event)))); }, - createTableContext: function(event,cMenuUl){ + createTableContext: function (event, cMenuUl) { var _idSuffix = "_" + editorObj.attr("id") + "_Edt"; - var modalId="editProperties_" + editorObj.attr("id"); + var modalId = "editProperties_" + editorObj.attr("id"); $("#" + modalId).remove(); - var modalHeader="Table Properties"; - var tblModalBody= methods.tableWidget.apply(this,["edit"]); - var onSave = function(){ - var tblWidthEdt = $('#tblWidth' + _idSuffix).val(); - var tblHeightEdt = $('#tblHeight' + _idSuffix).val(); - var tblBorderEdt = $('#tblBorder' + _idSuffix).val(); - var tblAlignEdt = $('#tblAlign' + _idSuffix).val(); - var tblCellspacingEdt = $('#tblCellspacing' + _idSuffix).val(); - var tblCellpaddingEdt = $('#tblCellpadding' + _idSuffix).val(); - var tblEdtCssReg = /^auto$|^[+-]?[0-9]+\.?([0-9]+)?(px|em|ex|%|in|cm|mm|pt|pc)?$/ig; - var tblEdtNumReg = /^[0-9]+\.?([0-9])?$/; - if(tblWidthEdt!="" && !tblWidthEdt.match(tblEdtCssReg)){ - methods.showMessage.apply(this,["tblErrMsgEdt","Please enter positive number with or without a valid CSS measurement unit (px,em,ex,%,in,cm,mm,pt,pc)"]); + var modalHeader = "Table Properties"; + var tblModalBody = methods.tableWidget.apply(this, ["edit"]); + var onSave = function () { + var tblWidthEdt = $('#tblWidth' + _idSuffix).val(); + var tblHeightEdt = $('#tblHeight' + _idSuffix).val(); + var tblBorderEdt = $('#tblBorder' + _idSuffix).val(); + var tblAlignEdt = $('#tblAlign' + _idSuffix).val(); + var tblCellspacingEdt = $('#tblCellspacing' + _idSuffix).val(); + var tblCellpaddingEdt = $('#tblCellpadding' + _idSuffix).val(); + var tblEdtCssReg = /^auto$|^[+-]?[0-9]+\.?([0-9]+)?(px|em|ex|%|in|cm|mm|pt|pc)?$/ig; + var tblEdtNumReg = /^[0-9]+\.?([0-9])?$/; + if (tblWidthEdt != "" && !tblWidthEdt.match(tblEdtCssReg)) { + methods.showMessage.apply(this, ["tblErrMsgEdt", "Please enter positive number with or without a valid CSS measurement unit (px,em,ex,%,in,cm,mm,pt,pc)"]); return false; } - if(tblHeightEdt!="" && !tblHeightEdt.match(tblEdtCssReg)){ - methods.showMessage.apply(this,["tblErrMsgEdt","Please enter positive number with or without a valid CSS measurement unit (px,em,ex,%,in,cm,mm,pt,pc)"]); + if (tblHeightEdt != "" && !tblHeightEdt.match(tblEdtCssReg)) { + methods.showMessage.apply(this, ["tblErrMsgEdt", "Please enter positive number with or without a valid CSS measurement unit (px,em,ex,%,in,cm,mm,pt,pc)"]); return false; } - if(tblBorderEdt!="" && !tblBorderEdt.match(tblEdtNumReg)){ - methods.showMessage.apply(this,["tblErrMsgEdt","Border size must be a positive number"]); + if (tblBorderEdt != "" && !tblBorderEdt.match(tblEdtNumReg)) { + methods.showMessage.apply(this, ["tblErrMsgEdt", "Border size must be a positive number"]); return false; } - if(tblCellspacingEdt!="" && !tblCellspacingEdt.match(tblEdtNumReg)){ - methods.showMessage.apply(this,["tblErrMsgEdt","Cell spacing must be a positive number"]); + if (tblCellspacingEdt != "" && !tblCellspacingEdt.match(tblEdtNumReg)) { + methods.showMessage.apply(this, ["tblErrMsgEdt", "Cell spacing must be a positive number"]); return false; } - if(tblCellpaddingEdt!="" && !tblCellpaddingEdt.match(tblEdtNumReg)){ - methods.showMessage.apply(this,["tblErrMsgEdt","Cell padding must be a positive number"]); + if (tblCellpaddingEdt != "" && !tblCellpaddingEdt.match(tblEdtNumReg)) { + methods.showMessage.apply(this, ["tblErrMsgEdt", "Cell padding must be a positive number"]); return false; } - $(event.target).closest('table').css('width',tblWidthEdt); - if(tblHeightEdt!="") - $(event.target).closest('table').css('height',tblHeightEdt); - $(event.target).closest('table').attr('align',tblAlignEdt); - $(event.target).closest('table').attr('border',tblBorderEdt); - $(event.target).closest('table').attr('cellspacing',tblCellspacingEdt); - $(event.target).closest('table').attr('cellpadding',tblCellpaddingEdt); - $("#" + modalId).modal("hide"); + $(event.target).closest('table').css('width', tblWidthEdt); + if (tblHeightEdt != "") + $(event.target).closest('table').css('height', tblHeightEdt); + $(event.target).closest('table').attr('align', tblAlignEdt); + $(event.target).closest('table').attr('border', tblBorderEdt); + $(event.target).closest('table').attr('cellspacing', tblCellspacingEdt); + $(event.target).closest('table').attr('cellpadding', tblCellpaddingEdt); + $("#" + modalId).modal("hide"); editorObj.data("editor").focus(); - }; - methods.createModal.apply(this,[modalId,modalHeader, tblModalBody, onSave]); - var modalTrigger = $('',{ href:"#"+modalId, - "text":"Table Properties", - "data-toggle":"modal" - }).click( function(e){ return function(){ + }; + methods.createModal.apply(this, [modalId, modalHeader, tblModalBody, onSave]); + var modalTrigger = $('', { + href: "#" + modalId, + "text": "Table Properties", + "data-toggle": "modal" + }).click(function (e) { + return function () { var _idSuffix = "_" + editorObj.attr("id") + "_Edt"; - $('#context-menu').remove(); - $('#tblRows' + _idSuffix).val($(e.target).closest('table').prop('rows').length); - $('#tblColumns' + _idSuffix).val($(e.target).closest('table').find('tr')[0].cells.length); - $('#tblRows' + _idSuffix).attr('disabled','disabled'); - $('#tblColumns' + _idSuffix).attr('disabled','disabled'); - $('#tblWidth' + _idSuffix).val($(e.target).closest('table').get(0).style.width); - $('#tblHeight' + _idSuffix).val($(e.target).closest('table').get(0).style.height); - $('#tblAlign' + _idSuffix).val($(e.target).closest('table').attr("align")); - $('#tblBorder' + _idSuffix).val($(e.target).closest('table').attr("border")); - $('#tblCellspacing' + _idSuffix).val($(e.target).closest('table').attr("cellspacing")); - $('#tblCellpadding' + _idSuffix).val($(e.target).closest('table').attr("cellpadding")); - - - }}(event)); - - cMenuUl.append($('',{class:"dropdown-submenu",css:{display:"block"}}) - .append($('',{"tabindex":"-1", href:"javascript:void(0)","text":"Row"})) - .append($('
',{class:"dropdown-menu"}) - .append($('').append($('',{ - id:"tbl_addrow", - "href":"javascript:void(0)", - "text":"Add Row" - }).click(function(e){ - return function(){ - $("#context-menu").remove(); - var selectedRow = $(e.target).closest("tr"); - var newRow = $("
"); - selectedRow.children().each(function() { - var newColumn = $("<" + $(this).prop("nodeName") + "/>").html(" "); - newRow.append(newColumn); - }); - selectedRow.after(newRow); + $('#context-menu').remove(); + $('#tblRows' + _idSuffix).val($(e.target).closest('table').prop('rows').length); + $('#tblColumns' + _idSuffix).val($(e.target).closest('table').find('tr')[0].cells.length); + $('#tblRows' + _idSuffix).attr('disabled', 'disabled'); + $('#tblColumns' + _idSuffix).attr('disabled', 'disabled'); + $('#tblWidth' + _idSuffix).val($(e.target).closest('table').get(0).style.width); + $('#tblHeight' + _idSuffix).val($(e.target).closest('table').get(0).style.height); + $('#tblAlign' + _idSuffix).val($(e.target).closest('table').attr("align")); + $('#tblBorder' + _idSuffix).val($(e.target).closest('table').attr("border")); + $('#tblCellspacing' + _idSuffix).val($(e.target).closest('table').attr("cellspacing")); + $('#tblCellpadding' + _idSuffix).val($(e.target).closest('table').attr("cellpadding")); + + + } + }(event)); + + cMenuUl.append($('', { class: "dropdown-submenu", css: { display: "block" } }) + .append($('', { "tabindex": "-1", href: "javascript:void(0)", "text": "Row" })) + .append($(' ', { class: "dropdown-menu" }) + .append($('').append($('', { + id: "tbl_addrow", + "href": "javascript:void(0)", + "text": "Add Row" + }).click(function (e) { + return function () { + $("#context-menu").remove(); + var selectedRow = $(e.target).closest("tr"); + var newRow = $("
"); + selectedRow.children().each(function () { + var newColumn = $("<" + $(this).prop("nodeName") + "/>").html(" "); + newRow.append(newColumn); + }); + selectedRow.after(newRow); + } + }(event)))) + .append($('').append($('', { text: "Remove Row" }).click( + function (e) { + return function () { + $('#context-menu').remove(); + $(e.target).closest("tr").remove(); } }(event)))) - .append($('').append($('',{text:"Remove Row"}).click( - function(e) { return function(){ - $('#context-menu').remove(); - $(e.target).closest("tr").remove(); - }}(event)))) - )).append($('',{class:"dropdown-submenu",css:{display:"block"}}) - .append($('',{"tabindex":"-1", href:"javascript:void(0)","text":"Column"})) - .append($(' ',{class:"dropdown-menu"}) - .append($('').append($('',{ - id:"tbl_addcolumn", - "href":"javascript:void(0)", - "text":"Add Column", - }).click(function(e){ - return function(){ + )).append($('', { class: "dropdown-submenu", css: { display: "block" } }) + .append($('', { "tabindex": "-1", href: "javascript:void(0)", "text": "Column" })) + .append($('
', { class: "dropdown-menu" }) + .append($('').append($('', { + id: "tbl_addcolumn", + "href": "javascript:void(0)", + "text": "Add Column", + }).click(function (e) { + return function () { + $('#context-menu').remove(); + var selectedCell = $(e.target); + var columnIndex = selectedCell.siblings().addBack().index(selectedCell); + selectedCell.closest("table").find("tr").each(function () { + var cellInSelectedColumn = $(this).children(":eq(" + columnIndex + ")"); + var newCell = $("<" + cellInSelectedColumn.prop("nodeName") + "/>").html(" "); + cellInSelectedColumn.after(newCell); + }); + } + }(event)))) + .append($('').append($('', { text: "Remove Column" }).click( + function (e) { + return function () { $('#context-menu').remove(); var selectedCell = $(e.target); var columnIndex = selectedCell.siblings().addBack().index(selectedCell); - selectedCell.closest("table").find("tr").each(function() { - var cellInSelectedColumn = $(this).children(":eq(" + columnIndex + ")"); - var newCell = $("<" + cellInSelectedColumn.prop("nodeName") + "/>").html(" "); - cellInSelectedColumn.after(newCell); + selectedCell.closest("table").find("tr").each(function () { + $(this).children(":eq(" + columnIndex + ")").remove(); }); } }(event)))) - .append($('').append($('',{text:"Remove Column"}).click( - function(e) { return function(){ - $('#context-menu').remove(); - var selectedCell = $(e.target); - var columnIndex = selectedCell.siblings().addBack().index(selectedCell); - selectedCell.closest("table").find("tr").each(function() { - $(this).children(":eq(" + columnIndex + ")").remove(); - }); - }}(event)))) - )); + )); cMenuUl.append($('').append(modalTrigger)) - .append($('',{class:"divider"})) - .append($('').append($('',{text:"Remove Table"}).click( - function(e){ return function(){ + .append($('', { class: "divider" })) + .append($('').append($('', { text: "Remove Table" }).click( + function (e) { + return function () { $('#context-menu').remove(); - $(e.target).closest("table").remove(); - }}(event)))); + $(e.target).closest("table").remove(); + } + }(event)))); }, - createModal: function(modalId, modalHeader, modalBody, onSave){ + createModal: function (modalId, modalHeader, modalBody, onSave) { //Create a Modal for the button. - var modalTrigger = $('',{ href:"#"+modalId, - role:"button", - class:"btn btn-default", - "data-toggle":"modal" + var modalTrigger = $('', { + href: "#" + modalId, + role: "button", + class: "btn btn-default", + "data-toggle": "modal" }); - var modalElement = $('',{ id: modalId, - class: "modal fade", - tabindex: "-1", - role: "dialog", - "aria-labelledby":"h3_"+modalId, - "aria-hidden":"true" - }).append($('
',{ - class:"modal-dialog" - }).append($('',{ - class:"modal-content" - }).append($('',{ - class:"modal-header" - }).append($('',{ - type:"button", - class:"close", - "data-dismiss":"modal", - "aria-hidden":"true" - }).html('x') - ).append($('',{ - id:"h3_"+modalId - }).html(modalHeader)) - ).append($('',{ - class:"modal-body" - }).append(modalBody) - ).append($('',{ - class:"modal-footer" - }).append($('',{ - type:"button", - class:"btn btn-default", - "data-dismiss":"modal", - "aria-hidden":"true" - }).html('Cancel') - ).append($('',{ - type:"button", - class:"btn btn-success", - }).html('Done').mousedown(function(e){ - e.preventDefault(); - }).click(function(obj){return function(){onSave.apply(obj)}}(this))) - ) - ) - ); + var modalElement = $('', { + id: modalId, + class: "modal fade", + tabindex: "-1", + role: "dialog", + "aria-labelledby": "h3_" + modalId, + "aria-hidden": "true" + }).append($('', { + class: "modal-dialog" + }).append($('', { + class: "modal-content" + }).append($('', { + class: "modal-header" + }).append($('', { + type: "button", + class: "close", + "data-dismiss": "modal", + "aria-hidden": "true" + }).html('x') + ).append($('', { + id: "h3_" + modalId + }).html(modalHeader)) + ).append($('', { + class: "modal-body" + }).append(modalBody) + ).append($('', { + class: "modal-footer" + }).append($('', { + type: "button", + class: "btn btn-default", + "data-dismiss": "modal", + "aria-hidden": "true" + }).html('Cancel') + ).append($('', { + type: "button", + class: "btn btn-success", + }).html('Done').mousedown(function (e) { + e.preventDefault(); + }).click(function (obj) { return function () { onSave.apply(obj) } }(this))) + ) + ) + ); + if (!$("#" + modalId).length) modalElement.appendTo("body"); return modalTrigger; }, - createMenuItem: function(itemSettings, options, returnElement){ + createMenuItem: function (itemSettings, options, returnElement) { //Function to perform multiple actions.supplied arguments: itemsettings-list of buttons and button options, options: options for select input, returnelement: boolean. //1.Create Select Options using Bootstrap Dropdown. //2.Create modal dialog using bootstrap options //3.Create menubar buttons binded with corresponding event actions typeof returnElement !== 'undefined' ? returnElement : false; - if(itemSettings["select"]){ - var menuWrapElement = $("", {class:"btn-group"}); - var menuElement = $("", {class:"dropdown-menu"}); - menuWrapElement.append($('',{ - class:"btn btn-default dropdown-toggle", - "data-toggle":"dropdown", - "href":"javascript:void(0)", - "title":itemSettings["tooltip"] - }).html(itemSettings["default"]).append($("",{class:"caret"})).mousedown(function(e){ - e.preventDefault(); - })); - $.each(options,function(i,v){ + if (itemSettings["select"]) { + var menuWrapElement = $("", { class: "btn-group" }); + var menuElement = $("
", { class: "dropdown-menu" }); + menuWrapElement.append($('', { + class: "btn btn-default dropdown-toggle", + "data-toggle": "dropdown", + "href": "javascript:void(0)", + "title": itemSettings["tooltip"] + }).html(itemSettings["default"]).append($("", { class: "caret" })).mousedown(function (e) { + e.preventDefault(); + })); + $.each(options, function (i, v) { var option = $('') - $("",{ - tabindex : "-1", - href : "javascript:void(0)" - }).html(i).appendTo(option); - - option.click(function(){ - $(this).parent().parent().data("value", v); - $(this).parent().parent().trigger("change") - }); - menuElement.append(option); - }); + $("", { + tabindex: "-1", + href: "javascript:void(0)" + }).html(i).appendTo(option); + + option.click(function () { + $(this).parent().parent().data("value", v); + $(this).parent().parent().trigger("change") + }); + menuElement.append(option); + }); var action = "change"; - } - else if(itemSettings["modal"]){ - var menuWrapElement = methods.createModal.apply(this,[itemSettings["modalId"], itemSettings["modalHeader"], itemSettings["modalBody"], itemSettings["onSave"]]); - var menuElement = $(""); - if(itemSettings["icon"]) + } + else if (itemSettings["modal"]) { + var menuWrapElement = methods.createModal.apply(this, [itemSettings["modalId"], itemSettings["modalHeader"], itemSettings["modalBody"], itemSettings["onSave"]]); + var menuElement = $(""); + if (itemSettings["icon"]) menuElement.addClass(itemSettings["icon"]); else menuElement.html(itemSettings["text"]); menuWrapElement.append(menuElement); - menuWrapElement.mousedown(function(obj, methods, beforeLoad){ - return function(e){ + menuWrapElement.mousedown(function (obj, methods, beforeLoad) { + return function (e) { e.preventDefault(); methods.saveSelection.apply(obj); - if(beforeLoad){ - beforeLoad.apply(obj); - } + if (beforeLoad) { + beforeLoad.apply(obj); + } } - }(this, methods,itemSettings["beforeLoad"])); + }(this, methods, itemSettings["beforeLoad"])); menuWrapElement.attr('title', itemSettings['tooltip']); return menuWrapElement; - } - else{ - var menuWrapElement = $("",{href:'javascript:void(0)', class:'btn btn-default'}); + } + else { + var menuWrapElement = $("", { href: 'javascript:void(0)', class: 'btn btn-default' }); var menuElement = $(""); - if(itemSettings["icon"]) + if (itemSettings["icon"]) menuElement.addClass(itemSettings["icon"]); else menuElement.html(itemSettings["text"]); var action = "click"; } - if(itemSettings["custom"]){ - menuWrapElement.bind(action, (function(obj, params){ - return function(){ + if (itemSettings["custom"]) { + menuWrapElement.bind(action, (function (obj, params) { + return function () { methods.saveSelection.apply(obj); itemSettings["custom"].apply(obj, [$(this), params]); - } - })(this, itemSettings['params'])); + } + })(this, itemSettings['params'])); } - else{ + else { menuWrapElement.data("commandName", itemSettings["commandname"]); menuWrapElement.data("editor", $(this).data("editor")); - menuWrapElement.bind(action, function(){ methods.setTextFormat.apply(this) }); + menuWrapElement.bind(action, function () { methods.setTextFormat.apply(this) }); } menuWrapElement.attr('title', itemSettings['tooltip']); menuWrapElement.css('cursor', 'pointer'); menuWrapElement.append(menuElement); - if(returnElement) + if (returnElement) return menuWrapElement; $(this).data("menuBar").append(menuWrapElement); }, - setTextFormat: function(){ + setTextFormat: function () { //Function to run the text formatting options using execCommand. methods.setStyleWithCSS.apply(this); document.execCommand($(this).data("commandName"), false, $(this).data("value") || null); @@ -1484,10 +1596,10 @@ You should have received a copy of the GNU General Public License along with thi return false; }, - getSource: function(button, params){ + getSource: function (button, params) { //Function to show the html source code to the editor and toggle the text display. var flag = 0; - if(button.data('state')){ + if (button.data('state')) { flag = 1; button.data('state', null); } @@ -1496,19 +1608,19 @@ You should have received a copy of the GNU General Public License along with thi $(this).data("source-mode", !flag); var editor = $(this).data('editor'); var content; - if(flag==0){ //Convert text to HTML + if (flag == 0) { //Convert text to HTML content = document.createTextNode(editor.html()); editor.empty(); editor.attr('contenteditable', false); - preElement = $("",{ - contenteditable: true - }); - preElement.append(content); + preElement = $("", { + contenteditable: true + }); + preElement.append(content); editor.append(preElement); button.parent().siblings().hide(); button.siblings().hide(); } - else{ + else { var html = editor.children().first().text(); editor.html(html); editor.attr('contenteditable', true); @@ -1517,119 +1629,125 @@ You should have received a copy of the GNU General Public License along with thi } }, - countWords: function(node){ + countWords: function (node) { //Function to count the number of words recursively as the text grows in the editor. - var count = 0; - var textNodes = node.contents().filter(function() { - return (this.nodeType == 3); - }); - for(var index=0;index
',{ class:"alert alert-danger" } - ).append($('',{ - type:"button", - class:"close", - "data-dismiss":"alert", - html:"x" + var errorDiv = $('', { class: "alert alert-danger" } + ).append($('', { + type: "button", + class: "close", + "data-dismiss": "alert", + html: "x" })).append($('').html(message)); - errorDiv.appendTo($('#'+target)); - setTimeout(function() { $('.alert').alert('close'); }, 3000); + errorDiv.appendTo($('#' + target)); + setTimeout(function () { $('.alert').alert('close'); }, 3000); }, - - getText: function(){ + + getText: function () { //Function to get the source code. - if(!$(this).data("source-mode")) + if (!$(this).data("source-mode")) return $(this).data("editor").html(); else return $(this).data("editor").children().first().text(); }, - setText: function(text){ + setText: function (text) { //Function to set the source code - if(!$(this).data("source-mode")) + if (!$(this).data("source-mode")) $(this).data("editor").html(text); else $(this).data("editor").children().first().text(text); }, - setStyleWithCSS:function(){ - if(navigator.userAgent.match(/MSIE/i)){ //for IE10 + setStyleWithCSS: function () { + if (navigator.userAgent.match(/MSIE/i)) { //for IE10 try { - Editor.execCommand("styleWithCSS", 0, false); - } catch (e) { - try { - Editor.execCommand("useCSS", 0, true); - } catch (e) { - try { - Editor.execCommand('styleWithCSS', false, false); - } - catch (e) { - } - } - } + Editor.execCommand("styleWithCSS", 0, false); + } catch (e) { + try { + Editor.execCommand("useCSS", 0, true); + } catch (e) { + try { + Editor.execCommand('styleWithCSS', false, false); + } + catch (e) { + } + } + } } - else{ + else { document.execCommand("styleWithCSS", null, true); } - }, + }, } - $.fn.Editor = function( method ){ + $.fn.Editor = 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 ); + 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.Editor' ); - } - }; -})( jQuery ); + $.error('Method ' + method + ' does not exist on jQuery.Editor'); + } + }; + + $.fn.GetEditorTotalCharCount = function (method) { + return methods.countChars.apply(this, [$(this).data("editor")]); + }; + + +})(jQuery); diff --git a/myeditorjs.js b/myeditorjs.js new file mode 100644 index 0000000..7bc6925 --- /dev/null +++ b/myeditorjs.js @@ -0,0 +1,45 @@ +// JavaScript source code +var app = angular.module("app", []); +app.controller('ctrl', ['$scope', function ($scope) { + +}]); + +app.directive('myeditorjs', function () { + + return { + restrict: 'EA', + require: 'ngModel', + scope: { + ngModel: '=' + }, + + link: function (scope, element, attrs, ngModel) { + + + + element.Editor(); + + $('#Container_txtEditor').keyup(function () { + + + + ngModel.$setViewValue(element.Editor("getText")); + + if (!scope.$root != null && !scope.$root.$$phase) { + scope.$apply(); + } + + }); + + + scope.$watch('ngModel', function (value) { + + + element.Editor("setText", value); + + }) + + } + }; + +}); \ No newline at end of file