xref: /plugin/combo/ComboStrap/Tag/SubscribeTag.php (revision 8013c4e8c4813b914d67873654546b6bcb99bae3)
104fd306cSNickeau<?php
204fd306cSNickeau
304fd306cSNickeaunamespace ComboStrap\Tag;
404fd306cSNickeau
504fd306cSNickeauuse action_plugin_combo_instructionspostprocessing;
604fd306cSNickeauuse ComboStrap\CallStack;
704fd306cSNickeauuse ComboStrap\ContainerTag;
804fd306cSNickeauuse ComboStrap\DataType;
904fd306cSNickeauuse ComboStrap\EditButton;
1004fd306cSNickeauuse ComboStrap\ExceptionBadArgument;
1104fd306cSNickeauuse ComboStrap\ExceptionNotFound;
1204fd306cSNickeauuse ComboStrap\ExecutionContext;
1304fd306cSNickeauuse ComboStrap\Site;
1404fd306cSNickeauuse ComboStrap\Snippet;
1504fd306cSNickeauuse ComboStrap\Template\TemplateForComponent;
1604fd306cSNickeauuse ComboStrap\TemplateEngine;
1704fd306cSNickeauuse ComboStrap\TagAttribute\Hero;
1804fd306cSNickeauuse ComboStrap\LogUtility;
1904fd306cSNickeauuse ComboStrap\PluginUtility;
2004fd306cSNickeauuse ComboStrap\SiteConfig;
2104fd306cSNickeauuse ComboStrap\TagAttributes;
2204fd306cSNickeau
2304fd306cSNickeau/**
2404fd306cSNickeau *
2504fd306cSNickeau */
2604fd306cSNickeauclass SubscribeTag
2704fd306cSNickeau{
2804fd306cSNickeau
2904fd306cSNickeau
3004fd306cSNickeau    const LOGICAL_TAG = "subscribe";
3104fd306cSNickeau    const LIST_ID_ATTRIBUTE = "list-id";
3204fd306cSNickeau
3304fd306cSNickeau    const SIDE_BY_SIDE_TYPE = "side-by-side";
3404fd306cSNickeau
3504fd306cSNickeau
3604fd306cSNickeau    public static function renderEnterXhtml(TagAttributes $attributes): string
3704fd306cSNickeau    {
3804fd306cSNickeau
3904fd306cSNickeau        $executionContext = ExecutionContext::getActualOrCreateFromEnv();
4004fd306cSNickeau        $snippetSystem = $executionContext->getSnippetSystem();
4104fd306cSNickeau        $snippetSystem->attachJavascriptComboLibrary();
4204fd306cSNickeau        $subscribeTag = self::LOGICAL_TAG;
4304fd306cSNickeau        $snippetSystem->attachJavascriptFromComponentId($subscribeTag)
4404fd306cSNickeau            ->setFormat(Snippet::IIFE_FORMAT);
4504fd306cSNickeau        $snippetSystem->attachCssInternalStyleSheet($subscribeTag);
4604fd306cSNickeau
4704fd306cSNickeau        $success = TemplateForComponent::create($subscribeTag . "-success")->render([]);
4804fd306cSNickeau        $data['list-value'] = $attributes->getValueAndRemove(self::LIST_ID_ATTRIBUTE);
4904fd306cSNickeau        $data['list-name'] = "listGuid";
5004fd306cSNickeau        $data['email-name'] = "subscriberEmail";
5104fd306cSNickeau        $data['email-id'] = $executionContext->getIdManager()->generateNewHtmlIdForComponent("$subscribeTag-email");
52*8013c4e8Sgerardnico        $data['action'] = "https://api.combostrap.com/combo/public/v1.0/list/registration";
5304fd306cSNickeau        $data['success-content'] = $success;
5404fd306cSNickeau        try {
5504fd306cSNickeau            $data['primary-color'] = $executionContext->getConfig()->getPrimaryColor()->toCssValue();
5604fd306cSNickeau        } catch (ExceptionNotFound $e) {
5704fd306cSNickeau            // none
5804fd306cSNickeau        }
5904fd306cSNickeau        $form = TemplateForComponent::create($subscribeTag . "-form")->render($data);
6004fd306cSNickeau        return $attributes->toHtmlEnterTag("div") . $form . '</div>';
6104fd306cSNickeau    }
6204fd306cSNickeau
6304fd306cSNickeau
6404fd306cSNickeau}
65