From 1dc78c17ca27a598473caec57e44497d5a780f94 Mon Sep 17 00:00:00 2001 From: Alex Arnaud <alex.arnaud@biblibre.com> Date: Fri, 22 Sep 2023 15:10:14 +0000 Subject: [PATCH] dev#160166 : mailrenderer widget --- library/Class/Article/MailRenderer.php | 25 ++++++++ library/Class/Newsletter/TemplateHelper.php | 25 +------- library/Class/Notice/MailRenderer.php | 26 ++++++++ .../controllers/NewsletterControllerTest.php | 59 +++++++++---------- 4 files changed, 82 insertions(+), 53 deletions(-) diff --git a/library/Class/Article/MailRenderer.php b/library/Class/Article/MailRenderer.php index 9646a5cf5cb..d03963c5040 100644 --- a/library/Class/Article/MailRenderer.php +++ b/library/Class/Article/MailRenderer.php @@ -43,4 +43,29 @@ class Class_Article_MailRenderer { '<div style="clear:both"></div>'. '</div>'; } + + + public function renderWithWidget(Class_Newsletter $newsletter) :string { + + $view = (new ZendAfi_Controller_Action_Helper_View)->init(); + $widget = (new Class_Systeme_Widget_Widget) + ->loadFromSettings(['type_module' => Class_Systeme_ModulesAccueil_News::CODE, + 'profile_id' => 1, + 'preferences' => + ['layout' => 'list', + 'rendering' => 'card-horizontal', + 'description_html' => $newsletter->getDisplayFullArticle(), + 'id_items' => $newsletter->getArticlesIds(), + 'id_categorie' => $newsletter->getArticlesCategoriesIds(), + 'display_order' => Class_Systeme_ModulesAccueil_News::SELECTION + ] + ]); + + $content = (new Intonation_Template) + ->addHelperPath($view) + ->renderWidget($widget, $view); + + return $content; + } + } diff --git a/library/Class/Newsletter/TemplateHelper.php b/library/Class/Newsletter/TemplateHelper.php index 4f1faea1e13..92643b4bb13 100644 --- a/library/Class/Newsletter/TemplateHelper.php +++ b/library/Class/Newsletter/TemplateHelper.php @@ -226,7 +226,8 @@ class Class_Newsletter_TemplateHelper { $content = []; if ($mail_renderer_function == '_renderWithWidget'){ - $content['articles'][] = $this->_renderWithWidget(); + $content['articles'][] = (new Class_Article_MailRenderer)->renderWithWidget($this->_newsletter); + $content['records'][] = (new Class_Notice_MailRenderer)->renderWithWidget($this->_newsletter); return $content; } @@ -247,28 +248,6 @@ class Class_Newsletter_TemplateHelper { } - protected function _renderWithWidget() :string { - $view = (new ZendAfi_Controller_Action_Helper_View)->init(); - $widget = (new Class_Systeme_Widget_Widget) - ->loadFromSettings(['type_module' => Class_Systeme_ModulesAccueil_News::CODE, - 'profile_id' => 1, - 'preferences' => - ['layout' => 'list', - 'rendering' => 'card-horizontal', - 'description_html' => $this->_newsletter->getDisplayFullArticle(), - 'id_items' => $this->_newsletter->getArticlesIds(), - 'id_categorie' => $this->_newsletter->getArticlesCategoriesIds(), - 'display_order' => Class_Systeme_ModulesAccueil_News::SELECTION - ] - ]); - - $content = (new Intonation_Template) - ->addHelperPath($view) - ->renderWidget($widget, $view); - - return $content; - } - protected function _getContentAsHTML() : string { if ( $this->_newsletter_contenu_cache) diff --git a/library/Class/Notice/MailRenderer.php b/library/Class/Notice/MailRenderer.php index 98e465987b8..fb0ea78ed09 100644 --- a/library/Class/Notice/MailRenderer.php +++ b/library/Class/Notice/MailRenderer.php @@ -50,6 +50,32 @@ class Class_Notice_MailRenderer { } + public function renderWithWidget(Class_Newsletter $newsletter) :string { + if (! ((bool)$newsletter->getIdCatalogue() && (bool)$newsletter->getIdPanier())) + return ''; + + $view = (new ZendAfi_Controller_Action_Helper_View)->init(); + $widget = (new Class_Systeme_Widget_Widget) + ->loadFromSettings(['type_module' => Class_Systeme_ModulesAccueil_Kiosque::CODE, + 'profile_id' => 1, + 'preferences' => + ['layout' => 'list', + 'rendering' => 'card-horizontal', + 'aleatoire' => 0, + 'id_catalogue' => $newsletter->getIdCatalogue(), + 'id_panier' => $newsletter->getIdPanier(), + 'display_order' => Class_Systeme_ModulesAccueil_News::SELECTION + ] + ]); + + $content = (new Intonation_Template) + ->addHelperPath($view) + ->renderWidget($widget, $view); + + return $content ??''; + } + + protected function _title(Class_Notice $record) : string { return $record->getTitrePrincipal() . $this->_infos($record); } diff --git a/tests/application/modules/admin/controllers/NewsletterControllerTest.php b/tests/application/modules/admin/controllers/NewsletterControllerTest.php index 378d8ab35ce..7d8f11dc3bd 100644 --- a/tests/application/modules/admin/controllers/NewsletterControllerTest.php +++ b/tests/application/modules/admin/controllers/NewsletterControllerTest.php @@ -1011,20 +1011,33 @@ abstract class Admin_NewsletterControllerPreviewActionTestCase - -class Admin_NewsletterControllerPreviewActionWithArticlesSelectionAndPlaceHoldersTest - extends Admin_NewsletterControllerPreviewActionTestCase { +abstract class Admin_NewsletterControllerPreviewActionPlaceHoldersTestCase extends Admin_NewsletterControllerPreviewActionTestCase{ + protected Class_Newsletter $_newsletter; public function setUp() { parent::setUp(); - Class_Newsletter::find(3)->setContenu("Top\n[newsletter_records]\nMiddle\n[newsletter_articles]\nfooter") - ->save(); - + $this->_newsletter = Class_Newsletter::find(3); + $this->_newsletter + ->setContenu("Top\n[newsletter_records]\nMiddle\n[newsletter_articles]\nfooter"); + $this->_customizeNewsletter($this->_newsletter); + $this->_newsletter + ->save(); $this->dispatch('/admin/newsletter/preview/id/3'); } + protected function _customizeNewsletter(Class_Newsletter $newsletter){ + } +} + + + + + +class Admin_NewsletterControllerPreviewActionWithArticlesSelectionAndPlaceHoldersTest + extends Admin_NewsletterControllerPreviewActionPlaceHoldersTestCase { + protected function _expectedText() { return file_get_contents(__DIR__.'/newsletter_placeholder_content_expected.txt'); } @@ -1062,18 +1075,11 @@ class Admin_NewsletterControllerPreviewActionWithArticlesSelectionAndPlaceHolder class Admin_NewsletterControllerPreviewActionWithArticlesSelectionAndPlaceHoldersWithoutCatalogueTest - extends Admin_NewsletterControllerPreviewActionTestCase { + extends Admin_NewsletterControllerPreviewActionPlaceHoldersTestCase { - - public function setUp() { - parent::setUp(); - - Class_Newsletter::find(3) - ->setIdCatalogue(0) - ->setContenu("Top\n[newsletter_records]\nMiddle\n[newsletter_articles]\nfooter") - ->save(); - - $this->dispatch('/admin/newsletter/preview/id/3'); + protected function _customizeNewsletter(Class_Newsletter $newsletter) { + $newsletter + ->setIdCatalogue(0); } @@ -1083,7 +1089,7 @@ class Admin_NewsletterControllerPreviewActionWithArticlesSelectionAndPlaceHolder /** @test */ - public function pageShouldLoad() { + public function pageShouldContainsExpectedText() { $this->assertContains($this->_expectedText(), $this->_response->getBody()); } } @@ -1092,19 +1098,12 @@ class Admin_NewsletterControllerPreviewActionWithArticlesSelectionAndPlaceHolder class Admin_NewsletterControllerPreviewActionWithArticlesSelectionAndPlaceHoldersWithoutArticlesTes - extends Admin_NewsletterControllerPreviewActionTestCase { - + extends Admin_NewsletterControllerPreviewActionPlaceHoldersTestCase { - public function setUp() { - parent::setUp(); - - Class_Newsletter::find(3) + protected function _customizeNewsletter(Class_Newsletter $newsletter) { + $newsletter ->setArticlesIds(0) - ->setArticlesCategoriesIds(0) - ->setContenu("Top\n[newsletter_records]\nMiddle\n[newsletter_articles]\nfooter") - ->save(); - - $this->dispatch('/admin/newsletter/preview/id/3'); + ->setArticlesCategoriesIds(0); } @@ -1114,7 +1113,7 @@ class Admin_NewsletterControllerPreviewActionWithArticlesSelectionAndPlaceHolder /** @test */ - public function pageShouldLoad() { + public function pageShouldContainsExpectedText() { $this->assertContains($this->_expectedText(), $this->_response->getBody()); } } -- GitLab