Advertisement
salmancreation

sofol_portfolio

May 21st, 2019
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 10.48 KB | None | 0 0
  1. <?php
  2. namespace SofolCore\Widgets;
  3.  
  4. use Elementor\Widget_Base;
  5. use Elementor\Controls_Manager;
  6. use Elementor\Scheme_Color;
  7. use Elementor\Scheme_Typography;
  8. use Elementor\Group_Control_Typography;
  9. use WP_Query;
  10.  
  11.  
  12. // Exit if accessed directly
  13. if ( ! defined( 'ABSPATH' ) ) {
  14.     exit;
  15. }
  16.  
  17.  
  18. /**
  19.  * Text Typing Effect
  20.  *
  21.  * Elementor widget for text typing effect.
  22.  *
  23.  * @since 1.7.0
  24.  */
  25. class Sofol_portfolio extends Widget_Base {
  26.  
  27.     public function get_name() {
  28.         return 'sofol_portfolio_section';
  29.     }
  30.  
  31.     public function get_title() {
  32.         return esc_html__( 'Portfolio', 'sofol-core' );
  33.     }
  34.  
  35.     public function get_icon() {
  36.         return 'eicon-featured-image';
  37.     }
  38.  
  39.     public function get_keywords() {
  40.         return [ 'portfolio', 'image', 'sofol' ];
  41.     }
  42.  
  43.     public function get_categories() {
  44.         return [ 'sofol-elements' ];
  45.     }
  46.  
  47.     protected function _register_controls() {
  48.  
  49.        // ---------------------------- Filtering ----------
  50.         $this->start_controls_section(
  51.             'portfolio_filter', [
  52.                 'label' => __( 'Portfolio Settings', 'sofol-core' ),
  53.             ]
  54.         );
  55.  
  56.         $this->add_control(
  57.             'portfolio_section_title', [
  58.                 'label' => esc_html__( 'Section Title', 'sofol-core' ),
  59.                 'type' => Controls_Manager::TEXT,
  60.                 'label_block' => true,
  61.                 'default' => 'WORK HISTORY'
  62.             ]
  63.         );
  64.         $this->add_control(
  65.             'portfolio_section_des', [
  66.                 'label' => esc_html__( 'Section Descrition', 'sofol-core' ),
  67.                 'type' => Controls_Manager::TEXTAREA,
  68.                 'label_block' => true,
  69.                 'default' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sapiente inventore, quibusdam vel repellat maxime rerum quos .'
  70.             ]
  71.         );
  72.         $this->add_control(
  73.             'item_show', [
  74.                 'label' => esc_html__( 'How many portoflio item shows', 'sofol-core' ),
  75.                 'type' => Controls_Manager::NUMBER,
  76.                 'label_block' => true,
  77.                 'default' => '9'
  78.             ]
  79.         );
  80.         $this->add_control(
  81.             'item_order', [
  82.                 'label' => esc_html__( 'Select Your Order.', 'sofol-core' ),
  83.                 'type' => Controls_Manager::SELECT,
  84.                 'options' => [
  85.                     'ASC' => 'ASC',
  86.                     'DESC' => 'DESC'
  87.                 ],
  88.                 'default' => 'ASC'
  89.             ]
  90.         );
  91.  
  92.  
  93.         $this->end_controls_section();
  94.  
  95.  
  96.  
  97.         /**
  98.          * Style Tab
  99.          * ------------------------------ Style Title ------------------------------
  100.          */
  101.         $this->start_controls_section(
  102.             'style_title', [
  103.                 'label' => esc_html__( 'Style Item Title', 'sofol-core' ),
  104.                 'tab' => Controls_Manager::TAB_STYLE,
  105.             ]
  106.         );
  107.  
  108.         $this->add_control(
  109.             'color_title', [
  110.                 'label' => esc_html__( 'Item Title Color', 'sofol-core' ),
  111.                 'type' => Controls_Manager::COLOR,
  112.                 'selectors' => [
  113.                     '{{WRAPPER}} .portfolio-area .site-heading h2' => 'color: {{VALUE}};',
  114.                 ],
  115.             ]
  116.         );
  117.  
  118.         $this->add_group_control(
  119.             Group_Control_Typography::get_type(), [
  120.                 'name' => 'typography_title',
  121.                 'scheme' => Scheme_Typography::TYPOGRAPHY_1,
  122.                 'selector' => '{{WRAPPER}} .portfolio-area .site-heading h2',
  123.             ]
  124.         );
  125.  
  126.         $this->end_controls_section();
  127.  
  128.  
  129.         //------------------------------ Gradient Color ------------------------------
  130.         $this->start_controls_section(
  131.             'style_background',
  132.             [
  133.                 'label' => esc_html__( 'Background', 'sofol-core' ),
  134.                 'tab' => Controls_Manager::TAB_STYLE
  135.             ]
  136.         );
  137.  
  138.         // Gradient Color
  139.         $this->add_control(
  140.             'bg_color', [
  141.                 'label' => esc_html__( 'Background Color', 'sofol-core' ),
  142.                 'type' => Controls_Manager::COLOR,
  143.                 'defualt' => '#fff',
  144.                 'selectors' => [
  145.                     '{{WRAPPER}} .portfolio-area' => 'background: {{VALUE}};',
  146.                 ],
  147.             ]
  148.         );
  149.  
  150.         $this->end_controls_section();
  151.     }
  152.  
  153.     protected function render() {
  154.         $settings = $this->get_settings();
  155.  
  156.         $portfolios = new WP_Query(array(
  157.             'post_type'     => 'portfolio',
  158.             'posts_per_page'=> $settings['item_show'],
  159.             'order'     => $settings['item_order']
  160.         ));
  161.  
  162.         ?>
  163.         <div id="portfolio" class="portfolio-area default-padding bottom-less">
  164.             <div class="container">
  165.                 <div class="row">
  166.                     <div class="site-heading text-center">
  167.                         <div class="col-md-8 col-md-offset-2">
  168.                             <?php if(!empty($settings['portfolio_section_title'] )) : ?>
  169.                             <h2><?php echo $settings['portfolio_section_title']; ?></h2>
  170.                             <?php endif; ?>
  171.                             <?php if(!empty($settings['portfolio_section_des'] )) : ?>
  172.                             <p>
  173.                                <?php echo $settings['portfolio_section_des']; ?>
  174.                             </p>
  175.                             <?php endif; ?>
  176.                         </div>
  177.                     </div>
  178.                 </div>
  179.                 <div class="row">
  180.                     <div class="col-md-12 portfolio-content">
  181.                         <div class="mix-item-menu text-center">
  182.                             <button class="active" data-filter="*">All</button>
  183.                             <?php
  184.                                 $cats = get_terms('portfolio_cat');
  185.  
  186.                                 foreach ($cats as $cat) :
  187.                             ?>
  188.                             <button data-filter=".<?php echo $cat->slug; ?>" class=""><?php echo $cat->name; ?></button>
  189.                             <?php endforeach; ?>
  190.                         </div>
  191.                         <!-- End Mixitup Nav-->
  192.  
  193.                         <div class="row magnific-mix-gallery">
  194.                             <div id="portfolio-grid" class="portfolio-items hover-effect">
  195.                                 <?php while ($portfolios->have_posts()) : $portfolios->the_post();
  196.                                
  197.                                 $project_cats = get_the_terms( get_the_ID(), 'portfolio_cat' );
  198.                                 if ( $project_cats && ! is_wp_error( $project_cats ) ) {
  199.                                     $project_cat_list = array();
  200.                                     foreach ( $project_cats as $cat ) {
  201.                                         $project_cat_list[] = $cat->slug;
  202.                                     }
  203.                                     $project_all_cats = join( " ", $project_cat_list);
  204.                                 }
  205.                                 else {
  206.                                     $project_all_cats = '';
  207.                                 }  
  208.                                 ?>
  209.  
  210.                                 <div class="pf-item <?php echo $project_all_cats; ?>">
  211.                                     <div class="portfolio-effet">
  212.                                         <div class="thumb">
  213.                                             <?php
  214.                                             if ( has_post_thumbnail() ) :
  215.                                                 the_post_thumbnail();
  216.                                             endif;
  217.                                             ?>
  218.                                             <div class="overlay">
  219.                                                <h4><?php the_title(); ?></h4>
  220.                                                <a href="<?php the_post_thumbnail_url('full'); ?>" class="item popup-link"><i class="fa fa-eye"></i></a>
  221.                                                 <a href="<?php the_permalink(); ?>" target="_blank"><i class="fa fa-link"></i></a>
  222.                                             </div>
  223.                                         </div>          
  224.                                     </div>
  225.                                 </div>
  226.                                 <?php
  227.                                 endwhile;
  228.                                 wp_reset_postdata();
  229.                                 ?>
  230.                             </div>
  231.                         </div>
  232.                     </div>
  233.                 </div>
  234.             </div>
  235.         </div>
  236.         <!-- End Portfolio -->
  237.  
  238.         <script>
  239.             (function ( $ ) {
  240.                 "use strict";
  241.                 $(document).ready( function() {
  242.  
  243.                     $('#portfolio-grid,.blog-masonry').imagesLoaded(function() {
  244.  
  245.                         /* Filter menu */
  246.                         $('.mix-item-menu').on('click', 'button', function() {
  247.                             var filterValue = $(this).attr('data-filter');
  248.                             $grid.isotope({
  249.                                 filter: filterValue
  250.                             });
  251.                         });
  252.  
  253.                         /* filter menu active class  */
  254.                         $('.mix-item-menu button').on('click', function(event) {
  255.                             $(this).siblings('.active').removeClass('active');
  256.                             $(this).addClass('active');
  257.                             event.preventDefault();
  258.                         });
  259.  
  260.                         /* Filter active */
  261.                         var $grid = $('#portfolio-grid').isotope({
  262.                             itemSelector: '.pf-item',
  263.                             percentPosition: true,
  264.                             masonry: {
  265.                                 columnWidth: '.pf-item',
  266.                             }
  267.                         });
  268.  
  269.                         /* Filter active */
  270.                         $('.blog-masonry').isotope({
  271.                             itemSelector: '.blog-item',
  272.                             percentPosition: true,
  273.                             masonry: {
  274.                                 columnWidth: '.blog-item',
  275.                             }
  276.                         });
  277.  
  278.                     });
  279.  
  280.  
  281.                 });
  282.             }( jQuery ));
  283.         </script>
  284.  
  285.         <?php
  286.     }
  287. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement