annotate_node-1.0.1-alpha1/src/Form/CommentForm.php

src/Form/CommentForm.php
<?php

namespace Drupal\annotate_node\Form;

use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\comment\Entity\Comment;
use Drupal\Core\Ajax\AjaxResponse;
use Drupal\Core\Ajax\AppendCommand;
use Drupal\Component\Utility\Xss;

/**
 *
 */
class CommentForm extends FormBase {

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

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state) {
    $form['title'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Subject'),
      '#maxlength' => 64,
    ];
    $form['comment'] = [
      '#type' => 'text_format',
      '#title' => $this->t(''),
    ];
    $form['paragraph_number'] = [
      '#type' => 'textfield',
      '#title' => $this->t('paragraph_number'),
      '#format' => 'full_html',
    ];
    $form['actions'] = [
    '#type' => 'button',
    '#value' => $this->t('Submit'),
    '#ajax' => [
      'callback' => '::insertComment',
    ]
   ];
    return $form;
  }

  /**
   * {@inheritdoc}
   */
  public function insertComment(array $form, FormStateInterface $form_state) {
    $config = \Drupal::config('annotate_node.settings');
    $string_separate = $config->get('string_separate');
    $node = \Drupal::routeMatch()->getParameter('node');
    if ($string_separate == 'Paragraphs') {
      $paragraph_sentence = 'p';
    }
    else {
      $paragraph_sentence = 's';
    }
    $paragraph_number = $form_state->getValue('paragraph_number');
    $comment_body = $form_state->getValue('comment')['value'];
    $uid = \Drupal::currentUser()->id();
    // Need to strip the <p> tag that CKE adds for messes up formatting of comments.
    $tags = ["<p>", "</p>", "<font>", "</font>"];
    $comment_body = str_replace($tags, "", $comment_body);
    $values = [
      'entity_type' => 'node',
      'entity_id' => $node->id(),
      'field_name' => 'field_comments_manually',
      'uid' => $uid,
      'comment_type' => 'annotate_node_comment',
      'subject' => $form_state->getValue('title'),
      'comment_body' => $form_state->getValue('comment')['value'],
      'paragraph_number' => $form_state->getValue('paragraph_number'),
      'paragraph_sentence' => $paragraph_sentence,
      'status' => 1,
    ];
    $comment = Comment::create($values);
    $comment->save();
    $messenger = \Drupal::messenger();
    $messenger->addMessage($config->get('annotation_confirmation'), $messenger::TYPE_STATUS);
	$paragraph_number = Xss::filter($paragraph_number);
	$comment_body = Xss::filter($comment_body);
    $response = new AjaxResponse();

    $response->addCommand(
    new AppendCommand(
        '#comments-' . $paragraph_number . '',
    '<div><span class="commentDate">' . date("F jS Y h:i:s") . '</span></div><p class="separate-cmt" id="comment-' . $paragraph_number . '-temp">' . $comment_body . '</p>'
    )
    );

    return $response;
  }

  /**
   * {@inheritdoc}
   *
   * Using Ajax and calling insertComment function instead.
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
  }

}

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

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