PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 3.0.0-beta1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v3.0.0-beta1
4.7.0 4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.0 4.5.1 4.5.0 4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / Integrations / Bricks / Elements / Media.php
surecart / app / src / Integrations / Bricks / Elements Last commit date
BuyButton.php 2 years ago CollectionTag.php 2 years ago CollectionTags.php 2 years ago Media.php 2 years ago PriceChoiceTemplate.php 2 years ago PriceChooser.php 2 years ago PriceData.php 2 years ago Product.php 2 years ago ProductCard.php 2 years ago ProductData.php 2 years ago Quantity.php 2 years ago SaleBadge.php 2 years ago SelectedPriceAdHocAmount.php 2 years ago VariantPill.php 2 years ago VariantPills.php 2 years ago
Media.php
133 lines
1 <?php
2
3 namespace SureCart\Integrations\Bricks\Elements;
4
5 use SureCart\Integrations\Bricks\Concerns\ConvertsBlocks;
6
7 if ( ! defined( 'ABSPATH' ) ) {
8 exit; // Exit if accessed directly.
9 }
10
11 /**
12 * Media element.
13 */
14 class Media extends \Bricks\Element {
15 use ConvertsBlocks; // we have to use a trait since we can't extend the surecart class.
16
17 /**
18 * Element category.
19 *
20 * @var string
21 */
22 public $category = 'SureCart Elements';
23
24 /**
25 * Element name.
26 *
27 * @var string
28 */
29 public $name = 'surecart-product-media';
30
31 /**
32 * Element block name.
33 *
34 * @var string
35 */
36 public $block_name = 'surecart/product-media';
37
38 /**
39 * Element icon.
40 *
41 * @var string
42 */
43 public $icon = 'ti-layout-slider-alt';
44
45 /**
46 * Get element label.
47 *
48 * @return string
49 */
50 public function get_label() {
51 return esc_html__( 'Product media', 'surecart' );
52 }
53
54 /**
55 * Set controls.
56 *
57 * @return void
58 */
59 public function set_controls() {
60 $this->controls['auto_height'] = [
61 'tab' => 'content',
62 'label' => esc_html__( 'Auto height', 'surecart' ),
63 'type' => 'checkbox',
64 'inline' => true,
65 'fullAccess' => true,
66 'default' => true,
67 ];
68
69 $this->controls['height'] = [
70 'tab' => 'content',
71 'label' => esc_html__( 'Height', 'surecart' ),
72 'type' => 'number',
73 'units' => true,
74 'default' => '310px',
75 'placeholder' => '310px',
76 'required' => [
77 [ 'auto_height', '!=', true ],
78 ],
79 'fullAccess' => true,
80 ];
81
82 $this->controls['max_image_width'] = [
83 'tab' => 'content',
84 'label' => esc_html__( 'Max image width', 'surecart' ),
85 'type' => 'number',
86 'units' => true,
87 'placeholder' => esc_html__( 'Unlimited', 'surecart' ),
88 ];
89
90 $this->controls['thumbnails_per_page'] = [
91 'tab' => 'content',
92 'label' => esc_html__( 'Thumbs per page', 'surecart' ),
93 'type' => 'number',
94 'default' => 5,
95 'min' => 2,
96 'placeholder' => 5,
97 ];
98 }
99
100 /**
101 * Render element.
102 *
103 * @return void
104 */
105 public function render() {
106 $product = sc_get_product();
107
108 if ( $this->is_admin_editor() && 1 < count( ( $product->gallery ?? [] ) ) ) {
109 $content = '<img src="' . esc_url( trailingslashit( \SureCart::core()->assets()->getUrl() ) . 'images/placeholder.jpg' ) . '"';
110 $content .= ' style="' . ( ! empty( $this->settings['max_image_width'] ) ? 'max-width:' . esc_attr( $this->settings['max_image_width'] ) : '' ) . '"';
111 $content .= ' alt="' . esc_attr( get_the_title() ) . '" />';
112 $content .= '<div class="bricks-element-placeholder" data-type="info" draggable="false"><i class="ti-layout-slider-alt"></i><div class="placeholder-inner"><div class="placeholder-description">' . __( 'The accurate preview for this element is only available on frontend due to compatibility issues.', 'surecart' ) . '</div></div></div>';
113
114 echo $this->preview( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
115 $content,
116 '',
117 'figure'
118 );
119
120 return;
121 }
122
123 echo $this->html( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
124 [
125 'auto_height' => (bool) ! empty( $this->settings['auto_height'] ),
126 'height' => esc_html( $this->settings['height'] ),
127 'width' => esc_html( $this->settings['max_image_width'] ?? null ),
128 'thumbnails_per_page' => ! empty( $this->settings['thumbnails_per_page'] ) ? (int) $this->settings['thumbnails_per_page'] : null,
129 ]
130 );
131 }
132 }
133