<?php
/**
* Created by PhpStorm.
* User: Matěj Böswart
* Date: 5.12.14
* Time: 19:26
*/
namespace Kiwi\PageBundle\Service;
use Symfony\Component\Form\Extension\Core\Type\FormType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
class PageModuleTemplate extends PageModulesGlobal {
public function getKiwiModuleBox() {
return '<div id="module_'.md5(get_class()).'" class="module"><span class="glyphicon glyphicon-indent-right"></span>Šablona</div>';
}
public function getKiwiPlacedModuleBox(\Kiwi\PageBundle\Entity\PageTreeModules $module) {
$twig = clone $this->controller->get('twig');
$disabled_css_selector = ($module->getIsActive()) ? '' : ' placeholder_module_disabled';
return $twig->render($this->controller->get('BL')->cacheStringTemplate(
'<div class="placeholder_module placeholder_module_html'.$disabled_css_selector.'" dbID="'.$module->getId().'">'.
'<div class="name"><span class="glyphicon glyphicon-indent-right"></span>Šablona</div>'.
'<div class="vertical-form">{{ form(form) }}</div>'.
'<div class="vertical-form">{{ form(formDSO) }}</div>'.
'<div class="controls">'.
'<a href="#" class="pop_editor" popComponent="template" formLink="'.$this->controller->get('router')->generate('kiwi_module_popup_templates_variables',array('module_id' => $module->getId())).'"><span class="glyphicon glyphicon-log-in"></span></a>'.
'<a href="'.$this->controller->get('router')->generate('kiwi_module_page_navigator_module_switch_state', array('level' => $this->page->getId(), 'module_id' => $module->getId())).'" class="trash" confirm="Změnit aktivitu komponenty ?"><span class="glyphicon glyphicon-refresh"></span></a>'.
'<a href="'.$this->controller->get('router')->generate($this->url_navigator_module_remove, array('level' => $this->page->getId(), 'module_id' => $module->getId())).'" class="trash" confirm="Nenávratně smazat tuto komponentu ?"><span class="glyphicon glyphicon-trash"></span></a>'.
'</div>'.
'</div>'),
array(
'form' => $this->updateModuleTemplate($module),
'formDSO' => $this->updateModuleDSO($module)
)
);
}
private function updateModuleDSO(\Kiwi\PageBundle\Entity\PageTreeModules $module) {
$form = $this->controller->get('form.factory')->createNamedBuilder('formupdatemoduledso'.$module->getId(), FormType::class, $module)
->add('template_dso_service', TextType::class, array('label' => 'Služba', 'required' => false))
->add('template_dso_method', TextType::class, array('label' => 'Metoda', 'required' => false))
->add('save', SubmitType::class, array('label' => 'nastavit DSO'))
->getForm();
$form->handleRequest($this->request);
if($form->isValid()) {
$formdata = $form->getData();
$this->em->getRepository('\Kiwi\PageBundle\Entity\PageTreeModules');
$this->em->persist($formdata);
$this->em->flush();
Header("Location: ".$this->controller->get('router')->generate('kiwi_module_page_navigator_level',array('level' => $module->getPageId())));
exit();
}
return $form->createView();
}
public function getKiwiFrontendModuleBox(\Kiwi\PageBundle\Entity\PageTreeModules $module, Array $config) {
if($module->getTemplate()) {
$twig = clone $this->controller->get('twig');
$data = false;
if($module->getTemplateDsoService() != '' && $module->getTemplateDsoMethod() != '') {
$service = $module->getTemplateDsoService();
$method_config = explode(',',$module->getTemplateDsoMethod());
$method = $method_config[0];
array_shift($method_config);
$method_params = $method_config;
$serviceObj = $this->controller->get($service);
if(method_exists($serviceObj,'setController'))
$serviceObj->setController($this->controller);
if($method_params)
$config['method_params'] = $method_params;
$data = $serviceObj->$method($config, $this->request);
}
//variables dynamic content
$v_to_replace = array();
$v_with_replace = array();
if(isset($_GET)) {
foreach($_GET as $get_key => $get_val) {
$v_to_replace[] = '%get.'.$get_key.'%';
$v_with_replace[] = $get_val;
}
}
$v = array();
$variables = $this->controller->get('templates_modules_groups_templates_variables_handle')->getModuleVariables($module->getId());
if($variables) {
foreach($variables as $variable) {
if($variable->data) {
$v[$variable->variable->getVarName()] = str_replace($v_to_replace,$v_with_replace,$variable->data->getContentPlain());
} else {
$v[$variable->variable->getVarName()] = null;
}
}
}
$v['_root_config'] = $config;
return $twig->render($this->controller->get('BL')->cacheStringTemplate(
'{% autoescape false %}'.$module->getTemplate()->getTpl().'{% endautoescape %}'),
array(
'config' => $config,
'data' => $data,
'v' => $v
)
);
} else {
return false;
}
}
}