at_theme-1.4.1/at_core/includes/misc.inc

at_core/includes/misc.inc
<?php

/**
 * @file
 */

use Drupal\Component\Utility\Html;
use Drupal\Component\Utility\Tags;

/**
 * Clean away twig debugging output, it breaks some stuff.
 *
 * @param $variable
 *
 * @return mixed
 */
function _at_core_cleanup_twig_debug_output($variable) {
  $output = preg_replace('/[ \t]+/', ' ', preg_replace('/<!--(.|\s)*?-->/', '', $variable));
  return preg_replace(['/\r/', '/\n/'], '', $output);
}

/**
 * Helper function for layout plugin attributes.
 *
 * @param $variables
 *
 * @return mixed
 */
function _at_core_layout_plugin_attributes($variables) {
  $html_element = 'div';
  $classes = [];
  $role = NULL;
  $bundle = NULL;
  $entity_type = NULL;
  $view_mode = NULL;
  $id = NULL;

  // Entity and bundle.
  if (isset($variables['content']['#entity_type'])) {
    $entity_type = $variables['content']['#entity_type'];
    $bundle = $variables['content']['#bundle'];
    $view_mode = $variables['content']['#view_mode'];
    $id = $variables['content']['#' . $entity_type]->id();

    $entity_classes = !empty($variables['content']['#ds_configuration']['layout']['entity_classes']) ? $variables['content']['#ds_configuration']['layout']['entity_classes'] : '';
    if ($entity_classes !== 'no_classes') {
      $classes[] = $entity_type;
      $classes[] = $view_mode ? Html::cleanCssIdentifier($entity_type . '--view-mode-' . $view_mode) : '';
      $classes[] = $bundle ? Html::cleanCssIdentifier($entity_type . '--type-' . $bundle) : '';
      $classes[] = $id ? Html::cleanCssIdentifier($entity_type . '--id-' . $id) : '';
    }

    if (in_array($entity_type, ['node', 'comment'])) {
      $html_element = 'article';
      $role = 'article';
    }

    if ($entity_type == 'comment') {
      $comment = $variables['content']['#comment'];
      $classes[] = 'js-comment';
      $classes[] = $comment->getStatus() != 1 ? 'unpublished' : '';
      if ($comment->getCommentedEntityTypeId() !== 'block_content') {
        $comment_owner = $comment->getOwnerId();
        $commented_entity_owner = $comment->getCommentedEntity()->getOwnerId();
        if ($comment_owner === $commented_entity_owner) {
          $classes[] = 'by-' . $comment->getCommentedEntity()->getEntityTypeId() . '-author';
        }
      }
    }

    if ($entity_type == 'node') {
      $node = $variables['content']['#node'];
      // Add classes reflecting the current node's attributes.
      if (!empty($node->isPromoted())) {
        $classes[] = 'node--promoted';
      }
      if (!empty($node->isSticky())) {
        $classes[] = 'node--sticky';
      }
      if (empty($node->isPublished())) {
        $classes[] = 'node--unpublished';
      }
    }

    // Extension settings.
    if ($variables['theme']['extensions']['is_enabled'] === TRUE) {
      if ($variables['theme']['shortcodes']['is_enabled'] === TRUE) {
        $shortcodes_config = $variables['theme'][$variables['theme']['shortcodes']['config']];
        if (isset($variables['content'])) {
          $entity_type_bundle_setting = $entity_type . 'type_classes_' . $bundle;
          if (isset($shortcodes_config[$entity_type_bundle_setting]) && !empty($shortcodes_config[$entity_type_bundle_setting])) {
            $shortcodes = Tags::explode($shortcodes_config[$entity_type_bundle_setting]);
            foreach ($shortcodes as $class) {
              $classes[] = Html::cleanCssIdentifier($class);
            }
          }
        }
      }
    }
  }

  // Panels.
  if (isset($variables['content']['#page_variant'])) {
    $classes[] = 'panels-page';
    $classes[] = 'panels-page--' . Html::cleanCssIdentifier($variables['content']['#page_variant']->get('page'));
  }

  // Global classes.
  $layout = 'none';
  // Layout plugin contrib module, Drupal core 8.2.x and below.
  if (isset($variables['layout']) && is_array($variables['layout']) && isset($variables['layout']['id'])) {
    $layout = $variables['layout']['id'];
  }
  // Layout discovery, Drupal core 8.3.x and up.
  elseif (isset($variables['content']['#layout'])) {
    $layout = $variables['content']['#layout']->id();
  }

  $classes[] = 'atl';
  $classes[] = 'atl--' . Html::cleanCssIdentifier($layout);

  $attributes['classes'] = $classes;
  $attributes['html_element'] = $html_element;
  if (!empty($role)) {
    $attributes['role'] = $role;
  }

  return $attributes;
}

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

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