Your IP : 18.226.150.206


Current Path : /usr/share/roundcubemail/program/js/
Upload File :
Current File : //usr/share/roundcubemail/program/js/editor.min.js

/**
 * 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 o=this,l=$("#"+t),i=location.href.replace(/[?#].*$/,"").replace(/\/$/,""),r={selector:"#"+(l.is(".mce_editor")?t:"fake-editor-id"),readonly:l.is("[readonly],[disabled]"),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_styles:"color font-size font-family font-weight background-color",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){o.file_picker_callback(e,t,i)},min_height:"identity"==e.mode?100:400,deprecation_warnings:!1};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||"response"==e.mode?(r.toolbar+=" | charmap hr link unlink image code $extra",$.extend(r,{plugins:"autolink charmap code hr image link paste tabfocus",file_picker_types:"image"})):(r.toolbar+=" | bullist numlist outdent indent ltr rtl blockquote | link unlink table | $extra charmap image media | code searchreplace undo redo",$.extend(r,{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})),$.each(e.extra_plugins||[],function(){r.plugins.indexOf(this)<0&&(r.plugins=r.plugins+" "+this)}),$.each(e.extra_buttons||[],function(){r.toolbar.indexOf(this)<0&&(r.toolbar=r.toolbar.replace("$extra","$extra "+this))}),$.each(e.disabled_plugins||[],function(){r.plugins=r.plugins.replace(this,"")}),$.each(e.disabled_buttons||[],function(){r.toolbar=r.toolbar.replace(this,"")}),r.toolbar=r.toolbar.replace("$extra","").replace(/\|\s+\|/g,"|"),window.rcmail_editor_settings&&$.extend(r,window.rcmail_editor_settings),r.setup=function(t){t.on("init",function(){o.init_callback(t)}),t.on("SpellcheckStart SpellcheckEnd",function(e){o.spellcheck_active="spellcheckstart"==e.type,o.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")}),r.setup_callback&&r.setup_callback(t)},rcmail.triggerEvent("editor-init",{config:r,ref:o,id:t}),this.id=t,this.editor=null,tinymce.init(r),this.init_callback=function(e){this.editor=e;var t=l.data("html-editor-content-element");if(t&&(i=$("#"+t).val())&&(e.setContent(i),$("#"+t).remove()),"compose"==rcmail.env.action){var i=$("#"+this.id),t=$("div.tox-toolbar__group",i.parent()).first().height();if(200<t||t>i.height())return setTimeout(function(){o.init_callback(e)},300);var t=rcube_find_object("_from"),n=rcmail.env.compose_focus_elem;t&&"select-one"==t.type&&(rcmail.env.identities_initialized||rcmail.change_identity(t),n)&&n.id!=this.id&&"BODY"!=n.nodeName&&(window.focus(),n.focus(),rcmail.env.compose_focus_elem=null)}rcmail.triggerEvent("editor-load",{config:r,ref:this}),this.tabindex(this.force_focus||n&&n.id==this.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==o.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.is_html=function(){return!!this.editor},this.toggle=function(e,t){var i,n,l,r="",s=$("#"+this.id),c=rcmail.env.identity?rcmail.env.signatures[rcmail.env.identity]:null,a=c&&c.text&&1<c.text.length;return this.spellcheck_stop(),e?(l=s.val(),a&&(l=(l=l.replace(/\r\n/,"\n")).replace(c.text.replace(/\r\n/,"\n"),r)),e=function(e){a&&(e=e.replace(r,'<div id="_rc_sig">'+c.html+"</div>")),o.force_focus=!0,s.val(e),tinymce.execCommand("mceAddEditor",!1,o.id)},n=t?(e(l),!0):rcmail.plain2html(l,e)):!this.editor||(a&&(i=(i=this.editor.dom.get("_rc_sig"))&&i.innerHTML,this.editor.dom.setHTML("_rc_sig",r)),l=this.editor.getContent(),e=function(e){tinymce.execCommand("mceRemoveEditor",!1,o.id),o.editor=null,a&&(e=e.replace(r,"\n"+c.text)),s.val(e).focus().trigger("input"),rcmail.set_caret_pos(s.get(0),0)},n=t?(e(s.val()),!0):rcmail.html2plain(l,e))||!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(),t="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:t})):(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=this.editor,i="",n=!1,l={refresh:!0,selection:!1,nosig:!1,format:"html"};return(e=e?$.extend(l,e):l).refresh&&this.spellcheck_stop(),t?(i=e.selection?t.selection.getContent({format:e.format}):i)||(i=t.getContent({format:e.format}),n="text"==e.format):(t=rcube_find_object(this.id))&&!(i=e.selection?rcmail.get_input_selection(t).text:i)&&(i=t.value,n=!0),i=n&&e.nosig&&0<(l=i.indexOf("-- \n"))?i.substring(0,l):i},this.change_signature=function(e,t){var i,n,l,r,s,c=-1,a=$("#"+this.id),o=a.val(),d=rcmail.env.identity;this.editor?t&&rcmail.env.signatures?((s=this.editor.dom.get("_rc_sig"))||(l=this.editor.getBody(),s=$('<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(),$(s).insertBefore("BODY"==r.nodeName?l.firstChild:r.nextSibling),$("<p>").append($("<br>")).insertBefore(s)):(l.appendChild(s),i=rcmail.env.top_posting&&rcmail.env.compose_mode?l.firstChild:$(s).prev())),s.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<=(c=rcmail.env.top_posting?o.indexOf(d):o.lastIndexOf(d)))&&(o=o.substring(0,c)+o.substring(c+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<=c?(o=o.substring(0,c)+d+o.substring(c,o.length),n=c-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,s,c=[],i=i.filetype,a=$(".upload-form").clone();for(n in this.editor.windowManager.open({title:rcmail.get_label("select"+i),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(){o.file_picker_close()}}]}),rcmail.env.file_picker_callback=e,rcmail.env.file_picker_type=i,e=$("#image-selector"),a.length?a.find("button,a.button").slice(1).remove():a=this.file_upload_form(rcmail.gui_objects.uploadform),(l=e.prepend(a).find("button,a.button").text(rcmail.get_label("add"+i)).focus()).is(".btn")||l.addClass("tox-button"),rcmail.env.attachments)(r=o.file_picker_entry(n,rcmail.env.attachments[n]))&&c.push(r);s=e.parents(".tox-dialog").find("button").last(),c=$("#image-selector-list").append(c).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||s.focus(),!1}),l.keydown(function(e){if(9==e.which)return rcube_event.get_modifier(e)!=SHIFT_KEY&&c.find("li").first().focus().length||s.focus(),!1;13==e.which&&this.click()}),s.keydown(function(e){if(9==e.which)return rcube_event.get_modifier(e)==SHIFT_KEY&&c.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_"+i]||(rcmail.env["file_dialog_event+"+i]=!0,rcmail.addEventListener("fileuploaded",function(e){(e=o.file_picker_entry(e.name,e.attachment))&&(c.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,l;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}return i.test(t.mimetype)?(e=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,l=$("<img>").attr({title:t.name,src:n||e+"&_thumbnail=1"}),$("<li>").attr({tabindex:0}).data("url",e).append($('<span class="img">').append(l)).append($('<span class="name">').text(t.name)).click(function(){o.file_picker_close($(this).data("url"))}).keydown(function(e){13==e.which&&o.file_picker_close($(this).data("url"))})):void 0}},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)}}