public function AdminContentNotification::buildForm in Admin Content Notification 8.3
Same name and namespace in other branches
- 8 src/Form/AdminContentNotification.php \Drupal\admin_content_notification\Form\AdminContentNotification::buildForm()
- 8.2 src/Form/AdminContentNotification.php \Drupal\admin_content_notification\Form\AdminContentNotification::buildForm()
Build the Form.
@inheritDoc
Overrides ConfigFormBase::buildForm
File
- src/
Form/ AdminContentNotification.php, line 52
Class
- AdminContentNotification
- Class AdminContentNotification implements settings for admin notification.
Namespace
Drupal\admin_content_notification\FormCode
public function buildForm(array $form, FormStateInterface $form_state, Request $request = NULL) {
$config = $this
->config('admin_content_notification.settings');
$form = [];
$form['admin_content_notification_content_types'] = [
'#type' => 'fieldset',
'#title' => $this
->t('Select the content types'),
'#description' => $this
->t('Choose the content type for which you want notification on content insert/update.'),
];
$default_content_types = $config
->get('admin_content_notification_node_types') ?: [];
$form['admin_content_notification_content_types']['admin_content_notification_node_types'] = [
'#type' => 'checkboxes',
'#title' => $this
->t('Content types'),
'#default_value' => $default_content_types,
'#options' => node_type_get_names(),
];
$trigger_node_update = $config
->get('admin_content_notification_trigger_on_node_update') ?: FALSE;
$form['admin_content_notification_trigger_on_node_update'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Enable on content update'),
'#default_value' => $trigger_node_update,
'#description' => $this
->t('Please check on it if you want to send notification on update action as well.'),
];
$trigger_node_status = $config
->get('admin_content_notification_trigger_on_node_status') ?: 0;
$content_status = [];
$content_status[0] = $this
->t('Notify for both published and unpublished content.');
$content_status[1] = $this
->t('Only notify for published content');
$content_status[2] = $this
->t('Only notify for unpublished content');
$form['admin_content_notification_trigger_on_node_status'] = [
'#type' => 'radios',
'#title' => $this
->t('Content status'),
'#options' => $content_status,
'#default_value' => $trigger_node_status,
'#description' => $this
->t('Select if you want to limit notifications to only published or only unpublished content.'),
];
$trigger_for_roles = $config
->get('admin_content_notification_allowed_roles') ?: [];
$user_roles = user_role_names();
$form['admin_content_notification_allowed_roles'] = [
'#type' => 'checkboxes',
'#title' => $this
->t('Select roles'),
'#options' => $user_roles,
'#default_value' => $trigger_for_roles,
'#description' => $this
->t('Please select the roles for which email notifications should trigger on content insert/update'),
];
$form['admin_content_notification_recepient_fieldset'] = [
'#type' => 'fieldset',
'#title' => $this
->t('Email Recipients'),
];
$form['admin_content_notification_recepient_fieldset']['admin_content_notification_email_limit'] = [
'#type' => 'textfield',
'#title' => $this
->t('Recipients Limit (Max)'),
'#default_value' => !empty($config
->get('admin_content_notification_email_limit')) ? $config
->get('admin_content_notification_email_limit') : 50,
'#description' => $this
->t('Enter -1 if you want to ignore Recipients Limit'),
];
$site_email = $config
->get('mail');
$admin_content_notification_email = $config
->get('admin_content_notification_email');
$form['admin_content_notification_recepient_fieldset']['admin_content_notification_email'] = [
'#type' => 'textarea',
'#title' => $this
->t("Email Id's to whom the notification is to be sent, add comma separated emails in case of multiple recipients"),
'#default_value' => isset($admin_content_notification_email) ? $admin_content_notification_email : $site_email,
'#description' => $this
->t('You can add emails upto Recipients Limit (Max)'),
];
$form['admin_content_notification_recepient_fieldset']['admin_content_notification_email_or_markup']['#markup'] = '<strong>' . $this
->t('OR') . '</strong>';
$roles_to_be_notified = $config
->get('admin_content_notification_roles_notified') ?: [];
if (array_key_exists('anonymous', $user_roles)) {
unset($user_roles['anonymous']);
}
$form['admin_content_notification_recepient_fieldset']['admin_content_notification_roles_notified'] = [
'#type' => 'checkboxes',
'#title' => $this
->t('Select roles'),
'#options' => $user_roles,
'#default_value' => $roles_to_be_notified,
'#description' => $this
->t('Please select the roles to whom you want to send email, please remember to select roles in a way so that total user count should not be greater than You can add emails upto Recipients Limit (Max).'),
];
$form['admin_content_notification_email_fieldset'] = [
'#type' => 'fieldset',
'#title' => $this
->t('Email Settings'),
];
$form['admin_content_notification_email_fieldset']['admin_content_notification_email_subject'] = [
'#type' => 'textfield',
'#title' => $this
->t('Configurable email subject'),
'#default_value' => $config
->get('admin_content_notification_email_subject'),
'#description' => $this
->t('Enter subject of the email.'),
];
$form['admin_content_notification_email_fieldset']['admin_content_notification_email_body'] = [
'#type' => 'textarea',
'#title' => $this
->t('Configurable email body'),
'#default_value' => $config
->get('admin_content_notification_email_body'),
'#description' => $this
->t('Email body for the email. Use the following tokens: @user_who_posted, @content_link, @content_title, @content_type, @action (posted or updated, will update accrodingly).'),
];
if ($this->adminContentNotificationService
->isTokenEnabled()) {
$form['admin_content_notification_email_fieldset']['admin_content_notification_email_tokens']['#markup'] = '<strong>' . $this
->t('You can use tokens provided by token module as well.') . '</strong><br>';
// Add the token tree UI.
$form['admin_content_notification_email_fieldset']['token_tree'] = [
'#theme' => 'token_tree_link',
'#token_types' => [
'user',
'node',
'content-type',
'current-date',
'current-user',
],
'#show_restricted' => TRUE,
'#global_types' => FALSE,
'#weight' => 90,
];
}
return parent::buildForm($form, $form_state);
}