Premium Portfolio Features for Phlox theme - Version 1.6.5

Version Description

Download this release

Release Info

Developer averta
Plugin Icon 128x128 Premium Portfolio Features for Phlox theme
Version 1.6.5
Comparing to
See all releases

Code changes from version 1.6.0 to 1.6.5

README.txt CHANGED
@@ -1,13 +1,13 @@
1
  === Premium Portfolio Features for Phlox theme ===
2
  Contributors: averta
3
- Donate link: http://averta.net/
4
  License: GPLv3
5
  License URI: http://www.gnu.org/licenses/gpl.html
6
  Tags: page-builder, elementor, siteorigin, auxin, phlox, averta, fullwidth, masonry, timeline, portfolio, projects, showcase, minimal, wix, flat
7
  Requires PHP: 5.4
8
  Requires at least: 4.6
9
- Tested up to: 4.9.6
10
- Stable tag: 1.6.0
11
  License: GPLv3
12
  License URI: http://www.gnu.org/licenses/gpl.html
13
 
@@ -16,10 +16,10 @@ Showcase your projects beautifully in Phlox theme
16
  == Description ==
17
 
18
  = Overview =
19
- When using a theme with auxin framework (like [Phlox Theme](http://averta.net/phlox/wordpress-theme/ "Phlox Theme")), this plugin adds portfolio and corresponding theme options that makes you able to showcase and present your projects in an elegant way.
20
 
21
 
22
- >[Demo on Phlox Theme](http://averta.net/phlox/wordpress-theme/ "Live demo of Auxin Portfolio on Phlox Theme") | [Documentation](http://docs.averta.net/display/PD/Phlox+Documentation "Auxin Portfolio documentation") | [Video tutorials](http://support.averta.net/envato/videos/phlox-video-tutorials/ "Watch all video tutorials") | [Support forum](http://wordpress.org/support/plugin/auxin-portfolio "Free support")
23
 
24
 
25
  = Features =
@@ -33,7 +33,7 @@ When using a theme with auxin framework (like [Phlox Theme](http://averta.net/ph
33
 
34
 
35
  = Some Samples =
36
- * [Portfolio](http://averta.net/phlox/demo/portfolio/)
37
 
38
  = Compatible Browsers =
39
  * IE9+
@@ -61,7 +61,7 @@ You can start translating this plugin from here: [online translation service](ht
61
  * MySQL version 5.0 or greater
62
 
63
 
64
- **This plugin works the best in [Phlox Theme](http://averta.net/phlox/wordpress-theme/)**
65
 
66
 
67
  = Automatic installation (easiest way) =
@@ -108,7 +108,7 @@ If you get stuck you can follow these [steps to get support](http://docs.averta.
108
 
109
 
110
  = Will Auxin Portfolio work with my theme? =
111
- No, this plugin only works on [Phlox Theme](http://averta.net/phlox/)
112
 
113
  = Where can I report bugs? =
114
  Bugs can be reported in our [support forums](http://wordpress.org/tags/auxin-portfolio).
@@ -120,6 +120,13 @@ Bugs can be reported in our [support forums](http://wordpress.org/tags/auxin-por
120
 
121
  == Changelog ==
122
 
 
 
 
 
 
 
 
123
  = Version 1.6.0 / (26.05.2018) =
124
  - [Improvement]: Three new elements for Elementor page builder added.
125
 
@@ -195,5 +202,6 @@ Bugs can be reported in our [support forums](http://wordpress.org/tags/auxin-por
195
 
196
  == Upgrade Notice ==
197
 
198
- = 1.6.0 =
199
- - [Improvement]: Three new elements for Elementor page builder added.
 
1
  === Premium Portfolio Features for Phlox theme ===
2
  Contributors: averta
3
+ Donate link: http://phlox.pro/go/
4
  License: GPLv3
5
  License URI: http://www.gnu.org/licenses/gpl.html
6
  Tags: page-builder, elementor, siteorigin, auxin, phlox, averta, fullwidth, masonry, timeline, portfolio, projects, showcase, minimal, wix, flat
7
  Requires PHP: 5.4
8
  Requires at least: 4.6
9
+ Tested up to: 4.9.7
10
+ Stable tag: 1.6.5
11
  License: GPLv3
12
  License URI: http://www.gnu.org/licenses/gpl.html
13
 
16
  == Description ==
17
 
18
  = Overview =
19
+ When using a theme with auxin framework (like [Phlox Theme](http://phlox.pro "Phlox Theme")), this plugin adds portfolio and corresponding theme options that makes you able to showcase and present your projects in an elegant way.
20
 
21
 
22
+ >[Demo on Phlox Theme](http://phlox.pro "Live demo of Phlox Portfolio") | [Documentation](http://support.averta.net/en/e-item/phlox-wordpress-theme/?utm_source=wporg&utm_medium=phlox-portfolio&utm_content=portfolio-doc&utm_term=documentation "Phlox Portfolio documentation") | [Video tutorials](http://support.averta.net/en/videos/phlox-video-tutorials/ "Watch all video tutorials") | [Support forum](http://support.averta.net/en/item/phlox/?utm_source=wporg&utm_medium=phlox-portfolio&utm_content=portfolio-supp&utm_term=support "Free support")
23
 
24
 
25
  = Features =
33
 
34
 
35
  = Some Samples =
36
+ * [Portfolio](http://demo.phlox.pro/portfolio/)
37
 
38
  = Compatible Browsers =
39
  * IE9+
61
  * MySQL version 5.0 or greater
62
 
63
 
64
+ **This plugin works the best in [Phlox Theme](http://phlox.pro)**
65
 
66
 
67
  = Automatic installation (easiest way) =
108
 
109
 
110
  = Will Auxin Portfolio work with my theme? =
111
+ No, this plugin only works on [Phlox Theme](http://phlox.pro/)
112
 
113
  = Where can I report bugs? =
114
  Bugs can be reported in our [support forums](http://wordpress.org/tags/auxin-portfolio).
120
 
121
  == Changelog ==
122
 
123
+ = Version 1.6.5 / (27.06.2018) =
124
+ - [New]: Introducing 4 New portfolio elements for Elementor page builder.
125
+ - [Fix]: Minor bugs fixed.
126
+
127
+ = Version 1.6.2 / (14.06.2018) =
128
+ - [Improvement]: Bug fix and under the hood improvements.
129
+
130
  = Version 1.6.0 / (26.05.2018) =
131
  - [Improvement]: Three new elements for Elementor page builder added.
132
 
202
 
203
  == Upgrade Notice ==
204
 
205
+ = 1.6.5 =
206
+ - [New]: Introducing 4 New portfolio elements for Elementor page builder.
207
+ - [Fix]: Minor bugs fixed.
admin/includes/metaboxes/metabox-fields-portfolio-metadata.php CHANGED
@@ -57,22 +57,22 @@ function auxpfo_metabox_fields_portfolio_metadata(){
57
  ),
58
 
59
  array(
60
- 'title' => __('Overview Alignment', THEME_DOMAIN),
61
- 'description' => __('Specifies alignment for the project overview and corresponding information.', THEME_DOMAIN),
62
  'id' => '_overview_info_alignment',
63
  'type' => 'radio-image',
64
  'default' => 'default',
65
  'choices' => array(
66
  'default' => array(
67
- 'label' => __('Default', THEME_DOMAIN),
68
  'css_class' => 'axiAdminIcon-default',
69
  ),
70
  'left' => array(
71
- 'label' => __('Left', THEME_DOMAIN),
72
  'css_class' => 'axiAdminIcon-text-align-left'
73
  ),
74
  'center' => array(
75
- 'label' => __('Center', THEME_DOMAIN),
76
  'css_class' => 'axiAdminIcon-text-align-center'
77
  )
78
  )
57
  ),
58
 
59
  array(
60
+ 'title' => __('Overview Alignment', 'auxin-portfolio'),
61
+ 'description' => __('Specifies alignment for the project overview and corresponding information.', 'auxin-portfolio'),
62
  'id' => '_overview_info_alignment',
63
  'type' => 'radio-image',
64
  'default' => 'default',
65
  'choices' => array(
66
  'default' => array(
67
+ 'label' => __('Default', 'auxin-portfolio'),
68
  'css_class' => 'axiAdminIcon-default',
69
  ),
70
  'left' => array(
71
+ 'label' => __('Left', 'auxin-portfolio'),
72
  'css_class' => 'axiAdminIcon-text-align-left'
73
  ),
74
  'center' => array(
75
+ 'label' => __('Center', 'auxin-portfolio'),
76
  'css_class' => 'axiAdminIcon-text-align-center'
77
  )
78
  )
auxin-portfolio.php CHANGED
@@ -12,7 +12,7 @@
12
  * Plugin Name: Phlox Portfolio
13
  * Plugin URI: http://averta.net/phlox/
14
  * Description: Showcase your projects beautifully in Phlox theme
15
- * Version: 1.6.0
16
  * Author: averta
17
  * Author URI: http://averta.net
18
  * License: GPL2
@@ -51,7 +51,7 @@ if( is_admin() || false === get_transient( 'auxpfo_plugin_requirements_check' )
51
  'name' => __('Phlox Core Elements', 'auxin-portfolio'), // The plugin name.
52
  'basename' => 'auxin-elements/auxin-elements.php', // The plugin basename (typically the folder name and main php file)
53
  'required' => true, // If true, the user will be notified with a notice to install the plugin.
54
- 'version' => '2.1.9', // E.g. 1.0.0. If set, the active plugin must be this version or higher.
55
  'dependency' => true, // If true, and the plugin is activated, the plugin will be loaded before as a dependeny.
56
  'is_callable' => 'AUXELS' // If set, this callable will be be checked for availability to determine if a plugin is active.
57
  )
@@ -61,7 +61,7 @@ if( is_admin() || false === get_transient( 'auxpfo_plugin_requirements_check' )
61
  array(
62
  'name' => __('Phlox Pro', 'auxin-portfolio'), // The theme name.
63
  'id' => 'phlox-pro', // The theme id name.
64
- 'version' => '4.4.0', // E.g. 1.0.0. If set, the active theme must be this version or higher.
65
  'is_callable' => '', // If set, this callable will be be checked for availability to determine if a theme is active.
66
  'file_required' => get_template_directory() . '/auxin-content/init/const.php'
67
  ),
@@ -69,7 +69,7 @@ if( is_admin() || false === get_transient( 'auxpfo_plugin_requirements_check' )
69
  'name' => __('Phlox', 'auxin-portfolio'), // The theme name.
70
  'id' => 'phlox', // The theme id name.
71
  'update_link' => 'themes.php?theme=phlox',
72
- 'version' => '2.1.7', // E.g. 1.0.0. If set, the active theme must be this version or higher.
73
  'is_callable' => '', // If set, this callable will be be checked for availability to determine if a theme is active.
74
  'file_required' => get_template_directory() . '/auxin-content/init/const.php'
75
  )
12
  * Plugin Name: Phlox Portfolio
13
  * Plugin URI: http://averta.net/phlox/
14
  * Description: Showcase your projects beautifully in Phlox theme
15
+ * Version: 1.6.5
16
  * Author: averta
17
  * Author URI: http://averta.net
18
  * License: GPL2
51
  'name' => __('Phlox Core Elements', 'auxin-portfolio'), // The plugin name.
52
  'basename' => 'auxin-elements/auxin-elements.php', // The plugin basename (typically the folder name and main php file)
53
  'required' => true, // If true, the user will be notified with a notice to install the plugin.
54
+ 'version' => '2.2.5', // E.g. 1.0.0. If set, the active plugin must be this version or higher.
55
  'dependency' => true, // If true, and the plugin is activated, the plugin will be loaded before as a dependeny.
56
  'is_callable' => 'AUXELS' // If set, this callable will be be checked for availability to determine if a plugin is active.
57
  )
61
  array(
62
  'name' => __('Phlox Pro', 'auxin-portfolio'), // The theme name.
63
  'id' => 'phlox-pro', // The theme id name.
64
+ 'version' => '4.4.8', // E.g. 1.0.0. If set, the active theme must be this version or higher.
65
  'is_callable' => '', // If set, this callable will be be checked for availability to determine if a theme is active.
66
  'file_required' => get_template_directory() . '/auxin-content/init/const.php'
67
  ),
69
  'name' => __('Phlox', 'auxin-portfolio'), // The theme name.
70
  'id' => 'phlox', // The theme id name.
71
  'update_link' => 'themes.php?theme=phlox',
72
+ 'version' => '2.2.3', // E.g. 1.0.0. If set, the active theme must be this version or higher.
73
  'is_callable' => '', // If set, this callable will be be checked for availability to determine if a theme is active.
74
  'file_required' => get_template_directory() . '/auxin-content/init/const.php'
75
  )
includes/define.php CHANGED
@@ -15,7 +15,7 @@ if( ! defined( 'THEME_NAME' ) ){
15
 
16
 
17
 
18
- define( 'AUXPFO_VERSION' , '1.6.0' );
19
 
20
  define( 'AUXPFO_SLUG' , 'auxin-portfolio' );
21
 
15
 
16
 
17
 
18
+ define( 'AUXPFO_VERSION' , '1.6.5' );
19
 
20
  define( 'AUXPFO_SLUG' , 'auxin-portfolio' );
21
 
includes/elements/elementor/class-auxpfo-elementor-elements.php CHANGED
@@ -169,6 +169,11 @@ final class Elements {
169
  'class' => __NAMESPACE__ . '\Elements\Recent_Portfolios_Tile'
170
  );
171
 
 
 
 
 
 
172
  return $widgets;
173
  }
174
 
169
  'class' => __NAMESPACE__ . '\Elements\Recent_Portfolios_Tile'
170
  );
171
 
172
+ $widgets['440'] = array(
173
+ 'file' => $this->dir_path . '/recent-portfolios-tile-carousel.php',
174
+ 'class' => __NAMESPACE__ . '\Elements\Recent_Portfolios_Tile_Carousel_Carousel'
175
+ );
176
+
177
  return $widgets;
178
  }
179
 
includes/elements/elementor/recent-portfolios-grid.php CHANGED
@@ -4,6 +4,7 @@ namespace Auxin\Plugin\Portfolio\Elementor\Elements;
4
  use Elementor\Plugin;
5
  use Elementor\Widget_Base;
6
  use Elementor\Controls_Manager;
 
7
  use Elementor\Group_Control_Image_Size;
8
  use Elementor\Group_Control_Typography;
9
  use Elementor\Scheme_Color;
@@ -11,6 +12,7 @@ use Elementor\Scheme_Typography;
11
  use Elementor\Utils;
12
  use Elementor\Control_Media;
13
  use Elementor\Group_Control_Border;
 
14
 
15
 
16
  if ( ! defined( 'ABSPATH' ) ) {
@@ -65,7 +67,7 @@ class Recent_Portfolios_Grid extends Widget_Base {
65
  * @return string Widget icon.
66
  */
67
  public function get_icon() {
68
- return 'eicon-posts-grid';
69
  }
70
 
71
  /**
@@ -624,12 +626,11 @@ class Recent_Portfolios_Grid extends Widget_Base {
624
  array(
625
  'label' => __('Space', 'auxin-portfolio' ),
626
  'description' => __('Specifies space between items in pixels.', 'auxin-portfolio' ),
627
- 'type' => Controls_Manager::SLIDER,
628
- 'range' => array(
629
- 'px' => array(
630
- 'max' => 100
631
- )
632
- )
633
  )
634
  );
635
 
@@ -701,6 +702,17 @@ class Recent_Portfolios_Grid extends Widget_Base {
701
  )
702
  );
703
 
 
 
 
 
 
 
 
 
 
 
 
704
  $this->end_controls_section();
705
 
706
 
@@ -942,6 +954,39 @@ class Recent_Portfolios_Grid extends Widget_Base {
942
  );
943
 
944
  $this->end_controls_section();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
945
  }
946
 
947
  /**
@@ -958,11 +1003,11 @@ class Recent_Portfolios_Grid extends Widget_Base {
958
 
959
  $args = array(
960
  'cat' => $settings['cat'],
961
- 'num' => $settings['num'],
962
  'only_posts__in' => $settings['only_posts__in'],
963
  'include' => $settings['include'],
964
  'exclude' => $settings['exclude'],
965
- 'offset' => $settings['offset'],
966
  'order_by' => $settings['order_by'],
967
  'order' => $settings['order'],
968
  'exclude_without_media' => $settings['exclude_without_media'],
@@ -973,10 +1018,10 @@ class Recent_Portfolios_Grid extends Widget_Base {
973
  'filter_by' => $settings['filter_by'],
974
  'filter_style' => $settings['filter_style'],
975
  'filter_align' => $settings['filter_align'],
976
- 'reveal_transition_duration' => $settings['reveal_transition_duration'],
977
- 'reveal_between_delay' => $settings['reveal_between_delay'],
978
- 'hide_transition_duration' => $settings['hide_transition_duration'],
979
- 'hide_between_delay' => $settings['hide_between_delay'],
980
 
981
  'item_style' => $settings['item_style'],
982
 
@@ -985,7 +1030,7 @@ class Recent_Portfolios_Grid extends Widget_Base {
985
  'show_title' => $settings['display_title'],
986
  'show_info' => $settings['show_info'],
987
  'image_aspect_ratio' => $settings['image_aspect_ratio'],
988
- 'space' => $settings['space']['size'],
989
  'desktop_cnum' => $settings['columns'],
990
  'tablet_cnum' => $settings['columns_tablet'],
991
  'phone_cnum' => $settings['columns_mobile'],
@@ -995,6 +1040,17 @@ class Recent_Portfolios_Grid extends Widget_Base {
995
  'loadmore_label' => $settings['loadmore_label']
996
  );
997
 
 
 
 
 
 
 
 
 
 
 
 
998
  echo auxin_widget_recent_portfolios_grid_callback( $args );
999
  }
1000
 
4
  use Elementor\Plugin;
5
  use Elementor\Widget_Base;
6
  use Elementor\Controls_Manager;
7
+ use Elementor\Post_CSS_File;
8
  use Elementor\Group_Control_Image_Size;
9
  use Elementor\Group_Control_Typography;
10
  use Elementor\Scheme_Color;
12
  use Elementor\Utils;
13
  use Elementor\Control_Media;
14
  use Elementor\Group_Control_Border;
15
+ use Elementor\Group_Control_Background;
16
 
17
 
18
  if ( ! defined( 'ABSPATH' ) ) {
67
  * @return string Widget icon.
68
  */
69
  public function get_icon() {
70
+ return 'eicon-posts-grid auxin-badge';
71
  }
72
 
73
  /**
626
  array(
627
  'label' => __('Space', 'auxin-portfolio' ),
628
  'description' => __('Specifies space between items in pixels.', 'auxin-portfolio' ),
629
+ 'label_block' => true,
630
+ 'type' => Controls_Manager::NUMBER,
631
+ 'default' => '30',
632
+ 'min' => 0,
633
+ 'step' => 1
 
634
  )
635
  );
636
 
702
  )
703
  );
704
 
705
+
706
+ $this->add_group_control(
707
+ Group_Control_Background::get_type(),
708
+ array(
709
+ 'name' => 'item_hover_style',
710
+ 'label' => __( 'Background', 'auxin-portfolio' ),
711
+ 'types' => array( 'classic', 'gradient' ),
712
+ 'selector' => '{{WRAPPER}} .entry-media::after',
713
+ )
714
+ );
715
+
716
  $this->end_controls_section();
717
 
718
 
954
  );
955
 
956
  $this->end_controls_section();
957
+
958
+ /* Custom Css Section
959
+ /*-------------------------------------*/
960
+
961
+ $this->start_controls_section(
962
+ 'custom_css_section',
963
+ array(
964
+ 'label' => __( 'Custom Css', 'auxin-portfolio' ),
965
+ 'tab' => Controls_Manager::TAB_STYLE
966
+ )
967
+ );
968
+
969
+ $this->add_control(
970
+ 'custom_css',
971
+ array(
972
+ 'type' => Controls_Manager::CODE,
973
+ 'label' => __( 'Custom CSS', 'auxin-portfolio' ),
974
+ 'label_block' => true,
975
+ 'language' => 'css'
976
+ )
977
+ );
978
+
979
+ $this->add_control(
980
+ 'custom_css_description',
981
+ array(
982
+ 'raw' => __( 'Use "selector" to target wrapper element. Examples:<br>selector {color: red;} // For main element<br>selector .child-element {margin: 10px;} // For child element<br>.my-class {text-align: center;} // Or use any custom selector', 'auxin-portfolio' ),
983
+ 'type' => Controls_Manager::RAW_HTML,
984
+ 'content_classes' => 'elementor-descriptor',
985
+ 'separator' => 'none'
986
+ )
987
+ );
988
+
989
+ $this->end_controls_section();
990
  }
991
 
992
  /**
1003
 
1004
  $args = array(
1005
  'cat' => $settings['cat'],
1006
+ 'num' => auxin_get_control_size( $settings['num'] ),
1007
  'only_posts__in' => $settings['only_posts__in'],
1008
  'include' => $settings['include'],
1009
  'exclude' => $settings['exclude'],
1010
+ 'offset' => auxin_get_control_size( $settings['offset'] ),
1011
  'order_by' => $settings['order_by'],
1012
  'order' => $settings['order'],
1013
  'exclude_without_media' => $settings['exclude_without_media'],
1018
  'filter_by' => $settings['filter_by'],
1019
  'filter_style' => $settings['filter_style'],
1020
  'filter_align' => $settings['filter_align'],
1021
+ 'reveal_transition_duration' => auxin_get_control_size( $settings['reveal_transition_duration'] ),
1022
+ 'reveal_between_delay' => auxin_get_control_size( $settings['reveal_between_delay'] ),
1023
+ 'hide_transition_duration' => auxin_get_control_size( $settings['hide_transition_duration'] ),
1024
+ 'hide_between_delay' => auxin_get_control_size( $settings['hide_between_delay'] ),
1025
 
1026
  'item_style' => $settings['item_style'],
1027
 
1030
  'show_title' => $settings['display_title'],
1031
  'show_info' => $settings['show_info'],
1032
  'image_aspect_ratio' => $settings['image_aspect_ratio'],
1033
+ 'space' => auxin_get_control_size( $settings['space'] ),
1034
  'desktop_cnum' => $settings['columns'],
1035
  'tablet_cnum' => $settings['columns_tablet'],
1036
  'phone_cnum' => $settings['columns_mobile'],
1040
  'loadmore_label' => $settings['loadmore_label']
1041
  );
1042
 
1043
+ if( ! empty( $settings['custom_css'] ) ){
1044
+ $custom_css = trim( $settings['custom_css'] );
1045
+ $post_css = new Post_CSS_File( get_the_ID() );
1046
+ if ( ! empty( $custom_css ) ) {
1047
+ $custom_css = str_replace( 'selector', $post_css->get_element_unique_selector( $this ), $custom_css );
1048
+ // Add a css comment
1049
+ echo sprintf( '<style>/* Start custom CSS for %s, class: %s */', $this->get_name(), $this->get_unique_selector() ) . $custom_css . '/* End custom CSS */</style>';
1050
+ // $post_css->get_stylesheet()->add_raw_css( $custom_css );
1051
+ }
1052
+ }
1053
+
1054
  echo auxin_widget_recent_portfolios_grid_callback( $args );
1055
  }
1056
 
includes/elements/elementor/recent-portfolios-masonry.php CHANGED
@@ -4,6 +4,7 @@ namespace Auxin\Plugin\Portfolio\Elementor\Elements;
4
  use Elementor\Plugin;
5
  use Elementor\Widget_Base;
6
  use Elementor\Controls_Manager;
 
7
  use Elementor\Group_Control_Image_Size;
8
  use Elementor\Group_Control_Typography;
9
  use Elementor\Scheme_Color;
@@ -65,7 +66,7 @@ class Recent_Portfolios_Masonry extends Widget_Base {
65
  * @return string Widget icon.
66
  */
67
  public function get_icon() {
68
- return 'eicon-posts-masonry';
69
  }
70
 
71
  /**
@@ -637,12 +638,11 @@ class Recent_Portfolios_Masonry extends Widget_Base {
637
  array(
638
  'label' => __('Space', 'auxin-portfolio' ),
639
  'description' => __('Specifies space between items in pixels.', 'auxin-portfolio' ),
640
- 'type' => Controls_Manager::SLIDER,
641
- 'range' => array(
642
- 'px' => array(
643
- 'max' => 100
644
- )
645
- )
646
  )
647
  );
648
 
@@ -957,6 +957,40 @@ class Recent_Portfolios_Masonry extends Widget_Base {
957
  );
958
 
959
  $this->end_controls_section();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
960
  }
961
 
962
  /**
@@ -1000,7 +1034,7 @@ class Recent_Portfolios_Masonry extends Widget_Base {
1000
  'show_title' => $settings['display_title'],
1001
  'show_info' => $settings['show_info'],
1002
  //'image_aspect_ratio' => $settings['image_aspect_ratio'],
1003
- 'space' => $settings['space']['size'],
1004
  'desktop_cnum' => $settings['columns'],
1005
  'tablet_cnum' => $settings['columns_tablet'],
1006
  'phone_cnum' => $settings['columns_mobile'],
@@ -1010,6 +1044,17 @@ class Recent_Portfolios_Masonry extends Widget_Base {
1010
  'loadmore_label' => $settings['loadmore_label']
1011
  );
1012
 
 
 
 
 
 
 
 
 
 
 
 
1013
  echo auxin_widget_recent_portfolios_grid_callback( $args );
1014
  }
1015
 
4
  use Elementor\Plugin;
5
  use Elementor\Widget_Base;
6
  use Elementor\Controls_Manager;
7
+ use Elementor\Post_CSS_File;
8
  use Elementor\Group_Control_Image_Size;
9
  use Elementor\Group_Control_Typography;
10
  use Elementor\Scheme_Color;
66
  * @return string Widget icon.
67
  */
68
  public function get_icon() {
69
+ return 'eicon-posts-masonry auxin-badge';
70
  }
71
 
72
  /**
638
  array(
639
  'label' => __('Space', 'auxin-portfolio' ),
640
  'description' => __('Specifies space between items in pixels.', 'auxin-portfolio' ),
641
+ 'label_block' => true,
642
+ 'type' => Controls_Manager::NUMBER,
643
+ 'default' => '30',
644
+ 'min' => 0,
645
+ 'step' => 1
 
646
  )
647
  );
648
 
957
  );
958
 
959
  $this->end_controls_section();
960
+
961
+ /* Custom Css Section
962
+ /*-------------------------------------*/
963
+
964
+ $this->start_controls_section(
965
+ 'custom_css_section',
966
+ array(
967
+ 'label' => __( 'Custom Css', 'auxin-portfolio' ),
968
+ 'tab' => Controls_Manager::TAB_STYLE
969
+ )
970
+ );
971
+
972
+ $this->add_control(
973
+ 'custom_css',
974
+ array(
975
+ 'type' => Controls_Manager::CODE,
976
+ 'label' => __( 'Custom CSS', 'auxin-portfolio' ),
977
+ 'label_block' => true,
978
+ 'language' => 'css'
979
+ )
980
+ );
981
+
982
+ $this->add_control(
983
+ 'custom_css_description',
984
+ array(
985
+ 'raw' => __( 'Use "selector" to target wrapper element. Examples:<br>selector {color: red;} // For main element<br>selector .child-element {margin: 10px;} // For child element<br>.my-class {text-align: center;} // Or use any custom selector', 'auxin-portfolio' ),
986
+ 'type' => Controls_Manager::RAW_HTML,
987
+ 'content_classes' => 'elementor-descriptor',
988
+ 'separator' => 'none'
989
+ )
990
+ );
991
+
992
+ $this->end_controls_section();
993
+
994
  }
995
 
996
  /**
1034
  'show_title' => $settings['display_title'],
1035
  'show_info' => $settings['show_info'],
1036
  //'image_aspect_ratio' => $settings['image_aspect_ratio'],
1037
+ 'space' => $settings['space'],
1038
  'desktop_cnum' => $settings['columns'],
1039
  'tablet_cnum' => $settings['columns_tablet'],
1040
  'phone_cnum' => $settings['columns_mobile'],
1044
  'loadmore_label' => $settings['loadmore_label']
1045
  );
1046
 
1047
+ if( ! empty( $settings['custom_css'] ) ){
1048
+ $custom_css = trim( $settings['custom_css'] );
1049
+ $post_css = new Post_CSS_File( get_the_ID() );
1050
+ if ( ! empty( $custom_css ) ) {
1051
+ $custom_css = str_replace( 'selector', $post_css->get_element_unique_selector( $this ), $custom_css );
1052
+ // Add a css comment
1053
+ echo sprintf( '<style>/* Start custom CSS for %s, class: %s */', $this->get_name(), $this->get_unique_selector() ) . $custom_css . '/* End custom CSS */</style>';
1054
+ // $post_css->get_stylesheet()->add_raw_css( $custom_css );
1055
+ }
1056
+ }
1057
+
1058
  echo auxin_widget_recent_portfolios_grid_callback( $args );
1059
  }
1060
 
includes/elements/elementor/recent-portfolios-tile-carousel.php ADDED
@@ -0,0 +1,861 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Auxin\Plugin\Portfolio\Elementor\Elements;
3
+
4
+ use Elementor\Plugin;
5
+ use Elementor\Widget_Base;
6
+ use Elementor\Controls_Manager;
7
+ use Elementor\Post_CSS_File;
8
+ use Elementor\Group_Control_Image_Size;
9
+ use Elementor\Group_Control_Typography;
10
+ use Elementor\Scheme_Color;
11
+ use Elementor\Scheme_Typography;
12
+ use Elementor\Utils;
13
+ use Elementor\Control_Media;
14
+ use Elementor\Group_Control_Border;
15
+
16
+
17
+ if ( ! defined( 'ABSPATH' ) ) {
18
+ exit; // Exit if accessed directly.
19
+ }
20
+
21
+ /**
22
+ * Elementor 'Recent_Portfolios_Tile_Carousel' widget.
23
+ *
24
+ * Elementor widget that displays an 'Recent_Portfolios_Tile_Carousel' with lightbox.
25
+ *
26
+ * @since 1.0.0
27
+ */
28
+ class Recent_Portfolios_Tile_Carousel_Carousel extends Widget_Base {
29
+
30
+ /**
31
+ * Get widget name.
32
+ *
33
+ * Retrieve 'Recent_Portfolios_Tile_Carousel' widget name.
34
+ *
35
+ * @since 1.0.0
36
+ * @access public
37
+ *
38
+ * @return string Widget name.
39
+ */
40
+ public function get_name() {
41
+ return 'aux_recent_portfolios_tile_carousel';
42
+ }
43
+
44
+ /**
45
+ * Get widget title.
46
+ *
47
+ * Retrieve 'Recent_Portfolios_Tile_Carousel' widget title.
48
+ *
49
+ * @since 1.0.0
50
+ * @access public
51
+ *
52
+ * @return string Widget title.
53
+ */
54
+ public function get_title() {
55
+ return __('Tiles Carousel Portfolios', 'auxin-portfolio' );
56
+ }
57
+
58
+ /**
59
+ * Get widget icon.
60
+ *
61
+ * Retrieve 'Recent_Portfolios_Tile_Carousel' widget icon.
62
+ *
63
+ * @since 1.0.0
64
+ * @access public
65
+ *
66
+ * @return string Widget icon.
67
+ */
68
+ public function get_icon() {
69
+ return 'eicon-posts-carousel auxin-badge';
70
+ }
71
+
72
+ /**
73
+ * Get widget categories.
74
+ *
75
+ * Retrieve 'Recent_Portfolios_Tile_Carousel' widget icon.
76
+ *
77
+ * @since 1.0.0
78
+ * @access public
79
+ *
80
+ * @return string Widget icon.
81
+ */
82
+ public function get_categories() {
83
+ return array( 'auxin-portfolio' );
84
+ }
85
+
86
+ /**
87
+ * Retrieve the terms in a given taxonomy or list of taxonomies.
88
+ *
89
+ * Retrieve 'Recent_Portfolios_Tile_Carousel' widget icon.
90
+ *
91
+ * @since 1.0.0
92
+ * @access public
93
+ *
94
+ * @return string Widget icon.
95
+ */
96
+ public function get_terms() {
97
+ // Get terms
98
+ $terms = get_terms(
99
+ array(
100
+ 'taxonomy' => 'portfolio-cat',
101
+ 'orderby' => 'count',
102
+ 'hide_empty' => true
103
+ )
104
+ );
105
+
106
+ // Then create a list
107
+ $list = array( ' ' => __('All Categories', 'auxin-portfolio' ) ) ;
108
+
109
+ if ( ! is_wp_error( $terms ) && is_array( $terms ) ){
110
+ foreach ( $terms as $key => $value ) {
111
+ $list[$value->term_id] = $value->name;
112
+ }
113
+ }
114
+
115
+ return $list;
116
+ }
117
+
118
+ /**
119
+ * Register 'Recent_Portfolios_Tile_Carousel' widget controls.
120
+ *
121
+ * Adds different input fields to allow the user to change and customize the widget settings.
122
+ *
123
+ * @since 1.0.0
124
+ * @access protected
125
+ */
126
+ protected function _register_controls() {
127
+
128
+ /*-------------------------------------------------------------------*/
129
+ /* Layout TAB
130
+ /*-------------------------------------------------------------------*/
131
+
132
+ /* Layout Section
133
+ /*-------------------------------------*/
134
+
135
+ $this->start_controls_section(
136
+ 'layout_section',
137
+ array(
138
+ 'label' => __('Layout', 'auxin-portfolio' ),
139
+ 'tab' => Controls_Manager::TAB_LAYOUT
140
+ )
141
+ );
142
+
143
+ $this->add_control(
144
+ 'tile_style_pattern',
145
+ array(
146
+ 'label' => __('Post tile styles','auxin-portfolio' ),
147
+ 'description' => __('Move your mouse over each item in order to preview the hover effect.','auxin-portfolio' ),
148
+ 'style_items' => 'max-width:31%;',
149
+ 'type' => 'aux-visual-select',
150
+ 'options' => array(
151
+ 'default' => array(
152
+ 'label' => __( 'Default', 'auxin-portfolio' ),
153
+ 'image' => AUXELS_ADMIN_URL . '/assets/images/visual-select/tile-5.svg'
154
+ ),
155
+ 'pattern-1' => array(
156
+ 'label' => __( 'Pattern 1', 'auxin-portfolio' ),
157
+ 'image' => AUXELS_ADMIN_URL . '/assets/images/visual-select/tile-3.svg'
158
+ ),
159
+ 'pattern-2' => array(
160
+ 'label' => __( 'Pattern 2', 'auxin-portfolio' ),
161
+ 'image' => AUXELS_ADMIN_URL . '/assets/images/visual-select/tile-6.svg'
162
+ ),
163
+ 'pattern-3' => array(
164
+ 'label' => __( 'Pattern 3', 'auxin-portfolio' ),
165
+ 'image' => AUXELS_ADMIN_URL . '/assets/images/visual-select/tile-7.svg'
166
+ ),
167
+ 'pattern-4' => array(
168
+ 'label' => __( 'Pattern 4', 'auxin-portfolio' ),
169
+ 'image' => AUXELS_ADMIN_URL . '/assets/images/visual-select/tile-8.svg'
170
+ ),
171
+ 'pattern-5' => array(
172
+ 'label' => __( 'Pattern 5', 'auxin-portfolio' ),
173
+ 'image' => AUXELS_ADMIN_URL . '/assets/images/visual-select/tile-4.svg'
174
+ ),
175
+ 'pattern-6' => array(
176
+ 'label' => __('Pattern 6', 'auxin-portfolio' ),
177
+ 'image' => AUXELS_ADMIN_URL . '/assets/images/visual-select/tile-1.svg'
178
+ ),
179
+ 'pattern-7' => array(
180
+ 'label' => __('Pattern 7', 'auxin-portfolio' ),
181
+ 'image' => AUXELS_ADMIN_URL . '/assets/images/visual-select/tile-2.svg'
182
+ ),
183
+ 'pattern-8' => array(
184
+ 'label' => __('Pattern 8', 'auxin-portfolio' ),
185
+ 'image' => AUXELS_ADMIN_URL . '/assets/images/visual-select/tile-2.svg'
186
+ )
187
+ ),
188
+ 'default' => 'default'
189
+ )
190
+ );
191
+
192
+ $this->add_control(
193
+ 'display_title',
194
+ array(
195
+ 'label' => __('Display title', 'auxin-portfolio' ),
196
+ 'type' => Controls_Manager::SWITCHER,
197
+ 'label_on' => __( 'On', 'auxin-portfolio' ),
198
+ 'label_off' => __( 'Off', 'auxin-portfolio' ),
199
+ 'default' => 'yes'
200
+ )
201
+ );
202
+
203
+ $this->add_control(
204
+ 'show_info',
205
+ array(
206
+ 'label' => __('Insert portfolio meta','auxin-portfolio' ),
207
+ 'type' => Controls_Manager::SWITCHER,
208
+ 'label_on' => __( 'On', 'auxin-portfolio' ),
209
+ 'label_off' => __( 'Off', 'auxin-portfolio' ),
210
+ 'default' => 'yes'
211
+ )
212
+ );
213
+
214
+ $this->add_control(
215
+ 'deeplink',
216
+ array(
217
+ 'label' => __('Deeplink', 'auxin-portfolio' ),
218
+ 'description' => __('Enables the deeplink feature, it updates URL based on page and filter status.', 'auxin-portfolio' ),
219
+ 'type' => Controls_Manager::SWITCHER,
220
+ 'label_on' => __( 'On', 'auxin-portfolio' ),
221
+ 'label_off' => __( 'Off', 'auxin-portfolio' ),
222
+ 'default' => 'no'
223
+ )
224
+ );
225
+
226
+ $this->add_control(
227
+ 'deeplink_slug',
228
+ array(
229
+ 'label' => __('Deeplink slug', 'auxin-portfolio' ),
230
+ 'description' => __('Specifies the deeplink slug value in address bar.', 'auxin-portfolio' ),
231
+ 'type' => Controls_Manager::TEXT,
232
+ 'default' => '',
233
+ 'condition' => array(
234
+ 'deeplink' => 'yes'
235
+ )
236
+ )
237
+ );
238
+
239
+ $this->end_controls_section();
240
+
241
+ /* Carousel Section
242
+ /*-------------------------------------*/
243
+
244
+ $this->start_controls_section(
245
+ 'carousel_section',
246
+ array(
247
+ 'label' => __('Carousel', 'auxin-portfolio' ),
248
+ 'tab' => Controls_Manager::TAB_LAYOUT
249
+ )
250
+ );
251
+
252
+ $this->add_control(
253
+ 'carousel_navigation_control',
254
+ array(
255
+ 'label' => __('Navigation control', 'auxin-portfolio'),
256
+ 'type' => Controls_Manager::SELECT,
257
+ 'default' => 'bullets',
258
+ 'options' => array(
259
+ '' => __('None', 'auxin-portfolio'),
260
+ 'arrows' => __('Arrows', 'auxin-portfolio'),
261
+ 'bullets' => __('Bullets', 'auxin-portfolio')
262
+ )
263
+ )
264
+ );
265
+
266
+ $this->add_control(
267
+ 'button_style',
268
+ array(
269
+ 'label' => __('Button Navigation Style','auxin-portfolio' ),
270
+ 'type' => 'aux-visual-select',
271
+ 'default' => 'pattern-1',
272
+ 'options' => array(
273
+ 'pattern-1' => array(
274
+ 'label' => __('Pattern 1', 'auxin-portfolio' ),
275
+ 'image' => AUXIN_URL . 'images/visual-select/button-normal.svg'
276
+ ),
277
+ 'pattern-2' => array(
278
+ 'label' => __('Pattern 2', 'auxin-portfolio' ),
279
+ 'image' => AUXIN_URL . 'images/visual-select/button-curved.svg'
280
+ )
281
+ ),
282
+ 'condition' => array(
283
+ 'carousel_navigation_control' => array( 'arrows' ),
284
+ )
285
+ )
286
+ );
287
+
288
+ $this->add_control(
289
+ 'carousel_navigation',
290
+ array(
291
+ 'label' => __('Navigation type', 'auxin-portfolio'),
292
+ 'type' => Controls_Manager::SELECT,
293
+ 'default' => 'peritem',
294
+ 'options' => array(
295
+ 'peritem' => __('Move per column', 'auxin-portfolio'),
296
+ 'perpage' => __('Move per page', 'auxin-portfolio'),
297
+ 'scroll' => __('Smooth scroll', 'auxin-portfolio')
298
+ )
299
+ )
300
+ );
301
+
302
+ $this->add_control(
303
+ 'carousel_loop',
304
+ array(
305
+ 'label' => __('Loop navigation','auxin-portfolio' ),
306
+ 'type' => Controls_Manager::SWITCHER,
307
+ 'label_on' => __( 'On', 'auxin-portfolio' ),
308
+ 'label_off' => __( 'Off', 'auxin-portfolio' ),
309
+ 'return_value' => 'yes',
310
+ 'default' => 'yes'
311
+ )
312
+ );
313
+
314
+ $this->add_control(
315
+ 'carousel_autoplay',
316
+ array(
317
+ 'label' => __('Autoplay carousel','auxin-portfolio' ),
318
+ 'type' => Controls_Manager::SWITCHER,
319
+ 'label_on' => __( 'On', 'auxin-portfolio' ),
320
+ 'label_off' => __( 'Off', 'auxin-portfolio' ),
321
+ 'return_value' => 'yes',
322
+ 'default' => 'no'
323
+ )
324
+ );
325
+
326
+ $this->add_control(
327
+ 'carousel_autoplay_delay',
328
+ array(
329
+ 'label' => __( 'Autoplay delay', 'auxin-portfolio' ),
330
+ 'description' => __('Specifies the delay between auto-forwarding in seconds.', 'auxin-portfolio' ),
331
+ 'type' => Controls_Manager::NUMBER,
332
+ 'default' => '2'
333
+ )
334
+ );
335
+
336
+ $this->end_controls_section();
337
+
338
+ /*-------------------------------------------------------------------*/
339
+ /* Content TAB
340
+ /*-------------------------------------------------------------------*/
341
+
342
+ /* Query Section
343
+ /*-------------------------------------*/
344
+
345
+ $this->start_controls_section(
346
+ 'query_section',
347
+ array(
348
+ 'label' => __('Query', 'auxin-portfolio' ),
349
+ )
350
+ );
351
+
352
+ $this->add_control(
353
+ 'cat',
354
+ array(
355
+ 'label' => __('Categories', 'auxin-portfolio'),
356
+ 'description' => __('Specifies a category that you want to show posts from it.', 'auxin-portfolio' ),
357
+ 'type' => Controls_Manager::SELECT2,
358
+ 'multiple' => true,
359
+ 'options' => $this->get_terms(),
360
+ 'default' => array( ' ' ),
361
+ )
362
+ );
363
+
364
+ $this->add_control(
365
+ 'num',
366
+ array(
367
+ 'label' => __('Number of portfolios to show in per page', 'auxin-portfolio'),
368
+ 'description' => __('Leave it empty to show all items', 'auxin-portfolio'),
369
+ 'label_block' => true,
370
+ 'type' => Controls_Manager::NUMBER,
371
+ 'default' => '5',
372
+ 'min' => 1,
373
+ 'step' => 1
374
+ )
375
+ );
376
+
377
+ $this->add_control(
378
+ 'page',
379
+ array(
380
+ 'label' => __('Number of Pages', 'auxin-portfolio'),
381
+ 'type' => Controls_Manager::NUMBER,
382
+ 'default' => '2',
383
+ 'min' => 1,
384
+ 'step' => 1
385
+ )
386
+ );
387
+
388
+ $this->add_control(
389
+ 'exclude_without_media',
390
+ array(
391
+ 'label' => __('Exclude portfolios without media','auxin-portfolio' ),
392
+ 'type' => Controls_Manager::SWITCHER,
393
+ 'label_on' => __( 'On', 'auxin-portfolio' ),
394
+ 'label_off' => __( 'Off', 'auxin-portfolio' ),
395
+ 'return_value' => 'yes',
396
+ 'default' => 'yes'
397
+ )
398
+ );
399
+
400
+ $this->add_control(
401
+ 'order_by',
402
+ array(
403
+ 'label' => __('Order by', 'auxin-portfolio'),
404
+ 'type' => Controls_Manager::SELECT,
405
+ 'default' => 'date',
406
+ 'options' => array(
407
+ 'date' => __('Date', 'auxin-portfolio'),
408
+ 'menu_order date' => __('Menu Order', 'auxin-portfolio'),
409
+ 'title' => __('Title', 'auxin-portfolio'),
410
+ 'ID' => __('ID', 'auxin-portfolio'),
411
+ 'rand' => __('Random', 'auxin-portfolio'),
412
+ 'comment_count' => __('Comments', 'auxin-portfolio'),
413
+ 'modified' => __('Date Modified', 'auxin-portfolio'),
414
+ 'author' => __('Author', 'auxin-portfolio'),
415
+ 'post__in' => __('Inserted Post IDs', 'auxin-portfolio')
416
+ ),
417
+ )
418
+ );
419
+
420
+ $this->add_control(
421
+ 'order',
422
+ array(
423
+ 'label' => __('Order', 'auxin-portfolio'),
424
+ 'type' => Controls_Manager::SELECT,
425
+ 'default' => 'DESC',
426
+ 'options' => array(
427
+ 'DESC' => __('Descending', 'auxin-portfolio'),
428
+ 'ASC' => __('Ascending', 'auxin-portfolio'),
429
+ ),
430
+ )
431
+ );
432
+
433
+ $this->add_control(
434
+ 'only_posts__in',
435
+ array(
436
+ 'label' => __('Only portfolios','auxin-portfolio' ),
437
+ 'description' => __('If you intend to display ONLY specific portfolios, you should specify the portfolios here. You have to insert the post IDs that are separated by comma (eg. 53,34,87,25).', 'auxin-portfolio' ),
438
+ 'type' => Controls_Manager::TEXT
439
+ )
440
+ );
441
+
442
+ $this->add_control(
443
+ 'include',
444
+ array(
445
+ 'label' => __('Include portfolios','auxin-portfolio' ),
446
+ 'description' => __('If you intend to include additional portfolios, you should specify the portfolios here. You have to insert the Post IDs that are separated by comma (eg. 53,34,87,25)', 'auxin-portfolio' ),
447
+ 'type' => Controls_Manager::TEXT
448
+ )
449
+ );
450
+
451
+ $this->add_control(
452
+ 'exclude',
453
+ array(
454
+ 'label' => __('Exclude portfolios','auxin-portfolio' ),
455
+ 'description' => __('If you intend to exclude specific portfolios from result, you should specify the portfolios here. You have to insert the Post IDs that are separated by comma (eg. 53,34,87,25)', 'auxin-portfolio' ),
456
+ 'type' => Controls_Manager::TEXT
457
+ )
458
+ );
459
+
460
+ $this->add_control(
461
+ 'offset',
462
+ array(
463
+ 'label' => __('Start offset','auxin-portfolio' ),
464
+ 'description' => __('Number of portfolios to display or pass over.', 'auxin-portfolio' ),
465
+ 'type' => Controls_Manager::NUMBER,
466
+ 'default' => ''
467
+ )
468
+ );
469
+
470
+ $this->end_controls_section();
471
+
472
+ /*-------------------------------------------------------------------*/
473
+ /* Style TAB
474
+ /*-------------------------------------------------------------------*/
475
+
476
+ /* Tile Section
477
+ /*-------------------------------------*/
478
+
479
+ $this->start_controls_section(
480
+ 'tiles_style_section',
481
+ array(
482
+ 'label' => __( 'Hover', 'auxin-portfolio' ),
483
+ 'tab' => Controls_Manager::TAB_STYLE
484
+ )
485
+ );
486
+
487
+ $this->add_control(
488
+ 'item_style',
489
+ array(
490
+ 'label' => __('Tiles hover type','auxin-portfolio' ),
491
+ 'type' => 'aux-visual-select',
492
+ 'default' => 'overlay',
493
+ 'style_items' => 'max-width:200px;',
494
+ 'options' => array(
495
+ 'overlay' => array(
496
+ 'label' => __('Overlay title style 1', 'auxin-portfolio'),
497
+ 'video_src' => AUXPFO_ADMIN_URL . '/assets/images/preview/OverlayTitle1.webm webm'
498
+ ),
499
+ 'overlay-boxed' => array(
500
+ 'label' => __('Overlay title style 2', 'auxin-portfolio'),
501
+ 'video_src' => AUXPFO_ADMIN_URL . '/assets/images/preview/OverlayTitle2.webm webm'
502
+ ),
503
+ 'overlay-lightbox' => array(
504
+ 'label' => __('Overlay title with lightbox style 1', 'auxin-portfolio'),
505
+ 'video_src' => AUXPFO_ADMIN_URL . '/assets/images/preview/OverlayTitleLightbox1.webm webm'
506
+ ),
507
+ 'overlay-lightbox-boxed' => array(
508
+ 'label' => __('Overlay title with lightbox style 2', 'auxin-portfolio'),
509
+ 'video_src' => AUXPFO_ADMIN_URL . '/assets/images/preview/OverlayTitleLightbox2.webm webm'
510
+ )
511
+ )
512
+ )
513
+ );
514
+
515
+ $this->add_control(
516
+ 'tile_hover_background',
517
+ array(
518
+ 'label' => __( 'Tiles Hover Background', 'auxin-portfolio' ),
519
+ 'type' => Controls_Manager::COLOR,
520
+ 'selectors' => array(
521
+ '{{WRAPPER}} .entry-media::after' => 'background-color: {{VALUE}};',
522
+ )
523
+ )
524
+ );
525
+
526
+ $this->end_controls_section();
527
+
528
+ /* Title Section
529
+ /*-------------------------------------*/
530
+
531
+ $this->start_controls_section(
532
+ 'title_style_section',
533
+ array(
534
+ 'label' => __( 'Title', 'auxin-portfolio' ),
535
+ 'tab' => Controls_Manager::TAB_STYLE,
536
+ 'conditions' => array(
537
+ 'relation' => 'or',
538
+ 'terms' => array(
539
+ array(
540
+ 'name' => 'display_title',
541
+ 'operator' => '===',
542
+ 'value' => 'yes',
543
+ )
544
+ ),
545
+ ),
546
+ )
547
+ );
548
+
549
+ // Title heading
550
+
551
+ $this->start_controls_tabs( 'title_colors' );
552
+
553
+ $this->start_controls_tab(
554
+ 'title_color_normal',
555
+ array(
556
+ 'label' => __( 'Normal' , 'auxin-portfolio' ),
557
+ 'condition' => array(
558
+ 'display_title' => 'yes'
559
+ )
560
+ )
561
+ );
562
+
563
+ $this->add_control(
564
+ 'title_color',
565
+ array(
566
+ 'label' => __( 'Color', 'auxin-portfolio' ),
567
+ 'type' => Controls_Manager::COLOR,
568
+ 'selectors' => array(
569
+ '{{WRAPPER}} .aux-portfolio-item-title a' => 'color: {{VALUE}};',
570
+ ),
571
+ 'condition' => array(
572
+ 'display_title' => 'yes'
573
+ )
574
+ )
575
+ );
576
+
577
+ $this->end_controls_tab();
578
+
579
+ $this->start_controls_tab(
580
+ 'title_color_hover',
581
+ array(
582
+ 'label' => __( 'Hover' , 'auxin-portfolio' ),
583
+ 'condition' => array(
584
+ 'display_title' => 'yes'
585
+ )
586
+ )
587
+ );
588
+
589
+ $this->add_control(
590
+ 'title_hover_color',
591
+ array(
592
+ 'label' => __( 'Color', 'auxin-portfolio' ),
593
+ 'type' => Controls_Manager::COLOR,
594
+ 'selectors' => array(
595
+ '{{WRAPPER}} .aux-portfolio-item-title a:hover' => 'color:{{VALUE}};',
596
+ ),
597
+ 'condition' => array(
598
+ 'display_title' => 'yes'
599
+ )
600
+ )
601
+ );
602
+
603
+ $this->end_controls_tab();
604
+
605
+ $this->end_controls_tabs();
606
+
607
+ $this->add_group_control(
608
+ Group_Control_Typography::get_type(),
609
+ array(
610
+ 'name' => 'title_typography',
611
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_1,
612
+ 'selector' => '{{WRAPPER}} .aux-portfolio-item-title',
613
+ 'condition' => array(
614
+ 'display_title' => 'yes'
615
+ )
616
+ )
617
+ );
618
+
619
+ $this->add_responsive_control(
620
+ 'title_margin_bottom',
621
+ array(
622
+ 'label' => __( 'Bottom space', 'auxin-portfolio' ),
623
+ 'type' => Controls_Manager::SLIDER,
624
+ 'range' => array(
625
+ 'px' => array(
626
+ 'max' => 100,
627
+ ),
628
+ ),
629
+ 'selectors' => array(
630
+ '{{WRAPPER}} .aux-portfolio-item-title' => 'margin-bottom: {{SIZE}}{{UNIT}};',
631
+ ),
632
+ 'condition' => array(
633
+ 'display_title' => 'yes'
634
+ )
635
+ )
636
+ );
637
+
638
+ $this->end_controls_section();
639
+
640
+
641
+ /* Meta Info Section
642
+ /*-------------------------------------*/
643
+
644
+ $this->start_controls_section(
645
+ 'info_style_section',
646
+ array(
647
+ 'label' => __( 'Meta Info', 'auxin-portfolio' ),
648
+ 'tab' => Controls_Manager::TAB_STYLE,
649
+ 'conditions' => array(
650
+ 'relation' => 'or',
651
+ 'terms' => array(
652
+ array(
653
+ 'name' => 'show_info',
654
+ 'operator' => '===',
655
+ 'value' => 'yes',
656
+ )
657
+ ),
658
+ ),
659
+ )
660
+ );
661
+
662
+ $this->start_controls_tabs( 'info_colors' );
663
+
664
+ $this->start_controls_tab(
665
+ 'info_color_normal',
666
+ array(
667
+ 'label' => __( 'Normal' , 'auxin-portfolio' ),
668
+ 'condition' => array(
669
+ 'show_info' => 'yes'
670
+ )
671
+ )
672
+ );
673
+
674
+ $this->add_control(
675
+ 'info_color',
676
+ array(
677
+ 'label' => __( 'Color', 'auxin-portfolio' ),
678
+ 'type' => Controls_Manager::COLOR,
679
+ 'selectors' => array(
680
+ '{{WRAPPER}} .entry-tax a' => 'color: {{VALUE}};',
681
+ ),
682
+ 'condition' => array(
683
+ 'show_info' => 'yes'
684
+ )
685
+ )
686
+ );
687
+
688
+ $this->end_controls_tab();
689
+
690
+ $this->start_controls_tab(
691
+ 'info_color_hover',
692
+ array(
693
+ 'label' => __( 'Hover' , 'auxin-portfolio' ),
694
+ 'condition' => array(
695
+ 'show_info' => 'yes'
696
+ )
697
+ )
698
+ );
699
+
700
+ $this->add_control(
701
+ 'info_hover_color',
702
+ array(
703
+ 'label' => __( 'Color', 'auxin-portfolio' ),
704
+ 'type' => Controls_Manager::COLOR,
705
+ 'selectors' => array(
706
+ '{{WRAPPER}} .entry-tax a:hover' => 'color: {{VALUE}};',
707
+ ),
708
+ 'condition' => array(
709
+ 'show_info' => 'yes'
710
+ )
711
+ )
712
+ );
713
+
714
+ $this->end_controls_tab();
715
+
716
+ $this->end_controls_tabs();
717
+
718
+ $this->add_group_control(
719
+ Group_Control_Typography::get_type(),
720
+ array(
721
+ 'name' => 'info_typography',
722
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_1,
723
+ 'selector' => '{{WRAPPER}} .entry-tax',
724
+ 'condition' => array(
725
+ 'show_info' => 'yes'
726
+ )
727
+ )
728
+ );
729
+
730
+ $this->add_responsive_control(
731
+ 'info_margin_bottom',
732
+ array(
733
+ 'label' => __( 'Bottom space', 'auxin-portfolio' ),
734
+ 'type' => Controls_Manager::SLIDER,
735
+ 'range' => array(
736
+ 'px' => array(
737
+ 'max' => 100
738
+ )
739
+ ),
740
+ 'selectors' => array(
741
+ '{{WRAPPER}} .entry-tax' => 'margin-bottom: {{SIZE}}{{UNIT}};'
742
+ ),
743
+ 'condition' => array(
744
+ 'show_info' => 'yes'
745
+ )
746
+ )
747
+ );
748
+
749
+ $this->add_responsive_control(
750
+ 'info_spacing_between',
751
+ array(
752
+ 'label' => __( 'Space between metas', 'auxin-portfolio' ),
753
+ 'type' => Controls_Manager::SLIDER,
754
+ 'range' => array(
755
+ 'px' => array(
756
+ 'max' => 30
757
+ )
758
+ ),
759
+ 'selectors' => array(
760
+ '{{WRAPPER}} .entry-tax a:after' => 'margin-right: {{SIZE}}{{UNIT}}; margin-left: {{SIZE}}{{UNIT}};'
761
+ )
762
+ )
763
+ );
764
+
765
+ $this->end_controls_section();
766
+
767
+ /* Custom Css Section
768
+ /*-------------------------------------*/
769
+
770
+ $this->start_controls_section(
771
+ 'custom_css_section',
772
+ array(
773
+ 'label' => __( 'Custom Css', 'auxin-portfolio' ),
774
+ 'tab' => Controls_Manager::TAB_STYLE
775
+ )
776
+ );
777
+
778
+ $this->add_control(
779
+ 'custom_css',
780
+ array(
781
+ 'type' => Controls_Manager::CODE,
782
+ 'label' => __( 'Custom CSS', 'auxin-portfolio' ),
783
+ 'label_block' => true,
784
+ 'language' => 'css'
785
+ )
786
+ );
787
+
788
+ $this->add_control(
789
+ 'custom_css_description',
790
+ array(
791
+ 'raw' => __( 'Use "selector" to target wrapper element. Examples:<br>selector {color: red;} // For main element<br>selector .child-element {margin: 10px;} // For child element<br>.my-class {text-align: center;} // Or use any custom selector', 'auxin-portfolio' ),
792
+ 'type' => Controls_Manager::RAW_HTML,
793
+ 'content_classes' => 'elementor-descriptor',
794
+ 'separator' => 'none'
795
+ )
796
+ );
797
+
798
+ $this->end_controls_section();
799
+
800
+ }
801
+
802
+ /**
803
+ * Render image box widget output on the frontend.
804
+ *
805
+ * Written in PHP and used to generate the final HTML.
806
+ *
807
+ * @since 1.0.0
808
+ * @access protected
809
+ */
810
+ protected function render() {
811
+
812
+ $settings = $this->get_settings_for_display();
813
+
814
+ $args = array(
815
+ // Layout section
816
+ 'tile_style_pattern' => $settings['tile_style_pattern'],
817
+ 'display_title' => $settings['display_title'],
818
+ 'show_info' => $settings['show_info'],
819
+ 'deeplink' => $settings['deeplink'],
820
+ 'deeplink_slug' => $settings['deeplink_slug'],
821
+
822
+ // Carousel section
823
+ 'carousel_navigation' => $settings['carousel_navigation'],
824
+ 'button_style' => $settings['button_style'],
825
+ 'carousel_navigation_control' => $settings['carousel_navigation_control'],
826
+ 'carousel_loop' => $settings['carousel_loop'],
827
+ 'carousel_autoplay' => $settings['carousel_autoplay'],
828
+ 'carousel_autoplay_delay' => $settings['carousel_autoplay_delay'],
829
+
830
+ // Query section
831
+ 'cat' => $settings['cat'],
832
+ 'num' => $settings['num'],
833
+ 'page' => $settings['page'],
834
+ 'only_posts__in' => $settings['only_posts__in'],
835
+ 'include' => $settings['include'],
836
+ 'exclude' => $settings['exclude'],
837
+ 'offset' => $settings['offset'],
838
+ 'order_by' => $settings['order_by'],
839
+ 'order' => $settings['order'],
840
+ 'exclude_without_media' => $settings['exclude_without_media'],
841
+
842
+ 'item_style' => $settings['item_style'],
843
+ 'tile_skin' => 'darken',
844
+
845
+ );
846
+
847
+ if( ! empty( $settings['custom_css'] ) ){
848
+ $custom_css = trim( $settings['custom_css'] );
849
+ $post_css = new Post_CSS_File( get_the_ID() );
850
+ if ( ! empty( $custom_css ) ) {
851
+ $custom_css = str_replace( 'selector', $post_css->get_element_unique_selector( $this ), $custom_css );
852
+ // Add a css comment
853
+ echo sprintf( '<style>/* Start custom CSS for %s, class: %s */', $this->get_name(), $this->get_unique_selector() ) . $custom_css . '/* End custom CSS */</style>';
854
+ // $post_css->get_stylesheet()->add_raw_css( $custom_css );
855
+ }
856
+ }
857
+
858
+ echo auxin_widget_recent_portfolios_tiles_carousel_callback( $args );
859
+ }
860
+
861
+ }
includes/elements/elementor/recent-portfolios-tile.php CHANGED
@@ -4,6 +4,7 @@ namespace Auxin\Plugin\Portfolio\Elementor\Elements;
4
  use Elementor\Plugin;
5
  use Elementor\Widget_Base;
6
  use Elementor\Controls_Manager;
 
7
  use Elementor\Group_Control_Image_Size;
8
  use Elementor\Group_Control_Typography;
9
  use Elementor\Scheme_Color;
@@ -11,6 +12,7 @@ use Elementor\Scheme_Typography;
11
  use Elementor\Utils;
12
  use Elementor\Control_Media;
13
  use Elementor\Group_Control_Border;
 
14
 
15
 
16
  if ( ! defined( 'ABSPATH' ) ) {
@@ -65,7 +67,7 @@ class Recent_Portfolios_Tile extends Widget_Base {
65
  * @return string Widget icon.
66
  */
67
  public function get_icon() {
68
- return 'eicon-posts-group';
69
  }
70
 
71
  /**
@@ -640,19 +642,41 @@ class Recent_Portfolios_Tile extends Widget_Base {
640
  $this->add_control(
641
  'tiles_item_style',
642
  array(
643
- 'label' => __('Tiles hover type', 'auxin-portfolio'),
644
- 'label_block' => true,
645
- 'type' => Controls_Manager::SELECT,
646
  'default' => 'overlay',
 
647
  'options' => array(
648
- 'overlay' => __('Overlay title style 1', 'auxin-portfolio' ),
649
- 'overlay-boxed' => __('Overlay title style 2', 'auxin-portfolio' ),
650
- 'overlay-lightbox' => __('Overlay title with lightbox style 1', 'auxin-portfolio' ),
651
- 'overlay-lightbox-boxed' => __('Overlay title with lightbox style 2', 'auxin-portfolio' )
 
 
 
 
 
 
 
 
 
 
 
 
652
  )
653
  )
654
  );
655
 
 
 
 
 
 
 
 
 
 
 
656
  $this->end_controls_section();
657
 
658
 
@@ -894,6 +918,39 @@ class Recent_Portfolios_Tile extends Widget_Base {
894
  );
895
 
896
  $this->end_controls_section();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
897
  }
898
 
899
  /**
@@ -947,6 +1004,17 @@ class Recent_Portfolios_Tile extends Widget_Base {
947
  'loadmore_label' => $settings['loadmore_label']
948
  );
949
 
 
 
 
 
 
 
 
 
 
 
 
950
  echo auxin_widget_recent_portfolios_grid_callback( $args );
951
  }
952
 
4
  use Elementor\Plugin;
5
  use Elementor\Widget_Base;
6
  use Elementor\Controls_Manager;
7
+ use Elementor\Post_CSS_File;
8
  use Elementor\Group_Control_Image_Size;
9
  use Elementor\Group_Control_Typography;
10
  use Elementor\Scheme_Color;
12
  use Elementor\Utils;
13
  use Elementor\Control_Media;
14
  use Elementor\Group_Control_Border;
15
+ use Elementor\Group_Control_Background;
16
 
17
 
18
  if ( ! defined( 'ABSPATH' ) ) {
67
  * @return string Widget icon.
68
  */
69
  public function get_icon() {
70
+ return 'eicon-posts-group auxin-badge';
71
  }
72
 
73
  /**
642
  $this->add_control(
643
  'tiles_item_style',
644
  array(
645
+ 'label' => __('Tiles hover type','auxin-portfolio' ),
646
+ 'type' => 'aux-visual-select',
 
647
  'default' => 'overlay',
648
+ 'style_items' => 'max-width:200px;',
649
  'options' => array(
650
+ 'overlay' => array(
651
+ 'label' => __('Overlay title style 1', 'auxin-portfolio'),
652
+ 'video_src' => AUXPFO_ADMIN_URL . '/assets/images/preview/OverlayTitle1.webm webm'
653
+ ),
654
+ 'overlay-boxed' => array(
655
+ 'label' => __('Overlay title style 2', 'auxin-portfolio'),
656
+ 'video_src' => AUXPFO_ADMIN_URL . '/assets/images/preview/OverlayTitle2.webm webm'
657
+ ),
658
+ 'overlay-lightbox' => array(
659
+ 'label' => __('Overlay title with lightbox style 1', 'auxin-portfolio'),
660
+ 'video_src' => AUXPFO_ADMIN_URL . '/assets/images/preview/OverlayTitleLightbox1.webm webm'
661
+ ),
662
+ 'overlay-lightbox-boxed' => array(
663
+ 'label' => __('Overlay title with lightbox style 2', 'auxin-portfolio'),
664
+ 'video_src' => AUXPFO_ADMIN_URL . '/assets/images/preview/OverlayTitleLightbox2.webm webm'
665
+ )
666
  )
667
  )
668
  );
669
 
670
+ $this->add_group_control(
671
+ Group_Control_Background::get_type(),
672
+ array(
673
+ 'name' => 'tile_skin',
674
+ 'label' => __( 'Background', 'auxin-portfolio' ),
675
+ 'types' => array( 'classic', 'gradient' ),
676
+ 'selector' => '{{WRAPPER}} .entry-media::after',
677
+ )
678
+ );
679
+
680
  $this->end_controls_section();
681
 
682
 
918
  );
919
 
920
  $this->end_controls_section();
921
+
922
+ /* Custom Css Section
923
+ /*-------------------------------------*/
924
+
925
+ $this->start_controls_section(
926
+ 'custom_css_section',
927
+ array(
928
+ 'label' => __( 'Custom Css', 'auxin-portfolio' ),
929
+ 'tab' => Controls_Manager::TAB_STYLE
930
+ )
931
+ );
932
+
933
+ $this->add_control(
934
+ 'custom_css',
935
+ array(
936
+ 'type' => Controls_Manager::CODE,
937
+ 'label' => __( 'Custom CSS', 'auxin-portfolio' ),
938
+ 'label_block' => true,
939
+ 'language' => 'css'
940
+ )
941
+ );
942
+
943
+ $this->add_control(
944
+ 'custom_css_description',
945
+ array(
946
+ 'raw' => __( 'Use "selector" to target wrapper element. Examples:<br>selector {color: red;} // For main element<br>selector .child-element {margin: 10px;} // For child element<br>.my-class {text-align: center;} // Or use any custom selector', 'auxin-portfolio' ),
947
+ 'type' => Controls_Manager::RAW_HTML,
948
+ 'content_classes' => 'elementor-descriptor',
949
+ 'separator' => 'none'
950
+ )
951
+ );
952
+
953
+ $this->end_controls_section();
954
  }
955
 
956
  /**
1004
  'loadmore_label' => $settings['loadmore_label']
1005
  );
1006
 
1007
+ if( ! empty( $settings['custom_css'] ) ){
1008
+ $custom_css = trim( $settings['custom_css'] );
1009
+ $post_css = new Post_CSS_File( get_the_ID() );
1010
+ if ( ! empty( $custom_css ) ) {
1011
+ $custom_css = str_replace( 'selector', $post_css->get_element_unique_selector( $this ), $custom_css );
1012
+ // Add a css comment
1013
+ echo sprintf( '<style>/* Start custom CSS for %s, class: %s */', $this->get_name(), $this->get_unique_selector() ) . $custom_css . '/* End custom CSS */</style>';
1014
+ // $post_css->get_stylesheet()->add_raw_css( $custom_css );
1015
+ }
1016
+ }
1017
+
1018
  echo auxin_widget_recent_portfolios_grid_callback( $args );
1019
  }
1020
 
includes/elements/recent-portfolios-tile-carousel.php CHANGED
@@ -246,7 +246,7 @@ function auxin_get_recent_portfolios_tiles_carousel_master_array( $master_array
246
  array(
247
  'heading' => __('Insert portfolio title','auxin-portfolio' ),
248
  'description' => '',
249
- 'param_name' => 'show_title',
250
  'type' => 'aux_switch',
251
  'value' => '1',
252
  'class' => '',
@@ -436,6 +436,7 @@ function auxin_widget_recent_portfolios_tiles_carousel_callback( $atts, $shortco
436
  'page' => '2',
437
  'exclude_quote_link' => true,
438
  'tile_skin' => 'darken',
 
439
  'button_style' => 'pattern-1',
440
  'display_title' => true,
441
  'show_info' => true,
@@ -577,7 +578,7 @@ function auxin_widget_recent_portfolios_tiles_carousel_callback( $atts, $shortco
577
  echo ! $skip_wrappers ? sprintf( '<div data-element-id="%s" class="%s" %s>', esc_attr( $universal_id ), esc_attr( $container_class ), $carousel_attrs ) : '';
578
 
579
  while ( $wp_query->have_posts() ) {
580
- $item_pattern_info = auxin_get_tile_pattern( 'default', $post_counter, $column_media_width );
581
 
582
  $post_counter++;
583
 
246
  array(
247
  'heading' => __('Insert portfolio title','auxin-portfolio' ),
248
  'description' => '',
249
+ 'param_name' => 'display_title',
250
  'type' => 'aux_switch',
251
  'value' => '1',
252
  'class' => '',
436
  'page' => '2',
437
  'exclude_quote_link' => true,
438
  'tile_skin' => 'darken',
439
+ 'tile_style_pattern' => 'default',
440
  'button_style' => 'pattern-1',
441
  'display_title' => true,
442
  'show_info' => true,
578
  echo ! $skip_wrappers ? sprintf( '<div data-element-id="%s" class="%s" %s>', esc_attr( $universal_id ), esc_attr( $container_class ), $carousel_attrs ) : '';
579
 
580
  while ( $wp_query->have_posts() ) {
581
+ $item_pattern_info = auxin_get_tile_pattern( $tile_style_pattern, $post_counter, $column_media_width );
582
 
583
  $post_counter++;
584
 
includes/elements/recent-portfolios.php CHANGED
@@ -963,7 +963,7 @@ function auxin_widget_recent_portfolios_grid_callback( $atts, $shortcode_content
963
  $isotope_id = uniqid();
964
  $phone_break_point = 767;
965
  $crop = true;
966
- $isotop_layout = 'fitRows';
967
  $is_tiles = 'tiles' == $layout;
968
 
969
  // widget header ------------------------------
@@ -972,11 +972,11 @@ function auxin_widget_recent_portfolios_grid_callback( $atts, $shortcode_content
972
 
973
  if ( 'masonry' == $layout ) {
974
  $crop = false;
975
- $isotop_layout = 'masonry';
976
  } elseif ( $is_tiles ) {
977
  // in tiles we use tiles_item_style instead
978
  $item_style = $tiles_item_style;
979
- $isotop_layout = 'packery';
980
  $space = 0;
981
  }
982
 
@@ -986,43 +986,43 @@ function auxin_widget_recent_portfolios_grid_callback( $atts, $shortcode_content
986
  $frame_effect_classes = 'aux-frame-darken aux-frame-zoom';
987
  $hover_classes = 'aux-hover-active aux-hover-twoway';
988
  $show_lightbox = true;
989
- $tamplate_file = 'column';
990
  break;
991
  case 'classic-lightbox-boxed':
992
  $frame_effect_classes = 'aux-frame-boxed-darken aux-frame-zoom';
993
  $hover_classes = 'aux-hover-active aux-hover-twoway';
994
  $show_lightbox = true;
995
- $tamplate_file = 'column';
996
  break;
997
  case 'overlay':
998
  $frame_effect_classes = 'aux-frame-darken aux-frame-zoom';
999
  $hover_classes = 'aux-hover-active';
1000
  $show_lightbox = false;
1001
- $tamplate_file = 'column-overlay';
1002
  break;
1003
  case 'overlay-boxed':
1004
  $frame_effect_classes = 'aux-frame-boxed-darken' . ( $is_tiles ? '' : ' aux-frame-zoom');
1005
  $hover_classes = 'aux-hover-active';
1006
  $show_lightbox = false;
1007
- $tamplate_file = 'column-overlay';
1008
  break;
1009
  case 'overlay-lightbox':
1010
  $frame_effect_classes = 'aux-frame-darken' . ( $is_tiles ? '' : ' aux-frame-zoom');
1011
  $hover_classes = 'aux-hover-active aux-hover-twoway';
1012
  $show_lightbox = true;
1013
- $tamplate_file = 'column-overlay';
1014
  break;
1015
  case 'overlay-lightbox-boxed':
1016
  $frame_effect_classes = 'aux-frame-boxed-darken' . ( $is_tiles ? '' : ' aux-frame-zoom');
1017
  $hover_classes = 'aux-hover-active aux-hover-twoway';
1018
  $show_lightbox = true;
1019
- $tamplate_file = 'column-overlay';
1020
  break;
1021
  default:
1022
  $frame_effect_classes = '';
1023
  $hover_classes = '';
1024
  $show_lightbox = false;
1025
- $tamplate_file = 'column';
1026
  }
1027
 
1028
  // generate columns class
@@ -1039,7 +1039,7 @@ function auxin_widget_recent_portfolios_grid_callback( $atts, $shortcode_content
1039
  $items_classes .= ' aux-tb-col' . $tablet_cnum;
1040
  $items_classes .= ' aux-mb-col' . $phone_cnum;
1041
  $items_classes .= 'grid' === $layout ? ' aux-match-height' : '';
1042
- $column_media_width = auxin_get_content_column_width( $desktop_cnum, 15, $content_width );
1043
  $column_media_height = 'masonry' == $layout ? 0 : $column_media_width * $image_aspect_ratio;
1044
  }
1045
 
@@ -1051,7 +1051,7 @@ function auxin_widget_recent_portfolios_grid_callback( $atts, $shortcode_content
1051
  $is_boxed = in_array( $item_style, array( 'classic', 'classic-lightbox', 'classic-lightbox-boxed' ) ) && ( $entry_background_color || $entry_border_color );
1052
 
1053
  $isoxin_attrs = 'data-lazyload="true" data-space="'.esc_attr( $space ).'" data-pagination="'. ( $paginate ? 'true' : 'false' ) . '" data-deeplink="'. ( $deeplink ? 'true' : 'false' ) . '"';
1054
- $isoxin_attrs .= ' data-slug="'. esc_attr( $deeplink_slug ).'" data-perpage="'.esc_attr( $perpage ).'" data-layout="'.esc_attr( $isotop_layout ).'"';
1055
  $isoxin_attrs .= ' data-reveal-transition-duration="'. esc_attr( $reveal_transition_duration ).'" data-reveal-between-delay="'.esc_attr( $reveal_between_delay ).'"';
1056
  $isoxin_attrs .= ' data-hide-transition-duration="'. esc_attr( $hide_transition_duration ).'" data-hide-between-delay="'.esc_attr( $hide_between_delay ).'"';
1057
 
@@ -1098,9 +1098,9 @@ function auxin_widget_recent_portfolios_grid_callback( $atts, $shortcode_content
1098
  }
1099
 
1100
  $output_classes = 'aux-isotope-filters aux-filters ' . $filter_style . ' ' . $filter_align . ' ';
1101
- $output_classes .= 'aux-dropdown-filter' != $filter_style ? 'aux-togglable ': '';
1102
 
1103
- $filter_output = '<div class="' . esc_attr( $output_classes ) . '" data-isotope="' . esc_attr( $isotope_id ) . '">' ;
1104
  $filter_output .= 'aux-dropdown-filter' != $filter_style ? '<div class="aux-select-overlay"></div>': '';
1105
  $filter_output .= 'aux-dropdown-filter' === $filter_style ? '<span class="aux-filter-by"> ' . __('Category:', 'auxin-portfolio') . ' <span class="aux-filter-name"> ' . __('all', 'auxin-portfolio') . ' </span></span>': '';
1106
  $filter_output .= $list_output . '</ul>';
@@ -1135,11 +1135,10 @@ function auxin_widget_recent_portfolios_grid_callback( $atts, $shortcode_content
1135
  'media_width' => $phone_break_point,
1136
  'media_size' => $item_pattern_info['size'],
1137
  'upscale_image' => true,
1138
- 'preload_off' => true,
1139
  'preloadable' => true,
1140
  'preload_preview' => false,
1141
  'crop' => true,
1142
- 'add_image_hw' => false, // whether add width and height attr or not
1143
  'image_sizes' => $item_pattern_info['image_sizes'],
1144
  'srcset_sizes' => $item_pattern_info['srcset_sizes']
1145
  )
@@ -1154,17 +1153,12 @@ function auxin_widget_recent_portfolios_grid_callback( $atts, $shortcode_content
1154
  'request_from' => 'archive',
1155
  'media_width' => $phone_break_point,
1156
  'media_size' => array( 'width' => $column_media_width, 'height' => $column_media_height ),
1157
- 'preload_off' => true,
1158
- 'preloadable' => true,
1159
  'preload_preview' => false,
1160
  'crop' => $crop,
1161
  'add_image_hw' => true, // whether add width and height attr or not
1162
- 'image_sizes' => array(
1163
- array( 'min' => '', 'max' => '767px', 'width' => '80vw' ),
1164
- array( 'min' => '768px', 'max' => '992px', 'width' => '40vw' ),
1165
- array( 'min' => '' , 'max' => '', 'width' => round( $column_media_width ) .'px' )
1166
- ),
1167
- 'srcset_sizes' => 'auto'
1168
  )
1169
  );
1170
  $item_classes = 'aux-col';
@@ -1209,7 +1203,7 @@ function auxin_widget_recent_portfolios_grid_callback( $atts, $shortcode_content
1209
  } else {
1210
  ?><div class="aux-iso-item aux-loading <?php echo $item_classes; ?>"><?php
1211
  }
1212
- include auxin_get_template_file( 'theme-parts/entry/portfolio', $tamplate_file, AUXPFO()->template_path() );
1213
  ?></div><?php
1214
  }
1215
 
963
  $isotope_id = uniqid();
964
  $phone_break_point = 767;
965
  $crop = true;
966
+ $isotope_layout = 'fitRows';
967
  $is_tiles = 'tiles' == $layout;
968
 
969
  // widget header ------------------------------
972
 
973
  if ( 'masonry' == $layout ) {
974
  $crop = false;
975
+ $isotope_layout = 'masonry';
976
  } elseif ( $is_tiles ) {
977
  // in tiles we use tiles_item_style instead
978
  $item_style = $tiles_item_style;
979
+ $isotope_layout = 'packery';
980
  $space = 0;
981
  }
982
 
986
  $frame_effect_classes = 'aux-frame-darken aux-frame-zoom';
987
  $hover_classes = 'aux-hover-active aux-hover-twoway';
988
  $show_lightbox = true;
989
+ $template_file = 'column';
990
  break;
991
  case 'classic-lightbox-boxed':
992
  $frame_effect_classes = 'aux-frame-boxed-darken aux-frame-zoom';
993
  $hover_classes = 'aux-hover-active aux-hover-twoway';
994
  $show_lightbox = true;
995
+ $template_file = 'column';
996
  break;
997
  case 'overlay':
998
  $frame_effect_classes = 'aux-frame-darken aux-frame-zoom';
999
  $hover_classes = 'aux-hover-active';
1000
  $show_lightbox = false;
1001
+ $template_file = 'column-overlay';
1002
  break;
1003
  case 'overlay-boxed':
1004
  $frame_effect_classes = 'aux-frame-boxed-darken' . ( $is_tiles ? '' : ' aux-frame-zoom');
1005
  $hover_classes = 'aux-hover-active';
1006
  $show_lightbox = false;
1007
+ $template_file = 'column-overlay';
1008
  break;
1009
  case 'overlay-lightbox':
1010
  $frame_effect_classes = 'aux-frame-darken' . ( $is_tiles ? '' : ' aux-frame-zoom');
1011
  $hover_classes = 'aux-hover-active aux-hover-twoway';
1012
  $show_lightbox = true;
1013
+ $template_file = 'column-overlay';
1014
  break;
1015
  case 'overlay-lightbox-boxed':
1016
  $frame_effect_classes = 'aux-frame-boxed-darken' . ( $is_tiles ? '' : ' aux-frame-zoom');
1017
  $hover_classes = 'aux-hover-active aux-hover-twoway';
1018
  $show_lightbox = true;
1019
+ $template_file = 'column-overlay';
1020
  break;
1021
  default:
1022
  $frame_effect_classes = '';
1023
  $hover_classes = '';
1024
  $show_lightbox = false;
1025
+ $template_file = 'column';
1026
  }
1027
 
1028
  // generate columns class
1039
  $items_classes .= ' aux-tb-col' . $tablet_cnum;
1040
  $items_classes .= ' aux-mb-col' . $phone_cnum;
1041
  $items_classes .= 'grid' === $layout ? ' aux-match-height' : '';
1042
+ $column_media_width = auxin_get_content_column_width( $desktop_cnum, $space, $content_width );
1043
  $column_media_height = 'masonry' == $layout ? 0 : $column_media_width * $image_aspect_ratio;
1044
  }
1045
 
1051
  $is_boxed = in_array( $item_style, array( 'classic', 'classic-lightbox', 'classic-lightbox-boxed' ) ) && ( $entry_background_color || $entry_border_color );
1052
 
1053
  $isoxin_attrs = 'data-lazyload="true" data-space="'.esc_attr( $space ).'" data-pagination="'. ( $paginate ? 'true' : 'false' ) . '" data-deeplink="'. ( $deeplink ? 'true' : 'false' ) . '"';
1054
+ $isoxin_attrs .= ' data-slug="'. esc_attr( $deeplink_slug ).'" data-perpage="'.esc_attr( $perpage ).'" data-layout="'.esc_attr( $isotope_layout ).'"';
1055
  $isoxin_attrs .= ' data-reveal-transition-duration="'. esc_attr( $reveal_transition_duration ).'" data-reveal-between-delay="'.esc_attr( $reveal_between_delay ).'"';
1056
  $isoxin_attrs .= ' data-hide-transition-duration="'. esc_attr( $hide_transition_duration ).'" data-hide-between-delay="'.esc_attr( $hide_between_delay ).'"';
1057
 
1098
  }
1099
 
1100
  $output_classes = 'aux-isotope-filters aux-filters ' . $filter_style . ' ' . $filter_align . ' ';
1101
+ $output_classes .= 'aux-dropdown-filter' != $filter_style ? 'aux-togglable ': '';
1102
 
1103
+ $filter_output = '<div class="' . esc_attr( trim( $output_classes ) ) . '" data-isotope-id="' . esc_attr( $isotope_id ) . '">' ;
1104
  $filter_output .= 'aux-dropdown-filter' != $filter_style ? '<div class="aux-select-overlay"></div>': '';
1105
  $filter_output .= 'aux-dropdown-filter' === $filter_style ? '<span class="aux-filter-by"> ' . __('Category:', 'auxin-portfolio') . ' <span class="aux-filter-name"> ' . __('all', 'auxin-portfolio') . ' </span></span>': '';
1106
  $filter_output .= $list_output . '</ul>';
1135
  'media_width' => $phone_break_point,
1136
  'media_size' => $item_pattern_info['size'],
1137
  'upscale_image' => true,
 
1138
  'preloadable' => true,
1139
  'preload_preview' => false,
1140
  'crop' => true,
1141
+ 'add_image_hw' => true, // whether add width and height attr or not
1142
  'image_sizes' => $item_pattern_info['image_sizes'],
1143
  'srcset_sizes' => $item_pattern_info['srcset_sizes']
1144
  )
1153
  'request_from' => 'archive',
1154
  'media_width' => $phone_break_point,
1155
  'media_size' => array( 'width' => $column_media_width, 'height' => $column_media_height ),
1156
+ 'preloadable' => null, // pass null to disable lazyloading while respecting the "sizes" => "auto"
 
1157
  'preload_preview' => false,
1158
  'crop' => $crop,
1159
  'add_image_hw' => true, // whether add width and height attr or not
1160
+ 'image_sizes' => 'auto',
1161
+ 'srcset_sizes' => 'auto'
 
 
 
 
1162
  )
1163
  );
1164
  $item_classes = 'aux-col';
1203
  } else {
1204
  ?><div class="aux-iso-item aux-loading <?php echo $item_classes; ?>"><?php
1205
  }
1206
+ include auxin_get_template_file( 'theme-parts/entry/portfolio', $template_file, AUXPFO()->template_path() );
1207
  ?></div><?php
1208
  }
1209
 
includes/general-functions.php CHANGED
@@ -45,7 +45,6 @@ if ( ! function_exists('auxpfo_get_portfolio_config') ) {
45
  $defaults = array(
46
  'request_from' => 'archive',
47
  'content_width' => '',
48
- 'preload_off' => true,
49
  'preloadable' => true,
50
  'preload_preview' => false,
51
  'media_size' => '', // large, medium, thumbnail
@@ -192,14 +191,12 @@ if ( ! function_exists('auxpfo_get_portfolio_config') ) {
192
  array(
193
  'size' => $size,
194
  'crop' => $crop,
195
- 'preload_off' => $preload_off,
196
  'preloadable' => $preloadable,
197
  'preload_preview' => $preload_preview,
198
  'add_hw' => $add_image_hw,
199
  'image_sizes' => $image_sizes,
200
  'srcset_sizes' => $srcset_sizes,
201
- 'upscale' => $upscale_image,
202
- 'original_src' => false
203
  )
204
  );
205
  }
45
  $defaults = array(
46
  'request_from' => 'archive',
47
  'content_width' => '',
 
48
  'preloadable' => true,
49
  'preload_preview' => false,
50
  'media_size' => '', // large, medium, thumbnail
191
  array(
192
  'size' => $size,
193
  'crop' => $crop,
 
194
  'preloadable' => $preloadable,
195
  'preload_preview' => $preload_preview,
196
  'add_hw' => $add_image_hw,
197
  'image_sizes' => $image_sizes,
198
  'srcset_sizes' => $srcset_sizes,
199
+ 'upscale' => $upscale_image
 
200
  )
201
  );
202
  }
includes/general-hooks.php CHANGED
@@ -105,20 +105,20 @@ function auxin_define_portfolio_theme_options( $fields_sections_list ){
105
  );
106
 
107
  $options[] = array(
108
- 'title' => __( 'Custom Max Width', THEME_DOMAIN ),
109
- 'description' => __( 'Specifies the maximum width of website.', THEME_DOMAIN ),
110
  'id' => 'portfolio_max_width_layout',
111
  'section' => 'portfolio-section-single',
112
  'type' => 'select',
113
  'transport' => 'postMessage',
114
  'dependency' => array(),
115
  'choices' => array(
116
- '' => __( 'Default Site Max Width', THEME_DOMAIN ),
117
- 'nd' => __( '1000 Pixels', THEME_DOMAIN ),
118
- 'hd' => __( '1200 Pixels', THEME_DOMAIN ),
119
- 'xhd' => __( '1400 Pixels', THEME_DOMAIN ),
120
- 's-fhd' => __( '1600 Pixels', THEME_DOMAIN ),
121
- 'fhd' => __( '1900 Pixels', THEME_DOMAIN )
122
  ),
123
  'post_js' => '$( "body.single-portfolio" ).removeClass( "aux-nd aux-hd aux-xhd aux-s-fhd aux-fhd" ).addClass( "aux-" + to ); $(window).trigger("resize");',
124
  'default' => ''
@@ -1582,7 +1582,7 @@ function auxin_define_portfolio_theme_options( $fields_sections_list ){
1582
  );
1583
 
1584
  $options[] = array(
1585
- 'title' => __( 'Image aspect ratio', THEME_DOMAIN ),
1586
  'description' => '',
1587
  'id' => 'portfolio_related_image_aspect_ratio',
1588
  'section' => 'portfolio-section-single-related',
@@ -1595,10 +1595,10 @@ function auxin_define_portfolio_theme_options( $fields_sections_list ){
1595
  ),
1596
  'type' => 'select',
1597
  'choices' => array(
1598
- '0.75' => __( 'Horizontal 4:3' , THEME_DOMAIN ),
1599
- '0.56' => __( 'Horizontal 16:9', THEME_DOMAIN ),
1600
- '1.00' => __( 'Square 1:1' , THEME_DOMAIN ),
1601
- '1.33' => __( 'Vertical 3:4' , THEME_DOMAIN )
1602
  ),
1603
  'transport' => 'refresh',
1604
  'default' => '0.56',
@@ -2060,20 +2060,20 @@ function auxin_define_portfolio_theme_options( $fields_sections_list ){
2060
  );
2061
 
2062
  $options[] = array(
2063
- 'title' => __( 'Custom Max Width', THEME_DOMAIN ),
2064
- 'description' => __( 'Specifies the maximum width of website.', THEME_DOMAIN ),
2065
  'id' => 'portfolio_archive_max_width_layout',
2066
  'section' => 'portfolio-section-archive',
2067
  'type' => 'select',
2068
  'transport' => 'postMessage',
2069
  'dependency' => array(),
2070
  'choices' => array(
2071
- '' => __( 'Default Site Max Width', THEME_DOMAIN ),
2072
- 'nd' => __( '1000 Pixels', THEME_DOMAIN ),
2073
- 'hd' => __( '1200 Pixels', THEME_DOMAIN ),
2074
- 'xhd' => __( '1400 Pixels', THEME_DOMAIN ),
2075
- 's-fhd' => __( '1600 Pixels', THEME_DOMAIN ),
2076
- 'fhd' => __( '1900 Pixels', THEME_DOMAIN )
2077
  ),
2078
  'post_js' => '$( "body.post-type-archive-portfolio" ).removeClass( "aux-nd aux-hd aux-xhd aux-s-fhd aux-fhd" ).addClass( "aux-" + to ); $(window).trigger("resize");',
2079
  'default' => ''
105
  );
106
 
107
  $options[] = array(
108
+ 'title' => __( 'Custom Max Width', 'auxin-portfolio' ),
109
+ 'description' => __( 'Specifies the maximum width of website.', 'auxin-portfolio' ),
110
  'id' => 'portfolio_max_width_layout',
111
  'section' => 'portfolio-section-single',
112
  'type' => 'select',
113
  'transport' => 'postMessage',
114
  'dependency' => array(),
115
  'choices' => array(
116
+ '' => __( 'Default Site Max Width', 'auxin-portfolio' ),
117
+ 'nd' => __( '1000 Pixels', 'auxin-portfolio' ),
118
+ 'hd' => __( '1200 Pixels', 'auxin-portfolio' ),
119
+ 'xhd' => __( '1400 Pixels', 'auxin-portfolio' ),
120
+ 's-fhd' => __( '1600 Pixels', 'auxin-portfolio' ),
121
+ 'fhd' => __( '1900 Pixels', 'auxin-portfolio' )
122
  ),
123
  'post_js' => '$( "body.single-portfolio" ).removeClass( "aux-nd aux-hd aux-xhd aux-s-fhd aux-fhd" ).addClass( "aux-" + to ); $(window).trigger("resize");',
124
  'default' => ''
1582
  );
1583
 
1584
  $options[] = array(
1585
+ 'title' => __( 'Image aspect ratio', 'auxin-portfolio' ),
1586
  'description' => '',
1587
  'id' => 'portfolio_related_image_aspect_ratio',
1588
  'section' => 'portfolio-section-single-related',
1595
  ),
1596
  'type' => 'select',
1597
  'choices' => array(
1598
+ '0.75' => __( 'Horizontal 4:3' , 'auxin-portfolio' ),
1599
+ '0.56' => __( 'Horizontal 16:9', 'auxin-portfolio' ),
1600
+ '1.00' => __( 'Square 1:1' , 'auxin-portfolio' ),
1601
+ '1.33' => __( 'Vertical 3:4' , 'auxin-portfolio' )
1602
  ),
1603
  'transport' => 'refresh',
1604
  'default' => '0.56',
2060
  );
2061
 
2062
  $options[] = array(
2063
+ 'title' => __( 'Custom Max Width', 'auxin-portfolio' ),
2064
+ 'description' => __( 'Specifies the maximum width of website.', 'auxin-portfolio' ),
2065
  'id' => 'portfolio_archive_max_width_layout',
2066
  'section' => 'portfolio-section-archive',
2067
  'type' => 'select',
2068
  'transport' => 'postMessage',
2069
  'dependency' => array(),
2070
  'choices' => array(
2071
+ '' => __( 'Default Site Max Width', 'auxin-portfolio' ),
2072
+ 'nd' => __( '1000 Pixels', 'auxin-portfolio' ),
2073
+ 'hd' => __( '1200 Pixels', 'auxin-portfolio' ),
2074
+ 'xhd' => __( '1400 Pixels', 'auxin-portfolio' ),
2075
+ 's-fhd' => __( '1600 Pixels', 'auxin-portfolio' ),
2076
+ 'fhd' => __( '1900 Pixels', 'auxin-portfolio' )
2077
  ),
2078
  'post_js' => '$( "body.post-type-archive-portfolio" ).removeClass( "aux-nd aux-hd aux-xhd aux-s-fhd aux-fhd" ).addClass( "aux-" + to ); $(window).trigger("resize");',
2079
  'default' => ''