diff --git a/assets/js/src/newsletter_editor/blocks/automatedLatestContent.js b/assets/js/src/newsletter_editor/blocks/automatedLatestContent.js index e86c8b0779..3ed52fa77b 100644 --- a/assets/js/src/newsletter_editor/blocks/automatedLatestContent.js +++ b/assets/js/src/newsletter_editor/blocks/automatedLatestContent.js @@ -9,10 +9,12 @@ define([ 'newsletter_editor/App', 'newsletter_editor/blocks/base', + 'newsletter_editor/blocks/button', + 'newsletter_editor/blocks/divider', 'newsletter_editor/components/wordpress', 'underscore', 'jquery', - ], function(App, BaseBlock, WordpressComponent, _, jQuery) { + ], function(App, BaseBlock, ButtonBlock, DividerBlock, WordpressComponent, _, jQuery) { "use strict"; @@ -249,7 +251,7 @@ define([ } }, showButtonSettings: function(event) { - var buttonModule = App.module('blocks.button'); + var buttonModule = ButtonBlock; (new buttonModule.ButtonBlockSettingsView({ model: this.model.get('readMoreButton'), renderOptions: { @@ -260,7 +262,7 @@ define([ })).render(); }, showDividerSettings: function(event) { - var dividerModule = App.module('blocks.divider'); + var dividerModule = DividerBlock; (new dividerModule.DividerBlockSettingsView({ model: this.model.get('divider'), renderOptions: { diff --git a/assets/js/src/newsletter_editor/blocks/posts.js b/assets/js/src/newsletter_editor/blocks/posts.js index 547a421e32..39e4525a76 100644 --- a/assets/js/src/newsletter_editor/blocks/posts.js +++ b/assets/js/src/newsletter_editor/blocks/posts.js @@ -20,7 +20,9 @@ define([ 'newsletter_editor/App', 'newsletter_editor/components/wordpress', 'newsletter_editor/blocks/base', - ], function(Backbone, Marionette, Radio, _, jQuery, MailPoet, App, WordpressComponent, BaseBlock) { + 'newsletter_editor/blocks/button', + 'newsletter_editor/blocks/divider', + ], function(Backbone, Marionette, Radio, _, jQuery, MailPoet, App, WordpressComponent, BaseBlock, ButtonBlock, DividerBlock) { "use strict"; @@ -115,6 +117,12 @@ define([ if (data.posts.length === 0) return; + WordpressComponent.getTransformedPosts(data).done(function(posts) { + console.log('Available posts fetched', arguments); + collection.add(posts, { at: index }); + }).fail(function() { + console.log('Posts fetchPosts error', arguments); + }); // TODO: Move query logic to new AJAX format //mailpoet_post_wpi('automated_latest_content.php', data, function(response) { //console.log('Available posts fetched', arguments); @@ -437,7 +445,7 @@ define([ }; }, showButtonSettings: function(event) { - var buttonModule = App.module('blocks.button'); + var buttonModule = ButtonBlock; (new buttonModule.ButtonBlockSettingsView({ model: this.model.get('readMoreButton'), renderOptions: { @@ -448,7 +456,7 @@ define([ })).render(); }, showDividerSettings: function(event) { - var dividerModule = App.module('blocks.divider'); + var dividerModule = DividerBlock; (new dividerModule.DividerBlockSettingsView({ model: this.model.get('divider'), renderOptions: { diff --git a/assets/js/src/newsletter_editor/components/wordpress.js b/assets/js/src/newsletter_editor/components/wordpress.js index f45ae1fd42..2b21cba21c 100644 --- a/assets/js/src/newsletter_editor/components/wordpress.js +++ b/assets/js/src/newsletter_editor/components/wordpress.js @@ -9,7 +9,8 @@ define([ var postTypesCache, taxonomiesCache = {}, termsCache = {}, - postsCache = {}; + postsCache = {}, + transformedPostsCache = {}; Module.getPostTypes = function() { if (!postTypesCache) { @@ -65,6 +66,19 @@ define([ return postsCache[key]; }; + Module.getTransformedPosts = function(options) { + var key = JSON.stringify(options); + if (!transformedPostsCache[key]) { + transformedPostsCache[key] = MailPoet.Ajax.post({ + endpoint: 'wordpress', + action: 'getTransformedPosts', + data: options || {}, + }); + } + + return transformedPostsCache[key]; + }; + App.on('start', function(options) { // Prefetch post types Module.getPostTypes(); diff --git a/lib/Newsletter/PostsTransformer.php b/lib/Newsletter/PostsTransformer.php new file mode 100644 index 0000000000..e26b0847f1 --- /dev/null +++ b/lib/Newsletter/PostsTransformer.php @@ -0,0 +1,357 @@ + $post) { + if ($title_list_only) { + $results[] = self::getPostTitle($post, $args); + } else { + $postJSON = self::postToEditorJson($post, $args); + + $results = array_merge($results, $postJSON); + + if ($use_divider && $index + 1 < $total_posts) { + $results[] = $args['divider']; + } + } + } + + if ($title_list_only && !empty($results)) { + $results = array( + array( + 'type' => 'text', + 'text' => '
','','','','','',' ' . stripslashes($args['readMoreText']) . ' ' . $text . '','
','
','','
','
','
');
+ $content = strip_tags($content, implode('',$tags_not_being_stripped));
+
+ $content = wpautop($content);
+
+ if (!$hideReadMore && $args['readMoreType'] === 'link') {
+ $content .= '
';
+ $text .= self::getPostCategories($args['categoriesPrecededBy'], $post);
+ }
+
+ if (!empty($text)) $text = '