From 420afb81de19abcf6fa48072d08cf178587bcdcd Mon Sep 17 00:00:00 2001 From: Andrew Nacin Date: Mon, 3 Mar 2014 15:54:21 +0000 Subject: [PATCH] TinyMCE: Propagate the dragover event outside the editor so drag-and-drop uploads can catch it. props kovshenin. see #19845. Built from https://develop.svn.wordpress.org/trunk@27372 git-svn-id: http://core.svn.wordpress.org/trunk@27221 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- .../js/tinymce/plugins/wordpress/plugin.js | 7 +++++++ .../tinymce/plugins/wordpress/plugin.min.js | 2 +- wp-includes/js/tinymce/wp-tinymce.js.gz | Bin 120178 -> 120207 bytes 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/wp-includes/js/tinymce/plugins/wordpress/plugin.js b/wp-includes/js/tinymce/plugins/wordpress/plugin.js index 359a46964e..15c1abdb65 100644 --- a/wp-includes/js/tinymce/plugins/wordpress/plugin.js +++ b/wp-includes/js/tinymce/plugins/wordpress/plugin.js @@ -443,6 +443,13 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { editor.dom.bind( editor.getBody(), 'dragstart', function() { _hideButtons(); }); + + editor.dom.bind( editor.getWin(), 'dragover', function(e) { + if ( typeof window.jQuery !== 'undefined' ) { + // Propagate the event to its container for the parent window to catch. + jQuery( editor.getContainer() ).trigger(e); + } + }); }); editor.on( 'BeforeExecCommand', function() { diff --git a/wp-includes/js/tinymce/plugins/wordpress/plugin.min.js b/wp-includes/js/tinymce/plugins/wordpress/plugin.min.js index 8ccaa448d9..b9e0195059 100644 --- a/wp-includes/js/tinymce/plugins/wordpress/plugin.min.js +++ b/wp-includes/js/tinymce/plugins/wordpress/plugin.min.js @@ -1 +1 @@ -tinymce.PluginManager.add("wordpress",function(a){function b(b){var c,d,e,f=0;d="hide"===b,a.theme.panel&&(e=a.theme.panel.find(".toolbar:not(.menubar)")),!e||e.length<2||"hide"===b&&!e[1].visible()||(!b&&e[1].visible()&&(b="hide"),tinymce.each(e,function(a,c){c>0&&("hide"===b?(a.hide(),f+=30):(a.show(),f-=30))}),f&&!d&&(c=a.getContentAreaContainer().firstChild,j.setStyle(c,"height",c.clientHeight+f),"hide"===b?(setUserSetting("hidetb","1"),g&&g.active(!1)):(setUserSetting("hidetb","0"),g&&g.active(!0))))}function c(a){return a.replace(/\[embed\]([\s\S]+?)\[\/embed\][\s\u00a0]*/g,function(a,b){return''+b+''})}function d(a){return a.replace(/]+>/g,function(a){if(-1!==a.indexOf('class="wp-oembed')){var b=a.match(/alt="([^\"]+)"/);b[1]&&(a="[embed]"+b[1]+"[/embed]")}return a})}function e(b,c){var d,e,f,g,h;f=a.dom.getViewPort(a.getWin()),d=j.getPos(a.getContentAreaContainer()),e=a.dom.getPos(b),g=Math.max(e.x-f.x,0)+d.x,h=Math.max(e.y-f.y,0)+d.y,j.setStyles(c,{top:h+5+"px",left:g+5+"px",display:"block"})}function f(){j.hide(j.select("#wp_editbtns, #wp_gallerybtns"))}var g,h,i,j=tinymce.DOM,k=0;return a.addButton("wp_adv",{tooltip:"Toolbar Toggle",cmd:"WP_Adv",onPostRender:function(){g=this}}),a.on("PostRender",function(){"1"===getUserSetting("hidetb","1")&&b("hide")}),a.addCommand("WP_Adv",function(){b()}),a.on("focus",function(){window.wpActiveEditor=a.id}),a.on("BeforeSetContent",function(a){a.content&&(-1!==a.content.indexOf("/g,function(a,b){return''})),-1!==a.content.indexOf("")&&(a.content=a.content.replace(//g,'')))}),a.on("PostProcess",function(a){a.get&&(a.content=a.content.replace(/]+>/g,function(a){var b,c="";return-1!==a.indexOf("wp-more-tag")&&(-1!==a.indexOf("mce-wp-more")?((b=a.match(/data-wp-more="([^"]+)"/))&&(c=b[1]),a=""):-1!==a.indexOf("mce-wp-nextpage")&&(a="")),a}))}),a.on("ResolveName",function(b){var c=a.dom,d=b.target;"IMG"===d.nodeName&&c.hasClass(d,"wp-more-tag")&&(c.hasClass(d,"mce-wp-more")?b.name="more":c.hasClass(d,"mce-wp-nextpage")&&(b.name="nextpage"))}),a.on("PreProcess",function(b){var c;b.save&&(c=a.dom.select("img.wp-more-tag",b.node),c.length&&tinymce.each(c,function(b){var c,d=b.parentNode;"P"===d.nodeName&&d.childNodes.length>1&&(c=a.dom.create("p"),d.parentNode.insertBefore(c,d),c.appendChild(b))}))}),a.addCommand("WP_More",function(b){var c,d,e,f,g,h="wp-more-tag",i=tinymce.Env.ie?"":'
',j=a.dom,k=a.selection.getNode();return b=b||"more",h+=" mce-wp-"+b,e="more"===b?"More...":"Next Page",d='',"BODY"===k.nodeName?void a.insertContent("

"+d+"

"):(c=j.getParent(k,function(a){return a.parentNode&&"BODY"===a.parentNode.nodeName?!0:!1},a.getBody()),void(c&&(f=j.create("p",null,d),j.insertAfter(f,c),(g=f.nextSibling)||(g=j.create("p",null,i),j.insertAfter(g,f)),a.nodeChanged(),a.selection.setCursorLocation(g,0))))}),a.addCommand("WP_Page",function(){a.execCommand("WP_More","nextpage")}),a.addCommand("WP_Help",function(){a.windowManager.open({url:tinymce.baseURL+"/wp-mce-help.php",width:450,height:420,inline:1})}),a.addCommand("WP_Medialib",function(){"undefined"!=typeof wp&&wp.media&&wp.media.editor&&wp.media.editor.open(a.id)}),a.addButton("wp_more",{tooltip:"Insert Read More tag",onclick:function(){a.execCommand("WP_More","more")}}),a.addButton("wp_page",{tooltip:"Page break",onclick:function(){a.execCommand("WP_More","nextpage")}}),a.addButton("wp_help",{tooltip:"Help",cmd:"WP_Help"}),"undefined"!=typeof wp&&wp.media&&wp.media.editor&&a.addMenuItem("add_media",{text:"Add Media",context:"insert",cmd:"WP_Medialib"}),a.addMenuItem("wp_more",{text:"Insert Read More tag",context:"insert",onclick:function(){a.execCommand("WP_More","more")}}),a.addMenuItem("wp_page",{text:"Page break",context:"insert",onclick:function(){a.execCommand("WP_More","nextpage")}}),a.on("BeforeExecCommand",function(b){!tinymce.Env.webkit||"InsertUnorderedList"!==b.command&&"InsertOrderedList"!==b.command||(i||(i=a.dom.create("style",{type:"text/css"},"#tinymce,#tinymce span,#tinymce li,#tinymce li>span,#tinymce p,#tinymce p>span{font:medium sans-serif;color:#000;line-height:normal;}")),a.getDoc().head.appendChild(i))}),a.on("ExecCommand",function(b){tinymce.Env.webkit&&i&&("InsertUnorderedList"===b.command||"InsertOrderedList"===b.command)&&a.dom.remove(i)}),a.on("init",function(){var b,c,d=tinymce.Env,e=0,f=["mceContentBody"],g=a.getDoc();"rtl"===a.getParam("directionality")&&f.push("rtl"),d.ie&&(9===parseInt(d.ie,10)?f.push("ie9"):8===parseInt(d.ie,10)?f.push("ie8"):d.ie<8&&f.push("ie7")),f.push("wp-editor"),tinymce.each(f,function(b){b&&a.dom.addClass(g.body,b)}),a.on("BeforeSetContent",function(a){a.content&&(a.content=a.content.replace(/

\s*<(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre|address)( [^>]*)?>/gi,"<$1$2>"),a.content=a.content.replace(/<\/(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre|address)>\s*<\/p>/gi,""))}),"undefined"!=typeof window.jQuery&&window.jQuery(document).triggerHandler("tinymce-editor-init",[a]),"ontouchstart"in window||a.dom.bind(g,"onwheel"in g?"wheel":"mousewheel",function(f){var h,i,j=g.documentElement;a.settings.wp_fullscreen||("function"!=typeof g.hasFocus||g.hasFocus())&&("undefined"!=typeof f.deltaY?(h=f.deltaY,"undefined"!=typeof f.deltaMode&&f.deltaMode===f.DOM_DELTA_LINE&&(h*=20)):h=-f.wheelDelta,d.webkit?g.body.scrollTop+=h:j.scrollTop+=h,i=j.scrollTop||g.body.scrollTop,b===i?(e+=h,window.clearTimeout(c),c=window.setTimeout(function(){e=0},1e3)):e=0,b=i,e>1e3||-1e3>e||f.preventDefault())})}),"undefined"!=typeof window.jQuery&&a.on("keyup",function(b){var c=b.keyCode||b.charCode;c!==k&&((13===c||8===k||46===k)&&window.jQuery(document).triggerHandler("wpcountwords",[a.getContent({format:"raw"})]),k=c)}),a.on("SaveContent",function(b){return a.isHidden()?void(b.content=b.element.value):(b.content=b.content.replace(/

(
|\u00a0|\uFEFF)?<\/p>/g,"

 

"),void(a.getParam("wpautop",!0)&&"undefined"!=typeof switchEditors&&(b.content=switchEditors.pre_wpautop(b.content))))}),a.on("preInit",function(){a.schema.addValidElements("@[id|accesskey|class|dir|lang|style|tabindex|title|contenteditable|draggable|dropzone|hidden|spellcheck|translate],i,b")}),h="alt+shift",a.addShortcut(h+"+c","","JustifyCenter"),a.addShortcut(h+"+r","","JustifyRight"),a.addShortcut(h+"+l","","JustifyLeft"),a.addShortcut(h+"+j","","JustifyFull"),a.addShortcut(h+"+q","","mceBlockQuote"),a.addShortcut(h+"+u","","InsertUnorderedList"),a.addShortcut(h+"+o","","InsertOrderedList"),a.addShortcut(h+"+n","","mceSpellCheck"),a.addShortcut(h+"+a","","WP_Link"),a.addShortcut(h+"+s","","unlink"),a.addShortcut(h+"+m","","WP_Medialib"),a.addShortcut(h+"+z","","WP_Adv"),a.addShortcut(h+"+t","","WP_More"),a.addShortcut(h+"+d","","Strikethrough"),a.addShortcut(h+"+h","","WP_Help"),a.addShortcut(h+"+p","","WP_Page"),a.addShortcut("ctrl+s","",function(){"undefined"!=typeof wp&&wp.autosave&&wp.autosave.server.triggerSave()}),a.on("init",function(){a.dom.bind(a.getWin(),"scroll",function(){f()}),a.dom.bind(a.getBody(),"dragstart",function(){f()})}),a.on("BeforeExecCommand",function(){f()}),a.on("SaveContent",function(){f()}),a.on("MouseDown",function(a){"IMG"!==a.target.nodeName&&f()}),a.on("keydown",function(a){(a.which===tinymce.util.VK.DELETE||a.which===tinymce.util.VK.BACKSPACE)&&f()}),{_showButtons:e,_hideButtons:f,_setEmbed:c,_getEmbed:d}}); \ No newline at end of file +tinymce.PluginManager.add("wordpress",function(a){function b(b){var c,d,e,f=0;d="hide"===b,a.theme.panel&&(e=a.theme.panel.find(".toolbar:not(.menubar)")),!e||e.length<2||"hide"===b&&!e[1].visible()||(!b&&e[1].visible()&&(b="hide"),tinymce.each(e,function(a,c){c>0&&("hide"===b?(a.hide(),f+=30):(a.show(),f-=30))}),f&&!d&&(c=a.getContentAreaContainer().firstChild,j.setStyle(c,"height",c.clientHeight+f),"hide"===b?(setUserSetting("hidetb","1"),g&&g.active(!1)):(setUserSetting("hidetb","0"),g&&g.active(!0))))}function c(a){return a.replace(/\[embed\]([\s\S]+?)\[\/embed\][\s\u00a0]*/g,function(a,b){return''+b+''})}function d(a){return a.replace(/]+>/g,function(a){if(-1!==a.indexOf('class="wp-oembed')){var b=a.match(/alt="([^\"]+)"/);b[1]&&(a="[embed]"+b[1]+"[/embed]")}return a})}function e(b,c){var d,e,f,g,h;f=a.dom.getViewPort(a.getWin()),d=j.getPos(a.getContentAreaContainer()),e=a.dom.getPos(b),g=Math.max(e.x-f.x,0)+d.x,h=Math.max(e.y-f.y,0)+d.y,j.setStyles(c,{top:h+5+"px",left:g+5+"px",display:"block"})}function f(){j.hide(j.select("#wp_editbtns, #wp_gallerybtns"))}var g,h,i,j=tinymce.DOM,k=0;return a.addButton("wp_adv",{tooltip:"Toolbar Toggle",cmd:"WP_Adv",onPostRender:function(){g=this}}),a.on("PostRender",function(){"1"===getUserSetting("hidetb","1")&&b("hide")}),a.addCommand("WP_Adv",function(){b()}),a.on("focus",function(){window.wpActiveEditor=a.id}),a.on("BeforeSetContent",function(a){a.content&&(-1!==a.content.indexOf("/g,function(a,b){return''})),-1!==a.content.indexOf("")&&(a.content=a.content.replace(//g,'')))}),a.on("PostProcess",function(a){a.get&&(a.content=a.content.replace(/]+>/g,function(a){var b,c="";return-1!==a.indexOf("wp-more-tag")&&(-1!==a.indexOf("mce-wp-more")?((b=a.match(/data-wp-more="([^"]+)"/))&&(c=b[1]),a=""):-1!==a.indexOf("mce-wp-nextpage")&&(a="")),a}))}),a.on("ResolveName",function(b){var c=a.dom,d=b.target;"IMG"===d.nodeName&&c.hasClass(d,"wp-more-tag")&&(c.hasClass(d,"mce-wp-more")?b.name="more":c.hasClass(d,"mce-wp-nextpage")&&(b.name="nextpage"))}),a.on("PreProcess",function(b){var c;b.save&&(c=a.dom.select("img.wp-more-tag",b.node),c.length&&tinymce.each(c,function(b){var c,d=b.parentNode;"P"===d.nodeName&&d.childNodes.length>1&&(c=a.dom.create("p"),d.parentNode.insertBefore(c,d),c.appendChild(b))}))}),a.addCommand("WP_More",function(b){var c,d,e,f,g,h="wp-more-tag",i=tinymce.Env.ie?"":'
',j=a.dom,k=a.selection.getNode();return b=b||"more",h+=" mce-wp-"+b,e="more"===b?"More...":"Next Page",d='',"BODY"===k.nodeName?void a.insertContent("

"+d+"

"):(c=j.getParent(k,function(a){return a.parentNode&&"BODY"===a.parentNode.nodeName?!0:!1},a.getBody()),void(c&&(f=j.create("p",null,d),j.insertAfter(f,c),(g=f.nextSibling)||(g=j.create("p",null,i),j.insertAfter(g,f)),a.nodeChanged(),a.selection.setCursorLocation(g,0))))}),a.addCommand("WP_Page",function(){a.execCommand("WP_More","nextpage")}),a.addCommand("WP_Help",function(){a.windowManager.open({url:tinymce.baseURL+"/wp-mce-help.php",width:450,height:420,inline:1})}),a.addCommand("WP_Medialib",function(){"undefined"!=typeof wp&&wp.media&&wp.media.editor&&wp.media.editor.open(a.id)}),a.addButton("wp_more",{tooltip:"Insert Read More tag",onclick:function(){a.execCommand("WP_More","more")}}),a.addButton("wp_page",{tooltip:"Page break",onclick:function(){a.execCommand("WP_More","nextpage")}}),a.addButton("wp_help",{tooltip:"Help",cmd:"WP_Help"}),"undefined"!=typeof wp&&wp.media&&wp.media.editor&&a.addMenuItem("add_media",{text:"Add Media",context:"insert",cmd:"WP_Medialib"}),a.addMenuItem("wp_more",{text:"Insert Read More tag",context:"insert",onclick:function(){a.execCommand("WP_More","more")}}),a.addMenuItem("wp_page",{text:"Page break",context:"insert",onclick:function(){a.execCommand("WP_More","nextpage")}}),a.on("BeforeExecCommand",function(b){!tinymce.Env.webkit||"InsertUnorderedList"!==b.command&&"InsertOrderedList"!==b.command||(i||(i=a.dom.create("style",{type:"text/css"},"#tinymce,#tinymce span,#tinymce li,#tinymce li>span,#tinymce p,#tinymce p>span{font:medium sans-serif;color:#000;line-height:normal;}")),a.getDoc().head.appendChild(i))}),a.on("ExecCommand",function(b){tinymce.Env.webkit&&i&&("InsertUnorderedList"===b.command||"InsertOrderedList"===b.command)&&a.dom.remove(i)}),a.on("init",function(){var b,c,d=tinymce.Env,e=0,f=["mceContentBody"],g=a.getDoc();"rtl"===a.getParam("directionality")&&f.push("rtl"),d.ie&&(9===parseInt(d.ie,10)?f.push("ie9"):8===parseInt(d.ie,10)?f.push("ie8"):d.ie<8&&f.push("ie7")),f.push("wp-editor"),tinymce.each(f,function(b){b&&a.dom.addClass(g.body,b)}),a.on("BeforeSetContent",function(a){a.content&&(a.content=a.content.replace(/

\s*<(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre|address)( [^>]*)?>/gi,"<$1$2>"),a.content=a.content.replace(/<\/(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre|address)>\s*<\/p>/gi,""))}),"undefined"!=typeof window.jQuery&&window.jQuery(document).triggerHandler("tinymce-editor-init",[a]),"ontouchstart"in window||a.dom.bind(g,"onwheel"in g?"wheel":"mousewheel",function(f){var h,i,j=g.documentElement;a.settings.wp_fullscreen||("function"!=typeof g.hasFocus||g.hasFocus())&&("undefined"!=typeof f.deltaY?(h=f.deltaY,"undefined"!=typeof f.deltaMode&&f.deltaMode===f.DOM_DELTA_LINE&&(h*=20)):h=-f.wheelDelta,d.webkit?g.body.scrollTop+=h:j.scrollTop+=h,i=j.scrollTop||g.body.scrollTop,b===i?(e+=h,window.clearTimeout(c),c=window.setTimeout(function(){e=0},1e3)):e=0,b=i,e>1e3||-1e3>e||f.preventDefault())})}),"undefined"!=typeof window.jQuery&&a.on("keyup",function(b){var c=b.keyCode||b.charCode;c!==k&&((13===c||8===k||46===k)&&window.jQuery(document).triggerHandler("wpcountwords",[a.getContent({format:"raw"})]),k=c)}),a.on("SaveContent",function(b){return a.isHidden()?void(b.content=b.element.value):(b.content=b.content.replace(/

(
|\u00a0|\uFEFF)?<\/p>/g,"

 

"),void(a.getParam("wpautop",!0)&&"undefined"!=typeof switchEditors&&(b.content=switchEditors.pre_wpautop(b.content))))}),a.on("preInit",function(){a.schema.addValidElements("@[id|accesskey|class|dir|lang|style|tabindex|title|contenteditable|draggable|dropzone|hidden|spellcheck|translate],i,b")}),h="alt+shift",a.addShortcut(h+"+c","","JustifyCenter"),a.addShortcut(h+"+r","","JustifyRight"),a.addShortcut(h+"+l","","JustifyLeft"),a.addShortcut(h+"+j","","JustifyFull"),a.addShortcut(h+"+q","","mceBlockQuote"),a.addShortcut(h+"+u","","InsertUnorderedList"),a.addShortcut(h+"+o","","InsertOrderedList"),a.addShortcut(h+"+n","","mceSpellCheck"),a.addShortcut(h+"+a","","WP_Link"),a.addShortcut(h+"+s","","unlink"),a.addShortcut(h+"+m","","WP_Medialib"),a.addShortcut(h+"+z","","WP_Adv"),a.addShortcut(h+"+t","","WP_More"),a.addShortcut(h+"+d","","Strikethrough"),a.addShortcut(h+"+h","","WP_Help"),a.addShortcut(h+"+p","","WP_Page"),a.addShortcut("ctrl+s","",function(){"undefined"!=typeof wp&&wp.autosave&&wp.autosave.server.triggerSave()}),a.on("init",function(){a.dom.bind(a.getWin(),"scroll",function(){f()}),a.dom.bind(a.getBody(),"dragstart",function(){f()}),a.dom.bind(a.getWin(),"dragover",function(b){"undefined"!=typeof window.jQuery&&jQuery(a.getContainer()).trigger(b)})}),a.on("BeforeExecCommand",function(){f()}),a.on("SaveContent",function(){f()}),a.on("MouseDown",function(a){"IMG"!==a.target.nodeName&&f()}),a.on("keydown",function(a){(a.which===tinymce.util.VK.DELETE||a.which===tinymce.util.VK.BACKSPACE)&&f()}),{_showButtons:e,_hideButtons:f,_setEmbed:c,_getEmbed:d}}); \ No newline at end of file diff --git a/wp-includes/js/tinymce/wp-tinymce.js.gz b/wp-includes/js/tinymce/wp-tinymce.js.gz index 378b3a52d13f5922de6c7f934b71ebc8ba73c474..15eda0d6494134ae4ed904b39c44b229c3232e92 100644 GIT binary patch delta 5300 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