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

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

namespace Drupal\shortify\Plugin\Shortcode;

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

/**
 * Provides a basic button shortcode
 *
 * @Shortcode(
 *   id = "ps_banner",
 *   title = @Translation("Banner"),
 *   description = @Translation("Create a hover animated banner."),
 *   settings = {
 *     {
 *         "type" = "file",
 *         "atr_name" = "background_img",
 *         "name" = @Translation("Background image"),
 *         "width" = "50",
 *         "value" = ""
 *      },
 *     {
 *         "type" = "select",
 *         "atr_name" = "banner_type",
 *         "name" = @Translation("Banner 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("Banner title"),
 *         "width" = "50",
 *         "value" = ""
 *      },
 *     {
 *         "type" = "textarea",
 *         "atr_name" = "description",
 *         "name" = @Translation("Banner description"),
 *         "width" = "50",
 *         "value" = ""
 *      },
 *     {
 *         "type" = "text",
 *         "atr_name" = "banner_url",
 *         "name" = @Translation("Banner url link"),
 *         "width" = "50",
 *         "value" = ""
 *      },
 *     {
 *         "type" = "solo",
 *         "value" = "true"
 *      }
 *   }
 * )
 */
class Banner extends PsShortcodeBase {

  public function buildElement(): string {
    $bgBanner = $this->getSettings('background_img');
    $bgImage = AttributeHelper::stringNotNull($bgBanner) ? UrlHelper::getUrlFromFile($bgBanner) : '';
    $titleBanner = $this->getSettings('title');
    $descriptionBanner = $this->getSettings('description');
    $bannerType = $this->getSettings('banner_type', 'v1');
    $bannerUrl = $this->getSettings('banner_url');
    $bannerIsLink = AttributeHelper::stringNotNull($bannerUrl);
    $bannerTagOpen = $bannerIsLink ? "a href='$bannerUrl' alt='$titleBanner'" : 'div';
    $bannerTagClose = $bannerIsLink ? 'a' : 'div';
    $returnBanner = "";

    switch ($bannerType) {
      case "default":
        $returnBanner = "
                <$bannerTagOpen class='ps-banner ps-banner-v1'>
                    <div class='ps-banner-image'>
                        <img alt='$titleBanner' src='$bgImage'/>
                    </div>
                    <div class='ps-banner-text-container'>
                        <div class='ps-banner-text'>
                            <h3>$titleBanner</h3>
                            <p>$descriptionBanner</p>
                        </div>
                    </div>
                </$bannerTagClose>";
        break;
      case "v1":
        $returnBanner = "
                <$bannerTagOpen class='ps-banner ps-banner-v2'>
                    <div class='ps-banner-image'>
                        <img alt='$titleBanner' src='$bgImage'/>
                    </div>
                    <div class='ps-banner-text-container'>
                        <div class='ps-banner-text'>
                            <h3>$titleBanner</h3>
                            <p>$descriptionBanner</p>
                        </div>
                    </div>
                </$bannerTagClose>";
        break;
      case "v2":
        $returnBanner = "
                <$bannerTagOpen class='ps-banner ps-banner-v3'>
                    <div class='ps-banner-image'>
                        <img alt='$titleBanner' src='$bgImage'/>
                    </div>
                    <div class='ps-banner-text-container'>
                        <div class='ps-banner-text'>
                            <h3>$titleBanner</h3>
                            <p>$descriptionBanner</p>
                        </div>
                    </div>
                </$bannerTagClose>";
        break;
    }

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

}

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

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