social_lms_integrator-1.0.0-beta4/modules/social_lms_integrator_iteration_enrollment_notify/src/Form/IterationWelcomeMessageSettingsForm.php

modules/social_lms_integrator_iteration_enrollment_notify/src/Form/IterationWelcomeMessageSettingsForm.php
<?php

namespace Drupal\social_lms_integrator_iteration_enrollment_notify\Form;

use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;

/**
 * Iteration Welcome Message settings.
 */
class IterationWelcomeMessageSettingsForm extends ConfigFormBase {

  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    return 'iteration_welcome_message_settings';
  }

  /**
   * {@inheritdoc}
   */
  protected function getEditableConfigNames() {
    return [
      'social_lms_integrator_iteration_enrollment_notify.settings',
    ];
  }

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state) {
    $form = parent::buildForm($form, $form_state);
    $settings = $this->config('social_lms_integrator_iteration_enrollment_notify.settings');


    // Get default message.
    $default_welcome_message = \Drupal::entityTypeManager()->getStorage('iteration_welcome_message')->load('default_iteration_welcome_message');
    if ($default_welcome_message) {      
      $default_subject = $default_welcome_message->getSubject();
      $default_body = $default_welcome_message->getBody()['value'];
      $default_body_existing = $default_welcome_message->getBodyExisting()['value'];
    }  

    $available_filters = filter_formats();

    foreach($available_filters as $id => $filter) {
      $filter_options[$id] = $filter->label();
    }


    $form['format_settings'] = [
      '#type'  => 'fieldset',
      '#title' => $this->t('Format settings'),
    ];

    $form['format_settings']['selected_format'] = [
      '#type' => 'select',
      '#options' => $filter_options,
      '#default_value' => $settings->get('selected_format'),
    ];

    $form['format_settings']['show_token_info'] = [
      '#type'          => 'checkbox',
      '#title'         => $this->t('Show token info'),
      '#default_value' => $settings->get('show_token_info'),
      '#description' => $this->t('If enabled a bok with available tokens are shown to users.')
    ];

    $selected_format = $settings->get('selected_format');    

    $form['message'] = [
      '#type'          => 'fieldset',
      '#title'         => $this->t('Default message'),
      '#description'   => $this->t('If a default message is set here, and no message is set for the group, this default message will be sent.'),
    ];

    $form['message']['default_subject'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Subject'),
      '#maxlength' => 255,
      '#default_value' => isset($default_subject) ? $default_subject : ''
    ];
 
    $form['message']['default_body'] = [
      '#type' => 'text_format',
      '#title' => $this->t('Body'),
      '#default_value' => isset($default_body) ? $default_body : '',
      '#format' => $selected_format,
      '#allowed_formats' => [
        $selected_format
      ]
    ];    

    $form['message']['default_body_existing'] = [
      '#type' => 'text_format',
      '#title' => $this->t('Body existing'),
      '#default_value' => isset($default_body_existing) ? $default_body_existing : '',
      '#required' => FALSE,
      '#format' => $selected_format,
      '#allowed_formats' => [
        $selected_format
      ]
    ];  

    $form['message']['available_tokens'] = array(
      '#type' => 'details',
      '#title' => t('Available Tokens'),
      '#open' => FALSE, // Controls the HTML5 'open' attribute. Defaults to FALSE.
    );

    $suppported_tokens = array('site','user','group','node');
    
    $available_field_tokens = \Drupal::service('social_lms_integrator_iteration_enrollment_notify.available_fields');
    $whitelist = $available_field_tokens->getAvailableFields();

    $options = [
      'show_restricted' => TRUE,
      'show_nested' => TRUE,
      'global_types' => FALSE,
      'whitelist' => $whitelist
    ];  

    $form['message']['available_tokens']['tokens'] = \Drupal::service('social_lms_integrator_iteration_enrollment_notify.tree_builder')
    ->buildRenderable($suppported_tokens,$options);


    return $form;

  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    $settings = $this->configFactory->getEditable('social_lms_integrator_iteration_enrollment_notify.settings');

    // Save a default welcome message
    $default_welcome_message = \Drupal::entityTypeManager()->getStorage('iteration_welcome_message')->load('default_iteration_welcome_message');
    if (!$default_welcome_message) {        
      $default_welcome_message = \Drupal::entityTypeManager()->getStorage('iteration_welcome_message')->create();
    }     

    $default_welcome_message->set('id', 'default_iteration_welcome_message');
    $default_welcome_message->set('label', 'default_iteration_welcome_message');
    $default_welcome_message->set('node', '0');
    $default_welcome_message->setSubject($form_state->getValue('default_subject'));
    $default_welcome_message->setBody($form_state->getValue('default_body'));
    $default_welcome_message->setBodyExisting($form_state->getValue('default_body_existing'));
    $default_welcome_message->save();       

    // Save configurations.
    $settings->set('selected_format', $form_state->getValue('selected_format'))->save();
    $settings->set('show_token_info', $form_state->getValue('show_token_info'))->save();

    \Drupal::messenger()->addMessage(t('Configuration saved.'));

  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc