Add assets url factory method to form template
[MAILPOET-3076]
This commit is contained in:
committed by
Veljko V
parent
0f0472975d
commit
01057c7ff1
@ -3,6 +3,7 @@
|
||||
namespace MailPoet\Form\Templates;
|
||||
|
||||
use MailPoet\Entities\FormEntity;
|
||||
use MailPoet\Util\CdnAssetUrl;
|
||||
|
||||
abstract class FormTemplate {
|
||||
const DEFAULT_STYLES = <<<EOL
|
||||
@ -79,6 +80,16 @@ abstract class FormTemplate {
|
||||
}
|
||||
EOL;
|
||||
|
||||
/** @var CdnAssetUrl */
|
||||
protected $cdnAssetUrl;
|
||||
|
||||
/** @var string */
|
||||
protected $assetsDirectory = '';
|
||||
|
||||
public function __construct(CdnAssetUrl $cdnAssetUrl) {
|
||||
$this->cdnAssetUrl = $cdnAssetUrl;
|
||||
}
|
||||
|
||||
abstract public function getName(): string;
|
||||
|
||||
abstract public function getBody(): array;
|
||||
@ -103,4 +114,8 @@ EOL;
|
||||
$formEntity->setStyles($this->getStyles());
|
||||
return $formEntity;
|
||||
}
|
||||
|
||||
protected function getAssetUrl(string $filename): string {
|
||||
return $this->cdnAssetUrl->generateCdnUrl("form-templates/{$this->assetsDirectory}/$filename");
|
||||
}
|
||||
}
|
||||
|
@ -25,11 +25,15 @@ use MailPoet\Form\Templates\Templates\Template6Popup;
|
||||
use MailPoet\Form\Templates\Templates\Template6SlideIn;
|
||||
use MailPoet\Form\Templates\Templates\Template6Widget;
|
||||
use MailPoet\UnexpectedValueException;
|
||||
use MailPoet\Util\CdnAssetUrl;
|
||||
|
||||
class TemplateRepository {
|
||||
const INITIAL_FORM_TEMPLATE = InitialForm::ID;
|
||||
const DEFAULT_FORM_TEMPLATE = DefaultForm::ID;
|
||||
|
||||
/** @var CdnAssetUrl */
|
||||
private $cdnAssetUrl;
|
||||
|
||||
private $templates = [
|
||||
InitialForm::ID => InitialForm::class,
|
||||
DefaultForm::ID => DefaultForm::class,
|
||||
@ -55,13 +59,17 @@ class TemplateRepository {
|
||||
Template10Widget::ID => Template10Widget::class,
|
||||
];
|
||||
|
||||
public function __construct(CdnAssetUrl $cdnAssetUrl) {
|
||||
$this->cdnAssetUrl = $cdnAssetUrl;
|
||||
}
|
||||
|
||||
public function getFormTemplate(string $templateId): FormTemplate {
|
||||
if (!isset($this->templates[$templateId])) {
|
||||
throw UnexpectedValueException::create()
|
||||
->withErrors(["Template with id $templateId doesn't exist."]);
|
||||
}
|
||||
/** @var FormTemplate $template */
|
||||
$template = new $this->templates[$templateId]();
|
||||
$template = new $this->templates[$templateId]($this->cdnAssetUrl);
|
||||
return $template;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user