Файловый менеджер - Редактировать - /home/lmsyaran/public_html/components/com_sppagebuilder/addons/modal/site.php
Назад
<?php /** * @package SP Page Builder * @author JoomShaper http://www.joomshaper.com * @copyright Copyright (c) 2010 - 2023 JoomShaper * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later */ use Joomla\CMS\Layout\FileLayout; use Joomla\CMS\Uri\Uri; // No direct access defined('_JEXEC') or die('Restricted access'); /** @todo: need to update. */ class SppagebuilderAddonModal extends SppagebuilderAddons { /** * The addon frontend render method. * The returned HTML string will render to the frontend page. * * @return string The HTML string. * @since 1.0.0 */ public function render() { $settings = $this->addon->settings; $class = (isset($settings->class) && $settings->class) ? $settings->class : ''; // Options $modal_selector = (isset($settings->modal_selector) && $settings->modal_selector) ? $settings->modal_selector : ''; $button_text = (isset($settings->button_text) && $settings->button_text) ? $settings->button_text : ''; $button_class = (isset($settings->button_type) && $settings->button_type) ? ' sppb-btn-' . $settings->button_type : ' sppb-btn-default'; $button_class .= (isset($settings->button_size) && $settings->button_size) ? ' sppb-btn-' . $settings->button_size : ''; $button_class .= (isset($settings->button_shape) && $settings->button_shape) ? ' sppb-btn-' . $settings->button_shape : ' sppb-btn-rounded'; $button_class .= (isset($settings->button_appearance) && $settings->button_appearance) ? ' sppb-btn-' . $settings->button_appearance : ''; $button_class .= (isset($settings->button_block) && $settings->button_block) ? ' ' . $settings->button_block : ''; $button_icon = (isset($settings->button_icon) && $settings->button_icon) ? $settings->button_icon : ''; $button_icon_position = (isset($settings->button_icon_position) && $settings->button_icon_position) ? $settings->button_icon_position : 'left'; $icon_arr = array_filter(explode(' ', $button_icon)); if (count($icon_arr) === 1) { $button_icon = 'fa ' . $button_icon; } if ($button_icon_position === 'left') { $button_text = ($button_icon) ? '<i class="' . $button_icon . '" aria-hidden="true"></i> ' . $button_text : $button_text; } else { $button_text = ($button_icon) ? $button_text . ' <i class="' . $button_icon . '" aria-hidden="true"></i>' : $button_text; } $selector_image = (isset($settings->selector_image) && $settings->selector_image) ? $settings->selector_image : ''; $selector_image_src = isset($selector_image->src) ? $selector_image->src : $selector_image; $selector_image_width = (isset($selector_image->width) && $selector_image->width) ? $selector_image->width : ''; $selector_image_height = (isset($selector_image->height) && $selector_image->height) ? $selector_image->height : ''; $selector_icon_name = (isset($settings->selector_icon_name) && $settings->selector_icon_name) ? $settings->selector_icon_name : ''; $modal_unique_id = 'sppb-modal-' . $this->addon->id; $modal_content_type = (isset($settings->modal_content_type) && $settings->modal_content_type) ? $settings->modal_content_type : 'text'; $modal_content_text = (isset($settings->modal_content_text) && $settings->modal_content_text) ? $settings->modal_content_text : ''; $modal_content_image = (isset($settings->modal_content_image) && $settings->modal_content_image) ? $settings->modal_content_image : ''; $modal_content_image_src = isset($modal_content_image->src) ? $modal_content_image->src : $modal_content_image; $modal_content_video_url = (isset($settings->modal_content_video_url) && $settings->modal_content_video_url) ? $settings->modal_content_video_url : ''; $selector_text = (isset($settings->selector_text) && $settings->selector_text) ? $settings->selector_text : ''; $show_ripple_effect = (isset($settings->show_ripple_effect) && $settings->show_ripple_effect) ? $settings->show_ripple_effect : ''; if ($modal_content_type === 'text') { $mfg_type = 'inline'; } else if ($modal_content_type === 'video') { $mfg_type = 'iframe'; } else if ($modal_content_type === 'image') { $mfg_type = 'image'; } $output = ''; $output .= '<div class="sppb-addon ' . $class . '">'; if ($modal_content_type === 'text') { $url = '#' . $modal_unique_id; $output .= '<div id="' . $modal_unique_id . '" class="mfp-hide white-popup-block">'; $output .= '<div class="modal-inner-block">'; $output .= $modal_content_text; $output .= '</div>'; $output .= '</div>'; $attribs = 'data-popup_type="inline" data-mainclass="mfp-no-margins mfp-with-zoom"'; } else if ($modal_content_type === 'video') { $url = $modal_content_video_url; $attribs = 'data-popup_type="iframe" data-mainclass="mfp-no-margins mfp-with-zoom"'; } else { $url_part_of_content = explode('/', $modal_content_image_src); $alt_for_content = end($url_part_of_content); $url = '#' . $modal_unique_id; $output .= '<div id="' . $modal_unique_id . '" class="mfp-hide popup-image-block">'; $output .= '<div class="modal-inner-block">'; $output .= '<img class="mfp-img" src="' . $modal_content_image_src . '" alt="' . $alt_for_content . '">'; $output .= '</div>'; $output .= '</div>'; $attribs = 'data-popup_type="inline" data-mainclass="mfp-no-margins mfp-with-zoom"'; } if ($modal_selector === 'image') { if ($selector_image_src) { //Lazyload image $placeholder = $selector_image_src == '' ? false : $this->get_image_placeholder($selector_image_src); $url_part_of_button = explode('/', $selector_image_src); if ($selector_text) { $alt_for_button = $selector_text; } else { $alt_for_button = end($url_part_of_button); } $image_link = ''; if (strpos($selector_image_src, "http://") !== false || strpos($selector_image_src, "https://") !== false) { $image_link = $selector_image_src; } else { $image_link = Uri::base() . $selector_image_src; } $output .= '<a class="sppb-modal-selector sppb-magnific-popup" ' . $attribs . ' href="' . $url . '" id="' . $modal_unique_id . '-selector"><img ' . ($placeholder ? 'class="sppb-element-lazy"' : '') . ' src="' . ($placeholder ? $placeholder : $image_link) . '" alt="' . $alt_for_button . '" ' . ($placeholder ? 'data-large="' . $image_link . '"' : '') . ' ' . ($selector_image_width ? 'width="' . $selector_image_width . '"' : '') . ' ' . ($selector_image_height ? 'height="' . $selector_image_height . '"' : '') . ' loading="lazy">'; $output .= ($selector_text) ? '<span class="text">' . $selector_text . '</span>' : ''; if ($show_ripple_effect) { $output .= '<span class="sppb-ripple-effect"></span>'; } $output .= '</a>'; } } else if ($modal_selector === 'icon') { if ($selector_icon_name) { $select_icon = explode(' ', $selector_icon_name); if (count($select_icon) === 1) { $selector_icon_name = 'fa ' . $selector_icon_name; } $output .= '<a class="sppb-modal-selector sppb-magnific-popup" href="' . $url . '" ' . $attribs . ' id="' . $modal_unique_id . '-selector">'; $output .= '<span class="sppb-modal-icon-wrap">'; $output .= '<i class="' . $selector_icon_name . '" aria-hidden="true"></i>'; if ($show_ripple_effect) { $output .= '<span class="sppb-ripple-effect"></span>'; } $output .= '</span>'; $output .= ($selector_text) ? '<span class="text">' . $selector_text . '</span>' : ''; $output .= '</a>'; } } else { $output .= '<a class="sppb-btn ' . $button_class . ' sppb-magnific-popup sppb-modal-selector" ' . $attribs . ' href="' . $url . '" id="' . $modal_unique_id . '-selector">' . $button_text . '</a>'; } $output .= '</div>'; return $output; } /** * Add scripts to the document. * * @return array The list of scripts. * @since 1.0.0 */ public function scripts() { return array(Uri::base(true) . '/components/com_sppagebuilder/assets/js/jquery.magnific-popup.min.js'); } /** * Add stylesheets to the document. * * @return array The list of stylesheets. * @since 1.0.0 */ public function stylesheets() { return array(Uri::base(true) . '/components/com_sppagebuilder/assets/css/magnific-popup.css'); } /** * Generate the CSS string for the frontend page. * * @return string The CSS string for the page. * @since 1.0.0 */ public function css() { $addon_id = '#sppb-addon-' . $this->addon->id; $settings = $this->addon->settings; $cssHelper = new CSSHelper($addon_id); $modal_content_type = (isset($settings->modal_content_type) && $settings->modal_content_type) ? $settings->modal_content_type : 'text'; $modal_size = (isset($settings->modal_popup_width) && $settings->modal_popup_width) ? 'max-width: ' . $settings->modal_popup_width . 'px;' : ''; $modal_size .= (isset($settings->modal_popup_height) && $settings->modal_popup_height) ? ' height: ' . $settings->modal_popup_height . 'px;' : ''; $modal_selector = (isset($settings->modal_selector) && $settings->modal_selector) ? $settings->modal_selector : ''; $selector_icon_name = (isset($settings->selector_icon_name) && $settings->selector_icon_name) ? $settings->selector_icon_name : ''; $css = ''; if ($modal_selector == 'icon') { if ($selector_icon_name) { $settings->selector_icon_color = CssHelper::parseColor($settings, 'selector_icon_color'); $selectorStyleProps = [ 'selector_icon_border_width' => 'border-style:solid;border-width', 'selector_icon_border_radius' => 'border-radius', 'selector_icon_background' => 'background-color', 'selector_icon_border_color' => 'border-color', 'selector_icon_padding' => 'padding', 'selector_icon_color' => 'color', 'selector_margin_top' => 'margin-top', 'selector_margin_bottom' => 'margin-bottom' ]; $selectorUnits = ['selector_icon_background' => false, 'selector_icon_border_color' => false, 'selector_icon_color' => false]; $iconSelectorStyle = $cssHelper->generateStyle('.sppb-modal-selector span', $settings, $selectorStyleProps, $selectorUnits, null, null, false, 'display:inline-block;line-height:1;'); $iconStyleProps = [ 'selector_icon_size' => ['font-size', 'width', 'height', 'line-height'] ]; $iconStyle = $cssHelper->generateStyle('.sppb-modal-selector span > i', $settings, $iconStyleProps); $css .= $iconStyle; $css .= $iconSelectorStyle; } } else { $selectorStyle = $cssHelper->generateStyle('.sppb-modal-selector', $settings, ['selector_margin_top' => 'margin-top', 'selector_margin_bottom' => 'margin-bottom']); $css .= $selectorStyle; } if ($modal_content_type != 'video' && $modal_size) { if ($modal_content_type == 'image') { $cssHelper->setID('#sppb-modal-' . $this->addon->id . '.popup-image-block img'); $popupImage = $cssHelper->generateStyle(':self', $settings, ['modal_popup_width' => 'max-width', 'modal_popup_height' => 'height']); $css .= $popupImage; $cssHelper->setID($addon_id); } else { $cssHelper->setID('#sppb-modal-' . $this->addon->id . '.white-popup-block'); $popupImage = $cssHelper->generateStyle(':self', $settings, ['modal_popup_width' => 'max-width', 'modal_popup_height' => 'height']); $css .= $popupImage; $cssHelper->setID($addon_id); } } $settings->alignment = CSSHelper::parseAlignment($settings, 'alignment'); $css .= $cssHelper->generateStyle(':self', $settings, ['alignment' => 'text-align'], false); // Button css $layout_path = JPATH_ROOT . '/components/com_sppagebuilder/layouts'; $css_path = new FileLayout('addon.css.button', $layout_path); $css .= $css_path->render(array('addon_id' => $addon_id, 'options' => $settings, 'id' => 'sppb-modal-' . $this->addon->id . '-selector')); return $css; } /** * Generate the lodash template string for the frontend editor. * * @return string The lodash template string. * @since 1.0.0 */ public static function getTemplate() { $lodash = new Lodash('#sppb-addon-{{ data.id }}'); $output = ' <# let modalContentType = data.modal_content_type || "text" let buttonIconPosition = data.button_icon_position || "left" let modalUniqueId = "sppb-modal-"+ data.id let modalUrl = "#" + modalUniqueId let attribs = \'data-popup_type="inline" data-mainclass="mfp-no-margins mfp-with-zoom"\' let buttonClass = ( data.button_type )? "sppb-btn-" + data.button_type : "sppb-btn-default" buttonClass += ( data.button_size )? " sppb-btn-" + data.button_size : "" buttonClass += ( data.button_shape )? " sppb-btn-" + data.button_shape : " sppb-btn-rounded" buttonClass += ( data.button_appearance )? " sppb-btn-" + data.button_appearance : "" buttonClass += ( data.button_block )? " " + data.button_block : "" #> <style type="text/css">'; $output .= $lodash->alignment('text-align', '', 'data.alignment'); $buttonTypographyFallbacks = [ 'font' => 'data.button_font_family', 'size' => 'data.button_fontsize', 'letter_spacing' => 'data.button_letterspace', 'weight' => 'data.button_font_style?.weight', 'italic' => 'data.button_font_style?.italic', 'underline' => 'data.button_font_style?.underline', 'uppercase' => 'data.button_font_style?.uppercase', ]; $output .= $lodash->typography('#sppb-modal-{{ data.id }}-selector.sppb-btn-{{ data.button_type }}', 'data.button_typography', $buttonTypographyFallbacks); $output .= '<# if(data.button_type == "custom") { #>'; $output .= $lodash->color('color', '#sppb-modal-{{ data.id }}-selector.sppb-btn-custom', 'data.button_color'); $output .= $lodash->color('background-color', '#sppb-modal-{{ data.id }}-selector.sppb-btn-custom:hover', 'data.button_background_color_hover'); $output .= $lodash->color('color', '#sppb-modal-{{ data.id }}-selector.sppb-btn-custom:hover', 'data.button_color_hover'); $output .= $lodash->spacing('padding', '#sppb-modal-{{ data.id }}-selector.sppb-btn-custom', 'data.button_padding'); $output .= '<# if (data.button_appearance == "outline") { #>'; $output .= $lodash->border('border-color', '#sppb-modal-{{ data.id }}-selector.sppb-btn-custom', 'data.button_background_color'); $output .= $lodash->border('border-color', '#sppb-modal-{{ data.id }}-selector.sppb-btn-custom:hover', 'data.button_background_color_hover'); $output .= '<# } else if(data.button_appearance == "3d") { #>'; $output .= $lodash->border('border-bottom-color', '#sppb-modal-{{ data.id }}-selector.sppb-btn-custom', 'data.button_background_color_hover'); $output .= $lodash->color('background-color', '#sppb-modal-{{ data.id }}-selector.sppb-btn-custom', 'data.button_background_color'); $output .= '<# } else if(data.button_appearance == "gradient") { #>'; $output .= '#sppb-addon-{{ data.id }} #sppb-modal-{{ data.id }}-selector.sppb-btn-custom { border: none; }'; $output .= $lodash->color('background-color', '#sppb-modal-{{ data.id }}-selector.sppb-btn-custom', 'data.button_background_gradient'); $output .= $lodash->color('background-color', '#sppb-modal-{{ data.id }}-selector.sppb-btn-custom:hover', 'data.button_background_gradient_hover'); $output .= '<# } else { #>'; $output .= $lodash->color('background-color', '#sppb-modal-{{ data.id }}-selector.sppb-btn-custom', 'data.button_background_color'); $output .= '<# } #>'; $output .= '<# } #>'; $output .= '<# if (modalContentType == "image") { #>'; $output .= $lodash->unit('max-width', '#sppb-modal-{{ data.id }} .popup-image-block', 'data.modal_popup_width', 'px'); $output .= $lodash->unit('height', '#sppb-modal-{{ data.id }} .popup-image-block', 'data.modal_popup_height', 'px'); $output .= '<# } else if (modalContentType == "text") { #>'; $output .= $lodash->unit('max-width', '#sppb-modal-{{ data.id }} .white-popup-block', 'data.modal_popup_width', 'px'); $output .= $lodash->unit('height', '#sppb-modal-{{ data.id }} .white-popup-block', 'data.modal_popup_height', 'px'); $output .= '<# } #>'; $output .= '<# if( data.modal_selector == "icon") { #>'; $output .= $lodash->color('color', '.sppb-modal-selector span', 'data.selector_icon_color'); $output .= $lodash->color('background-color', '.sppb-modal-selector span', 'data.selector_icon_background'); $output .= $lodash->border('border-color', '.sppb-modal-selector span', 'data.selector_icon_border_color'); $output .= '<# if(!_.isEmpty(data.selector_icon_border_color)) { #>'; $output .= '#sppb-addon-{{ data.id }} .sppb-modal-selector span { border-style:solid;}'; $output .= '<# } #>'; $output .= '#sppb-addon-{{ data.id }} .sppb-modal-selector span { display:inline-block; line-height:1;}'; $output .= $lodash->unit('border-width', '.sppb-modal-selector span', 'data.selector_icon_border_width', 'px'); $output .= $lodash->unit('border-radius', '.sppb-modal-selector span', 'data.selector_icon_border_radius', 'px'); $output .= $lodash->unit('padding', '.sppb-modal-selector span', 'data.selector_icon_padding', 'px'); $output .= $lodash->unit('font-size', '.sppb-modal-selector span > i', 'data.selector_icon_size', 'px'); $output .= $lodash->unit('width', '.sppb-modal-selector span > i', 'data.selector_icon_size', 'px'); $output .= $lodash->unit('height', '.sppb-modal-selector span > i', 'data.selector_icon_size', 'px'); $output .= $lodash->unit('line-height', '.sppb-modal-selector span > i', 'data.selector_icon_size', 'px'); $output .= '<# } #>'; $output .= ' <# if( (data.modal_selector == "icon" || data.modal_selector == "image") && (data.selector_icon_name || data.selector_image)) { #>'; $output .= $lodash->unit('font-size', 'sppb-modal-selector span.text', 'data.selector_text_size', 'px'); $output .= $lodash->unit('font-weight', 'sppb-modal-selector span.text', 'data.selector_text_weight'); $output .= $lodash->color('color', 'sppb-modal-selector span.text', 'data.selector_text_color'); $output .= $lodash->spacing('margin', 'sppb-modal-selector span.text', 'data.selector_text_margin'); $output .= '<# } #>'; $output .= ' </style> <div class="sppb-addon {{ data.class }}"> <# if( modalContentType == "text") { #> <div id="{{ modalUniqueId }}" class="mfp-hide white-popup-block"> <div class="modal-inner-block"> {{{ data.modal_content_text }}} </div> </div> <# } else if( modalContentType == "video") { modalUrl = data.modal_content_video_url attribs = \'data-popup_type="iframe" data-mainclass="mfp-no-margins mfp-with-zoom"\' } else { #> <div id="{{ modalUniqueId }}" class="mfp-hide popup-image-block"> <div class="modal-inner-block"> <# var modal_content_image = {} if (typeof data.modal_content_image !== "undefined" && typeof data.modal_content_image.src !== "undefined") { modal_content_image = data.modal_content_image } else { modal_content_image = {src: data.modal_content_image} } if(modal_content_image.src && modal_content_image.src.indexOf("https://") == -1 && modal_content_image.src.indexOf("http://") == -1){ #> <img style="max-width: {{ data.modal_popup_width }}px; height: {{ data.modal_popup_height }}px" class="mfp-img" src=\'{{ pagebuilder_base + modal_content_image.src }}\' > <# } else { #> <img style="max-width: {{ data.modal_popup_width }}px; height: {{ data.modal_popup_height }}px" class="mfp-img" src=\'{{ modal_content_image.src }}\' > <# } #> </div> </div> <# } #> <# var selector_image = {} if (typeof data.selector_image !== "undefined" && typeof data.selector_image.src !== "undefined") { selector_image = data.selector_image } else { selector_image = {src: data.selector_image} } if(data.modal_selector == "image") { #> <a class="sppb-modal-selector sppb-magnific-popup" {{{ attribs }}} href=\'{{ modalUrl }}\' id="{{ modalUniqueId }}-selector"> <# if(selector_image.src && selector_image.src.indexOf("https://") == -1 && selector_image.src.indexOf("http://") == -1){ #> <img src=\'{{ pagebuilder_base + selector_image.src }}\' alt=""> <# } else { #> <img src=\'{{ selector_image.src }}\' alt=""> <# } #> </a> <# } else if (data.modal_selector == "icon"){ let select_icon_arr = (typeof data.selector_icon_name !== "undefined" && data.selector_icon_name) ? data.selector_icon_name.split(" ") : ""; let select_icon_name = select_icon_arr.length === 1 ? "fa "+data.selector_icon_name : data.selector_icon_name; #> <a class="sppb-modal-selector sppb-magnific-popup" href=\'{{ modalUrl }}\' {{{ attribs }}} id="{{ modalUniqueId }}-selector"> <span class="sppb-modal-icon-wrap"> <i class="{{ select_icon_name }}"></i> <# if(data.show_ripple_effect) { #> <span class="sppb-ripple-effect"></span> <# } #> </span> </a> <# } else { let btn_icon_arr = (typeof data.button_icon !== "undefined" && data.button_icon) ? data.button_icon.split(" ") : ""; let btn_icon_name = btn_icon_arr.length === 1 ? "fa "+data.button_icon : data.button_icon; #> <a class="sppb-btn {{ buttonClass }} sppb-magnific-popup sppb-modal-selector" {{{ attribs }}} href=\'{{ modalUrl }}\' id="{{ modalUniqueId }}-selector"><# if( buttonIconPosition == "left" && data.button_icon ) { #> <i class="{{ btn_icon_name }}"></i><# } #> {{ data.button_text }} <# if( buttonIconPosition == "right" && data.button_icon ) { #> <i class="{{ btn_icon_name }}"></i><# } #></a> <# } #> </div>'; return $output; } }
| ver. 1.4 |
Github
|
.
| PHP 8.1.33 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка