| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- <?php
- namespace MailPoet\Form;
- if (!defined('ABSPATH')) exit;
- use MailPoet\Config\Env;
- use MailPoet\Config\Renderer as BasicRenderer;
- use MailPoet\Settings\SettingsController;
- use MailPoet\Subscription\Captcha;
- use MailPoet\WP\Functions as WPFunctions;
- class AssetsController {
- /** @var WPFunctions */
- private $wp;
- /** @var BasicRenderer */
- private $renderer;
- /** @var SettingsController */
- private $settings;
- const RECAPTCHA_API_URL = 'https://www.google.com/recaptcha/api.js?render=explicit';
- public function __construct(WPFunctions $wp, BasicRenderer $renderer, SettingsController $settings) {
- $this->wp = $wp;
- $this->renderer = $renderer;
- $this->settings = $settings;
- }
- /**
- * Returns assets scripts tags as string
- * @return string
- */
- public function printScripts() {
- ob_start();
- $captcha = $this->settings->get('captcha');
- if (!empty($captcha['type']) && $captcha['type'] === Captcha::TYPE_RECAPTCHA) {
- echo '<script src="' . self::RECAPTCHA_API_URL . '" async defer></script>';
- }
- $this->wp->wpPrintScripts('jquery');
- $this->wp->wpPrintScripts('mailpoet_vendor');
- $this->wp->wpPrintScripts('mailpoet_public');
-
- $scripts = ob_get_contents();
- ob_end_clean();
- if ($scripts === false) {
- return '';
- }
- return $scripts;
- }
- public function setupFormPreviewDependencies() {
- $this->setupFrontEndDependencies();
- $this->wp->wpEnqueueScript(
- 'mailpoet_form_preview',
- Env::$assetsUrl . '/dist/js/' . $this->renderer->getJsAsset('form_preview.js'),
- ['jquery'],
- Env::$version,
- true
- );
- }
- public function setupFrontEndDependencies() {
- $captcha = $this->settings->get('captcha');
- if (!empty($captcha['type']) && $captcha['type'] === Captcha::TYPE_RECAPTCHA) {
- $this->wp->wpEnqueueScript(
- 'mailpoet_recaptcha',
- self::RECAPTCHA_API_URL
- );
- }
- $this->wp->wpEnqueueStyle(
- 'mailpoet_public',
- Env::$assetsUrl . '/dist/css/' . $this->renderer->getCssAsset('mailpoet-public.css')
- );
- $this->wp->wpEnqueueScript(
- 'mailpoet_public',
- Env::$assetsUrl . '/dist/js/' . $this->renderer->getJsAsset('public.js'),
- ['jquery'],
- Env::$version,
- true
- );
- $this->wp->wpLocalizeScript('mailpoet_public', 'MailPoetForm', [
- 'ajax_url' => $this->wp->adminUrl('admin-ajax.php'),
- 'is_rtl' => (function_exists('is_rtl') ? (bool)is_rtl() : false),
- ]);
- $ajaxFailedErrorMessage = $this->wp->__('An error has happened while performing a request, please try again later.');
- $inlineScript = <<<EOL
- function initMailpoetTranslation() {
- if (typeof MailPoet !== 'undefined') {
- MailPoet.I18n.add('ajaxFailedErrorMessage', '%s')
- } else {
- setTimeout(initMailpoetTranslation, 250);
- }
- }
- setTimeout(initMailpoetTranslation, 250);
- EOL;
- $this->wp->wpAddInlineScript(
- 'mailpoet_public',
- sprintf($inlineScript, $ajaxFailedErrorMessage),
- 'after'
- );
- }
- public function setupAdminWidgetPageDependencies() {
- $this->wp->wpEnqueueScript(
- 'mailpoet_vendor',
- Env::$assetsUrl . '/dist/js/' . $this->renderer->getJsAsset('vendor.js'),
- [],
- Env::$version,
- true
- );
- $this->wp->wpEnqueueScript(
- 'mailpoet_admin',
- Env::$assetsUrl . '/dist/js/' . $this->renderer->getJsAsset('mailpoet.js'),
- [],
- Env::$version,
- true
- );
- }
- }
|