Example #1
0
 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());
         }
     }
 }