Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
subception
/
codemirror
/
widgets
:
calendly.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace ElementPack\Modules\Calendly\Widgets; use Elementor\Plugin; use ElementPack\Base\Module_Base; use Elementor\Controls_Manager; if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly class Calendly extends Module_Base { public function get_name() { return 'bdt-calendly'; } public function get_title() { return BDTEP . esc_html__( 'Calendly', 'bdthemes-element-pack' ); } public function get_icon() { return 'bdt-wi-calendly'; } public function get_categories() { return [ 'element-pack' ]; } public function get_keywords() { return [ 'calendly', 'calender', 'booking', 'booked', 'appointment' ]; } public function get_script_depends() { if ( $this->ep_is_edit_mode() ) { return [ 'calendly', 'ep-scripts' ]; } else { return [ 'calendly' ]; } } public function get_custom_help_url() { return 'https://youtu.be/nl4zC46SrhY'; } protected function is_dynamic_content(): bool { return false; } protected function register_controls() { $this->start_controls_section( 'section_calendly', [ 'label' => esc_html__( 'Calendly', 'bdthemes-element-pack' ), 'tab' => Controls_Manager::TAB_CONTENT, ] ); $this->add_control( 'calendly_username', [ 'label' => esc_html__( 'Username', 'bdthemes-element-pack' ), 'type' => Controls_Manager::TEXT, 'default' => '', 'placeholder' => esc_html__( 'Type calendly username here', 'bdthemes-element-pack' ), 'dynamic' => [ 'active' => true ], 'render_type' => 'template' ] ); $this->add_control( 'calendly_time', [ 'label' => esc_html__( 'Select Time', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SELECT, 'options' => [ '15min' => esc_html__( '15 Minutes', 'bdthemes-element-pack' ), '30min' => esc_html__( '30 Minutes', 'bdthemes-element-pack' ), '60min' => esc_html__( '60 Minutes', 'bdthemes-element-pack' ), '' => esc_html__( 'All', 'bdthemes-element-pack' ), ], 'default' => '15min' ] ); $this->add_control( 'event_type_details', [ 'label' => esc_html__( 'Hide Event Type Details', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SWITCHER, ] ); $this->add_responsive_control( 'height', [ 'label' => esc_html__( 'Height', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SLIDER, 'size_units' => [ 'px', '%' ], 'range' => [ 'px' => [ 'min' => 10, 'max' => 1000, 'step' => 5, ], '%' => [ 'min' => 5, 'max' => 100, ], ], 'default' => [ 'unit' => 'px', 'size' => '680', ], 'selectors' => [ '{{WRAPPER}} .calendly-inline-widget' => 'height: {{SIZE}}{{UNIT}};', '{{WRAPPER}} .calendly-wrapper' => 'height: {{SIZE}}{{UNIT}};', ], ] ); $this->end_controls_section(); $this->start_controls_section( 'section_style_calendly', [ 'label' => esc_html__( 'Calendly', 'bdthemes-element-pack' ), 'tab' => Controls_Manager::TAB_STYLE, ] ); $this->add_control( 'calendly_pro_notice', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => sprintf( esc_html__( 'Style option only works with %s. Basic plan user can\'t change the color style. For more details please %s.', 'bdthemes-element-pack' ), '<a href="https://calendly.com/pages/pricing" target="_blank">Calendly Pro plan</a>', '<a href="https://calendly.com/pages/pricing" target="_blank">check here</a>' ), 'content_classes' => 'elementor-panel-alert elementor-panel-alert-warning', ] ); $this->add_control( 'text_color', [ 'label' => esc_html__( 'Text Color', 'bdthemes-element-pack' ), 'type' => Controls_Manager::COLOR, 'alpha' => false, ] ); $this->add_control( 'button_link_color', [ 'label' => esc_html__( 'Button & Link Color', 'bdthemes-element-pack' ), 'type' => Controls_Manager::COLOR, 'alpha' => false, ] ); $this->add_control( 'background_color', [ 'label' => esc_html__( 'Background Color', 'bdthemes-element-pack' ), 'type' => Controls_Manager::COLOR, 'alpha' => false, ] ); $this->end_controls_section(); } protected function render() { $settings = $this->get_settings_for_display(); $calendly_time = $settings['calendly_time'] != '' ? "/{$settings['calendly_time']}" : ''; $calendly_event = ''; if ( 'yes' === $settings['event_type_details'] ) { $calendly_event = 'hide_event_type_details=1'; } $parameters = [ 'text_color' => ( $settings['text_color'] ) ? str_replace( '#', '', $settings['text_color'] ) : null, 'primary_color' => ( $settings['button_link_color'] ) ? str_replace( '#', '', $settings['button_link_color'] ) : null, 'background_color' => ( $settings['background_color'] ) ? str_replace( '#', '', $settings['background_color'] ) : null, ]; $requestUrl = 'https://calendly.com/'; $requestUrl .= esc_html( $settings['calendly_username'] ); $requestUrl .= esc_attr( $calendly_time ); $requestUrl .= '/?'; $requestUrl .= esc_attr( $calendly_event ); $final_url = $requestUrl . http_build_query( $parameters ); ?> <?php if ( ! empty( $settings['calendly_username'] ) ) : ?> <div class="calendly-inline-widget" data-url="<?php echo esc_url( $final_url ); ?>" style="min-width:320px;"></div> <script type="text/javascript" src="https://assets.calendly.com/assets/external/widget.js"></script> <?php if ( Plugin::$instance->editor->is_edit_mode() ) : ?> <div class="calendly-wrapper" style="width:100%; position:absolute; top:0; left:0; z-index:100;"></div> <?php endif; ?> <?php endif; ?> <?php } }