ViewAjax.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. namespace ModulesGarden\Servers\ProxmoxVps\Core\UI;
  3. use \ModulesGarden\Servers\ProxmoxVps\Core\Helper;
  4. use ModulesGarden\Servers\ProxmoxVps\Core\ModuleConstants;
  5. /**
  6. * Main Vuew Controler
  7. * @author Sławomir Miśkowicz <slawomir@modulesgarden.com>
  8. */
  9. class ViewAjax extends View
  10. {
  11. protected $elements = [];
  12. protected $namespace = '';
  13. public function __construct($template = null)
  14. {
  15. $this->setTemplate($template);
  16. $this->mainContainer = new \ModulesGarden\Servers\ProxmoxVps\Core\UI\MainContainerAjax();
  17. }
  18. /**
  19. * Adds elements to the root element
  20. */
  21. public function addElement($element)
  22. {
  23. return $this;
  24. }
  25. public function validateAcl($isAdmin)
  26. {
  27. $this->mainContainer->valicateACL($isAdmin);
  28. return $this;
  29. }
  30. public function setNamespace($namespace)
  31. {
  32. $this->namespace = $namespace;
  33. $this->mainContainer->setNamespaceAjax($this->namespace);
  34. return $this;
  35. }
  36. /**
  37. * Generates all responses for UI elements
  38. */
  39. public function getResponse()
  40. {
  41. return $this->mainContainer->getAjaxResponse();
  42. }
  43. /**
  44. * @param $namespace
  45. * @return |null
  46. */
  47. public function initAjaxElementContext($namespace)
  48. {
  49. $this->setNamespace($namespace);
  50. if(!$this->isValidNamespace(Helper\convertStringToNamespace($namespace)))
  51. {
  52. return null;
  53. }
  54. $this->mainContainer->addElement(Helper\convertStringToNamespace($namespace));
  55. }
  56. /**
  57. * @param $namespace
  58. * @return bool
  59. */
  60. public function isValidNamespace($namespace)
  61. {
  62. if(strpos($namespace, ModuleConstants::getRootNamespace()) === false)
  63. {
  64. return false;
  65. }
  66. return true;
  67. }
  68. }