argue-2.0.0-alpha4/modules/argue_versions/argue_versions.module

modules/argue_versions/argue_versions.module
<?php

/**
 * @file
 * Contains argue_versions.module.
 */

use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Routing\RouteMatchInterface;

/**
 * Implements hook_help().
 */
function argue_versions_help($route_name, RouteMatchInterface $route_match) {
  switch ($route_name) {
    // Main module help for the argue_versions module.
    case 'help.page.argue_versions':
      $output = '';
      $output .= '<h3>' . t('About') . '</h3>';
      $output .= '<p>' . t('Creates a permanent version of all ratified rules (with context) in the current version.') . '</p>';
      return $output;

    default:
  }
}

/**
 * Implements hook_theme().
 */
function argue_versions_theme() {
  return [
    'argue_versions' => [
      'variables' => [
        'description' => NULL,
        'latest' => NULL,
        'current' => NULL,
        'history' => NULL,
      ],
    ],
    'argue_versions_tree' => [
      'variables' => [
        'title' => NULL,
        'child_nodes' => NULL,
        'children' => NULL,
        'level' => NULL,
        'data' => [],
      ],
    ],
  ];
}


/**
 * Implements hook_ENTITY_TYPE_presave().
 *
 * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
 * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
 */
function argue_versions_node_presave(EntityInterface $entity) {
  if($entity->bundle() == 'version' && $entity->isNew()) {
    /** @var Drupal\argue_versions\SnapshotService $snapshot_service */
    $snapshot_service = \Drupal::service('argue_versions.snapshot_service');
    // Save terms snapshot.
    $entity->set('field_sections', $snapshot_service->getSectionsSnapshot());
    $entity->set('field_rules', $snapshot_service->getRulesSnapshot());
    $entity->set('field_problems', $snapshot_service->getProblemsSnapshot());
    $entity->set('field_arguments', $snapshot_service->getArgumentsSnapshot());
  }
}

/**
 * Implements hook_form_FORM_ID_alter().
 */
function argue_versions_form_node_form_alter(&$form, FormStateInterface $form_state) {
  if($form['#form_id'] == 'node_version_form') {
    /** @var Drupal\argue_versions\SnapshotService $snapshot_service */
    $snapshot_service = \Drupal::service('argue_versions.snapshot_service');
    /** @var \Drupal\node\NodeInterface $node */
    $node = $form_state->getFormObject()->getEntity();
    if($node->isNew()) {
      $form['title']['widget'][0]['value']['#default_value'] = $snapshot_service->getTitle();
      $form['title']['widget'][0]['value']['#disabled'] = 1;
      $form['field_description']['widget'][0]['value']['#default_value'] = $snapshot_service->getDesc();
      $form['field_description']['widget'][0]['value']['#disabled'] = 1;
      $form['field_version_number']['widget'][0]['value']['#default_value'] = $snapshot_service->getNextVersionNum();
      $form['field_version_number']['widget'][0]['value']['#disabled'] = 1;
    }
  } elseif ($form['#form_id'] == 'node_version_edit_form') {
    $form['title']['widget'][0]['value']['#disabled'] = 1;
    $form['field_description']['widget'][0]['value']['#disabled'] = 1;
    $form['field_version_number']['widget'][0]['value']['#disabled'] = 1;
  }
}

/**
 * Implements hook_ENTITY_TYPE_insert().
 *
 * Update version iterator on a new version entity.
 *
 * @param \Drupal\Core\Entity\EntityInterface $node
 */
function argue_versions_node_insert(EntityInterface $node) {
  /** @var \Drupal\node\NodeInterface $node */
  if($node->bundle() == 'version') {
    /** @var Drupal\argue_versions\SnapshotService $snapshot_service */
    $snapshot_service = \Drupal::service('argue_versions.snapshot_service');
    $version = (int) $node->get('field_version_number')->getString();
    $snapshot_service->setVersionNum($version);
  }
}


/**
 * Implements hook_entity_bundle_field_info_alter().
 */
function argue_versions_entity_bundle_field_info_alter(&$fields, EntityTypeInterface $entity_type, $bundle) {
  if ($entity_type->id() == 'node' && $bundle === 'version') {
    if (isset($fields['field_valid_date'])) {
      // Use the ID as defined in the annotation of the constraint definition.
      $fields['field_valid_date']->addConstraint('version_valid_date_constraint', []);
    }
  }
}

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

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