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; }
private function createTemplate($key, $webpage) { $twig = new TwigEngine(__DIR__); $template = new TemplateRequest(); $template->setId('fminor.webpage.' . $key . '.template'); $template->setType(TemplateRequest::INCLUDED); $template->setContent($twig->render('webpage.php.twig', array('name' => $key, 'parts' => $webpage['parts']))); return $template; }
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; }
public function generate(array $requests, ParametersManager $parManager) { $temReqs = TemplateRequest::filter($requests); foreach ($temReqs as $request) { $request->setContent($this->processTemplate($request->getContent(), $requests)); if ($request->getType() === TemplateRequest::INCLUDED) { $this->create('src/Resources/views/', $request->getId() . '.php', $request->getContent()); } } }