Changeset 2316661
- Timestamp:
- 06/02/2020 02:32:35 PM (6 years ago)
- Location:
- siteorigin-panels
- Files:
-
- 8 added
- 8 deleted
- 12 edited
- 27 copied
-
tags/2.11.0 (copied) (copied from siteorigin-panels/trunk)
-
tags/2.11.0/compat/js/siteorigin-panels-layout-block.js (copied) (copied from siteorigin-panels/trunk/compat/js/siteorigin-panels-layout-block.js) (3 diffs)
-
tags/2.11.0/compat/js/siteorigin-panels-layout-block.min.js (copied) (copied from siteorigin-panels/trunk/compat/js/siteorigin-panels-layout-block.min.js) (1 diff)
-
tags/2.11.0/compat/widget-options.php (copied) (copied from siteorigin-panels/trunk/compat/widget-options.php)
-
tags/2.11.0/css/admin.css (copied) (copied from siteorigin-panels/trunk/css/admin.css)
-
tags/2.11.0/css/admin.min.css (copied) (copied from siteorigin-panels/trunk/css/admin.min.css)
-
tags/2.11.0/inc/admin.php (copied) (copied from siteorigin-panels/trunk/inc/admin.php) (42 diffs)
-
tags/2.11.0/inc/css-builder.php (modified) (1 diff)
-
tags/2.11.0/inc/live-editor.php (copied) (copied from siteorigin-panels/trunk/inc/live-editor.php)
-
tags/2.11.0/inc/renderer.php (copied) (copied from siteorigin-panels/trunk/inc/renderer.php)
-
tags/2.11.0/inc/styles.php (copied) (copied from siteorigin-panels/trunk/inc/styles.php) (1 diff)
-
tags/2.11.0/inc/widgets/post-loop-helper.php (copied) (copied from siteorigin-panels/trunk/inc/widgets/post-loop-helper.php)
-
tags/2.11.0/inc/widgets/post-loop.php (copied) (copied from siteorigin-panels/trunk/inc/widgets/post-loop.php)
-
tags/2.11.0/js/live-editor/jquery.scrollTo.min.js (copied) (copied from siteorigin-panels/trunk/js/live-editor/jquery.scrollTo.min.js)
-
tags/2.11.0/js/live-editor/live-editor-front.min.js (copied) (copied from siteorigin-panels/trunk/js/live-editor/live-editor-front.min.js)
-
tags/2.11.0/js/siteorigin-panels-2108.js (deleted)
-
tags/2.11.0/js/siteorigin-panels-2108.min.js (deleted)
-
tags/2.11.0/js/siteorigin-panels-2110.js (added)
-
tags/2.11.0/js/siteorigin-panels-2110.min.js (added)
-
tags/2.11.0/js/siteorigin-parallax.min.js (copied) (copied from siteorigin-panels/trunk/js/siteorigin-parallax.min.js)
-
tags/2.11.0/js/styling-2108.js (deleted)
-
tags/2.11.0/js/styling-2108.min.js (deleted)
-
tags/2.11.0/js/styling-2110.js (added)
-
tags/2.11.0/js/styling-2110.min.js (added)
-
tags/2.11.0/js/yoast-compat.js (modified) (3 diffs)
-
tags/2.11.0/js/yoast-compat.min.js (copied) (copied from siteorigin-panels/trunk/js/yoast-compat.min.js) (1 diff)
-
tags/2.11.0/lang/siteorigin-panels.pot (copied) (copied from siteorigin-panels/trunk/lang/siteorigin-panels.pot) (4 diffs)
-
tags/2.11.0/readme.txt (copied) (copied from siteorigin-panels/trunk/readme.txt) (2 diffs)
-
tags/2.11.0/settings/admin-settings.min.js (copied) (copied from siteorigin-panels/trunk/settings/admin-settings.min.js)
-
tags/2.11.0/siteorigin-panels.php (copied) (copied from siteorigin-panels/trunk/siteorigin-panels.php) (3 diffs)
-
tags/2.11.0/tpl/admin-home-page.php (copied) (copied from siteorigin-panels/trunk/tpl/admin-home-page.php)
-
tags/2.11.0/tpl/js-templates.php (copied) (copied from siteorigin-panels/trunk/tpl/js-templates.php)
-
tags/2.11.0/widgets/js/admin.min.js (copied) (copied from siteorigin-panels/trunk/widgets/js/admin.min.js)
-
tags/2.11.0/widgets/js/embedded-video.min.js (copied) (copied from siteorigin-panels/trunk/widgets/js/embedded-video.min.js)
-
tags/2.11.0/widgets/js/jquery.fitvids.min.js (copied) (copied from siteorigin-panels/trunk/widgets/js/jquery.fitvids.min.js)
-
tags/2.11.0/widgets/widgets/animated-image/js/main.min.js (copied) (copied from siteorigin-panels/trunk/widgets/widgets/animated-image/js/main.min.js)
-
tags/2.11.0/widgets/widgets/animated-image/js/onscreen.min.js (copied) (copied from siteorigin-panels/trunk/widgets/widgets/animated-image/js/onscreen.min.js)
-
trunk/compat/js/siteorigin-panels-layout-block.js (modified) (3 diffs)
-
trunk/compat/js/siteorigin-panels-layout-block.min.js (modified) (1 diff)
-
trunk/inc/admin.php (modified) (42 diffs)
-
trunk/inc/css-builder.php (modified) (1 diff)
-
trunk/inc/styles.php (modified) (1 diff)
-
trunk/js/siteorigin-panels-21017.js (deleted)
-
trunk/js/siteorigin-panels-21017.min.js (deleted)
-
trunk/js/siteorigin-panels-2110.js (added)
-
trunk/js/siteorigin-panels-2110.min.js (added)
-
trunk/js/styling-21017.js (deleted)
-
trunk/js/styling-21017.min.js (deleted)
-
trunk/js/styling-2110.js (added)
-
trunk/js/styling-2110.min.js (added)
-
trunk/js/yoast-compat.js (modified) (3 diffs)
-
trunk/js/yoast-compat.min.js (modified) (1 diff)
-
trunk/lang/siteorigin-panels.pot (modified) (4 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/siteorigin-panels.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
siteorigin-panels/tags/2.11.0/compat/js/siteorigin-panels-layout-block.js
r2278148 r2316661 266 266 panelsData: { 267 267 type: 'object' 268 }, 269 contentPreview: { 270 type: 'string' 268 271 } 269 272 }, … … 276 279 if (!_.isEmpty(newPanelsData.widgets)) { 277 280 // Send panelsData to server for sanitization. 278 jQuery.post(soPanelsBlockEditorAdmin.sanitizeUrl, { 279 action: 'so_panels_layout_block_sanitize', 280 panelsData: JSON.stringify(newPanelsData) 281 }, function (sanitizedPanelsData) { 282 if (sanitizedPanelsData !== '') { 283 setAttributes({ 284 panelsData: sanitizedPanelsData 285 }); 286 } 281 jQuery.post(panelsOptions.ajaxurl, { 282 action: 'so_panels_builder_content_json', 283 panels_data: JSON.stringify(newPanelsData), 284 post_id: wp.data.select("core/editor").getCurrentPostId() 285 }, function (content) { 286 var panelsAttributes = {}; 287 288 if (content.sanitized_panels_data !== '') { 289 panelsAttributes.panelsData = content.sanitized_panels_data; 290 } 291 292 if (content.preview !== '') { 293 panelsAttributes.contentPreview = content.preview; 294 } 295 296 setAttributes(panelsAttributes); 287 297 }); 288 298 } … … 304 314 }); 305 315 }, 306 save: function save( ) {307 // Render in PHP308 return null;316 save: function save(_ref2) { 317 var attributes = _ref2.attributes; 318 return attributes.hasOwnProperty('contentPreview') ? React.createElement(RawHTML, null, attributes.contentPreview) : null; 309 319 } 310 320 }); -
siteorigin-panels/tags/2.11.0/compat/js/siteorigin-panels-layout-block.min.js
r2278148 r2316661 1 "use strict";function _typeof(e){return(_typeof="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 _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?_assertThisInitialized(e):t}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _inherits(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&&_setPrototypeOf(e,t)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var _lodash=lodash,isEqual=_lodash.isEqual,debounce=_lodash.debounce,isEmpty=_lodash.isEmpty,isFunction=_lodash.isFunction,registerBlockType=wp.blocks.registerBlockType,_wp$element=wp.element,Component=_wp$element.Component,Fragment=_wp$element.Fragment,RawHTML=_wp$element.RawHTML,createRef=_wp$element.createRef,BlockControls=wp.editor.BlockControls,_wp$components=wp.components,Toolbar=_wp$components.Toolbar,IconButton=_wp$components.IconButton,Spinner=_wp$components.Spinner,__=wp.i18n.__,_window=window,soPanelsBlockEditorAdmin=_window.soPanelsBlockEditorAdmin,SiteOriginPanelsLayoutBlock=function(e){function t(e){var n;_classCallCheck(this,t),n=_possibleConstructorReturn(this,_getPrototypeOf(t).call(this,e));var i="edit"===soPanelsBlockEditorAdmin.defaultMode||isEmpty(e.panelsData);return n.state={editing:i,loadingPreview:!i,previewHtml:""},n.panelsContainer=createRef(),n.previewContainer=createRef(),n.panelsInitialized=!1,n.previewInitialized=!1,n}return _inherits(t,Component),_createClass(t,[{key:"componentDidMount",value:function(){this.isStillMounted=!0,this.state.editing?this.setupPanels():this.state.editing||this.previewInitialized||(this.fetchPreview(this.props),this.fetchPreview=debounce(this.fetchPreview,500))}},{key:"componentWillUnmount",value:function(){this.isStillMounted=!1,this.builderView&&this.builderView.off("content_change")}},{key:"componentDidUpdate",value:function(e){this.state.editing&&!this.panelsInitialized?this.setupPanels():this.state.loadingPreview?this.fetchPreview(this.props):!this.previewInitialized&&this.previewContainer.current&&(jQuery(document).trigger("panels_setup_preview"),this.previewInitialized=!0)}},{key:"setupPanels",value:function(){var e=this,t=jQuery(this.panelsContainer.current),n=new panels.model.builder;this.builderView=new panels.view.builder({model:n,config:{editorType:"standalone"}});var i=JSON.parse(JSON.stringify(jQuery.extend({},this.props.panelsData))),o=function(){isFunction(e.props.onRowOrWidgetMouseDown)&&e.props.onRowOrWidgetMouseDown();jQuery(document).on("mouseup",(function t(){jQuery(document).off("mouseup",t),isFunction(e.props.onRowOrWidgetMouseUp)&&e.props.onRowOrWidgetMouseUp()}))};this.builderView.on("row_added",(function(){e.builderView.$(".so-row-move").off("mousedown",o),e.builderView.$(".so-row-move").on("mousedown",o),e.builderView.$(".so-widget").off("mousedown",o),e.builderView.$(".so-widget").on("mousedown",o)})),this.builderView.on("widget_added",(function(){e.builderView.$(".so-widget").off("mousedown",o),e.builderView.$(".so-widget").on("mousedown",o)})),this.builderView.render().attach({container:t}).setData(i),this.builderView.trigger("builder_resize"),this.builderView.on("content_change",(function(){var t=e.builderView.getData();e.panelsDataChanged=!isEqual(i,t),e.panelsDataChanged&&(e.props.onContentChange&&isFunction(e.props.onContentChange)&&e.props.onContentChange(t),e.setState({loadingPreview:!0,previewHtml:""}))})),jQuery(document).trigger("panels_setup",this.builderView),this.panelsInitialized=!0}},{key:"fetchPreview",value:function(e){var t=this;if(this.isStillMounted){this.previewInitialized=!1;var n=this.currentFetchRequest=jQuery.post({url:soPanelsBlockEditorAdmin.previewUrl,data:{action:"so_panels_layout_block_preview",panelsData:JSON.stringify(e.panelsData)}}).then((function(e){t.isStillMounted&&n===t.currentFetchRequest&&e&&t.setState({previewHtml:e,loadingPreview:!1})}));return n}}},{key:"render",value:function(){var e=this,t=this.props.panelsData;if(this.state.editing)return React.createElement(Fragment,null,React.createElement(BlockControls,null,React.createElement(Toolbar,null,React.createElement(IconButton,{icon:"visibility",className:"components-icon-button components-toolbar__control",label:__("Preview layout.","siteorigin-panels"),onClick:function(){t&&e.setState({editing:!1})}}))),React.createElement("div",{key:"layout-block",className:"siteorigin-panels-layout-block-container",ref:this.panelsContainer}));var n=this.state.loadingPreview;return React.createElement(Fragment,null,React.createElement(BlockControls,null,React.createElement(Toolbar,null,React.createElement(IconButton,{icon:"edit",className:"components-icon-button components-toolbar__control",label:__("Edit layout.","siteorigin-panels"),onClick:function(){e.panelsInitialized=!1,e.setState({editing:!0})}}))),React.createElement("div",{key:"preview",className:"so-panels-block-layout-preview-container"},n?React.createElement("div",{className:"so-panels-spinner-container"},React.createElement("span",null,React.createElement(Spinner,null))):React.createElement("div",{className:"so-panels-raw-html-container",ref:this.previewContainer},React.createElement(RawHTML,null,this.state.previewHtml))))}}]),t}();registerBlockType("siteorigin-panels/layout-block",{title:__("SiteOrigin Layout","siteorigin-panels"),description:__("Build a layout using SiteOrigin's Page Builder.","siteorigin-panels"),icon:function(){return React.createElement("span",{className:"siteorigin-panels-block-icon"})},category:"layout",keywords:["page builder","column,grid","panel"],supports:{html:!1},attributes:{panelsData:{type:"object"} },edit:function(e){var t=e.attributes,n=e.setAttributes,i=e.toggleSelection;return React.createElement(SiteOriginPanelsLayoutBlock,{panelsData:t.panelsData,onContentChange:function(e){_.isEmpty(e.widgets)||jQuery.post(soPanelsBlockEditorAdmin.sanitizeUrl,{action:"so_panels_layout_block_sanitize",panelsData:JSON.stringify(e)},(function(e){""!==e&&n({panelsData:e})}))},onRowOrWidgetMouseDown:function(){i(!1)},onRowOrWidgetMouseUp:function(){i(!0)}})},save:function(){returnnull}}),function(e){soPanelsBlockEditorAdmin.showAddButton&&e((function(){setTimeout((function(){var t=wp.data.dispatch("core/editor"),n=wp.data.select("core/editor"),i=e("#siteorigin-panels-add-layout-block-button").html(),o=e(i).insertAfter(".editor-writing-flow > div:first, .block-editor-writing-flow > div:not([tabindex])");o.on("click",(function(){var e=wp.blocks.createBlock("siteorigin-panels/layout-block",{});if(n.isEditedPostEmpty()){var i=n.getBlocks();i.length?t.replaceBlock(i[0].clientId,e):t.insertBlock(e)}else t.insertBlock(e)}));var r=function(){wp.data.select("core/editor").isEditedPostEmpty()?o.show():o.hide()};wp.data.subscribe(r),r()}),100)}))}(jQuery);1 "use strict";function _typeof(e){return(_typeof="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 _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?_assertThisInitialized(e):t}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _inherits(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&&_setPrototypeOf(e,t)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var _lodash=lodash,isEqual=_lodash.isEqual,debounce=_lodash.debounce,isEmpty=_lodash.isEmpty,isFunction=_lodash.isFunction,registerBlockType=wp.blocks.registerBlockType,_wp$element=wp.element,Component=_wp$element.Component,Fragment=_wp$element.Fragment,RawHTML=_wp$element.RawHTML,createRef=_wp$element.createRef,BlockControls=wp.editor.BlockControls,_wp$components=wp.components,Toolbar=_wp$components.Toolbar,IconButton=_wp$components.IconButton,Spinner=_wp$components.Spinner,__=wp.i18n.__,_window=window,soPanelsBlockEditorAdmin=_window.soPanelsBlockEditorAdmin,SiteOriginPanelsLayoutBlock=function(e){function t(e){var n;_classCallCheck(this,t),n=_possibleConstructorReturn(this,_getPrototypeOf(t).call(this,e));var i="edit"===soPanelsBlockEditorAdmin.defaultMode||isEmpty(e.panelsData);return n.state={editing:i,loadingPreview:!i,previewHtml:""},n.panelsContainer=createRef(),n.previewContainer=createRef(),n.panelsInitialized=!1,n.previewInitialized=!1,n}return _inherits(t,Component),_createClass(t,[{key:"componentDidMount",value:function(){this.isStillMounted=!0,this.state.editing?this.setupPanels():this.state.editing||this.previewInitialized||(this.fetchPreview(this.props),this.fetchPreview=debounce(this.fetchPreview,500))}},{key:"componentWillUnmount",value:function(){this.isStillMounted=!1,this.builderView&&this.builderView.off("content_change")}},{key:"componentDidUpdate",value:function(e){this.state.editing&&!this.panelsInitialized?this.setupPanels():this.state.loadingPreview?this.fetchPreview(this.props):!this.previewInitialized&&this.previewContainer.current&&(jQuery(document).trigger("panels_setup_preview"),this.previewInitialized=!0)}},{key:"setupPanels",value:function(){var e=this,t=jQuery(this.panelsContainer.current),n=new panels.model.builder;this.builderView=new panels.view.builder({model:n,config:{editorType:"standalone"}});var i=JSON.parse(JSON.stringify(jQuery.extend({},this.props.panelsData))),o=function(){isFunction(e.props.onRowOrWidgetMouseDown)&&e.props.onRowOrWidgetMouseDown();jQuery(document).on("mouseup",(function t(){jQuery(document).off("mouseup",t),isFunction(e.props.onRowOrWidgetMouseUp)&&e.props.onRowOrWidgetMouseUp()}))};this.builderView.on("row_added",(function(){e.builderView.$(".so-row-move").off("mousedown",o),e.builderView.$(".so-row-move").on("mousedown",o),e.builderView.$(".so-widget").off("mousedown",o),e.builderView.$(".so-widget").on("mousedown",o)})),this.builderView.on("widget_added",(function(){e.builderView.$(".so-widget").off("mousedown",o),e.builderView.$(".so-widget").on("mousedown",o)})),this.builderView.render().attach({container:t}).setData(i),this.builderView.trigger("builder_resize"),this.builderView.on("content_change",(function(){var t=e.builderView.getData();e.panelsDataChanged=!isEqual(i,t),e.panelsDataChanged&&(e.props.onContentChange&&isFunction(e.props.onContentChange)&&e.props.onContentChange(t),e.setState({loadingPreview:!0,previewHtml:""}))})),jQuery(document).trigger("panels_setup",this.builderView),this.panelsInitialized=!0}},{key:"fetchPreview",value:function(e){var t=this;if(this.isStillMounted){this.previewInitialized=!1;var n=this.currentFetchRequest=jQuery.post({url:soPanelsBlockEditorAdmin.previewUrl,data:{action:"so_panels_layout_block_preview",panelsData:JSON.stringify(e.panelsData)}}).then((function(e){t.isStillMounted&&n===t.currentFetchRequest&&e&&t.setState({previewHtml:e,loadingPreview:!1})}));return n}}},{key:"render",value:function(){var e=this,t=this.props.panelsData;if(this.state.editing)return React.createElement(Fragment,null,React.createElement(BlockControls,null,React.createElement(Toolbar,null,React.createElement(IconButton,{icon:"visibility",className:"components-icon-button components-toolbar__control",label:__("Preview layout.","siteorigin-panels"),onClick:function(){t&&e.setState({editing:!1})}}))),React.createElement("div",{key:"layout-block",className:"siteorigin-panels-layout-block-container",ref:this.panelsContainer}));var n=this.state.loadingPreview;return React.createElement(Fragment,null,React.createElement(BlockControls,null,React.createElement(Toolbar,null,React.createElement(IconButton,{icon:"edit",className:"components-icon-button components-toolbar__control",label:__("Edit layout.","siteorigin-panels"),onClick:function(){e.panelsInitialized=!1,e.setState({editing:!0})}}))),React.createElement("div",{key:"preview",className:"so-panels-block-layout-preview-container"},n?React.createElement("div",{className:"so-panels-spinner-container"},React.createElement("span",null,React.createElement(Spinner,null))):React.createElement("div",{className:"so-panels-raw-html-container",ref:this.previewContainer},React.createElement(RawHTML,null,this.state.previewHtml))))}}]),t}();registerBlockType("siteorigin-panels/layout-block",{title:__("SiteOrigin Layout","siteorigin-panels"),description:__("Build a layout using SiteOrigin's Page Builder.","siteorigin-panels"),icon:function(){return React.createElement("span",{className:"siteorigin-panels-block-icon"})},category:"layout",keywords:["page builder","column,grid","panel"],supports:{html:!1},attributes:{panelsData:{type:"object"},contentPreview:{type:"string"}},edit:function(e){var t=e.attributes,n=e.setAttributes,i=e.toggleSelection;return React.createElement(SiteOriginPanelsLayoutBlock,{panelsData:t.panelsData,onContentChange:function(e){_.isEmpty(e.widgets)||jQuery.post(panelsOptions.ajaxurl,{action:"so_panels_builder_content_json",panels_data:JSON.stringify(e),post_id:wp.data.select("core/editor").getCurrentPostId()},(function(e){var t={};""!==e.sanitized_panels_data&&(t.panelsData=e.sanitized_panels_data),""!==e.preview&&(t.contentPreview=e.preview),n(t)}))},onRowOrWidgetMouseDown:function(){i(!1)},onRowOrWidgetMouseUp:function(){i(!0)}})},save:function(e){var t=e.attributes;return t.hasOwnProperty("contentPreview")?React.createElement(RawHTML,null,t.contentPreview):null}}),function(e){soPanelsBlockEditorAdmin.showAddButton&&e((function(){setTimeout((function(){var t=wp.data.dispatch("core/editor"),n=wp.data.select("core/editor"),i=e("#siteorigin-panels-add-layout-block-button").html(),o=e(i).insertAfter(".editor-writing-flow > div:first, .block-editor-writing-flow > div:not([tabindex])");o.on("click",(function(){var e=wp.blocks.createBlock("siteorigin-panels/layout-block",{});if(n.isEditedPostEmpty()){var i=n.getBlocks();i.length?t.replaceBlock(i[0].clientId,e):t.insertBlock(e)}else t.insertBlock(e)}));var r=function(){wp.data.select("core/editor").isEditedPostEmpty()?o.show():o.hide()};wp.data.subscribe(r),r()}),100)}))}(jQuery); -
siteorigin-panels/tags/2.11.0/inc/admin.php
r2298584 r2316661 53 53 // Register all the admin actions 54 54 add_action( 'wp_ajax_so_panels_builder_content', array( $this, 'action_builder_content' ) ); 55 add_action( 'wp_ajax_so_panels_builder_content_json', array( $this, 'action_builder_content_json' ) ); 55 56 add_action( 'wp_ajax_so_panels_widget_form', array( $this, 'action_widget_form' ) ); 56 57 add_action( 'wp_ajax_so_panels_live_editor_preview', array( $this, 'action_live_editor_preview' ) ); … … 67 68 68 69 $this->in_save_post = false; 69 70 70 71 71 72 // Enqueue Yoast compatibility 72 73 add_action( 'admin_print_scripts-post-new.php', array( $this, 'enqueue_yoast_compat' ), 100 ); 73 74 add_action( 'admin_print_scripts-post.php', array( $this, 'enqueue_yoast_compat' ), 100 ); 74 75 75 76 // Block editor specific actions 76 77 if ( function_exists( 'register_block_type' ) ) { … … 141 142 } 142 143 } 143 144 144 145 return $is_gutenberg_page || $is_block_editor; 145 146 } … … 157 158 return $links; 158 159 } 159 160 160 161 unset( $links['edit'] ); 161 162 $links[] = '<a href="http://siteorigin.com/threads/plugin-page-builder/">' . __( 'Support Forum', 'siteorigin-panels' ) . '</a>'; … … 172 173 */ 173 174 function add_meta_boxes() { 174 175 175 176 foreach ( siteorigin_panels_setting( 'post-types' ) as $type ) { 176 177 add_meta_box( … … 231 232 false 232 233 ); 233 234 234 235 if ( siteorigin_panels_setting( 'sidebars-emulator' ) ) { 235 236 $sidebars_emulator = SiteOrigin_Panels_Sidebars_Emulator::single(); 236 237 $panels_data['widgets'] = $sidebars_emulator->generate_sidebar_widget_ids( $panels_data['widgets'], $post_id ); 237 238 } 238 239 239 240 $panels_data = SiteOrigin_Panels_Styles_Admin::single()->sanitize_all( $panels_data ); 240 241 $panels_data = apply_filters( 'siteorigin_panels_data_pre_save', $panels_data, $post, $post_id ); … … 248 249 $post_parent_id = wp_is_post_revision( $post_id ); 249 250 $layout_id = ( ! empty( $post_parent_id ) ) ? $post_parent_id : $post_id; 250 251 251 252 SiteOrigin_Panels_Post_Content_Filters::add_filters(); 252 253 $GLOBALS[ 'SITEORIGIN_PANELS_POST_CONTENT_RENDER' ] = true; … … 319 320 320 321 $user = wp_get_current_user(); 321 322 322 323 $load_on_attach = siteorigin_panels_setting( 'load-on-attach' ) || isset( $_GET['siteorigin-page-builder'] ); 323 324 wp_localize_script( 'so-panels-admin', 'panelsOptions', array( … … 490 491 ) 491 492 ) ); 492 493 493 494 $js_widgets = array(); 494 495 if ( $screen->base != 'widgets' ) { … … 506 507 do_action_ref_array( 'in_widget_form', array( &$widget_obj, &$return, array() ) ); 507 508 ob_end_clean(); 508 509 509 510 // Need to render templates for new WP 4.8 widgets when not on the 'widgets' screen or in the customizer. 510 511 if ( $this->is_core_js_widget( $widget_obj ) ) { … … 684 685 false 685 686 ); 686 687 687 688 if ( siteorigin_panels_setting( 'sidebars-emulator' ) ) { 688 689 $sidebars_emulator = SiteOrigin_Panels_Sidebars_Emulator::single(); 689 690 $panels_data['widgets'] = $sidebars_emulator->generate_sidebar_widget_ids( $panels_data['widgets'], $page_id ); 690 691 } 691 692 692 693 $panels_data = SiteOrigin_Panels_Styles_Admin::single()->sanitize_all( $panels_data ); 693 694 $panels_data = apply_filters( 'siteorigin_panels_data_pre_save', $panels_data, $page, $page_id ); … … 777 778 // Other plugins can manipulate the list of widgets. Possibly to add recommended widgets 778 779 $widgets = apply_filters( 'siteorigin_panels_widgets', $widgets ); 779 780 780 781 // Exclude these temporarily, as they won't work until we have a reliable way to enqueue their admin form scripts. 781 782 $to_exclude = array( … … 785 786 'Jetpack_Twitter_Timeline_Widget' 786 787 ); 787 788 788 789 foreach ( $to_exclude as $widget_class ) { 789 790 if ( in_array( $widget_class, $widgets ) ) { … … 878 879 879 880 $widget = $instance; 880 881 881 882 unset( $info['raw'] ); 882 883 } … … 887 888 $info[ 'class' ] = preg_replace( '/\\\\+/', '\\\\\\\\', $info['class'] ); 888 889 } 889 890 890 891 $widget['panels_info'] = $info; 891 892 } … … 912 913 */ 913 914 function render_form( $widget_class, $instance = array(), $raw = false, $widget_number = '{$id}' ) { 914 915 915 916 $the_widget = SiteOrigin_Panels::get_widget_instance( $widget_class ); 916 917 // This is a chance for plugins to replace missing widgets 917 918 $the_widget = apply_filters( 'siteorigin_panels_widget_object', $the_widget, $widget_class ); 918 919 919 920 if ( empty( $the_widget ) || ! is_a( $the_widget, 'WP_Widget' ) ) { 920 921 $widgets = $this->get_widgets(); … … 1000 1001 return $form; 1001 1002 } 1002 1003 1003 1004 /** 1004 1005 * Checks whether a widget is considered to be a JS widget. I.e. it needs to have scripts and/or styles enqueued for … … 1020 1021 'WP_Widget_Text', 1021 1022 ); 1022 1023 1023 1024 $is_js_widget = in_array( get_class( $widget ), $js_widgets ) && 1024 1025 // Need to check this for `WP_Widget_Text` which was not a JS widget before 4.8 1025 1026 method_exists( $widget, 'render_control_template_scripts' ); 1026 1027 1027 1028 return $is_js_widget; 1028 1029 } … … 1072 1073 1073 1074 /** 1075 * Get builder content based on the submitted panels_data. 1076 */ 1077 function action_builder_content_json() { 1078 header( 'content-type: application/json' ); 1079 $return = array('post_content' => '', 'preview' => '', 'sanitized_panels_data' => ''); 1080 1081 if ( ! wp_verify_nonce( $_GET['_panelsnonce'], 'panels_action' ) ) { 1082 wp_die(); 1083 } 1084 1085 if ( ! current_user_can( 'edit_post', $_POST['post_id'] ) ) { 1086 wp_die(); 1087 } 1088 1089 if ( empty( $_POST['post_id'] ) || empty( $_POST['panels_data'] ) ) { 1090 echo json_encode($return); 1091 wp_die(); 1092 } 1093 1094 // echo the content 1095 $old_panels_data = get_post_meta( $_POST['post_id'], 'panels_data', true ); 1096 $panels_data = json_decode( wp_unslash( $_POST['panels_data'] ), true ); 1097 $panels_data['widgets'] = $this->process_raw_widgets( 1098 $panels_data['widgets'], 1099 ! empty( $old_panels_data['widgets'] ) ? $old_panels_data['widgets'] : false, 1100 false 1101 ); 1102 $panels_data = SiteOrigin_Panels_Styles_Admin::single()->sanitize_all( $panels_data ); 1103 $return['sanitized_panels_data'] = $panels_data; 1104 1105 // Create a version of the builder data for post content 1106 SiteOrigin_Panels_Post_Content_Filters::add_filters(); 1107 $GLOBALS[ 'SITEORIGIN_PANELS_POST_CONTENT_RENDER' ] = true; 1108 $return['post_content'] = SiteOrigin_Panels::renderer()->render( intval( $_POST['post_id'] ), false, $panels_data ); 1109 SiteOrigin_Panels_Post_Content_Filters::remove_filters(); 1110 unset( $GLOBALS[ 'SITEORIGIN_PANELS_POST_CONTENT_RENDER' ] ); 1111 1112 $GLOBALS[ 'SITEORIGIN_PANELS_PREVIEW_RENDER' ] = true; 1113 $return['preview'] = SiteOrigin_Panels::renderer()->render( intval( $_POST['post_id'] ), false, $panels_data ); 1114 unset( $GLOBALS[ 'SITEORIGIN_PANELS_PREVIEW_RENDER' ] ); 1115 1116 echo json_encode( $return ); 1117 1118 wp_die(); 1119 } 1120 1121 /** 1074 1122 * Display a widget form with the provided data 1075 1123 */ … … 1089 1137 ); 1090 1138 } 1091 1139 1092 1140 $request = array_map( 'stripslashes_deep', $_REQUEST ); 1093 1141 … … 1120 1168 */ 1121 1169 public function layout_block_preview() { 1122 1170 1123 1171 if ( empty( $_REQUEST['_panelsnonce'] ) || ! wp_verify_nonce( $_REQUEST['_panelsnonce'], 'layout-block-preview' ) ) { 1124 1172 wp_die(); 1125 1173 } 1126 1174 1127 1175 $panels_data = json_decode( wp_unslash( $_POST['panelsData'] ), true ); 1128 1176 $builder_id = 'gbp' . uniqid(); … … 1135 1183 } 1136 1184 $rendered_layout = SiteOrigin_Panels::renderer()->render( $builder_id, true, $panels_data, $layout_data, true ); 1137 1185 1138 1186 // Need to explicitly call `siteorigin_widget_print_styles` because Gutenberg previews don't render a full version of the front end, 1139 1187 // so neither the `wp_head` nor the `wp_footer` actions are called, which usually trigger `siteorigin_widget_print_styles`. … … 1143 1191 $rendered_layout .= ob_get_clean(); 1144 1192 } 1145 1193 1146 1194 echo $rendered_layout; 1147 1195 wp_die(); 1148 1196 } 1149 1197 1150 1198 public function layout_block_sanitize() { 1151 1199 1152 1200 if ( empty( $_REQUEST['_panelsnonce'] ) || ! wp_verify_nonce( $_REQUEST['_panelsnonce'], 'layout-block-sanitize' ) ) { 1153 1201 wp_die(); 1154 1202 } 1155 1203 1156 1204 $panels_data = json_decode( wp_unslash( $_POST['panelsData'] ), true ); 1157 1205 $panels_data['widgets'] = SiteOrigin_Panels_Admin::single()->process_raw_widgets( $panels_data['widgets'], false, true, true ); 1158 1206 $panels_data = SiteOrigin_Panels_Styles_Admin::single()->sanitize_all( $panels_data ); 1159 1207 1160 1208 wp_send_json( $panels_data ); 1161 1209 } … … 1255 1303 <?php 1256 1304 } 1257 1305 1258 1306 public function admin_notices() { 1259 1307 global $typenow, $pagenow; … … 1275 1323 } 1276 1324 } 1277 1325 1278 1326 /** 1279 1327 * Show Classic Editor for existing PB posts. … … 1285 1333 */ 1286 1334 public function show_classic_editor_for_panels( $use_block_editor, $post_type ) { 1287 1335 1288 1336 // For new pages. 1289 1337 if ( isset( $_GET['block-editor'] ) ) { … … 1292 1340 return false; 1293 1341 } 1294 1342 1295 1343 $post_types = siteorigin_panels_setting( 'post-types' ); 1296 1344 global $pagenow; … … 1311 1359 $use_block_editor = false; 1312 1360 } 1313 1361 1314 1362 return $use_block_editor; 1315 1363 } 1316 1364 1317 1365 /** 1318 1366 * This was copied from Gutenberg and slightly modified as a quick way to allow users to create new Page Builder pages … … 1321 1369 function add_panels_add_new_button() { 1322 1370 global $typenow; 1323 1371 1324 1372 if ( 'wp_block' === $typenow ) { 1325 1373 ?> … … 1331 1379 <?php 1332 1380 } 1333 1381 1334 1382 if ( ! $this->show_add_new_dropdown_for_type( $typenow ) ) { 1335 1383 return; 1336 1384 } 1337 1385 1338 1386 ?> 1339 1387 <style type="text/css"> … … 1341 1389 display: inline-block; 1342 1390 } 1343 1391 1344 1392 .split-page-title-action a, 1345 1393 .split-page-title-action a:active, … … 1360 1408 outline: 0; 1361 1409 } 1362 1410 1363 1411 .split-page-title-action a:hover, 1364 1412 .split-page-title-action .expander:hover:after { … … 1367 1415 color: #fff; 1368 1416 } 1369 1417 1370 1418 .split-page-title-action a:focus, 1371 1419 .split-page-title-action .expander:focus:after { … … 1373 1421 box-shadow: 0 0 2px rgba( 30, 140, 190, 0.8 ); 1374 1422 } 1375 1423 1376 1424 .split-page-title-action .expander:after { 1377 1425 content: "\f140"; … … 1386 1434 <?php echo is_rtl() ? 'right: -1px;' : 'left: -1px;' ?> 1387 1435 } 1388 1436 1389 1437 .split-page-title-action .dropdown { 1390 1438 display: none; 1391 1439 } 1392 1440 1393 1441 .split-page-title-action .dropdown.visible { 1394 1442 display: block; … … 1397 1445 z-index: 1; 1398 1446 } 1399 1447 1400 1448 .split-page-title-action .dropdown.visible a { 1401 1449 display: block; … … 1404 1452 <?php echo is_rtl() ? 'padding-left: 9px;' : 'padding-right: 9px;' ?> 1405 1453 } 1406 1454 1407 1455 .split-page-title-action .expander { 1408 1456 outline: none; … … 1410 1458 margin-top: 1px; 1411 1459 } 1412 1460 1413 1461 </style> 1414 1462 <script type="text/javascript"> … … 1416 1464 var buttons = document.getElementsByClassName( 'page-title-action' ), 1417 1465 button = buttons.item( 0 ); 1418 1466 1419 1467 if ( ! button ) { 1420 1468 return; 1421 1469 } 1422 1470 1423 1471 var url = button.href; 1424 1472 var urlHasParams = ( -1 !== url.indexOf( '?' ) ); 1425 1473 var panelsUrl = url + ( urlHasParams ? '&' : '?' ) + 'siteorigin-page-builder'; 1426 1474 var blockEditorUrl = url + ( urlHasParams ? '&' : '?' ) + 'block-editor'; 1427 1475 1428 1476 var newbutton = '<span id="split-page-title-action" class="split-page-title-action">'; 1429 1477 newbutton += '<a href="' + url + '">' + button.innerText + '</a>'; … … 1431 1479 newbutton += '<span class="dropdown"><a href="' + panelsUrl + '"><?php echo esc_html( __( 'SiteOrigin Page Builder', 'siteorigin-panels' ) ); ?></a>'; 1432 1480 newbutton += '<a href="' + blockEditorUrl + '"><?php echo esc_html( __( 'Block Editor', 'siteorigin-panels' ) ); ?></a></span></span><span class="page-title-action" style="display:none;"></span>'; 1433 1481 1434 1482 button.insertAdjacentHTML( 'afterend', newbutton ); 1435 1483 button.parentNode.removeChild( button ); 1436 1484 1437 1485 var expander = document.getElementById( 'split-page-title-action' ).getElementsByClassName( 'expander' ).item( 0 ); 1438 1486 var dropdown = expander.parentNode.querySelector( '.dropdown' ); … … 1454 1502 <?php 1455 1503 } 1456 1504 1457 1505 private function show_add_new_dropdown_for_type( $post_type ) { 1458 1506 1459 1507 $show = in_array( $post_type, siteorigin_panels_setting( 'post-types' ) ); 1460 1508 1461 1509 // WooCommerce product type doesn't support block editor... 1462 1510 $show = $show && ! ( class_exists( 'WooCommerce' ) && $post_type == 'product' ); 1463 1511 1464 1512 if ( class_exists( 'SiteOrigin_Premium_Plugin_Cpt_Builder' ) ) { 1465 1513 $show = $show && $post_type != SiteOrigin_Premium_Plugin_Cpt_Builder::POST_TYPE; … … 1468 1516 $show = $show && ! isset( $so_custom_types[ $post_type ] ); 1469 1517 } 1470 1518 1471 1519 return apply_filters( 'so_panels_show_add_new_dropdown_for_type', $show, $post_type ); 1472 1520 } 1473 1521 1474 1522 public function add_panels_post_state( $post_states, $post ) { 1475 1523 $panels_data = get_post_meta( $post->ID, 'panels_data', true ); 1476 1524 1477 1525 if ( ! empty( $panels_data ) ) { 1478 1526 $post_states[] = __( 'SiteOrigin Page Builder', 'siteorigin-panels' ); 1479 1527 } 1480 1528 1481 1529 return $post_states; 1482 1530 } -
siteorigin-panels/tags/2.11.0/inc/css-builder.php
r2141880 r2316661 39 39 $attribute_string = implode( ';', $attribute_string ); 40 40 41 // Add everything we need to the CSS selector 42 if ( empty( $this->css[ $resolution ] ) ) { 43 $this->css[ $resolution ] = array(); 44 } 45 if ( empty( $this->css[ $resolution ][ $attribute_string ] ) ) { 46 $this->css[ $resolution ][ $attribute_string ] = array(); 47 } 48 $this->css[ $resolution ][ $attribute_string ][] = $selector; 41 if ( ! empty( $attribute_string ) ) { 42 // Add everything we need to the CSS selector 43 if ( empty( $this->css[ $resolution ] ) ) { 44 $this->css[ $resolution ] = array(); 45 } 46 if ( empty( $this->css[ $resolution ][ $attribute_string ] ) ) { 47 $this->css[ $resolution ][ $attribute_string ] = array(); 48 } 49 50 $this->css[ $resolution ][ $attribute_string ][] = $selector; 51 } 49 52 } 50 53 -
siteorigin-panels/tags/2.11.0/inc/styles.php
r2161603 r2316661 95 95 96 96 $fields[ $id . '_css' ] = array( 97 'name' => __( 'CSS Styles', 'siteorigin-panels' ),97 'name' => __( 'CSS Declarations', 'siteorigin-panels' ), 98 98 'type' => 'code', 99 99 'group' => 'attributes', 100 'description' => __( 'One style attributeper line.', 'siteorigin-panels' ),100 'description' => __( 'One declaration per line.', 'siteorigin-panels' ), 101 101 'priority' => 10, 102 102 ); 103 103 104 104 $fields[ 'mobile_css' ] = array( 105 'name' => __( 'Mobile CSS Styles', 'siteorigin-panels' ),105 'name' => __( 'Mobile CSS Declarations', 'siteorigin-panels' ), 106 106 'type' => 'code', 107 107 'group' => 'attributes', 108 'description' => __( 'CSS applied when in mobile view.', 'siteorigin-panels' ),108 'description' => __( 'CSS declarations applied when in mobile view.', 'siteorigin-panels' ), 109 109 'priority' => 11, 110 110 ); -
siteorigin-panels/tags/2.11.0/js/yoast-compat.js
r2141880 r2316661 1 /* global jQuery, YoastSEO */1 /* global jQuery, YoastSEO, _, panelsOptions */ 2 2 3 3 jQuery(function($){ … … 8 8 } 9 9 10 var decodeEntities = (function() {11 // this prevents any overhead from creating the object each time12 var element = document.createElement('div');13 14 function decodeHTMLEntities (str) {15 if(str && typeof str === 'string') {16 // strip script/html tags17 str = str.replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi, '');18 str = str.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi, '');19 element.innerHTML = str;20 str = element.textContent;21 element.textContent = '';22 }23 24 return str;25 }26 27 return decodeHTMLEntities;28 })();29 30 10 var SiteOriginYoastCompat = function() { 31 11 YoastSEO.app.registerPlugin( 'siteOriginYoastCompat', { status: 'ready' } ); … … 34 14 35 15 SiteOriginYoastCompat.prototype.contentModification = function(data) { 36 var re = new RegExp( panelsOptions.siteoriginWidgetRegex , "i" ); 37 var $data = $( '<div>' + data + '</div>' ); 16 if( 17 typeof window.soPanelsBuilderView !== 'undefined' && 18 window.soPanelsBuilderView.contentPreview 19 ) { 20 var $data = $( window.soPanelsBuilderView.contentPreview ); 38 21 39 if( $data.find('.so-panel.widget').length === 0 ) { 40 // Skip this for non Page builder pages 41 return data; 22 if( $data.find('.so-panel.widget').length === 0 ) { 23 // Skip this for empty pages 24 return data; 25 } 26 27 // Remove style tags created by Widgets Bundle 28 $data.find('style').remove(); 29 30 var whitelist = [ 31 'p', 'a', 'img', 'caption', 'br', 32 'blockquote', 'cite', 33 'em', 'strong', 'i', 'b', 34 'q', 35 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 36 'ul', 'ol', 'li', 37 'table', 'tr', 'th', 'td' 38 ].join(','); 39 40 $data.find("*").not(whitelist).each(function() { 41 var content = $(this).contents(); 42 $(this).replaceWith(content); 43 }); 44 45 data = $data.html(); 42 46 } 43 47 44 $data.find('.so-panel.widget').each(function(i, el) { 45 46 var $widget = $(el); 47 // Style wrappers prevent us from matching the widget shortcode correctly. 48 if ( $widget.find( '> .panel-widget-style' ).length > 0 ) { 49 $widget = $widget.find( '> .panel-widget-style' ); 50 } 51 var match = re.exec( $widget.html() ); 52 53 try{ 54 if( ! _.isNull( match ) && $widget.html().replace( re, '' ).trim() === '' ) { 55 var classMatch = /class="(.*?)"/.exec(match[3]), 56 dataInput = jQuery(match[5]), 57 data = JSON.parse(decodeEntities(dataInput.val())), 58 widgetInstance = data.instance, 59 newHTML = ''; 60 61 if( ! _.isNull(widgetInstance.title) ) { 62 newHTML += '<h3>' + widgetInstance.title + '</h3>'; 63 } 64 65 if( ! _.isNull( classMatch ) ) { 66 var widgetClass = classMatch[1]; 67 switch( widgetClass ) { 68 case 'SiteOrigin_Widget_Image_Widget': 69 // We want a direct assignment for the SO Image Widget to get rid of the title 70 newHTML = $('<img/>').attr({ 71 'src': '#' + widgetInstance.image, 72 'srcset': '', 73 'alt': widgetInstance.alt, 74 'title': widgetInstance.title, 75 }).prop('outerHTML'); 76 break; 77 78 case 'WP_Widget_Media_Image': 79 newHTML = $('<img/>').attr({ 80 'src': '#' + widgetInstance.attachment_id, 81 'srcset': '', 82 'alt': widgetInstance.alt, 83 'title': widgetInstance.image_title, 84 }).prop('outerHTML'); 85 break; 86 87 case 'SiteOrigin_Widgets_ImageGrid_Widget': 88 case 'SiteOrigin_Widget_Simple_Masonry_Widget': 89 newHTML = $( '<div/>' ); 90 var imgItems = widgetClass === 'SiteOrigin_Widgets_ImageGrid_Widget' ? widgetInstance.images : widgetInstance.items; 91 for ( var i = 0; i < imgItems.length; i++ ) { 92 var imgItem = imgItems[ i ]; 93 var itemHTML = $('<img/>').attr({ 94 'src': '#' + imgItem.image, 95 'srcset': '', 96 'alt': ( imgItem.hasOwnProperty( 'alt' ) ? imgItem.alt : imgItem.title ), 97 'title': imgItem.title, 98 }); 99 100 newHTML.append( itemHTML ) 101 } 102 newHTML = newHTML.prop( 'outerHTML' ); 103 break; 104 105 case 'SiteOrigin_Widget_Accordion_Widget': 106 case 'SiteOrigin_Widget_Tabs_Widget': 107 var contentItems = widgetClass === 'SiteOrigin_Widget_Accordion_Widget' ? widgetInstance.panels : widgetInstance.tabs; 108 newHTML = $( '<div/>' ); 109 for ( var i = 0; i < contentItems.length; i++ ) { 110 var item = contentItems[ i ]; 111 if ( item.content_type !== 'text' ) { 112 continue; 113 } 114 115 newHTML.append( '<h3>' + item.title + '</h3>' ); 116 newHTML.append( '<div>' + item.content_text + '</div>') 117 } 118 newHTML = newHTML.prop( 'outerHTML' ); 119 break; 120 case 'SiteOrigin_Widget_Button_Widget': 121 var hrefSeparator = widgetInstance.url.includes('://') ? '' : '#'; 122 newHTML = $( '<a>' + widgetInstance.text + '</a>' ).attr({ 123 'href': hrefSeparator + widgetInstance.url, 124 }).prop('outerHTML'); 125 break; 126 } 127 } 128 129 $widget.html(newHTML); 130 } 131 } 132 catch(e) { 133 // If there was an error, just clear the widget content. 134 $widget.html(''); 135 } 136 137 }); 138 return $data.html(); 48 return data; 139 49 }; 140 50 -
siteorigin-panels/tags/2.11.0/js/yoast-compat.min.js
r2278148 r2316661 1 jQuery((function(t){if(void 0!==YoastSEO.app){var e,i=(e=document.createElement("div"),function(t){return t&&"string"==typeof t&&(t=(t=t.replace(/<script[^>]*>([\S\s]*?)<\/script>/gim,"")).replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gim,""),e.innerHTML=t,t=e.textContent,e.textContent=""),t}),a=function(){YoastSEO.app.registerPlugin("siteOriginYoastCompat",{status:"ready"}),YoastSEO.app.registerModification("content",this.contentModification,"siteOriginYoastCompat",5)};a.prototype.contentModification=function(e){var a=new RegExp(panelsOptions.siteoriginWidgetRegex,"i"),r=t("<div>"+e+"</div>");return 0===r.find(".so-panel.widget").length?e:(r.find(".so-panel.widget").each((function(e,r){var n=t(r);n.find("> .panel-widget-style").length>0&&(n=n.find("> .panel-widget-style"));var s=a.exec(n.html());try{if(!_.isNull(s)&&""===n.html().replace(a,"").trim()){var g=/class="(.*?)"/.exec(s[3]),o=jQuery(s[5]),l=JSON.parse(i(o.val())).instance,d="";if(_.isNull(l.title)||(d+="<h3>"+l.title+"</h3>"),!_.isNull(g)){var c=g[1];switch(c){case"SiteOrigin_Widget_Image_Widget":d=t("<img/>").attr({src:"#"+l.image,srcset:"",alt:l.alt,title:l.title}).prop("outerHTML");break;case"WP_Widget_Media_Image":d=t("<img/>").attr({src:"#"+l.attachment_id,srcset:"",alt:l.alt,title:l.image_title}).prop("outerHTML");break;case"SiteOrigin_Widgets_ImageGrid_Widget":case"SiteOrigin_Widget_Simple_Masonry_Widget":d=t("<div/>");var p="SiteOrigin_Widgets_ImageGrid_Widget"===c?l.images:l.items;for(e=0;e<p.length;e++){var m=p[e],u=t("<img/>").attr({src:"#"+m.image,srcset:"",alt:m.hasOwnProperty("alt")?m.alt:m.title,title:m.title});d.append(u)}d=d.prop("outerHTML");break;case"SiteOrigin_Widget_Accordion_Widget":case"SiteOrigin_Widget_Tabs_Widget":var h="SiteOrigin_Widget_Accordion_Widget"===c?l.panels:l.tabs;d=t("<div/>");for(e=0;e<h.length;e++){var v=h[e];"text"===v.content_type&&(d.append("<h3>"+v.title+"</h3>"),d.append("<div>"+v.content_text+"</div>"))}d=d.prop("outerHTML");break;case"SiteOrigin_Widget_Button_Widget":var f=l.url.includes("://")?"":"#";d=t("<a>"+l.text+"</a>").attr({href:f+l.url}).prop("outerHTML")}}n.html(d)}}catch(t){n.html("")}})),r.html())},new a}}));1 jQuery((function(t){if(void 0!==YoastSEO.app){var i=function(){YoastSEO.app.registerPlugin("siteOriginYoastCompat",{status:"ready"}),YoastSEO.app.registerModification("content",this.contentModification,"siteOriginYoastCompat",5)};i.prototype.contentModification=function(i){if(void 0!==window.soPanelsBuilderView&&window.soPanelsBuilderView.contentPreview){var e=t(window.soPanelsBuilderView.contentPreview);if(0===e.find(".so-panel.widget").length)return i;e.find("style").remove();var n=["p","a","img","caption","br","blockquote","cite","em","strong","i","b","q","h1","h2","h3","h4","h5","h6","ul","ol","li","table","tr","th","td"].join(",");e.find("*").not(n).each((function(){var i=t(this).contents();t(this).replaceWith(i)})),i=e.html()}return i},new i}})); -
siteorigin-panels/tags/2.11.0/lang/siteorigin-panels.pot
r2298584 r2316661 77 77 msgstr "" 78 78 79 #: inc/admin-dashboard.php:95, inc/admin.php:16 179 #: inc/admin-dashboard.php:95, inc/admin.php:162 80 80 msgid "Support Forum" 81 81 msgstr "" … … 154 154 msgstr "" 155 155 156 #: inc/admin.php:16 4, tpl/js-templates.php:44156 #: inc/admin.php:165, tpl/js-templates.php:44 157 157 msgid "Addons" 158 158 msgstr "" 159 159 160 #: inc/admin.php:17 8, inc/admin.php:574, inc/admin.php:1176, inc/admin.php:1181, inc/settings.php:199, tpl/js-templates.php:197160 #: inc/admin.php:179, inc/admin.php:575, inc/admin.php:1224, inc/admin.php:1229, inc/settings.php:199, tpl/js-templates.php:197 161 161 msgid "Page Builder" 162 162 msgstr "" 163 163 164 #: inc/admin.php:33 0164 #: inc/admin.php:331 165 165 msgid "All Widgets" 166 166 msgstr "" 167 167 168 #: inc/admin.php:35 7168 #: inc/admin.php:358 169 169 msgid "Missing Widget" 170 170 msgstr "" 171 171 172 #: inc/admin.php:35 8172 #: inc/admin.php:359 173 173 msgid "Page Builder doesn't know about this widget." 174 174 msgstr "" 175 175 176 176 #. translators: Number of seconds since 177 #: inc/admin.php:36 2177 #: inc/admin.php:363 178 178 msgid "%d seconds" 179 179 msgstr "" 180 180 181 181 #. translators: Number of minutes since 182 #: inc/admin.php:36 4182 #: inc/admin.php:365 183 183 msgid "%d minutes" 184 184 msgstr "" 185 185 186 186 #. translators: Number of hours since 187 #: inc/admin.php:36 6187 #: inc/admin.php:367 188 188 msgid "%d hours" 189 189 msgstr "" 190 190 191 191 #. translators: A single second since 192 #: inc/admin.php:3 69192 #: inc/admin.php:370 193 193 msgid "%d second" 194 194 msgstr "" 195 195 196 196 #. translators: A single minute since 197 #: inc/admin.php:37 1197 #: inc/admin.php:372 198 198 msgid "%d minute" 199 199 msgstr "" 200 200 201 201 #. translators: A single hour since 202 #: inc/admin.php:37 3202 #: inc/admin.php:374 203 203 msgid "%d hour" 204 204 msgstr "" 205 205 206 206 #. translators: Time ago - eg. "1 minute before". 207 #: inc/admin.php:37 6207 #: inc/admin.php:377 208 208 msgid "%s before" 209 209 msgstr "" 210 210 211 #: inc/admin.php:37 7211 #: inc/admin.php:378 212 212 msgid "Now" 213 213 msgstr "" 214 214 215 #: inc/admin.php:38 1215 #: inc/admin.php:382 216 216 msgid "Current" 217 217 msgstr "" 218 218 219 #: inc/admin.php:38 2219 #: inc/admin.php:383 220 220 msgid "Original" 221 221 msgstr "" 222 222 223 #: inc/admin.php:38 3223 #: inc/admin.php:384 224 224 msgid "Version restored" 225 225 msgstr "" 226 226 227 #: inc/admin.php:38 4227 #: inc/admin.php:385 228 228 msgid "Converted to editor" 229 229 msgstr "" 230 230 231 231 #. translators: Message displayed in the history when a widget is deleted 232 #: inc/admin.php:38 8232 #: inc/admin.php:389 233 233 msgid "Widget deleted" 234 234 msgstr "" 235 235 236 236 #. translators: Message displayed in the history when a widget is added 237 #: inc/admin.php:39 0237 #: inc/admin.php:391 238 238 msgid "Widget added" 239 239 msgstr "" 240 240 241 241 #. translators: Message displayed in the history when a widget is edited 242 #: inc/admin.php:39 2242 #: inc/admin.php:393 243 243 msgid "Widget edited" 244 244 msgstr "" 245 245 246 246 #. translators: Message displayed in the history when a widget is duplicated 247 #: inc/admin.php:39 4247 #: inc/admin.php:395 248 248 msgid "Widget duplicated" 249 249 msgstr "" 250 250 251 251 #. translators: Message displayed in the history when a widget position is changed 252 #: inc/admin.php:39 6252 #: inc/admin.php:397 253 253 msgid "Widget moved" 254 254 msgstr "" 255 255 256 256 #. translators: Message displayed in the history when a row is deleted 257 #: inc/admin.php:40 0257 #: inc/admin.php:401 258 258 msgid "Row deleted" 259 259 msgstr "" 260 260 261 261 #. translators: Message displayed in the history when a row is added 262 #: inc/admin.php:40 2262 #: inc/admin.php:403 263 263 msgid "Row added" 264 264 msgstr "" 265 265 266 266 #. translators: Message displayed in the history when a row is edited 267 #: inc/admin.php:40 4267 #: inc/admin.php:405 268 268 msgid "Row edited" 269 269 msgstr "" 270 270 271 271 #. translators: Message displayed in the history when a row position is changed 272 #: inc/admin.php:40 6272 #: inc/admin.php:407 273 273 msgid "Row moved" 274 274 msgstr "" 275 275 276 276 #. translators: Message displayed in the history when a row is duplicated 277 #: inc/admin.php:40 8277 #: inc/admin.php:409 278 278 msgid "Row duplicated" 279 279 msgstr "" 280 280 281 281 #. translators: Message displayed in the history when a row is pasted 282 #: inc/admin.php:41 0282 #: inc/admin.php:411 283 283 msgid "Row pasted" 284 284 msgstr "" 285 285 286 #: inc/admin.php:41 3286 #: inc/admin.php:414 287 287 msgid "Cell resized" 288 288 msgstr "" 289 289 290 #: inc/admin.php:41 6290 #: inc/admin.php:417 291 291 msgid "Prebuilt layout loaded" 292 292 msgstr "" 293 293 294 #: inc/admin.php:42 0294 #: inc/admin.php:421 295 295 msgid "Loading prebuilt layout" 296 296 msgstr "" 297 297 298 #: inc/admin.php:42 1298 #: inc/admin.php:422 299 299 msgid "Would you like to copy this editor's existing content to Page Builder?" 300 300 msgstr "" 301 301 302 #: inc/admin.php:42 2302 #: inc/admin.php:423 303 303 msgid "Would you like to clear your Page Builder content and revert to using the standard visual editor?" 304 304 msgstr "" 305 305 306 306 #. translators: This is the title for a widget called "Layout Builder" 307 #: inc/admin.php:42 4307 #: inc/admin.php:425 308 308 msgid "Layout Builder Widget" 309 309 msgstr "" 310 310 311 311 #. translators: A standard confirmation message 312 #: inc/admin.php:42 6, tpl/js-templates.php:97, tpl/js-templates.php:422312 #: inc/admin.php:427, tpl/js-templates.php:97, tpl/js-templates.php:422 313 313 msgid "Are you sure?" 314 314 msgstr "" 315 315 316 316 #. translators: When a layout file is ready to be inserted. %s is the filename. 317 #: inc/admin.php:42 8317 #: inc/admin.php:429 318 318 msgid "%s is ready to insert." 319 319 msgstr "" 320 320 321 #: inc/admin.php:43 2321 #: inc/admin.php:433 322 322 msgid "Add Widget Below" 323 323 msgstr "" 324 324 325 #: inc/admin.php:43 3325 #: inc/admin.php:434 326 326 msgid "Add Widget to Cell" 327 327 msgstr "" 328 328 329 #: inc/admin.php:43 4, tpl/js-templates.php:224329 #: inc/admin.php:435, tpl/js-templates.php:224 330 330 msgid "Search Widgets" 331 331 msgstr "" 332 332 333 #: inc/admin.php:43 6, tpl/js-templates.php:17, tpl/js-templates.php:19333 #: inc/admin.php:437, tpl/js-templates.php:17, tpl/js-templates.php:19 334 334 msgid "Add Row" 335 335 msgstr "" 336 336 337 #: inc/admin.php:43 7337 #: inc/admin.php:438 338 338 msgid "Column" 339 339 msgstr "" 340 340 341 #: inc/admin.php:4 39341 #: inc/admin.php:440 342 342 msgid "Cell Actions" 343 343 msgstr "" 344 344 345 #: inc/admin.php:44 0345 #: inc/admin.php:441 346 346 msgid "Paste Widget" 347 347 msgstr "" 348 348 349 #: inc/admin.php:44 2349 #: inc/admin.php:443 350 350 msgid "Widget Actions" 351 351 msgstr "" 352 352 353 #: inc/admin.php:44 3353 #: inc/admin.php:444 354 354 msgid "Edit Widget" 355 355 msgstr "" 356 356 357 #: inc/admin.php:44 4357 #: inc/admin.php:445 358 358 msgid "Duplicate Widget" 359 359 msgstr "" 360 360 361 #: inc/admin.php:44 5361 #: inc/admin.php:446 362 362 msgid "Delete Widget" 363 363 msgstr "" 364 364 365 #: inc/admin.php:44 6365 #: inc/admin.php:447 366 366 msgid "Copy Widget" 367 367 msgstr "" 368 368 369 #: inc/admin.php:44 7369 #: inc/admin.php:448 370 370 msgid "Paste Widget Below" 371 371 msgstr "" 372 372 373 #: inc/admin.php:4 49373 #: inc/admin.php:450 374 374 msgid "Row Actions" 375 375 msgstr "" 376 376 377 #: inc/admin.php:45 0, tpl/js-templates.php:95377 #: inc/admin.php:451, tpl/js-templates.php:95 378 378 msgid "Edit Row" 379 379 msgstr "" 380 380 381 #: inc/admin.php:45 1, tpl/js-templates.php:96381 #: inc/admin.php:452, tpl/js-templates.php:96 382 382 msgid "Duplicate Row" 383 383 msgstr "" 384 384 385 #: inc/admin.php:45 2, tpl/js-templates.php:97385 #: inc/admin.php:453, tpl/js-templates.php:97 386 386 msgid "Delete Row" 387 387 msgstr "" 388 388 389 #: inc/admin.php:45 3389 #: inc/admin.php:454 390 390 msgid "Copy Row" 391 391 msgstr "" 392 392 393 #: inc/admin.php:45 4393 #: inc/admin.php:455 394 394 msgid "Paste Row" 395 395 msgstr "" 396 396 397 #: inc/admin.php:45 6397 #: inc/admin.php:457 398 398 msgid "Draft" 399 399 msgstr "" 400 400 401 #: inc/admin.php:45 7401 #: inc/admin.php:458 402 402 msgid "Untitled" 403 403 msgstr "" 404 404 405 #: inc/admin.php:4 59405 #: inc/admin.php:460 406 406 msgid "New Row" 407 407 msgstr "" 408 408 409 #: inc/admin.php:46 0, inc/admin.php:468, inc/styles.php:189, tpl/js-templates.php:62409 #: inc/admin.php:461, inc/admin.php:469, inc/styles.php:189, tpl/js-templates.php:62 410 410 msgid "Row" 411 411 msgstr "" 412 412 413 #: inc/admin.php:46 3413 #: inc/admin.php:464 414 414 msgid "Hmmm... Adding layout elements is not enabled. Please check if Page Builder has been configured to allow adding elements." 415 415 msgstr "" 416 416 417 #: inc/admin.php:46 4417 #: inc/admin.php:465 418 418 msgid "Add a {{%= items[0] %}} to get started." 419 419 msgstr "" 420 420 421 #: inc/admin.php:46 5421 #: inc/admin.php:466 422 422 msgid "Add a {{%= items[0] %}} or {{%= items[1] %}} to get started." 423 423 msgstr "" 424 424 425 #: inc/admin.php:46 6425 #: inc/admin.php:467 426 426 msgid "Add a {{%= items[0] %}}, {{%= items[1] %}} or {{%= items[2] %}} to get started." 427 427 msgstr "" 428 428 429 #: inc/admin.php:46 7, inc/styles.php:341, tpl/js-templates.php:61429 #: inc/admin.php:468, inc/styles.php:341, tpl/js-templates.php:61 430 430 msgid "Widget" 431 431 msgstr "" 432 432 433 #: inc/admin.php:4 69, tpl/js-templates.php:63433 #: inc/admin.php:470, tpl/js-templates.php:63 434 434 msgid "Prebuilt Layout" 435 435 msgstr "" 436 436 437 #: inc/admin.php:47 1437 #: inc/admin.php:472 438 438 msgid "Read our %s if you need help." 439 439 msgstr "" 440 440 441 #: inc/admin.php:47 2, tpl/js-templates.php:64441 #: inc/admin.php:473, tpl/js-templates.php:64 442 442 msgid "documentation" 443 443 msgstr "" 444 444 445 #: inc/admin.php:48 1445 #: inc/admin.php:482 446 446 msgid "Page Builder layouts" 447 447 msgstr "" 448 448 449 #: inc/admin.php:48 2449 #: inc/admin.php:483 450 450 msgid "Error uploading or importing file." 451 451 msgstr "" 452 452 453 #: inc/admin.php:4 89453 #: inc/admin.php:490 454 454 msgid "Unknown error. Failed to load the form. Please check your internet connection, contact your web site administrator, or try again later." 455 455 msgstr "" 456 456 457 457 #. translators: This is the default name given to a user's home page 458 #: inc/admin.php:65 7, inc/home.php:26458 #: inc/admin.php:658, inc/home.php:26 459 459 msgid "Home Page" 460 460 msgstr "" 461 461 462 #: inc/admin.php:75 8462 #: inc/admin.php:759 463 463 msgid "Untitled Widget" 464 464 msgstr "" 465 465 466 #: inc/admin.php:93 8466 #: inc/admin.php:939 467 467 msgid "You need to install 1{%1$s} to use the widget 2{%2$s}." 468 468 msgstr "" 469 469 470 #: inc/admin.php:94 4470 #: inc/admin.php:945 471 471 msgid "Save and reload this page to start using the widget after you've installed it." 472 472 msgstr "" 473 473 474 #: inc/admin.php:96 0474 #: inc/admin.php:961 475 475 msgid "The widget 1{%1$s} is not available. Please try locate and install the missing plugin. Post on the 2{support forums} if you need help." 476 476 msgstr "" 477 477 478 #: inc/admin.php:1 079, inc/styles-admin.php:23478 #: inc/admin.php:1127, inc/styles-admin.php:23 479 479 msgid "The supplied nonce is invalid." 480 480 msgstr "" 481 481 482 #: inc/admin.php:1 080, inc/styles-admin.php:24482 #: inc/admin.php:1128, inc/styles-admin.php:24 483 483 msgid "Invalid nonce." 484 484 msgstr "" 485 485 486 #: inc/admin.php:1 086486 #: inc/admin.php:1134 487 487 msgid "Please specify the type of widget form to be rendered." 488 488 msgstr "" 489 489 490 #: inc/admin.php:1 087490 #: inc/admin.php:1135 491 491 msgid "Missing widget type." 492 492 msgstr "" 493 493 494 #: inc/admin.php:1 194494 #: inc/admin.php:1242 495 495 msgid "%s Widget" 496 496 msgid_plural "%s Widgets" … … 498 498 msgstr[1] "" 499 499 500 #: inc/admin.php:12 37500 #: inc/admin.php:1285 501 501 msgid "Get a lightbox addon for SiteOrigin widgets" 502 502 msgstr "" 503 503 504 #: inc/admin.php:12 41504 #: inc/admin.php:1289 505 505 msgid "Get the row, cell and widget animations addon" 506 506 msgstr "" 507 507 508 #: inc/admin.php:12 45508 #: inc/admin.php:1293 509 509 msgid "Get premium email support for SiteOrigin Page Builder" 510 510 msgstr "" 511 511 512 #: inc/admin.php:14 30512 #: inc/admin.php:1478 513 513 msgid "Toggle editor selection menu" 514 514 msgstr "" 515 515 516 #: inc/admin.php:14 31, inc/admin.php:1478, inc/settings.php:199, settings/tpl/settings.php:9516 #: inc/admin.php:1479, inc/admin.php:1526, inc/settings.php:199, settings/tpl/settings.php:9 517 517 msgid "SiteOrigin Page Builder" 518 518 msgstr "" 519 519 520 #: inc/admin.php:14 32520 #: inc/admin.php:1480 521 521 msgid "Block Editor" 522 522 msgstr "" … … 859 859 860 860 #: inc/styles.php:97 861 msgid "CSS Styles"861 msgid "CSS Declarations" 862 862 msgstr "" 863 863 864 864 #: inc/styles.php:100 865 msgid "One style attributeper line."865 msgid "One declaration per line." 866 866 msgstr "" 867 867 868 868 #: inc/styles.php:105 869 msgid "Mobile CSS Styles"869 msgid "Mobile CSS Declarations" 870 870 msgstr "" 871 871 872 872 #: inc/styles.php:108 873 msgid "CSS applied when in mobile view."873 msgid "CSS declarations applied when in mobile view." 874 874 msgstr "" 875 875 -
siteorigin-panels/tags/2.11.0/readme.txt
r2307143 r2316661 3 3 Requires at least: 4.7 4 4 Tested up to: 5.5 5 Stable tag: 2.1 0.176 Build time: 2020-0 5-18T13:30:18+02:005 Stable tag: 2.11.0 6 Build time: 2020-06-02T16:27:51+02:00 7 7 License: GPLv3 8 8 License URI: http://www.gnu.org/licenses/gpl.html … … 96 96 97 97 == Changelog == 98 99 = 2.11.0 - 02 June 2020 = 100 * Live Editor: Ensured device viewing mode retained after update. 101 * Live Editor: Improved device preview transition. 102 * Legacy Layout: Detect IE 11 as legacy browser. 103 * Yoast SEO: Improved Classic Editor support. 104 * Yoast SEO: Added Block Editor support for the SiteOrigin Layout block. 105 * CSS Builder: Prevented rules without declarations from outputting. 106 * Widget Previews: Prevented boolean values from being used as widget descriptions. 107 * Live Editor: Resolved Chrome bug by setting preview url for iframe. 98 108 99 109 = 2.10.17 - 18 May 2020 = -
siteorigin-panels/tags/2.11.0/siteorigin-panels.php
r2307143 r2316661 4 4 Plugin URI: https://siteorigin.com/page-builder/ 5 5 Description: A drag and drop, responsive page builder that simplifies building your website. 6 Version: 2.1 0.176 Version: 2.11.0 7 7 Author: SiteOrigin 8 8 Author URI: https://siteorigin.com … … 12 12 */ 13 13 14 define( 'SITEORIGIN_PANELS_VERSION', '2.1 0.17' );14 define( 'SITEORIGIN_PANELS_VERSION', '2.11.0' ); 15 15 if ( ! defined( 'SITEORIGIN_PANELS_JS_SUFFIX' ) ) { 16 16 define( 'SITEORIGIN_PANELS_JS_SUFFIX', '.min' ); 17 17 } 18 18 define( 'SITEORIGIN_PANELS_CSS_SUFFIX', '.min' ); 19 define( 'SITEORIGIN_PANELS_VERSION_SUFFIX', '-21 017' );19 define( 'SITEORIGIN_PANELS_VERSION_SUFFIX', '-2110' ); 20 20 21 21 require_once plugin_dir_path( __FILE__ ) . 'inc/functions.php'; … … 126 126 127 127 return 128 // IE lte 1 0129 ( preg_match('/ MSIE\s(?P<v>\d+)/i', $agent, $B) && $B['v'] <= 10) ||128 // IE lte 11 129 ( preg_match('/Trident\/(?P<v>\d+)/i', $agent, $B) && $B['v'] <= 7 ) || 130 130 // Chrome lte 25 131 131 ( preg_match('/Chrome\/(?P<v>\d+)/i', $agent, $B) && $B['v'] <= 25 ) || -
siteorigin-panels/trunk/compat/js/siteorigin-panels-layout-block.js
r2278148 r2316661 266 266 panelsData: { 267 267 type: 'object' 268 }, 269 contentPreview: { 270 type: 'string' 268 271 } 269 272 }, … … 276 279 if (!_.isEmpty(newPanelsData.widgets)) { 277 280 // Send panelsData to server for sanitization. 278 jQuery.post(soPanelsBlockEditorAdmin.sanitizeUrl, { 279 action: 'so_panels_layout_block_sanitize', 280 panelsData: JSON.stringify(newPanelsData) 281 }, function (sanitizedPanelsData) { 282 if (sanitizedPanelsData !== '') { 283 setAttributes({ 284 panelsData: sanitizedPanelsData 285 }); 286 } 281 jQuery.post(panelsOptions.ajaxurl, { 282 action: 'so_panels_builder_content_json', 283 panels_data: JSON.stringify(newPanelsData), 284 post_id: wp.data.select("core/editor").getCurrentPostId() 285 }, function (content) { 286 var panelsAttributes = {}; 287 288 if (content.sanitized_panels_data !== '') { 289 panelsAttributes.panelsData = content.sanitized_panels_data; 290 } 291 292 if (content.preview !== '') { 293 panelsAttributes.contentPreview = content.preview; 294 } 295 296 setAttributes(panelsAttributes); 287 297 }); 288 298 } … … 304 314 }); 305 315 }, 306 save: function save( ) {307 // Render in PHP308 return null;316 save: function save(_ref2) { 317 var attributes = _ref2.attributes; 318 return attributes.hasOwnProperty('contentPreview') ? React.createElement(RawHTML, null, attributes.contentPreview) : null; 309 319 } 310 320 }); -
siteorigin-panels/trunk/compat/js/siteorigin-panels-layout-block.min.js
r2278148 r2316661 1 "use strict";function _typeof(e){return(_typeof="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 _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?_assertThisInitialized(e):t}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _inherits(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&&_setPrototypeOf(e,t)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var _lodash=lodash,isEqual=_lodash.isEqual,debounce=_lodash.debounce,isEmpty=_lodash.isEmpty,isFunction=_lodash.isFunction,registerBlockType=wp.blocks.registerBlockType,_wp$element=wp.element,Component=_wp$element.Component,Fragment=_wp$element.Fragment,RawHTML=_wp$element.RawHTML,createRef=_wp$element.createRef,BlockControls=wp.editor.BlockControls,_wp$components=wp.components,Toolbar=_wp$components.Toolbar,IconButton=_wp$components.IconButton,Spinner=_wp$components.Spinner,__=wp.i18n.__,_window=window,soPanelsBlockEditorAdmin=_window.soPanelsBlockEditorAdmin,SiteOriginPanelsLayoutBlock=function(e){function t(e){var n;_classCallCheck(this,t),n=_possibleConstructorReturn(this,_getPrototypeOf(t).call(this,e));var i="edit"===soPanelsBlockEditorAdmin.defaultMode||isEmpty(e.panelsData);return n.state={editing:i,loadingPreview:!i,previewHtml:""},n.panelsContainer=createRef(),n.previewContainer=createRef(),n.panelsInitialized=!1,n.previewInitialized=!1,n}return _inherits(t,Component),_createClass(t,[{key:"componentDidMount",value:function(){this.isStillMounted=!0,this.state.editing?this.setupPanels():this.state.editing||this.previewInitialized||(this.fetchPreview(this.props),this.fetchPreview=debounce(this.fetchPreview,500))}},{key:"componentWillUnmount",value:function(){this.isStillMounted=!1,this.builderView&&this.builderView.off("content_change")}},{key:"componentDidUpdate",value:function(e){this.state.editing&&!this.panelsInitialized?this.setupPanels():this.state.loadingPreview?this.fetchPreview(this.props):!this.previewInitialized&&this.previewContainer.current&&(jQuery(document).trigger("panels_setup_preview"),this.previewInitialized=!0)}},{key:"setupPanels",value:function(){var e=this,t=jQuery(this.panelsContainer.current),n=new panels.model.builder;this.builderView=new panels.view.builder({model:n,config:{editorType:"standalone"}});var i=JSON.parse(JSON.stringify(jQuery.extend({},this.props.panelsData))),o=function(){isFunction(e.props.onRowOrWidgetMouseDown)&&e.props.onRowOrWidgetMouseDown();jQuery(document).on("mouseup",(function t(){jQuery(document).off("mouseup",t),isFunction(e.props.onRowOrWidgetMouseUp)&&e.props.onRowOrWidgetMouseUp()}))};this.builderView.on("row_added",(function(){e.builderView.$(".so-row-move").off("mousedown",o),e.builderView.$(".so-row-move").on("mousedown",o),e.builderView.$(".so-widget").off("mousedown",o),e.builderView.$(".so-widget").on("mousedown",o)})),this.builderView.on("widget_added",(function(){e.builderView.$(".so-widget").off("mousedown",o),e.builderView.$(".so-widget").on("mousedown",o)})),this.builderView.render().attach({container:t}).setData(i),this.builderView.trigger("builder_resize"),this.builderView.on("content_change",(function(){var t=e.builderView.getData();e.panelsDataChanged=!isEqual(i,t),e.panelsDataChanged&&(e.props.onContentChange&&isFunction(e.props.onContentChange)&&e.props.onContentChange(t),e.setState({loadingPreview:!0,previewHtml:""}))})),jQuery(document).trigger("panels_setup",this.builderView),this.panelsInitialized=!0}},{key:"fetchPreview",value:function(e){var t=this;if(this.isStillMounted){this.previewInitialized=!1;var n=this.currentFetchRequest=jQuery.post({url:soPanelsBlockEditorAdmin.previewUrl,data:{action:"so_panels_layout_block_preview",panelsData:JSON.stringify(e.panelsData)}}).then((function(e){t.isStillMounted&&n===t.currentFetchRequest&&e&&t.setState({previewHtml:e,loadingPreview:!1})}));return n}}},{key:"render",value:function(){var e=this,t=this.props.panelsData;if(this.state.editing)return React.createElement(Fragment,null,React.createElement(BlockControls,null,React.createElement(Toolbar,null,React.createElement(IconButton,{icon:"visibility",className:"components-icon-button components-toolbar__control",label:__("Preview layout.","siteorigin-panels"),onClick:function(){t&&e.setState({editing:!1})}}))),React.createElement("div",{key:"layout-block",className:"siteorigin-panels-layout-block-container",ref:this.panelsContainer}));var n=this.state.loadingPreview;return React.createElement(Fragment,null,React.createElement(BlockControls,null,React.createElement(Toolbar,null,React.createElement(IconButton,{icon:"edit",className:"components-icon-button components-toolbar__control",label:__("Edit layout.","siteorigin-panels"),onClick:function(){e.panelsInitialized=!1,e.setState({editing:!0})}}))),React.createElement("div",{key:"preview",className:"so-panels-block-layout-preview-container"},n?React.createElement("div",{className:"so-panels-spinner-container"},React.createElement("span",null,React.createElement(Spinner,null))):React.createElement("div",{className:"so-panels-raw-html-container",ref:this.previewContainer},React.createElement(RawHTML,null,this.state.previewHtml))))}}]),t}();registerBlockType("siteorigin-panels/layout-block",{title:__("SiteOrigin Layout","siteorigin-panels"),description:__("Build a layout using SiteOrigin's Page Builder.","siteorigin-panels"),icon:function(){return React.createElement("span",{className:"siteorigin-panels-block-icon"})},category:"layout",keywords:["page builder","column,grid","panel"],supports:{html:!1},attributes:{panelsData:{type:"object"} },edit:function(e){var t=e.attributes,n=e.setAttributes,i=e.toggleSelection;return React.createElement(SiteOriginPanelsLayoutBlock,{panelsData:t.panelsData,onContentChange:function(e){_.isEmpty(e.widgets)||jQuery.post(soPanelsBlockEditorAdmin.sanitizeUrl,{action:"so_panels_layout_block_sanitize",panelsData:JSON.stringify(e)},(function(e){""!==e&&n({panelsData:e})}))},onRowOrWidgetMouseDown:function(){i(!1)},onRowOrWidgetMouseUp:function(){i(!0)}})},save:function(){returnnull}}),function(e){soPanelsBlockEditorAdmin.showAddButton&&e((function(){setTimeout((function(){var t=wp.data.dispatch("core/editor"),n=wp.data.select("core/editor"),i=e("#siteorigin-panels-add-layout-block-button").html(),o=e(i).insertAfter(".editor-writing-flow > div:first, .block-editor-writing-flow > div:not([tabindex])");o.on("click",(function(){var e=wp.blocks.createBlock("siteorigin-panels/layout-block",{});if(n.isEditedPostEmpty()){var i=n.getBlocks();i.length?t.replaceBlock(i[0].clientId,e):t.insertBlock(e)}else t.insertBlock(e)}));var r=function(){wp.data.select("core/editor").isEditedPostEmpty()?o.show():o.hide()};wp.data.subscribe(r),r()}),100)}))}(jQuery);1 "use strict";function _typeof(e){return(_typeof="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 _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?_assertThisInitialized(e):t}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _inherits(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&&_setPrototypeOf(e,t)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var _lodash=lodash,isEqual=_lodash.isEqual,debounce=_lodash.debounce,isEmpty=_lodash.isEmpty,isFunction=_lodash.isFunction,registerBlockType=wp.blocks.registerBlockType,_wp$element=wp.element,Component=_wp$element.Component,Fragment=_wp$element.Fragment,RawHTML=_wp$element.RawHTML,createRef=_wp$element.createRef,BlockControls=wp.editor.BlockControls,_wp$components=wp.components,Toolbar=_wp$components.Toolbar,IconButton=_wp$components.IconButton,Spinner=_wp$components.Spinner,__=wp.i18n.__,_window=window,soPanelsBlockEditorAdmin=_window.soPanelsBlockEditorAdmin,SiteOriginPanelsLayoutBlock=function(e){function t(e){var n;_classCallCheck(this,t),n=_possibleConstructorReturn(this,_getPrototypeOf(t).call(this,e));var i="edit"===soPanelsBlockEditorAdmin.defaultMode||isEmpty(e.panelsData);return n.state={editing:i,loadingPreview:!i,previewHtml:""},n.panelsContainer=createRef(),n.previewContainer=createRef(),n.panelsInitialized=!1,n.previewInitialized=!1,n}return _inherits(t,Component),_createClass(t,[{key:"componentDidMount",value:function(){this.isStillMounted=!0,this.state.editing?this.setupPanels():this.state.editing||this.previewInitialized||(this.fetchPreview(this.props),this.fetchPreview=debounce(this.fetchPreview,500))}},{key:"componentWillUnmount",value:function(){this.isStillMounted=!1,this.builderView&&this.builderView.off("content_change")}},{key:"componentDidUpdate",value:function(e){this.state.editing&&!this.panelsInitialized?this.setupPanels():this.state.loadingPreview?this.fetchPreview(this.props):!this.previewInitialized&&this.previewContainer.current&&(jQuery(document).trigger("panels_setup_preview"),this.previewInitialized=!0)}},{key:"setupPanels",value:function(){var e=this,t=jQuery(this.panelsContainer.current),n=new panels.model.builder;this.builderView=new panels.view.builder({model:n,config:{editorType:"standalone"}});var i=JSON.parse(JSON.stringify(jQuery.extend({},this.props.panelsData))),o=function(){isFunction(e.props.onRowOrWidgetMouseDown)&&e.props.onRowOrWidgetMouseDown();jQuery(document).on("mouseup",(function t(){jQuery(document).off("mouseup",t),isFunction(e.props.onRowOrWidgetMouseUp)&&e.props.onRowOrWidgetMouseUp()}))};this.builderView.on("row_added",(function(){e.builderView.$(".so-row-move").off("mousedown",o),e.builderView.$(".so-row-move").on("mousedown",o),e.builderView.$(".so-widget").off("mousedown",o),e.builderView.$(".so-widget").on("mousedown",o)})),this.builderView.on("widget_added",(function(){e.builderView.$(".so-widget").off("mousedown",o),e.builderView.$(".so-widget").on("mousedown",o)})),this.builderView.render().attach({container:t}).setData(i),this.builderView.trigger("builder_resize"),this.builderView.on("content_change",(function(){var t=e.builderView.getData();e.panelsDataChanged=!isEqual(i,t),e.panelsDataChanged&&(e.props.onContentChange&&isFunction(e.props.onContentChange)&&e.props.onContentChange(t),e.setState({loadingPreview:!0,previewHtml:""}))})),jQuery(document).trigger("panels_setup",this.builderView),this.panelsInitialized=!0}},{key:"fetchPreview",value:function(e){var t=this;if(this.isStillMounted){this.previewInitialized=!1;var n=this.currentFetchRequest=jQuery.post({url:soPanelsBlockEditorAdmin.previewUrl,data:{action:"so_panels_layout_block_preview",panelsData:JSON.stringify(e.panelsData)}}).then((function(e){t.isStillMounted&&n===t.currentFetchRequest&&e&&t.setState({previewHtml:e,loadingPreview:!1})}));return n}}},{key:"render",value:function(){var e=this,t=this.props.panelsData;if(this.state.editing)return React.createElement(Fragment,null,React.createElement(BlockControls,null,React.createElement(Toolbar,null,React.createElement(IconButton,{icon:"visibility",className:"components-icon-button components-toolbar__control",label:__("Preview layout.","siteorigin-panels"),onClick:function(){t&&e.setState({editing:!1})}}))),React.createElement("div",{key:"layout-block",className:"siteorigin-panels-layout-block-container",ref:this.panelsContainer}));var n=this.state.loadingPreview;return React.createElement(Fragment,null,React.createElement(BlockControls,null,React.createElement(Toolbar,null,React.createElement(IconButton,{icon:"edit",className:"components-icon-button components-toolbar__control",label:__("Edit layout.","siteorigin-panels"),onClick:function(){e.panelsInitialized=!1,e.setState({editing:!0})}}))),React.createElement("div",{key:"preview",className:"so-panels-block-layout-preview-container"},n?React.createElement("div",{className:"so-panels-spinner-container"},React.createElement("span",null,React.createElement(Spinner,null))):React.createElement("div",{className:"so-panels-raw-html-container",ref:this.previewContainer},React.createElement(RawHTML,null,this.state.previewHtml))))}}]),t}();registerBlockType("siteorigin-panels/layout-block",{title:__("SiteOrigin Layout","siteorigin-panels"),description:__("Build a layout using SiteOrigin's Page Builder.","siteorigin-panels"),icon:function(){return React.createElement("span",{className:"siteorigin-panels-block-icon"})},category:"layout",keywords:["page builder","column,grid","panel"],supports:{html:!1},attributes:{panelsData:{type:"object"},contentPreview:{type:"string"}},edit:function(e){var t=e.attributes,n=e.setAttributes,i=e.toggleSelection;return React.createElement(SiteOriginPanelsLayoutBlock,{panelsData:t.panelsData,onContentChange:function(e){_.isEmpty(e.widgets)||jQuery.post(panelsOptions.ajaxurl,{action:"so_panels_builder_content_json",panels_data:JSON.stringify(e),post_id:wp.data.select("core/editor").getCurrentPostId()},(function(e){var t={};""!==e.sanitized_panels_data&&(t.panelsData=e.sanitized_panels_data),""!==e.preview&&(t.contentPreview=e.preview),n(t)}))},onRowOrWidgetMouseDown:function(){i(!1)},onRowOrWidgetMouseUp:function(){i(!0)}})},save:function(e){var t=e.attributes;return t.hasOwnProperty("contentPreview")?React.createElement(RawHTML,null,t.contentPreview):null}}),function(e){soPanelsBlockEditorAdmin.showAddButton&&e((function(){setTimeout((function(){var t=wp.data.dispatch("core/editor"),n=wp.data.select("core/editor"),i=e("#siteorigin-panels-add-layout-block-button").html(),o=e(i).insertAfter(".editor-writing-flow > div:first, .block-editor-writing-flow > div:not([tabindex])");o.on("click",(function(){var e=wp.blocks.createBlock("siteorigin-panels/layout-block",{});if(n.isEditedPostEmpty()){var i=n.getBlocks();i.length?t.replaceBlock(i[0].clientId,e):t.insertBlock(e)}else t.insertBlock(e)}));var r=function(){wp.data.select("core/editor").isEditedPostEmpty()?o.show():o.hide()};wp.data.subscribe(r),r()}),100)}))}(jQuery); -
siteorigin-panels/trunk/inc/admin.php
r2298584 r2316661 53 53 // Register all the admin actions 54 54 add_action( 'wp_ajax_so_panels_builder_content', array( $this, 'action_builder_content' ) ); 55 add_action( 'wp_ajax_so_panels_builder_content_json', array( $this, 'action_builder_content_json' ) ); 55 56 add_action( 'wp_ajax_so_panels_widget_form', array( $this, 'action_widget_form' ) ); 56 57 add_action( 'wp_ajax_so_panels_live_editor_preview', array( $this, 'action_live_editor_preview' ) ); … … 67 68 68 69 $this->in_save_post = false; 69 70 70 71 71 72 // Enqueue Yoast compatibility 72 73 add_action( 'admin_print_scripts-post-new.php', array( $this, 'enqueue_yoast_compat' ), 100 ); 73 74 add_action( 'admin_print_scripts-post.php', array( $this, 'enqueue_yoast_compat' ), 100 ); 74 75 75 76 // Block editor specific actions 76 77 if ( function_exists( 'register_block_type' ) ) { … … 141 142 } 142 143 } 143 144 144 145 return $is_gutenberg_page || $is_block_editor; 145 146 } … … 157 158 return $links; 158 159 } 159 160 160 161 unset( $links['edit'] ); 161 162 $links[] = '<a href="http://siteorigin.com/threads/plugin-page-builder/">' . __( 'Support Forum', 'siteorigin-panels' ) . '</a>'; … … 172 173 */ 173 174 function add_meta_boxes() { 174 175 175 176 foreach ( siteorigin_panels_setting( 'post-types' ) as $type ) { 176 177 add_meta_box( … … 231 232 false 232 233 ); 233 234 234 235 if ( siteorigin_panels_setting( 'sidebars-emulator' ) ) { 235 236 $sidebars_emulator = SiteOrigin_Panels_Sidebars_Emulator::single(); 236 237 $panels_data['widgets'] = $sidebars_emulator->generate_sidebar_widget_ids( $panels_data['widgets'], $post_id ); 237 238 } 238 239 239 240 $panels_data = SiteOrigin_Panels_Styles_Admin::single()->sanitize_all( $panels_data ); 240 241 $panels_data = apply_filters( 'siteorigin_panels_data_pre_save', $panels_data, $post, $post_id ); … … 248 249 $post_parent_id = wp_is_post_revision( $post_id ); 249 250 $layout_id = ( ! empty( $post_parent_id ) ) ? $post_parent_id : $post_id; 250 251 251 252 SiteOrigin_Panels_Post_Content_Filters::add_filters(); 252 253 $GLOBALS[ 'SITEORIGIN_PANELS_POST_CONTENT_RENDER' ] = true; … … 319 320 320 321 $user = wp_get_current_user(); 321 322 322 323 $load_on_attach = siteorigin_panels_setting( 'load-on-attach' ) || isset( $_GET['siteorigin-page-builder'] ); 323 324 wp_localize_script( 'so-panels-admin', 'panelsOptions', array( … … 490 491 ) 491 492 ) ); 492 493 493 494 $js_widgets = array(); 494 495 if ( $screen->base != 'widgets' ) { … … 506 507 do_action_ref_array( 'in_widget_form', array( &$widget_obj, &$return, array() ) ); 507 508 ob_end_clean(); 508 509 509 510 // Need to render templates for new WP 4.8 widgets when not on the 'widgets' screen or in the customizer. 510 511 if ( $this->is_core_js_widget( $widget_obj ) ) { … … 684 685 false 685 686 ); 686 687 687 688 if ( siteorigin_panels_setting( 'sidebars-emulator' ) ) { 688 689 $sidebars_emulator = SiteOrigin_Panels_Sidebars_Emulator::single(); 689 690 $panels_data['widgets'] = $sidebars_emulator->generate_sidebar_widget_ids( $panels_data['widgets'], $page_id ); 690 691 } 691 692 692 693 $panels_data = SiteOrigin_Panels_Styles_Admin::single()->sanitize_all( $panels_data ); 693 694 $panels_data = apply_filters( 'siteorigin_panels_data_pre_save', $panels_data, $page, $page_id ); … … 777 778 // Other plugins can manipulate the list of widgets. Possibly to add recommended widgets 778 779 $widgets = apply_filters( 'siteorigin_panels_widgets', $widgets ); 779 780 780 781 // Exclude these temporarily, as they won't work until we have a reliable way to enqueue their admin form scripts. 781 782 $to_exclude = array( … … 785 786 'Jetpack_Twitter_Timeline_Widget' 786 787 ); 787 788 788 789 foreach ( $to_exclude as $widget_class ) { 789 790 if ( in_array( $widget_class, $widgets ) ) { … … 878 879 879 880 $widget = $instance; 880 881 881 882 unset( $info['raw'] ); 882 883 } … … 887 888 $info[ 'class' ] = preg_replace( '/\\\\+/', '\\\\\\\\', $info['class'] ); 888 889 } 889 890 890 891 $widget['panels_info'] = $info; 891 892 } … … 912 913 */ 913 914 function render_form( $widget_class, $instance = array(), $raw = false, $widget_number = '{$id}' ) { 914 915 915 916 $the_widget = SiteOrigin_Panels::get_widget_instance( $widget_class ); 916 917 // This is a chance for plugins to replace missing widgets 917 918 $the_widget = apply_filters( 'siteorigin_panels_widget_object', $the_widget, $widget_class ); 918 919 919 920 if ( empty( $the_widget ) || ! is_a( $the_widget, 'WP_Widget' ) ) { 920 921 $widgets = $this->get_widgets(); … … 1000 1001 return $form; 1001 1002 } 1002 1003 1003 1004 /** 1004 1005 * Checks whether a widget is considered to be a JS widget. I.e. it needs to have scripts and/or styles enqueued for … … 1020 1021 'WP_Widget_Text', 1021 1022 ); 1022 1023 1023 1024 $is_js_widget = in_array( get_class( $widget ), $js_widgets ) && 1024 1025 // Need to check this for `WP_Widget_Text` which was not a JS widget before 4.8 1025 1026 method_exists( $widget, 'render_control_template_scripts' ); 1026 1027 1027 1028 return $is_js_widget; 1028 1029 } … … 1072 1073 1073 1074 /** 1075 * Get builder content based on the submitted panels_data. 1076 */ 1077 function action_builder_content_json() { 1078 header( 'content-type: application/json' ); 1079 $return = array('post_content' => '', 'preview' => '', 'sanitized_panels_data' => ''); 1080 1081 if ( ! wp_verify_nonce( $_GET['_panelsnonce'], 'panels_action' ) ) { 1082 wp_die(); 1083 } 1084 1085 if ( ! current_user_can( 'edit_post', $_POST['post_id'] ) ) { 1086 wp_die(); 1087 } 1088 1089 if ( empty( $_POST['post_id'] ) || empty( $_POST['panels_data'] ) ) { 1090 echo json_encode($return); 1091 wp_die(); 1092 } 1093 1094 // echo the content 1095 $old_panels_data = get_post_meta( $_POST['post_id'], 'panels_data', true ); 1096 $panels_data = json_decode( wp_unslash( $_POST['panels_data'] ), true ); 1097 $panels_data['widgets'] = $this->process_raw_widgets( 1098 $panels_data['widgets'], 1099 ! empty( $old_panels_data['widgets'] ) ? $old_panels_data['widgets'] : false, 1100 false 1101 ); 1102 $panels_data = SiteOrigin_Panels_Styles_Admin::single()->sanitize_all( $panels_data ); 1103 $return['sanitized_panels_data'] = $panels_data; 1104 1105 // Create a version of the builder data for post content 1106 SiteOrigin_Panels_Post_Content_Filters::add_filters(); 1107 $GLOBALS[ 'SITEORIGIN_PANELS_POST_CONTENT_RENDER' ] = true; 1108 $return['post_content'] = SiteOrigin_Panels::renderer()->render( intval( $_POST['post_id'] ), false, $panels_data ); 1109 SiteOrigin_Panels_Post_Content_Filters::remove_filters(); 1110 unset( $GLOBALS[ 'SITEORIGIN_PANELS_POST_CONTENT_RENDER' ] ); 1111 1112 $GLOBALS[ 'SITEORIGIN_PANELS_PREVIEW_RENDER' ] = true; 1113 $return['preview'] = SiteOrigin_Panels::renderer()->render( intval( $_POST['post_id'] ), false, $panels_data ); 1114 unset( $GLOBALS[ 'SITEORIGIN_PANELS_PREVIEW_RENDER' ] ); 1115 1116 echo json_encode( $return ); 1117 1118 wp_die(); 1119 } 1120 1121 /** 1074 1122 * Display a widget form with the provided data 1075 1123 */ … … 1089 1137 ); 1090 1138 } 1091 1139 1092 1140 $request = array_map( 'stripslashes_deep', $_REQUEST ); 1093 1141 … … 1120 1168 */ 1121 1169 public function layout_block_preview() { 1122 1170 1123 1171 if ( empty( $_REQUEST['_panelsnonce'] ) || ! wp_verify_nonce( $_REQUEST['_panelsnonce'], 'layout-block-preview' ) ) { 1124 1172 wp_die(); 1125 1173 } 1126 1174 1127 1175 $panels_data = json_decode( wp_unslash( $_POST['panelsData'] ), true ); 1128 1176 $builder_id = 'gbp' . uniqid(); … … 1135 1183 } 1136 1184 $rendered_layout = SiteOrigin_Panels::renderer()->render( $builder_id, true, $panels_data, $layout_data, true ); 1137 1185 1138 1186 // Need to explicitly call `siteorigin_widget_print_styles` because Gutenberg previews don't render a full version of the front end, 1139 1187 // so neither the `wp_head` nor the `wp_footer` actions are called, which usually trigger `siteorigin_widget_print_styles`. … … 1143 1191 $rendered_layout .= ob_get_clean(); 1144 1192 } 1145 1193 1146 1194 echo $rendered_layout; 1147 1195 wp_die(); 1148 1196 } 1149 1197 1150 1198 public function layout_block_sanitize() { 1151 1199 1152 1200 if ( empty( $_REQUEST['_panelsnonce'] ) || ! wp_verify_nonce( $_REQUEST['_panelsnonce'], 'layout-block-sanitize' ) ) { 1153 1201 wp_die(); 1154 1202 } 1155 1203 1156 1204 $panels_data = json_decode( wp_unslash( $_POST['panelsData'] ), true ); 1157 1205 $panels_data['widgets'] = SiteOrigin_Panels_Admin::single()->process_raw_widgets( $panels_data['widgets'], false, true, true ); 1158 1206 $panels_data = SiteOrigin_Panels_Styles_Admin::single()->sanitize_all( $panels_data ); 1159 1207 1160 1208 wp_send_json( $panels_data ); 1161 1209 } … … 1255 1303 <?php 1256 1304 } 1257 1305 1258 1306 public function admin_notices() { 1259 1307 global $typenow, $pagenow; … … 1275 1323 } 1276 1324 } 1277 1325 1278 1326 /** 1279 1327 * Show Classic Editor for existing PB posts. … … 1285 1333 */ 1286 1334 public function show_classic_editor_for_panels( $use_block_editor, $post_type ) { 1287 1335 1288 1336 // For new pages. 1289 1337 if ( isset( $_GET['block-editor'] ) ) { … … 1292 1340 return false; 1293 1341 } 1294 1342 1295 1343 $post_types = siteorigin_panels_setting( 'post-types' ); 1296 1344 global $pagenow; … … 1311 1359 $use_block_editor = false; 1312 1360 } 1313 1361 1314 1362 return $use_block_editor; 1315 1363 } 1316 1364 1317 1365 /** 1318 1366 * This was copied from Gutenberg and slightly modified as a quick way to allow users to create new Page Builder pages … … 1321 1369 function add_panels_add_new_button() { 1322 1370 global $typenow; 1323 1371 1324 1372 if ( 'wp_block' === $typenow ) { 1325 1373 ?> … … 1331 1379 <?php 1332 1380 } 1333 1381 1334 1382 if ( ! $this->show_add_new_dropdown_for_type( $typenow ) ) { 1335 1383 return; 1336 1384 } 1337 1385 1338 1386 ?> 1339 1387 <style type="text/css"> … … 1341 1389 display: inline-block; 1342 1390 } 1343 1391 1344 1392 .split-page-title-action a, 1345 1393 .split-page-title-action a:active, … … 1360 1408 outline: 0; 1361 1409 } 1362 1410 1363 1411 .split-page-title-action a:hover, 1364 1412 .split-page-title-action .expander:hover:after { … … 1367 1415 color: #fff; 1368 1416 } 1369 1417 1370 1418 .split-page-title-action a:focus, 1371 1419 .split-page-title-action .expander:focus:after { … … 1373 1421 box-shadow: 0 0 2px rgba( 30, 140, 190, 0.8 ); 1374 1422 } 1375 1423 1376 1424 .split-page-title-action .expander:after { 1377 1425 content: "\f140"; … … 1386 1434 <?php echo is_rtl() ? 'right: -1px;' : 'left: -1px;' ?> 1387 1435 } 1388 1436 1389 1437 .split-page-title-action .dropdown { 1390 1438 display: none; 1391 1439 } 1392 1440 1393 1441 .split-page-title-action .dropdown.visible { 1394 1442 display: block; … … 1397 1445 z-index: 1; 1398 1446 } 1399 1447 1400 1448 .split-page-title-action .dropdown.visible a { 1401 1449 display: block; … … 1404 1452 <?php echo is_rtl() ? 'padding-left: 9px;' : 'padding-right: 9px;' ?> 1405 1453 } 1406 1454 1407 1455 .split-page-title-action .expander { 1408 1456 outline: none; … … 1410 1458 margin-top: 1px; 1411 1459 } 1412 1460 1413 1461 </style> 1414 1462 <script type="text/javascript"> … … 1416 1464 var buttons = document.getElementsByClassName( 'page-title-action' ), 1417 1465 button = buttons.item( 0 ); 1418 1466 1419 1467 if ( ! button ) { 1420 1468 return; 1421 1469 } 1422 1470 1423 1471 var url = button.href; 1424 1472 var urlHasParams = ( -1 !== url.indexOf( '?' ) ); 1425 1473 var panelsUrl = url + ( urlHasParams ? '&' : '?' ) + 'siteorigin-page-builder'; 1426 1474 var blockEditorUrl = url + ( urlHasParams ? '&' : '?' ) + 'block-editor'; 1427 1475 1428 1476 var newbutton = '<span id="split-page-title-action" class="split-page-title-action">'; 1429 1477 newbutton += '<a href="' + url + '">' + button.innerText + '</a>'; … … 1431 1479 newbutton += '<span class="dropdown"><a href="' + panelsUrl + '"><?php echo esc_html( __( 'SiteOrigin Page Builder', 'siteorigin-panels' ) ); ?></a>'; 1432 1480 newbutton += '<a href="' + blockEditorUrl + '"><?php echo esc_html( __( 'Block Editor', 'siteorigin-panels' ) ); ?></a></span></span><span class="page-title-action" style="display:none;"></span>'; 1433 1481 1434 1482 button.insertAdjacentHTML( 'afterend', newbutton ); 1435 1483 button.parentNode.removeChild( button ); 1436 1484 1437 1485 var expander = document.getElementById( 'split-page-title-action' ).getElementsByClassName( 'expander' ).item( 0 ); 1438 1486 var dropdown = expander.parentNode.querySelector( '.dropdown' ); … … 1454 1502 <?php 1455 1503 } 1456 1504 1457 1505 private function show_add_new_dropdown_for_type( $post_type ) { 1458 1506 1459 1507 $show = in_array( $post_type, siteorigin_panels_setting( 'post-types' ) ); 1460 1508 1461 1509 // WooCommerce product type doesn't support block editor... 1462 1510 $show = $show && ! ( class_exists( 'WooCommerce' ) && $post_type == 'product' ); 1463 1511 1464 1512 if ( class_exists( 'SiteOrigin_Premium_Plugin_Cpt_Builder' ) ) { 1465 1513 $show = $show && $post_type != SiteOrigin_Premium_Plugin_Cpt_Builder::POST_TYPE; … … 1468 1516 $show = $show && ! isset( $so_custom_types[ $post_type ] ); 1469 1517 } 1470 1518 1471 1519 return apply_filters( 'so_panels_show_add_new_dropdown_for_type', $show, $post_type ); 1472 1520 } 1473 1521 1474 1522 public function add_panels_post_state( $post_states, $post ) { 1475 1523 $panels_data = get_post_meta( $post->ID, 'panels_data', true ); 1476 1524 1477 1525 if ( ! empty( $panels_data ) ) { 1478 1526 $post_states[] = __( 'SiteOrigin Page Builder', 'siteorigin-panels' ); 1479 1527 } 1480 1528 1481 1529 return $post_states; 1482 1530 } -
siteorigin-panels/trunk/inc/css-builder.php
r2141880 r2316661 39 39 $attribute_string = implode( ';', $attribute_string ); 40 40 41 // Add everything we need to the CSS selector 42 if ( empty( $this->css[ $resolution ] ) ) { 43 $this->css[ $resolution ] = array(); 44 } 45 if ( empty( $this->css[ $resolution ][ $attribute_string ] ) ) { 46 $this->css[ $resolution ][ $attribute_string ] = array(); 47 } 48 $this->css[ $resolution ][ $attribute_string ][] = $selector; 41 if ( ! empty( $attribute_string ) ) { 42 // Add everything we need to the CSS selector 43 if ( empty( $this->css[ $resolution ] ) ) { 44 $this->css[ $resolution ] = array(); 45 } 46 if ( empty( $this->css[ $resolution ][ $attribute_string ] ) ) { 47 $this->css[ $resolution ][ $attribute_string ] = array(); 48 } 49 50 $this->css[ $resolution ][ $attribute_string ][] = $selector; 51 } 49 52 } 50 53 -
siteorigin-panels/trunk/inc/styles.php
r2161603 r2316661 95 95 96 96 $fields[ $id . '_css' ] = array( 97 'name' => __( 'CSS Styles', 'siteorigin-panels' ),97 'name' => __( 'CSS Declarations', 'siteorigin-panels' ), 98 98 'type' => 'code', 99 99 'group' => 'attributes', 100 'description' => __( 'One style attributeper line.', 'siteorigin-panels' ),100 'description' => __( 'One declaration per line.', 'siteorigin-panels' ), 101 101 'priority' => 10, 102 102 ); 103 103 104 104 $fields[ 'mobile_css' ] = array( 105 'name' => __( 'Mobile CSS Styles', 'siteorigin-panels' ),105 'name' => __( 'Mobile CSS Declarations', 'siteorigin-panels' ), 106 106 'type' => 'code', 107 107 'group' => 'attributes', 108 'description' => __( 'CSS applied when in mobile view.', 'siteorigin-panels' ),108 'description' => __( 'CSS declarations applied when in mobile view.', 'siteorigin-panels' ), 109 109 'priority' => 11, 110 110 ); -
siteorigin-panels/trunk/js/yoast-compat.js
r2141880 r2316661 1 /* global jQuery, YoastSEO */1 /* global jQuery, YoastSEO, _, panelsOptions */ 2 2 3 3 jQuery(function($){ … … 8 8 } 9 9 10 var decodeEntities = (function() {11 // this prevents any overhead from creating the object each time12 var element = document.createElement('div');13 14 function decodeHTMLEntities (str) {15 if(str && typeof str === 'string') {16 // strip script/html tags17 str = str.replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi, '');18 str = str.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi, '');19 element.innerHTML = str;20 str = element.textContent;21 element.textContent = '';22 }23 24 return str;25 }26 27 return decodeHTMLEntities;28 })();29 30 10 var SiteOriginYoastCompat = function() { 31 11 YoastSEO.app.registerPlugin( 'siteOriginYoastCompat', { status: 'ready' } ); … … 34 14 35 15 SiteOriginYoastCompat.prototype.contentModification = function(data) { 36 var re = new RegExp( panelsOptions.siteoriginWidgetRegex , "i" ); 37 var $data = $( '<div>' + data + '</div>' ); 16 if( 17 typeof window.soPanelsBuilderView !== 'undefined' && 18 window.soPanelsBuilderView.contentPreview 19 ) { 20 var $data = $( window.soPanelsBuilderView.contentPreview ); 38 21 39 if( $data.find('.so-panel.widget').length === 0 ) { 40 // Skip this for non Page builder pages 41 return data; 22 if( $data.find('.so-panel.widget').length === 0 ) { 23 // Skip this for empty pages 24 return data; 25 } 26 27 // Remove style tags created by Widgets Bundle 28 $data.find('style').remove(); 29 30 var whitelist = [ 31 'p', 'a', 'img', 'caption', 'br', 32 'blockquote', 'cite', 33 'em', 'strong', 'i', 'b', 34 'q', 35 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 36 'ul', 'ol', 'li', 37 'table', 'tr', 'th', 'td' 38 ].join(','); 39 40 $data.find("*").not(whitelist).each(function() { 41 var content = $(this).contents(); 42 $(this).replaceWith(content); 43 }); 44 45 data = $data.html(); 42 46 } 43 47 44 $data.find('.so-panel.widget').each(function(i, el) { 45 46 var $widget = $(el); 47 // Style wrappers prevent us from matching the widget shortcode correctly. 48 if ( $widget.find( '> .panel-widget-style' ).length > 0 ) { 49 $widget = $widget.find( '> .panel-widget-style' ); 50 } 51 var match = re.exec( $widget.html() ); 52 53 try{ 54 if( ! _.isNull( match ) && $widget.html().replace( re, '' ).trim() === '' ) { 55 var classMatch = /class="(.*?)"/.exec(match[3]), 56 dataInput = jQuery(match[5]), 57 data = JSON.parse(decodeEntities(dataInput.val())), 58 widgetInstance = data.instance, 59 newHTML = ''; 60 61 if( ! _.isNull(widgetInstance.title) ) { 62 newHTML += '<h3>' + widgetInstance.title + '</h3>'; 63 } 64 65 if( ! _.isNull( classMatch ) ) { 66 var widgetClass = classMatch[1]; 67 switch( widgetClass ) { 68 case 'SiteOrigin_Widget_Image_Widget': 69 // We want a direct assignment for the SO Image Widget to get rid of the title 70 newHTML = $('<img/>').attr({ 71 'src': '#' + widgetInstance.image, 72 'srcset': '', 73 'alt': widgetInstance.alt, 74 'title': widgetInstance.title, 75 }).prop('outerHTML'); 76 break; 77 78 case 'WP_Widget_Media_Image': 79 newHTML = $('<img/>').attr({ 80 'src': '#' + widgetInstance.attachment_id, 81 'srcset': '', 82 'alt': widgetInstance.alt, 83 'title': widgetInstance.image_title, 84 }).prop('outerHTML'); 85 break; 86 87 case 'SiteOrigin_Widgets_ImageGrid_Widget': 88 case 'SiteOrigin_Widget_Simple_Masonry_Widget': 89 newHTML = $( '<div/>' ); 90 var imgItems = widgetClass === 'SiteOrigin_Widgets_ImageGrid_Widget' ? widgetInstance.images : widgetInstance.items; 91 for ( var i = 0; i < imgItems.length; i++ ) { 92 var imgItem = imgItems[ i ]; 93 var itemHTML = $('<img/>').attr({ 94 'src': '#' + imgItem.image, 95 'srcset': '', 96 'alt': ( imgItem.hasOwnProperty( 'alt' ) ? imgItem.alt : imgItem.title ), 97 'title': imgItem.title, 98 }); 99 100 newHTML.append( itemHTML ) 101 } 102 newHTML = newHTML.prop( 'outerHTML' ); 103 break; 104 105 case 'SiteOrigin_Widget_Accordion_Widget': 106 case 'SiteOrigin_Widget_Tabs_Widget': 107 var contentItems = widgetClass === 'SiteOrigin_Widget_Accordion_Widget' ? widgetInstance.panels : widgetInstance.tabs; 108 newHTML = $( '<div/>' ); 109 for ( var i = 0; i < contentItems.length; i++ ) { 110 var item = contentItems[ i ]; 111 if ( item.content_type !== 'text' ) { 112 continue; 113 } 114 115 newHTML.append( '<h3>' + item.title + '</h3>' ); 116 newHTML.append( '<div>' + item.content_text + '</div>') 117 } 118 newHTML = newHTML.prop( 'outerHTML' ); 119 break; 120 case 'SiteOrigin_Widget_Button_Widget': 121 var hrefSeparator = widgetInstance.url.includes('://') ? '' : '#'; 122 newHTML = $( '<a>' + widgetInstance.text + '</a>' ).attr({ 123 'href': hrefSeparator + widgetInstance.url, 124 }).prop('outerHTML'); 125 break; 126 } 127 } 128 129 $widget.html(newHTML); 130 } 131 } 132 catch(e) { 133 // If there was an error, just clear the widget content. 134 $widget.html(''); 135 } 136 137 }); 138 return $data.html(); 48 return data; 139 49 }; 140 50 -
siteorigin-panels/trunk/js/yoast-compat.min.js
r2278148 r2316661 1 jQuery((function(t){if(void 0!==YoastSEO.app){var e,i=(e=document.createElement("div"),function(t){return t&&"string"==typeof t&&(t=(t=t.replace(/<script[^>]*>([\S\s]*?)<\/script>/gim,"")).replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gim,""),e.innerHTML=t,t=e.textContent,e.textContent=""),t}),a=function(){YoastSEO.app.registerPlugin("siteOriginYoastCompat",{status:"ready"}),YoastSEO.app.registerModification("content",this.contentModification,"siteOriginYoastCompat",5)};a.prototype.contentModification=function(e){var a=new RegExp(panelsOptions.siteoriginWidgetRegex,"i"),r=t("<div>"+e+"</div>");return 0===r.find(".so-panel.widget").length?e:(r.find(".so-panel.widget").each((function(e,r){var n=t(r);n.find("> .panel-widget-style").length>0&&(n=n.find("> .panel-widget-style"));var s=a.exec(n.html());try{if(!_.isNull(s)&&""===n.html().replace(a,"").trim()){var g=/class="(.*?)"/.exec(s[3]),o=jQuery(s[5]),l=JSON.parse(i(o.val())).instance,d="";if(_.isNull(l.title)||(d+="<h3>"+l.title+"</h3>"),!_.isNull(g)){var c=g[1];switch(c){case"SiteOrigin_Widget_Image_Widget":d=t("<img/>").attr({src:"#"+l.image,srcset:"",alt:l.alt,title:l.title}).prop("outerHTML");break;case"WP_Widget_Media_Image":d=t("<img/>").attr({src:"#"+l.attachment_id,srcset:"",alt:l.alt,title:l.image_title}).prop("outerHTML");break;case"SiteOrigin_Widgets_ImageGrid_Widget":case"SiteOrigin_Widget_Simple_Masonry_Widget":d=t("<div/>");var p="SiteOrigin_Widgets_ImageGrid_Widget"===c?l.images:l.items;for(e=0;e<p.length;e++){var m=p[e],u=t("<img/>").attr({src:"#"+m.image,srcset:"",alt:m.hasOwnProperty("alt")?m.alt:m.title,title:m.title});d.append(u)}d=d.prop("outerHTML");break;case"SiteOrigin_Widget_Accordion_Widget":case"SiteOrigin_Widget_Tabs_Widget":var h="SiteOrigin_Widget_Accordion_Widget"===c?l.panels:l.tabs;d=t("<div/>");for(e=0;e<h.length;e++){var v=h[e];"text"===v.content_type&&(d.append("<h3>"+v.title+"</h3>"),d.append("<div>"+v.content_text+"</div>"))}d=d.prop("outerHTML");break;case"SiteOrigin_Widget_Button_Widget":var f=l.url.includes("://")?"":"#";d=t("<a>"+l.text+"</a>").attr({href:f+l.url}).prop("outerHTML")}}n.html(d)}}catch(t){n.html("")}})),r.html())},new a}}));1 jQuery((function(t){if(void 0!==YoastSEO.app){var i=function(){YoastSEO.app.registerPlugin("siteOriginYoastCompat",{status:"ready"}),YoastSEO.app.registerModification("content",this.contentModification,"siteOriginYoastCompat",5)};i.prototype.contentModification=function(i){if(void 0!==window.soPanelsBuilderView&&window.soPanelsBuilderView.contentPreview){var e=t(window.soPanelsBuilderView.contentPreview);if(0===e.find(".so-panel.widget").length)return i;e.find("style").remove();var n=["p","a","img","caption","br","blockquote","cite","em","strong","i","b","q","h1","h2","h3","h4","h5","h6","ul","ol","li","table","tr","th","td"].join(",");e.find("*").not(n).each((function(){var i=t(this).contents();t(this).replaceWith(i)})),i=e.html()}return i},new i}})); -
siteorigin-panels/trunk/lang/siteorigin-panels.pot
r2298584 r2316661 77 77 msgstr "" 78 78 79 #: inc/admin-dashboard.php:95, inc/admin.php:16 179 #: inc/admin-dashboard.php:95, inc/admin.php:162 80 80 msgid "Support Forum" 81 81 msgstr "" … … 154 154 msgstr "" 155 155 156 #: inc/admin.php:16 4, tpl/js-templates.php:44156 #: inc/admin.php:165, tpl/js-templates.php:44 157 157 msgid "Addons" 158 158 msgstr "" 159 159 160 #: inc/admin.php:17 8, inc/admin.php:574, inc/admin.php:1176, inc/admin.php:1181, inc/settings.php:199, tpl/js-templates.php:197160 #: inc/admin.php:179, inc/admin.php:575, inc/admin.php:1224, inc/admin.php:1229, inc/settings.php:199, tpl/js-templates.php:197 161 161 msgid "Page Builder" 162 162 msgstr "" 163 163 164 #: inc/admin.php:33 0164 #: inc/admin.php:331 165 165 msgid "All Widgets" 166 166 msgstr "" 167 167 168 #: inc/admin.php:35 7168 #: inc/admin.php:358 169 169 msgid "Missing Widget" 170 170 msgstr "" 171 171 172 #: inc/admin.php:35 8172 #: inc/admin.php:359 173 173 msgid "Page Builder doesn't know about this widget." 174 174 msgstr "" 175 175 176 176 #. translators: Number of seconds since 177 #: inc/admin.php:36 2177 #: inc/admin.php:363 178 178 msgid "%d seconds" 179 179 msgstr "" 180 180 181 181 #. translators: Number of minutes since 182 #: inc/admin.php:36 4182 #: inc/admin.php:365 183 183 msgid "%d minutes" 184 184 msgstr "" 185 185 186 186 #. translators: Number of hours since 187 #: inc/admin.php:36 6187 #: inc/admin.php:367 188 188 msgid "%d hours" 189 189 msgstr "" 190 190 191 191 #. translators: A single second since 192 #: inc/admin.php:3 69192 #: inc/admin.php:370 193 193 msgid "%d second" 194 194 msgstr "" 195 195 196 196 #. translators: A single minute since 197 #: inc/admin.php:37 1197 #: inc/admin.php:372 198 198 msgid "%d minute" 199 199 msgstr "" 200 200 201 201 #. translators: A single hour since 202 #: inc/admin.php:37 3202 #: inc/admin.php:374 203 203 msgid "%d hour" 204 204 msgstr "" 205 205 206 206 #. translators: Time ago - eg. "1 minute before". 207 #: inc/admin.php:37 6207 #: inc/admin.php:377 208 208 msgid "%s before" 209 209 msgstr "" 210 210 211 #: inc/admin.php:37 7211 #: inc/admin.php:378 212 212 msgid "Now" 213 213 msgstr "" 214 214 215 #: inc/admin.php:38 1215 #: inc/admin.php:382 216 216 msgid "Current" 217 217 msgstr "" 218 218 219 #: inc/admin.php:38 2219 #: inc/admin.php:383 220 220 msgid "Original" 221 221 msgstr "" 222 222 223 #: inc/admin.php:38 3223 #: inc/admin.php:384 224 224 msgid "Version restored" 225 225 msgstr "" 226 226 227 #: inc/admin.php:38 4227 #: inc/admin.php:385 228 228 msgid "Converted to editor" 229 229 msgstr "" 230 230 231 231 #. translators: Message displayed in the history when a widget is deleted 232 #: inc/admin.php:38 8232 #: inc/admin.php:389 233 233 msgid "Widget deleted" 234 234 msgstr "" 235 235 236 236 #. translators: Message displayed in the history when a widget is added 237 #: inc/admin.php:39 0237 #: inc/admin.php:391 238 238 msgid "Widget added" 239 239 msgstr "" 240 240 241 241 #. translators: Message displayed in the history when a widget is edited 242 #: inc/admin.php:39 2242 #: inc/admin.php:393 243 243 msgid "Widget edited" 244 244 msgstr "" 245 245 246 246 #. translators: Message displayed in the history when a widget is duplicated 247 #: inc/admin.php:39 4247 #: inc/admin.php:395 248 248 msgid "Widget duplicated" 249 249 msgstr "" 250 250 251 251 #. translators: Message displayed in the history when a widget position is changed 252 #: inc/admin.php:39 6252 #: inc/admin.php:397 253 253 msgid "Widget moved" 254 254 msgstr "" 255 255 256 256 #. translators: Message displayed in the history when a row is deleted 257 #: inc/admin.php:40 0257 #: inc/admin.php:401 258 258 msgid "Row deleted" 259 259 msgstr "" 260 260 261 261 #. translators: Message displayed in the history when a row is added 262 #: inc/admin.php:40 2262 #: inc/admin.php:403 263 263 msgid "Row added" 264 264 msgstr "" 265 265 266 266 #. translators: Message displayed in the history when a row is edited 267 #: inc/admin.php:40 4267 #: inc/admin.php:405 268 268 msgid "Row edited" 269 269 msgstr "" 270 270 271 271 #. translators: Message displayed in the history when a row position is changed 272 #: inc/admin.php:40 6272 #: inc/admin.php:407 273 273 msgid "Row moved" 274 274 msgstr "" 275 275 276 276 #. translators: Message displayed in the history when a row is duplicated 277 #: inc/admin.php:40 8277 #: inc/admin.php:409 278 278 msgid "Row duplicated" 279 279 msgstr "" 280 280 281 281 #. translators: Message displayed in the history when a row is pasted 282 #: inc/admin.php:41 0282 #: inc/admin.php:411 283 283 msgid "Row pasted" 284 284 msgstr "" 285 285 286 #: inc/admin.php:41 3286 #: inc/admin.php:414 287 287 msgid "Cell resized" 288 288 msgstr "" 289 289 290 #: inc/admin.php:41 6290 #: inc/admin.php:417 291 291 msgid "Prebuilt layout loaded" 292 292 msgstr "" 293 293 294 #: inc/admin.php:42 0294 #: inc/admin.php:421 295 295 msgid "Loading prebuilt layout" 296 296 msgstr "" 297 297 298 #: inc/admin.php:42 1298 #: inc/admin.php:422 299 299 msgid "Would you like to copy this editor's existing content to Page Builder?" 300 300 msgstr "" 301 301 302 #: inc/admin.php:42 2302 #: inc/admin.php:423 303 303 msgid "Would you like to clear your Page Builder content and revert to using the standard visual editor?" 304 304 msgstr "" 305 305 306 306 #. translators: This is the title for a widget called "Layout Builder" 307 #: inc/admin.php:42 4307 #: inc/admin.php:425 308 308 msgid "Layout Builder Widget" 309 309 msgstr "" 310 310 311 311 #. translators: A standard confirmation message 312 #: inc/admin.php:42 6, tpl/js-templates.php:97, tpl/js-templates.php:422312 #: inc/admin.php:427, tpl/js-templates.php:97, tpl/js-templates.php:422 313 313 msgid "Are you sure?" 314 314 msgstr "" 315 315 316 316 #. translators: When a layout file is ready to be inserted. %s is the filename. 317 #: inc/admin.php:42 8317 #: inc/admin.php:429 318 318 msgid "%s is ready to insert." 319 319 msgstr "" 320 320 321 #: inc/admin.php:43 2321 #: inc/admin.php:433 322 322 msgid "Add Widget Below" 323 323 msgstr "" 324 324 325 #: inc/admin.php:43 3325 #: inc/admin.php:434 326 326 msgid "Add Widget to Cell" 327 327 msgstr "" 328 328 329 #: inc/admin.php:43 4, tpl/js-templates.php:224329 #: inc/admin.php:435, tpl/js-templates.php:224 330 330 msgid "Search Widgets" 331 331 msgstr "" 332 332 333 #: inc/admin.php:43 6, tpl/js-templates.php:17, tpl/js-templates.php:19333 #: inc/admin.php:437, tpl/js-templates.php:17, tpl/js-templates.php:19 334 334 msgid "Add Row" 335 335 msgstr "" 336 336 337 #: inc/admin.php:43 7337 #: inc/admin.php:438 338 338 msgid "Column" 339 339 msgstr "" 340 340 341 #: inc/admin.php:4 39341 #: inc/admin.php:440 342 342 msgid "Cell Actions" 343 343 msgstr "" 344 344 345 #: inc/admin.php:44 0345 #: inc/admin.php:441 346 346 msgid "Paste Widget" 347 347 msgstr "" 348 348 349 #: inc/admin.php:44 2349 #: inc/admin.php:443 350 350 msgid "Widget Actions" 351 351 msgstr "" 352 352 353 #: inc/admin.php:44 3353 #: inc/admin.php:444 354 354 msgid "Edit Widget" 355 355 msgstr "" 356 356 357 #: inc/admin.php:44 4357 #: inc/admin.php:445 358 358 msgid "Duplicate Widget" 359 359 msgstr "" 360 360 361 #: inc/admin.php:44 5361 #: inc/admin.php:446 362 362 msgid "Delete Widget" 363 363 msgstr "" 364 364 365 #: inc/admin.php:44 6365 #: inc/admin.php:447 366 366 msgid "Copy Widget" 367 367 msgstr "" 368 368 369 #: inc/admin.php:44 7369 #: inc/admin.php:448 370 370 msgid "Paste Widget Below" 371 371 msgstr "" 372 372 373 #: inc/admin.php:4 49373 #: inc/admin.php:450 374 374 msgid "Row Actions" 375 375 msgstr "" 376 376 377 #: inc/admin.php:45 0, tpl/js-templates.php:95377 #: inc/admin.php:451, tpl/js-templates.php:95 378 378 msgid "Edit Row" 379 379 msgstr "" 380 380 381 #: inc/admin.php:45 1, tpl/js-templates.php:96381 #: inc/admin.php:452, tpl/js-templates.php:96 382 382 msgid "Duplicate Row" 383 383 msgstr "" 384 384 385 #: inc/admin.php:45 2, tpl/js-templates.php:97385 #: inc/admin.php:453, tpl/js-templates.php:97 386 386 msgid "Delete Row" 387 387 msgstr "" 388 388 389 #: inc/admin.php:45 3389 #: inc/admin.php:454 390 390 msgid "Copy Row" 391 391 msgstr "" 392 392 393 #: inc/admin.php:45 4393 #: inc/admin.php:455 394 394 msgid "Paste Row" 395 395 msgstr "" 396 396 397 #: inc/admin.php:45 6397 #: inc/admin.php:457 398 398 msgid "Draft" 399 399 msgstr "" 400 400 401 #: inc/admin.php:45 7401 #: inc/admin.php:458 402 402 msgid "Untitled" 403 403 msgstr "" 404 404 405 #: inc/admin.php:4 59405 #: inc/admin.php:460 406 406 msgid "New Row" 407 407 msgstr "" 408 408 409 #: inc/admin.php:46 0, inc/admin.php:468, inc/styles.php:189, tpl/js-templates.php:62409 #: inc/admin.php:461, inc/admin.php:469, inc/styles.php:189, tpl/js-templates.php:62 410 410 msgid "Row" 411 411 msgstr "" 412 412 413 #: inc/admin.php:46 3413 #: inc/admin.php:464 414 414 msgid "Hmmm... Adding layout elements is not enabled. Please check if Page Builder has been configured to allow adding elements." 415 415 msgstr "" 416 416 417 #: inc/admin.php:46 4417 #: inc/admin.php:465 418 418 msgid "Add a {{%= items[0] %}} to get started." 419 419 msgstr "" 420 420 421 #: inc/admin.php:46 5421 #: inc/admin.php:466 422 422 msgid "Add a {{%= items[0] %}} or {{%= items[1] %}} to get started." 423 423 msgstr "" 424 424 425 #: inc/admin.php:46 6425 #: inc/admin.php:467 426 426 msgid "Add a {{%= items[0] %}}, {{%= items[1] %}} or {{%= items[2] %}} to get started." 427 427 msgstr "" 428 428 429 #: inc/admin.php:46 7, inc/styles.php:341, tpl/js-templates.php:61429 #: inc/admin.php:468, inc/styles.php:341, tpl/js-templates.php:61 430 430 msgid "Widget" 431 431 msgstr "" 432 432 433 #: inc/admin.php:4 69, tpl/js-templates.php:63433 #: inc/admin.php:470, tpl/js-templates.php:63 434 434 msgid "Prebuilt Layout" 435 435 msgstr "" 436 436 437 #: inc/admin.php:47 1437 #: inc/admin.php:472 438 438 msgid "Read our %s if you need help." 439 439 msgstr "" 440 440 441 #: inc/admin.php:47 2, tpl/js-templates.php:64441 #: inc/admin.php:473, tpl/js-templates.php:64 442 442 msgid "documentation" 443 443 msgstr "" 444 444 445 #: inc/admin.php:48 1445 #: inc/admin.php:482 446 446 msgid "Page Builder layouts" 447 447 msgstr "" 448 448 449 #: inc/admin.php:48 2449 #: inc/admin.php:483 450 450 msgid "Error uploading or importing file." 451 451 msgstr "" 452 452 453 #: inc/admin.php:4 89453 #: inc/admin.php:490 454 454 msgid "Unknown error. Failed to load the form. Please check your internet connection, contact your web site administrator, or try again later." 455 455 msgstr "" 456 456 457 457 #. translators: This is the default name given to a user's home page 458 #: inc/admin.php:65 7, inc/home.php:26458 #: inc/admin.php:658, inc/home.php:26 459 459 msgid "Home Page" 460 460 msgstr "" 461 461 462 #: inc/admin.php:75 8462 #: inc/admin.php:759 463 463 msgid "Untitled Widget" 464 464 msgstr "" 465 465 466 #: inc/admin.php:93 8466 #: inc/admin.php:939 467 467 msgid "You need to install 1{%1$s} to use the widget 2{%2$s}." 468 468 msgstr "" 469 469 470 #: inc/admin.php:94 4470 #: inc/admin.php:945 471 471 msgid "Save and reload this page to start using the widget after you've installed it." 472 472 msgstr "" 473 473 474 #: inc/admin.php:96 0474 #: inc/admin.php:961 475 475 msgid "The widget 1{%1$s} is not available. Please try locate and install the missing plugin. Post on the 2{support forums} if you need help." 476 476 msgstr "" 477 477 478 #: inc/admin.php:1 079, inc/styles-admin.php:23478 #: inc/admin.php:1127, inc/styles-admin.php:23 479 479 msgid "The supplied nonce is invalid." 480 480 msgstr "" 481 481 482 #: inc/admin.php:1 080, inc/styles-admin.php:24482 #: inc/admin.php:1128, inc/styles-admin.php:24 483 483 msgid "Invalid nonce." 484 484 msgstr "" 485 485 486 #: inc/admin.php:1 086486 #: inc/admin.php:1134 487 487 msgid "Please specify the type of widget form to be rendered." 488 488 msgstr "" 489 489 490 #: inc/admin.php:1 087490 #: inc/admin.php:1135 491 491 msgid "Missing widget type." 492 492 msgstr "" 493 493 494 #: inc/admin.php:1 194494 #: inc/admin.php:1242 495 495 msgid "%s Widget" 496 496 msgid_plural "%s Widgets" … … 498 498 msgstr[1] "" 499 499 500 #: inc/admin.php:12 37500 #: inc/admin.php:1285 501 501 msgid "Get a lightbox addon for SiteOrigin widgets" 502 502 msgstr "" 503 503 504 #: inc/admin.php:12 41504 #: inc/admin.php:1289 505 505 msgid "Get the row, cell and widget animations addon" 506 506 msgstr "" 507 507 508 #: inc/admin.php:12 45508 #: inc/admin.php:1293 509 509 msgid "Get premium email support for SiteOrigin Page Builder" 510 510 msgstr "" 511 511 512 #: inc/admin.php:14 30512 #: inc/admin.php:1478 513 513 msgid "Toggle editor selection menu" 514 514 msgstr "" 515 515 516 #: inc/admin.php:14 31, inc/admin.php:1478, inc/settings.php:199, settings/tpl/settings.php:9516 #: inc/admin.php:1479, inc/admin.php:1526, inc/settings.php:199, settings/tpl/settings.php:9 517 517 msgid "SiteOrigin Page Builder" 518 518 msgstr "" 519 519 520 #: inc/admin.php:14 32520 #: inc/admin.php:1480 521 521 msgid "Block Editor" 522 522 msgstr "" … … 859 859 860 860 #: inc/styles.php:97 861 msgid "CSS Styles"861 msgid "CSS Declarations" 862 862 msgstr "" 863 863 864 864 #: inc/styles.php:100 865 msgid "One style attributeper line."865 msgid "One declaration per line." 866 866 msgstr "" 867 867 868 868 #: inc/styles.php:105 869 msgid "Mobile CSS Styles"869 msgid "Mobile CSS Declarations" 870 870 msgstr "" 871 871 872 872 #: inc/styles.php:108 873 msgid "CSS applied when in mobile view."873 msgid "CSS declarations applied when in mobile view." 874 874 msgstr "" 875 875 -
siteorigin-panels/trunk/readme.txt
r2307143 r2316661 3 3 Requires at least: 4.7 4 4 Tested up to: 5.5 5 Stable tag: 2.1 0.176 Build time: 2020-0 5-18T13:30:18+02:005 Stable tag: 2.11.0 6 Build time: 2020-06-02T16:27:51+02:00 7 7 License: GPLv3 8 8 License URI: http://www.gnu.org/licenses/gpl.html … … 96 96 97 97 == Changelog == 98 99 = 2.11.0 - 02 June 2020 = 100 * Live Editor: Ensured device viewing mode retained after update. 101 * Live Editor: Improved device preview transition. 102 * Legacy Layout: Detect IE 11 as legacy browser. 103 * Yoast SEO: Improved Classic Editor support. 104 * Yoast SEO: Added Block Editor support for the SiteOrigin Layout block. 105 * CSS Builder: Prevented rules without declarations from outputting. 106 * Widget Previews: Prevented boolean values from being used as widget descriptions. 107 * Live Editor: Resolved Chrome bug by setting preview url for iframe. 98 108 99 109 = 2.10.17 - 18 May 2020 = -
siteorigin-panels/trunk/siteorigin-panels.php
r2307143 r2316661 4 4 Plugin URI: https://siteorigin.com/page-builder/ 5 5 Description: A drag and drop, responsive page builder that simplifies building your website. 6 Version: 2.1 0.176 Version: 2.11.0 7 7 Author: SiteOrigin 8 8 Author URI: https://siteorigin.com … … 12 12 */ 13 13 14 define( 'SITEORIGIN_PANELS_VERSION', '2.1 0.17' );14 define( 'SITEORIGIN_PANELS_VERSION', '2.11.0' ); 15 15 if ( ! defined( 'SITEORIGIN_PANELS_JS_SUFFIX' ) ) { 16 16 define( 'SITEORIGIN_PANELS_JS_SUFFIX', '.min' ); 17 17 } 18 18 define( 'SITEORIGIN_PANELS_CSS_SUFFIX', '.min' ); 19 define( 'SITEORIGIN_PANELS_VERSION_SUFFIX', '-21 017' );19 define( 'SITEORIGIN_PANELS_VERSION_SUFFIX', '-2110' ); 20 20 21 21 require_once plugin_dir_path( __FILE__ ) . 'inc/functions.php'; … … 126 126 127 127 return 128 // IE lte 1 0129 ( preg_match('/ MSIE\s(?P<v>\d+)/i', $agent, $B) && $B['v'] <= 10) ||128 // IE lte 11 129 ( preg_match('/Trident\/(?P<v>\d+)/i', $agent, $B) && $B['v'] <= 7 ) || 130 130 // Chrome lte 25 131 131 ( preg_match('/Chrome\/(?P<v>\d+)/i', $agent, $B) && $B['v'] <= 25 ) ||
Note: See TracChangeset
for help on using the changeset viewer.