| Current Path : /home/jeromecohp/www/plugins/system/fs_grid/element/fs_grid/ |
| Current File : /home/jeromecohp/www/plugins/system/fs_grid/element/fs_grid/element.php |
<?php
/**
* @package Grid 10 element for YOOtheme Pro
* @author Flart Studio https://www.flart.studio
* @copyright Copyright (C) Flart Studio
* @license GNU General Public License version 3, or later
*/
namespace YOOtheme;
// No direct access to this file
defined('_JEXEC') or die();
return [
'transforms' => [
'render' => function ($node) {
$node->props['custom_grids'] = 2;
$node->props['custom_fields'] = 10;
// Limit Items
$limit = $node->props['limit_items'] ?: 0;
$limit > 0 ? $node->children = array_slice($node->children, 0, $limit) : false;
$node->tags = [];
// Filter tags
if (!empty($node->props['filter'])) {
foreach ($node->children as $child) {
$child->tags = [];
foreach (explode(',', $child->props['tags'] ?? '') as $tag) {
// Strip tags as precaution if tags are mapped dynamically
$tag = strip_tags($tag);
if ($key = str_replace(' ', '-', trim($tag))) {
$child->tags[$key] = trim($tag);
}
}
$node->tags += $child->tags;
}
if (
$node->props['filter_order'] === 'manual' &&
$node->props['filter_order_manual']
) {
$order = array_map(
'strtolower',
array_map('trim', explode(',', $node->props['filter_order_manual']))
);
uasort($node->tags, function ($a, $b) use ($order) {
$iA = array_search(strtolower($a), $order);
$iB = array_search(strtolower($b), $order);
return $iA !== false && $iB !== false
? $iA - $iB
: ($iA !== false
? -1
: ($iB !== false
? 1
: strnatcmp($a, $b)));
});
} else {
natsort($node->tags);
}
if ($node->props['filter_reverse']) {
$node->tags = array_reverse($node->tags, true);
}
}
// Grid_stack
foreach ($node->children as $i => $child) {
$child->props['item_reverse'] = false;
if ($node->props['grid_stack'] && $i % 2 === 0) {
$child->props['item_reverse'] = true; //Grid stack
}
$child->props['item_num'] = $i + 1;
}
if ($node->props['panel_style'] === 'tile-checked') {
app(Metadata::class)->set('script:builder-grid', [
'src' => Path::get('./app/grid.min.js'),
'defer' => true,
]);
}
foreach (['grid_1_custom_position', 'grid_2_custom_position'] as $prop) {
if (in_array(Arr::get($node->props, $prop), ['bellow-content'])) {
$node->props[$prop] = 'below-content';
}
}
},
'presave' => function ($node) {
if (Arr::get($node->props, 'grid_1_custom_position') === 'bellow-content') {
$node->props['grid_1_custom_position'] = 'below-content';
}
if (Arr::get($node->props, 'grid_2_custom_position') === 'bellow-content') {
$node->props['grid_2_custom_position'] = 'below-content';
}
},
],
'updates' => [
'4.0.0' => function ($node) {
foreach (['grid_1_custom_position', 'grid_2_custom_position'] as $prop) {
if (in_array(Arr::get($node->props, $prop), ['bellow-content'])) {
$node->props[$prop] = 'below-content';
}
}
},
'4.0.0-beta.9' => function ($node) {
if (Arr::get($node->props, 'panel_link') && Arr::get($node->props, 'css')) {
$node->props['css'] = str_replace('.el-item', '.el-item > *', $node->props['css']);
}
},
'2.8.0-beta.0.13' => function ($node) {
foreach (['title_style', 'meta_style', 'content_style'] as $prop) {
if (in_array(Arr::get($node->props, $prop), ['meta', 'lead'])) {
$node->props[$prop] = 'text-' . Arr::get($node->props, $prop);
}
}
},
'2.7.3.1' => function ($node) {
if (empty($node->props['panel_style']) && empty($node->props['panel_padding'])) {
foreach ($node->children as $child) {
if (
isset($child->props->panel_style) &&
str_starts_with($child->props->panel_style, 'card-')
) {
$node->props['panel_padding'] = 'default';
break;
}
}
}
},
'2.7.0-beta.0.5' => function ($node) {
if (
isset($node->props['panel_style']) &&
str_starts_with($node->props['panel_style'], 'card-')
) {
if (empty($node->props['panel_card_size'])) {
$node->props['panel_card_size'] = 'default';
}
$node->props['panel_padding'] = $node->props['panel_card_size'];
unset($node->props['panel_card_size']);
}
},
'2.7.0-beta.0.1' => function ($node) {
Arr::updateKeys($node->props, [
'panel_content_padding' => 'panel_padding',
'panel_size' => 'panel_card_size',
'panel_card_image' => 'panel_image_no_padding',
]);
},
'2.4.14.2' => function ($node) {
$node->props['animation'] = Arr::get($node->props, 'item_animation');
$node->props['item_animation'] = true;
},
'2.1.0-beta.0.1' => function ($node) {
if (Arr::get($node->props, 'item_maxwidth') === 'xxlarge') {
$node->props['item_maxwidth'] = '2xlarge';
}
if (Arr::get($node->props, 'title_grid_width') === 'xxlarge') {
$node->props['title_grid_width'] = '2xlarge';
}
if (Arr::get($node->props, 'image_grid_width') === 'xxlarge') {
$node->props['image_grid_width'] = '2xlarge';
}
if (!empty($node->props['icon_ratio'])) {
$node->props['icon_width'] = round(20 * $node->props['icon_ratio']);
unset($node->props['icon_ratio']);
}
},
'2.0.0-beta.8.1' => function ($node) {
Arr::updateKeys($node->props, ['grid_align' => 'grid_column_align']);
},
'2.0.0-beta.5.1' => function ($node) {
Arr::updateKeys($node->props, [
'link_type' => function ($value) {
if ($value === 'content') {
return [
'title_link' => true,
'image_link' => true,
'link_text' => '',
];
} elseif ($value === 'element') {
return [
'panel_link' => true,
'link_text' => '',
];
}
},
]);
},
'1.22.0-beta.0.1' => function ($node) {
Arr::updateKeys($node->props, [
'divider' => 'grid_divider',
'filter_breakpoint' => 'filter_grid_breakpoint',
'title_breakpoint' => 'title_grid_breakpoint',
'image_breakpoint' => 'image_grid_breakpoint',
'gutter' => fn($value) => ['grid_column_gap' => $value, 'grid_row_gap' => $value],
'filter_gutter' => fn($value) => [
'filter_grid_column_gap' => $value,
'filter_grid_row_gap' => $value,
],
'title_gutter' => fn($value) => [
'title_grid_column_gap' => $value,
'title_grid_row_gap' => $value,
],
'image_gutter' => fn($value) => [
'image_grid_column_gap' => $value,
'image_grid_row_gap' => $value,
],
]);
},
'1.20.0-beta.1.1' => function ($node) {
Arr::updateKeys($node->props, ['maxwidth_align' => 'block_align']);
},
'1.20.0-beta.0.1' => function ($node) {
if (Arr::get($node->props, 'title_style') === 'heading-hero') {
$node->props['title_style'] = 'heading-xlarge';
}
if (Arr::get($node->props, 'title_style') === 'heading-primary') {
$node->props['title_style'] = 'heading-medium';
}
/** @var Config $config */
$config = app(Config::class);
[$style] = explode(':', $config('~theme.style'));
if (
in_array($style, [
'craft',
'district',
'jack-backer',
'tomsen-brody',
'vision',
'florence',
'max',
'nioh-studio',
'sonic',
'summit',
'trek',
])
) {
if (
Arr::get($node->props, 'title_style') === 'h1' ||
(empty($node->props['title_style']) &&
Arr::get($node->props, 'title_element') === 'h1')
) {
$node->props['title_style'] = 'heading-small';
}
}
if (in_array($style, ['florence', 'max', 'nioh-studio', 'sonic', 'summit', 'trek'])) {
if (Arr::get($node->props, 'title_style') === 'h2') {
$node->props['title_style'] =
Arr::get($node->props, 'title_element') === 'h1' ? '' : 'h1';
} elseif (
empty($node->props['title_style']) &&
Arr::get($node->props, 'title_element') === 'h2'
) {
$node->props['title_style'] = 'h1';
}
}
if (in_array($style, ['fuse', 'horizon', 'joline', 'juno', 'lilian', 'vibe', 'yard'])) {
if (Arr::get($node->props, 'title_style') === 'heading-medium') {
$node->props['title_style'] = 'heading-small';
}
}
if ($style == 'copper-hill') {
if (Arr::get($node->props, 'title_style') === 'heading-medium') {
$node->props['title_style'] =
Arr::get($node->props, 'title_element') === 'h1' ? '' : 'h1';
} elseif (Arr::get($node->props, 'title_style') === 'h1') {
$node->props['title_style'] =
Arr::get($node->props, 'title_element') === 'h2' ? '' : 'h2';
} elseif (
empty($node->props['title_style']) &&
Arr::get($node->props, 'title_element') === 'h1'
) {
$node->props['title_style'] = 'h2';
}
}
if (in_array($style, ['trek', 'fjord'])) {
if (Arr::get($node->props, 'title_style') === 'heading-medium') {
$node->props['title_style'] = 'heading-large';
}
}
if (in_array($style, ['juno', 'vibe', 'yard'])) {
if (Arr::get($node->props, 'title_style') === 'heading-xlarge') {
$node->props['title_style'] = 'heading-medium';
}
}
if (
in_array($style, [
'district',
'florence',
'flow',
'nioh-studio',
'summit',
'vision',
])
) {
if (Arr::get($node->props, 'title_style') === 'heading-xlarge') {
$node->props['title_style'] = 'heading-large';
}
}
if ($style == 'lilian') {
if (Arr::get($node->props, 'title_style') === 'heading-xlarge') {
$node->props['title_style'] = 'heading-2xlarge';
}
}
},
'1.19.0-beta.0.1' => function ($node) {
if (Arr::get($node->props, 'meta_align') === 'top') {
$node->props['meta_align'] = 'above-title';
}
if (Arr::get($node->props, 'meta_align') === 'bottom') {
$node->props['meta_align'] = 'below-title';
}
if (Arr::get($node->props, 'link_style') === 'panel') {
if (Arr::get($node->props, 'panel_style')) {
$node->props['link_type'] = 'element';
} else {
$node->props['link_type'] = 'content';
}
$node->props['link_style'] = 'default';
}
Arr::updateKeys($node->props, ['image_card' => 'panel_image_no_padding']);
},
'1.18.10.3' => function ($node) {
if (Arr::get($node->props, 'meta_align') === 'top') {
if (!empty($node->props['meta_margin'])) {
$node->props['title_margin'] = $node->props['meta_margin'];
}
$node->props['meta_margin'] = '';
}
},
'1.18.10.1' => function ($node) {
Arr::updateKeys($node->props, [
'image_inline_svg' => 'image_svg_inline',
'image_animate_svg' => 'image_svg_animate',
]);
},
'1.18.0' => function ($node) {
if (
!isset($node->props['grid_parallax']) &&
Arr::get($node->props, 'grid_mode') === 'parallax'
) {
$node->props['grid_parallax'] = Arr::get($node->props, 'grid_parallax_y');
}
if (
!isset($node->props['image_box_decoration']) &&
Arr::get($node->props, 'image_box_shadow_bottom') === true
) {
$node->props['image_box_decoration'] = 'shadow';
}
if (
!isset($node->props['meta_color']) &&
Arr::get($node->props, 'meta_style') === 'muted'
) {
$node->props['meta_color'] = 'muted';
$node->props['meta_style'] = '';
}
},
],
];