Нет описания

Button.php 3.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace MailPoet\Newsletter\Renderer\Blocks;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\Newsletter\Renderer\EscapeHelper as EHelper;
  5. use MailPoet\Newsletter\Renderer\StylesHelper;
  6. class Button {
  7. public function render($element, $columnBaseWidth) {
  8. $element['styles']['block']['width'] = $this->calculateWidth($element, $columnBaseWidth);
  9. $styles = 'display:inline-block;-webkit-text-size-adjust:none;mso-hide:all;text-decoration:none;text-align:center;' . StylesHelper::getBlockStyles($element, $exclude = ['textAlign']);
  10. $styles = EHelper::escapeHtmlStyleAttr($styles);
  11. $template = '
  12. <tr>
  13. <td class="mailpoet_padded_vertical mailpoet_padded_side" valign="top">
  14. <div>
  15. <table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-spacing:0;mso-table-lspace:0;mso-table-rspace:0;">
  16. <tr>
  17. <td class="mailpoet_button-container" style="text-align:' . $element['styles']['block']['textAlign'] . ';"><!--[if mso]>
  18. <v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word"
  19. href="' . EHelper::escapeHtmlLinkAttr($element['url']) . '"
  20. style="height:' . EHelper::escapeHtmlStyleAttr($element['styles']['block']['lineHeight']) . ';
  21. width:' . EHelper::escapeHtmlStyleAttr($element['styles']['block']['width']) . ';
  22. v-text-anchor:middle;"
  23. arcsize="' . round((int)$element['styles']['block']['borderRadius'] / (int)$element['styles']['block']['lineHeight'] * 100) . '%"
  24. strokeweight="' . EHelper::escapeHtmlAttr($element['styles']['block']['borderWidth']) . '"
  25. strokecolor="' . EHelper::escapeHtmlAttr($element['styles']['block']['borderColor']) . '"
  26. fillcolor="' . EHelper::escapeHtmlAttr($element['styles']['block']['backgroundColor']) . '">
  27. <w:anchorlock/>
  28. <center style="color:' . EHelper::escapeHtmlStyleAttr($element['styles']['block']['fontColor']) . ';
  29. font-family:' . EHelper::escapeHtmlStyleAttr($element['styles']['block']['fontFamily']) . ';
  30. font-size:' . EHelper::escapeHtmlStyleAttr($element['styles']['block']['fontSize']) . ';
  31. font-weight:bold;">' . EHelper::escapeHtmlText($element['text']) . '
  32. </center>
  33. </v:roundrect>
  34. <![endif]-->
  35. <!--[if !mso]><!-- -->
  36. <a class="mailpoet_button" href="' . EHelper::escapeHtmlLinkAttr($element['url']) . '" style="' . $styles . '"> ' . EHelper::escapeHtmlText($element['text']) . '</a>
  37. <!--<![endif]-->
  38. </td>
  39. </tr>
  40. </table>
  41. </div>
  42. </td>
  43. </tr>';
  44. return $template;
  45. }
  46. public function calculateWidth($element, $columnBaseWidth) {
  47. $columnWidth = $columnBaseWidth - (StylesHelper::$paddingWidth * 2);
  48. $borderWidth = (int)$element['styles']['block']['borderWidth'];
  49. $buttonWidth = (int)$element['styles']['block']['width'];
  50. $buttonWidth = ($buttonWidth > $columnWidth) ?
  51. $columnWidth :
  52. $buttonWidth;
  53. $buttonWidth = $buttonWidth - (2 * $borderWidth) . 'px';
  54. return $buttonWidth;
  55. }
  56. }