1515use Doctrine \Common \DataFixtures \FixtureInterface ;
1616use Doctrine \Common \Persistence \ObjectManager ;
1717use Doctrine \Common \DataFixtures \DependentFixtureInterface ;
18+ use Doctrine \ODM \PHPCR \DocumentManager ;
1819use Symfony \Cmf \Bundle \MenuBundle \Doctrine \Phpcr \MenuNode ;
1920use Symfony \Cmf \Bundle \MenuBundle \Doctrine \Phpcr \Menu ;
2021use Symfony \Cmf \Bundle \MenuBundle \Tests \Resources \Document \Content ;
22+ use Symfony \Cmf \Bundle \MenuBundle \Tests \Resources \Document \Post ;
2123use Doctrine \ODM \PHPCR \Document \Generic ;
24+ use Symfony \Cmf \Bundle \RoutingBundle \Doctrine \Phpcr \Route ;
25+ use PHPCR \Util \NodeHelper ;
2226
2327class LoadMenuData implements FixtureInterface, DependentFixtureInterface
2428{
29+ protected $ root ;
30+ protected $ menuRoot ;
31+ protected $ routeRoot ;
32+
2533 public function getDependencies ()
2634 {
2735 return array (
@@ -31,20 +39,29 @@ public function getDependencies()
3139
3240 public function load (ObjectManager $ manager )
3341 {
34- $ content = new Content ;
35- $ content ->setTitle ('Content 1 ' );
36- $ content ->setId ('/test/content-1 ' );
42+ $ this ->root = $ manager ->find (null , '/test ' );
43+
44+ NodeHelper::createPath ($ manager ->getPhpcrSession (), '/test/menus ' );
45+ NodeHelper::createPath ($ manager ->getPhpcrSession (), '/test/routes/contents ' );
46+ $ this ->menuRoot = $ manager ->find (null , '/test/menus ' );
47+ $ this ->routeRoot = $ manager ->find (null , '/test/routes ' );
3748
38- $ root = $ manager ->find (null , '/test ' );
39- $ menuRoot = new Generic ;
40- $ menuRoot ->setNodename ('menus ' );
41- $ menuRoot ->setParent ($ root );
42- $ manager ->persist ($ menuRoot );
49+ $ this ->loadMainMenu ($ manager );
50+ $ this ->loadVoterMenu ($ manager );
51+
52+ $ manager ->flush ();
53+ }
54+
55+ protected function loadMainMenu (DocumentManager $ manager )
56+ {
57+ $ content = new Content ;
58+ $ content ->setTitle ('Menu Item Content 1 ' );
59+ $ content ->setId ('/test/content-menu-item-1 ' );
4360
4461 $ menu = new Menu ;
4562 $ menu ->setName ('test-menu ' );
4663 $ menu ->setLabel ('Test Menu ' );
47- $ menu ->setParent ($ menuRoot );
64+ $ menu ->setParent ($ this -> menuRoot );
4865 $ manager ->persist ($ menu );
4966
5067 $ menuNode = new MenuNode ;
@@ -94,7 +111,7 @@ public function load(ObjectManager $manager)
94111 $ menu = new Menu ;
95112 $ menu ->setName ('another-menu ' );
96113 $ menu ->setLabel ('Another Menu ' );
97- $ menu ->setParent ($ menuRoot );
114+ $ menu ->setParent ($ this -> menuRoot );
98115 $ manager ->persist ($ menu );
99116
100117 $ menuNode = new MenuNode ;
@@ -113,6 +130,107 @@ public function load(ObjectManager $manager)
113130 $ manager ->persist ($ menuNode );
114131
115132 $ manager ->persist ($ content );
116- $ manager ->flush ();
133+ }
134+
135+ protected function loadVoterMenu (DocumentManager $ manager )
136+ {
137+ // test content
138+ $ content = new Content ;
139+ $ content ->setTitle ('Content 1 ' );
140+ $ content ->setId ('/test/content-1 ' );
141+ $ manager ->persist ($ content );
142+
143+ $ route = new Route ();
144+ $ route ->setId ('/test/routes/contents/content-1 ' );
145+ $ route ->setDefault ('_controller ' , 'Symfony\Cmf\Bundle\MenuBundle\Tests\Resources\Controller\VoterController::requestContentIdentityAction ' );
146+ $ route ->setContent ($ content );
147+ $ manager ->persist ($ route );
148+
149+ // test blog
150+ $ blog = new Content ;
151+ $ blog ->setTitle ('Blog ' );
152+ $ blog ->setId ('/test/blog-1 ' );
153+ $ manager ->persist ($ blog );
154+
155+ $ route = new Route ();
156+ $ route ->setId ('/test/routes/blog ' );
157+ $ route ->setDefault ('_controller ' , 'Symfony\Cmf\Bundle\MenuBundle\Tests\Resources\Controller\VoterController::blogAction ' );
158+ $ route ->setContent ($ blog );
159+ $ manager ->persist ($ route );
160+
161+ // test blog post
162+ $ post = new Post ;
163+ $ post ->setTitle ('My Post ' );
164+ $ post ->setId ('/test/blog-1/my-post ' );
165+ $ manager ->persist ($ post );
166+
167+ $ route = new Route ();
168+ $ route ->setId ('/test/routes/blog/my-post ' );
169+ $ route ->setDefault ('_controller ' , 'Symfony\Cmf\Bundle\MenuBundle\Tests\Resources\Controller\VoterController::postAction ' );
170+ $ route ->setContent ($ post );
171+ $ manager ->persist ($ route );
172+
173+ // test articles
174+ $ articles = new Content ;
175+ $ articles ->setTitle ('Articles Index ' );
176+ $ articles ->setId ('/test/articles ' );
177+ $ manager ->persist ($ articles );
178+
179+ $ articlesRoute = new Route ();
180+ $ articlesRoute ->setId ('/test/routes/articles ' );
181+ $ articlesRoute ->setDefault ('_controller ' , 'Symfony\Cmf\Bundle\MenuBundle\Tests\Resources\Controller\VoterController::articlesAction ' );
182+ $ articlesRoute ->setContent ($ articles );
183+ $ articlesRoute ->setOption ('currentUriPrefix ' , '/articles ' );
184+ $ manager ->persist ($ articlesRoute );
185+
186+ $ article1 = new Content ();
187+ $ article1 ->setTitle ('Article 1 ' );
188+ $ article1 ->setId ('/test/article-1 ' );
189+ $ manager ->persist ($ article1 );
190+
191+ $ route = new Route ();
192+ $ route ->setId ('/test/routes/articles/some-category ' );
193+ $ manager ->persist ($ route );
194+
195+ $ route = new Route ();
196+ $ route ->setId ('/test/routes/articles/some-category/article-1 ' );
197+ $ route ->setDefault ('_controller ' , 'Symfony\Cmf\Bundle\MenuBundle\Tests\Resources\Controller\VoterController::postAction ' );
198+ $ route ->setContent ($ article1 );
199+ $ manager ->persist ($ route );
200+
201+ // menu items
202+ $ menu = new Menu ;
203+ $ menu ->setName ('side-menu ' );
204+ $ menu ->setLabel ('Side Menu ' );
205+ $ menu ->setParent ($ this ->menuRoot );
206+ $ manager ->persist ($ menu );
207+
208+ $ menuNode = new MenuNode ;
209+ $ menuNode ->setParent ($ menu );
210+ $ menuNode ->setLabel ('Default Behavior ' );
211+ $ menuNode ->setName ('default ' );
212+ $ menuNode ->setRoute ('current_menu_item_default ' );
213+ $ manager ->persist ($ menuNode );
214+
215+ $ menuNode = new MenuNode ;
216+ $ menuNode ->setParent ($ menu );
217+ $ menuNode ->setLabel ('Request Content Identity Voter ' );
218+ $ menuNode ->setName ('request-content-identity-voter ' );
219+ $ menuNode ->setContent ($ content );
220+ $ manager ->persist ($ menuNode );
221+
222+ $ menuNode = new MenuNode ;
223+ $ menuNode ->setParent ($ menu );
224+ $ menuNode ->setLabel ('URI Prefix Voter ' );
225+ $ menuNode ->setName ('uri-prefix-voter ' );
226+ $ menuNode ->setContent ($ articlesRoute );
227+ $ manager ->persist ($ menuNode );
228+
229+ $ menuNode = new MenuNode ;
230+ $ menuNode ->setParent ($ menu );
231+ $ menuNode ->setLabel ('Request Parent Content Identity Voter ' );
232+ $ menuNode ->setName ('request-parent-content-identity-voter ' );
233+ $ menuNode ->setContent ($ blog );
234+ $ manager ->persist ($ menuNode );
117235 }
118236}
0 commit comments