public function generateRequests(ParametersManager $parManager) { $menus = $parManager->getChordParameters('fminor', 'menu'); $twig = new TwigEngine(__DIR__); $project = $parManager->getBaseParameter('project_name'); $requests = array(); foreach ($menus as $key => $menu) { foreach ($menu['parts'] as $menuPart) { if ($menuPart['type'] === 'links') { foreach ($menuPart['parts'] as $part) { if ($part['type'] === 'link') { if (!$parManager->hasFeatureById($part['part'], 'linkable')) { throw new \InvalidArgumentException("part in a link group of menu {$key} should support be linkable"); } } elseif ($part['type'] === 'dropdown') { foreach ($part['parts'] as $link) { if (!$parManager->hasFeatureById($link['part'], 'linkable')) { throw new \InvalidArgumentException("part in a dropdown of menu {$key} should support be linkable"); } } } } } elseif ($menuPart['type'] === 'embedded') { if (!$parManager->hasFeatureById($menuPart['part'], 'embeddedable')) { throw new \InvalidArgumentException("part type embedded in menu {$key} should support be embeddedable"); } } } $request = new TemplateRequest(); $type = $menu['inline'] === true ? TemplateRequest::INLINE : TemplateRequest::INCLUDED; $request->setId('fminor.menu.' . $key)->setType($type)->setContent($twig->render('menu.php.twig', array('name' => $key, 'brand' => $menu['brand'], 'project_name' => $project, 'parts' => $menu['parts']))); $requests[] = $request; } return $requests; }
public function generateRequests(ParametersManager $parManager) { $webpages = $parManager->getChordParameters('fminor', 'webpage'); $requests = array(); foreach ($webpages as $key => $webpage) { foreach ($webpage['parts'] as $part) { if (!$parManager->hasFeatureById($part, 'embeddedable')) { throw new \InvalidArgumentException('parts should support be embeddedable'); } } $requests[] = $this->createRoute($key, $webpage); $requests[] = $this->createController($key, $webpage); $requests[] = $this->createTemplate($key, $webpage); } return $requests; }
public function generateRequests(ParametersManager $parManager) { $sections = $parManager->getChordParameters('fminor', 'section'); $twig = new TwigEngine(__DIR__); $requests = array(); foreach ($sections as $key => $section) { foreach ($section['parts'] as $part) { if (!$parManager->hasFeatureById($part, 'embeddedable')) { throw new \InvalidArgumentException('parts should support be embeddedable'); } } $request = new TemplateRequest(); $type = $section['inline'] === true ? TemplateRequest::INLINE : TemplateRequest::INCLUDED; $request->setId('fminor.section.' . $key)->setType($type)->setContent($twig->render('section.php.twig', array('name' => $key, 'parts' => $section['parts']))); $requests[] = $request; } return $requests; }