File: /home/prospack/public_html/wp-content/plugins/xpro-elementor-addons/widgets/template/template.php
<?php
namespace XproElementorAddons\Widget;
use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Image_Size;
use Elementor\Group_Control_Typography;
use Elementor\Plugin;
use Elementor\Widget_Base;
use ElementorPro\Modules\ThemeBuilder\Module;
if ( ! defined( 'ABSPATH' ) ) {
exit;
} // Exit if accessed directly
/**
* Xpro Elementor Addons
*
* Elementor widget.
*
* @since 1.0.0
*/
class Template extends Widget_Base {
/**
* Get widget name.
*
* Retrieve image widget name.
*
* @return string Widget name.
* @since 1.0.0
* @access public
*
*/
public function get_name() {
return 'xpro-template';
}
/**
* Get widget title.
*
* Retrieve image widget title.
*
* @return string Widget title.
* @since 1.0.0
* @access public
*
*/
public function get_title() {
return __( 'Template', 'xpro-elementor-addons' );
}
/**
* Get widget icon.
*
* Retrieve image widget icon.
*
* @return string Widget icon.
* @since 1.0.0
* @access public
*
*/
public function get_icon() {
return 'xi-add-new-page xpro-widget-label';
}
/**
* Get widget categories.
*
* Retrieve the list of categories the image widget belongs to.
*
* Used to determine where to display the widget in the editor.
*
* @return array Widget categories.
* @since 1.0.0
* @access public
*
*/
public function get_categories() {
return array( 'xpro-widgets' );
}
/**
* Get widget keywords.
*
* Retrieve the list of keywords the widget belongs to.
*
* @return array Widget keywords.
* @since 1.0.0
* @access public
*
*/
public function get_keywords() {
return array( 'templates', 'template', 'block' );
}
/**
* Register widget controls.
*
* Adds different input fields to allow the user to change and customize the widget settings.
*
* @since 1.0.0
* @access protected
*/
protected function register_controls() {
$this->start_controls_section(
'section_general',
array(
'label' => __( 'General', 'xpro-elementor-addons' ),
)
);
$templates_select = array();
// Get All Templates
$templates = get_posts(
array(
'post_type' => array( 'elementor_library' ),
'post_status' => array( 'publish' ),
'meta_key' => '_elementor_template_type',
'meta_value' => array( 'page', 'section' ),
'numberposts' => -1,
)
);
$this->add_control(
'select_template',
array(
'label' => __( 'Select Templates', 'xpro-elementor-addons' ),
'type' => 'xpro-select',
'label_block' => true,
'source_name' => 'post_type',
'source_type' => 'dynamic',
)
);
$this->add_control(
'select_template_notice',
array(
'type' => Controls_Manager::RAW_HTML,
'raw' => sprintf(
/* translators: %s: HTML */
__( 'Wondering what is section template or need to create one? Please click %1$shere%2$s ', 'xpro-elementor-addons' ),
'<a target="_blank" href="' . esc_url( admin_url( '/edit.php?post_type=elementor_library&tabs_group=library&elementor_library_type=section' ) ) . '">',
'</a>'
),
'content_classes' => 'elementor-descriptor',
)
);
// Restore original Post Data
wp_reset_postdata();
$this->end_controls_section();
}
/**
* Render image widget output on the frontend.
*
* Written in PHP and used to generate the final HTML.
*
* @since 1.0.0
* @access protected
*/
protected function render() {
$settings = $this->get_settings_for_display();
if ( '' !== $settings['select_template'] ) {
echo \Elementor\Plugin::instance()->frontend->get_builder_content_for_display( $settings['select_template'], true ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
}
}