/** * Overrides Drupal\Core\Entity\EntityForm::form(). */ public function form(array $form, FormStateInterface $form_state) { $form = parent::form($form, $form_state); $newsletter = $this->entity; $form['name'] = array('#type' => 'textfield', '#title' => t('Name'), '#maxlength' => 255, '#default_value' => $newsletter->label(), '#description' => t("The newsletter name."), '#required' => TRUE); $form['id'] = array('#type' => 'machine_name', '#default_value' => $newsletter->id(), '#maxlength' => EntityTypeInterface::BUNDLE_MAX_LENGTH, '#machine_name' => array('exists' => 'simplenews_newsletter_load', 'source' => array('name')), '#disabled' => !$newsletter->isNew()); $form['description'] = array('#type' => 'textarea', '#title' => t('Description'), '#default_value' => $newsletter->description, '#description' => t("A description of the newsletter.")); $links = array(':mime_mail_url' => 'http://drupal.org/project/mimemail', ':html_url' => 'http://drupal.org/project/htmlmail'); $description = t('Newsletter format. Install <a href=":mime_mail_url">Mime Mail</a> module or <a href=":html_url">HTML Mail</a> module to send newsletters in HTML format.', $links); $form['weight'] = array('#type' => 'hidden', '#value' => $newsletter->weight); $form['subscription'] = array('#type' => 'fieldset', '#title' => t('Subscription settings'), '#collapsible' => FALSE); // Subscribe at account registration time. $options = simplenews_new_account_options(); $form['subscription']['new_account'] = array('#type' => 'select', '#title' => t('Subscribe new account'), '#options' => $options, '#default_value' => $newsletter->new_account, '#description' => t('None: This newsletter is not listed on the user registration page.<br />Default on: This newsletter is listed on the user registion page and is selected by default.<br />Default off: This newsletter is listed on the user registion page and is not selected by default.<br />Silent: A new user is automatically subscribed to this newsletter. The newsletter is not listed on the user registration page.')); // Type of (un)subsribe confirmation $options = simplenews_opt_inout_options(); $form['subscription']['opt_inout'] = array('#type' => 'select', '#title' => t('Opt-in/out method'), '#options' => $options, '#default_value' => $newsletter->opt_inout, '#description' => t('Hidden: This newsletter does not appear on subscription forms. No unsubscription footer in newsletter.<br /> Single: Users are (un)subscribed immediately, no confirmation email is sent.<br />Double: When (un)subscribing at a subscription form, anonymous users receive an (un)subscription confirmation email. Authenticated users are (un)subscribed immediately.')); $form['email'] = array('#type' => 'fieldset', '#title' => t('Email settings'), '#collapsible' => FALSE); // Hide format selection if there is nothing to choose. // The default format is plain text. $format_options = simplenews_format_options(); if (count($format_options) > 1) { $form['email']['format'] = array('#type' => 'radios', '#title' => t('Email format'), '#default_value' => $newsletter->format, '#options' => $format_options); } else { $form['email']['format'] = array('#type' => 'hidden', '#value' => key($format_options)); $form['email']['format_text'] = array('#markup' => t('Newsletter emails will be sent in %format format.', array('%format' => $newsletter->format))); } // Type of hyperlinks. $form['email']['hyperlinks'] = array('#type' => 'radios', '#title' => t('Hyperlink conversion'), '#description' => t('Determine how the conversion to text is performed.'), '#options' => array(t('Append hyperlinks as a numbered reference list'), t('Display hyperlinks inline with the text')), '#default_value' => $newsletter->hyperlinks, '#states' => array('visible' => array(':input[name="format"]' => array('value' => 'plain')))); $form['email']['priority'] = array('#type' => 'select', '#title' => t('Email priority'), '#default_value' => $newsletter->priority, '#options' => simplenews_get_priority()); $form['email']['receipt'] = array('#type' => 'checkbox', '#title' => t('Request receipt'), '#return_value' => 1, '#default_value' => $newsletter->receipt); // Email sender name $form['simplenews_sender_information'] = array('#type' => 'fieldset', '#title' => t('Sender information'), '#collapsible' => FALSE); $form['simplenews_sender_information']['from_name'] = array('#type' => 'textfield', '#title' => t('From name'), '#size' => 60, '#maxlength' => 128, '#default_value' => $newsletter->from_name); // Email subject $form['simplenews_subject'] = array('#type' => 'fieldset', '#title' => t('Newsletter subject'), '#collapsible' => FALSE); if (\Drupal::moduleHandler()->moduleExists('token')) { $form['simplenews_subject']['token_help'] = array('#title' => t('Replacement patterns'), '#type' => 'fieldset', '#collapsible' => TRUE, '#collapsed' => TRUE); $form['simplenews_subject']['token_help']['browser'] = array('#theme' => 'token_tree', '#token_types' => array('simplenews-newsletter', 'node', 'simplenews-subscriber')); } $form['simplenews_subject']['email_subject'] = array('#type' => 'textfield', '#title' => t('Email subject'), '#size' => 60, '#maxlength' => 128, '#required' => TRUE, '#default_value' => $newsletter->subject); // Email from address $form['simplenews_sender_information']['from_address'] = array('#type' => 'email', '#title' => t('From email address'), '#size' => 60, '#maxlength' => 128, '#required' => TRUE, '#default_value' => $newsletter->from_address); $form['actions'] = array('#type' => 'actions'); $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Save'), '#weight' => 50); if ($newsletter->id) { $form['actions']['delete'] = array('#type' => 'submit', '#value' => t('Delete'), '#weight' => 55); } return $form; }
/** * {@inheritdoc} */ public function buildForm(array $form, FormStateInterface $form_state) { $config = $this->config('simplenews.settings'); $form['simplenews_default_options'] = array('#type' => 'fieldset', '#title' => $this->t('Default newsletter options'), '#collapsible' => FALSE, '#description' => $this->t('These options will be the defaults for new newsletters, but can be overridden in the newsletter editing form.')); $links = array(':mime_mail_url' => 'http://drupal.org/project/mimemail', ':html_url' => 'http://drupal.org/project/htmlmail'); $description = $this->t('Default newsletter format. Install <a href=":mime_mail_url">Mime Mail</a> module or <a href=":html_url">HTML Mail</a> module to send newsletters in HTML format.', $links); $form['simplenews_default_options']['simplenews_format'] = array('#type' => 'select', '#title' => $this->t('Format'), '#options' => simplenews_format_options(), '#description' => $description, '#default_value' => $config->get('newsletter.format')); // @todo Do we need these master defaults for 'priority' and 'receipt'? $form['simplenews_default_options']['simplenews_priority'] = array('#type' => 'select', '#title' => $this->t('Priority'), '#options' => simplenews_get_priority(), '#description' => $this->t('Note that email priority is ignored by a lot of email programs.'), '#default_value' => $config->get('newsletter.priority')); $form['simplenews_default_options']['simplenews_receipt'] = array('#type' => 'checkbox', '#title' => $this->t('Request receipt'), '#default_value' => $config->get('newsletter.receipt'), '#description' => $this->t('Request a Read Receipt from your newsletters. A lot of email programs ignore these so it is not a definitive indication of how many people have read your newsletter.')); $form['simplenews_sender_info'] = array('#type' => 'fieldset', '#title' => $this->t('Sender information'), '#collapsible' => FALSE, '#description' => $this->t('Default sender address that will only be used for confirmation emails. You can specify sender information for each newsletter separately on the newsletter\'s settings page.')); $form['simplenews_sender_info']['simplenews_from_name'] = array('#type' => 'textfield', '#title' => $this->t('From name'), '#size' => 60, '#maxlength' => 128, '#default_value' => $config->get('newsletter.from_name')); $form['simplenews_sender_info']['simplenews_from_address'] = array('#type' => 'email', '#title' => $this->t('From email address'), '#size' => 60, '#maxlength' => 128, '#required' => TRUE, '#default_value' => $config->get('newsletter.from_address')); return parent::buildForm($form, $form_state); }