Нет описания

Paragraph.php 2.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace MailPoet\Form\Block;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\WP\Functions as WPFunctions;
  5. class Paragraph {
  6. /** @var WPFunctions */
  7. private $wp;
  8. public function __construct(
  9. WPFunctions $wp
  10. ) {
  11. $this->wp = $wp;
  12. }
  13. public function render(array $block): string {
  14. $content = ($block['params']['content'] ?? '');
  15. return $this->wrapContent($content, $block);
  16. }
  17. private function wrapContent(string $content, array $block): string {
  18. $attributes = $this->renderAttributes($block);
  19. $openTag = $this->getOpenTag($attributes);
  20. return $openTag
  21. . $content
  22. . "</p>";
  23. }
  24. private function getOpenTag(array $attributes): string {
  25. if (empty($attributes)) {
  26. return "<p>";
  27. }
  28. return "<p " . join(' ', $attributes) . ">";
  29. }
  30. private function renderAttributes(array $block): array {
  31. $result = [];
  32. $result[] = $this->renderClass($block);
  33. $result[] = $this->renderStyle($block);
  34. $result = array_filter($result, function ($attribute) {
  35. return $attribute !== null;
  36. });
  37. return $result;
  38. }
  39. private function renderClass(array $block) {
  40. $classes = ['mailpoet_form_paragraph'];
  41. if (isset($block['params']['class_name'])) {
  42. $classes[] = $block['params']['class_name'];
  43. }
  44. if (isset($block['params']['drop_cap']) && $block['params']['drop_cap'] === '1') {
  45. $classes[] = 'has-drop-cap';
  46. }
  47. if (!empty($block['params']['background_color'])) {
  48. $classes[] = 'mailpoet-has-background-color';
  49. }
  50. if (!empty($block['params']['font_size'])) {
  51. $classes[] = 'mailpoet-has-font-size';
  52. }
  53. if (empty($classes)) {
  54. return null;
  55. }
  56. return 'class="'
  57. . $this->wp->escAttr(join(' ', $classes))
  58. . '"';
  59. }
  60. private function renderStyle(array $block) {
  61. $styles = [];
  62. if (!empty($block['params']['background_color'])) {
  63. $styles[] = 'background-color: ' . $block['params']['background_color'];
  64. }
  65. if (!empty($block['params']['align'])) {
  66. $styles[] = 'text-align: ' . $block['params']['align'];
  67. }
  68. if (!empty($block['params']['text_color'])) {
  69. $styles[] = 'color: ' . $block['params']['text_color'];
  70. }
  71. if (!empty($block['params']['font_size'])) {
  72. $styles[] = 'font-size: ' . $block['params']['font_size'] . 'px';
  73. }
  74. if (!empty($block['params']['line_height'])) {
  75. $styles[] = 'line-height: ' . $block['params']['line_height'];
  76. }
  77. if (empty($styles)) {
  78. return null;
  79. }
  80. return 'style="'
  81. . $this->wp->escAttr(join('; ', $styles))
  82. . '"';
  83. }
  84. }