文件操作 - widget.php
返回文件管理
返回主菜单
删除本文件
文件: /root/Desktop/OLD/plugin-wordpress/happy-elementor-addons/widgets/icon-box/widget.php
编辑文件内容
<?php /** * Icon Box widget class * * @package Happy_Addons */ namespace Happy_Addons\Elementor\Widget; use Elementor\Controls_Manager; use Elementor\Group_Control_Border; use Elementor\Group_Control_Box_Shadow; use Elementor\Group_Control_Text_Shadow; use Elementor\Group_Control_Typography; use Elementor\Scheme_Typography; use Happy_Addons\Elementor\Icons_Manager; defined( 'ABSPATH' ) || die(); class Icon_Box extends Base { /** * Get widget title. * * @since 1.0.0 * @access public * * @return string Widget title. */ public function get_title() { return __( 'Icon Box', 'happy-elementor-addons' ); } public function get_custom_help_url() { return 'https://happyaddons.com/docs/happy-addons-for-elementor/widgets/icon-box/'; } /** * Get widget icon. * * @since 1.0.0 * @access public * * @return string Widget icon. */ public function get_icon() { return 'hm hm-icon-box'; } public function get_keywords() { return [ 'info', 'box', 'icon' ]; } protected function register_content_controls() { $this->start_controls_section( '_section_icon', [ 'label' => __( 'Content', 'happy-elementor-addons' ), 'tab' => Controls_Manager::TAB_CONTENT, ] ); if ( ha_is_elementor_version( '<', '2.6.0' ) ) { $this->add_control( 'icon', [ 'show_label' => false, 'type' => Controls_Manager::ICON, 'label_block' => true, 'options' => ha_get_happy_icons(), 'default' => 'fa fa-smile-o', ] ); } else { $this->add_control( 'selected_icon', [ 'show_label' => false, 'type' => Controls_Manager::ICONS, 'fa4compatibility' => 'icon', 'label_block' => true, 'default' => [ 'value' => 'fas fa-smile-wink', 'library' => 'fa-solid', ] ] ); } $this->add_control( 'title', [ 'label' => __( 'Title', 'happy-elementor-addons' ), 'type' => Controls_Manager::TEXT, 'label_block' => true, 'default' => __( 'Happy Icon Box', 'happy-elementor-addons' ), 'placeholder' => __( 'Type Icon Box Title', 'happy-elementor-addons' ), 'dynamic' => [ 'active' => true, ] ] ); $this->add_control( 'badge_text', [ 'label' => __( 'Badge Text', 'happy-elementor-addons' ), 'type' => Controls_Manager::TEXT, 'label_block' => true, 'placeholder' => __( 'Type Icon Badge Text', 'happy-elementor-addons' ), 'dynamic' => [ 'active' => true, ] ] ); $this->add_control( 'link', [ 'label' => __( 'Box Link', 'happy-elementor-addons' ), 'separator' => 'before', 'type' => Controls_Manager::URL, 'placeholder' => 'https://example.com', 'dynamic' => [ 'active' => true, ] ] ); $this->add_control( 'title_tag', [ 'label' => __( 'Title HTML Tag', 'happy-elementor-addons' ), 'type' => Controls_Manager::CHOOSE, 'separator' => 'before', 'options' => [ 'h1' => [ 'title' => __( 'H1', 'happy-elementor-addons' ), 'icon' => 'eicon-editor-h1' ], 'h2' => [ 'title' => __( 'H2', 'happy-elementor-addons' ), 'icon' => 'eicon-editor-h2' ], 'h3' => [ 'title' => __( 'H3', 'happy-elementor-addons' ), 'icon' => 'eicon-editor-h3' ], 'h4' => [ 'title' => __( 'H4', 'happy-elementor-addons' ), 'icon' => 'eicon-editor-h4' ], 'h5' => [ 'title' => __( 'H5', 'happy-elementor-addons' ), 'icon' => 'eicon-editor-h5' ], 'h6' => [ 'title' => __( 'H6', 'happy-elementor-addons' ), 'icon' => 'eicon-editor-h6' ] ], 'default' => 'h2', 'toggle' => false, ] ); $this->add_responsive_control( 'align', [ 'label' => __( 'Alignment', 'happy-elementor-addons' ), 'type' => Controls_Manager::CHOOSE, 'options' => [ 'left' => [ 'title' => __( 'Left', 'happy-elementor-addons' ), 'icon' => 'fa fa-align-left', ], 'center' => [ 'title' => __( 'Center', 'happy-elementor-addons' ), 'icon' => 'fa fa-align-center', ], 'right' => [ 'title' => __( 'Right', 'happy-elementor-addons' ), 'icon' => 'fa fa-align-right', ], ], 'toggle' => true, 'default' => 'center', 'selectors' => [ '{{WRAPPER}}' => 'text-align: {{VALUE}};' ] ] ); $this->end_controls_section(); } protected function register_style_controls() { $this->start_controls_section( '_section_style_icon', [ 'label' => __( 'Icon', 'happy-elementor-addons' ), 'tab' => Controls_Manager::TAB_STYLE, ] ); $this->add_responsive_control( 'icon_size', [ 'label' => __( 'Size', 'happy-elementor-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => [ 'px' ], 'range' => [ 'px' => [ 'min' => 6, 'max' => 300, ], ], 'selectors' => [ '{{WRAPPER}} .ha-icon-box-icon' => 'font-size: {{SIZE}}{{UNIT}};', ], ] ); $this->add_responsive_control( 'icon_padding', [ 'label' => __( 'Padding', 'happy-elementor-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px'], 'selectors' => [ '{{WRAPPER}} .ha-icon-box-icon' => 'padding: {{SIZE}}{{UNIT}};', ], ] ); $this->add_responsive_control( 'icon_spacing', [ 'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px'], 'range' => [ 'px' => [ 'max' => 150, ] ], 'selectors' => [ '{{WRAPPER}} .ha-icon-box-icon' => 'margin-bottom: {{SIZE}}{{UNIT}};', ], ] ); $this->add_group_control( Group_Control_Border::get_type(), [ 'name' => 'icon_border', 'selector' => '{{WRAPPER}} .ha-icon-box-icon' ] ); $this->add_responsive_control( 'icon_border_radius', [ 'label' => __( 'Border Radius', 'happy-elementor-addons' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', '%' ], 'selectors' => [ '{{WRAPPER}} .ha-icon-box-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], ] ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), [ 'name' => 'icon_shadow', 'exclude' => [ 'box_shadow_position', ], 'selector' => '{{WRAPPER}} .ha-icon-box-icon' ] ); $this->start_controls_tabs( '_tabs_icon' ); $this->start_controls_tab( '_tab_icon_normal', [ 'label' => __( 'Normal', 'happy-elementor-addons' ), ] ); $this->add_control( 'icon_color', [ 'label' => __( 'Color', 'happy-elementor-addons' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ha-icon-box-icon' => 'color: {{VALUE}};', ], ] ); $this->add_control( 'icon_bg_color', [ 'label' => __( 'Background Color', 'happy-elementor-addons' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ha-icon-box-icon' => 'background-color: {{VALUE}};', ], ] ); $this->add_control( 'icon_bg_rotate', [ 'label' => __( 'Rotate Icon Box', 'happy-elementor-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => [ 'deg' ], 'default' => [ 'unit' => 'deg', ], 'range' => [ 'deg' => [ 'min' => 0, 'max' => 360, ], ], 'selectors' => [ '{{WRAPPER}} .ha-icon-box-icon' => '-webkit-transform: rotate({{SIZE}}{{UNIT}}); transform: rotate({{SIZE}}{{UNIT}});', '{{WRAPPER}} .ha-icon-box-icon > i' => '-webkit-transform: rotate(-{{SIZE}}{{UNIT}}); transform: rotate(-{{SIZE}}{{UNIT}});', ], 'condition' => [ 'icon_bg_color!' => '', ] ] ); $this->end_controls_tab(); $this->start_controls_tab( '_tab_button_hover', [ 'label' => __( 'Hover', 'happy-elementor-addons' ), ] ); $this->add_control( 'icon_hover_color', [ 'label' => __( 'Color', 'happy-elementor-addons' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}}:hover .ha-icon-box-icon' => 'color: {{VALUE}};', ], ] ); $this->add_control( 'icon_hover_bg_color', [ 'label' => __( 'Background Color', 'happy-elementor-addons' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}}:hover .ha-icon-box-icon' => 'background-color: {{VALUE}};', ], ] ); $this->add_control( 'icon_hover_border_color', [ 'label' => __( 'Border Color', 'happy-elementor-addons' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}}:hover .ha-icon-box-icon' => 'border-color: {{VALUE}};', ], 'condition' => [ 'icon_border_border!' => '', ] ] ); $this->add_control( 'icon_hover_bg_rotate', [ 'label' => __( 'Rotate Icon Box', 'happy-elementor-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => [ 'deg' ], 'default' => [ 'unit' => 'deg', ], 'range' => [ 'deg' => [ 'min' => 0, 'max' => 360, ], ], 'selectors' => [ '{{WRAPPER}}:hover .ha-icon-box-icon' => '-webkit-transform: rotate({{SIZE}}{{UNIT}}); transform: rotate({{SIZE}}{{UNIT}});', '{{WRAPPER}}:hover .ha-icon-box-icon > i' => '-webkit-transform: rotate(-{{SIZE}}{{UNIT}}); transform: rotate(-{{SIZE}}{{UNIT}});', ], 'condition' => [ 'icon_bg_color!' => '', ] ] ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->end_controls_section(); $this->start_controls_section( '_section_style_title', [ 'label' => __( 'Title', 'happy-elementor-addons' ), 'tab' => Controls_Manager::TAB_STYLE, ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'title', 'selector' => '{{WRAPPER}} .ha-icon-box-title', 'scheme' => Scheme_Typography::TYPOGRAPHY_2 ] ); $this->add_group_control( Group_Control_Text_Shadow::get_type(), [ 'name' => 'title', 'selector' => '{{WRAPPER}} .ha-icon-box-title', ] ); $this->start_controls_tabs( '_tabs_title' ); $this->start_controls_tab( '_tab_title_normal', [ 'label' => __( 'Normal', 'happy-elementor-addons' ), ] ); $this->add_control( 'title_color', [ 'label' => __( 'Text Color', 'happy-elementor-addons' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ha-icon-box-title' => 'color: {{VALUE}};', ], ] ); $this->end_controls_tab(); $this->start_controls_tab( '_tab_title_hover', [ 'label' => __( 'Hover', 'happy-elementor-addons' ), ] ); $this->add_control( 'title_hover_color', [ 'label' => __( 'Text Color', 'happy-elementor-addons' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}}:hover .ha-icon-box-title' => 'color: {{VALUE}};', ], ] ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->end_controls_section(); $this->start_controls_section( '_section_style_badge', [ 'label' => __( 'Badge', 'happy-elementor-addons' ), 'tab' => Controls_Manager::TAB_STYLE, ] ); $this->add_control( 'badge_offset_toggle', [ 'label' => __( 'Offset', 'happy-elementor-addons' ), 'type' => Controls_Manager::POPOVER_TOGGLE, 'label_off' => __( 'None', 'happy-elementor-addons' ), 'label_on' => __( 'Custom', 'happy-elementor-addons' ), 'return_value' => 'yes', ] ); $this->start_popover(); $this->add_responsive_control( 'badge_offset_x', [ 'label' => __( 'Offset Left', 'happy-elementor-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px'], 'condition' => [ 'badge_offset_toggle' => 'yes' ], 'default' => [ 'size' => 1 ], 'range' => [ 'px' => [ 'min' => -250, 'max' => 250, ], ], 'render_type' => 'ui' ] ); $this->add_responsive_control( 'badge_offset_y', [ 'label' => __( 'Offset Top', 'happy-elementor-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px'], 'condition' => [ 'badge_offset_toggle' => 'yes' ], 'default' => [ 'size' => 1 ], 'range' => [ 'px' => [ 'min' => -500, 'max' => 500, ], ], 'selectors' => [ '(desktop){{WRAPPER}} .ha-badge' => '-webkit-transform: translate({{badge_offset_x.SIZE || 0}}{{UNIT}}, {{badge_offset_y.SIZE || 0}}{{UNIT}}); transform: translate({{badge_offset_x.SIZE || 0}}{{UNIT}}, {{badge_offset_y.SIZE || 0}}{{UNIT}});', '(tablet){{WRAPPER}} .ha-badge' => '-webkit-transform: translate({{badge_offset_x_tablet.SIZE || 0}}{{UNIT}}, {{badge_offset_y_tablet.SIZE || 0}}{{UNIT}}); transform: translate({{badge_offset_x_tablet.SIZE || 0}}{{UNIT}}, {{badge_offset_y_tablet.SIZE || 0}}{{UNIT}});', '(mobile){{WRAPPER}} .ha-badge' => '-webkit-transform: translate({{badge_offset_x_mobile.SIZE}}{{UNIT}}, {{badge_offset_y_mobile.SIZE || 0}}{{UNIT}}); transform: translate({{badge_offset_x_mobile.SIZE || 0}}{{UNIT}}, {{badge_offset_y_mobile.SIZE || 0}}{{UNIT}});', ], ] ); $this->end_popover(); $this->add_responsive_control( 'badge_padding', [ 'label' => __( 'Padding', 'happy-elementor-addons' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} .ha-badge' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], ] ); $this->add_control( 'badge_color', [ 'label' => __( 'Text Color', 'happy-elementor-addons' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ha-badge' => 'color: {{VALUE}};', ], ] ); $this->add_control( 'badge_bg_color', [ 'label' => __( 'Background Color', 'happy-elementor-addons' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ha-badge' => 'background-color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Border::get_type(), [ 'name' => 'badge_border', 'selector' => '{{WRAPPER}} .ha-badge', ] ); $this->add_responsive_control( 'badge_border_radius', [ 'label' => __( 'Border Radius', 'happy-elementor-addons' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', '%' ], 'selectors' => [ '{{WRAPPER}} .ha-badge' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], ] ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), [ 'name' => 'badge_box_shadow', 'exclude' => [ 'box_shadow_position', ], 'selector' => '{{WRAPPER}} .ha-badge', ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'badge_typography', 'label' => __( 'Typography', 'happy-elementor-addons' ), 'exclude' => [ 'font_family', 'line_height' ], 'default' => [ 'font_size' => [''] ], 'selector' => '{{WRAPPER}} .ha-badge', 'scheme' => Scheme_Typography::TYPOGRAPHY_3, ] ); $this->end_controls_section(); } /** * Render widget output on the frontend. * * Used to generate the final HTML displayed on the frontend. * * Note that if skin is selected, it will be rendered by the skin itself, * not the widget. * * @since 1.0.0 * @access public */ public function render_content() { /** * Before widget render content. * * Fires before Elementor widget is being rendered. * * @since 1.0.0 * * @param Widget_Base $this The current widget. */ do_action( 'elementor/widget/before_render_content', $this ); ob_start(); $skin = $this->get_current_skin(); if ( $skin ) { $skin->set_parent( $this ); $skin->render(); } else { $this->render(); } $widget_content = ob_get_clean(); if ( empty( $widget_content ) ) { return; } if ( ha_elementor()->editor->is_edit_mode() ) { $this->render_edit_tools(); } $tag = 'div'; $link = $this->get_settings_for_display( 'link' ); $this->add_render_attribute( 'icon_box', 'class', 'elementor-widget-container' ); if ( ! empty( $link['url'] ) ) { $tag = 'a'; $this->add_render_attribute( 'icon_box', 'class', 'ha-icon-box-link' ); $this->add_link_attributes( 'icon_box', $link ); } ?> <<?php echo $tag; ?> <?php echo $this->get_render_attribute_string( 'icon_box' ); ?>> <?php /** * Render widget content. * * Filters the widget content before it's rendered. * * @since 1.0.0 * * @param string $widget_content The content of the widget. * @param Widget_Base $this The widget. */ $widget_content = apply_filters( 'elementor/widget/render_content', $widget_content, $this ); echo $widget_content; // XSS ok. ?> </<?php echo $tag; ?>> <?php } protected function render() { $settings = $this->get_settings_for_display(); $this->add_inline_editing_attributes( 'title', 'basic' ); $this->add_render_attribute( 'title', 'class', 'ha-icon-box-title' ); $this->add_inline_editing_attributes( 'badge_text', 'none' ); $this->add_render_attribute( 'badge_text', 'class', 'ha-badge ha-badge--top-right' ); ?> <?php if ( $settings['badge_text'] ) : ?> <span <?php $this->print_render_attribute_string( 'badge_text' ); ?>><?php echo esc_html( $settings['badge_text'] ); ?></span> <?php endif; ?> <?php if ( ! empty( $settings['icon'] ) || ! empty( $settings['selected_icon']['value'] ) ) : ?> <span class="ha-icon-box-icon"> <?php ha_render_icon( $settings, 'icon', 'selected_icon' ); ?> </span> <?php endif; if ( $settings['title' ] ) : printf( '<%1$s %2$s>%3$s</%1$s>', tag_escape( $settings['title_tag'] ), $this->get_render_attribute_string( 'title' ), ha_kses_basic( $settings['title' ] ) ); endif; } public function _content_template() { ?> <# var iconHTML = migrated = ''; if ( ha.hasIconLibrary() ) { iconHTML = elementor.helpers.renderIcon( view, settings.selected_icon, { 'aria-hidden': true }, 'i' , 'object' ), migrated = elementor.helpers.isIconMigrated( settings, 'selected_icon' ); } view.addInlineEditingAttributes( 'title', 'basic' ); view.addRenderAttribute( 'title', 'class', 'ha-icon-box-title' ); view.addInlineEditingAttributes( 'badge_text', 'none' ); view.addRenderAttribute( 'badge_text', 'class', 'ha-badge ha-badge--top-right' ); if (settings.link.url) { view.addRenderAttribute( 'link', 'class', 'ha-icon-box-link' ); view.addRenderAttribute( 'link', 'href', settings.link.url ); print( '<a ' + view.getRenderAttributeString( 'link' ) + '>' ); } #> <# if (settings.badge_text) { #> <span {{{ view.getRenderAttributeString( 'badge_text' ) }}}>{{ settings.badge_text }}</span> <# } #> <# if ( settings.icon || settings.selected_icon.value ) { #> <span class="ha-icon-box-icon"> <# if ( ha.hasIconLibrary() && iconHTML && iconHTML.rendered && ( ! settings.icon || migrated ) ) { #> {{{ iconHTML.value }}} <# } else { #> <i class="{{ settings.icon }}" aria-hidden="true"></i> <# } #> </span> <# } #> <# if (settings.title) { #> <{{ settings.title_tag }} {{{ view.getRenderAttributeString( 'title' ) }}}>{{ settings.title }}</{{ settings.title_tag }}> <# } #> <# if (settings.link.url) { print( '</a>' ); } #> <?php } }
修改文件时间
将文件时间修改为当前时间的前一年
删除文件