commit: 662d15c1d2c5bb896985fd551a3649fcd280429e Author: Anthony G. Basile <blueness <AT> gentoo <DOT> org> AuthorDate: Wed Jan 2 03:20:16 2019 +0000 Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org> CommitDate: Wed Jan 2 03:20:16 2019 +0000 URL: https://gitweb.gentoo.org/proj/blogs-gentoo.git/commit/?id=662d15c1
Update public-post-preview 2.8.0 Signed-off-by: Anthony G. Basile <blueness <AT> gentoo.org> .../js/gutenberg-integration.js | 1 + .../js/public-post-preview.dev.js | 111 ------------- .../public-post-preview/js/public-post-preview.js | 2 +- .../js/public-post-preview.min.js | 2 +- .../js/src/components/preview-toggle/index.js | 171 +++++++++++++++++++++ plugins/public-post-preview/js/src/index.js | 6 + .../languages/public-post-preview.php | 19 +++ .../languages/public-post-preview.pot | 24 +++ .../public-post-preview/public-post-preview.php | 167 +++++++++++++------- plugins/public-post-preview/readme.txt | 17 +- 10 files changed, 346 insertions(+), 174 deletions(-) diff --git a/plugins/public-post-preview/js/gutenberg-integration.js b/plugins/public-post-preview/js/gutenberg-integration.js new file mode 100644 index 0000000..6bf327c --- /dev/null +++ b/plugins/public-post-preview/js/gutenberg-integration.js @@ -0,0 +1 @@ +this.publicPostPreview=this.publicPostPreview||{},this.publicPostPreview.main=function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=22)}([ function(e,t){!function(){e.exports=this.wp.element}()},function(e,t){e.exports=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}},function(e,t){!function(){e.exports=this.wp.i18n}()},function(e,t,r){"use strict";(function(e){r.d(t,"a",function(){return c});var n=r(17),i=void 0!==e?e:{},a=Object(n.a)(i),c=(a.flush,a.hydrate,a.cx,a.merge,a.getRegisteredStyles,a.injectGlobal,a.keyframes,a.css);a.sheet,a.caches}).call(this,r(21))},function(e,t){!function(){e.exports=this.wp.components}()},function(e,t){!function(){e.exports=this.wp.compose}()},function(e,t){!function(){e.exports=this.wp.editPost}()},function(e,t){!function(){e.exports=this.wp.plugins}()},function(e,t,r){var n=r(18);e.exports=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},i=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(i=i.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Ob ject.getOwnPropertyDescriptor(r,e).enumerable}))),i.forEach(function(t){n(e,t,r[t])})}return e}},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t){function r(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}e.exports=function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}},function(e,t,r){var n=r(19),i=r(1);e.exports=function(e,t){return!t||"object"!==n(t)&&"function"!=typeof t?i(e):t}},function(e,t){function r(t){return e.exports=r=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},r(t)}e.exports=r},function(e,t,r){var n=r(20);e.exports=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}} ),t&&n(e,t)}},function(e,t){!function(){e.exports=this.lodash}()},function(e,t,r){e.exports=function(){"use strict";return function(e){function t(t){if(t)try{e(t+"}")}catch(e){}}return function(r,n,i,a,c,o,s,u,l,f){switch(r){case 1:if(0===l&&64===n.charCodeAt(0))return e(n+";"),"";break;case 2:if(0===u)return n+"/*|*/";break;case 3:switch(u){case 102:case 112:return e(i[0]+n),"";default:return n+(0===f?"/*|*/":"")}case-2:n.split("/*|*/}").forEach(t)}}}}()},function(e,t){!function(){e.exports=this.wp.data}()},function(e,t,r){"use strict";var n=function(e){var t={};return function(r){return void 0===t[r]&&(t[r]=e(r)),t[r]}},i={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,fontWeight:1,lineHeight: 1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1};var a=function(e){for(var t,r=e.length,n=r^r,i=0;r>=4;)t=1540483477*(65535&(t=255&e.charCodeAt(i)|(255&e.charCodeAt(++i))<<8|(255&e.charCodeAt(++i))<<16|(255&e.charCodeAt(++i))<<24))+((1540483477*(t>>>16)&65535)<<16),n=1540483477*(65535&n)+((1540483477*(n>>>16)&65535)<<16)^(t=1540483477*(65535&(t^=t>>>24))+((1540483477*(t>>>16)&65535)<<16)),r-=4,++i;switch(r){case 3:n^=(255&e.charCodeAt(i+2))<<16;case 2:n^=(255&e.charCodeAt(i+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(i)))+((1540483477*(n>>>16)&65535)<<16)}return n=1540483477*(65535&(n^=n>>>13))+((1540483477*(n>>>16)&65535)<<16),((n^=n>>>15)>>>0).toString(36)};var c=function(e){function t(e,t,n){var i=t.trim().split(d);t=i;var a=i.length,c=e.length;switch(c){case 0:case 1:var o=0;for(e=0===c?"":e[0]+" ";o<a;++o) t[o]=r(e,t[o],n).trim();break;default:var s=o=0;for(t=[];o<a;++o)for(var u=0;u<c;++u)t[s++]=r(e[u]+" ",i[o],n).trim()}return t}function r(e,t,r){var n=t.charCodeAt(0);switch(33>n&&(n=(t=t.trim()).charCodeAt(0)),n){case 38:return t.replace(b,"$1"+e.trim());case 58:return e.trim()+t.replace(b,"$1"+e.trim());default:if(0<1*r&&0<t.indexOf("\f"))return t.replace(b,(58===e.charCodeAt(0)?"":"$1")+e.trim())}return e+t}function n(e,t,r,a){var c=e+";",o=2*t+3*r+4*a;if(944===o){e=c.indexOf(":",9)+1;var s=c.substring(e,c.length-1).trim();return s=c.substring(0,e).trim()+s+";",1===_||2===_&&i(s,1)?"-webkit-"+s+s:s}if(0===_||2===_&&!i(c,1))return c;switch(o){case 1015:return 97===c.charCodeAt(10)?"-webkit-"+c+c:c;case 951:return 116===c.charCodeAt(3)?"-webkit-"+c+c:c;case 963:return 110===c.charCodeAt(5)?"-webkit-"+c+c:c;case 1009:if(100!==c.charCodeAt(4))break;case 969:case 942:return"-webkit-"+c+c;case 978:return"-webkit-"+c+"-moz-"+c+c;case 1019:case 983:return"-webkit-"+c+"-moz-"+c+"-ms-"+c+c ;case 883:if(45===c.charCodeAt(8))return"-webkit-"+c+c;if(0<c.indexOf("image-set(",11))return c.replace(A,"$1-webkit-$2")+c;break;case 932:if(45===c.charCodeAt(4))switch(c.charCodeAt(5)){case 103:return"-webkit-box-"+c.replace("-grow","")+"-webkit-"+c+"-ms-"+c.replace("grow","positive")+c;case 115:return"-webkit-"+c+"-ms-"+c.replace("shrink","negative")+c;case 98:return"-webkit-"+c+"-ms-"+c.replace("basis","preferred-size")+c}return"-webkit-"+c+"-ms-"+c+c;case 964:return"-webkit-"+c+"-ms-flex-"+c+c;case 1023:if(99!==c.charCodeAt(8))break;return"-webkit-box-pack"+(s=c.substring(c.indexOf(":",15)).replace("flex-","").replace("space-between","justify"))+"-webkit-"+c+"-ms-flex-pack"+s+c;case 1005:return h.test(c)?c.replace(f,":-webkit-")+c.replace(f,":-moz-")+c:c;case 1e3:switch(t=(s=c.substring(13).trim()).indexOf("-")+1,s.charCodeAt(0)+s.charCodeAt(t)){case 226:s=c.replace(m,"tb");break;case 232:s=c.replace(m,"tb-rl");break;case 220:s=c.replace(m,"lr");break;default:return c}return"-w ebkit-"+c+"-ms-"+s+c;case 1017:if(-1===c.indexOf("sticky",9))break;case 975:switch(t=(c=e).length-10,o=(s=(33===c.charCodeAt(t)?c.substring(0,t):c).substring(e.indexOf(":",7)+1).trim()).charCodeAt(0)+(0|s.charCodeAt(7))){case 203:if(111>s.charCodeAt(8))break;case 115:c=c.replace(s,"-webkit-"+s)+";"+c;break;case 207:case 102:c=c.replace(s,"-webkit-"+(102<o?"inline-":"")+"box")+";"+c.replace(s,"-webkit-"+s)+";"+c.replace(s,"-ms-"+s+"box")+";"+c}return c+";";case 938:if(45===c.charCodeAt(5))switch(c.charCodeAt(6)){case 105:return s=c.replace("-items",""),"-webkit-"+c+"-webkit-box-"+s+"-ms-flex-"+s+c;case 115:return"-webkit-"+c+"-ms-flex-item-"+c.replace(C,"")+c;default:return"-webkit-"+c+"-ms-flex-line-pack"+c.replace("align-content","").replace(C,"")+c}break;case 973:case 989:if(45!==c.charCodeAt(3)||122===c.charCodeAt(4))break;case 931:case 953:if(!0===O.test(e))return 115===(s=e.substring(e.indexOf(":")+1)).charCodeAt(0)?n(e.replace("stretch","fill-available"),t,r,a).replace(":fill- available",":stretch"):c.replace(s,"-webkit-"+s)+c.replace(s,"-moz-"+s.replace("fill-",""))+c;break;case 962:if(c="-webkit-"+c+(102===c.charCodeAt(5)?"-ms-"+c:"")+c,211===r+a&&105===c.charCodeAt(13)&&0<c.indexOf("transform",10))return c.substring(0,c.indexOf(";",27)+1).replace(p,"$1-webkit-$2")+c}return c}function i(e,t){var r=e.indexOf(1===t?":":"{"),n=e.substring(0,3!==t?r:10);return r=e.substring(r+1,e.length-1),R(2!==t?n:n.replace(x,"$1"),r,t)}function a(e,t){var r=n(t,t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2));return r!==t+";"?r.replace(k," or ($1)").substring(4):"("+t+")"}function c(e,t,r,n,i,a,c,o,u,l){for(var f,h=0,p=t;h<z;++h)switch(f=I[h].call(s,e,p,r,n,i,a,c,o,u,l)){case void 0:case!1:case!0:case null:break;default:p=f}if(p!==t)return p}function o(e){return void 0!==(e=e.prefix)&&(R=null,e?"function"!=typeof e?_=1:(_=2,R=e):_=0),o}function s(e,r){var o=e;if(33>o.charCodeAt(0)&&(o=o.trim()),o=[o],0<z){var s=c(-1,r,o,o,S,j,0,0,0,0);void 0!==s&&"string"==typeof s&&(r=s )}var f=function e(r,o,s,f,h){for(var p,d,b,m,k,C=0,x=0,O=0,A=0,I=0,R=0,$=b=p=0,U=0,T=0,M=0,F=0,H=s.length,V=H-1,D="",G="",L="",W="";U<H;){if(d=s.charCodeAt(U),U===V&&0!==x+A+O+C&&(0!==x&&(d=47===x?10:47),A=O=C=0,H++,V++),0===x+A+O+C){if(U===V&&(0<T&&(D=D.replace(l,"")),0<D.trim().length)){switch(d){case 32:case 9:case 59:case 13:case 10:break;default:D+=s.charAt(U)}d=59}switch(d){case 123:for(p=(D=D.trim()).charCodeAt(0),b=1,F=++U;U<H;){switch(d=s.charCodeAt(U)){case 123:b++;break;case 125:b--;break;case 47:switch(d=s.charCodeAt(U+1)){case 42:case 47:e:{for($=U+1;$<V;++$)switch(s.charCodeAt($)){case 47:if(42===d&&42===s.charCodeAt($-1)&&U+2!==$){U=$+1;break e}break;case 10:if(47===d){U=$+1;break e}}U=$}}break;case 91:d++;case 40:d++;case 34:case 39:for(;U++<V&&s.charCodeAt(U)!==d;);}if(0===b)break;U++}switch(b=s.substring(F,U),0===p&&(p=(D=D.replace(u,"").trim()).charCodeAt(0)),p){case 64:switch(0<T&&(D=D.replace(l,"")),d=D.charCodeAt(1)){case 100:case 109:case 115:case 45:T=o;brea k;default:T=P}if(F=(b=e(o,T,b,d,h+1)).length,0<z&&(k=c(3,b,T=t(P,D,M),o,S,j,F,d,h,f),D=T.join(""),void 0!==k&&0===(F=(b=k.trim()).length)&&(d=0,b="")),0<F)switch(d){case 115:D=D.replace(y,a);case 100:case 109:case 45:b=D+"{"+b+"}";break;case 107:b=(D=D.replace(v,"$1 $2"))+"{"+b+"}",b=1===_||2===_&&i("@"+b,3)?"@-webkit-"+b+"@"+b:"@"+b;break;default:b=D+b,112===f&&(G+=b,b="")}else b="";break;default:b=e(o,t(o,D,M),b,f,h+1)}L+=b,b=M=T=$=p=0,D="",d=s.charCodeAt(++U);break;case 125:case 59:if(1<(F=(D=(0<T?D.replace(l,""):D).trim()).length))switch(0===$&&(p=D.charCodeAt(0),45===p||96<p&&123>p)&&(F=(D=D.replace(" ",":")).length),0<z&&void 0!==(k=c(1,D,o,r,S,j,G.length,f,h,f))&&0===(F=(D=k.trim()).length)&&(D="\0\0"),p=D.charCodeAt(0),d=D.charCodeAt(1),p){case 0:break;case 64:if(105===d||99===d){W+=D+s.charAt(U);break}default:58!==D.charCodeAt(F-1)&&(G+=n(D,p,d,D.charCodeAt(2)))}M=T=$=p=0,D="",d=s.charCodeAt(++U)}}switch(d){case 13:case 10:47===x?x=0:0===1+p&&107!==f&&0<D.length&&(T=1,D+="\ 0"),0<z*N&&c(0,D,o,r,S,j,G.length,f,h,f),j=1,S++;break;case 59:case 125:if(0===x+A+O+C){j++;break}default:switch(j++,m=s.charAt(U),d){case 9:case 32:if(0===A+C+x)switch(I){case 44:case 58:case 9:case 32:m="";break;default:32!==d&&(m=" ")}break;case 0:m="\\0";break;case 12:m="\\f";break;case 11:m="\\v";break;case 38:0===A+x+C&&(T=M=1,m="\f"+m);break;case 108:if(0===A+x+C+E&&0<$)switch(U-$){case 2:112===I&&58===s.charCodeAt(U-3)&&(E=I);case 8:111===R&&(E=R)}break;case 58:0===A+x+C&&($=U);break;case 44:0===x+O+A+C&&(T=1,m+="\r");break;case 34:case 39:0===x&&(A=A===d?0:0===A?d:A);break;case 91:0===A+x+O&&C++;break;case 93:0===A+x+O&&C--;break;case 41:0===A+x+C&&O--;break;case 40:if(0===A+x+C){if(0===p)switch(2*I+3*R){case 533:break;default:p=1}O++}break;case 64:0===x+O+A+C+$+b&&(b=1);break;case 42:case 47:if(!(0<A+C+O))switch(x){case 0:switch(2*d+3*s.charCodeAt(U+1)){case 235:x=47;break;case 220:F=U,x=42}break;case 42:47===d&&42===I&&F+2!==U&&(33===s.charCodeAt(F+2)&&(G+=s.substring(F,U +1)),m="",x=0)}}0===x&&(D+=m)}R=I,I=d,U++}if(0<(F=G.length)){if(T=o,0<z&&void 0!==(k=c(2,G,T,r,S,j,F,f,h,f))&&0===(G=k).length)return W+G+L;if(G=T.join(",")+"{"+G+"}",0!=_*E){switch(2!==_||i(G,2)||(E=0),E){case 111:G=G.replace(g,":-moz-$1")+G;break;case 112:G=G.replace(w,"::-webkit-input-$1")+G.replace(w,"::-moz-$1")+G.replace(w,":-ms-input-$1")+G}E=0}}return W+G+L}(P,o,r,0,0);return 0<z&&void 0!==(s=c(-2,f,o,o,S,j,f.length,0,0,0))&&(f=s),E=0,j=S=1,f}var u=/^\0+/g,l=/[\0\r\f]/g,f=/: */g,h=/zoo|gra/,p=/([,: ])(transform)/g,d=/,\r+?/g,b=/([\t\r\n ])*\f?&/g,v=/@(k\w+)\s*(\S*)\s*/,w=/::(place)/g,g=/:(read-only)/g,m=/[svh]\w+-[tblr]{2}/,y=/\(\s*(.*)\s*\)/g,k=/([\s\S]*?);/g,C=/-self|flex-/g,x=/[^]*?(:[rp][el]a[\w-]+)[^]*/,O=/stretch|:\s*\w+\-(?:conte|avail)/,A=/([^-])(image-set\()/,j=1,S=1,E=0,_=1,P=[],I=[],z=0,R=null,N=0;return s.use=function e(t){switch(t){case void 0:case null:z=I.length=0;break;default:switch(t.constructor){case Array:for(var r=0,n=t.length;r<n;++r)e(t[r]);break;case Function:I[z++]=t;break;case Boolean:N=0|!!t}}return e},s.set=o,void 0!==e&&o(e),s},o=r(15),s=r.n(o),u=/[A-Z]|^ms/g,l=n(function(e){return e.replace(u,"-$&").toLowerCase()}),f=function(e,t){return null==t||"boolean"==typeof t?"":1===i[e]||45===e.charCodeAt(1)||isNaN(t)||0===t?t:t+"px"},h=function e(t){for(var r=t.length,n=0,i="";n<r;n++){var a=t[n];if(null!=a){var c=void 0;switch(typeof a){case"boolean":break;case"function":0,c=e([a()]);break;case"object":if(Array.isArray(a))c=e(a);else for(var o in c="",a)a[o]&&o&&(c&&(c+=" "),c+=o);break;default:c=a}c&&(i&&(i+=" "),i+=c)}}return i},p="undefined"!=typeof document;function d(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key||""),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),(void 0!==e.container?e.container:document.head).appendChild(t),t}var b=function(){function e(e){this.isSpeedy=!0,this.tags=[],this.ctr=0,this.opts=e}var t=e.prototype;return t.injec t=function(){if(this.injected)throw new Error("already injected!");this.tags[0]=d(this.opts),this.injected=!0},t.speedy=function(e){if(0!==this.ctr)throw new Error("cannot change speedy now");this.isSpeedy=!!e},t.insert=function(e,t){if(this.isSpeedy){var r=function(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}(this.tags[this.tags.length-1]);try{r.insertRule(e,r.cssRules.length)}catch(e){0}}else{var n=d(this.opts);this.tags.push(n),n.appendChild(document.createTextNode(e+(t||"")))}this.ctr++,this.ctr%65e3==0&&this.tags.push(d(this.opts))},t.flush=function(){this.tags.forEach(function(e){return e.parentNode.removeChild(e)}),this.tags=[],this.ctr=0,this.injected=!1},e}();t.a=function(e,t){if(void 0!==e.__SECRET_EMOTION__)return e.__SECRET_EMOTION__;void 0===t&&(t={});var r,n,i=t.key||"css",o=s()(function(e){r+=e,p&&d.insert(e,w)});void 0!==t.prefix&&(n={prefix:t.prefix});var u={regist ered:{},inserted:{},nonce:t.nonce,key:i},d=new b(t);p&&d.inject();var v=new c(n);v.use(t.stylisPlugins)(o);var w="";function g(e,t){if(null==e)return"";switch(typeof e){case"boolean":return"";case"function":if(void 0!==e.__emotion_styles){var r=e.toString();return r}return g.call(this,void 0===this?e():e(this.mergedProps,this.context),t);case"object":return function(e){if(k.has(e))return k.get(e);var t="";return Array.isArray(e)?e.forEach(function(e){t+=g.call(this,e,!1)},this):Object.keys(e).forEach(function(r){"object"!=typeof e[r]?void 0!==u.registered[e[r]]?t+=r+"{"+u.registered[e[r]]+"}":t+=l(r)+":"+f(r,e[r])+";":Array.isArray(e[r])&&"string"==typeof e[r][0]&&void 0===u.registered[e[r][0]]?e[r].forEach(function(e){t+=l(r)+":"+f(r,e)+";"}):t+=r+"{"+g.call(this,e[r],!1)+"}"},this),k.set(e,t),t}.call(this,e);default:var n=u.registered[e];return!1===t&&void 0!==n?n:e}}var m,y,k=new WeakMap,C=/label:\s*([^\s;\n{]+)\s*;/g,x=function(e){var t=!0,r="",n="";null==e||void 0===e.raw?(t=!1 ,r+=g.call(this,e,!1)):r+=e[0];for(var i=arguments.length,c=new Array(i>1?i-1:0),o=1;o<i;o++)c[o-1]=arguments[o];return c.forEach(function(n,i){r+=g.call(this,n,46===r.charCodeAt(r.length-1)),!0===t&&void 0!==e[i+1]&&(r+=e[i+1])},this),y=r,r=r.replace(C,function(e,t){return n+="-"+t,""}),m=function(e,t){return a(e+t)+t}(r,n),r};function O(e,t){void 0===u.inserted[m]&&(r="",v(e,t),u.inserted[m]=r)}var A=function(){var e=x.apply(this,arguments),t=i+"-"+m;return void 0===u.registered[t]&&(u.registered[t]=y),O("."+t,e),t};function j(e,t){var r="";return t.split(" ").forEach(function(t){void 0!==u.registered[t]?e.push(t):r+=t+" "}),r}function S(e,t){var r=[],n=j(r,e);return r.length<2?e:n+A(r,t)}function E(e){u.inserted[e]=!0}if(p){var _=document.querySelectorAll("[data-emotion-"+i+"]");Array.prototype.forEach.call(_,function(e){d.tags[0].parentNode.insertBefore(e,d.tags[0]),e.getAttribute("data-emotion-"+i).split(" ").forEach(E)})}var P={flush:function(){p&&(d.flush(),d.inject()),u.inse rted={},u.registered={}},hydrate:function(e){e.forEach(E)},cx:function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return S(h(t))},merge:S,getRegisteredStyles:j,injectGlobal:function(){O("",x.apply(this,arguments))},keyframes:function(){var e=x.apply(this,arguments),t="animation-"+m;return O("","@keyframes "+t+"{"+e+"}"),t},css:A,sheet:d,caches:u};return e.__SECRET_EMOTION__=P,P}},function(e,t){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}},function(e,t){function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function n(t){return"function"==typeof Symbol&&"symbol"===r(Symbol.iterator)?e.exports=n=function(e){return r(e)}:e.exports=n=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbo l&&e!==Symbol.prototype?"symbol":r(e)},n(t)}e.exports=n},function(e,t){function r(t,n){return e.exports=r=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},r(t,n)}e.exports=r},function(e,t){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){"use strict";r.r(t);var n=r(7),i=r(8),a=r.n(i),c=r(9),o=r.n(c),s=r(10),u=r.n(s),l=r(11),f=r.n(l),h=r(12),p=r.n(h),d=r(13),b=r.n(d),v=r(1),w=r.n(v),g=r(0),m=r(14),y=r(3),k=r(2),C=r(4),x=r(16),O=r(6),A=r(5),j=window,S=j.ajaxurl,E=j.DSPublicPostPreviewData,_=Object(y.a)("flex-direction:column;align-items:stretch;margin-top:10px;"),P=Object(y.a)("width:100%;margin-right:12px;"),I=Object(y.a)("font-style:italic;color:#666;margin:.2em 0 0 !important;"),z=Object(y.a)("display:flex;justify-content:flex-start;align-items:center;margin:0;"),R=function(e){function t(e){var r;return o()(this,t),(r=f()(this,p()(t).call(this,e))).state={previewEnabled:E.p reviewEnabled,previewUrl:E.previewUrl,hasCopied:!1},r.previewUrlInput=Object(g.createRef)(),r.onChange=r.onChange.bind(w()(w()(r))),r.onPreviewUrlInputFocus=r.onPreviewUrlInputFocus.bind(w()(w()(r))),r}return b()(t,e),u()(t,[{key:"onChange",value:function(e){var t=this;this.request({checked:e,post_ID:this.props.postId},function(){t.setState({previewEnabled:!t.state.previewEnabled})})}},{key:"onPreviewUrlInputFocus",value:function(){this.previewUrlInput.current.focus(),this.previewUrlInput.current.select()}},{key:"request",value:function(e,t){jQuery.ajax({type:"POST",url:S,data:a()({action:"public-post-preview",_ajax_nonce:E.nonce},e),success:t})}},{key:"render",value:function(){var e=this,t=this.state,r=t.previewEnabled,n=t.previewUrl,i=t.hasCopied,a=i?Object(k.__)("Preview URL copied","public-post-preview"):Object(k.__)("Copy the preview URL","public-post-preview");return Object(g.createElement)(g.Fragment,null,Object(g.createElement)(O.PluginPostStatusInfo,null,Object(g.createElem ent)(C.CheckboxControl,{label:Object(k.__)("Enable public preview","public-post-preview"),checked:r,onChange:this.onChange})),r&&Object(g.createElement)(O.PluginPostStatusInfo,{className:_},Object(g.createElement)("p",{className:z},Object(g.createElement)("label",{htmlFor:"public-post-preview-url",className:"screen-reader-text"},Object(k.__)("Preview URL","public-post-preview")),Object(g.createElement)("input",{ref:this.previewUrlInput,type:"text",id:"public-post-preview-url",className:P,value:n,readOnly:!0,onFocus:this.onPreviewUrlInputFocus}),Object(g.createElement)(C.ClipboardButton,{text:n,label:a,onCopy:function(){return e.setState({hasCopied:!0})},onFinishCopy:function(){return e.setState({hasCopied:!1})},"aria-disabled":i,icon:Object(g.createElement)(C.SVG,{width:"20",height:"20",viewBox:"0 0 14 16",xmlns:"http://www.w3.org/2000/svg",focusable:"false"},Object(g.createElement)(C.Path,{fillRule:"evenodd",d:"M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9z M2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z"}))})),Object(g.createElement)("p",{className:I},Object(k.__)("Copy and share this preview URL.","public-post-preview"))))}}]),t}(g.Component),N=Object(A.compose)([Object(x.withSelect)(function(e){var t=e("core").getPostType,r=e("core/editor"),n=r.getCurrentPostId,i=r.getEditedPostAttribute,a=t(i("type"));return{postId:n(),status:i("status"),isViewable:Object(m.get)(a,["viewable"],!1)}}),Object(A.ifCondition)(function(e){return e.isViewable}),Object(A.ifCondition)(function(e){var t=e.status;return-1===["auto-draft","publish","private"].indexOf(t)})])(R);Object(n.registerPlugin)("public-post-preview",{render:N})}]); \ No newline at end of file diff --git a/plugins/public-post-preview/js/public-post-preview.dev.js b/plugins/public-post-preview/js/public-post-preview.dev.js deleted file mode 100644 index bdd8e37..0000000 --- a/plugins/public-post-preview/js/public-post-preview.dev.js +++ /dev/null @@ -1,111 +0,0 @@ -( function( $ ) { - DSPublicPostPreview = { - - /** - * Initializes the plugin. - * - * @since 2.0.0 - */ - initialize : function() { - var t = this; - - t.checkbox = $( '#public-post-preview' ); - t.link = $( '#public-post-preview-link' ); - t.nonce = $( '#public_post_preview_wpnonce' ); - t.status = $( '#public-post-preview-ajax' ); - - if ( ! t.checkbox.prop( 'checked' ) ) - t.link.hide(); - - t.checkbox.bind( 'change', function() { - t.change(); - } ); - }, - - /** - * Handles a checkbox change. - * - * @since 2.0.0 - */ - change : function() { - var t = this, - checked = t.checkbox.prop( 'checked' ) ? 1 : 0; - - // Toggle visibility of the link - t.link.toggle(); - - // Disable the checkbox, to prevent double AJAX requests - t.checkbox.prop( 'disabled', 'disabled' ); - - t.request( - { - _ajax_nonce : t.nonce.val(), - checked : checked, - post_ID : $( '#post_ID' ).val() - }, - function( data ) { - // data is '1' if it's a successful request - if ( data ) { - if ( checked ) { - t.status.text( DSPublicPostPreviewL10n.enabled ); - t._pulsate( t.status, 'green' ); - } else { - t.status.text( DSPublicPostPreviewL10n.disabled ); - t._pulsate( t.status, 'red' ); - } - } - - // Enable the checkbox again - t.checkbox.prop('disabled', ''); - } - ); - }, - - /** - * Does the AJAX request. - * - * @since 2.0.0 - * - * @param {Object} data The data to send. - * @param {Object} callback Callback function for a successfull request. - */ - request : function( data, callback ) { - $.ajax( { - type: 'POST', - url: ajaxurl, - data: $.extend( - data, - { - action: 'public-post-preview' - } - ), - success : callback - } ); - }, - - /** - * Helper for a pulse effect. - * - * @since 2.0.0 - * - * @param {Object} e The element. - * @param {String} color The text color of the element. - */ - _pulsate : function( e, color ) { - e.css( 'color', color ) - .animate( { opacity: 0 }, 600, 'linear' ) - .animate( { opacity: 1 }, 600, 'linear' ) - .animate( { opacity: 0 }, 600, 'linear' ) - .animate( { opacity: 1 }, 600, 'linear' ) - .animate( { opacity: 0 }, 600, 'linear', function() { - e.text( '' ); - } ); - } - }; - - // Document is ready. - $( function() { - DSPublicPostPreview.initialize(); - } ); - -} )( jQuery ); diff --git a/plugins/public-post-preview/js/public-post-preview.js b/plugins/public-post-preview/js/public-post-preview.js index cc5d1e1..e25a188 100644 --- a/plugins/public-post-preview/js/public-post-preview.js +++ b/plugins/public-post-preview/js/public-post-preview.js @@ -32,7 +32,7 @@ */ change : function() { var t = this, - checked = t.checkbox.prop( 'checked' ) ? 1 : 0; + checked = t.checkbox.prop( 'checked' ) ? 'true' : 'false'; // Toggle visibility of the link t.link.toggle(); diff --git a/plugins/public-post-preview/js/public-post-preview.min.js b/plugins/public-post-preview/js/public-post-preview.min.js index 09df216..4de40d9 100644 --- a/plugins/public-post-preview/js/public-post-preview.min.js +++ b/plugins/public-post-preview/js/public-post-preview.min.js @@ -1 +1 @@ -(function(a){DSPublicPostPreview={initialize:function(){var b=this;b.checkbox=a("#public-post-preview");b.link=a("#public-post-preview-link");b.nonce=a("#public_post_preview_wpnonce");b.status=a("#public-post-preview-ajax");b.status.css("opacity",0);b.checkbox.bind("change",function(){b.change();});b.link.find("input").on("focus",function(){a(this).select();});},change:function(){var b=this,c=b.checkbox.prop("checked")?1:0;b.link.toggle();b.checkbox.prop("disabled","disabled");b.request({_ajax_nonce:b.nonce.val(),checked:c,post_ID:a("#post_ID").val()},function(d){if(d){if(c){b.status.text(DSPublicPostPreviewL10n.enabled);b._pulsate(b.status,"green");}else{b.status.text(DSPublicPostPreviewL10n.disabled);b._pulsate(b.status,"red");}}b.checkbox.prop("disabled","");});},request:function(b,c){a.ajax({type:"POST",url:ajaxurl,data:a.extend(b,{action:"public-post-preview"}),success:c});},_pulsate:function(c,b){c.css("color",b).animate({opacity:1},600,"linear").animate({opacity:0},600,"linea r",function(){c.empty();});}};a(DSPublicPostPreview.initialize());})(jQuery); \ No newline at end of file +(function(a){DSPublicPostPreview={initialize:function(){var b=this;b.checkbox=a("#public-post-preview");b.link=a("#public-post-preview-link");b.nonce=a("#public_post_preview_wpnonce");b.status=a("#public-post-preview-ajax");b.status.css("opacity",0);b.checkbox.bind("change",function(){b.change();});b.link.find("input").on("focus",function(){a(this).select();});},change:function(){var b=this,c=b.checkbox.prop("checked")?"true":"false";b.link.toggle();b.checkbox.prop("disabled","disabled");b.request({_ajax_nonce:b.nonce.val(),checked:c,post_ID:a("#post_ID").val()},function(d){if(d){if(c){b.status.text(DSPublicPostPreviewL10n.enabled);b._pulsate(b.status,"green");}else{b.status.text(DSPublicPostPreviewL10n.disabled);b._pulsate(b.status,"red");}}b.checkbox.prop("disabled","");});},request:function(b,c){a.ajax({type:"POST",url:ajaxurl,data:a.extend(b,{action:"public-post-preview"}),success:c});},_pulsate:function(c,b){c.css("color",b).animate({opacity:1},600,"linear").animate({opacity:0} ,600,"linear",function(){c.empty();});}};a(DSPublicPostPreview.initialize());})(jQuery); \ No newline at end of file diff --git a/plugins/public-post-preview/js/src/components/preview-toggle/index.js b/plugins/public-post-preview/js/src/components/preview-toggle/index.js new file mode 100644 index 0000000..9650286 --- /dev/null +++ b/plugins/public-post-preview/js/src/components/preview-toggle/index.js @@ -0,0 +1,171 @@ +/** + * External dependencies + */ +import { get } from 'lodash'; +import { css } from 'emotion' + +import { __ } from '@wordpress/i18n'; +import { + CheckboxControl, + ClipboardButton, + Path, + SVG, +} from '@wordpress/components'; +import { + Component, + createRef, + Fragment, +} from '@wordpress/element'; +import { withSelect } from '@wordpress/data'; +import { PluginPostStatusInfo } from '@wordpress/edit-post'; +import { ifCondition, compose } from '@wordpress/compose'; + +const { + ajaxurl, + DSPublicPostPreviewData, +} = window; + +const pluginPostStatusInfoPreviewUrl = css` + flex-direction: column; + align-items: stretch; + margin-top: 10px; +` + +const pluginPostStatusInfoPreviewUrlInput = css` + width: 100%; + margin-right: 12px; +` + +const pluginPostStatusInfoPreviewDescription = css` + font-style: italic; + color: #666; + margin: .2em 0 0 !important; +` + +const pluginPostStatusInfoPreviewUrlInputWrapper = css` + display: flex; + justify-content: flex-start; + align-items: center; + margin: 0; +` + +class PreviewToggle extends Component { + + constructor( props ) { + super( props ) + + this.state = { + previewEnabled: DSPublicPostPreviewData.previewEnabled, + previewUrl: DSPublicPostPreviewData.previewUrl, + hasCopied: false, + } + + this.previewUrlInput = createRef(); + + this.onChange = this.onChange.bind( this ); + this.onPreviewUrlInputFocus = this.onPreviewUrlInputFocus.bind( this ); + } + + onChange( checked ) { + this.request( { + checked, + post_ID: this.props.postId + }, () => { + this.setState( { previewEnabled: ! this.state.previewEnabled } ); + } ) + } + + onPreviewUrlInputFocus() { + this.previewUrlInput.current.focus(); + this.previewUrlInput.current.select(); + } + + request( data, callback ) { + jQuery.ajax( { + type: 'POST', + url: ajaxurl, + data: { + action: 'public-post-preview', + _ajax_nonce: DSPublicPostPreviewData.nonce, + ...data + }, + success: callback, + } ); + } + + render() { + const { + previewEnabled, + previewUrl, + hasCopied + } = this.state; + + const ariaCopyLabel = hasCopied ? __( 'Preview URL copied', 'public-post-preview' ) : __( 'Copy the preview URL', 'public-post-preview' ); + + return ( + <Fragment> + <PluginPostStatusInfo> + <CheckboxControl + label={ __( 'Enable public preview', 'public-post-preview' ) } + checked={ previewEnabled } + onChange={ this.onChange } + /> + </PluginPostStatusInfo> + { previewEnabled && + <PluginPostStatusInfo className={ pluginPostStatusInfoPreviewUrl }> + <p className={ pluginPostStatusInfoPreviewUrlInputWrapper }> + <label htmlFor="public-post-preview-url" className="screen-reader-text">{ __( 'Preview URL', 'public-post-preview' ) }</label> + <input + ref={ this.previewUrlInput } + type="text" + id="public-post-preview-url" + className={ pluginPostStatusInfoPreviewUrlInput } + value={ previewUrl } + readOnly + onFocus={ this.onPreviewUrlInputFocus } + /> + <ClipboardButton + text={ previewUrl } + label={ ariaCopyLabel } + onCopy={ () => this.setState( { hasCopied: true } ) } + onFinishCopy={ () => this.setState( { hasCopied: false } ) } + aria-disabled={ hasCopied } + icon={ <SVG width="20" height="20" viewBox="0 0 14 16" xmlns="http://www.w3.org/2000/svg" focusable="false" ><Path fillRule="evenodd" d="M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9zM2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z"/></SVG> } + /> + </p> + <p className={ pluginPostStatusInfoPreviewDescription }> + { __( 'Copy and share this preview URL.', 'public-post-preview' ) } + </p> + </PluginPostStatusInfo> + } + </Fragment> + ); + } +} + +export default compose( [ + withSelect( ( select ) => { + const { + getPostType, + } = select( 'core' ); + const { + getCurrentPostId, + getEditedPostAttribute, + } = select( 'core/editor' ); + const postType = getPostType( getEditedPostAttribute( 'type' ) ); + + return { + postId: getCurrentPostId(), + status: getEditedPostAttribute( 'status' ), + isViewable: get( postType, [ 'viewable' ], false ), + }; + } ), + ifCondition( ( { isViewable } ) => isViewable ), + ifCondition( ( { status } ) => { + return [ + 'auto-draft', + 'publish', + 'private', + ].indexOf( status ) === -1; + } ), +] )( PreviewToggle ); diff --git a/plugins/public-post-preview/js/src/index.js b/plugins/public-post-preview/js/src/index.js new file mode 100644 index 0000000..d56dfc6 --- /dev/null +++ b/plugins/public-post-preview/js/src/index.js @@ -0,0 +1,6 @@ +import { registerPlugin } from '@wordpress/plugins'; +import { default as PreviewToggle } from './components/preview-toggle'; + +registerPlugin( 'public-post-preview', { + render: PreviewToggle, +} ); diff --git a/plugins/public-post-preview/languages/public-post-preview.php b/plugins/public-post-preview/languages/public-post-preview.php new file mode 100644 index 0000000..118fa0f --- /dev/null +++ b/plugins/public-post-preview/languages/public-post-preview.php @@ -0,0 +1,19 @@ +<?php +/* THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY. */ +$generated_i18n_strings = array( + // Reference: js/src/components/preview-toggle/index.js:103 + __( 'Preview URL copied', 'public-post-preview' ), + + // Reference: js/src/components/preview-toggle/index.js:103 + __( 'Copy the preview URL', 'public-post-preview' ), + + // Reference: js/src/components/preview-toggle/index.js:109 + __( 'Enable public preview', 'public-post-preview' ), + + // Reference: js/src/components/preview-toggle/index.js:117 + __( 'Preview URL', 'public-post-preview' ), + + // Reference: js/src/components/preview-toggle/index.js:137 + __( 'Copy and share this preview URL.', 'public-post-preview' ) +); +/* THIS IS THE END OF THE GENERATED FILE */ diff --git a/plugins/public-post-preview/languages/public-post-preview.pot b/plugins/public-post-preview/languages/public-post-preview.pot new file mode 100644 index 0000000..6939e77 --- /dev/null +++ b/plugins/public-post-preview/languages/public-post-preview.pot @@ -0,0 +1,24 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=utf-8\n" +"X-Generator: babel-plugin-makepot\n" + +#: js/src/components/preview-toggle/index.js:103 +msgid "Preview URL copied" +msgstr "" + +#: js/src/components/preview-toggle/index.js:103 +msgid "Copy the preview URL" +msgstr "" + +#: js/src/components/preview-toggle/index.js:109 +msgid "Enable public preview" +msgstr "" + +#: js/src/components/preview-toggle/index.js:117 +msgid "Preview URL" +msgstr "" + +#: js/src/components/preview-toggle/index.js:137 +msgid "Copy and share this preview URL." +msgstr "" \ No newline at end of file diff --git a/plugins/public-post-preview/public-post-preview.php b/plugins/public-post-preview/public-post-preview.php index 5130a0a..742a93c 100644 --- a/plugins/public-post-preview/public-post-preview.php +++ b/plugins/public-post-preview/public-post-preview.php @@ -1,33 +1,31 @@ <?php /** * Plugin Name: Public Post Preview - * Version: 2.6.0 + * Version: 2.8.0 * Description: Enables you to give a link to anonymous users for public preview of any post type before it is published. * Author: Dominik Schilling - * Author URI: http://wphelper.de/ + * Author URI: https://wphelper.de/ * Plugin URI: https://dominikschilling.de/wp-plugins/public-post-preview/en/ - * * Text Domain: public-post-preview - * * License: GPLv2 or later * * Previously (2009-2011) maintained by Jonathan Dingman and Matt Martz. * - * Copyright (C) 2012-2017 Dominik Schilling + * Copyright (C) 2012-2018 Dominik Schilling * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /** @@ -63,7 +61,7 @@ class DS_Public_Post_Preview { add_action( 'post_submitbox_misc_actions', array( __CLASS__, 'post_submitbox_misc_actions' ) ); add_action( 'save_post', array( __CLASS__, 'register_public_preview' ), 20, 2 ); add_action( 'wp_ajax_public-post-preview', array( __CLASS__, 'ajax_register_public_preview' ) ); - add_action( 'admin_enqueue_scripts' , array( __CLASS__, 'enqueue_script' ) ); + add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_script' ) ); add_filter( 'display_post_states', array( __CLASS__, 'display_preview_state' ), 20, 2 ); } } @@ -89,24 +87,65 @@ class DS_Public_Post_Preview { return; } - $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; + if ( + ( method_exists( get_current_screen(), 'is_block_editor' ) && get_current_screen()->is_block_editor() ) || + ( function_exists( 'is_gutenberg_page' ) && is_gutenberg_page() ) + ) { + wp_enqueue_script( + 'public-post-preview-gutenberg', + plugins_url( 'js/gutenberg-integration.js', __FILE__ ), + array( + 'lodash', + 'wp-compose', + 'wp-components', + 'wp-data', + 'wp-edit-post', + 'wp-element', + 'wp-i18n', + ), + '20181127', + true + ); - wp_enqueue_script( - 'public-post-preview', - plugins_url( "js/public-post-preview$suffix.js", __FILE__ ), - array( 'jquery' ), - '20160403', - true - ); + $post = get_post(); + wp_localize_script( + 'public-post-preview-gutenberg', + 'DSPublicPostPreviewData', + array( + 'previewEnabled' => self::is_public_preview_enabled( $post ), + 'previewUrl' => self::get_preview_link( $post ), + 'nonce' => wp_create_nonce( 'public-post-preview_' . $post->ID ), + ) + ); - wp_localize_script( - 'public-post-preview', - 'DSPublicPostPreviewL10n', - array( - 'enabled' => __( 'Enabled!', 'public-post-preview' ), - 'disabled' => __( 'Disabled!', 'public-post-preview' ), - ) - ); + if ( function_exists( 'gutenberg_get_jed_locale_data' ) ) { + $locale_data = gutenberg_get_jed_locale_data( 'public-post-preview' ); + wp_add_inline_script( + 'public-post-preview-gutenberg', + 'wp.i18n.setLocaleData( ' . wp_json_encode( $locale_data ) . ', "public-post-preview" );', + 'before' + ); + } + } else { + $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; + + wp_enqueue_script( + 'public-post-preview', + plugins_url( "js/public-post-preview$suffix.js", __FILE__ ), + array( 'jquery' ), + '20180914', + true + ); + + wp_localize_script( + 'public-post-preview', + 'DSPublicPostPreviewL10n', + array( + 'enabled' => __( 'Enabled!', 'public-post-preview' ), + 'disabled' => __( 'Disabled!', 'public-post-preview' ), + ) + ); + } } /** @@ -187,10 +226,9 @@ class DS_Public_Post_Preview { $post = get_post(); } - wp_nonce_field( 'public_post_preview', 'public_post_preview_wpnonce' ); + wp_nonce_field( 'public-post-preview_' . $post->ID, 'public_post_preview_wpnonce' ); - $preview_post_ids = self::get_preview_post_ids(); - $enabled = in_array( $post->ID, $preview_post_ids ); + $enabled = self::is_public_preview_enabled( $post ); ?> <label><input type="checkbox"<?php checked( $enabled ); ?> name="public_post_preview" id="public-post-preview" value="1" /> <?php _e( 'Enable public preview', 'public-post-preview' ); ?> <span id="public-post-preview-ajax"></span></label> @@ -198,12 +236,25 @@ class DS_Public_Post_Preview { <div id="public-post-preview-link" style="margin-top:6px"<?php echo $enabled ? '' : ' class="hidden"'; ?>> <label> <input type="text" name="public_post_preview_link" class="regular-text" value="<?php echo esc_attr( self::get_preview_link( $post ) ); ?>" style="width:99%" readonly /> - <span class="description"><?php _e( '(Copy and share this link.)', 'public-post-preview' ); ?></span> + <span class="description"><?php _e( 'Copy and share this preview URL.', 'public-post-preview' ); ?></span> </label> </div> <?php } + /** + * Checks if a public preview is enabled for a post. + * + * @since 2.7.0 + * + * @param WP_Post $post The post object. + * @return bool True if a public preview is enabled, false if not. + */ + private static function is_public_preview_enabled( $post ) { + $preview_post_ids = self::get_preview_post_ids(); + return in_array( $post->ID, $preview_post_ids, true ); + } + /** * Returns the public preview link. * @@ -220,25 +271,25 @@ class DS_Public_Post_Preview { public static function get_preview_link( $post ) { if ( 'page' == $post->post_type ) { $args = array( - 'page_id' => $post->ID, + 'page_id' => $post->ID, ); - } else if ( 'post' == $post->post_type ) { + } elseif ( 'post' == $post->post_type ) { $args = array( - 'p' => $post->ID, + 'p' => $post->ID, ); } else { $args = array( - 'p' => $post->ID, - 'post_type' => $post->post_type, + 'p' => $post->ID, + 'post_type' => $post->post_type, ); } $args['preview'] = true; - $args['_ppp'] = self::create_nonce( 'public_post_preview_' . $post->ID ); + $args['_ppp'] = self::create_nonce( 'public_post_preview_' . $post->ID ); $link = add_query_arg( $args, home_url( '/' ) ); - return apply_filters( 'ppp_preview_link', $link, $post->ID, $post ); + return apply_filters( 'ppp_preview_link', $link, $post->ID, $post ); } /** @@ -298,7 +349,7 @@ class DS_Public_Post_Preview { * @return bool Returns false on a failure, true on a success. */ public static function unregister_public_preview_on_status_change( $new_status, $old_status, $post ) { - $disallowed_status = self::get_published_statuses(); + $disallowed_status = self::get_published_statuses(); $disallowed_status[] = 'trash'; if ( in_array( $new_status, $disallowed_status ) ) { @@ -318,7 +369,7 @@ class DS_Public_Post_Preview { * @return bool Returns false on a failure, true on a success. */ public static function unregister_public_preview_on_edit( $post_id, $post ) { - $disallowed_status = self::get_published_statuses(); + $disallowed_status = self::get_published_statuses(); $disallowed_status[] = 'trash'; if ( in_array( $post->post_status, $disallowed_status ) ) { @@ -356,36 +407,37 @@ class DS_Public_Post_Preview { * @since 2.0.0 */ public static function ajax_register_public_preview() { - check_ajax_referer( 'public_post_preview' ); - $preview_post_id = (int) $_POST['post_ID']; + + check_ajax_referer( 'public-post-preview_' . $preview_post_id ); + $post = get_post( $preview_post_id ); - if ( ( 'page' == $post->post_type && ! current_user_can( 'edit_page', $preview_post_id ) ) || ! current_user_can( 'edit_post', $preview_post_id ) ) { - wp_die( 0 ); + if ( ! current_user_can( 'edit_post', $preview_post_id ) ) { + wp_send_json_error( 'cannot_edit' ); } if ( in_array( $post->post_status, self::get_published_statuses() ) ) { - wp_die( 0 ); + wp_send_json_error( 'invalid_post_status' ); } $preview_post_ids = self::get_preview_post_ids(); - if ( empty( $_POST['checked'] ) && in_array( $preview_post_id, $preview_post_ids ) ) { + if ( 'false' === $_POST['checked'] && in_array( $preview_post_id, $preview_post_ids ) ) { $preview_post_ids = array_diff( $preview_post_ids, (array) $preview_post_id ); - } elseif ( ! empty( $_POST['checked'] ) && ! in_array( $preview_post_id, $preview_post_ids ) ) { + } elseif ( 'true' === $_POST['checked'] && ! in_array( $preview_post_id, $preview_post_ids ) ) { $preview_post_ids = array_merge( $preview_post_ids, (array) $preview_post_id ); } else { - wp_die( 0 ); + wp_send_json_error( 'unknown_status' ); } $ret = self::set_preview_post_ids( $preview_post_ids ); if ( ! $ret ) { - wp_die( 0 ); + wp_send_json_error( 'not_saved' ); } - wp_die( 1 ); + wp_send_json_success(); } /** @@ -423,6 +475,7 @@ class DS_Public_Post_Preview { if ( ! headers_sent() ) { nocache_headers(); } + add_action( 'wp_head', 'wp_no_robots' ); add_filter( 'posts_results', array( __CLASS__, 'set_post_to_publish' ), 10, 2 ); } @@ -449,7 +502,7 @@ class DS_Public_Post_Preview { } if ( ! in_array( $post_id, self::get_preview_post_ids() ) ) { - wp_die( __( 'No Public Preview available!', 'public-post-preview' ) ); + wp_die( __( 'No public preview available!', 'public-post-preview' ) ); } return true; diff --git a/plugins/public-post-preview/readme.txt b/plugins/public-post-preview/readme.txt index c286709..ebd6f19 100644 --- a/plugins/public-post-preview/readme.txt +++ b/plugins/public-post-preview/readme.txt @@ -1,9 +1,9 @@ === Public Post Preview === Contributors: ocean90 Tags: public, post, preview, posts, custom post types, draft -Requires at least: 3.5 -Tested up to: 4.7 -Stable tag: 2.6.0 +Requires at least: 4.6 +Tested up to: 5.0 +Stable tag: 2.8.0 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html @@ -40,7 +40,8 @@ To upload the plugin through WordPress, instead of FTP: == Screenshots == -1. Edit Posts Page +1. Setting in block editor +2. Setting in classic editor == Usage == * To enable a public post preview check the box below the edit post box. @@ -71,6 +72,14 @@ function my_nonce_life() { Or use the [Public Post Preview Configurator](https://wordpress.org/plugins/public-post-preview-configurator/). == Change Log == + += 2.8.0 (2018-11-27): = +* Add support for WordPress 5.0 and the new block editor. + += 2.7.0 (2018-09-14): = +* Initial support for Gutenberg. +* Block robots for public post previews. Props [@westonruter](https://github.com/westonruter). + = 2.6.0 (2017-04-27): = * Make `DS_Public_Post_Preview::get_preview_link()` public. Props [@rcstr](https://github.com/rcstr). * Send no-cache headers for public post previews.