shortify-1.0.9/src/Plugin/Shortcode/Accordions.php

src/Plugin/Shortcode/Accordions.php
<?php

namespace Drupal\shortify\Plugin\Shortcode;

use Drupal\shortcode\Annotation\Shortcode;
use Drupal\shortify\AdditionalClass\Helpers\AttributeHelper;
use Drupal\shortify\AdditionalClass\PsShortcodeBase;

/**
 * Provides a basic button shortcode
 *
 * @Shortcode(
 *   id = "ps_accordion",
 *   title = @Translation("Accordion item"),
 *   description = @Translation("Create accordion item."),
 *   settings = {
 *     {
 *         "type" = "select",
 *         "atr_name" = "accordion_type",
 *         "name" = @Translation("Accordion type"),
 *         "width" = "50",
 *         "select_type" = "list",
 *         "select_list" = {
 *              "default" = @Translation("Default"),
 *              "v1" = @Translation("Alternative 1"),
 *              "v2" = @Translation("Alternative 2"),
 *         },
 *         "value" = "default"
 *      },
 *     {
 *         "type" = "text",
 *         "atr_name" = "title",
 *         "name" = @Translation("Accordion title"),
 *         "width" = "50",
 *         "value" = ""
 *      },
 *     {
 *         "type" = "checkbox",
 *         "atr_name" = "is_opened",
 *         "name" = @Translation("Opened by default"),
 *         "width" = "25",
 *         "value" = "false"
 *      },
 *   }
 * )
 */
class Accordions extends PsShortcodeBase {

  public function buildElement(): string {
    $accordionTitle = $this->getSettings('title');
    $isDefaultOpened = AttributeHelper::isTrue($this->getSettings('is_opened'));
    $accordionOpenedClass = $isDefaultOpened ? 'ps-accordion-active ps-accordion-hover' : '';
    $accordionOpenedIcon = $isDefaultOpened ? 'fa-chevron-down ps-accordion-hover' : 'fa-chevron-right';
    $accordionOpenedBlockStyle = $isDefaultOpened ? "style='display: block;'" : '';

    $accordionType = $this->getSettings('accordion_type', 'v1');
    $returnAccordion = "";

    switch ($accordionType) {
      case "default":
        $returnAccordion = "
                <div class='ps-accordion ps-accordion-v1'>
                    <h4 class='$accordionOpenedClass'><i class='fas $accordionOpenedIcon'></i>$accordionTitle</h4>
                    <div class='ps-accordion-text' $accordionOpenedBlockStyle>
                        {$this->getContent()}
                    </div>
                </div>";
        break;
      case "v1":
        $returnAccordion = "
                <div class='ps-accordion ps-accordion-v2'>
                    <h4 class='$accordionOpenedClass'><i class='fas $accordionOpenedIcon'></i>$accordionTitle</h4>
                    <div class='ps-accordion-text' $accordionOpenedBlockStyle>
                        {$this->getContent()}
                    </div>
                </div>";
        break;
      case "v2":
        $returnAccordion = "
                <div class='ps-accordion ps-accordion-v3'>
                    <h4 class='$accordionOpenedClass'><i class='fas $accordionOpenedIcon'></i>$accordionTitle</h4>
                    <div class='ps-accordion-text' $accordionOpenedBlockStyle>
                        {$this->getContent()}
                    </div>
                </div>";
        break;
    }

    return $this->renderShortcode($returnAccordion, TRUE);
  }

}

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

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