From 84c108db022a8c61a3e0105d3c2822b996cd2323 Mon Sep 17 00:00:00 2001 From: Ella Iseulde Van Dorpe <*@iseulde.com> Date: Tue, 1 Nov 2016 20:06:36 +0000 Subject: [PATCH] TinyMCE: wptextpattern: Handle unconverted inline patterns Make sure the right text is matched when it already contains characters of the pattern. Adds two more unit tests. Fixes #37693. Built from https://develop.svn.wordpress.org/trunk@39075 git-svn-id: http://core.svn.wordpress.org/trunk@39017 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- .../tinymce/plugins/wptextpattern/plugin.js | 55 +++++++++++------- .../plugins/wptextpattern/plugin.min.js | 2 +- wp-includes/js/tinymce/wp-tinymce.js.gz | Bin 171753 -> 171815 bytes wp-includes/version.php | 2 +- 4 files changed, 35 insertions(+), 24 deletions(-) diff --git a/wp-includes/js/tinymce/plugins/wptextpattern/plugin.js b/wp-includes/js/tinymce/plugins/wptextpattern/plugin.js index e6f5b66cb4..f246918acb 100644 --- a/wp-includes/js/tinymce/plugins/wptextpattern/plugin.js +++ b/wp-includes/js/tinymce/plugins/wptextpattern/plugin.js @@ -15,15 +15,27 @@ return; } + /** + * Escapes characters for use in a Regular Expression. + * + * @param {String} string Characters to escape + * + * @return {String} Escaped characters + */ + function escapeRegExp( string ) { + return string.replace( /[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&' ); + } + tinymce.PluginManager.add( 'wptextpattern', function( editor ) { var VK = tinymce.util.VK; + var settings = editor.settings.wptextpattern || {}; - var spacePatterns = [ + var spacePatterns = settings.space || [ { regExp: /^[*-]\s/, cmd: 'InsertUnorderedList' }, { regExp: /^1[.)]\s/, cmd: 'InsertOrderedList' } ]; - var enterPatterns = [ + var enterPatterns = settings.enter || [ { start: '##', format: 'h2' }, { start: '###', format: 'h3' }, { start: '####', format: 'h4' }, @@ -33,7 +45,7 @@ { regExp: /^(-){3,}$/, element: 'hr' } ]; - var inlinePatterns = [ + var inlinePatterns = settings.inline || [ { start: '`', end: '`', format: 'code' } ]; @@ -81,40 +93,39 @@ var format; var zero; + // We need a non empty text node with an offset greater than zero. if ( ! node || node.nodeType !== 3 || ! node.data.length || ! offset ) { return; } + // The ending character should exist in the patterns registered. if ( tinymce.inArray( chars, node.data.charAt( offset - 1 ) ) === -1 ) { return; } - function findStart( node ) { - var i = inlinePatterns.length; - var offset; + var string = node.data.slice( 0, offset ); - while ( i-- ) { - pattern = inlinePatterns[ i ]; - offset = node.data.indexOf( pattern.end ); + tinymce.each( inlinePatterns, function( p ) { + var regExp = new RegExp( escapeRegExp( p.start ) + '\\S+' + escapeRegExp( p.end ) + '$' ); + var match = string.match( regExp ); - if ( offset !== -1 ) { - return offset; - } + if ( ! match ) { + return; } - } - startOffset = findStart( node ); - endOffset = node.data.lastIndexOf( pattern.end ); + // Don't allow pattern characters in the text. + if ( node.data.slice( match.index + p.start.length, offset - p.end.length ).indexOf( p.start.slice( 0, 1 ) ) !== -1 ) { + return; + } - if ( startOffset === endOffset || endOffset === -1 ) { - return; - } + startOffset = match.index; + endOffset = offset - p.end.length; + pattern = p; - if ( endOffset - startOffset <= pattern.start.length ) { - return; - } + return false; + } ); - if ( node.data.slice( startOffset + pattern.start.length, endOffset ).indexOf( pattern.start.slice( 0, 1 ) ) !== -1 ) { + if ( ! pattern ) { return; } diff --git a/wp-includes/js/tinymce/plugins/wptextpattern/plugin.min.js b/wp-includes/js/tinymce/plugins/wptextpattern/plugin.min.js index 42e5226c7b..e4f27060a3 100644 --- a/wp-includes/js/tinymce/plugins/wptextpattern/plugin.min.js +++ b/wp-includes/js/tinymce/plugins/wptextpattern/plugin.min.js @@ -1 +1 @@ -!function(a,b){a.Env.ie&&a.Env.ie<9||a.PluginManager.add("wptextpattern",function(c){function d(){function d(a){for(var b,c=m.length;c--;)if(g=m[c],b=a.data.indexOf(g.end),-1!==b)return b}var e,f,g,h,j,k=c.selection.getRng(),l=k.startContainer,o=k.startOffset;l&&3===l.nodeType&&l.data.length&&o&&-1!==a.inArray(n,l.data.charAt(o-1))&&(e=d(l),f=l.data.lastIndexOf(g.end),e!==f&&-1!==f&&(f-e<=g.start.length||-1===l.data.slice(e+g.start.length,f).indexOf(g.start.slice(0,1))&&(h=c.formatter.get(g.format),h&&h[0].inline&&(c.undoManager.add(),c.undoManager.transact(function(){l.insertData(o,"\ufeff"),l=l.splitText(e),j=l.splitText(o-e),l.deleteData(0,g.start.length),l.deleteData(l.data.length-g.end.length,g.end.length),c.formatter.apply(g.format,{},l),c.selection.setCursorLocation(j,1)}),b(function(){i="space",c.once("selectionchange",function(){var a;j&&(a=j.data.indexOf("\ufeff"),-1!==a&&j.deleteData(a,a+1))})})))))}function e(a){var b,d=c.dom.getParent(a,"p");if(d){for(;(b=d.firstChild)&&3!==b.nodeType;)d=b;if(b)return b.data||(b=b.nextSibling&&3===b.nextSibling.nodeType?b.nextSibling:null),b}}function f(){var d,f,g=c.selection.getRng(),h=g.startContainer;h&&e(h)===h&&(d=h.parentNode,f=h.data,a.each(k,function(a){var e=f.match(a.regExp);if(e&&g.startOffset===e[0].length)return c.undoManager.add(),c.undoManager.transact(function(){h.deleteData(0,e[0].length),d.innerHTML||d.appendChild(document.createElement("br")),c.selection.setCursorLocation(d),c.execCommand(a.cmd)}),b(function(){i="space"}),!1}))}function g(){var d,f,g,j=c.selection.getRng(),k=j.startContainer,m=e(k),n=l.length;if(m){for(d=m.data;n--;)if(l[n].start){if(0===d.indexOf(l[n].start)){f=l[n];break}}else if(l[n].regExp&&l[n].regExp.test(d)){f=l[n];break}f&&(m===k&&a.trim(d)===f.start||c.once("keyup",function(){c.undoManager.add(),c.undoManager.transact(function(){f.format?(c.formatter.apply(f.format,{},m),m.replaceData(0,m.data.length,h(m.data.slice(f.start.length)))):f.element&&(g=m.parentNode&&m.parentNode.parentNode,g&&g.replaceChild(document.createElement(f.element),m.parentNode))}),b(function(){i="enter"})}))}}function h(a){return a?a.replace(/^\s+/,""):""}var i,j=a.util.VK,k=[{regExp:/^[*-]\s/,cmd:"InsertUnorderedList"},{regExp:/^1[.)]\s/,cmd:"InsertOrderedList"}],l=[{start:"##",format:"h2"},{start:"###",format:"h3"},{start:"####",format:"h4"},{start:"#####",format:"h5"},{start:"######",format:"h6"},{start:">",format:"blockquote"},{regExp:/^(-){3,}$/,element:"hr"}],m=[{start:"`",end:"`",format:"code"}],n=[];a.each(m,function(b){a.each((b.start+b.end).split(""),function(b){-1===a.inArray(n,b)&&n.push(b)})}),c.on("selectionchange",function(){i=null}),c.on("keydown",function(a){(i&&27===a.keyCode||"space"===i&&a.keyCode===j.BACKSPACE)&&(c.undoManager.undo(),a.preventDefault(),a.stopImmediatePropagation()),a.keyCode!==j.ENTER||j.modifierPressed(a)||g(),a.keyCode!==j.SPACEBAR||a.ctrlKey||a.metaKey||a.altKey?a.keyCode>47&&!(a.keyCode>=91&&a.keyCode<=93)&&b(d):b(f)},!0)})}(window.tinymce,window.setTimeout); \ No newline at end of file +!function(a,b){function c(a){return a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}a.Env.ie&&a.Env.ie<9||a.PluginManager.add("wptextpattern",function(d){function e(){var e,f,g,h,i,k=d.selection.getRng(),l=k.startContainer,m=k.startOffset;if(l&&3===l.nodeType&&l.data.length&&m&&-1!==a.inArray(p,l.data.charAt(m-1))){var n=l.data.slice(0,m);a.each(o,function(a){var b=new RegExp(c(a.start)+"\\S+"+c(a.end)+"$"),d=n.match(b);return d&&-1===l.data.slice(d.index+a.start.length,m-a.end.length).indexOf(a.start.slice(0,1))?(e=d.index,f=m-a.end.length,g=a,!1):void 0}),g&&(h=d.formatter.get(g.format),h&&h[0].inline&&(d.undoManager.add(),d.undoManager.transact(function(){l.insertData(m,"\ufeff"),l=l.splitText(e),i=l.splitText(m-e),l.deleteData(0,g.start.length),l.deleteData(l.data.length-g.end.length,g.end.length),d.formatter.apply(g.format,{},l),d.selection.setCursorLocation(i,1)}),b(function(){j="space",d.once("selectionchange",function(){var a;i&&(a=i.data.indexOf("\ufeff"),-1!==a&&i.deleteData(a,a+1))})})))}}function f(a){var b,c=d.dom.getParent(a,"p");if(c){for(;(b=c.firstChild)&&3!==b.nodeType;)c=b;if(b)return b.data||(b=b.nextSibling&&3===b.nextSibling.nodeType?b.nextSibling:null),b}}function g(){var c,e,g=d.selection.getRng(),h=g.startContainer;h&&f(h)===h&&(c=h.parentNode,e=h.data,a.each(m,function(a){var f=e.match(a.regExp);if(f&&g.startOffset===f[0].length)return d.undoManager.add(),d.undoManager.transact(function(){h.deleteData(0,f[0].length),c.innerHTML||c.appendChild(document.createElement("br")),d.selection.setCursorLocation(c),d.execCommand(a.cmd)}),b(function(){j="space"}),!1}))}function h(){var c,e,g,h=d.selection.getRng(),k=h.startContainer,l=f(k),m=n.length;if(l){for(c=l.data;m--;)if(n[m].start){if(0===c.indexOf(n[m].start)){e=n[m];break}}else if(n[m].regExp&&n[m].regExp.test(c)){e=n[m];break}e&&(l===k&&a.trim(c)===e.start||d.once("keyup",function(){d.undoManager.add(),d.undoManager.transact(function(){e.format?(d.formatter.apply(e.format,{},l),l.replaceData(0,l.data.length,i(l.data.slice(e.start.length)))):e.element&&(g=l.parentNode&&l.parentNode.parentNode,g&&g.replaceChild(document.createElement(e.element),l.parentNode))}),b(function(){j="enter"})}))}}function i(a){return a?a.replace(/^\s+/,""):""}var j,k=a.util.VK,l=d.settings.wptextpattern||{},m=l.space||[{regExp:/^[*-]\s/,cmd:"InsertUnorderedList"},{regExp:/^1[.)]\s/,cmd:"InsertOrderedList"}],n=l.enter||[{start:"##",format:"h2"},{start:"###",format:"h3"},{start:"####",format:"h4"},{start:"#####",format:"h5"},{start:"######",format:"h6"},{start:">",format:"blockquote"},{regExp:/^(-){3,}$/,element:"hr"}],o=l.inline||[{start:"`",end:"`",format:"code"}],p=[];a.each(o,function(b){a.each((b.start+b.end).split(""),function(b){-1===a.inArray(p,b)&&p.push(b)})}),d.on("selectionchange",function(){j=null}),d.on("keydown",function(a){(j&&27===a.keyCode||"space"===j&&a.keyCode===k.BACKSPACE)&&(d.undoManager.undo(),a.preventDefault(),a.stopImmediatePropagation()),a.keyCode!==k.ENTER||k.modifierPressed(a)||h(),a.keyCode!==k.SPACEBAR||a.ctrlKey||a.metaKey||a.altKey?a.keyCode>47&&!(a.keyCode>=91&&a.keyCode<=93)&&b(e):b(g)},!0)})}(window.tinymce,window.setTimeout); \ 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 d81a54f57130a6e0409fb97714adfa5f444d6f59..500d93c2430790cc4fbab74b3366fc864f87a161 100644 GIT binary patch delta 12433 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 z

wcpNqwGpHl#M>m3pA_h3~k6~0cbK2z*zJxgYbvqh*3<&%jzn$EIT>nxIstDj6R zvMY)YOBh<3%jvfz>7gt{y2d4U>jvu@5vG(U6M=sd3~;e;%6>RAo%Ab(OFbJO9zG#p zeFz`lQDp703*vQnI8%ybbm`e*k=}(&1zdmh0u~h3y#$0ui5wz~8t4sj-d<nYEY_Yu0qCDwRY*Xvrj((CSUDpQ@c*0h;B?JM~((#gGMt|vU{lL`>gVCcHb`_g* zpx3?GoM!_V{SPA9?10Rq1};8+Pd*Y9i}EzM*&!MW6L$(m3$TKwsezA(yXPVO!}5Pu ztHuZh{>&a2_{-R>SL9az0c=sv&r8LcR!(O+h%*60JhVy)JK4QJlf~pU3V+u zbkoNnfWC^)15cpR**Qsy5TX*fo7LehXLrI2FPA4ezRuZHo#*3==@nN%w8IHmu;|U; zyp+WgJf6{gYrzaC3x7pruG-Bq7zbl5&&jFSP>6D(~L10}$jRf9AvY z)WHG-=<=b{a}FKIT(v+!Es}|QoQXj=aZmc5e-MJo?X_)KR(VT$cyAs;yt7#l)KE9O zcgdN`eYE+gYCSPtgo+941b=ZHI698G(EH0JquIb14eM=4Fdqt-0P(u+`ICRf$L}w` zZe3k2kD1zH^~3Me*+TL{MgAHxgsrfdPcPb0Irpz_Uc>>rxTlGXgRj1lpIh064IsI) zFWfgz{5S5aZ%VJ+ci)!Zxi7zSUY^@@lDBk6TAE#=MReS!Ao4P|*uBouI^75|bF%j6 zvh_ixeBA2q!J%?1u9c|EB@+%04@rZPTHS>@vVcE=eXPR`Ar)`qfcBGv93{ z6}qCb>0Px?6Z-}2vq@JjL))qo2o}q(!yg)Mfpf8*QH-M&cH+zSM#tS$8RaHn{VB)T zBw?uh8Ff^E(c`}Cr_+Dfe5WaR;KIh)Z%ms`lD`yH5~o|opAbG1>c2LsS>leV^=MDE zM(^+I6|L-FyYf8zSS*ZX)E`CnZ^KpjHN>QF7fVC$E@TKBxrn;6{H{feZcA-&55Ll7Dw3h%%HczjHW5C;AC}_kha~xFGUM0`9kZ{K7{49SX6b=IVx-gP#n(d_| zh9H22ptAxY3syH7K!7)!BkRg9@1`S;fVIe?)#C2n=;;4Yi%#F0=(6Mdo^CTDH6`Iq z2<~Qd3@ftF1DFhb9M35j$C!^TPcuT^!+E1s(+d8Y-FU;iOt5J%ALVmkr|s|%m+;q) zN#y0*rc8KrY+QeBjVlc`vddxQjDmTPZ#D<=nwCp<{p#hbSC{LPlV>MavL@}6OrWbP zCES5!u7YuLs9>0oTkXF)W;t7br@gXty0mq!nu^JU%-q(%s+G`whDu9}6ifUOVRl}W z&x9+{m|yJf-m5_20PUJ?v)JB_t_|9V%p9}N^jJ=M?s$Lw6(mpHb(Q^tXUNdoF=H^b z0RKb*-$P6Dqa2C-1KoN}6IvDF{QS&a)b)o5(S%%lg(bS`_q zgvNnpR0BOD-x_VwlGPZ!M8dNOW)mB2?&jg*WKKV7eYfqD@oY^Q((wVWZ62*;n}Mnr z@FxjuYb1YaZR|28`V_1J*C~`ntJJasabYz(j1W@^yW!}V9;+Vt5>#~kKNl^~PiMqhjxtbp~wQx}her92r~ZD*BHIWWi?vu$Ta%j3AR7v!#Dtc%sx zHQXAlU9GxF+4*0fQEHhGe5ea@g8u<0#+)CQ{Ky(21(|rS-XlzV>^$s45{S