social_lms_integrator-1.0.0-beta4/modules/social_lms_integrator_language_version/social_lms_integrator_language_version.module

modules/social_lms_integrator_language_version/social_lms_integrator_language_version.module
<?php
/**
 * @file
 * Contains social_lms_integrator_language_version.module.
 */

use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\node\NodeInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\Url;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Drupal\group\Entity\GroupInterface;

/**
 * Implements hook_form_alter().
 */
function social_lms_integrator_language_version_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  // Form alters for the event add and edit forms.
  if ($form_id === 'node_language_version_edit_form' || $form_id === 'node_language_version_form') {

    // We do not want the label
    $form['field_language']['widget']['#title_display'] = 'invisible';

    $form['field_select_template_lv']['#states'] = [
      'visible' => [
        ':input[name="field_select_template"]' => ['value' => '1'],
      ],
    ];

    $form['field_select_template_it']['#states'] = [
      'visible' => [
        ':input[name="field_select_template"]' => ['value' => '2'],
      ],
    ];

    $form['field_template']['#states'] = [
      'enabled' => [
        ':input[name="field_select_template"]' => ['value' => '_none'],
      ],
    ];

    $form['field_select_template']['#states'] = [
      'visible' => [
        ':input[name="field_template"]' => ['value' => '_none'],
      ],
    ];

    $form['actions']['submit']['#submit'][] = 'social_lms_integrator_language_version_form_submit';


  }
}

function social_lms_integrator_language_version_form_submit($form, FormStateInterface $form_state) {
  $group = _social_group_get_current_group();

  if ($group instanceof GroupInterface) {

    $url = Url::fromRoute('view.manage_language_versions.page_group_language_versions', ['group' => $group->id()]);
    $response = new RedirectResponse($url->toString()); 
    $response->send();

  }

}



/**
 * Implements hook_ENTITY_TYPE_insert() for node entities.
 *
 * This tests saving a node on node insert.
 *
 * @see \Drupal\node\Tests\NodeSaveTest::testNodeSaveOnInsert()
 */
function social_lms_integrator_language_version_node_insert(NodeInterface $node) {
  // Set the node title to the node ID and save.
  if ($node->getType() === 'language_version') {

    $nid = $node->id();
    $title = $node->getTitle();
    $clean_title = social_lms_integrator_language_version_prepare_title($title);
    $languages = $node->get('field_language')->referencedEntities();
    $lang_string = '';

    if(isset($languages)) {
      foreach($languages as $term) {
        $lang[] = $term->getName();
      }  
      $lang_string = implode('-',$lang);
    }

    $version_number = $clean_title . '-' . $lang_string . '-' . $nid;

    $node->set('field_version_number',$version_number);
    $node->save();

  }
}

function social_lms_integrator_language_version_prepare_title($title) {
  //Lower case everything
  $string = strtolower($title);
  //Make alphanumeric (removes all other characters)
  $string = preg_replace("/[^a-z0-9_\s-]/", "", $string);
  //Clean up multiple dashes or whitespaces
  $string = preg_replace("/[\s-]+/", " ", $string);
  //Convert whitespaces and underscore to dash
  $string = preg_replace("/[\s_]/", "-", $string);
  return $string;
}

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

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