📄 jobs-category.php
📁 Path: /home/s/t/a/stakrfrcol/agency/wp-content/themes/xhyre/includes/elementor/jobs-category.php
📊 Size: 16.09 KB
🔒 Perm: 0644
📝 MIME: text/x-php
<?php
namespace Elementor; // Custom widgets must be defined in the Elementor namespace
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly (security measure)
/**
* Widget Name: Projects Carousel
*/
class pbmit_JobsCategoryElement extends Widget_Base{
// The get_name() method is a simple one, you just need to return a widget name that will be used in the code.
public function get_name() {
return 'pbmit_jobs_category_element';
}
// The get_title() method, which again, is a very simple one, you need to return the widget title that will be displayed as the widget label.
public function get_title() {
return esc_attr__( 'Xhyre Jobs Category Element', 'xhyre' );
}
// The get_icon() method, is an optional but recommended method, it lets you set the widget icon. you can use any of the eicon or font-awesome icons, simply return the class name as a string.
public function get_icon() {
return 'fas fa-toolbox';
}
// The get_categories method, lets you set the category of the widget, return the category name as a string.
public function get_categories() {
return [ 'xhyre_category' ];
}
public function __construct($data = [], $args = null) {
parent::__construct($data, $args);
if( !empty($data['settings']["view-type"]) && $data['settings']["view-type"]=='carousel' ){
wp_enqueue_script( 'swiper' );
wp_enqueue_style( 'swiper' );
}
}
protected function register_controls() {
// Style
$this->start_controls_section(
'style_section',
[
'label' => esc_attr__( 'Select Style', 'xhyre' ),
'tab' => Controls_Manager::TAB_CONTENT,
]
);
$this->add_control(
'style',
[
'label' => esc_attr__( 'Select Jobs View Style', 'xhyre' ),
'description' => esc_attr__( 'Select Jobs View style.', 'xhyre' ),
'type' => 'pbmit_imgselect',
'label_block' => true,
'thumb_width' => '110px',
'default' => '1',
'options' => pbmit_element_template_list( 'jobs-category', 'elementor' ),
]
);
$this->end_controls_section();
// Appearance
$this->start_controls_section(
'row_column_section',
[
'label' => esc_attr__( 'Column and Carousel Options', 'xhyre' ),
]
);
$this->add_control(
'view-type',
[
'label' => esc_attr__( 'How you like to view each Post box?', 'xhyre' ),
'description' => esc_attr__( 'Show as carousel view or simple row-column view.', 'xhyre' ),
'type' => 'pbmit_imgselect',
'label_block' => true,
'thumb_width' => '110px',
'default' => 'row-column',
'options' => [
'row-column' => esc_url( get_template_directory_uri() . '/includes/images/row-column.png' ),
'carousel' => esc_url( get_template_directory_uri() . '/includes/images/carousel.png' ),
]
]
);
// Carousel: Heading
$this->add_control(
'carousel_options',
[
'label' => esc_attr__( 'Carousel Options', 'xhyre' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
'condition' => [
'view-type' => 'carousel',
],
]
);
// Carousel : Autoplay
$this->add_control(
'carousel-autoplay',
[
'label' => esc_attr__( 'Carousel: Autoplay', 'xhyre' ),
'description' => esc_attr__( 'Autoplay of carousel.', 'xhyre' ),
'type' => Controls_Manager::SELECT,
'default' => '1',
'options' => [
'1' => esc_attr__( 'Yes', 'xhyre' ),
'0' => esc_attr__( 'No', 'xhyre' ),
],
'condition' => [
'view-type' => 'carousel',
],
]
);
// Carousel : delay
$this->add_control(
'carousel-delay',
[
'label' => esc_attr__( 'Carousel: delay', 'xhyre' ),
'description' => esc_attr__( 'Slide hold time (in ms).', 'xhyre' ),
'type' => Controls_Manager::TEXT,
'default' => '4000',
'condition' => [
'view-type' => 'carousel',
'carousel-autoplay' => '1',
],
]
);
// Carousel : Loop
$this->add_control(
'carousel-loop',
[
'label' => esc_attr__( 'Carousel: Loop', 'xhyre' ),
'description' => esc_attr__( 'Set to YES to enable continuous loop mode. Set NO to enable rewind loop mode.', 'xhyre' ),
'type' => Controls_Manager::SELECT,
'default' => '1',
'options' => [
'1' => esc_attr__( 'Yes', 'xhyre' ),
'0' => esc_attr__( 'No', 'xhyre' ),
],
'condition' => [
'view-type' => 'carousel',
],
]
);
// Carousel : Center
$this->add_control(
'carousel-center',
[
'label' => esc_attr__( 'Carousel: Center', 'xhyre' ),
'description' => esc_attr__( 'Center item. Works well with even an odd number of items.', 'xhyre' ),
'type' => Controls_Manager::SELECT,
'default' => '0',
'options' => [
'1' => esc_attr__( 'Yes', 'xhyre' ),
'0' => esc_attr__( 'No', 'xhyre' ),
],
'condition' => [
'view-type' => 'carousel',
],
]
);
// Carousel : Nav
$this->add_control(
'carousel-nav',
[
'label' => esc_attr__( 'Carousel: Nav', 'xhyre' ),
'description' => esc_attr__( 'Show next/prev buttons.', 'xhyre' ),
'type' => Controls_Manager::SELECT,
'default' => '0',
'options' => [
'1' => esc_attr__( 'Yes', 'xhyre' ),
'0' => esc_attr__( 'No', 'xhyre' ),
'above' => esc_attr__( 'Yes, near heading area', 'xhyre' ),
],
'condition' => [
'view-type' => 'carousel',
],
]
);
// Carousel : Dots
$this->add_control(
'carousel-dots',
[
'label' => esc_attr__( 'Carousel: Dots', 'xhyre' ),
'description' => esc_attr__( 'Show dots navigation.', 'xhyre' ),
'type' => Controls_Manager::SELECT,
'default' => '0',
'options' => [
'1' => esc_attr__( 'Yes', 'xhyre' ),
'0' => esc_attr__( 'No', 'xhyre' ),
],
'condition' => [
'view-type' => 'carousel',
],
]
);
// Carousel : Speed
$this->add_control(
'carousel-speed',
[
'label' => esc_attr__( 'Carousel:Speed', 'xhyre' ),
'description' => esc_attr__( 'Slider animation time (in ms.)', 'xhyre' ),
'type' => Controls_Manager::TEXT,
'default' => '3000',
'condition' => [
'view-type' => 'carousel',
],
]
);
// Columns
$this->add_control(
'view-column-section-heading',
[
'label' => esc_attr__( 'Column Settings', 'xhyre' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
'condition' => [
]
]
);
$this->add_control(
'columns',
[
'label' => esc_attr__( 'View in Column', 'xhyre' ),
'description' => esc_attr__( 'Select how many column to show.', 'xhyre' ),
'type' => 'pbmit_imgselect',
'label_block' => true,
'thumb_width' => '110px',
'default' => '3',
'options' => [
'1' => esc_url( get_template_directory_uri() . '/includes/images/column-1.png' ),
'2' => esc_url( get_template_directory_uri() . '/includes/images/column-2.png' ),
'3' => esc_url( get_template_directory_uri() . '/includes/images/column-3.png' ),
'4' => esc_url( get_template_directory_uri() . '/includes/images/column-4.png' ),
],
]
);
$this->end_controls_section();
// Heading and Subheading
$this->start_controls_section(
'heading_section',
[
'label' => esc_attr__( 'Heading and Subheading', 'xhyre' ),
]
);
$this->add_control(
'title',
[
'label' => esc_attr__( 'Heading', 'xhyre' ),
'type' => Controls_Manager::TEXTAREA,
'dynamic' => [
'active' => true,
],
'default' => esc_attr__( 'Welcome to our site', 'xhyre' ),
'placeholder' => esc_attr__( 'Enter your heading', 'xhyre' ),
'label_block' => true,
]
);
$this->add_control(
'title_link',
[
'label' => esc_attr__( 'Heading Link', 'xhyre' ),
'type' => Controls_Manager::URL,
'label_block' => true,
]
);
$this->add_control(
'subtitle',
[
'label' => esc_attr__( 'Subheading', 'xhyre' ),
'type' => Controls_Manager::TEXTAREA,
'dynamic' => [
'active' => true,
],
'placeholder' => esc_attr__( 'Enter your subtitle', 'xhyre' ),
'label_block' => true,
]
);
$this->add_control(
'subtitle_link',
[
'label' => esc_attr__( 'Subheading Link', 'xhyre' ),
'type' => Controls_Manager::URL,
'label_block' => true,
]
);
$this->add_control(
'desc',
[
'label' => esc_attr__( 'Description', 'xhyre' ),
'type' => Controls_Manager::TEXTAREA,
'placeholder' => esc_attr__( 'Type your description here', 'xhyre' ),
]
);
$this->add_control(
'reverse_title',
[
'label' => esc_attr__( 'Reverse Heading', 'xhyre' ),
'description' => esc_attr__( 'Show Subheading before Heading', 'xhyre' ),
'type' => Controls_Manager::SWITCHER,
'label_on' => esc_attr__( 'Yes', 'xhyre' ),
'label_off' => esc_attr__( 'No', 'xhyre' ),
'return_value' => 'yes',
'default' => '',
]
);
$this->add_responsive_control(
'text_align',
[
'label' => esc_attr__( 'Alignment', 'xhyre' ),
'type' => Controls_Manager::CHOOSE,
'options' => [
'left' => [
'title' => esc_attr__( 'Left', 'xhyre' ),
'icon' => 'fa fa-align-left',
],
'center' => [
'title' => esc_attr__( 'Center', 'xhyre' ),
'icon' => 'fa fa-align-center',
],
'right' => [
'title' => esc_attr__( 'Right', 'xhyre' ),
'icon' => 'fa fa-align-right',
],
],
'prefix_class' => 'pbmit-ele-header-align-',
'selectors' => [
'{{WRAPPER}} .pbmit-heading-subheading' => 'text-align: {{VALUE}};',
],
]
);
$this->add_control(
'btn_title',
[
'label' => esc_attr__( 'Button Title', 'xhyre' ),
'type' => Controls_Manager::TEXT,
'dynamic' => [
'active' => true,
],
'default' => esc_attr__( 'Read More', 'xhyre' ),
'placeholder' => esc_attr__( 'Enter button title here', 'xhyre' ),
'label_block' => true,
'default' => esc_attr__( 'Read More', 'xhyre' ),
'condition' => [
'style' => ['3'],
],
]
);
$this->add_control(
'btn_link',
[
'label' => esc_attr__( 'Button Link', 'xhyre' ),
'type' => Controls_Manager::URL,
'label_block' => true,
'default' => array (
'url' => '',
'is_external' => '',
'nofollow' => '',
'custom_attributes' => '',
),
'condition' => [
'style' => ['3'],
],
]
);
$this->end_controls_section();
// HTML Tags
$this->start_controls_section(
'advanced_section',
[
'label' => pbmit_esc_kses('<img class="pbmit-tab-small-logo" src="'.get_template_directory_uri() . '/includes/images/pbm-small-logo.png" /> ') . esc_attr__( 'Tag & Gap Settings', 'xhyre' ),
'tab' => Controls_Manager::TAB_ADVANCED,
]
);
$this->add_control(
'tag_options',
[
'label' => esc_attr__( 'Tags for SEO', 'xhyre' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'title_tag',
[
'label' => esc_attr__( 'Heading Tag', 'xhyre' ),
'type' => Controls_Manager::SELECT,
'options' => [
'h1' => esc_attr( 'H1' ),
'h2' => esc_attr( 'H2' ),
'h3' => esc_attr( 'H3' ),
'h4' => esc_attr( 'H4' ),
'h5' => esc_attr( 'H5' ),
'h6' => esc_attr( 'H6' ),
'div' => esc_attr( 'DIV' ),
],
'default' => esc_attr( 'h2' ),
]
);
$this->add_control(
'subtitle_tag',
[
'label' => esc_attr__( 'Subheading Tag', 'xhyre' ),
'type' => Controls_Manager::SELECT,
'options' => [
'h1' => esc_attr( 'H1' ),
'h2' => esc_attr( 'H2' ),
'h3' => esc_attr( 'H3' ),
'h4' => esc_attr( 'H4' ),
'h5' => esc_attr( 'H5' ),
'h6' => esc_attr( 'H6' ),
'div' => esc_attr( 'DIV' ),
],
'default' => esc_attr( 'h4' ),
]
);
$this->add_control(
'gap_options',
[
'label' => esc_attr__( 'Gap between Logo boxes', 'xhyre' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'gap',
[
'label' => esc_attr__( 'Box Gap', 'xhyre' ),
'description' => esc_attr__( 'Gap between each job box.', 'xhyre' ),
'type' => Controls_Manager::SELECT,
'default' => 'default',
'options' => [
'default' => esc_attr__( 'Default Gap', 'xhyre' ),
'0px' => esc_attr__( 'No Gap (0px)', 'xhyre' ),
'5px' => esc_attr__( '5px', 'xhyre' ),
'10px' => esc_attr__( '10px', 'xhyre' ),
'15px' => esc_attr__( '15px', 'xhyre' ),
'20px' => esc_attr__( '20px', 'xhyre' ),
'25px' => esc_attr__( '25px', 'xhyre' ),
'30px' => esc_attr__( '30px', 'xhyre' ),
'35px' => esc_attr__( '35px', 'xhyre' ),
'40px' => esc_attr__( '40px', 'xhyre' ),
'45px' => esc_attr__( '45px', 'xhyre' ),
'50px' => esc_attr__( '50px', 'xhyre' ),
],
]
);
$this->end_controls_section();
}
protected function render() {
if( !defined('JOB_MANAGER_PLUGIN_DIR') ){
echo '<!-- The WP Job Manager plugin is not active -->';
return;
}
$settings = $this->get_settings_for_display();
extract($settings);
// check variables
$columns = ( !empty($columns) ) ? $columns : '1' ;
// swiper variables
$swiper_class = '';
if( isset($data['settings']["view-type"]) && !empty($data['settings']["view-type"]) && $data['settings']["view-type"]=='carousel' ){
$swiper_class = ' swiper-wrapper';
}
?>
<?php
// Starting container
$start_div = pbmit_element_container( array(
'position' => 'start',
'cpt' => 'jobs-category',
'data' => $settings
) );
echo pbmit_esc_kses($start_div);
if( $style == '2' || $style == '3' ){ ?>
<div class="row">
<div class="pbmit-heading-left-area col-lg-12 col-xl-4 pbmit-column">
<div class="pbmit-ele-header-area">
<div class="pbmit-header-area-inner">
<?php pbmit_heading_subheading($settings, true); ?>
<?php
// Button
$button_html = '';
if( !empty($settings['btn_title']) && !empty($settings['btn_link']['url']) ){
$button_html = '<div class="pbmit-job-category-btn pbmit-head-btn">' . pbmit_link_render($settings['btn_link'], 'start' ) . pbmit_esc_kses($settings['btn_title']) . pbmit_link_render($settings['btn_link'], 'end' ) . '</div>';
} ?>
<?php if( $style == '3' ){
echo pbmit_esc_kses($button_html);
}
?>
</div>
</div>
</div>
<?php } else { ?>
<div class="pbmit-ele-header-area">
<?php pbmit_heading_subheading($settings, true); ?>
</div>
<?php }
// Get the terms and order them by count in descending order.
$terms = get_terms( [
'taxonomy' => 'job_listing_category',
'orderby' => 'count',
'order' => 'DESC',
] );
?>
<?php if( !empty($terms) ){
if( $style =='2' || $style =='3' ){ ?>
<div class="pbmit-content-right-area col-lg-12 col-xl-8 pbmit-column">
<?php } ?>
<div class="pbmit-element-posts-wrapper row multi-columns-row <?php if( !empty($settings['view-type']) && trim($settings['view-type'])=='carousel' ){ ?>swiper-container<?php } ?>" >
<?php
foreach ( $terms as $term ) {
// Template
if( file_exists( locate_template( '/theme-parts/jobs-category/jobs-category-style-'.esc_attr($style).'.php', false, false ) ) ){
pbmit_element_block_container( array(
'position' => 'start',
'column' => $columns,
'cpt' => 'jobs-category',
'style' => $style
),true );
include( locate_template( '/theme-parts/jobs-category/jobs-category-style-'.esc_attr($style).'.php', false, false ) );
pbmit_element_block_container( array(
'position' => 'end',
),true );
} ?>
<?php } /* foreach */ ?>
</div><!-- .pbmit-element-posts-wrapper .row multi-columns-row -->
<?php } /* if */ ?>
<?php if( $style == '2' || $style =='3' ){ ?></div></div><!--.row end --><!-- pbmit-portfoliobox-right end --><?php } ?>
<?php wp_reset_postdata(); ?>
<?php
// Ending wrapper of the whole arear
$end_div = pbmit_element_container( array(
'position' => 'end',
'cpt' => 'jobs-category',
'data' => $settings
) );
echo pbmit_esc_kses($end_div);
}
protected function content_template() {}
}
// After the Schedule class is defined, I must register the new widget class with Elementor:
Plugin::instance()->widgets_manager->register( new pbmit_JobsCategoryElement() );