diff --git a/_config.php b/_config.php index 0d2cd16..770b45d 100644 --- a/_config.php +++ b/_config.php @@ -5,7 +5,10 @@ use Page; use PageController; use SilverStripe\SiteConfig\SiteConfig; +use SilverStripe\View\Parsers\ShortcodeParser; SiteConfig::add_extension(NewsletterSettings::class); Page::add_extension(NewsletterPageExtender::class); PageController::add_extension(NewsletterPageControllerExtender::class); + +ShortcodeParser::get('default')->register('newsletterform', [NewsletterShortcodeProvider::class, 'handle_shortcode']); diff --git a/src/NewsletterPageExtender.php b/src/NewsletterPageExtender.php index 74390b1..8a582d1 100644 --- a/src/NewsletterPageExtender.php +++ b/src/NewsletterPageExtender.php @@ -22,6 +22,10 @@ class NewsletterPageExtender extends DataExtension "NewsletterShowHide" => true, ]; + private static $casting = [ + 'NewsletterShortcode' => 'HTMLText' + ]; + public function populateDefaults() { $this->owner->NewsletterShowHide = true; diff --git a/src/NewsletterShortcodeProvider.php b/src/NewsletterShortcodeProvider.php new file mode 100644 index 0000000..7044dff --- /dev/null +++ b/src/NewsletterShortcodeProvider.php @@ -0,0 +1,34 @@ +parse($content); + } + // If class add wrapper div + if (isset($arguments['class'])){ + $PopupContent .= '
'; + } + // Get Form HTML + $PopupContent .= Controller::curr()->NewsletterForm() + ->setHTMLID("NewsletterForm".rand(0,100)) + ->setFormAction(Controller::join_links(Controller::curr()->owner->Link(), 'NewsletterForm')) + ->forTemplate(); + // End wrapper div + if (isset($arguments['class'])){ + $PopupContent .= '
'; + } + // Return full html + return $PopupContent; + } +}