public function getCMSFields() { $fields = parent::getCMSFields(); $fields->addFieldToTab("Root", $subscriptionTab = new Tab(_t('Newsletter.SUBSCRIPTIONFORM', 'SubscriptionForm'))); Requirements::javascript('newsletter/javascript/SubscriptionPage.js'); Requirements::css('newsletter/css/SubscriptionPage.css'); $subscriptionTab->push(new HeaderField("SubscriptionFormConfig", _t('Newsletter.SUBSCRIPTIONFORMCONFIGURATION', "Subscription Form Configuration"))); $subscriptionTab->push(new TextField('CustomisedHeading', 'Heading at the top of the form')); //Fields selction $frontFields = singleton('Recipient')->getFrontEndFields()->dataFields(); $fieldCandidates = array(); if (count($frontFields)) { foreach ($frontFields as $fieldName => $dataField) { $fieldCandidates[$fieldName] = $dataField->Title() ? $dataField->Title() : $dataField->Name(); } } //Since Email field is the Recipient's identifier, //and newsletters subscription is non-sence if no email is given by the user, //we should force that email to be checked and required. //FisrtName should be checked as default, though it might not be required $defaults = array("Email", "FirstName"); $extra = array('CustomLabel' => "Varchar", "ValidationMessage" => "Varchar", "Required" => "Boolean"); $extraValue = array('CustomLabel' => $this->CustomLabel, "ValidationMessage" => $this->ValidationMessage, "Required" => $this->Required); $subscriptionTab->push($fieldsSelection = new CheckboxSetWithExtraField("Fields", _t('Newsletter.SelectFields', "Select the fields to display on the subscription form"), $fieldCandidates, $extra, $defaults, $extraValue)); $fieldsSelection->setCellDisabled(array("Email" => array("Value", "Required"))); //Mailing Lists selection $mailinglists = MailingList::get(); $newsletterSelection = $mailinglists && $mailinglists->count() ? new CheckboxSetField("MailingLists", _t("Newsletter.SubscribeTo", "Newsletters to subscribe to"), $mailinglists->map('ID', 'FullTitle'), $mailinglists) : new LiteralField("NoMailingList", sprintf('<p>%s</p>', sprintf('You haven\'t defined any mailing list yet, please go to ' . '<a href=\\"%s\\">the newsletter administration area</a> ' . 'to define a mailing list.', singleton('NewsletterAdmin')->Link()))); $subscriptionTab->push($newsletterSelection); $subscriptionTab->push(new TextField("SubmissionButtonText", "Submit Button Text")); $subscriptionTab->push(new LiteralField('BottomTaskSelection', sprintf('<div id="SendNotificationControlls" class="field actions">' . '<label class="left">%s</label>' . '<ul><li class="ss-ui-button no" data-panel="no">%s</li>' . '<li class="ss-ui-button yes" data-panel="yes">%s</li>' . '</ul></div>', _t('Newsletter.SendNotif', 'Send notification email to the subscriber'), _t('Newsletter.No', 'No'), _t('Newsletter.Yes', 'Yes')))); $subscriptionTab->push(CompositeField::create(new HiddenField("SendNotification", "Send Notification"), new TextField("NotificationEmailSubject", _t('Newsletter.NotifSubject', "Notification Email Subject Line")), new TextField("NotificationEmailFrom", _t('Newsletter.FromNotif', "From Email Address for Notification Email")))->addExtraClass('SendNotificationControlledPanel')); $subscriptionTab->push(new HtmlEditorField('OnCompleteMessage', _t('Newsletter.OnCompletion', 'Message shown on subscription completion'))); return $fields; }
function getCMSFields() { $fields = parent::getCMSFields(); $fields->addFieldToTab("Root.Content", $subscriptionTab = new Tab(_t('Newsletter.SUBSCRIPTIONFORM', 'SubscriptionForm'))); $subscriptionTab->push(new HeaderField("SubscriptionFormConfig", _t('Newsletter.SUBSCRIPTIONFORMCONFIGURATIONS', "Subscription Form Configurations"))); //Fields selction $dataFields = singleton('Member')->getCMSFields()->dataFields(); //Since the subscription form is focuse add a member to newsletter groups, we should avoid Password stuff and leave it to member forget/reset password mechanism. if (isset($dataFields['Password'])) { unset($dataFields['Password']); } $fieldCandidates = array(); if (count($dataFields)) { foreach ($dataFields as $fieldName => $dataField) { $fieldCandidates[$fieldName] = $dataField->Title() ? $dataField->Title() : $dataField->Name(); } } $memberFields = singleton('Member')->getMemberFormFields()->dataFields(); //Since Email field is the member's identifier, and newsletters subscription is non-sence if no email is given by the user, we should force that email to be checked and required. $defaults = array("Email"); if (count($memberFields)) { foreach ($memberFields as $fieldName => $memberField) { $defaults[] = $fieldName; } } $extra = array('CustomisedLables' => "Varchar", "CustomisedErrors" => "Varchar", "Required" => "Boolean"); $extraValue = array('CustomisedLables' => $this->CustomisedLables, "CustomisedErrors" => $this->CustomisedErrors, "Required" => $this->Required); $subscriptionTab->push($fieldsSelection = new CheckboxSetWithExtraField("Fields", "<h4>Select the fields that you want to appearing in the subscription form</h4>", $fieldCandidates, $extra, $defaults)); $fieldsSelection->setCellDisabled(array("Email" => array("Value", "Required"))); //NewsletterTypes selection $newsletterTypes = DataObject::get("NewsletterType"); $newsletterSelection = $newsletterTypes ? new CheckboxSetField("NewsletterTypes", "<h4>Select the newsletters that you want the user subscript to</h4>", $newsletterTypes, $newsletterTypes) : new LiteralField("NoNewsletters", "<p>You haven't define any newsletter yet, please go to <a href=\"admin/newsletter\">newsletter</a> to define some newsletter types</p>"); $subscriptionTab->push($newsletterSelection); $subscriptionTab->push(new TextField("SubmissionButtonText", "Text appearing in the submit button")); $subscriptionTab->push(new ToggleCompositeField("SendNotificationToggle", "Send notification email to the subscriber?", new SelectionGroup("SendNotification", array("0//no" => new CompositeField(), "1//yes" => new FieldGroup(new TextField("NotificationEmailSubject", "Notification Email Subject Line:"), new TextField("NotificationEmailFrom", "From Email Address for Notification Email")))))); $subscriptionTab->push(new HtmlEditorField('OnCompleteMessage', "<h3>Message shown on completion</h3>")); return $fields; }