| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- <?php
- namespace ThurData\Servers\KerioEmail\Core\UI;
- use \ThurData\Servers\KerioEmail\Core\Http\Request;
- use \ThurData\Servers\KerioEmail\Core\DependencyInjection;
- use \ThurData\Servers\KerioEmail\Core\UI\Builder\Config;
- use \ThurData\Servers\KerioEmail\Core\Helper;
- use \ThurData\Servers\KerioEmail\Core\UI\Builder\Context;
- /**
- * Description of Conteiner
- *
- * @autor ThurData <info@thurdata.ch>
- */
- class MainContainerAjax extends MainContainer
- {
- protected $namespaceAjax;
-
- public function __construct($baseId = null)
- {
- $this->namespace = str_replace('\\', '_', get_class($this));
- $this->initIds($baseId);
- $index = \ThurData\Servers\KerioEmail\Core\Helper\sl('request')->get('index');
- if ($index && $index != '')
- {
- $this->index = $index;
- }
- }
-
- public function setNamespaceAjax($namespaceAjax)
- {
- $this->namespaceAjax = $namespaceAjax;
-
- return $this;
- }
- public function addElement($element = null, $containerName = null)
- {
- if (is_string($element))
- {
- $element = DependencyInjection::create($element);
- }
- $element->setIndex($this->index);
- $id = $element->getId();
-
- if (!isset($this->ajaxElements[$id]))
- {
- $element->setMainContainer($this);
- if ($element instanceof \ThurData\Servers\KerioEmail\Core\UI\Interfaces\AjaxElementInterface)
- {
- $this->ajaxElements[$id] = &$element;
- }
- if ($element->isVueComponent())
- {
- $this->vueComponents[$element->getTemplateName()] = &$element;
- }
- }
- return $this;
- }
- public function addAjaxElement(\ThurData\Servers\KerioEmail\Core\UI\Interfaces\AjaxElementInterface &$element)
- {
- /**
- * @var Context $element
- */
- $this->ajaxElements[$element->getId()] = &$element;
- }
- public function addVueComponent(&$element)
- {
- /**
- * @var Context $element
- */
- if ($element->isVueComponent())
- {
- $this->vueComponents[$element->getTemplateName()] = &$element;
- }
- }
- public function valicateACL($isAdmin)
- {
- foreach ($this->elements as $id => &$element)
- {
- /**
- * @var Context $element
- */
- if($element->setIsAdminAcl($isAdmin)->validateElement($element) === false)
- {
- unset($this->elements[$id]);
- Helper\sl('errorManager')->addError(__CLASS__, 'There is no implemented interface for the widget "' . get_class($element) . '".');
- }
- }
- foreach ($this->ajaxElements as $id => &$element)
- {
- /**
- * @var Context $element
- */
- if($element->setIsAdminAcl($isAdmin)->validateElement($element) === false)
- {
- unset($this->ajaxElements[$id]);
- Helper\sl('errorManager')->addError(__CLASS__, 'There is no implemented interface for the widget "' . get_class($element) . '".');
- }
- }
- return $this;
- }
- /**
- * @param array $data
- * @return $this
- */
- public function setData(array $data = [])
- {
- $this->data = $data;
- $this->updateData();
- return $this;
- }
- protected function updateData()
- {
- foreach ($this->data as $key => $value)
- {
- if (property_exists($this, $key))
- {
- $this->$key = $value;
- }
- }
- $this->data = [];
- return $this;
- }
- public function getHtml()
- {
- if ($this->html === '')
- {
- $this->buildHtml();
- }
- return $this->html;
- }
- /**
- * @return string
- */
- public function __toString()
- {
- return $this->getHtml();
- }
- public function getAjaxResponse()
- {
- $request = Request::build();
- foreach ($this->ajaxElements as $aElem)
- {
- /**
- * @var Context $aElem
- */
- if ($this->namespaceAjax === $aElem->getNamespace())
- {
- $response = $aElem->returnAjaxData();
- if ($response instanceof \ThurData\Servers\KerioEmail\Core\UI\Interfaces\ResponseInterface)
- {
- return $response->getFormatedResponse();
- }
- return $response;
- }
- }
- }
- public function getVueComponents()
- {
- $vBody = '';
- foreach ($this->vueComponents as $vElem)
- {
- /**
- * @var Context $vElem
- */
- $vBody .= $vElem->getVueComponents();
- }
- return $vBody;
- }
- public function getAjaxElems()
- {
- return $this->ajaxElements;
- }
- public function getVueComponentsJs()
- {
- $vJsBody = '';
- foreach ($this->vueComponents as $vElem)
- {
- $vJsBody .= $vElem->getVueComponentsJs();
- }
- return $vJsBody;
- }
- }
|