ButtonModal.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace ThurData\Servers\KerioEmail\Core\UI\Widget\Buttons;
  3. use \ThurData\Servers\KerioEmail\Core\UI\Builder\BaseContainer;
  4. use \ThurData\Servers\KerioEmail\Core\UI\Interfaces\AjaxElementInterface;
  5. use \ThurData\Servers\KerioEmail\Core\UI\Widget\Modals\ExampleModal;
  6. use \ThurData\Servers\KerioEmail\Core\UI\ResponseTemplates;
  7. /**
  8. * base button controller
  9. *
  10. * @autor ThurData <info@thrudata.ch>
  11. */
  12. class ButtonModal extends BaseContainer implements AjaxElementInterface
  13. {
  14. protected $id = 'ButtonModal';
  15. protected $class = ['lu-btn lu-btn--sm lu-btn--link lu-btn--icon lu-btn--plain lu-btn--default'];
  16. protected $icon = 'lu-zmdi lu-zmdi-plus';
  17. protected $title = 'ButtonModal';
  18. protected $htmlAttributes = [
  19. 'href' => 'javascript:;',
  20. 'data-toggle' => 'lu-tooltip',
  21. ];
  22. protected $modal = null;
  23. public function returnAjaxData()
  24. {
  25. $returnHtml = $this->modal->getHtml();
  26. $returnTemplate = $this->mainContainer->getVueComponents();
  27. return (new ResponseTemplates\RawDataJsonResponse(['htmlData' => $returnHtml, 'template' => $returnTemplate,
  28. 'registrations' => self::getVueComponentsRegistrations()]))->setCallBackFunction($this->callBackFunction)->setRefreshTargetIds($this->refreshActionIds);
  29. }
  30. public function initContent()
  31. {
  32. $this->initLoadModalAction(new ExampleModal());
  33. }
  34. public function setModal($modal)
  35. {
  36. $modal->setMainContainer($this->mainContainer);
  37. $this->modal = $modal;
  38. if ($modal instanceof \ThurData\Servers\KerioEmail\Core\UI\Interfaces\AjaxElementInterface)
  39. {
  40. $this->mainContainer->addAjaxElement($this->modal->runInitContentProcess());
  41. }
  42. }
  43. protected function initLoadModalAction($modal)
  44. {
  45. $this->htmlAttributes['@click'] = 'loadModal($event, \'' . $this->id . '\', \'' . $this->getNamespace() . '\', \'' . $this->getIndex() . '\', null, true)';
  46. $this->setModal($modal);
  47. }
  48. }