Нет описания

BlocksRenderer.php 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. <?php
  2. namespace MailPoet\Form;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\Entities\FormEntity;
  5. use MailPoet\Form\Block\Checkbox;
  6. use MailPoet\Form\Block\Column;
  7. use MailPoet\Form\Block\Columns;
  8. use MailPoet\Form\Block\Date;
  9. use MailPoet\Form\Block\Divider;
  10. use MailPoet\Form\Block\Heading;
  11. use MailPoet\Form\Block\Html;
  12. use MailPoet\Form\Block\Image;
  13. use MailPoet\Form\Block\Paragraph;
  14. use MailPoet\Form\Block\Radio;
  15. use MailPoet\Form\Block\Segment;
  16. use MailPoet\Form\Block\Select;
  17. use MailPoet\Form\Block\Submit;
  18. use MailPoet\Form\Block\Text;
  19. use MailPoet\Form\Block\Textarea;
  20. class BlocksRenderer {
  21. /** @var Checkbox */
  22. private $checkbox;
  23. /** @var Date */
  24. private $date;
  25. /** @var Divider */
  26. private $divider;
  27. /** @var Html */
  28. private $html;
  29. /** @var Image */
  30. private $image;
  31. /** @var Radio */
  32. private $radio;
  33. /** @var Segment */
  34. private $segment;
  35. /** @var Select */
  36. private $select;
  37. /** @var Submit */
  38. private $submit;
  39. /** @var Text */
  40. private $text;
  41. /** @var Textarea */
  42. private $textarea;
  43. /** @var Column */
  44. private $column;
  45. /** @var Columns */
  46. private $columns;
  47. /** @var Heading */
  48. private $heading;
  49. /** @var Paragraph */
  50. private $paragraph;
  51. public function __construct(
  52. Checkbox $checkbox,
  53. Column $column,
  54. Columns $columns,
  55. Date $date,
  56. Divider $divider,
  57. Html $html,
  58. Image $image,
  59. Heading $heading,
  60. Paragraph $paragraph,
  61. Radio $radio,
  62. Segment $segment,
  63. Select $select,
  64. Submit $submit,
  65. Text $text,
  66. Textarea $textarea
  67. ) {
  68. $this->checkbox = $checkbox;
  69. $this->column = $column;
  70. $this->columns = $columns;
  71. $this->date = $date;
  72. $this->divider = $divider;
  73. $this->html = $html;
  74. $this->image = $image;
  75. $this->radio = $radio;
  76. $this->segment = $segment;
  77. $this->select = $select;
  78. $this->submit = $submit;
  79. $this->text = $text;
  80. $this->textarea = $textarea;
  81. $this->heading = $heading;
  82. $this->paragraph = $paragraph;
  83. }
  84. public function renderBlock(array $block, array $formSettings): string {
  85. $html = '';
  86. switch ($block['type']) {
  87. case FormEntity::HTML_BLOCK_TYPE:
  88. $html .= $this->html->render($block, $formSettings);
  89. break;
  90. case FormEntity::HEADING_BLOCK_TYPE:
  91. $html .= $this->heading->render($block);
  92. break;
  93. case FormEntity::IMAGE_BLOCK_TYPE:
  94. $html .= $this->image->render($block);
  95. break;
  96. case FormEntity::PARAGRAPH_BLOCK_TYPE:
  97. $html .= $this->paragraph->render($block);
  98. break;
  99. case FormEntity::DIVIDER_BLOCK_TYPE:
  100. $html .= $this->divider->render($block);
  101. break;
  102. case FormEntity::CHECKBOX_BLOCK_TYPE:
  103. $html .= $this->checkbox->render($block, $formSettings);
  104. break;
  105. case FormEntity::RADIO_BLOCK_TYPE:
  106. $html .= $this->radio->render($block, $formSettings);
  107. break;
  108. case FormEntity::SEGMENT_SELECTION_BLOCK_TYPE:
  109. $html .= $this->segment->render($block, $formSettings);
  110. break;
  111. case FormEntity::DATE_BLOCK_TYPE:
  112. $html .= $this->date->render($block, $formSettings);
  113. break;
  114. case FormEntity::SELECT_BLOCK_TYPE:
  115. $html .= $this->select->render($block, $formSettings);
  116. break;
  117. case FormEntity::TEXT_BLOCK_TYPE:
  118. $html .= $this->text->render($block, $formSettings);
  119. break;
  120. case FormEntity::TEXTAREA_BLOCK_TYPE:
  121. $html .= $this->textarea->render($block, $formSettings);
  122. break;
  123. case FormEntity::SUBMIT_BLOCK_TYPE:
  124. $html .= $this->submit->render($block, $formSettings);
  125. break;
  126. }
  127. return $html;
  128. }
  129. public function renderContainerBlock(array $block, string $content) {
  130. $html = '';
  131. switch ($block['type']) {
  132. case FormEntity::COLUMNS_BLOCK_TYPE:
  133. $html .= $this->columns->render($block, $content);
  134. break;
  135. case FormEntity::COLUMN_BLOCK_TYPE:
  136. $html .= $this->column->render($block, $content);
  137. break;
  138. }
  139. return $html;
  140. }
  141. }