MINI MINI MANI MO
/**
* Roundcube editor js library
*
* This file is part of the Roundcube Webmail client
*
* @licstart The following is the entire license notice for the
* JavaScript code in this file.
*
* Copyright (c) The Roundcube Dev Team
*
* The JavaScript code in this page is free software: you can
* redistribute it and/or modify it under the terms of the GNU
* General Public License (GNU GPL) as published by the Free Software
* Foundation, either version 3 of the License, or (at your option)
* any later version. The code is distributed WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
*
* As additional permission under GNU GPL version 3 section 7, you
* may distribute non-source (e.g., minimized or compacted) forms of
* that code without the copy of the GNU GPL normally required by
* section 4, provided you include this license notice and a URL
* through which recipients can access the Corresponding Source.
*
* @licend The above is the entire license notice
* for the JavaScript code in this file.
*
* @author Eric Stadtherr <estadtherr@gmail.com>
* @author Aleksander Machniak <alec@alec.pl>
*/
function rcube_text_editor(e,t){var d=this,i=location.href.replace(/[?#].*$/,"").replace(/\/$/,""),n={selector:"#"+($("#"+t).is(".mce_editor")?t:"fake-editor-id"),cache_suffix:"s=5080200",theme:"silver",language:e.lang,content_css:rcmail.assets_path(e.content_css),content_style:e.content_style,menubar:!1,statusbar:!1,toolbar_drawer:"sliding",toolbar:"bold italic underline | alignleft aligncenter alignright alignjustify | fontselect fontsizeselect | forecolor backcolor",extended_valid_elements:"font[face|size|color|style],span[id|class|align|style]",fontsize_formats:"8pt 9pt 10pt 11pt 12pt 14pt 18pt 24pt 36pt",valid_children:"+body[style],+blockquote[style],+div[style]",relative_urls:!1,remove_script_host:!1,convert_urls:!1,image_description:!1,paste_webkit_style:"color font-size font-family",automatic_uploads:!1,paste_data_images:!0,browser_spellcheck:!0,contextmenu:"spellchecker",anchor_bottom:!1,anchor_top:!1,file_picker_types:"image media",file_picker_callback:function(e,t,i){d.file_picker_callback(e,t,i)}};this.spellcheck_observer=function(){},e.spellchecker&&(this.spellchecker=e.spellchecker,e.spellcheck_observer&&(this.spellchecker.spelling_state_observer=this.spellcheck_observer=e.spellcheck_observer)),tinymce.registered_request_token||(tinymce.registered_request_token=!0,tinymce.util.XHR.on("beforeSend",function(e){e.xhr.setRequestHeader("X-Roundcube-Request",rcmail.env.request_token),e.settings&&e.settings.data&&(e.settings.data=e.settings.data.replace(/^(method=[a-zA-Z]+&lang=)([^&]+)/,"$1"+rcmail.env.spell_lang))})),"identity"==e.mode?(n.toolbar+=" | charmap hr link unlink image code $extra",$.extend(n,{plugins:"autolink charmap code hr image link paste tabfocus",file_picker_types:"image"})):(n.toolbar+=" | bullist numlist outdent indent ltr rtl blockquote | link unlink table | $extra charmap image media | code searchreplace undo redo",$.extend(n,{plugins:"autolink charmap code directionality link lists image media nonbreaking paste table tabfocus searchreplace spellchecker",spellchecker_rpc_url:i+"/?_task=utils&_action=spell_html&_remote=1",spellchecker_language:rcmail.env.spell_lang,min_height:400})),$.each(e.extra_plugins||[],function(){n.plugins.indexOf(this)<0&&(n.plugins=n.plugins+" "+this)}),$.each(e.extra_buttons||[],function(){n.toolbar.indexOf(this)<0&&(n.toolbar=n.toolbar.replace("$extra","$extra "+this))}),$.each(e.disabled_plugins||[],function(){n.plugins=n.plugins.replace(this,"")}),$.each(e.disabled_buttons||[],function(){n.toolbar=n.toolbar.replace(this,"")}),n.toolbar=n.toolbar.replace("$extra","").replace(/\|\s+\|/g,"|"),window.rcmail_editor_settings&&$.extend(n,window.rcmail_editor_settings),n.setup=function(t){t.on("init",function(){d.init_callback(t)}),t.on("SpellcheckStart SpellcheckEnd",function(e){d.spellcheck_active="spellcheckstart"==e.type,d.spellcheck_observer()}),t.on("keypress",function(){rcmail.compose_type_activity++}),t.on("click",function(e){var t=$(e.target).closest("a");if(t.length&&e.shiftKey)return window.open(t.get(0).href,"_blank"),!1}),t.on("focus blur",function(e){$(t.getContainer()).toggleClass("focused")}),n.setup_callback&&n.setup_callback(t)},rcmail.triggerEvent("editor-init",{config:n,ref:d,id:t}),this.id=t,this.editor=null,tinymce.init(n),this.init_callback=function(e){if(this.editor=e,"compose"==rcmail.env.action){var t=$("#"+this.id),i=$("div.tox-toolbar__group",t.parent()).first().height();if(200<i||i>t.height())return setTimeout(function(){d.init_callback(e)},300);i=rcube_find_object("_from"),t=rcmail.env.compose_focus_elem;i&&"select-one"==i.type&&(rcmail.env.identities_initialized||rcmail.change_identity(i),t&&t.id!=this.id&&"BODY"!=t.nodeName&&(window.focus(),t.focus(),rcmail.env.compose_focus_elem=null))}rcmail.triggerEvent("editor-load",{config:n,ref:d}),d.tabindex(d.force_focus||t&&t.id==d.id),$(window).resize()},this.tabindex=function(e){var i,t,n;"mail"==rcmail.env.task&&this.editor&&(n=this.editor.getElement(),t=this.editor.getContentAreaContainer().childNodes[0],n&&t&&(t.tabIndex=n.tabIndex),0<n.tabIndex&&(i=null,t=[":prev",":next"],n=tinymce.DOM.select("*[tabindex="+n.tabIndex+"]:not(iframe)"),tinymce.each(n,function(e,t){if(e.id==d.id)return i=t,!1}),null!==i&&(n[i-1]&&n[i-1].id&&(t[0]=n[i-1].id),n[i+1]&&n[i+1].id&&(t[1]=n[i+1].id),this.editor.settings.tabfocus_elements=t.join(","))),bw.mz&&bw.vendver<25&&$(this.editor.getBody()).prop("contenteditable",!1).prop("contenteditable",!0)),e&&this.focus()},this.focus=function(){$(this.editor||"#"+this.id).focus(),this.force_focus=!1},this.toggle=function(e,t){var i,n,l,r,c="",s=$("#"+this.id),a=rcmail.env.identity?rcmail.env.signatures[rcmail.env.identity]:null,o=a&&a.text&&1<a.text.length;return this.spellcheck_stop(),e?(l=s.val(),o&&(l=(l=l.replace(/\r\n/,"\n")).replace(a.text.replace(/\r\n/,"\n"),c)),r=function(e){o&&(e=e.replace(c,'<div id="_rc_sig">'+a.html+"</div>")),d.force_focus=!0,s.val(e),tinymce.execCommand("mceAddEditor",!1,d.id)},n=t?(r(l),!0):rcmail.plain2html(l,r)):this.editor&&(o&&((i=this.editor.dom.get("_rc_sig"))&&(i=i.innerHTML),this.editor.dom.setHTML("_rc_sig",c)),l=this.editor.getContent(),r=function(e){tinymce.execCommand("mceRemoveEditor",!1,d.id),d.editor=null,o&&(e=e.replace(c,"\n"+a.text)),s.val(e).focus().trigger("input"),rcmail.set_caret_pos(s.get(0),0)},!(n=t?(r(s.val()),!0):rcmail.html2plain(l,r))&&i&&this.editor.dom.setHTML("_rc_sig",i)),n},this.spellcheck_start=function(){this.editor?(tinymce.execCommand("mceSpellCheck",!0),this.spellcheck_observer()):this.spellchecker&&this.spellchecker.spellCheck&&this.spellchecker.spellCheck()},this.spellcheck_stop=function(){var e=this.editor;e?e.plugins&&e.plugins.spellchecker&&this.spellcheck_active&&(e.execCommand("mceSpellCheck",!1),this.spellcheck_observer()):(e=this.spellchecker)&&e.state&&"ready"!=e.state&&"no_error_found"!=e.state&&$(e.spell_span).trigger("click")},this.spellcheck_state=function(){var e;return this.editor?this.spellcheck_active:(e=this.spellchecker)&&e.state?"ready"!=e.state&&"no_error_found"!=e.state:void 0},this.spellcheck_resume=function(e){var t=this.editor;t?t.plugins.spellchecker.markErrors(e):(t=this.spellchecker)&&(t.prepare(!1,!0),t.processData(e))},this.get_language=function(){return rcmail.env.spell_lang},this.set_language=function(e){var t=this.editor;t&&(t.settings.spellchecker_language=e),(t=this.spellchecker)&&t.setCurrentLanguage(e),rcmail.env.spell_lang=e},this.replace=function(e){var t,i,n,l=this.editor;if(!e)return!1;l?(l.getWin().focus(),i="object"==$.type(e)&&"html"in e?(e=e.html,"html"):("object"==$.type(e)&&(e=e.text||""),e=rcmail.quote_html(e).replace(/\r?\n/g,"<br/>"),"text"),l.selection.setContent(e,{format:i})):(l=rcube_find_object(this.id))&&(t=rcmail.get_input_selection(l),i=(n=l.value).substring(0,t.start),n=n.substring(t.end,n.length),"object"==$.type(e)&&(e=e.text||""),l.value=i+e+n,rcmail.set_caret_pos(l,t.start+e.length),l.focus())},this.set_content=function(e){this.editor?(this.editor.setContent(e),this.editor.getWin().focus()):(ed=rcube_find_object(this.id))&&$(ed).val(e).focus()},this.get_content=function(e){var t,i=this.editor,n="",l=!1,r={refresh:!0,selection:!1,nosig:!1,format:"html"};return(e=e?$.extend(r,e):r).refresh&&this.spellcheck_stop(),i?(n=e.selection?i.selection.getContent({format:e.format}):n)||(n=i.getContent({format:e.format}),l="text"==e.format):(i=rcube_find_object(this.id))&&((n=e.selection?rcmail.get_input_selection(i).text:n)||(n=i.value,l=!0)),n=l&&e.nosig&&0<(t=n.indexOf("-- \n"))?n.substring(0,t):n},this.change_signature=function(e,t){var i,n,l,r,c,s=-1,a=$("#"+this.id),o=a.val(),d=rcmail.env.identity;this.editor?t&&rcmail.env.signatures?((c=this.editor.dom.get("_rc_sig"))||(l=this.editor.getBody(),c=$('<div id="_rc_sig"></div>').get(0),rcmail.env.top_posting&&!rcmail.env.sig_below&&rcmail.env.compose_mode&&(1<l.childNodes.length||$(l).text())?(this.editor.getWin().focus(),r=this.editor.selection.getNode(),$(c).insertBefore("BODY"==r.nodeName?l.firstChild:r.nextSibling),$("<p>").append($("<br>")).insertBefore(c)):(l.appendChild(c),i=rcmail.env.top_posting&&rcmail.env.compose_mode?l.firstChild:$(c).prev())),c.innerHTML=rcmail.env.signatures[e]?rcmail.env.signatures[e].html:""):rcmail.env.top_posting||(i=$(this.editor.getBody()).children().last()):(t&&d&&rcmail.env.signatures&&rcmail.env.signatures[d]&&(d=(d=rcmail.env.signatures[d].text).replace(/\r\n/g,"\n"),0<=(s=rcmail.env.top_posting?o.indexOf(d):o.lastIndexOf(d))&&(o=o.substring(0,s)+o.substring(s+d.length,o.length))),t&&rcmail.env.signatures&&rcmail.env.signatures[e]?(d=(d=rcmail.env.signatures[e].text).replace(/\r\n/g,"\n"),0<=s?(o=o.substring(0,s)+d+o.substring(s,o.length),n=s-1):o&&rcmail.env.compose_mode?rcmail.env.top_posting&&!rcmail.env.sig_below?n=(pos=rcmail.get_caret_pos(a.get(0)))?(o=o.substring(0,pos)+"\n"+d+"\n\n"+o.substring(pos,o.length),pos):(o="\n\n"+d+"\n\n"+o.replace(/^[\r\n]+/,""),0):(o=o.replace(/[\r\n]+$/,""),n=!rcmail.env.top_posting&&o.length?o.length+1:0,o+="\n\n"+d):(n=o.length,o+="\n\n"+d)):n=rcmail.env.top_posting?0:o.length,a.val(o),rcmail.set_caret_pos(a.get(0),n)),this.editor&&i&&i.length&&(this.editor.selection.setCursorLocation(i.get(0)),this.editor.getWin().scroll(0,i.offset().top))},this.save=function(){this.editor&&this.editor.save()},this.focus=function(){(this.editor||rcube_find_object(this.id)).focus()},this.file_picker_callback=function(e,t,i){var n,l,r,c,s=[],a=i.filetype,i=$(".upload-form").clone();for(n in this.editor.windowManager.open({title:rcmail.get_label("select"+a),body:{type:"panel",items:[{type:"htmlpanel",html:'<div id="image-selector" class="image-selector file-upload"><ul id="image-selector-list" class="attachmentslist"></ul></div>'}]},buttons:[{type:"cancel",text:rcmail.get_label("close"),onclick:function(){d.file_picker_close()}}]}),rcmail.env.file_picker_callback=e,rcmail.env.file_picker_type=a,e=$("#image-selector"),i.length?i.find("button,a.button").slice(1).remove():i=this.file_upload_form(rcmail.gui_objects.uploadform),(l=e.prepend(i).find("button,a.button").text(rcmail.get_label("add"+a)).focus()).is(".btn")||l.addClass("tox-button"),rcmail.env.attachments)(r=d.file_picker_entry(n,rcmail.env.attachments[n]))&&s.push(r);c=e.parents(".tox-dialog").find("button").last(),s=$("#image-selector-list").append(s).on("keydown","li",function(e){if(9==e.which)return rcube_event.get_modifier(e)==SHIFT_KEY?$(this).prev().focus().length||l.focus():$(this).next().focus().length||c.focus(),!1}),l.keydown(function(e){return 9==e.which?(rcube_event.get_modifier(e)!=SHIFT_KEY&&s.find("li").first().focus().length||c.focus(),!1):void(13==e.which&&this.click())}),c.keydown(function(e){if(9==e.which)return rcube_event.get_modifier(e)==SHIFT_KEY&&s.find("li").last().focus().length||l.focus(),!1}),window.FormData&&(rcmail.env.filedrop||(rcmail.env.filedrop={}),rcmail.gui_objects.filedrop&&(rcmail.env.old_file_drop=rcmail.gui_objects.filedrop),rcmail.gui_objects.filedrop=$("#image-selector"),rcmail.gui_objects.filedrop.addClass("droptarget").on("dragover dragleave",function(e){e.preventDefault(),e.stopPropagation(),$(this)["dragover"==e.type?"addClass":"removeClass"]("hover")}).get(0).addEventListener("drop",function(e){return rcmail.file_dropped(e)},!1)),rcmail.env["file_dialog_event_"+a]||(rcmail.env["file_dialog_event+"+a]=!0,rcmail.addEventListener("fileuploaded",function(e){(e=d.file_picker_entry(e.name,e.attachment))&&(s.prepend(e),e.focus())}))},this.file_picker_close=function(e){this.editor.windowManager.close(),e&&rcmail.env.file_picker_callback(e),rcmail.env.old_file_drop&&(rcmail.gui_objects.filedrop=rcmail.env.old_file_drop)},this.file_picker_entry=function(e,t){if(t.complete&&t.mimetype){var i,n;switch(rcmail.file_upload_id&&rcmail.set_busy(!1,null,rcmail.file_upload_id),rcmail.env.file_picker_type){case"image":i=/^image\//i;break;case"media":i=/^video\//i,n=rcmail.assets_path("program/resources/tinymce/video.png");break;default:return}if(i.test(t.mimetype)){var l=rcmail.env.comm_path+"&_from="+rcmail.env.action+(rcmail.env.compose_id?"&_id="+rcmail.env.compose_id+"&_action=display-attachment":"&_action=upload-display")+"&_file="+e,e=$("<img>").attr({title:t.name,src:n||l+"&_thumbnail=1"});return $("<li>").attr({tabindex:0}).data("url",l).append($('<span class="img">').append(e)).append($('<span class="name">').text(t.name)).click(function(){d.file_picker_close($(this).data("url"))}).keydown(function(e){13==e.which&&d.file_picker_close($(this).data("url"))})}}},this.file_upload_form=function(e){var t=e?$(e).find(".hint").text():"",i=$('<form id="imageuploadform">').attr({method:"post",enctype:"multipart/form-data"});return file=$("<input>").attr({name:"_file[]",type:"file",multiple:!0,style:"opacity:0;height:1px;width:1px"}).change(function(){rcmail.upload_file(i,"upload")}),wrapper=$('<div class="upload-form">').append($("<button>").attr({class:"btn btn-secondary attach",href:"#",onclick:"rcmail.upload_input('imageuploadform')"})),t&&wrapper.prepend($('<div class="hint">').text(t)),e&&(file.attr("name",$('input[type="file"]',e).attr("name")),i.attr("action",$(e).attr("action"))),i.append(file).append($("<input>").attr({type:"hidden",name:"_token",value:rcmail.env.request_token})),wrapper.append(i)}}
OHA YOOOO