'; } public static function get_svg_pinterest_icon() { return ''; } public static function get_svg_linkedin_icon() { return ' '; } public static function get_svg_twitter_icon() { return ' '; } public static function get_svg_whatsapp_icon() { return ''; } public static function get_svg_facebook_icon() { return ' '; } public static function get_svg_copy_icon() { return ''; } public static function get_svg_checked_icon() { return ''; } public static function get_copy_button( $args = [] ) { $show_icon = isset( $args['show_icon'] ) ? $args['show_icon'] : 'yes'; $with_icon = 'yes' === $show_icon ? 'with-icon' : 'without-icon'; $as_raw = isset( $args['as_raw'] ) ? 'yes' : ''; $button_text = isset( $args['button_text'] ) ? $args['button_text'] : esc_html__( 'Copy to Clipboard', 'copy-the-code' ); $button_class = isset( $args['button_class'] ) ? $args['button_class'] : ''; $button_text_copied = isset( $args['button_text_copied'] ) ? $args['button_text_copied'] : esc_html__( 'Copied!', 'copy-the-code' ); $icon_direction = isset( $args['icon_direction'] ) ? $args['icon_direction'] : 'before'; ob_start(); ?> post_content, '[' . $shortcode ) !== false ) { $found = true; } return $found; } /** * Get categories * * @since 3.2.0 */ public static function get_categories() { return [ 'copy-the-code', 'basic' ]; } /** * Get common keywords * * @param array $keywords New keywords. * @since 3.2.0 */ public static function get_keywords( $keywords = [] ) { $default = [ 'copy', 'paste', 'clipboard', 'copy clipboard', 'copy to clipboard', 'copy anything to clipboard' ]; return array_merge( $default, $keywords ); } /** * Register "Copy Content" Section * * @param object $self */ public static function register_copy_content_section( $self, $args = [] ) { $self->start_controls_section( 'copy_content_section', [ 'label' => esc_html__( 'Content to Copy', 'copy-the-code' ), ] ); if ( isset( $args['before_controls'] ) ) { foreach ( $args['before_controls'] as $control_id => $options ) { $self->add_control( $control_id, $options ); } } $self->add_control( 'have_selector', [ 'label' => esc_html__( 'Have Selector?', 'copy-the-code' ), 'type' => Controls_Manager::SWITCHER, 'label_on' => esc_html__( 'Yes', 'copy-the-code' ), 'label_off' => esc_html__( 'No', 'copy-the-code' ), 'return_value' => 'yes', 'default' => 'no', ] ); $self->add_control( 'selector', [ 'label' => esc_html__( 'Selector', 'copy-the-code' ), 'type' => Controls_Manager::TEXT, 'default' => '', 'condition' => [ 'have_selector' => 'yes', ], ] ); $self->add_control( 'copy_content', [ 'label' => isset( $args['label'] ) ? $args['label'] : esc_html__( 'Enter Text that Copy to Clipboard', 'copy-the-code' ), 'type' => Controls_Manager::TEXTAREA, 'default' => isset( $args['default'] ) ? $args['default'] : '', 'rows' => 10, 'condition' => [ 'have_selector' => [ 'no', '' ], ], ] ); if ( isset( $args['after_controls'] ) ) { foreach ( $args['after_controls'] as $control_id => $options ) { $self->add_control( $control_id, $options ); } } $self->end_controls_section(); } /** * Register "Copy Button" Section * * @param array $args * @param object $self */ public static function register_copy_button_section( $self, $args = [] ) { $default = [ 'button_text' => isset( $args['button_text'] ) ? $args['button_text'] : esc_html__( 'Copy to Clipboard', 'copy-the-code' ), 'button_text_copied' => isset( $args['button_text_copied'] ) ? $args['button_text_copied'] : esc_html__( 'Copied!', 'copy-the-code' ), 'show_icon' => 'yes', 'icon_direction' => 'before', ]; $self->start_controls_section( 'copy_button_section', [ 'label' => esc_html__( 'Copy Button', 'copy-the-code' ), ] ); $self->add_control( 'copy_button_text', [ 'label' => esc_html__( 'Button Text', 'copy-the-code' ), 'type' => Controls_Manager::TEXT, 'default' => $default['button_text'], ] ); $self->add_control( 'copy_button_text_copied', [ 'label' => esc_html__( 'After Copy Text', 'copy-the-code' ), 'type' => Controls_Manager::TEXT, 'default' => $default['button_text_copied'], ] ); // Alignment. $self->add_responsive_control( 'copy_button_align', [ 'label' => esc_html__( 'Alignment', 'copy-the-code' ), 'type' => Controls_Manager::CHOOSE, 'options' => [ 'left' => [ 'title' => esc_html__( 'Left', 'copy-the-code' ), 'icon' => 'eicon-text-align-left', ], 'center' => [ 'title' => esc_html__( 'Center', 'copy-the-code' ), 'icon' => 'eicon-text-align-center', ], 'right' => [ 'title' => esc_html__( 'Right', 'copy-the-code' ), 'icon' => 'eicon-text-align-right', ], ], 'selectors' => [ '{{WRAPPER}} .ctc-block-actions' => 'text-align: {{VALUE}};', ], ] ); // Show Icon. $self->add_control( 'copy_show_icon', [ 'label' => esc_html__( 'Show Icon', 'copy-the-code' ), 'type' => Controls_Manager::SWITCHER, 'label_on' => esc_html__( 'Show', 'copy-the-code' ), 'label_off' => esc_html__( 'Hide', 'copy-the-code' ), 'return_value' => 'yes', 'default' => 'yes', ] ); $self->add_control( 'copy_icon_direction', [ 'label' => esc_html__( 'Icon Direction', 'copy-the-code' ), 'type' => Controls_Manager::SELECT, 'default' => 'before', 'options' => [ 'before' => esc_html__( 'Before', 'copy-the-code' ), 'after' => esc_html__( 'After', 'copy-the-code' ), ], 'condition' => [ 'copy_show_icon' => 'yes', ], ] ); $self->add_responsive_control( 'copy_icon_text_gap', [ 'label' => esc_html__( 'Icon and Text Gap', 'copy-the-code' ), 'type' => Controls_Manager::SLIDER, 'size_units' => [ 'px', 'em' ], 'range' => [ 'px' => [ 'min' => 0, 'max' => 100, ], 'em' => [ 'min' => 0, 'max' => 10, ], ], 'selectors' => [ '{{WRAPPER}} .ctc-with-icon' => 'gap: {{SIZE}}{{UNIT}};', ], 'condition' => [ 'copy_show_icon' => 'yes', ], ] ); $self->end_controls_section(); } /** * Register "Copy Button Style" Section * * @param object $self */ public static function register_copy_button_style_section( $self ) { self::register_style_section( $self, 'Copy Button', '.ctc-block-copy', [ 'text_align' => false, 'normal_text_color' => [ 'selectors' => [ '{{WRAPPER}} .ctc-block-copy' => 'color: {{VALUE}};', '{{WRAPPER}} .ctc-block-copy svg' => 'fill: {{VALUE}};', ], ], 'hover_text_color' => [ 'selectors' => [ '{{WRAPPER}} .ctc-block-copy:hover' => 'color: {{VALUE}};', '{{WRAPPER}} .ctc-block-copy:hover svg' => 'fill: {{VALUE}};', ], ], ] ); } /** * Render "Copy Button" * * @param object $self */ public static function render_copy_button( $self ) { $button_text = $self->get_settings_for_display( 'copy_button_text' ); $button_text_copied = $self->get_settings_for_display( 'copy_button_text_copied' ); $show_icon = $self->get_settings_for_display( 'copy_show_icon' ); $icon_direction = $self->get_settings_for_display( 'copy_icon_direction' ); echo self::get_copy_button( [ 'as_raw' => 'yes', 'button_text' => $button_text, 'button_text_copied' => $button_text_copied, 'icon_direction' => $icon_direction, 'show_icon' => $show_icon, ] ); } /** * Render "Copy Content" * * @param object $self * @param array $args */ public static function render_copy_content( $self, $args = [] ) { $selection_target = ''; $content = isset( $args['content'] ) ? $args['content'] : $self->get_settings_for_display( 'copy_content' ); $have_selector = $self->get_settings_for_display( 'have_selector' ); if ( 'yes' === $have_selector ) { $selection_target = $self->get_settings_for_display( 'selector' ); } ?> start_controls_section( $id . '_box', [ 'label' => $label . ' (Pro)', 'tab' => Controls_Manager::TAB_STYLE, ] ); // Buy pro. $self->add_control( $id . '_box_content', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => '

Unlock Premium Features!

Upgrade to Clipboard Pro for enhanced functionality and exclusive benefits.

Ready to level up your experience?

See Pricing Plans
', ] ); $self->end_controls_section(); } /** * Register "Get Pro" Sections * * @param object $self * @param array $labels */ public static function register_pro_sections( $self, $labels = [] ) { foreach ( $labels as $label ) { self::register_pro_section( $self, $label ); } } /** * Register normal and hover styles. * * @param object $self * @param string $label * @param array $args */ public static function register_style_section( $self, $label = '', $selector = '', $args = [] ) { $id = 'reusable-' . sanitize_title_with_dashes( $label ); $size = isset( $args['size'] ) ? $args['size'] : false; $text_decoration = isset( $args['text_decoration'] ) ? $args['text_decoration'] : false; $margin = isset( $args['margin'] ) ? $args['margin'] : true; $padding = isset( $args['padding'] ) ? $args['padding'] : true; $border = isset( $args['border'] ) ? $args['border'] : false; // Disabled. $border_radius = isset( $args['border_radius'] ) ? $args['border_radius'] : true; $background = isset( $args['background'] ) ? $args['background'] : false; // Disabled. $text_color = isset( $args['text_color'] ) ? $args['text_color'] : false; // Disabled. $typography = isset( $args['typography'] ) ? $args['typography'] : true; $text_align = isset( $args['text_align'] ) ? $args['text_align'] : true; $box_shadow = isset( $args['box_shadow'] ) ? $args['box_shadow'] : false; // Disabled. $tabs = isset( $args['tabs'] ) ? $args['tabs'] : true; $normal_background = isset( $args['normal_background'] ) ? $args['normal_background'] : true; $normal_text_color = isset( $args['normal_text_color'] ) ? $args['normal_text_color'] : true; $normal_typography = isset( $args['normal_typography'] ) ? $args['normal_typography'] : false; // Disabled. $normal_border = isset( $args['normal_border'] ) ? $args['normal_border'] : true; $normal_box_shadow = isset( $args['normal_box_shadow'] ) ? $args['normal_box_shadow'] : true; // Section. $self->start_controls_section( $id . '_style_section', [ 'label' => $label, 'tab' => Controls_Manager::TAB_STYLE, ] ); if ( $margin ) : $self->add_responsive_control( $id . '_margin', [ 'label' => esc_html__( 'Margin', 'copy-the-code' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} ' . $selector => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], ] ); endif; if ( $padding ) : $self->add_responsive_control( $id . '_padding', [ 'label' => esc_html__( 'Padding', 'copy-the-code' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} ' . $selector => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], ] ); endif; if ( $border ) : $border_selector = '{{WRAPPER}} ' . $selector; if ( isset( $args['border'] ) && is_array( $args['border'] ) ) { if ( isset( $args['border']['selector'] ) ) { $border_selector = $args['border']['selector']; } } $self->add_group_control( Group_Control_Border::get_type(), [ 'name' => $id . '_border', 'selector' => $border_selector, ] ); endif; if ( $border_radius ) : $self->add_responsive_control( $id . '_border_radius', [ 'label' => esc_html__( 'Border Radius', 'copy-the-code' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', '%' ], 'selectors' => [ '{{WRAPPER}} ' . $selector => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], ] ); endif; if ( $background ) : $self->add_group_control( Group_Control_Background::get_type(), [ 'name' => $id . '_background', 'types' => [ 'classic', 'gradient', 'image', 'video' ], 'selector' => '{{WRAPPER}} ' . $selector, ] ); endif; if ( $text_color ) : $self->add_control( $id . '_text_color', [ 'label' => esc_html__( 'Text Color', 'copy-the-code' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} ' . $selector => 'color: {{VALUE}};', ], ] ); endif; if ( $typography ) : $self->add_group_control( Group_Control_Typography::get_type(), [ 'name' => $id . '_typography', 'selector' => '{{WRAPPER}} ' . $selector, ] ); endif; if ( $size ) : $size_label = esc_html__( 'Width', 'copy-the-code' ); $size_selectors = [ '{{WRAPPER}} ' . $selector => 'width: {{SIZE}}{{UNIT}};', ]; if ( isset( $args['size'] ) && is_array( $args['size'] ) ) { if ( isset( $args['size']['selectors'] ) ) { $size_selectors = $args['size']['selectors']; } if ( isset( $args['size']['label'] ) ) { $size_label = $args['size']['label']; } } $self->add_responsive_control( $id . '_size', [ 'label' => $size_label, 'type' => Controls_Manager::SLIDER, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => $size_selectors, ] ); endif; if ( $text_decoration ) : $text_decoration_selectors = [ '{{WRAPPER}} ' . $selector => 'text-decoration: {{VALUE}};', ]; if ( isset( $args['text_decoration'] ) && is_array( $args['text_decoration'] ) ) { if ( isset( $args['text_decoration']['selectors'] ) ) { $text_decoration_selectors = $args['text_decoration']['selectors']; } } $self->add_control( $id . '_text_decoration', [ 'label' => esc_html__( 'Text Decoration', 'copy-the-code' ), 'type' => Controls_Manager::SELECT, 'options' => [ 'none' => esc_html__( 'None', 'copy-the-code' ), 'underline' => esc_html__( 'Underline', 'copy-the-code' ), 'overline' => esc_html__( 'Overline', 'copy-the-code' ), 'line-through' => esc_html__( 'Line Through', 'copy-the-code' ), ], 'selectors' => $text_decoration_selectors, ] ); endif; if ( $text_align ) : $self->add_responsive_control( $id . '_text_align', [ 'label' => esc_html__( 'Alignment', 'copy-the-code' ), 'type' => Controls_Manager::CHOOSE, 'options' => [ 'left' => [ 'title' => esc_html__( 'Left', 'copy-the-code' ), 'icon' => 'eicon-text-align-left', ], 'center' => [ 'title' => esc_html__( 'Center', 'copy-the-code' ), 'icon' => 'eicon-text-align-center', ], 'right' => [ 'title' => esc_html__( 'Right', 'copy-the-code' ), 'icon' => 'eicon-text-align-right', ], ], 'selectors' => [ '{{WRAPPER}} ' . $selector => 'text-align: {{VALUE}};', ], ] ); endif; if ( $box_shadow ) : $self->add_group_control( Group_Control_Box_Shadow::get_type(), [ 'name' => $id . '_box_shadow', 'selector' => '{{WRAPPER}} ' . $selector, ] ); endif; if ( $tabs ) : // Tabs. $self->start_controls_tabs( $id . '_style_tabs' ); // Normal. $self->start_controls_tab( $id . '_style_normal_tab', [ 'label' => esc_html__( 'Normal', 'copy-the-code' ), ] ); if ( $normal_background ) : $self->add_group_control( Group_Control_Background::get_type(), [ 'name' => $id . '_normal_background', 'types' => [ 'classic', 'gradient', 'image', 'video' ], 'selector' => '{{WRAPPER}} ' . $selector, ] ); endif; if ( $normal_text_color ) : $normal_text_color_label = esc_html__( 'Text Color', 'copy-the-code' ); $normal_text_color_selectors = [ '{{WRAPPER}} ' . $selector => 'color: {{VALUE}};', ]; if ( isset( $args['normal_text_color'] ) && is_array( $args['normal_text_color'] ) ) { if ( isset( $args['normal_text_color']['selectors'] ) ) { $normal_text_color_selectors = $args['normal_text_color']['selectors']; } if ( isset( $args['normal_text_color']['label'] ) ) { $normal_text_color_label = $args['normal_text_color']['label']; } } $self->add_control( $id . '_normal_text_color', [ 'label' => $normal_text_color_label, 'type' => Controls_Manager::COLOR, 'selectors' => $normal_text_color_selectors, ] ); endif; if ( $normal_typography ) : $self->add_group_control( Group_Control_Typography::get_type(), [ 'name' => $id . '_normal_typography', 'selector' => '{{WRAPPER}} ' . $selector, ] ); endif; if ( $normal_border ) : $self->add_group_control( Group_Control_Border::get_type(), [ 'name' => $id . '_normal_border', 'default' => 'red', 'selector' => '{{WRAPPER}} ' . $selector, ] ); endif; if ( $normal_box_shadow ) : $self->add_group_control( Group_Control_Box_Shadow::get_type(), [ 'name' => $id . '_normal_box_shadow', 'selector' => '{{WRAPPER}} ' . $selector, ] ); endif; $self->end_controls_tab(); // Normal End. // Hover. $self->start_controls_tab( $id . '_style_hover_tab', [ 'label' => esc_html__( 'Hover', 'copy-the-code' ), ] ); if ( $normal_background ) : $self->add_group_control( Group_Control_Background::get_type(), [ 'name' => $id . '_hover_background', 'types' => [ 'classic', 'gradient', 'image', 'video' ], 'selector' => '{{WRAPPER}} ' . $selector . ':hover', ] ); endif; if ( $normal_text_color ) : $hover_text_color_label = esc_html__( 'Text Color', 'copy-the-code' ); $hover_text_color_selectors = [ '{{WRAPPER}} ' . $selector => 'color: {{VALUE}};', ]; if ( isset( $args['hover_text_color'] ) && is_array( $args['hover_text_color'] ) ) { if ( isset( $args['hover_text_color']['selectors'] ) ) { $hover_text_color_selectors = $args['hover_text_color']['selectors']; } if ( isset( $args['hover_text_color']['label'] ) ) { $hover_text_color_label = $args['hover_text_color']['label']; } } $self->add_control( $id . '_hover_text_color', [ 'label' => $hover_text_color_label, 'type' => Controls_Manager::COLOR, 'selectors' => $hover_text_color_selectors, ] ); endif; if ( $normal_border ) : $self->add_control( $id . '_hover_border', [ 'label' => esc_html__( 'Border Color', 'copy-the-code' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} ' . $selector . ':hover' => 'border-color: {{VALUE}};', ], ] ); endif; if ( $normal_box_shadow ) : $self->add_group_control( Group_Control_Box_Shadow::get_type(), [ 'name' => $id . '_hover_box_shadow', 'selector' => '{{WRAPPER}} ' . $selector . ':hover', ] ); endif; $self->end_controls_tab(); // Hover End. $self->end_controls_tabs(); // Tabs. endif; $self->end_controls_section(); // Section End. } }