control_groups['buyButton'] = [ 'title' => esc_html__('Direct Buy Button', 'fluent-cart'), 'tab' => 'content', ]; $this->control_groups['cartButton'] = [ 'title' => esc_html__('Add to Cart Button', 'fluent-cart'), 'tab' => 'content', ]; } public function set_controls() { $this->controls['queryType'] = [ 'tab' => 'content', 'type' => 'select', 'label' => esc_html__('Query Type', 'fluent-cart'), 'options' => [ 'default' => esc_html__('Default', 'fluent-cart'), 'custom' => esc_html__('Custom', 'fluent-cart'), ], 'default' => 'default', 'inline' => true, ]; $this->controls['productId'] = [ 'tab' => 'content', 'type' => 'select', 'label' => esc_html__('Product', 'fluent-cart'), 'options' => BricksLoader::getProductOptions(), 'placeholder' => esc_html__('Select a product', 'fluent-cart'), 'searchable' => true, 'rerender' => true, 'required' => ['queryType', '=', 'custom'], ]; $this->controls['manualProductId'] = [ 'tab' => 'content', 'type' => 'text', 'label' => esc_html__('Manual Product ID', 'fluent-cart'), 'description' => esc_html__('Use this if the product is not available in dropdown.', 'fluent-cart'), 'required' => [['queryType', '=', 'custom'], ['productId', '=', '']], ]; // BUTTONS $this->controls['buttonInfo'] = [ 'tab' => 'content', 'group' => 'cartButton', 'type' => 'info', 'content' => esc_html__('Add to Cart Button will be shown only for non-subscribable products.', 'fluent-cart'), ]; $this->controls['buttonText'] = [ 'tab' => 'content', 'group' => 'cartButton', 'type' => 'text', 'inline' => true, 'label' => esc_html__('Button Text', 'fluent-cart'), 'placeholder' => esc_html__('Add To Cart', 'fluent-cart'), ]; $this->controls['buttonMargin'] = [ 'tab' => 'content', 'group' => 'cartButton', 'label' => esc_html__('Buttons Margin', 'fluent-cart'), 'type' => 'spacing', 'css' => [ [ 'selector' => '.fct-product-buttons-wrap .fluent-cart-add-to-cart-button', 'property' => 'margin', ], ], ]; $this->controls['buttonPadding'] = [ 'tab' => 'content', 'group' => 'cartButton', 'label' => esc_html__('Padding', 'fluent-cart'), 'type' => 'spacing', 'css' => [ [ 'selector' => '.fct-product-buttons-wrap .fluent-cart-add-to-cart-button', 'property' => 'padding', ], ], ]; $this->controls['buttonWidth'] = [ 'tab' => 'content', 'group' => 'cartButton', 'label' => esc_html__('Width', 'fluent-cart'), 'type' => 'number', 'units' => true, 'css' => [ [ 'selector' => '.fct-product-buttons-wrap .fluent-cart-add-to-cart-button', 'property' => 'min-width', ], ], ]; $this->controls['buttonBackgroundColor'] = [ 'tab' => 'content', 'group' => 'cartButton', 'label' => esc_html__('Background color', 'fluent-cart'), 'type' => 'color', 'css' => [ [ 'selector' => '.fct-product-buttons-wrap .fluent-cart-add-to-cart-button', 'property' => 'background-color', ], ], ]; $this->controls['buttonBorder'] = [ 'tab' => 'content', 'group' => 'cartButton', 'label' => esc_html__('Border', 'fluent-cart'), 'type' => 'border', 'css' => [ [ 'property' => 'border', 'selector' => '.fct-product-buttons-wrap .fluent-cart-add-to-cart-button', ], ], ]; $this->controls['buttonTypography'] = [ 'tab' => 'content', 'group' => 'cartButton', 'label' => esc_html__('Typography', 'fluent-cart'), 'type' => 'typography', 'css' => [ [ 'selector' => '.fct-product-buttons-wrap .', 'property' => 'font', ], ], ]; $this->controls['icon'] = [ 'tab' => 'content', 'group' => 'cartButton', 'label' => esc_html__('Icon', 'fluent-cart'), 'type' => 'icon', 'rerender' => true, ]; $this->controls['iconTypography'] = [ 'tab' => 'content', 'group' => 'cartButton', 'label' => esc_html__('Icon typography', 'fluent-cart'), 'type' => 'typography', 'css' => [ [ 'property' => 'font', 'selector' => '.icon', ], ], ]; $this->controls['iconOnly'] = [ 'tab' => 'content', 'group' => 'cartButton', 'label' => esc_html__('Icon only', 'fluent-cart'), 'type' => 'checkbox', 'inline' => true, 'placeholder' => esc_html__('Yes', 'fluent-cart'), 'required' => ['icon', '!=', ''], ]; $this->controls['iconPosition'] = [ 'tab' => 'content', 'group' => 'cartButton', 'label' => esc_html__('Icon position', 'fluent-cart'), 'type' => 'select', 'options' => $this->control_options['iconPosition'], 'inline' => true, 'placeholder' => esc_html__('Left', 'fluent-cart'), 'required' => [ ['icon', '!=', ''], ['iconOnly', '=', ''], ], ]; // Buy Now BUTTON $this->controls['directButtonText'] = [ 'tab' => 'content', 'group' => 'buyButton', 'type' => 'text', 'inline' => true, 'label' => esc_html__('Button Text', 'fluent-cart'), 'placeholder' => esc_html__('Buy Now', 'fluent-cart'), ]; $this->controls['directButtonMargin'] = [ 'tab' => 'content', 'group' => 'buyButton', 'label' => esc_html__('Buttons Margin', 'fluent-cart'), 'type' => 'spacing', 'css' => [ [ 'selector' => '.fct-product-buttons-wrap .fluent-cart-direct-checkout-button', 'property' => 'margin', ], ], ]; $this->controls['directButtonPadding'] = [ 'tab' => 'content', 'group' => 'buyButton', 'label' => esc_html__('Padding', 'fluent-cart'), 'type' => 'spacing', 'css' => [ [ 'selector' => '.fct-product-buttons-wrap .fluent-cart-direct-checkout-button', 'property' => 'padding', ], ], ]; $this->controls['directButtonWidth'] = [ 'tab' => 'content', 'group' => 'buyButton', 'label' => esc_html__('Width', 'fluent-cart'), 'type' => 'number', 'units' => true, 'css' => [ [ 'selector' => '.fct-product-buttons-wrap .fluent-cart-direct-checkout-button', 'property' => 'min-width', ], ], ]; $this->controls['directButtonBackgroundColor'] = [ 'tab' => 'content', 'group' => 'buyButton', 'label' => esc_html__('Background color', 'fluent-cart'), 'type' => 'color', 'css' => [ [ 'selector' => '.fct-product-buttons-wrap .fluent-cart-direct-checkout-button', 'property' => 'background-color', ], ], ]; $this->controls['directButtonBorder'] = [ 'tab' => 'content', 'group' => 'buyButton', 'label' => esc_html__('Border', 'fluent-cart'), 'type' => 'border', 'css' => [ [ 'property' => 'border', 'selector' => '.fct-product-buttons-wrap .fluent-cart-direct-checkout-button', ], ], ]; $this->controls['directButtonTypography'] = [ 'tab' => 'content', 'group' => 'buyButton', 'label' => esc_html__('Typography', 'fluent-cart'), 'type' => 'typography', 'css' => [ [ 'selector' => '.fct-product-buttons-wrap .fluent-cart-direct-checkout-button', 'property' => 'font', ], ], ]; $this->controls['directButtonIcon'] = [ 'tab' => 'content', 'group' => 'buyButton', 'label' => esc_html__('Icon', 'fluent-cart'), 'type' => 'icon', 'rerender' => true, ]; $this->controls['directButtonIconTypography'] = [ 'tab' => 'content', 'group' => 'buyButton', 'label' => esc_html__('Icon typography', 'fluent-cart'), 'type' => 'typography', 'css' => [ [ 'property' => 'font', 'selector' => '.icon', ], ], ]; $this->controls['directButtonIconOnly'] = [ 'tab' => 'content', 'group' => 'buyButton', 'label' => esc_html__('Icon only', 'fluent-cart'), 'type' => 'checkbox', 'inline' => true, 'placeholder' => esc_html__('Yes', 'fluent-cart'), 'required' => ['directButtonIcon', '!=', ''], ]; $this->controls['directButtonIconPosition'] = [ 'tab' => 'content', 'group' => 'buyButton', 'label' => esc_html__('Icon position', 'fluent-cart'), 'type' => 'select', 'options' => $this->control_options['iconPosition'], 'inline' => true, 'placeholder' => esc_html__('Left', 'fluent-cart'), 'required' => [ ['directButtonIcon', '!=', ''], ['directButtonIconOnly', '=', ''], ], ]; } public function render() { $settings = $this->settings; $queryType = $settings['queryType'] ?? 'default'; if ($queryType === 'default') { $productId = $this->post_id; } else { $productId = !empty($settings['productId']) ? \intval($settings['productId']) : 0; $manualProductId = !empty($settings['manualProductId']) ? \intval($settings['manualProductId']) : 0; if (!$productId && $manualProductId) { $productId = $manualProductId; } } $product = ProductDataSetup::getProductModel($productId); if (!$product) { return $this->render_element_placeholder([ 'title' => esc_html__('Select a product', 'fluent-cart'), ]); } ?>