start_controls_section( 'content_section', [ 'label' => 'Настройки PDF', 'tab' => \Elementor\Controls_Manager::TAB_CONTENT, ] ); $this->add_control( 'pdf_source', [ 'label' => 'Источник PDF', 'type' => \Elementor\Controls_Manager::SELECT, 'default' => 'media', 'options' => [ 'media' => 'Медиафайл', 'dynamic' => 'Динамический', ], ] ); $this->add_control( 'pdf_file', [ 'label' => 'PDF Файл', 'type' => \Elementor\Controls_Manager::MEDIA, 'media_types' => ['application/pdf'], 'default' => [ 'url' => '', 'id' => null, ], 'condition' => [ 'pdf_source' => 'media', ], ] ); $this->add_control( 'pdf_dynamic', [ 'label' => 'Динамический PDF', 'type' => \Elementor\Controls_Manager::TEXT, 'dynamic' => [ 'active' => true, 'categories' => [ \Elementor\Modules\DynamicTags\Module::URL_CATEGORY, \Elementor\Modules\DynamicTags\Module::POST_META_CATEGORY, \Elementor\Modules\DynamicTags\Module::MEDIA_CATEGORY, ], ], 'condition' => [ 'pdf_source' => 'dynamic', ], ] ); $this->add_control( 'show_all_pages', [ 'label' => 'Показать все страницы', 'type' => \Elementor\Controls_Manager::SWITCHER, 'label_on' => 'Да', 'label_off' => 'Нет', 'default' => '', ] ); $this->add_control( 'pages_to_show', [ 'label' => 'Количество страниц для показа', 'type' => \Elementor\Controls_Manager::NUMBER, 'min' => 1, 'max' => 100, 'step' => 1, 'default' => 1, 'condition' => [ 'show_all_pages' => '', ], ] ); $this->add_control( 'pages_layout', [ 'label' => 'Расположение страниц', 'type' => \Elementor\Controls_Manager::SELECT, 'default' => 'horizontal', 'options' => [ 'horizontal' => 'Горизонтально', 'vertical' => 'Вертикально', ], 'condition' => [ 'pages_to_show!' => '1', ], ] ); $this->add_control( 'enable_scrollbar', [ 'label' => 'Включить полосу прокрутки', 'type' => \Elementor\Controls_Manager::SWITCHER, 'label_on' => 'Да', 'label_off' => 'Нет', 'default' => '', 'condition' => [ 'show_all_pages' => 'yes', ], ] ); $this->add_control( 'pdf_file_style', [ 'label' => '', 'type' => \Elementor\Controls_Manager::HIDDEN, 'selectors' => [ '{{WRAPPER}} .elementor-control-media' => 'border: 1px solid #d5dadf; padding: 7px; border-radius: 3px;', '{{WRAPPER}} .elementor-control-media__content' => 'display: flex; align-items: center;', '{{WRAPPER}} .elementor-control-media__preview' => 'height: 40px; width: auto; max-width: 100%; margin-right: 10px;', '{{WRAPPER}} .elementor-control-media-upload-button' => 'margin-right: 10px;', ], ] ); $this->end_controls_section(); $this->start_controls_section( 'style_section', [ 'label' => 'Стили', 'tab' => \Elementor\Controls_Manager::TAB_STYLE, ] ); $this->add_control( 'background_color', [ 'label' => 'Цвет фона', 'type' => \Elementor\Controls_Manager::COLOR, 'default' => '#525659', 'selectors' => [ '{{WRAPPER}} .pdf-viewer-container' => 'background-color: {{VALUE}}', ], ] ); $this->add_responsive_control( 'viewer_width', [ 'label' => 'Ширина виджета', 'type' => \Elementor\Controls_Manager::SLIDER, 'size_units' => ['px', '%'], 'range' => [ 'px' => [ 'min' => 0, 'max' => 2000, 'step' => 1, ], '%' => [ 'min' => 0, 'max' => 100, 'step' => 1, ], ], 'default' => [ 'unit' => '%', 'size' => 100, ], 'selectors' => [ '{{WRAPPER}} .pdf-viewer-widget' => 'width: {{SIZE}}{{UNIT}};', ], ] ); $this->add_group_control( \Elementor\Group_Control_Border::get_type(), [ 'name' => 'border', 'label' => 'Граница', 'selector' => '{{WRAPPER}} .pdf-viewer-container', ] ); $this->add_responsive_control( 'border_radius', [ 'label' => 'Скругление углов', 'type' => \Elementor\Controls_Manager::DIMENSIONS, 'size_units' => ['px', '%'], 'default' => [ 'top' => 4, 'right' => 4, 'bottom' => 4, 'left' => 4, 'unit' => 'px', 'isLinked' => true, ], 'selectors' => [ '{{WRAPPER}} .pdf-viewer-container' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], ] ); $this->add_group_control( \Elementor\Group_Control_Box_Shadow::get_type(), [ 'name' => 'box_shadow', 'label' => 'Тень', 'selector' => '{{WRAPPER}} .pdf-viewer-container', 'fields_options' => [ 'box_shadow_type' => [ 'default' => 'yes', ], 'box_shadow' => [ 'default' => [ 'horizontal' => 0, 'vertical' => 2, 'blur' => 5, 'spread' => 0, 'color' => 'rgba(0,0,0,0.2)', ], ], ], ] ); $this->add_responsive_control( 'padding', [ 'label' => 'Внутренний отступ', 'type' => \Elementor\Controls_Manager::DIMENSIONS, 'size_units' => ['px', 'em', '%'], 'selectors' => [ '{{WRAPPER}} .pdf-pages-container' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'default' => [ 'top' => 20, 'right' => 20, 'bottom' => 20, 'left' => 20, 'unit' => 'px', 'isLinked' => true, ], ] ); $this->end_controls_section(); } protected function render() { $settings = $this->get_settings_for_display(); $pdf_url = ''; if ($settings['pdf_source'] === 'media' && !empty($settings['pdf_file']['url'])) { $pdf_url = $settings['pdf_file']['url']; } elseif ($settings['pdf_source'] === 'dynamic' && !empty($settings['pdf_dynamic'])) { $pdf_url = $settings['pdf_dynamic']; } if (empty($pdf_url)) { echo 'Пожалуйста, выберите PDF файл или настройте динамический источник'; return; } $show_all_pages = $settings['show_all_pages'] === 'yes'; $pages_to_show = $show_all_pages ? 'all' : intval($settings['pages_to_show']); $enable_scrollbar = $settings['enable_scrollbar'] === 'yes'; $pages_layout = $settings['pages_layout']; ?>