Skip to content

Commit 1e3565f

Browse files
committed
Merge pull request #267 from vincent-chapron/bugfix/duplicata-of-settings
Bugfix/duplicata of settings
2 parents d862ea9 + 9fffc51 commit 1e3565f

File tree

13 files changed

+265
-97
lines changed

13 files changed

+265
-97
lines changed

Bundle/BlogBundle/Controller/ArticleController.php

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -142,44 +142,51 @@ public function settingsAction(Request $request, Article $article)
142142

143143
if ($novalidate === false && $form->isValid()) {
144144
$em = $this->getDoctrine()->getManager();
145+
145146
if (count($article->getTags())) {
146147
/** @var Tag $tag */
147148
foreach ($article->getTags() as $tag) {
148149
$tag->setBlog($article->getBlog());
149150
$em->persist($tag);
150151
}
151152
}
152-
$businessPage->setTemplate($article->getTemplate());
153-
$em->flush();
154-
155153
$template = $article->getTemplate();
156-
154+
$businessPage->setTemplate($template);
157155
$page = $pageHelper->findPageByParameters([
158156
'viewId' => $template->getId(),
159157
'entityId' => $article->getId(),
160158
]);
159+
$page->setStatus($article->getStatus());
160+
161+
$em->flush();
161162

162163
$response = [
163164
'success' => true,
164-
'url' => $this->generateUrl('victoire_core_page_show', ['_locale' => $page->getLocale(), 'url' => $page->getUrl()]),
165+
'url' => $this->generateUrl('victoire_core_page_show', [
166+
'_locale' => $page->getLocale(),
167+
'url' => $page->getUrl(),
168+
]),
165169
];
166170
} else {
167-
if ($novalidate === false) {
168-
$template = 'VictoireBlogBundle:Article:settings.html.twig';
169-
} else {
170-
$template = 'VictoireBlogBundle:Article:_form.html.twig';
171-
}
171+
$template = 'VictoireBlogBundle:Article:';
172+
$template .= ($novalidate === false) ? 'settings.html.twig' : '_form.html.twig';
173+
174+
$page = $pageHelper->findPageByParameters([
175+
'viewId' => $article->getTemplate()->getId(),
176+
'entityId' => $article->getId(),
177+
]);
178+
172179
$response = [
173180
'success' => false,
174-
'html' => $this->container->get('victoire_templating')->render(
175-
$template,
176-
[
177-
'action' => $this->generateUrl('victoire_blog_article_settings', ['id' => $article->getId()]),
178-
'article' => $article,
179-
'form' => $form->createView(),
180-
'businessProperties' => $businessProperties,
181-
]
182-
),
181+
'html' => $this->get('victoire_templating')->render($template, [
182+
'action' => $this->generateUrl('victoire_blog_article_settings', [
183+
'id' => $article->getId(),
184+
]),
185+
'article' => $article,
186+
'form' => $form->createView(),
187+
'businessProperties' => $businessProperties,
188+
'page' => $page,
189+
]),
183190
];
184191
}
185192

Bundle/BlogBundle/Form/ArticleSettingsType.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public function buildForm(FormBuilderInterface $builder, array $options)
2222
{
2323
parent::buildForm($builder, $options);
2424
$builder
25-
->add('slug', null, [
25+
->add('slug', 'slug', [
2626
'label' => 'form.page.type.slug.label',
2727
])
2828
->add('status', 'choice', [
@@ -65,6 +65,7 @@ public static function manageRelatedStatus($status, $form)
6565
->add('publishedAt', null, [
6666
'widget' => 'single_text',
6767
'vic_datetimepicker' => true,
68+
'label' => 'form.article.settings.type.publish.label',
6869
]);
6970
break;
7071
default:

Bundle/BlogBundle/Form/ArticleType.php

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -133,21 +133,25 @@ protected function manageTemplate($blog_id, $form)
133133
{
134134
$articleTemplateRepo = $this->entityManager->getRepository('VictoireBlogBundle:ArticleTemplate');
135135

136-
if ($articleTemplateRepo->filterByBlog($blog_id)->getCount('parent')->run('getSingleScalarResult') > 1) {
137-
$articleTemplates = function (ArticleTemplateRepository $repo) use ($blog_id) {
138-
return $repo->filterByBlog($blog_id)->getInstance();
139-
};
140-
$form->add('template', null, [
141-
'label' => 'form.article.type.template.label',
142-
'property' => 'backendName',
143-
'required' => true,
144-
'query_builder' => $articleTemplates,
145-
]);
136+
if (!$form->getData()->getTemplate()) {
137+
if ($articleTemplateRepo->filterByBlog($blog_id)->getCount('parent')->run('getSingleScalarResult') > 1) {
138+
$articleTemplates = function (ArticleTemplateRepository $repo) use ($blog_id) {
139+
return $repo->filterByBlog($blog_id)->getInstance();
140+
};
141+
$form->add('template', null, [
142+
'label' => 'form.article.type.template.label',
143+
'property' => 'backendName',
144+
'required' => true,
145+
'query_builder' => $articleTemplates,
146+
]);
147+
} else {
148+
$form->add('template', 'victoire_article_template_type', [
149+
'data_class' => null,
150+
'data' => $articleTemplateRepo->filterByBlog($blog_id)->run('getSingleResult'),
151+
]);
152+
}
146153
} else {
147-
$form->add('template', 'victoire_article_template_type', [
148-
'data_class' => null,
149-
'data' => $articleTemplateRepo->filterByBlog($blog_id)->run('getSingleResult'),
150-
]);
154+
$form->remove('template');
151155
}
152156
}
153157

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
<?php
2+
3+
namespace Victoire\Bundle\BlogBundle\Listener;
4+
5+
use Symfony\Component\EventDispatcher\Event;
6+
use Victoire\Bundle\CoreBundle\Listener\MenuListenerInterface;
7+
use Victoire\Bundle\CoreBundle\Menu\MenuBuilder;
8+
use Victoire\Bundle\PageBundle\Event\Menu\PageMenuContextualEvent;
9+
10+
/**
11+
* When dispatched, this listener add items to a KnpMenu.
12+
*/
13+
class ArticleMenuListener implements MenuListenerInterface
14+
{
15+
protected $menuBuilder;
16+
17+
/**
18+
* Blog menu listener constructor.
19+
*
20+
* @param MenuBuilder $menuBuilder
21+
*/
22+
public function __construct(MenuBuilder $menuBuilder)
23+
{
24+
$this->menuBuilder = $menuBuilder;
25+
}
26+
27+
/**
28+
* add a contextual menu item.
29+
*
30+
* @param PageMenuContextualEvent $event
31+
*
32+
* @return \Knp\Menu\ItemInterface
33+
*/
34+
public function addContextual($event)
35+
{
36+
$mainItem = $this->getMainItem();
37+
$page = $event->getPage();
38+
$currentArticle = $event->getPage()->getBusinessEntity();
39+
40+
$mainItem->addChild('menu.page.settings',
41+
[
42+
'route' => 'victoire_blog_article_settings',
43+
'routeParameters' => [
44+
'id' => $currentArticle->getId(),
45+
'page_id' => $page->getId(),
46+
],
47+
]
48+
)->setLinkAttribute('data-toggle', 'vic-modal');
49+
50+
return $mainItem;
51+
}
52+
53+
/**
54+
* add global menu items.
55+
*
56+
* @param Event $event
57+
*
58+
* @return \Victoire\Bundle\BlogBundle\Listener\MenuItem
59+
*
60+
* @SuppressWarnings checkUnusedFunctionParameters
61+
*/
62+
public function addGlobal(Event $event)
63+
{
64+
}
65+
66+
/**
67+
* This method returns you the main item and create it if not exists.
68+
*
69+
* @return \Knp\Menu\ItemInterface The main item to get
70+
*/
71+
private function getMainItem()
72+
{
73+
$menuPage = $this->menuBuilder->getTopNavbar()->getChild('menu.page');
74+
75+
if ($menuPage) {
76+
return $menuPage;
77+
} else {
78+
return $this->menuBuilder->createDropdownMenuItem(
79+
$this->menuBuilder->getTopNavbar(),
80+
'menu.page'
81+
);
82+
}
83+
}
84+
}

Bundle/BlogBundle/Listener/BlogMenuListener.php

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,28 +34,24 @@ public function __construct(MenuBuilder $menuBuilder)
3434
public function addContextual($event)
3535
{
3636
$mainItem = $this->getMainItem();
37-
$currentBlog = $event->getPage()->getBusinessEntity()->getBlog();
3837
$currentArticle = $event->getPage()->getBusinessEntity();
38+
$currentBlog = $currentArticle->getBlog();
3939

40-
$mainItem->addChild('menu.blog.article.settings',
41-
[
42-
'route' => 'victoire_blog_article_settings',
43-
'routeParameters' => ['id' => $currentArticle->getId()],
44-
]
45-
)->setLinkAttribute('data-toggle', 'vic-modal');
46-
47-
$mainItem->addChild('menu.blog.article.settings',
40+
$mainItem->addChild('menu.blog.settings',
4841
[
49-
'route' => 'victoire_blog_article_settings',
50-
'routeParameters' => ['id' => $currentArticle->getId()],
51-
]
42+
'route' => 'victoire_blog_index',
43+
'routeParameters' => [
44+
'blogId' => $currentBlog->getId(),
45+
'tab' => 'settings',
46+
],
47+
]
5248
)->setLinkAttribute('data-toggle', 'vic-modal');
5349

5450
$mainItem->addChild('menu.blog.article.new',
5551
[
5652
'route' => 'victoire_blog_article_newBlogArticle',
5753
'routeParameters' => ['id' => $currentBlog->getId()],
58-
]
54+
]
5955
)->setLinkAttribute('data-toggle', 'vic-modal');
6056

6157
return $mainItem;
@@ -134,7 +130,7 @@ private function getMainItem()
134130
return $this->menuBuilder->createDropdownMenuItem(
135131
$this->menuBuilder->getTopNavbar(),
136132
'menu.blog',
137-
['attributes' => ['class' => 'vic-pull-left vic-text-center']]
133+
['attributes' => ['class' => 'vic-pull-left vic-text-left']]
138134
);
139135
}
140136
}

Bundle/BlogBundle/Resources/config/services.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@ services:
2020
tags:
2121
- { name: kernel.event_listener, event: victoire_core.article_menu.contextual, method: addContextual}
2222

23+
victoire_blog.article_settings_menu.contextual:
24+
class: Victoire\Bundle\BlogBundle\Listener\ArticleMenuListener
25+
arguments: ["@victoire_core.admin_menu_builder"]
26+
tags:
27+
- { name: kernel.event_listener, event: victoire_core.article_menu.contextual, method: addContextual}
28+
2329
victoire_blog.blog_menu.contextual:
2430
class: Victoire\Bundle\BlogBundle\Listener\BlogMenuListener
2531
arguments: ["@victoire_core.admin_menu_builder"]

Bundle/BlogBundle/Resources/translations/victoire.en.xliff

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,18 @@
214214
<source>form.article.type.template.label</source>
215215
<target>Template</target>
216216
</trans-unit>
217+
<trans-unit id="47" resname="form.article.settings.type.publish.label">
218+
<source>form.article.settings.type.publish.label</source>
219+
<target><![CDATA[&nbsp;]]></target>
220+
</trans-unit>
221+
<trans-unit id="48" resname="form.article.settings.type.global.title">
222+
<source>form.article.settings.type.global.title</source>
223+
<target>Global</target>
224+
</trans-unit>
225+
<trans-unit id="49" resname="form.article.settings.type.article.title">
226+
<source>form.article.settings.type.article.title</source>
227+
<target>Article</target>
228+
</trans-unit>
217229
</body>
218230
</file>
219231
</xliff>

Bundle/BlogBundle/Resources/translations/victoire.es.xliff

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,18 @@
214214
<source>form.article.type.template.label</source>
215215
<target>Plantilla</target>
216216
</trans-unit>
217+
<trans-unit id="47" resname="form.article.settings.type.publish.label">
218+
<source>form.article.settings.type.publish.label</source>
219+
<target><![CDATA[&nbsp;]]></target>
220+
</trans-unit>
221+
<trans-unit id="48" resname="form.article.settings.type.global.title">
222+
<source>form.article.settings.type.global.title</source>
223+
<target>Global</target>
224+
</trans-unit>
225+
<trans-unit id="49" resname="form.article.settings.type.article.title">
226+
<source>form.article.settings.type.article.title</source>
227+
<target>Artículo</target>
228+
</trans-unit>
217229
</body>
218230
</file>
219231
</xliff>

Bundle/BlogBundle/Resources/translations/victoire.fr.xliff

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,18 @@
214214
<source>form.article.type.template.label</source>
215215
<target>Modèle à utiliser</target>
216216
</trans-unit>
217+
<trans-unit id="47" resname="form.article.settings.type.publish.label">
218+
<source>form.article.settings.type.publish.label</source>
219+
<target><![CDATA[&nbsp;]]></target>
220+
</trans-unit>
221+
<trans-unit id="48" resname="form.article.settings.type.global.title">
222+
<source>form.article.settings.type.global.title</source>
223+
<target>Global</target>
224+
</trans-unit>
225+
<trans-unit id="49" resname="form.article.settings.type.article.title">
226+
<source>form.article.settings.type.article.title</source>
227+
<target>Article</target>
228+
</trans-unit>
217229
</body>
218230
</file>
219231
</xliff>

0 commit comments

Comments
 (0)