Skip to content

Commit ddeb203

Browse files
committed
feat(admin): add show in shop and preview
1 parent 3277522 commit ddeb203

File tree

13 files changed

+256
-6
lines changed

13 files changed

+256
-6
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?php
2+
3+
/*
4+
* This file is part of Monsieur Biz' Blog plugin for Sylius.
5+
*
6+
* (c) Monsieur Biz <[email protected]>
7+
*
8+
* For the full copyright and license information, please view the LICENSE.txt
9+
* file that was distributed with this source code.
10+
*/
11+
12+
declare(strict_types=1);
13+
14+
namespace MonsieurBiz\SyliusBlogPlugin\Controller;
15+
16+
use MonsieurBiz\SyliusRichEditorPlugin\Switcher\SwitchAdminLocaleInterface;
17+
use Sylius\Bundle\ResourceBundle\Controller\ResourceController;
18+
use Sylius\Component\Resource\ResourceActions;
19+
use Symfony\Component\HttpFoundation\Request;
20+
use Symfony\Component\HttpFoundation\Response;
21+
22+
class ArticleController extends ResourceController
23+
{
24+
public function previewAction(Request $request, SwitchAdminLocaleInterface $switchAdminLocale): Response
25+
{
26+
// Switch the locale of the preview to the default locale of the channel to not take the locale of the admin
27+
if ($locale = $request->getDefaultLocale()) {
28+
$switchAdminLocale->switchLocale($locale);
29+
}
30+
$configuration = $this->requestConfigurationFactory->create($this->metadata, $request);
31+
32+
$this->isGrantedOr403($configuration, ResourceActions::SHOW);
33+
$resource = $this->findOr404($configuration);
34+
35+
/** @var string $template */
36+
$template = $configuration->getRequest()->get('template');
37+
38+
return $this->render($template, [
39+
'configuration' => $configuration,
40+
'metadata' => $this->metadata,
41+
'resource' => $resource,
42+
$this->metadata->getName() => $resource,
43+
]);
44+
}
45+
}

src/Form/Type/ArticleTranslationType.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@
1313

1414
namespace MonsieurBiz\SyliusBlogPlugin\Form\Type;
1515

16+
use MonsieurBiz\SyliusMediaManagerPlugin\Form\Type\ImageType;
1617
use MonsieurBiz\SyliusRichEditorPlugin\Form\Type\RichEditorType;
1718
use Sylius\Bundle\ResourceBundle\Form\Type\AbstractResourceType;
1819
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
1920
use Symfony\Component\Form\Extension\Core\Type\TextType;
2021
use Symfony\Component\Form\FormBuilderInterface;
21-
use MonsieurBiz\SyliusMediaManagerPlugin\Form\Type\ImageType;
2222

2323
final class ArticleTranslationType extends AbstractResourceType
2424
{

src/Migrations/Version20250523154149.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
<?php
22

3+
/*
4+
* This file is part of Monsieur Biz' Blog plugin for Sylius.
5+
*
6+
* (c) Monsieur Biz <[email protected]>
7+
*
8+
* For the full copyright and license information, please view the LICENSE.txt
9+
* file that was distributed with this source code.
10+
*/
11+
312
declare(strict_types=1);
413

514
namespace MonsieurBiz\SyliusBlogPlugin\Migrations;

src/Resources/config/resources.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ sylius_resource:
1313
form: MonsieurBiz\SyliusBlogPlugin\Form\Type\TagTranslationType
1414
monsieurbiz_blog.article:
1515
classes:
16+
controller: MonsieurBiz\SyliusBlogPlugin\Controller\ArticleController
1617
model: MonsieurBiz\SyliusBlogPlugin\Entity\Article
1718
interface: MonsieurBiz\SyliusBlogPlugin\Entity\ArticleInterface
1819
repository: MonsieurBiz\SyliusBlogPlugin\Repository\ArticleRepository
@@ -24,6 +25,7 @@ sylius_resource:
2425
form: MonsieurBiz\SyliusBlogPlugin\Form\Type\ArticleTranslationType
2526
monsieurbiz_blog.case_study:
2627
classes:
28+
controller: MonsieurBiz\SyliusBlogPlugin\Controller\ArticleController
2729
model: MonsieurBiz\SyliusBlogPlugin\Entity\Article
2830
interface: MonsieurBiz\SyliusBlogPlugin\Entity\ArticleInterface
2931
repository: MonsieurBiz\SyliusBlogPlugin\Repository\ArticleRepository

src/Resources/config/routes/admin.yaml

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ monsieurbiz_blog_admin_article:
1818
alias: monsieurbiz_blog.article
1919
path: /blog/articles
2020
templates: "@SyliusAdmin\\shared\\crud"
21-
redirect: index
21+
redirect: update
2222
except: ['show', 'create']
2323
grid: monsieurbiz_blog_admin_article_blog
2424
vars:
@@ -46,7 +46,7 @@ monsieurbiz_blog_admin_case_study:
4646
alias: monsieurbiz_blog.case_study
4747
path: /blog/case-studies
4848
templates: "@SyliusAdmin\\shared\\crud"
49-
redirect: index
49+
redirect: update
5050
except: ['show', 'create']
5151
grid: monsieurbiz_blog_admin_article_case_study
5252
vars:
@@ -93,3 +93,19 @@ monsieurbiz_blog_admin_author:
9393
except: ['show']
9494
grid: monsieurbiz_blog_admin_author
9595
type: sylius.resource
96+
97+
monsieurbiz_blog_admin_blog_preview:
98+
path: /blog/article/preview/{id}
99+
defaults:
100+
_controller: monsieurbiz_blog.controller.article::previewAction
101+
template: '@MonsieurBizSyliusBlogPlugin\admin\article\preview.html.twig'
102+
_sylius:
103+
section: shop
104+
105+
monsieurbiz_blog_admin_case_study_preview:
106+
path: /blog/case-study/preview/{id}
107+
defaults:
108+
_controller: monsieurbiz_blog.controller.article::previewAction
109+
template: '@MonsieurBizSyliusBlogPlugin\admin\article\preview.html.twig'
110+
_sylius:
111+
section: shop

src/Resources/config/routes/shop/case_study.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ monsieurbiz_case_study_index:
44
defaults:
55
_controller: monsieurbiz_blog.controller.case_study::indexAction
66
_sylius:
7-
template: "@MonsieurBizSyliusBlogPlugin/shop/casestudy/index.html.twig"
7+
template: "@MonsieurBizSyliusBlogPlugin/shop/case_study/index.html.twig"
88
grid: monsieurbiz_blog_shop_article_case_study
99
parameters:
1010
type: !php/const MonsieurBiz\SyliusBlogPlugin\Entity\ArticleInterface::CASE_STUDY_TYPE
@@ -15,7 +15,7 @@ monsieurbiz_case_study_tag_show:
1515
defaults:
1616
_controller: monsieurbiz_blog.controller.case_study::indexAction
1717
_sylius:
18-
template: "@MonsieurBizSyliusBlogPlugin/shop/casestudy/index.html.twig"
18+
template: "@MonsieurBizSyliusBlogPlugin/shop/case_study/index.html.twig"
1919
grid: monsieurbiz_blog_shop_tag_article_case_study
2020
parameters:
2121
tag: "expr:notFoundOnNull(service('monsieurbiz_blog.repository.tag').findOneBySlug($slug, service('sylius.context.locale').getLocaleCode()))"
@@ -27,7 +27,7 @@ monsieurbiz_case_study_article_show:
2727
defaults:
2828
_controller: monsieurbiz_blog.controller.case_study::showAction
2929
_sylius:
30-
template: "@MonsieurBizSyliusBlogPlugin/shop/casestudy/show.html.twig"
30+
template: "@MonsieurBizSyliusBlogPlugin/shop/case_study/show.html.twig"
3131
repository:
3232
method: findOnePublishedBySlug
3333
arguments:

src/Resources/config/sylius/twig_hooks/admin/article.yaml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
sylius_twig_hooks:
22
hooks:
3+
'sylius_admin.article.create.content.header.title_block.actions':
4+
preview:
5+
template: '@MonsieurBizSyliusBlogPlugin/admin/article/update/content/header/title_block/actions/preview.html.twig'
6+
priority: -100
7+
configuration:
8+
tooltip: 'monsieurbiz_blog.ui.preview_create_action_tooltip'
9+
type: 'blog'
10+
show_in_shop:
11+
template: '@MonsieurBizSyliusBlogPlugin/admin/article/update/content/header/title_block/actions/show_in_shop.html.twig'
12+
priority: -200
13+
configuration:
14+
type: 'blog'
15+
316
'sylius_admin.article.create.content':
417
form:
518
component: 'sylius_admin:monsieurbiz_blog:article:form'
@@ -61,6 +74,18 @@ sylius_twig_hooks:
6174
template: '@MonsieurBizSyliusBlogPlugin/admin/article/form/sections/translations/seo.html.twig'
6275
priority: 200
6376

77+
'sylius_admin.article.update.content.header.title_block.actions':
78+
preview:
79+
template: '@MonsieurBizSyliusBlogPlugin/admin/article/update/content/header/title_block/actions/preview.html.twig'
80+
priority: -100
81+
configuration:
82+
tooltip: 'monsieurbiz_blog.ui.preview_create_action_tooltip'
83+
type: 'blog'
84+
show_in_shop:
85+
template: '@MonsieurBizSyliusBlogPlugin/admin/article/update/content/header/title_block/actions/show_in_shop.html.twig'
86+
priority: -200
87+
configuration:
88+
type: 'blog'
6489

6590
'sylius_admin.article.update.content':
6691
form:

src/Resources/config/sylius/twig_hooks/admin/case_study.yaml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
sylius_twig_hooks:
22
hooks:
3+
'sylius_admin.case_study.create.content.header.title_block.actions':
4+
preview:
5+
template: '@MonsieurBizSyliusBlogPlugin/admin/article/update/content/header/title_block/actions/preview.html.twig'
6+
priority: -100
7+
configuration:
8+
tooltip: 'monsieurbiz_blog.ui.preview_create_action_tooltip'
9+
type: 'case_study'
10+
show_in_shop:
11+
template: '@MonsieurBizSyliusBlogPlugin/admin/article/update/content/header/title_block/actions/show_in_shop.html.twig'
12+
priority: -200
13+
configuration:
14+
type: 'case_study'
15+
316
'sylius_admin.case_study.create.content':
417
form:
518
component: 'sylius_admin:monsieurbiz_blog:article:form'
@@ -61,6 +74,18 @@ sylius_twig_hooks:
6174
template: '@MonsieurBizSyliusBlogPlugin/admin/article/form/sections/translations/seo.html.twig'
6275
priority: 200
6376

77+
'sylius_admin.case_study.update.content.header.title_block.actions':
78+
preview:
79+
template: '@MonsieurBizSyliusBlogPlugin/admin/article/update/content/header/title_block/actions/preview.html.twig'
80+
priority: -100
81+
configuration:
82+
tooltip: 'monsieurbiz_blog.ui.preview_create_action_tooltip'
83+
type: 'case_study'
84+
show_in_shop:
85+
template: '@MonsieurBizSyliusBlogPlugin/admin/article/update/content/header/title_block/actions/show_in_shop.html.twig'
86+
priority: -200
87+
configuration:
88+
type: 'case_study'
6489

6590
'sylius_admin.case_study.update.content':
6691
form:

src/Resources/translations/messages.en.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ monsieurbiz_blog:
1717
meta_title: Meta title
1818
meta_description: Meta description
1919
meta_keywords: Meta keywords
20+
meta_image: Meta image
2021
help:
2122
description: Used in the display of lists
2223
meta_title: If empty, the title will be used.
2324
meta_description: If empty, the description will be used.
25+
meta_image: "Ideal format: 1200 x 630 px"
2426
author:
2527
name: Name
2628
image: Image
@@ -53,6 +55,15 @@ monsieurbiz_blog:
5355
new_case_study: New case study
5456
edit_case_study: Edit case study
5557
no_results_to_display: No results to display
58+
show_in: "Show in"
59+
show_article_in_shop: "Show article in shop"
60+
cannot_show_article_in_shop: "You cannot show this article in the shop because it is not enabled, not published or associated to at least one channel."
61+
preview_update_action_tooltip: "Click `Update` to save your changes before previewing the article."
62+
preview_create_action_tooltip: "Click `Create` to save your changes before previewing the article."
63+
actions:
64+
preview: 'Preview'
65+
banner:
66+
preview: Preview
5667
ui_element:
5768
case_studies_ui_element:
5869
title: Case studies Element

src/Resources/translations/messages.fr.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ monsieurbiz_blog:
1717
meta_title: Meta title
1818
meta_description: Meta description
1919
meta_keywords: Meta keywords
20+
meta_image: Meta image
2021
help:
2122
description: Utilisée dans l'affichage des listes
2223
meta_title: Si vide, le titre sera utilisé.
2324
meta_description: Si vide, la description sera utilisée.
25+
meta_image: "Format idéal : 1200 x 630 px"
2426
author:
2527
name: Nom
2628
image: Image
@@ -53,6 +55,15 @@ monsieurbiz_blog:
5355
new_case_study: Nouvelle étude de cas
5456
edit_case_study: Modifier l'étude de cas
5557
no_results_to_display: Aucun résultat à afficher
58+
show_in: "Afficher dans"
59+
show_article_in_shop: "Afficher l'article dans la boutique"
60+
cannot_show_article_in_shop: "Vous ne pouvez pas afficher cet article dans la boutique car il n'est pas activé, publié ou associé à au moins un canal."
61+
preview_update_action_tooltip: "Cliquez sur `Mise à jour` pour enregistrer vos modifications avant de prévisualiser l'article."
62+
preview_create_action_tooltip: "Cliquez sur `Créer` pour enregistrer vos modifications avant de prévisualiser l'article."
63+
actions:
64+
preview: 'Prévisualiser'
65+
banner:
66+
preview: 'Prévisualisation'
5667
ui_element:
5768
case_studies_ui_element:
5869
title: Lame Études de cas

0 commit comments

Comments
 (0)