Version Description
29 April 2020 =
New: WPML support for all widgets Documentation
Download this release
Release Info
Developer | thehappymonster |
Plugin | Happy Addons for Elementor (Mega Menu, Post Grid, Woocommerce Product Grid, Table, Event Calendar, Slider Elementor Widget) |
Version | 2.9.0 |
Comparing to | |
See all releases |
Code changes from version 2.8.1 to 2.9.0
- base.php +18 -6
- base/widget-base.php +1 -1
- changelog.txt +4 -0
- classes/wpml-manager.php +513 -0
- extensions/background-overlay.php +1 -1
- extensions/column-extended.php +3 -3
- extensions/happy-effects.php +2 -2
- extensions/happy-grid.php +4 -5
- extensions/widgets-extended.php +1 -1
- extensions/wrapper-link.php +1 -1
- inc/functions.php +172 -166
- plugin.php +2 -2
- readme.txt +131 -152
- wpml/bar-chart.php +52 -0
- wpml/carousel.php +56 -0
- wpml/image-grid.php +52 -0
- wpml/justified-gallery.php +52 -0
- wpml/logo-grid.php +52 -0
- wpml/pricing-table.php +52 -0
- wpml/skills.php +52 -0
- wpml/slider.php +56 -0
- wpml/social-icons.php +52 -0
base.php
CHANGED
@@ -44,14 +44,16 @@ class Base {
|
|
44 |
add_action( 'elementor/controls/controls_registered', [ $this, 'register_controls' ] );
|
45 |
|
46 |
// Register finder category
|
47 |
-
|
|
|
|
|
48 |
|
49 |
Widgets_Manager::init();
|
50 |
Assets_Manager::init();
|
51 |
Cache_Manager::init();
|
52 |
Icons_Manager::init();
|
53 |
Extensions_Manager::init();
|
54 |
-
|
55 |
|
56 |
$this->init_appsero_tracking();
|
57 |
|
@@ -66,7 +68,7 @@ class Base {
|
|
66 |
}
|
67 |
|
68 |
do_action( 'happyaddons_loaded' );
|
69 |
-
|
70 |
|
71 |
/**
|
72 |
* Initialize the tracker
|
@@ -104,7 +106,7 @@ class Base {
|
|
104 |
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/widgets-cache.php' );
|
105 |
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/assets-cache.php' );
|
106 |
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/extensions-manager.php' );
|
107 |
-
|
108 |
|
109 |
if ( is_admin() ) {
|
110 |
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/updater.php' );
|
@@ -115,7 +117,7 @@ class Base {
|
|
115 |
if ( is_user_logged_in() ) {
|
116 |
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/admin-bar.php' );
|
117 |
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/clone-handler.php' );
|
118 |
-
|
119 |
}
|
120 |
|
121 |
/**
|
@@ -159,5 +161,15 @@ class Base {
|
|
159 |
// Add the category
|
160 |
$categories_manager->add_category( Finder::SLUG, new Finder() );
|
161 |
$categories_manager->add_category( Finder_Edit::SLUG, new Finder_Edit() );
|
162 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
163 |
}
|
44 |
add_action( 'elementor/controls/controls_registered', [ $this, 'register_controls' ] );
|
45 |
|
46 |
// Register finder category
|
47 |
+
add_action( 'elementor/finder/categories/init', [ $this, 'register_finder' ] );
|
48 |
+
|
49 |
+
add_action( 'wpml_loaded', [ $this, 'add_wpml_support' ] );
|
50 |
|
51 |
Widgets_Manager::init();
|
52 |
Assets_Manager::init();
|
53 |
Cache_Manager::init();
|
54 |
Icons_Manager::init();
|
55 |
Extensions_Manager::init();
|
56 |
+
Select2_Handler::init();
|
57 |
|
58 |
$this->init_appsero_tracking();
|
59 |
|
68 |
}
|
69 |
|
70 |
do_action( 'happyaddons_loaded' );
|
71 |
+
}
|
72 |
|
73 |
/**
|
74 |
* Initialize the tracker
|
106 |
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/widgets-cache.php' );
|
107 |
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/assets-cache.php' );
|
108 |
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/extensions-manager.php' );
|
109 |
+
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/select2-handler.php' );
|
110 |
|
111 |
if ( is_admin() ) {
|
112 |
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/updater.php' );
|
117 |
if ( is_user_logged_in() ) {
|
118 |
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/admin-bar.php' );
|
119 |
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/clone-handler.php' );
|
120 |
+
}
|
121 |
}
|
122 |
|
123 |
/**
|
161 |
// Add the category
|
162 |
$categories_manager->add_category( Finder::SLUG, new Finder() );
|
163 |
$categories_manager->add_category( Finder_Edit::SLUG, new Finder_Edit() );
|
164 |
+
}
|
165 |
+
|
166 |
+
/**
|
167 |
+
* Add wpml support
|
168 |
+
*
|
169 |
+
* @return void
|
170 |
+
*/
|
171 |
+
public function add_wpml_support() {
|
172 |
+
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/wpml-manager.php' );
|
173 |
+
WPML_Manager::init();
|
174 |
+
}
|
175 |
}
|
base/widget-base.php
CHANGED
@@ -78,7 +78,7 @@ abstract class Base extends Widget_Base {
|
|
78 |
$this->register_style_controls();
|
79 |
|
80 |
do_action( 'happyaddons_end_register_controls', $this );
|
81 |
-
|
82 |
|
83 |
/**
|
84 |
* Register content controls
|
78 |
$this->register_style_controls();
|
79 |
|
80 |
do_action( 'happyaddons_end_register_controls', $this );
|
81 |
+
}
|
82 |
|
83 |
/**
|
84 |
* Register content controls
|
changelog.txt
CHANGED
@@ -1,3 +1,7 @@
|
|
|
|
|
|
|
|
|
|
1 |
= 2.8.1 - 5 April 2020 =
|
2 |
|
3 |
- Tweak: Adminbar actions terms updated to more meaningful terms
|
1 |
+
= 2.9.0 - 29 April 2020 =
|
2 |
+
|
3 |
+
- New: WPML support for all widgets [Documentation](https://happyaddons.com/docs/happy-addons-for-elementor/happy-features/wpml-support-for-happyaddons-free/)
|
4 |
+
|
5 |
= 2.8.1 - 5 April 2020 =
|
6 |
|
7 |
- Tweak: Adminbar actions terms updated to more meaningful terms
|
classes/wpml-manager.php
ADDED
@@ -0,0 +1,513 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* WPML integration and compatibility manager
|
4 |
+
*/
|
5 |
+
namespace Happy_Addons\Elementor;
|
6 |
+
|
7 |
+
defined( 'ABSPATH' ) || die();
|
8 |
+
|
9 |
+
class WPML_Manager {
|
10 |
+
|
11 |
+
public static function init() {
|
12 |
+
add_filter( 'wpml_elementor_widgets_to_translate', [ __CLASS__, 'add_widgets_to_translate' ] );
|
13 |
+
|
14 |
+
include_once( HAPPY_ADDONS_DIR_PATH . 'wpml/bar-chart.php' );
|
15 |
+
include_once( HAPPY_ADDONS_DIR_PATH . 'wpml/carousel.php' );
|
16 |
+
include_once( HAPPY_ADDONS_DIR_PATH . 'wpml/image-grid.php' );
|
17 |
+
include_once( HAPPY_ADDONS_DIR_PATH . 'wpml/justified-gallery.php' );
|
18 |
+
include_once( HAPPY_ADDONS_DIR_PATH . 'wpml/logo-grid.php' );
|
19 |
+
include_once( HAPPY_ADDONS_DIR_PATH . 'wpml/pricing-table.php' );
|
20 |
+
include_once( HAPPY_ADDONS_DIR_PATH . 'wpml/skills.php' );
|
21 |
+
include_once( HAPPY_ADDONS_DIR_PATH . 'wpml/slider.php' );
|
22 |
+
include_once( HAPPY_ADDONS_DIR_PATH . 'wpml/social-icons.php' );
|
23 |
+
}
|
24 |
+
|
25 |
+
public static function add_widgets_to_translate( $widgets ) {
|
26 |
+
$widgets_map = [
|
27 |
+
/**
|
28 |
+
* Bar Chart
|
29 |
+
*/
|
30 |
+
'bar-chart' => [
|
31 |
+
'fields' => [
|
32 |
+
[
|
33 |
+
'field' => 'labels',
|
34 |
+
'type' => __( 'Bar Chart: Labels', 'happy-elementor-addons' ),
|
35 |
+
'editor_type' => 'LINE',
|
36 |
+
],
|
37 |
+
[
|
38 |
+
'field' => 'chart_title',
|
39 |
+
'type' => __( 'Bar Chart: Title', 'happy-elementor-addons' ),
|
40 |
+
'editor_type' => 'LINE',
|
41 |
+
],
|
42 |
+
],
|
43 |
+
'integration-class' => __NAMESPACE__ . '\\WPML_Bar_Chart',
|
44 |
+
],
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Card
|
48 |
+
*/
|
49 |
+
'card' => [
|
50 |
+
'fields' => [
|
51 |
+
[
|
52 |
+
'field' => 'badge_text',
|
53 |
+
'type' => __( 'Card: Badge Text', 'happy-elementor-addons' ),
|
54 |
+
'editor_type' => 'LINE',
|
55 |
+
],
|
56 |
+
[
|
57 |
+
'field' => 'title',
|
58 |
+
'type' => __( 'Card: Title', 'happy-elementor-addons' ),
|
59 |
+
'editor_type' => 'LINE',
|
60 |
+
],
|
61 |
+
[
|
62 |
+
'field' => 'description',
|
63 |
+
'type' => __( 'Card: Description', 'happy-elementor-addons' ),
|
64 |
+
'editor_type' => 'AREA'
|
65 |
+
],
|
66 |
+
[
|
67 |
+
'field' => 'button_text',
|
68 |
+
'type' => __( 'Card: Button Text', 'happy-elementor-addons' ),
|
69 |
+
'editor_type' => 'LINE',
|
70 |
+
],
|
71 |
+
[
|
72 |
+
'field' => 'button_link',
|
73 |
+
'type' => __( 'Card: Button Link', 'happy-elementor-addons' ),
|
74 |
+
'editor_type' => 'LINK',
|
75 |
+
],
|
76 |
+
],
|
77 |
+
],
|
78 |
+
|
79 |
+
/**
|
80 |
+
* Carousel
|
81 |
+
*/
|
82 |
+
'carousel' => [
|
83 |
+
'fields' => [],
|
84 |
+
'integration-class' => __NAMESPACE__ . '\\WPML_Carousel',
|
85 |
+
],
|
86 |
+
|
87 |
+
/**
|
88 |
+
* Dual Button
|
89 |
+
*/
|
90 |
+
'dual-button' => [
|
91 |
+
'fields' => [
|
92 |
+
[
|
93 |
+
'field' => 'left_button_text',
|
94 |
+
'type' => __( 'Dual Button: Primary Button Text', 'happy-elementor-addons' ),
|
95 |
+
'editor_type' => 'LINE',
|
96 |
+
],
|
97 |
+
[
|
98 |
+
'field' => 'left_button_link',
|
99 |
+
'type' => __( 'Dual Button: Primary Button Link', 'happy-elementor-addons' ),
|
100 |
+
'editor_type' => 'LINK',
|
101 |
+
],
|
102 |
+
[
|
103 |
+
'field' => 'button_connector_text',
|
104 |
+
'type' => __( 'Dual Button: Connector Text', 'happy-elementor-addons' ),
|
105 |
+
'editor_type' => 'LINE',
|
106 |
+
],
|
107 |
+
[
|
108 |
+
'field' => 'right_button_text',
|
109 |
+
'type' => __( 'Dual Button: Secondary Button Text', 'happy-elementor-addons' ),
|
110 |
+
'editor_type' => 'LINE',
|
111 |
+
],
|
112 |
+
[
|
113 |
+
'field' => 'right_button_link',
|
114 |
+
'type' => __( 'Dual Button: Secondary Button Link', 'happy-elementor-addons' ),
|
115 |
+
'editor_type' => 'LINK',
|
116 |
+
],
|
117 |
+
],
|
118 |
+
],
|
119 |
+
|
120 |
+
/**
|
121 |
+
* Flip Box
|
122 |
+
*/
|
123 |
+
'flip-box' => [
|
124 |
+
'fields' => [
|
125 |
+
[
|
126 |
+
'field' => 'front_title',
|
127 |
+
'type' => __( 'Flip Box: Front Title', 'happy-elementor-addons' ),
|
128 |
+
'editor_type' => 'LINE',
|
129 |
+
],
|
130 |
+
[
|
131 |
+
'field' => 'front_description',
|
132 |
+
'type' => __( 'Flip Box: Front Description', 'happy-elementor-addons' ),
|
133 |
+
'editor_type' => 'AREA',
|
134 |
+
],
|
135 |
+
[
|
136 |
+
'field' => 'back_title',
|
137 |
+
'type' => __( 'Flip Box: Back Title', 'happy-elementor-addons' ),
|
138 |
+
'editor_type' => 'LINE',
|
139 |
+
],
|
140 |
+
[
|
141 |
+
'field' => 'back_description',
|
142 |
+
'type' => __( 'Flip Box: Back Description', 'happy-elementor-addons' ),
|
143 |
+
'editor_type' => 'AREA',
|
144 |
+
],
|
145 |
+
],
|
146 |
+
],
|
147 |
+
|
148 |
+
/**
|
149 |
+
* Fun Factor
|
150 |
+
*/
|
151 |
+
'fun-factor' => [
|
152 |
+
'fields' => [
|
153 |
+
[
|
154 |
+
'field' => 'fun_factor_title',
|
155 |
+
'type' => __( 'Fun Factor: Title', 'happy-elementor-addons' ),
|
156 |
+
'editor_type' => 'LINE',
|
157 |
+
],
|
158 |
+
],
|
159 |
+
],
|
160 |
+
|
161 |
+
/**
|
162 |
+
* Gradient Heading
|
163 |
+
*/
|
164 |
+
'gradient-heading' => [
|
165 |
+
'fields' => [
|
166 |
+
[
|
167 |
+
'field' => 'title',
|
168 |
+
'type' => __( 'Gradient_Heading: Title', 'happy-elementor-addons' ),
|
169 |
+
'editor_type' => 'AREA',
|
170 |
+
],
|
171 |
+
[
|
172 |
+
'field' => 'link',
|
173 |
+
'type' => __( 'Gradient_Heading: Link', 'happy-elementor-addons' ),
|
174 |
+
'editor_type' => 'LINK',
|
175 |
+
],
|
176 |
+
],
|
177 |
+
],
|
178 |
+
|
179 |
+
/**
|
180 |
+
* Icon Box
|
181 |
+
*/
|
182 |
+
'icon-box' => [
|
183 |
+
'fields' => [
|
184 |
+
[
|
185 |
+
'field' => 'title',
|
186 |
+
'type' => __( 'Icon Box: Title', 'happy-elementor-addons' ),
|
187 |
+
'editor_type' => 'LINE',
|
188 |
+
],
|
189 |
+
[
|
190 |
+
'field' => 'badge_text',
|
191 |
+
'type' => __( 'Icon Box: Badge Text', 'happy-elementor-addons' ),
|
192 |
+
'editor_type' => 'LINE',
|
193 |
+
],
|
194 |
+
[
|
195 |
+
'field' => 'link',
|
196 |
+
'type' => __( 'Icon Box: Link', 'happy-elementor-addons' ),
|
197 |
+
'editor_type' => 'LINK',
|
198 |
+
],
|
199 |
+
],
|
200 |
+
],
|
201 |
+
|
202 |
+
/**
|
203 |
+
* Image Compare
|
204 |
+
*/
|
205 |
+
'image-compare' => [
|
206 |
+
'fields' => [
|
207 |
+
[
|
208 |
+
'field' => 'before_label',
|
209 |
+
'type' => __( 'Image Compare: Before Label', 'happy-elementor-addons' ),
|
210 |
+
'editor_type' => 'LINE',
|
211 |
+
],
|
212 |
+
[
|
213 |
+
'field' => 'after_label',
|
214 |
+
'type' => __( 'Image Compare: After Label', 'happy-elementor-addons' ),
|
215 |
+
'editor_type' => 'LINE',
|
216 |
+
],
|
217 |
+
],
|
218 |
+
],
|
219 |
+
|
220 |
+
/**
|
221 |
+
* Image Grid
|
222 |
+
*/
|
223 |
+
'image-grid' => [
|
224 |
+
'fields' => [
|
225 |
+
[
|
226 |
+
'field' => 'all_filter_label',
|
227 |
+
'type' => __( 'Image Grid: All Filter Label', 'happy-elementor-addons' ),
|
228 |
+
'editor_type' => 'LINE',
|
229 |
+
],
|
230 |
+
],
|
231 |
+
'integration-class' => __NAMESPACE__ . '\\WPML_Image_Grid',
|
232 |
+
],
|
233 |
+
|
234 |
+
/**
|
235 |
+
* Info Box
|
236 |
+
*/
|
237 |
+
'infobox' => [
|
238 |
+
'fields' => [
|
239 |
+
[
|
240 |
+
'field' => 'title',
|
241 |
+
'type' => __( 'Info Box: Title', 'happy-elementor-addons' ),
|
242 |
+
'editor_type' => 'LINE',
|
243 |
+
],
|
244 |
+
[
|
245 |
+
'field' => 'description',
|
246 |
+
'type' => __( 'Info Box: Description', 'happy-elementor-addons' ),
|
247 |
+
'editor_type' => 'AREA',
|
248 |
+
],
|
249 |
+
[
|
250 |
+
'field' => 'button_text',
|
251 |
+
'type' => __( 'Info Box: Button Text', 'happy-elementor-addons' ),
|
252 |
+
'editor_type' => 'LINE',
|
253 |
+
],
|
254 |
+
[
|
255 |
+
'field' => 'button_link',
|
256 |
+
'type' => __( 'Info Box: Button Link', 'happy-elementor-addons' ),
|
257 |
+
'editor_type' => 'LINK',
|
258 |
+
],
|
259 |
+
],
|
260 |
+
],
|
261 |
+
|
262 |
+
/**
|
263 |
+
* Justified Gallery
|
264 |
+
*/
|
265 |
+
'justified-gallery' => [
|
266 |
+
'fields' => [
|
267 |
+
[
|
268 |
+
'field' => 'all_filter_label',
|
269 |
+
'type' => __( 'Justified Grid: All Filter Label', 'happy-elementor-addons' ),
|
270 |
+
'editor_type' => 'LINE',
|
271 |
+
],
|
272 |
+
],
|
273 |
+
'integration-class' => __NAMESPACE__ . '\\WPML_Justified_Gallery',
|
274 |
+
],
|
275 |
+
|
276 |
+
/**
|
277 |
+
* Logo Grid
|
278 |
+
*/
|
279 |
+
'logo-grid' => [
|
280 |
+
'fields' => [],
|
281 |
+
'integration-class' => __NAMESPACE__ . '\\WPML_Logo_Grid',
|
282 |
+
],
|
283 |
+
|
284 |
+
/**
|
285 |
+
* Team Member
|
286 |
+
*/
|
287 |
+
'member' => [
|
288 |
+
'fields' => [
|
289 |
+
[
|
290 |
+
'field' => 'title',
|
291 |
+
'type' => __( 'Team Member: Name', 'happy-elementor-addons' ),
|
292 |
+
'editor_type' => 'LINE',
|
293 |
+
],
|
294 |
+
[
|
295 |
+
'field' => 'job_title',
|
296 |
+
'type' => __( 'Team Member: Job Title', 'happy-elementor-addons' ),
|
297 |
+
'editor_type' => 'LINE',
|
298 |
+
],
|
299 |
+
[
|
300 |
+
'field' => 'bio',
|
301 |
+
'type' => __( 'Team Member: Short Bio', 'happy-elementor-addons' ),
|
302 |
+
'editor_type' => 'AREA',
|
303 |
+
],
|
304 |
+
],
|
305 |
+
],
|
306 |
+
|
307 |
+
/**
|
308 |
+
* News Ticker
|
309 |
+
*/
|
310 |
+
'news-ticker' => [
|
311 |
+
'fields' => [
|
312 |
+
[
|
313 |
+
'field' => 'sticky_title',
|
314 |
+
'type' => __( 'News Ticker: Sticky Title', 'happy-elementor-addons' ),
|
315 |
+
'editor_type' => 'LINE',
|
316 |
+
],
|
317 |
+
],
|
318 |
+
],
|
319 |
+
|
320 |
+
/**
|
321 |
+
* Number
|
322 |
+
*/
|
323 |
+
'number' => [
|
324 |
+
'fields' => [
|
325 |
+
[
|
326 |
+
'field' => 'number_text',
|
327 |
+
'type' => __( 'Number: Text', 'happy-elementor-addons' ),
|
328 |
+
'editor_type' => 'LINE',
|
329 |
+
],
|
330 |
+
],
|
331 |
+
],
|
332 |
+
|
333 |
+
/**
|
334 |
+
* Pricing Table
|
335 |
+
*/
|
336 |
+
'pricing-table' => [
|
337 |
+
'fields' => [
|
338 |
+
[
|
339 |
+
'field' => 'title',
|
340 |
+
'type' => __( 'Pricing Table: Title', 'happy-elementor-addons' ),
|
341 |
+
'editor_type' => 'LINE',
|
342 |
+
],
|
343 |
+
[
|
344 |
+
'field' => 'price',
|
345 |
+
'type' => __( 'Pricing Table: Price', 'happy-elementor-addons' ),
|
346 |
+
'editor_type' => 'LINE',
|
347 |
+
],
|
348 |
+
[
|
349 |
+
'field' => 'period',
|
350 |
+
'type' => __( 'Pricing Table: Period', 'happy-elementor-addons' ),
|
351 |
+
'editor_type' => 'LINE',
|
352 |
+
],
|
353 |
+
[
|
354 |
+
'field' => 'features_title',
|
355 |
+
'type' => __( 'Pricing Table: Features Title', 'happy-elementor-addons' ),
|
356 |
+
'editor_type' => 'LINE',
|
357 |
+
],
|
358 |
+
[
|
359 |
+
'field' => 'button_text',
|
360 |
+
'type' => __( 'Pricing Table: Button Text', 'happy-elementor-addons' ),
|
361 |
+
'editor_type' => 'LINE',
|
362 |
+
],
|
363 |
+
[
|
364 |
+
'field' => 'button_link',
|
365 |
+
'type' => __( 'Pricing Table: Button Link', 'happy-elementor-addons' ),
|
366 |
+
'editor_type' => 'LINK',
|
367 |
+
],
|
368 |
+
[
|
369 |
+
'field' => 'badge_text',
|
370 |
+
'type' => __( 'Pricing Table: Badge Text', 'happy-elementor-addons' ),
|
371 |
+
'editor_type' => 'LINE',
|
372 |
+
],
|
373 |
+
],
|
374 |
+
'integration-class' => __NAMESPACE__ . '\\WPML_Pricing_Table',
|
375 |
+
],
|
376 |
+
|
377 |
+
/**
|
378 |
+
* Review
|
379 |
+
*/
|
380 |
+
'review' => [
|
381 |
+
'fields' => [
|
382 |
+
[
|
383 |
+
'field' => 'review',
|
384 |
+
'type' => __( 'Review: Review Text', 'happy-elementor-addons' ),
|
385 |
+
'editor_type' => 'AREA',
|
386 |
+
],
|
387 |
+
[
|
388 |
+
'field' => 'title',
|
389 |
+
'type' => __( 'Review: Reviewer Name', 'happy-elementor-addons' ),
|
390 |
+
'editor_type' => 'LINE',
|
391 |
+
],
|
392 |
+
[
|
393 |
+
'field' => 'job_title',
|
394 |
+
'type' => __( 'Review: Job Title', 'happy-elementor-addons' ),
|
395 |
+
'editor_type' => 'LINE',
|
396 |
+
],
|
397 |
+
],
|
398 |
+
],
|
399 |
+
|
400 |
+
/**
|
401 |
+
* Skills
|
402 |
+
*/
|
403 |
+
'skills' => [
|
404 |
+
'fields' => [],
|
405 |
+
'integration-class' => __NAMESPACE__ . '\\WPML_Skills',
|
406 |
+
],
|
407 |
+
|
408 |
+
/**
|
409 |
+
* Slider
|
410 |
+
*/
|
411 |
+
'slider' => [
|
412 |
+
'fields' => [],
|
413 |
+
'integration-class' => __NAMESPACE__ . '\\WPML_Slider',
|
414 |
+
],
|
415 |
+
|
416 |
+
/**
|
417 |
+
* Social Icons
|
418 |
+
*/
|
419 |
+
'social-icons' => [
|
420 |
+
'fields' => [],
|
421 |
+
'integration-class' => __NAMESPACE__ . '\\WPML_Social_Icons',
|
422 |
+
],
|
423 |
+
|
424 |
+
/**
|
425 |
+
* Step Flow
|
426 |
+
*/
|
427 |
+
'step-flow' => [
|
428 |
+
'fields' => [
|
429 |
+
[
|
430 |
+
'field' => 'badge',
|
431 |
+
'type' => __( 'Step Flow: Badge Text', 'happy-elementor-addons' ),
|
432 |
+
'editor_type' => 'LINE',
|
433 |
+
],
|
434 |
+
[
|
435 |
+
'field' => 'title',
|
436 |
+
'type' => __( 'Step Flow: Title', 'happy-elementor-addons' ),
|
437 |
+
'editor_type' => 'LINE',
|
438 |
+
],
|
439 |
+
[
|
440 |
+
'field' => 'description',
|
441 |
+
'type' => __( 'Step Flow: Description', 'happy-elementor-addons' ),
|
442 |
+
'editor_type' => 'AREA',
|
443 |
+
],
|
444 |
+
[
|
445 |
+
'field' => 'link',
|
446 |
+
'type' => __( 'Step Flow: Link', 'happy-elementor-addons' ),
|
447 |
+
'editor_type' => 'LINK',
|
448 |
+
],
|
449 |
+
],
|
450 |
+
],
|
451 |
+
|
452 |
+
/**
|
453 |
+
* Testimonial
|
454 |
+
*/
|
455 |
+
'testimonial' => [
|
456 |
+
'fields' => [
|
457 |
+
[
|
458 |
+
'field' => 'testimonial',
|
459 |
+
'type' => __( 'Testimonial: Testimonial Text', 'happy-elementor-addons' ),
|
460 |
+
'editor_type' => 'AREA',
|
461 |
+
],
|
462 |
+
[
|
463 |
+
'field' => 'name',
|
464 |
+
'type' => __( 'Testimonial: Reviewer Name', 'happy-elementor-addons' ),
|
465 |
+
'editor_type' => 'LINE',
|
466 |
+
],
|
467 |
+
[
|
468 |
+
'field' => 'title',
|
469 |
+
'type' => __( 'Testimonial: Job Title', 'happy-elementor-addons' ),
|
470 |
+
'editor_type' => 'LINE',
|
471 |
+
],
|
472 |
+
],
|
473 |
+
],
|
474 |
+
|
475 |
+
/**
|
476 |
+
* Twitter Feed
|
477 |
+
*/
|
478 |
+
'twitter-feed' => [
|
479 |
+
'fields' => [
|
480 |
+
[
|
481 |
+
'field' => 'read_more_text',
|
482 |
+
'type' => __( 'Twitter Feed: Read More Text', 'happy-elementor-addons' ),
|
483 |
+
'editor_type' => 'AREA',
|
484 |
+
],
|
485 |
+
[
|
486 |
+
'field' => 'load_more_text',
|
487 |
+
'type' => __( 'Twitter Feed: Load More Text', 'happy-elementor-addons' ),
|
488 |
+
'editor_type' => 'LINE',
|
489 |
+
],
|
490 |
+
],
|
491 |
+
],
|
492 |
+
];
|
493 |
+
|
494 |
+
foreach ( $widgets_map as $key => $data ) {
|
495 |
+
$widget_name = 'ha-'.$key;
|
496 |
+
|
497 |
+
$entry = [
|
498 |
+
'conditions' => [
|
499 |
+
'widgetType' => $widget_name,
|
500 |
+
],
|
501 |
+
'fields' => $data['fields'],
|
502 |
+
];
|
503 |
+
|
504 |
+
if ( isset( $data['integration-class'] ) ) {
|
505 |
+
$entry['integration-class'] = $data['integration-class'];
|
506 |
+
}
|
507 |
+
|
508 |
+
$widgets[ $widget_name ] = $entry;
|
509 |
+
}
|
510 |
+
|
511 |
+
return $widgets;
|
512 |
+
}
|
513 |
+
}
|
extensions/background-overlay.php
CHANGED
@@ -41,7 +41,7 @@ class Background_Overlay {
|
|
41 |
$element->start_controls_section(
|
42 |
'_ha_section_background_overlay',
|
43 |
[
|
44 |
-
'label' =>
|
45 |
'tab' => Controls_Manager::TAB_ADVANCED,
|
46 |
'condition' => [
|
47 |
'_background_background' => [ 'classic', 'gradient' ],
|
41 |
$element->start_controls_section(
|
42 |
'_ha_section_background_overlay',
|
43 |
[
|
44 |
+
'label' => __( 'Background Overlay', 'happy-elementor-addons' ) . ha_get_section_icon(),
|
45 |
'tab' => Controls_Manager::TAB_ADVANCED,
|
46 |
'condition' => [
|
47 |
'_background_background' => [ 'classic', 'gradient' ],
|
extensions/column-extended.php
CHANGED
@@ -21,7 +21,7 @@ class Column_Extended {
|
|
21 |
$element->add_responsive_control(
|
22 |
'_ha_column_width',
|
23 |
[
|
24 |
-
'label' =>
|
25 |
'type' => Controls_Manager::TEXT,
|
26 |
'separator' => 'before',
|
27 |
'label_block' => true,
|
@@ -35,7 +35,7 @@ class Column_Extended {
|
|
35 |
$element->add_responsive_control(
|
36 |
'_ha_column_order',
|
37 |
[
|
38 |
-
'label' =>
|
39 |
'type' => Controls_Manager::NUMBER,
|
40 |
'style_transfer' => true,
|
41 |
'selectors' => [
|
@@ -43,7 +43,7 @@ class Column_Extended {
|
|
43 |
],
|
44 |
'description' => sprintf(
|
45 |
__( 'Column ordering is a great addition for responsive design. You can learn more about CSS order property from %sMDN%s.', 'happy-elementor-addons' ),
|
46 |
-
'<a
|
47 |
href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Ordering_Flex_Items#The_order_property" target="_blank">',
|
48 |
'</a>'
|
49 |
),
|
21 |
$element->add_responsive_control(
|
22 |
'_ha_column_width',
|
23 |
[
|
24 |
+
'label' => __( 'Custom Column Width', 'happy-elementor-addons' ),
|
25 |
'type' => Controls_Manager::TEXT,
|
26 |
'separator' => 'before',
|
27 |
'label_block' => true,
|
35 |
$element->add_responsive_control(
|
36 |
'_ha_column_order',
|
37 |
[
|
38 |
+
'label' => __( 'Column Order', 'happy-elementor-addons' ),
|
39 |
'type' => Controls_Manager::NUMBER,
|
40 |
'style_transfer' => true,
|
41 |
'selectors' => [
|
43 |
],
|
44 |
'description' => sprintf(
|
45 |
__( 'Column ordering is a great addition for responsive design. You can learn more about CSS order property from %sMDN%s.', 'happy-elementor-addons' ),
|
46 |
+
'<a
|
47 |
href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Ordering_Flex_Items#The_order_property" target="_blank">',
|
48 |
'</a>'
|
49 |
),
|
extensions/happy-effects.php
CHANGED
@@ -9,14 +9,14 @@ defined( 'ABSPATH' ) || die();
|
|
9 |
class Happy_Effects {
|
10 |
|
11 |
public static function init() {
|
12 |
-
add_action( 'elementor/element/common/_section_style/after_section_end', [__CLASS__, 'add_controls_section'] );
|
13 |
}
|
14 |
|
15 |
public static function add_controls_section( Element_Base $element ) {
|
16 |
$element->start_controls_section(
|
17 |
'_section_happy_effects',
|
18 |
[
|
19 |
-
'label' =>
|
20 |
'tab' => Controls_Manager::TAB_ADVANCED,
|
21 |
]
|
22 |
);
|
9 |
class Happy_Effects {
|
10 |
|
11 |
public static function init() {
|
12 |
+
add_action( 'elementor/element/common/_section_style/after_section_end', [ __CLASS__, 'add_controls_section' ], 1 );
|
13 |
}
|
14 |
|
15 |
public static function add_controls_section( Element_Base $element ) {
|
16 |
$element->start_controls_section(
|
17 |
'_section_happy_effects',
|
18 |
[
|
19 |
+
'label' => __( 'Happy Effects', 'happy-elementor-addons' ) . ha_get_section_icon(),
|
20 |
'tab' => Controls_Manager::TAB_ADVANCED,
|
21 |
]
|
22 |
);
|
extensions/happy-grid.php
CHANGED
@@ -17,7 +17,7 @@ class Happy_Grid {
|
|
17 |
$element->start_controls_section(
|
18 |
'_section_happy_grid_layer',
|
19 |
[
|
20 |
-
'label' =>
|
21 |
'tab' => Controls_Manager::TAB_SETTINGS,
|
22 |
]
|
23 |
);
|
@@ -250,11 +250,10 @@ class Happy_Grid {
|
|
250 |
}
|
251 |
|
252 |
public static function get_default_grid_value( $value = '' ) {
|
253 |
-
|
254 |
$default = [
|
255 |
-
'desktop' => get_option('elementor_container_width'
|
256 |
-
'tablet' => get_option('elementor_viewport_lg'
|
257 |
-
'mobile' => get_option('elementor_viewport_md'
|
258 |
];
|
259 |
|
260 |
return $default[$value];
|
17 |
$element->start_controls_section(
|
18 |
'_section_happy_grid_layer',
|
19 |
[
|
20 |
+
'label' => __( 'Grid Layer', 'happy-elementor-addons' ) . ha_get_section_icon(),
|
21 |
'tab' => Controls_Manager::TAB_SETTINGS,
|
22 |
]
|
23 |
);
|
250 |
}
|
251 |
|
252 |
public static function get_default_grid_value( $value = '' ) {
|
|
|
253 |
$default = [
|
254 |
+
'desktop' => get_option( 'elementor_container_width', 1140 ),
|
255 |
+
'tablet' => get_option( 'elementor_viewport_lg', 1025 ),
|
256 |
+
'mobile' => get_option( 'elementor_viewport_md', 768 ),
|
257 |
];
|
258 |
|
259 |
return $default[$value];
|
extensions/widgets-extended.php
CHANGED
@@ -21,7 +21,7 @@ class Widgets_Extended {
|
|
21 |
$widget->add_control(
|
22 |
'ha_fixed_size_toggle',
|
23 |
[
|
24 |
-
'label' =>
|
25 |
'type' => Controls_Manager::POPOVER_TOGGLE,
|
26 |
'return_value' => 'yes',
|
27 |
]
|
21 |
$widget->add_control(
|
22 |
'ha_fixed_size_toggle',
|
23 |
[
|
24 |
+
'label' => __( 'Fixed Size', 'happy-elementor-addons' ),
|
25 |
'type' => Controls_Manager::POPOVER_TOGGLE,
|
26 |
'return_value' => 'yes',
|
27 |
]
|
extensions/wrapper-link.php
CHANGED
@@ -26,7 +26,7 @@ class Wrapper_Link {
|
|
26 |
$element->start_controls_section(
|
27 |
'_section_ha_wrapper_link',
|
28 |
[
|
29 |
-
'label' =>
|
30 |
'tab' => $tabs,
|
31 |
]
|
32 |
);
|
26 |
$element->start_controls_section(
|
27 |
'_section_ha_wrapper_link',
|
28 |
[
|
29 |
+
'label' => __( 'Wrapper Link', 'happy-elementor-addons' ) . ha_get_section_icon(),
|
30 |
'tab' => $tabs,
|
31 |
]
|
32 |
);
|
inc/functions.php
CHANGED
@@ -18,11 +18,11 @@ defined( 'ABSPATH' ) || die();
|
|
18 |
* @return string|bool False on failure, the result of the shortcode on success.
|
19 |
*/
|
20 |
function ha_do_shortcode( $tag, array $atts = array(), $content = null ) {
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
}
|
27 |
|
28 |
/**
|
@@ -32,109 +32,109 @@ function ha_do_shortcode( $tag, array $atts = array(), $content = null ) {
|
|
32 |
* @return string
|
33 |
*/
|
34 |
function ha_sanitize_html_class_param( $class ) {
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
}
|
44 |
|
45 |
function ha_is_script_debug_enabled() {
|
46 |
-
|
47 |
}
|
48 |
|
49 |
function ha_prepare_data_prop_settings( &$settings, $field_map = [] ) {
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
}
|
65 |
|
66 |
function ha_get_setting_value( &$settings, $keys ) {
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
}
|
75 |
|
76 |
function ha_is_localhost() {
|
77 |
-
|
78 |
}
|
79 |
|
80 |
function ha_get_css_cursors() {
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
}
|
120 |
|
121 |
function ha_get_css_blend_modes() {
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
}
|
139 |
|
140 |
/**
|
@@ -145,7 +145,7 @@ function ha_get_css_blend_modes() {
|
|
145 |
* @return bool
|
146 |
*/
|
147 |
function ha_is_elementor_version( $operator = '<', $version = '2.6.0' ) {
|
148 |
-
|
149 |
}
|
150 |
|
151 |
/**
|
@@ -157,27 +157,27 @@ function ha_is_elementor_version( $operator = '<', $version = '2.6.0' ) {
|
|
157 |
* @param array $attributes
|
158 |
*/
|
159 |
function ha_render_icon( $settings = [], $old_icon_id = 'icon', $new_icon_id = 'selected_icon', $attributes = [] ) {
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
}
|
182 |
|
183 |
/**
|
@@ -186,14 +186,14 @@ function ha_render_icon( $settings = [], $old_icon_id = 'icon', $new_icon_id = '
|
|
186 |
* @return array
|
187 |
*/
|
188 |
function ha_get_happy_icons() {
|
189 |
-
|
190 |
}
|
191 |
|
192 |
/**
|
193 |
* @return bool
|
194 |
*/
|
195 |
function ha_is_happy_mode_enabled() {
|
196 |
-
|
197 |
}
|
198 |
|
199 |
/**
|
@@ -202,7 +202,7 @@ function ha_is_happy_mode_enabled() {
|
|
202 |
* @return \Elementor\Plugin
|
203 |
*/
|
204 |
function ha_elementor() {
|
205 |
-
|
206 |
}
|
207 |
|
208 |
/**
|
@@ -212,31 +212,31 @@ function ha_elementor() {
|
|
212 |
* @return array
|
213 |
*/
|
214 |
function ha_get_allowed_html_tags( $level = 'basic' ) {
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
}
|
241 |
|
242 |
/**
|
@@ -248,7 +248,7 @@ function ha_get_allowed_html_tags( $level = 'basic' ) {
|
|
248 |
* @return string
|
249 |
*/
|
250 |
function ha_kses_intermediate( $string = '' ) {
|
251 |
-
|
252 |
}
|
253 |
|
254 |
/**
|
@@ -260,7 +260,7 @@ function ha_kses_intermediate( $string = '' ) {
|
|
260 |
* @return string
|
261 |
*/
|
262 |
function ha_kses_basic( $string = '' ) {
|
263 |
-
|
264 |
}
|
265 |
|
266 |
/**
|
@@ -270,33 +270,33 @@ function ha_kses_basic( $string = '' ) {
|
|
270 |
* @return string
|
271 |
*/
|
272 |
function ha_get_allowed_html_desc( $level = 'basic' ) {
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
|
277 |
-
|
278 |
-
|
279 |
}
|
280 |
|
281 |
function ha_has_pro() {
|
282 |
-
|
283 |
}
|
284 |
|
285 |
function ha_get_b64_icon() {
|
286 |
-
|
287 |
}
|
288 |
|
289 |
function ha_get_dashboard_link( $suffix = '#home' ) {
|
290 |
-
|
291 |
}
|
292 |
|
293 |
function ha_get_current_user_display_name() {
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
}
|
301 |
|
302 |
/**
|
@@ -472,10 +472,6 @@ function ha_twitter_feed_ajax() {
|
|
472 |
add_action( 'wp_ajax_ha_twitter_feed_action', 'ha_twitter_feed_ajax' );
|
473 |
add_action( 'wp_ajax_nopriv_ha_twitter_feed_action', 'ha_twitter_feed_ajax' );
|
474 |
|
475 |
-
function ha_get_icon_for_label() {
|
476 |
-
return '<i style="position: relative; top: 1px" class="hm hm-happyaddons"></i> ';
|
477 |
-
}
|
478 |
-
|
479 |
/**
|
480 |
* Get All Post Types
|
481 |
* @param array $args
|
@@ -563,18 +559,18 @@ function ha_post_tab () {
|
|
563 |
<a href="<?php echo esc_url( get_the_permalink( $post->ID ) ); ?>"> <?php echo esc_html( $post->post_title ); ?></a>
|
564 |
</h2>
|
565 |
<div class="ha-post-tab-meta">
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
<?php
|
571 |
$archive_year = get_the_time( 'Y', $post->ID );
|
572 |
$archive_month = get_the_time( 'm', $post->ID );
|
573 |
$archive_day = get_the_time( 'd', $post->ID );
|
574 |
?>
|
575 |
<span class="ha-post-tab-meta-date">
|
576 |
-
|
577 |
-
|
578 |
</span>
|
579 |
</div>
|
580 |
<?php if( 'yes' === $excerpt && !empty($post->post_excerpt) ): ?>
|
@@ -596,3 +592,13 @@ function ha_post_tab () {
|
|
596 |
add_action( 'wp_ajax_ha_post_tab_action', 'ha_post_tab' );
|
597 |
add_action( 'wp_ajax_nopriv_ha_post_tab_action', 'ha_post_tab' );
|
598 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
* @return string|bool False on failure, the result of the shortcode on success.
|
19 |
*/
|
20 |
function ha_do_shortcode( $tag, array $atts = array(), $content = null ) {
|
21 |
+
global $shortcode_tags;
|
22 |
+
if ( ! isset( $shortcode_tags[ $tag ] ) ) {
|
23 |
+
return false;
|
24 |
+
}
|
25 |
+
return call_user_func( $shortcode_tags[ $tag ], $atts, $content, $tag );
|
26 |
}
|
27 |
|
28 |
/**
|
32 |
* @return string
|
33 |
*/
|
34 |
function ha_sanitize_html_class_param( $class ) {
|
35 |
+
$classes = ! empty( $class ) ? explode( ' ', $class ) : [];
|
36 |
+
$sanitized = [];
|
37 |
+
if ( ! empty( $classes ) ) {
|
38 |
+
$sanitized = array_map( function( $cls ) {
|
39 |
+
return sanitize_html_class( $cls );
|
40 |
+
}, $classes );
|
41 |
+
}
|
42 |
+
return implode( ' ', $sanitized );
|
43 |
}
|
44 |
|
45 |
function ha_is_script_debug_enabled() {
|
46 |
+
return ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG );
|
47 |
}
|
48 |
|
49 |
function ha_prepare_data_prop_settings( &$settings, $field_map = [] ) {
|
50 |
+
$data = [];
|
51 |
+
foreach ( $field_map as $key => $data_key ) {
|
52 |
+
$setting_value = ha_get_setting_value( $settings, $key );
|
53 |
+
list( $data_field_key, $data_field_type ) = explode( '.', $data_key );
|
54 |
+
$validator = $data_field_type . 'val';
|
55 |
+
|
56 |
+
if ( is_callable( $validator ) ) {
|
57 |
+
$val = call_user_func( $validator, $setting_value );
|
58 |
+
} else {
|
59 |
+
$val = $setting_value;
|
60 |
+
}
|
61 |
+
$data[ $data_field_key ] = $val;
|
62 |
+
}
|
63 |
+
return wp_json_encode( $data );
|
64 |
}
|
65 |
|
66 |
function ha_get_setting_value( &$settings, $keys ) {
|
67 |
+
if ( ! is_array( $keys ) ) {
|
68 |
+
$keys = explode( '.', $keys );
|
69 |
+
}
|
70 |
+
if ( is_array( $settings[ $keys[0] ] ) ) {
|
71 |
+
return ha_get_setting_value( $settings[ $keys[0] ], array_slice( $keys, 1 ) );
|
72 |
+
}
|
73 |
+
return $settings[ $keys[0] ];
|
74 |
}
|
75 |
|
76 |
function ha_is_localhost() {
|
77 |
+
return isset( $_SERVER['REMOTE_ADDR'] ) && in_array( $_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1'] );
|
78 |
}
|
79 |
|
80 |
function ha_get_css_cursors() {
|
81 |
+
return [
|
82 |
+
'default' => __( 'Default', 'happy-elementor-addons' ),
|
83 |
+
'alias' => __( 'Alias', 'happy-elementor-addons' ),
|
84 |
+
'all-scroll' => __( 'All scroll', 'happy-elementor-addons' ),
|
85 |
+
'auto' => __( 'Auto', 'happy-elementor-addons' ),
|
86 |
+
'cell' => __( 'Cell', 'happy-elementor-addons' ),
|
87 |
+
'context-menu' => __( 'Context menu', 'happy-elementor-addons' ),
|
88 |
+
'col-resize' => __( 'Col-resize', 'happy-elementor-addons' ),
|
89 |
+
'copy' => __( 'Copy', 'happy-elementor-addons' ),
|
90 |
+
'crosshair' => __( 'Crosshair', 'happy-elementor-addons' ),
|
91 |
+
'e-resize' => __( 'E-resize', 'happy-elementor-addons' ),
|
92 |
+
'ew-resize' => __( 'EW-resize', 'happy-elementor-addons' ),
|
93 |
+
'grab' => __( 'Grab', 'happy-elementor-addons' ),
|
94 |
+
'grabbing' => __( 'Grabbing', 'happy-elementor-addons' ),
|
95 |
+
'help' => __( 'Help', 'happy-elementor-addons' ),
|
96 |
+
'move' => __( 'Move', 'happy-elementor-addons' ),
|
97 |
+
'n-resize' => __( 'N-resize', 'happy-elementor-addons' ),
|
98 |
+
'ne-resize' => __( 'NE-resize', 'happy-elementor-addons' ),
|
99 |
+
'nesw-resize' => __( 'NESW-resize', 'happy-elementor-addons' ),
|
100 |
+
'ns-resize' => __( 'NS-resize', 'happy-elementor-addons' ),
|
101 |
+
'nw-resize' => __( 'NW-resize', 'happy-elementor-addons' ),
|
102 |
+
'nwse-resize' => __( 'NWSE-resize', 'happy-elementor-addons' ),
|
103 |
+
'no-drop' => __( 'No-drop', 'happy-elementor-addons' ),
|
104 |
+
'not-allowed' => __( 'Not-allowed', 'happy-elementor-addons' ),
|
105 |
+
'pointer' => __( 'Pointer', 'happy-elementor-addons' ),
|
106 |
+
'progress' => __( 'Progress', 'happy-elementor-addons' ),
|
107 |
+
'row-resize' => __( 'Row-resize', 'happy-elementor-addons' ),
|
108 |
+
's-resize' => __( 'S-resize', 'happy-elementor-addons' ),
|
109 |
+
'se-resize' => __( 'SE-resize', 'happy-elementor-addons' ),
|
110 |
+
'sw-resize' => __( 'SW-resize', 'happy-elementor-addons' ),
|
111 |
+
'text' => __( 'Text', 'happy-elementor-addons' ),
|
112 |
+
'url' => __( 'URL', 'happy-elementor-addons' ),
|
113 |
+
'w-resize' => __( 'W-resize', 'happy-elementor-addons' ),
|
114 |
+
'wait' => __( 'Wait', 'happy-elementor-addons' ),
|
115 |
+
'zoom-in' => __( 'Zoom-in', 'happy-elementor-addons' ),
|
116 |
+
'zoom-out' => __( 'Zoom-out', 'happy-elementor-addons' ),
|
117 |
+
'none' => __( 'None', 'happy-elementor-addons' ),
|
118 |
+
];
|
119 |
}
|
120 |
|
121 |
function ha_get_css_blend_modes() {
|
122 |
+
return [
|
123 |
+
'normal' => __( 'Normal', 'happy-elementor-addons' ),
|
124 |
+
'multiply' => __( 'Multiply', 'happy-elementor-addons' ),
|
125 |
+
'screen' => __( 'Screen', 'happy-elementor-addons' ),
|
126 |
+
'overlay' => __( 'Overlay', 'happy-elementor-addons' ),
|
127 |
+
'darken' => __( 'Darken', 'happy-elementor-addons' ),
|
128 |
+
'lighten' => __( 'Lighten', 'happy-elementor-addons' ),
|
129 |
+
'color-dodge' => __( 'Color Dodge', 'happy-elementor-addons' ),
|
130 |
+
'color-burn' => __( 'Color Burn', 'happy-elementor-addons' ),
|
131 |
+
'saturation' => __( 'Saturation', 'happy-elementor-addons' ),
|
132 |
+
'difference' => __( 'Difference', 'happy-elementor-addons' ),
|
133 |
+
'exclusion' => __( 'Exclusion', 'happy-elementor-addons' ),
|
134 |
+
'hue' => __( 'Hue', 'happy-elementor-addons' ),
|
135 |
+
'color' => __( 'Color', 'happy-elementor-addons' ),
|
136 |
+
'luminosity' => __( 'Luminosity', 'happy-elementor-addons' ),
|
137 |
+
];
|
138 |
}
|
139 |
|
140 |
/**
|
145 |
* @return bool
|
146 |
*/
|
147 |
function ha_is_elementor_version( $operator = '<', $version = '2.6.0' ) {
|
148 |
+
return defined( 'ELEMENTOR_VERSION' ) && version_compare( ELEMENTOR_VERSION, $version, $operator );
|
149 |
}
|
150 |
|
151 |
/**
|
157 |
* @param array $attributes
|
158 |
*/
|
159 |
function ha_render_icon( $settings = [], $old_icon_id = 'icon', $new_icon_id = 'selected_icon', $attributes = [] ) {
|
160 |
+
// Check if its already migrated
|
161 |
+
$migrated = isset( $settings['__fa4_migrated'][ $new_icon_id ] );
|
162 |
+
// Check if its a new widget without previously selected icon using the old Icon control
|
163 |
+
$is_new = empty( $settings[ $old_icon_id ] );
|
164 |
+
|
165 |
+
$attributes['aria-hidden'] = 'true';
|
166 |
+
|
167 |
+
if ( ha_is_elementor_version( '>=', '2.6.0' ) && ( $is_new || $migrated ) ) {
|
168 |
+
\Elementor\Icons_Manager::render_icon( $settings[ $new_icon_id ], $attributes );
|
169 |
+
} else {
|
170 |
+
if ( empty( $attributes['class'] ) ) {
|
171 |
+
$attributes['class'] = $settings[ $old_icon_id ];
|
172 |
+
} else {
|
173 |
+
if ( is_array( $attributes['class'] ) ) {
|
174 |
+
$attributes['class'][] = $settings[ $old_icon_id ];
|
175 |
+
} else {
|
176 |
+
$attributes['class'] .= ' ' . $settings[ $old_icon_id ];
|
177 |
+
}
|
178 |
+
}
|
179 |
+
printf( '<i %s></i>', \Elementor\Utils::render_html_attributes( $attributes ) );
|
180 |
+
}
|
181 |
}
|
182 |
|
183 |
/**
|
186 |
* @return array
|
187 |
*/
|
188 |
function ha_get_happy_icons() {
|
189 |
+
return \Happy_Addons\Elementor\Icons_Manager::get_happy_icons();
|
190 |
}
|
191 |
|
192 |
/**
|
193 |
* @return bool
|
194 |
*/
|
195 |
function ha_is_happy_mode_enabled() {
|
196 |
+
return apply_filters( 'happyaddons_is_happy_mode_enabled', true );
|
197 |
}
|
198 |
|
199 |
/**
|
202 |
* @return \Elementor\Plugin
|
203 |
*/
|
204 |
function ha_elementor() {
|
205 |
+
return \Elementor\Plugin::instance();
|
206 |
}
|
207 |
|
208 |
/**
|
212 |
* @return array
|
213 |
*/
|
214 |
function ha_get_allowed_html_tags( $level = 'basic' ) {
|
215 |
+
$allowed_html = [
|
216 |
+
'b' => [],
|
217 |
+
'i' => [],
|
218 |
+
'u' => [],
|
219 |
+
'em' => [],
|
220 |
+
'br' => [],
|
221 |
+
'abbr' => [
|
222 |
+
'title' => [],
|
223 |
+
],
|
224 |
+
'span' => [
|
225 |
+
'class' => [],
|
226 |
+
],
|
227 |
+
'strong' => [],
|
228 |
+
];
|
229 |
+
|
230 |
+
if ( $level === 'intermediate' ) {
|
231 |
+
$allowed_html['a'] = [
|
232 |
+
'href' => [],
|
233 |
+
'title' => [],
|
234 |
+
'class' => [],
|
235 |
+
'id' => [],
|
236 |
+
];
|
237 |
+
}
|
238 |
+
|
239 |
+
return $allowed_html;
|
240 |
}
|
241 |
|
242 |
/**
|
248 |
* @return string
|
249 |
*/
|
250 |
function ha_kses_intermediate( $string = '' ) {
|
251 |
+
return wp_kses( $string, ha_get_allowed_html_tags( 'intermediate' ) );
|
252 |
}
|
253 |
|
254 |
/**
|
260 |
* @return string
|
261 |
*/
|
262 |
function ha_kses_basic( $string = '' ) {
|
263 |
+
return wp_kses( $string, ha_get_allowed_html_tags( 'basic' ) );
|
264 |
}
|
265 |
|
266 |
/**
|
270 |
* @return string
|
271 |
*/
|
272 |
function ha_get_allowed_html_desc( $level = 'basic' ) {
|
273 |
+
if ( ! in_array( $level, [ 'basic', 'intermediate' ] ) ) {
|
274 |
+
$level = 'basic';
|
275 |
+
}
|
276 |
|
277 |
+
$tags_str = '<' . implode( '>,<', array_keys( ha_get_allowed_html_tags( $level ) ) ) . '>';
|
278 |
+
return sprintf( __( 'This input field has support for the following HTML tags: %1$s', 'happy-elementor-addons' ), '<code>' . esc_html( $tags_str ) . '</code>' );
|
279 |
}
|
280 |
|
281 |
function ha_has_pro() {
|
282 |
+
return defined( 'HAPPY_ADDONS_PRO_VERSION' );
|
283 |
}
|
284 |
|
285 |
function ha_get_b64_icon() {
|
286 |
+
return 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PGcgZmlsbD0iI0ZGRiI+PHBhdGggZD0iTTI4LjYgNy44aC44Yy41IDAgLjktLjUuOC0xIDAtLjUtLjUtLjktMS0uOC0zLjUuMy02LjgtMS45LTcuOC01LjMtLjEtLjUtLjYtLjctMS4xLS42cy0uNy42LS42IDEuMWMxLjIgMy45IDQuOSA2LjYgOC45IDYuNnoiLz48cGF0aCBkPSJNMzAgMTEuMWMtLjMtLjYtLjktMS0xLjYtMS0uOSAwLTEuOSAwLTIuOC0uMi00LS44LTctMy42LTguNC03LjEtLjMtLjYtLjktMS4xLTEuNi0xQzguMyAxLjkgMS44IDcuNC45IDE1LjEuMSAyMi4yIDQuNSAyOSAxMS4zIDMxLjIgMjAgMzQuMSAyOSAyOC43IDMwLjggMTkuOWMuNy0zLjEuMy02LjEtLjgtOC44em0tMTEuNiAxLjFjLjEtLjUuNi0uOCAxLjEtLjdsMy43LjhjLjUuMS44LjYuNyAxLjFzLS42LjgtMS4xLjdsLTMuNy0uOGMtLjQtLjEtLjgtLjYtLjctMS4xek0xMC4xIDExYy4yLTEuMSAxLjQtMS45IDIuNS0xLjYgMS4xLjIgMS45IDEuNCAxLjYgMi41LS4yIDEuMS0xLjQgMS45LTIuNSAxLjYtMS0uMi0xLjgtMS4zLTEuNi0yLjV6bTE0LjYgMTAuNkMyMi44IDI2IDE3LjggMjguNSAxMyAyN2MtMy42LTEuMi02LjItNC41LTYuNS04LjItLjEtMSAuOC0xLjcgMS43LTEuNmwxNS40IDIuNWMuOSAwIDEuNCAxIDEuMSAxLjl6Ii8+PHBhdGggZD0iTTE3LjEgMjIuOGMtMS45LS40LTMuNy4zLTQuNyAxLjctLjIuMy0uMS43LjIuOS42LjMgMS4yLjUgMS45LjcgMS44LjQgMy43LjEgNS4xLS43LjMtLjIuNC0uNi4yLS45LS43LS45LTEuNi0xLjUtMi43LTEuN3oiLz48L2c+PC9zdmc+';
|
287 |
}
|
288 |
|
289 |
function ha_get_dashboard_link( $suffix = '#home' ) {
|
290 |
+
return add_query_arg( [ 'page' => 'happy-addons' . $suffix ], admin_url( 'admin.php' ) );
|
291 |
}
|
292 |
|
293 |
function ha_get_current_user_display_name() {
|
294 |
+
$user = wp_get_current_user();
|
295 |
+
$name = 'user';
|
296 |
+
if ( $user->exists() && $user->display_name ) {
|
297 |
+
$name = $user->display_name;
|
298 |
+
}
|
299 |
+
return $name;
|
300 |
}
|
301 |
|
302 |
/**
|
472 |
add_action( 'wp_ajax_ha_twitter_feed_action', 'ha_twitter_feed_ajax' );
|
473 |
add_action( 'wp_ajax_nopriv_ha_twitter_feed_action', 'ha_twitter_feed_ajax' );
|
474 |
|
|
|
|
|
|
|
|
|
475 |
/**
|
476 |
* Get All Post Types
|
477 |
* @param array $args
|
559 |
<a href="<?php echo esc_url( get_the_permalink( $post->ID ) ); ?>"> <?php echo esc_html( $post->post_title ); ?></a>
|
560 |
</h2>
|
561 |
<div class="ha-post-tab-meta">
|
562 |
+
<span class="ha-post-tab-meta-author">
|
563 |
+
<i class="fa fa-user-o"></i>
|
564 |
+
<a href="<?php echo esc_url( get_author_posts_url( $post->post_author ) ); ?>"><?php echo esc_html( get_the_author_meta( 'display_name', $post->post_author ) ); ?></a>
|
565 |
+
</span>
|
566 |
<?php
|
567 |
$archive_year = get_the_time( 'Y', $post->ID );
|
568 |
$archive_month = get_the_time( 'm', $post->ID );
|
569 |
$archive_day = get_the_time( 'd', $post->ID );
|
570 |
?>
|
571 |
<span class="ha-post-tab-meta-date">
|
572 |
+
<i class="fa fa-calendar-o"></i>
|
573 |
+
<a href="<?php echo esc_url( get_day_link( $archive_year, $archive_month, $archive_day ) ); ?>"><?php echo get_the_date( "M d, Y", $post->ID ); ?></a>
|
574 |
</span>
|
575 |
</div>
|
576 |
<?php if( 'yes' === $excerpt && !empty($post->post_excerpt) ): ?>
|
592 |
add_action( 'wp_ajax_ha_post_tab_action', 'ha_post_tab' );
|
593 |
add_action( 'wp_ajax_nopriv_ha_post_tab_action', 'ha_post_tab' );
|
594 |
|
595 |
+
if ( ! function_exists( 'ha_get_section_icon' ) ) {
|
596 |
+
/**
|
597 |
+
* Get happy addons icon for panel section heading
|
598 |
+
*
|
599 |
+
* @return string
|
600 |
+
*/
|
601 |
+
function ha_get_section_icon() {
|
602 |
+
return '<i style="float: right" class="hm hm-happyaddons"></i>';
|
603 |
+
}
|
604 |
+
}
|
plugin.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: Happy Elementor Addons
|
4 |
* Plugin URI: https://happyaddons.com/
|
5 |
* Description: <a href="https://happyaddons.com/">HappyAddons</a> is a collection of slick, powerful widgets that works seamlessly with Elementor page builder. It’s trendy look with detail customization features allows to create extraordinary designs instantly. <a href="https://happyaddons.com/">HappyAddons</a> is free, rapidly growing and comes with great support.
|
6 |
-
* Version: 2.
|
7 |
* Author: weDevs
|
8 |
* Author URI: https://happyaddons.com/
|
9 |
* License: GPLv2
|
@@ -34,7 +34,7 @@ Copyright 2019 HappyMonster <http://happymonster.me>
|
|
34 |
|
35 |
defined( 'ABSPATH' ) || die();
|
36 |
|
37 |
-
define( 'HAPPY_ADDONS_VERSION', '2.
|
38 |
define( 'HAPPY_ADDONS__FILE__', __FILE__ );
|
39 |
define( 'HAPPY_ADDONS_DIR_PATH', plugin_dir_path( HAPPY_ADDONS__FILE__ ) );
|
40 |
define( 'HAPPY_ADDONS_DIR_URL', plugin_dir_url( HAPPY_ADDONS__FILE__ ) );
|
3 |
* Plugin Name: Happy Elementor Addons
|
4 |
* Plugin URI: https://happyaddons.com/
|
5 |
* Description: <a href="https://happyaddons.com/">HappyAddons</a> is a collection of slick, powerful widgets that works seamlessly with Elementor page builder. It’s trendy look with detail customization features allows to create extraordinary designs instantly. <a href="https://happyaddons.com/">HappyAddons</a> is free, rapidly growing and comes with great support.
|
6 |
+
* Version: 2.9.0
|
7 |
* Author: weDevs
|
8 |
* Author URI: https://happyaddons.com/
|
9 |
* License: GPLv2
|
34 |
|
35 |
defined( 'ABSPATH' ) || die();
|
36 |
|
37 |
+
define( 'HAPPY_ADDONS_VERSION', '2.9.0' );
|
38 |
define( 'HAPPY_ADDONS__FILE__', __FILE__ );
|
39 |
define( 'HAPPY_ADDONS_DIR_PATH', plugin_dir_path( HAPPY_ADDONS__FILE__ ) );
|
40 |
define( 'HAPPY_ADDONS_DIR_URL', plugin_dir_url( HAPPY_ADDONS__FILE__ ) );
|
readme.txt
CHANGED
@@ -1,122 +1,141 @@
|
|
1 |
-
=== Happy Elementor
|
2 |
-
Plugin Name: Happy Elementor
|
3 |
-
Version: 2.
|
4 |
Author: weDevs
|
5 |
Author URI: https://happyaddons.com/
|
6 |
Contributors: thehappymonster, happyaddons, hasinhayder, mosaddek73, tareq1988, sourav926, wedevs, iqbalrony, mrokon, obiplabon
|
7 |
-
Tags:
|
8 |
Requires at least: 4.7
|
9 |
-
Tested up to: 5.
|
10 |
Stable tag: trunk
|
11 |
Requires PHP: 5.4
|
12 |
License: GPLv2
|
13 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
14 |
|
15 |
-
[Happy Elementor
|
16 |
|
17 |
-
|
18 |
|
19 |
-
|
20 |
|
21 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
|
23 |
https://www.youtube.com/watch?v=XpWm7zdvUoM
|
24 |
|
25 |
-
|
26 |
-
|
27 |
-
_— **Adam Preiser, Founder of WP Crafter**_
|
28 |
-
|
29 |
-
|
30 |
-
### INCLUDED 32 FREE WIDGETS
|
31 |
-
|
32 |
-
Unlike other Elementor addons, the Happy Elementor Addons comes with a host of free yet powerful widgets. The magical widgets will impress you so much that you will be confused whether they are premium or free:
|
33 |
-
|
34 |
-
1. **[Card](https://demo.happyaddons.com/elementor-card-widget-demo/)** – Incredibly powerful widget to demonstrate your products, articles, news, creative posts using a beautiful combination of texts, links, badge, and image. Using built-in positioning and offset feature you can create eye-candy designs in a twist. [Check demo](https://demo.happyaddons.com/elementor-card-widget-demo/)
|
35 |
-
2. **[Gradient Heading](https://demo.happyaddons.com/elementor-gradient-heading-widget-demo/)** – Another gem to create eye candy headings for your websites. You can apply different gradient styles, angles, opacity, and positions to make them look even better across different device screens. [Check demo](https://demo.happyaddons.com/elementor-gradient-heading-widget-demo/)
|
36 |
-
3. **[Info Box](https://demo.happyaddons.com/elementor-info-box-widget-demo/)** – Create beautiful information boxes using icons, links, and texts, and make them slick using the built-in positioning features. [Check demo](https://demo.happyaddons.com/elementor-info-box-widget-demo/)
|
37 |
-
4. **[Icon Box](https://demo.happyaddons.com/elementor-icon-box-widget-demo/)** – A simplified version of Infobox but comes with powerful display features. Perfect for showcasing interesting information to your users in various styles. [Check demo](https://demo.happyaddons.com/elementor-icon-box-widget-demo/)
|
38 |
-
5. **[Image Compare](https://demo.happyaddons.com/elementor-image-compare-widget-demo/)** – Are you a photo-editor, agency or product designer who often needs to showcase their beautiful works in a form of before and after slider? This widget is perfect for this job. And built-in styling options, vertical and horizontal orientation features can help you design these before-after sections with more creativity. [Check demo](https://demo.happyaddons.com/elementor-image-compare-widget-demo/)
|
39 |
-
6. **[Team Member](https://demo.happyaddons.com/elementor-team-member-widget-demo/)** – A perfect widget to showcase your beautiful team in various styles using texts, images, and social links. And just like our other widgets, you will find powerful styling options to make them stand out quite easily. [Check demo](https://demo.happyaddons.com/elementor-team-member-widget-demo/)
|
40 |
-
7. **[Review](https://demo.happyaddons.com/elementor-review-widget-demo/)** – Showcase your user feedback, reviews, and rating easily than ever using our review widget. Display user photos, texts and star ratings. Make them stand out using built-in offsets and positioning features. [Check demo](https://demo.happyaddons.com/elementor-review-widget-demo/)
|
41 |
-
8. **[Skill Bars](https://demo.happyaddons.com/elementor-skill-bars-widget-demo/)** – An essential building block to showcase user skills, task percentage, required tools, and other progressive information in different ways. It comes with incredible customizing options to suit your needs. [Check demo](https://demo.happyaddons.com/elementor-skill-bars-widget-demo/)
|
42 |
-
9. **[Contact Form 7](https://demo.happyaddons.com/elementor-contact-form-7-widget-demo/)** – This utility widget helps you to integrate existing forms built using CF7 plugin across your web pages without spending too much time. [Check demo](https://demo.happyaddons.com/elementor-contact-form-7-widget-demo/)
|
43 |
-
10. **[Caldera Forms](https://demo.happyaddons.com/elementor-caldera-forms-widget-demo/)** – This widget can help you to display your caldera forms to display on your web pages designed with Elementor. [Check demo](https://demo.happyaddons.com/elementor-caldera-forms-widget-demo/)
|
44 |
-
11. **[weForms](https://demo.happyaddons.com/elementor-we-forms-widget-demo/)** – Designed forms using weForms plugin and looking for a way to display those on your Elementor powered pages? This is the answer to that. [Check demo](https://demo.happyaddons.com/elementor-we-forms-widget-demo/)
|
45 |
-
12. **[Ninja Forms](https://demo.happyaddons.com/elementor-ninja-form-widget-demo/)** – Use this widget to embed forms created using Ninja Forms to display seamlessly on your web pages. Various styling options will help you to look at them even better. [Check demo](https://demo.happyaddons.com/elementor-ninja-form-widget-demo/)
|
46 |
-
13. **[WPForms](https://demo.happyaddons.com/elementor-wpform-widget-demo/)** – Use this widget to embed forms created using WPForms to display seamlessly on your web pages. Various styling options will help you to look at them even better. [Check demo](https://demo.happyaddons.com/elementor-wpform-widget-demo/)
|
47 |
-
14. **[Dual Button](https://demo.happyaddons.com/elementor-dual-button-widget-demo/)** – DualButton widget allows you to add two flexible and trendy action buttons in your sections, in different styles. [Check demo](https://demo.happyaddons.com/elementor-dual-button-widget-demo/)
|
48 |
-
15. **[Testimonial](https://demo.happyaddons.com/elementor-testimonial-widget-demo/)** – Create beautiful testimonial sections with different look-n-feels using HappyAddons Testimonial widget. [Check demo](https://demo.happyaddons.com/elementor-testimonial-widget-demo/)
|
49 |
-
16. **[Justified Grid](https://demo.happyaddons.com/elementor-justified-grid-widget-demo/)** – Another pro-grade widget that can help you to create the beautiful justified grid. It comes packed with tons of options to make it stand out from the crowd. [Check demo](https://demo.happyaddons.com/elementor-justified-grid-widget-demo/)
|
50 |
-
17. **[Number](https://demo.happyaddons.com/elementor-number-widget-demo/)** – Simply beautiful, this widget can help you create stunning number blocks with various styles, look-n-feels that’s literally going to blow your mind. [Check demo](https://demo.happyaddons.com/elementor-number-widget-demo/)
|
51 |
-
18. **[Logo Grid](https://demo.happyaddons.com/elementor-logo-grid-widget-demo)** – Showcase your clients or products using our logo grid widget, and display these items with styles. [Check demo](https://demo.happyaddons.com/elementor-logo-grid-widget-demo)
|
52 |
-
19. **[Carousel](https://demo.happyaddons.com/elementor-carousel-widget-demo/)** – Create interesting image and text carousels using our carousel widget which comes with a lot of options. [Check demo](https://demo.happyaddons.com/elementor-carousel-widget-demo/)
|
53 |
-
20. **[Slider](https://demo.happyaddons.com/elementor-slider-widget-demo/)** – Now you can create sliders with beautiful animations and effects using our Slider widget. And just like our other widgets, there are lots of customization options for you. [Check demo](https://demo.happyaddons.com/elementor-slider-widget-demo/)
|
54 |
-
21. **[Step Flow](https://demo.happyaddons.com/elementor-step-flow-widget-demo/)** – Create an excellent step by step visual diagram and instructions using this smart widget. Change directions, counters and make them look amazing with icons, texts, and colors. [Check demo](https://demo.happyaddons.com/elementor-step-flow-widget-demo/)
|
55 |
-
22. **[Calendly](https://demo.happyaddons.com/elementor-calendly-widget-demo/)** – Schedule meetings without the back-and-forth emails through Calendly. We are happy to integrate this important application in our HappyAddons. [Check demo](https://demo.happyaddons.com/elementor-calendly-widget-demo/)
|
56 |
-
23. **[Flip Box](https://demo.happyaddons.com/elementor-flip-box-widget-demo/)** – FlipBox helps you to deliver messages in a beautiful way with before and after-effects. [Check demo](https://demo.happyaddons.com/elementor-flip-box-widget-demo/)
|
57 |
-
24. **[Pricing Table](https://demo.happyaddons.com/elementor-pricing-table-widget-demo/)** – Create beautiful pricing tables with lots of customizations and sleek look-n-feel using this widget. [Check demo](https://demo.happyaddons.com/elementor-pricing-table-widget-demo/)
|
58 |
-
25. **[Image Grid](https://demo.happyaddons.com/elementor-image-grid-widget-demo/)** – Simply beautiful, this widget can help you create stunning number blocks with various styles, look-n-feels that’s literally going to blow your mind. [Check demo](https://demo.happyaddons.com/elementor-image-grid-widget-demo/)
|
59 |
-
26. **[Gravity Forms](https://demo.happyaddons.com/elementor-gravity-form-widget-demo/)** - While using Gravity forms, you may want to change the appearance of the form fields. With the Happy Addons, you can spruce up your Gravity forms like a pro. [Check demo](https://happyaddons.com/docs/happy-addons-for-elementor/widgets/gravity-forms/)
|
60 |
-
27. **[News Ticker](https://demo.happyaddons.com/elementor-news-ticker-widget-demo/)** - Want to show updates, popular content or messages on your website? With the Happy Elementor Addons Content Ticker widget, you can do this at your disposal with great customizability.
|
61 |
-
28. **[Twitter Feed](https://demo.happyaddons.com/elementor-twitter-feed-widget-demo/)**
|
62 |
-
29. **[Bar Chart](https://demo.happyaddons.com/elementor-bar-chart-widget-demo/)**
|
63 |
-
30. **[Social Icons](https://demo.happyaddons.com/elementor-social-icon-widget-demo/)**
|
64 |
-
31. **[Post Tab](https://demo.happyaddons.com/elementor-post-tab-widget-demo/)**
|
65 |
-
32. **[Post List](https://demo.happyaddons.com/elementor-post-list-widget-demo/)**
|
66 |
-
|
67 |
-
|
68 |
-
### Free Built-in Extensions to Give You an Awesome Experience
|
69 |
-
|
70 |
-
**Happy Extensions contain free extensions augmenting the features of the Elementor page builder to add additional customizations. These effects are unique and exclusive that is only available in Happy Addons.**
|
71 |
-
|
72 |
-
**🔆 Background Overlay –** This extension will allow you to add images, colors, and icons behind a widget. You can add background overlay to any widget.
|
73 |
-
|
74 |
-
**🔆 Happy Icons –** This will help you embellish your web page with an army of free happy icons. To do so, you have to
|
75 |
-
choose a widget that supports happy icons. Currently, the custom fonts library contains 500+ icons.
|
76 |
|
77 |
-
|
78 |
|
79 |
-
**🔆 Manage Column Width by Adding Pixels -** You can control the column width of your widgets with percentage parameters in Elementor. However, sometimes, you need to adjust the column width to meet your design aesthetics. The Happy Addons will let you do so with ease.
|
80 |
|
81 |
-
|
82 |
-
Elementor Page Builder by using the buttons (CMD/CTRL + E). Surprisingly, you can copy pages and posts lighting fast from the Elementor finder using the Happy clone feature.
|
83 |
|
84 |
-
|
85 |
-
buttons in Elementor. With this free feature, you can do that by just setting a fixed size, that is, by specifying an equal height and width of the Elementor Button widget.
|
86 |
|
87 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
**Happy Effects**
|
93 |
|
94 |
As mentioned, the happy Elementor Addons caters you with these two effects that are dying to make you happy:
|
95 |
|
96 |
-
|
|
|
|
|
97 |
|
98 |
-
|
99 |
|
100 |
https://www.youtube.com/watch?v=LmtacsLcFPU
|
101 |
|
102 |
-
**
|
103 |
|
104 |
https://www.youtube.com/watch?v=F33g3zqkeog
|
105 |
|
|
|
106 |
|
107 |
-
|
108 |
-
|
109 |
-
The Happy Elementor Addons ships not only with some unique premium features but also with premium widgets. The premium features are 100% unique and exclusive and the premium widgets are there to give you professional assistance to craft any design.
|
110 |
|
111 |
https://www.youtube.com/watch?v=QwJrFMtfO2U
|
112 |
|
|
|
|
|
|
|
|
|
|
|
113 |
|
114 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
|
116 |
-
|
117 |
|
|
|
118 |
|
119 |
-
###
|
120 |
|
121 |
If you are creating different web pages with WordPress, you will often try to use the same elements of a web page to other pages over and over again.
|
122 |
|
@@ -126,10 +145,7 @@ This is where the goodness of the Happy Addons comes to the rescue! With this to
|
|
126 |
|
127 |
[Watch Demo](https://demo.happyaddons.com/cross-domain-copy-paste/)
|
128 |
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
### Preset: Save Your Time and Effort by Using the Preset Feature
|
133 |
|
134 |
If you try to create your website from scratch and give it a professional appearance, then it will take up a huge amount of time and effort.
|
135 |
|
@@ -137,10 +153,7 @@ To tackle this hassle, the Preset option of the Happy Addons comes into play! Mu
|
|
137 |
|
138 |
[Watch Demo](https://demo.happyaddons.com/presets-demo/)
|
139 |
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
### Unlimited Section Nesting: Use Unlimited Section Nesting to Go Beyond the Limit
|
144 |
|
145 |
With Elementor, you can create sections to make room for elements. We feel happy to say that by integrating the Happy Elementor add-ons, you can create infinite sections within a single section.
|
146 |
|
@@ -148,77 +161,41 @@ And as usual, you can insert as many widgets as you want into those sections.
|
|
148 |
|
149 |
[Watch demo](https://demo.happyaddons.com/unlimited-section-nesting/)
|
150 |
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
### Live Copy: Copy Designs from Demo Site to Get It Done Right Away!
|
155 |
|
156 |
Sometimes you may wish to simulate exactly the same design that you see on our demo page. Amazingly, with the Live Copy option, you can do it at your disposal.
|
157 |
|
158 |
This is a go-to way that lets you copy the code of the demo design from the demo site and allows you to use it directly on your Elementor edit panel.
|
159 |
|
160 |
-
Unlike a theme template, using the demo designs won
|
161 |
|
162 |
[Watch Demo](https://demo.happyaddons.com/live-copy/)
|
163 |
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
## Premium Widgets of Happy Elementor Addons
|
168 |
-
|
169 |
-
If you are not contented with the free widgets, then the following premium widgets are there to quench your thirst. The best part is that you can copy and paste the design source code and so you won’t have to make any design from scratch:
|
170 |
-
|
171 |
-
|
172 |
-
1. **[Pricing Table](https://demo.happyaddons.com/elementor-pricing-table-widget-demo/)** - This one of a kind widget
|
173 |
-
will allow you to create any kind of pricing table under the sun. As a surprise, you can use gradient background, oval-shaped button, font awesome icons, background fill color, different heights, dark mood and so on. [Check demo](https://demo.happyaddons.com/elementor-pricing-table-widget-demo/)
|
174 |
-
2. **[Flip Box](https://demo.happyaddons.com/elementor-flip-box-widget-demo-2/)** - This exquisite widget will help
|
175 |
-
you show different messages or texts at the time before and after a user hover on a certain element. Just like the other widgets, you can customize this with background image, gutter and circular arrow navigation on both sides. [Check demo](https://demo.happyaddons.com/elementor-flip-box-widget-demo-2/)
|
176 |
-
3. **[Advanced Heading](https://demo.happyaddons.com/elementor-advanced-heading-widget-demo/)** - With this useful widget you can create beautiful heading design for your text. Like the other widgets, you will get a bunch of free customization options for different sections of the texts. [Check demo](https://demo.happyaddons.com/elementor-advanced-heading-widget-demo/)
|
177 |
-
4. **[Animated Text](https://demo.happyaddons.com/elementor-animated-text-widget-demo/)** - This widget is pretty useful
|
178 |
-
to make your text stand apart from the crowd applying smart animations. You can customize the cool animation effects with a variety of flexible styles. [Check demo](https://demo.happyaddons.com/elementor-animated-text-widget-demo/)
|
179 |
-
5. **[Scrolling Image](https://demo.happyaddons.com/elementor-scrolling-image-widget-demo/)** - Using this widget, you can show your products or services in a way that slides horizontally or vertically. You can also create a stunning photo gallery with this awesome widget. [Check demo](v)
|
180 |
-
6. **[Image Hover Box](https://demo.happyaddons.com/elementor-image-hover-box-widget-demo/)** - Give boring images lives by adding dynamic animated texts with this nifty little tool. You can display texts with this tool right after a user hovers an image. [Check demo](https://demo.happyaddons.com/elementor-image-hover-box-widget-demo/)
|
181 |
-
7. **[Team Carousel](https://demo.happyaddons.com/elementor-team-carousel-widget-demo/)** - Present your team members with beautiful carousels that include social profile buttons, arrow icons, and great customizability. [Check demo](https://demo.happyaddons.com/elementor-team-carousel-widget-demo/)
|
182 |
-
8. **[Timeline](https://demo.happyaddons.com/elementor-timeline-widget-demo/)** - Tell your story in the precise and the smartest way using this gorgeous tool. Your visitors will get to know everything about the history of your product or company through a bird’s eye view. [Check demo](https://demo.happyaddons.com/elementor-timeline-widget-demo/)
|
183 |
-
9. **[Advanced Tab](https://demo.happyaddons.com/elementor-advanced-tab-widget-demo/)** - This elementor widget will enable you to show your content by creating advanced tabbed content sections using full-controlled customizations. You can also use other widgets inside the tab. [Check demo](https://demo.happyaddons.com/elementor-advanced-tab-widget-demo/)
|
184 |
-
10. **[Advanced Accordion](https://demo.happyaddons.com/elementor-advanced-accordion-widget-demo/)** - Just like the Advanced Tab widget, if you want to provide your user with extra information using a collapsing effect in different directions, then this is the widget to you should go for. [Check demo](https://demo.happyaddons.com/elementor-advanced-accordion-widget-demo/)
|
185 |
-
11. **[Testimonial Carousel](https://demo.happyaddons.com/elementor-testimonial-carousel-widget-demo/)** - This widget will provide you with a great way to showcase the recommendations of your customers. You can also control the carousel’s movement using various flexible styles. [Check demo](https://demo.happyaddons.com/elementor-testimonial-carousel-widget-demo/)
|
186 |
-
12. **[Logo Carousel](https://demo.happyaddons.com/elementor-logo-carousel-widget-demo/)** - Unleash your design creativity with this beautiful logo carousel widget and showcase your partners and products using vertical or horizontal motion. [Check demo](https://demo.happyaddons.com/elementor-logo-carousel-widget-demo/)
|
187 |
-
13. **[Countdown](https://demo.happyaddons.com/elementor-countdown-widget-demo/)** - This eye-catching widget will let you set a countdown clock which you can use to show the launch time of your website or prod the customers to take a particular action showing remaining time. [Check demo](https://demo.happyaddons.com/elementor-countdown-widget-demo/)
|
188 |
-
14. **[Business Hour](https://demo.happyaddons.com/elementor-business-hour-widget-demo/)** - This widget will help you show the business hours in a tabular form. Your customers will get to know when your business is open or closed. [Check demo](https://demo.happyaddons.com/elementor-business-hour-widget-demo/)
|
189 |
-
15. **[Instagram Feed](https://demo.happyaddons.com/elementor-instagram-feed-widget-demo/)** - This widget will pave you the way to dynamically show you your beautiful Instagram photos seamlessly on your website page. Users can interact with your photos and leave a comment. [Check demo](https://demo.happyaddons.com/elementor-instagram-feed-widget-demo/)
|
190 |
-
16. **[Advanced Toggle](https://demo.happyaddons.com/elementor-advanced-toggle-widget-demo/)** - Similar to the Accordion widget, this will allow you to create a collapsible container area that will enable the user to show and hide items provided that the user clicks on it. [Check demo](https://demo.happyaddons.com/elementor-advanced-toggle-widget-demo/)
|
191 |
-
17. **[List Group](https://demo.happyaddons.com/elementor-list-group-widget-demo/)** - With this incredibly handy widget, you can craft beautiful lists. You can also apply advanced styles to give the appearance of the items just like the way you want. [Check demo](https://demo.happyaddons.com/elementor-list-group-widget-demo/)
|
192 |
-
18. **[Feature List](https://demo.happyaddons.com/elementor-feature-list-widget-demo/)** - You can display your product features using different styles using this widget. As a bonus, you can also customize each and every predefined design. [Check demo](https://demo.happyaddons.com/elementor-feature-list-widget-demo/)
|
193 |
-
19. **[Source Code](https://demo.happyaddons.com/elementor-source-code-widget-demo/)** - While writing docs or tutorial posts, you can use this widget to skillfully show codes to your visitors so that they can copy and paste them anywhere on the page at their disposal. [Check demo](https://demo.happyaddons.com/elementor-source-code-widget-demo/)
|
194 |
|
|
|
195 |
|
196 |
-
|
197 |
|
198 |
-
|
199 |
|
200 |
-
|
201 |
|
202 |
-
|
203 |
|
|
|
204 |
|
205 |
-
|
206 |
|
207 |
-
|
208 |
|
209 |
-
**
|
210 |
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
## Privacy Policy
|
215 |
-
**Happy Elementor Addons** uses [Appsero](https://appsero.com) SDK to collect some telemetry data upon user's confirmation. This helps us to troubleshoot problems faster & make product improvements.
|
216 |
-
|
217 |
-
Appsero SDK **does not gather any data by default.** The SDK only starts gathering basic telemetry data **when a user allows it via the admin notice**. We collect the data to ensure great user experience for all our users.
|
218 |
|
219 |
Integrating Appsero SDK **DOES NOT IMMEDIATELY** start gathering data, **without confirmation from users in any case.**
|
220 |
|
221 |
-
Learn more how [Appsero collects and uses this data](https://appsero.com/privacy-policy/). Additionally, read weDevs [privacy policy](https://wedevs.com/privacy-policy/) for
|
222 |
|
223 |
|
224 |
== Frequently Asked Questions ==
|
@@ -244,6 +221,19 @@ Yes, undoubtedly.
|
|
244 |
No, It won't break your site or any page where you used Happy Elementor Addons. We put our best effort to make you happy.
|
245 |
|
246 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
247 |
== Screenshots ==
|
248 |
|
249 |
1. Review widget with image offset
|
@@ -260,23 +250,12 @@ No, It won't break your site or any page where you used Happy Elementor Addons.
|
|
260 |
12. Card widget with Happy Effects (Floating Effects)
|
261 |
13. Card widget - capsule design
|
262 |
|
263 |
-
== Installation ==
|
264 |
-
|
265 |
-
It's really easy and super simple to install **Happy Elementor Addons** plugin but before installing **Happy Elementor Addons** make sure you've installed [Elementor](https://wordpress.org/plugins/elementor/ "Install Elementor"). **Elementor** is the only dependency.
|
266 |
-
|
267 |
-
= Automatic Installation =
|
268 |
-
1. Go to `Plugins > Add New` screen in WordPress.
|
269 |
-
2. Search for `Happy Addons For Elementor`.
|
270 |
-
3. Install and activate the plugin, that's it.
|
271 |
|
272 |
-
|
273 |
-
1. Download [Happy Elementor Addons](https://downloads.wordpress.org/plugin/happy-elementor-addons.zip "Download Happy Elementor Addons").
|
274 |
-
2. Extract the `happy-elementor-addons.zip` file. You'll get plugin files inside `happy-elementor-addons` directory.
|
275 |
-
3. Upload the plugin files to the `/wp-content/plugins/happy-elementor-addons` directory.
|
276 |
-
4. Activate the plugin through the 'Plugins' screen in WordPress.
|
277 |
|
|
|
278 |
|
279 |
-
|
280 |
|
281 |
= 2.8.1 - 5 April 2020 =
|
282 |
|
1 |
+
=== Happy Addons for Elementor ===
|
2 |
+
Plugin Name: Happy Addons for Elementor
|
3 |
+
Version: 2.9.0
|
4 |
Author: weDevs
|
5 |
Author URI: https://happyaddons.com/
|
6 |
Contributors: thehappymonster, happyaddons, hasinhayder, mosaddek73, tareq1988, sourav926, wedevs, iqbalrony, mrokon, obiplabon
|
7 |
+
Tags: Elementor Page Builder, Elementor addons, Elementor Widgets, Elementor Editor, Web Page Builder
|
8 |
Requires at least: 4.7
|
9 |
+
Tested up to: 5.4.1
|
10 |
Stable tag: trunk
|
11 |
Requires PHP: 5.4
|
12 |
License: GPLv2
|
13 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
14 |
|
15 |
+
[Happy Addons for Elementor page builder](https://happyaddons.com/) promises to enhance and take your WordPress webpage editing & designing capabilities to a whole new level.
|
16 |
|
17 |
+
This Elementor based plugin is the latest addition in the list of [weDevs](https://wedevs.com/) premium product library. Enjoy this freemium (free+premium) page builder for Elementor that consists of cutting-edge widgets that are surely set to take your page building experience with Elementor editor to the next level.
|
18 |
|
19 |
+
== Description ==
|
20 |
|
21 |
+
[Happy Addons for Elementor page builder](https://happyaddons.com/) promises to enhance and take your WordPress webpage editing & designing capabilities to a whole new level.
|
22 |
+
|
23 |
+
This Elementor based plugin is the latest addition in the list of [weDevs](https://wedevs.com/) premium product library. Enjoy this freemium (free+premium) page builder for Elementor that consists of cutting-edge widgets that are surely set to take your page building experience with Elementor editor to the next level.
|
24 |
+
|
25 |
+
### **32+ FREE PREMIUM-LIKE WIDGETS AND MORE ON ITS WAY**
|
26 |
+
|
27 |
+
Unlike most other Elementor addons, Happy Addons offers itself with many robust free widgets. These free yet important widgets would surely give you a feel of premium widgets making you wonder how come these widgets are free. Let's explore all the magical free widgets of Happy Addons:
|
28 |
+
|
29 |
+
- [**Card**](https://demo.happyaddons.com/elementor-card-widget-demo/) – Incredibly powerful widget to demonstrate your products, articles, news, creative posts using a beautiful combination of texts, links, badge, and image. Using built-in positioning and offset feature you can create eye-candy designs in a twist.
|
30 |
+
- [**Gradient Heading**](https://demo.happyaddons.com/elementor-gradient-heading-widget-demo/) – Another gem to create eye candy headings for your websites. You can apply different gradient styles, angles, opacity, and positions to make them look even better across different device screens.
|
31 |
+
- [**Info Box**](https://demo.happyaddons.com/elementor-info-box-widget-demo/) – Create beautiful information boxes using icons, links, and texts, and make them slick using the built-in positioning features.
|
32 |
+
- [**Icon Box**](https://demo.happyaddons.com/elementor-icon-box-widget-demo/) – A simplified version of Infobox but comes with powerful display features. Perfect for showcasing interesting information to your users in various styles.
|
33 |
+
- [**Image Compare**](https://demo.happyaddons.com/elementor-image-compare-widget-demo/) – Are you a photo-editor, agency or product designer who often needs to showcase their beautiful works in a form of before and after slider? This widget is perfect for this job. And built-in styling options, vertical and horizontal orientation features can help you design these before-after sections with more creativity.
|
34 |
+
- [**Team Member**](https://demo.happyaddons.com/elementor-team-member-widget-demo/) – A perfect widget to showcase your beautiful team in various styles using texts, images, and social links. And just like our other widgets, you will find powerful styling options to make them stand out quite easily.
|
35 |
+
- [**Review**](https://demo.happyaddons.com/elementor-review-widget-demo/) – Showcase your user feedback, reviews, and rating easily than ever using our review widget. Display user photos, texts and star ratings. Make them stand out using built-in offsets and positioning features.
|
36 |
+
- [**Skill Bars**](https://demo.happyaddons.com/elementor-skill-bars-widget-demo/) – An essential building block to showcase user skills, task percentage, required tools, and other progressive information in different ways. It comes with incredible customizing options to suit your needs.
|
37 |
+
- [**Contact Form 7**](https://demo.happyaddons.com/elementor-contact-form-7-widget-demo/) – This utility widget helps you to integrate existing forms built using CF7 plugin across your web pages without spending too much time.
|
38 |
+
- [**Caldera Forms**](https://demo.happyaddons.com/elementor-caldera-forms-widget-demo/) – This widget can help you to display your caldera forms to display on your web pages designed with Elementor.
|
39 |
+
- [**weForms**](https://demo.happyaddons.com/elementor-we-forms-widget-demo/) – Designed forms using weForms plugin and looking for a way to display those on your Elementor powered pages? This is the answer to that.
|
40 |
+
- [**Ninja Forms**](https://demo.happyaddons.com/elementor-ninja-form-widget-demo/) – Use this widget to embed forms created using Ninja Forms to display seamlessly on your web pages. Various styling options will help you to look at them even better.
|
41 |
+
- [**WPForms**](https://demo.happyaddons.com/elementor-wpform-widget-demo/) – Use this widget to embed forms created using WPForms to display seamlessly on your web pages. Various styling options will help you to look at them even better.
|
42 |
+
- [**Dual Button**](https://demo.happyaddons.com/elementor-dual-button-widget-demo/) – DualButton widget allows you to add two flexible and trendy action buttons in your sections, in different styles.
|
43 |
+
- [**Testimonial**](https://demo.happyaddons.com/elementor-testimonial-widget-demo/) – Create beautiful testimonial sections with different look-n-feels using HappyAddons Testimonial widget.
|
44 |
+
- [**Justified Grid**](https://demo.happyaddons.com/elementor-justified-grid-widget-demo/) – Another pro-grade widget that can help you to create the beautiful justified grid. It comes packed with tons of options to make it stand out from the crowd.
|
45 |
+
- [**Number**](https://demo.happyaddons.com/elementor-number-widget-demo/) – Simply beautiful, this widget can help you create stunning number blocks with various styles, look-n-feels that's literally going to blow your mind.
|
46 |
+
- [**Logo Grid**](https://demo.happyaddons.com/elementor-logo-grid-widget-demo) – Showcase your clients or products using our logo grid widget, and display these items with styles.
|
47 |
+
- [**Carousel**](https://demo.happyaddons.com/elementor-carousel-widget-demo/) – Create interesting image and text carousels using our carousel widget which comes with a lot of options.
|
48 |
+
- [**Slider**](https://demo.happyaddons.com/elementor-slider-widget-demo/) – Now you can create sliders with beautiful animations and effects using our Slider widget. And just like our other widgets, there are lots of customization options for you.
|
49 |
+
- [**Step Flow**](https://demo.happyaddons.com/elementor-step-flow-widget-demo/) – Create an excellent step by step visual diagram and instructions using this smart widget. Change directions, counters and make them look amazing with icons, texts, and colors.
|
50 |
+
- [**Calendly**](https://demo.happyaddons.com/elementor-calendly-widget-demo/) – Schedule meetings without the back-and-forth emails through Calendly. We are happy to integrate this important application in our HappyAddons.
|
51 |
+
- [**Flip Box**](https://demo.happyaddons.com/elementor-flip-box-widget-demo/) – FlipBox helps you to deliver messages in a beautiful way with before and after-effects.
|
52 |
+
- [**Pricing Table**](https://demo.happyaddons.com/elementor-pricing-table-widget-demo/) – Create beautiful pricing tables with lots of customizations and sleek look-n-feel using this widget.
|
53 |
+
- [**Image Grid**](https://demo.happyaddons.com/elementor-image-grid-widget-demo/) – Simply beautiful, this widget can help you create stunning number blocks with various styles, look-n-feels that's literally going to blow your mind.
|
54 |
+
- [**Gravity Forms**](https://demo.happyaddons.com/elementor-gravity-form-widget-demo/) – While using Gravity forms, you may want to change the appearance of the form fields. With the Happy Addons, you can spruce up your Gravity forms like a pro.
|
55 |
+
- [**News Ticker**](https://demo.happyaddons.com/elementor-news-ticker-widget-demo/) – Want to show updates, popular content or messages on your website? With the Happy Elementor Addons Content Ticker widget, you can do this at your disposal with great customizability.
|
56 |
+
- **[Twitter Fee](https://demo.happyaddons.com/elementor-twitter-feed-widget-demo/)d** – Showcase your awesome team decorating in the Twitter feed mode applying various styles, texts, images, and social links.
|
57 |
+
- **[Bar Chart](https://demo.happyaddons.com/elementor-bar-chart-widget-demo/)**– Display charts in an animated and customizable bar form essentially in case of imaging different data and other relevant statistical visualizations.
|
58 |
+
- **[Social Icon](https://demo.happyaddons.com/elementor-social-icon-widget-demo/)s** – Beautifully insert and display your social links onto your webpage using this widget to easily connect with your site visitor.
|
59 |
+
- **[Post Tab](https://demo.happyaddons.com/elementor-post-tab-widget-demo/)**– Enable users to present your post in multiple workable tabs ideally useful for grouped and related content.
|
60 |
+
- **[Post List](https://demo.happyaddons.com/elementor-post-list-widget-demo/)**– List any post elegantly using this widget displaying them in a creative and innovative manner with multiple options to play with.
|
61 |
+
|
62 |
+
New free widgets or features are added every month. With all these awesome free widgets, this nifty plugin, not just aims to the trendy and sophisticated WordPress website design philosophy but also effortlessly aligns with any Elementor powered WordPress website design requirements.
|
63 |
+
|
64 |
+
Now have a look at the Happy Addons feature and widget demo explained by our well-wisher, **Adam Preiser, Founder of WP Crafter**
|
65 |
|
66 |
https://www.youtube.com/watch?v=XpWm7zdvUoM
|
67 |
|
68 |
+
He also acknowledged Happy Addons saying:-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
|
70 |
+
> HappyAddons is a unique Elementor Addon. It might be the best addon package for Elementor.
|
71 |
|
|
|
72 |
|
73 |
+
### **FREE BUILT-IN EXTENSIONS FOR AN UNPRECEDENTED WEB-PAGE DESIGNING EXPERIENCE**
|
|
|
74 |
|
75 |
+
_Happy Addons Extensions comprise with free extensions augmenting the features of the Elementor page builder to add additional customizations. These effects are novel and exclusive that is only available in Happy Addons._
|
|
|
76 |
|
77 |
+
- **Background Overlay –** This extension will allow you to add images, colors, and icons behind a widget. You can add background overlay to any widget.
|
78 |
+
- **Happy Icons –** This will help you embellish your web page with an army of free happy icons. To do so, you have to choose a widget that supports happy icons. Currently, the custom fonts library contains 500+ icons.
|
79 |
+
- **Managing Column Order on Mobile Responsive Mood –** Your designed web page may contain some columns that may require to reorder in the mobile device view. By using the Happy Elementor Addons, you can rearrange the order of the column.
|
80 |
+
- **Manage Column Width by Adding Pixels –** You can control the column width of your widgets with percentage parameters in Elementor. However, sometimes, you need to adjust the column width to meet your design aesthetics. The Happy Addons will let you do so with ease.
|
81 |
+
- **Happy Clone –** While designing with Elementor, you may need to duplicate page or posts from the finder of Elementor Page Builder by using the buttons (CMD/CTRL + E). Surprisingly, you can copy pages and posts lighting fast from the Elementor finder using the Happy clone feature.
|
82 |
+
- **Fixed Size Controls in Elementor Button Widget –** Some times, you may need to make perfectly circular shaped buttons in Elementor. With this free feature, you can do that by just setting a fixed size, that is, by specifying an equal height and width of the Elementor Button widget.
|
83 |
+
- **Grid Layer:** Maintain proper alignment of your page's elements. Enjoy full flexibility while setting your grid color, width, and position of your grid layout.
|
84 |
+
- **Wrapper Link:** No limitation on adding links to specific areas. Use the Wrapper Link feature to insert links to any column, section or any other place you want.
|
85 |
|
86 |
+
### **Happy Addons Exclusive: Happy Effects**
|
|
|
|
|
|
|
87 |
|
88 |
As mentioned, the happy Elementor Addons caters you with these two effects that are dying to make you happy:
|
89 |
|
90 |
+
[**Floating Effects**](https://demo.happyaddons.com/elementor-floating-effect-demo/) – Now you can create stunning animations for any Elementor widget using Floating Effects. Translate, Rotate or Scale – Imagination is the limit!
|
91 |
+
|
92 |
+
[**CSS Transform**](https://demo.happyaddons.com/elementor-css-transform-demo/) – Another missing piece, a great enhancement over core Elementor that works seamlessly with every widget. You can now apply various CSS transforms like translate, rotate, scale and skew without any limitations.
|
93 |
|
94 |
+
**Floating Effects & CSS Transformations demo:**
|
95 |
|
96 |
https://www.youtube.com/watch?v=LmtacsLcFPU
|
97 |
|
98 |
+
**Floating Effects used for Space effect illustration**
|
99 |
|
100 |
https://www.youtube.com/watch?v=F33g3zqkeog
|
101 |
|
102 |
+
### **PRESENTING THE ALL-EXCLUSIVE HAPPY ADDONS FOR ELEMENTOR PRO**
|
103 |
|
104 |
+
The Happy Elementor Addons ships not only with some unique premium features but also with premium widgets. The premium features are 100% unique and exclusive and the premium widgets are there to give you professional assistance to craft any design of your webpage.
|
|
|
|
|
105 |
|
106 |
https://www.youtube.com/watch?v=QwJrFMtfO2U
|
107 |
|
108 |
+
_INTRODUCING HAPPY ADDONS PRO_
|
109 |
+
|
110 |
+
### **PREMIUM ELEMENTOR WIDGETS OF HAPPY ADDONS (PRO)**
|
111 |
+
|
112 |
+
If you are still craving for more widgets, then the following premium widgets are there to quench your thirst. The best part is that you can copy and paste the design source code so you won't have to make any design from scratch. Let's explore the world of Happy Addons Pro Widgets:
|
113 |
|
114 |
+
- [**Pricing Table**](https://demo.happyaddons.com/elementor-pricing-table-widget-demo/) – This one of a kind widget will allow you to create any kind of pricing table under the sun. As a surprise, you can use gradient background, oval-shaped button, font awesome icons, background fill color, different heights, dark mood and so on.
|
115 |
+
- [**Flip Box**](https://demo.happyaddons.com/elementor-flip-box-widget-demo-2/) – This exquisite widget will help you show different messages or texts at the time before and after a user hover on a certain element. Just like the other widgets, you can customize this with background image, gutter and circular arrow navigation on both sides.
|
116 |
+
- [**Advanced Heading**](https://demo.happyaddons.com/elementor-advanced-heading-widget-demo/) – With this useful widget you can create beautiful heading design for your text. Like the other widgets, you will get a bunch of free customization options for different sections of the texts.
|
117 |
+
- [**Animated Text**](https://demo.happyaddons.com/elementor-animated-text-widget-demo/) – This widget is pretty useful to make your text stand apart from the crowd applying smart animations. You can customize the cool animation effects with a variety of flexible styles.
|
118 |
+
- [**Scrolling Image**](https://demo.happyaddons.com/elementor-scrolling-image-widget-demo/) – Using this widget, you can show your products or services in a way that slides horizontally or vertically. You can also create a stunning photo gallery with this awesome widget.
|
119 |
+
- [**Image Hover Box**](https://demo.happyaddons.com/elementor-image-hover-box-widget-demo/) – Give boring images lives by adding dynamic animated texts with this nifty little tool. You can display texts with this tool right after a user hovers an image.
|
120 |
+
- [**Team Carousel**](https://demo.happyaddons.com/elementor-team-carousel-widget-demo/) – Present your team members with beautiful carousels that include social profile buttons, arrow icons, and great customizability.
|
121 |
+
- [**Timeline**](https://demo.happyaddons.com/elementor-timeline-widget-demo/) – Tell your story in the precise and the smartest way using this gorgeous tool. Your visitors will get to know everything about the history of your product or company through a bird's eye view.
|
122 |
+
- [**Advanced Tab**](https://demo.happyaddons.com/elementor-advanced-tab-widget-demo/) – This Elementor widget will enable you to show your content by creating advanced tabbed content sections using full-controlled customizations. You can also use other widgets inside the tab.
|
123 |
+
- [**Advanced Accordion**](https://demo.happyaddons.com/elementor-advanced-accordion-widget-demo/) – Just like the Advanced Tab widget, if you want to provide your user with extra information using a collapsing effect in different directions, then this is the widget to you should go for.
|
124 |
+
- [**Testimonial Carousel**](https://demo.happyaddons.com/elementor-testimonial-carousel-widget-demo/) – This widget will provide you with a great way to showcase the recommendations of your customers. You can also control the carousel's movement using various flexible styles.
|
125 |
+
- [**Logo Carousel**](https://demo.happyaddons.com/elementor-logo-carousel-widget-demo/) – Unleash your design creativity with this beautiful logo carousel widget and showcase your partners and products using vertical or horizontal motion.
|
126 |
+
- [**Countdown**](https://demo.happyaddons.com/elementor-countdown-widget-demo/) – This eye-catching widget will let you set a countdown clock which you can use to show the launch time of your website or prod the customers to take a particular action showing remaining time.
|
127 |
+
- [**Business Hour**](https://demo.happyaddons.com/elementor-business-hour-widget-demo/) – This widget will help you show the business hours in a tabular form. Your customers will get to know when your business is open or closed.
|
128 |
+
- [**Instagram Feed**](https://demo.happyaddons.com/elementor-instagram-feed-widget-demo/) – This widget will pave you the way to dynamically show you your beautiful Instagram photos seamlessly on your website page. Users can interact with your photos and leave a comment.
|
129 |
+
- [**Advanced Toggle**](https://demo.happyaddons.com/elementor-advanced-toggle-widget-demo/) – Similar to the Accordion widget, this will allow you to create a collapsible container area that will enable the user to show and hide items provided that the user clicks on it.
|
130 |
+
- [**List Group**](https://demo.happyaddons.com/elementor-list-group-widget-demo/) – With this incredibly handy widget, you can craft beautiful lists. You can also apply advanced styles to give the appearance of the items just like the way you want it.
|
131 |
+
- [**Feature List**](https://demo.happyaddons.com/elementor-feature-list-widget-demo/) – You can display your product features using different styles using this widget. As a bonus, you can also customize each and every predefined design.
|
132 |
+
- [**Source Code**](https://demo.happyaddons.com/elementor-source-code-widget-demo/) – While writing docs or tutorial posts, you can use this widget to skillfully show codes to your visitors so that they can copy and paste them anywhere on the page at their disposal.
|
133 |
|
134 |
+
### **UNIQUE PRO FEATURES OF HAPPY ADDONS TO WATCH OUT FOR**
|
135 |
|
136 |
+
The premium (PRO) features of Happy Addons truly make it stand out from all the other Elementor add-ons out there right now. You will get the below mentioned much talked about standout premium features in the PRO version of Happy Addons:
|
137 |
|
138 |
+
### **CROSS-DOMAIN COPY-PASTE: APPLY THE SAME DESIGN TO MULTIPLE DOMAINS WITH A SINGLE CLICK**
|
139 |
|
140 |
If you are creating different web pages with WordPress, you will often try to use the same elements of a web page to other pages over and over again.
|
141 |
|
145 |
|
146 |
[Watch Demo](https://demo.happyaddons.com/cross-domain-copy-paste/)
|
147 |
|
148 |
+
### **PRESET: SAVE YOUR TIME AND EFFORT BY USING THE PRESET FEATURE**
|
|
|
|
|
|
|
149 |
|
150 |
If you try to create your website from scratch and give it a professional appearance, then it will take up a huge amount of time and effort.
|
151 |
|
153 |
|
154 |
[Watch Demo](https://demo.happyaddons.com/presets-demo/)
|
155 |
|
156 |
+
### **UNLIMITED SECTION NESTING: USE UNLIMITED SECTION NESTING TO GO BEYOND THE LIMIT**
|
|
|
|
|
|
|
157 |
|
158 |
With Elementor, you can create sections to make room for elements. We feel happy to say that by integrating the Happy Elementor add-ons, you can create infinite sections within a single section.
|
159 |
|
161 |
|
162 |
[Watch demo](https://demo.happyaddons.com/unlimited-section-nesting/)
|
163 |
|
164 |
+
### **LIVE COPY: COPY DESIGNS FROM DEMO SITE TO GET IT DONE RIGHT AWAY!**
|
|
|
|
|
|
|
165 |
|
166 |
Sometimes you may wish to simulate exactly the same design that you see on our demo page. Amazingly, with the Live Copy option, you can do it at your disposal.
|
167 |
|
168 |
This is a go-to way that lets you copy the code of the demo design from the demo site and allows you to use it directly on your Elementor edit panel.
|
169 |
|
170 |
+
Unlike a theme template, using the demo designs won't put any pressure on your media server which is a must-have to help load the page faster.
|
171 |
|
172 |
[Watch Demo](https://demo.happyaddons.com/live-copy/)
|
173 |
|
174 |
+
### **ENJOY EXTRA BENEFITS FROM HAPPY ADDONS!**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
175 |
|
176 |
+
Our code doesn't stink and we don't leave you blindfolded when you need support from us. Apart from the freemium widgets, the plugin will pamper you with a fleet of professional quality features.
|
177 |
|
178 |
+
For example, it's compatible with almost every WordPress theme; it's lightweight and fast; comes up with motion effects, and empowers you with enormous customizability options. In addition, the plugin also works cohesively with the stock Elementor widgets.
|
179 |
|
180 |
+
If you don't understand a feature or fail to give it the desired look which was already demonstrated in a demo, or it's not working as expected – we got your back. Just drop us a line and we will do our best to help you figure a way out.
|
181 |
|
182 |
+
### **BUGS, TECHNICAL HINTS OR CONTRIBUTE**
|
183 |
|
184 |
+
Please provide us with constructive feedback, contribute and file any technical bugs on [GitHub Repository](https://github.com/weDevsOfficial/happy-elementor-addons/issues).
|
185 |
|
186 |
+
**Stay connected with the Happy Community**
|
187 |
|
188 |
+
In case you want to share any ideas on Happy Addons with other users or if you are in any trouble, don't feel stranded. Stay connected with [the Happy addons community](https://www.facebook.com/groups/HappyAddonsCommunity/).
|
189 |
|
190 |
+
### **PRIVACY POLICY**
|
191 |
|
192 |
+
**Happy Addons for Elementor** uses [Appsero](https://appsero.com/) SDK to collect some telemetry data upon the user's confirmation. This helps us to troubleshoot problems faster & make product improvements.
|
193 |
|
194 |
+
Appsero SDK **does not gather any data by default.** The SDK only starts gathering basic telemetry data **when a user allows it via the admin notice**. We collect the data to ensure a great user experience for all our users.
|
|
|
|
|
|
|
|
|
|
|
|
|
195 |
|
196 |
Integrating Appsero SDK **DOES NOT IMMEDIATELY** start gathering data, **without confirmation from users in any case.**
|
197 |
|
198 |
+
Learn more about how [Appsero collects and uses this data](https://appsero.com/privacy-policy/). Additionally, read weDevs [privacy policy](https://wedevs.com/privacy-policy/) for better knowledge on it.
|
199 |
|
200 |
|
201 |
== Frequently Asked Questions ==
|
221 |
No, It won't break your site or any page where you used Happy Elementor Addons. We put our best effort to make you happy.
|
222 |
|
223 |
|
224 |
+
== Installation ==
|
225 |
+
|
226 |
+
**Step 1:** Upload the plugin file to install by navigating through Plugins➔Add New➔Upload Plugin➔Choose File to Install from your WordPress dashboard or you can simply search for the Happy Addons plugin from the plugin directory by going to Plugins➔Add New and search for the plugin in the search tab to install it on your WordPress site.
|
227 |
+
|
228 |
+
**Step 2:** After successful installation, you have to click the "activate" button to activate the happy addons for Elementor.
|
229 |
+
|
230 |
+
**Step 3:** When you activate Happy Addons for Elementor you will be redirected to our HappyAddons Dashboard Home Tab.
|
231 |
+
|
232 |
+
For a more detailed explanation check out the following documentation
|
233 |
+
|
234 |
+
☞ [**How to Install Happy Addons For Elementor**](https://happyaddons.com/docs/happy-addons-for-elementor/getting-started-with-happy-elementor-addons/installation/)
|
235 |
+
|
236 |
+
|
237 |
== Screenshots ==
|
238 |
|
239 |
1. Review widget with image offset
|
250 |
12. Card widget with Happy Effects (Floating Effects)
|
251 |
13. Card widget - capsule design
|
252 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
253 |
|
254 |
+
== Changelog ==
|
|
|
|
|
|
|
|
|
255 |
|
256 |
+
= 2.9.0 - 29 April 2020 =
|
257 |
|
258 |
+
- New: WPML support for all widgets [Documentation](https://happyaddons.com/docs/happy-addons-for-elementor/happy-features/wpml-support-for-happyaddons-free/)
|
259 |
|
260 |
= 2.8.1 - 5 April 2020 =
|
261 |
|
wpml/bar-chart.php
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Bar Chart integration
|
4 |
+
*/
|
5 |
+
namespace Happy_Addons\Elementor;
|
6 |
+
|
7 |
+
defined( 'ABSPATH' ) || die();
|
8 |
+
|
9 |
+
class WPML_Bar_Chart extends \WPML_Elementor_Module_With_Items {
|
10 |
+
|
11 |
+
/**
|
12 |
+
* @return string
|
13 |
+
*/
|
14 |
+
public function get_items_field() {
|
15 |
+
return 'chart_data';
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* @return array
|
20 |
+
*/
|
21 |
+
public function get_fields() {
|
22 |
+
return ['label'];
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @param string $field
|
27 |
+
*
|
28 |
+
* @return string
|
29 |
+
*/
|
30 |
+
protected function get_title( $field ) {
|
31 |
+
switch ( $field ) {
|
32 |
+
case 'label':
|
33 |
+
return __( 'Bar Chart: Label Text', 'happy-elementor-addons' );
|
34 |
+
default:
|
35 |
+
return '';
|
36 |
+
}
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* @param string $field
|
41 |
+
*
|
42 |
+
* @return string
|
43 |
+
*/
|
44 |
+
protected function get_editor_type( $field ) {
|
45 |
+
switch ( $field ) {
|
46 |
+
case 'label':
|
47 |
+
return 'LINE';
|
48 |
+
default:
|
49 |
+
return '';
|
50 |
+
}
|
51 |
+
}
|
52 |
+
}
|
wpml/carousel.php
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Carousel integration
|
4 |
+
*/
|
5 |
+
namespace Happy_Addons\Elementor;
|
6 |
+
|
7 |
+
defined( 'ABSPATH' ) || die();
|
8 |
+
|
9 |
+
class WPML_Carousel extends \WPML_Elementor_Module_With_Items {
|
10 |
+
|
11 |
+
/**
|
12 |
+
* @return string
|
13 |
+
*/
|
14 |
+
public function get_items_field() {
|
15 |
+
return 'slides';
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* @return array
|
20 |
+
*/
|
21 |
+
public function get_fields() {
|
22 |
+
return ['title', 'subtitle'];
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @param string $field
|
27 |
+
*
|
28 |
+
* @return string
|
29 |
+
*/
|
30 |
+
protected function get_title( $field ) {
|
31 |
+
switch ( $field ) {
|
32 |
+
case 'title':
|
33 |
+
return __( 'Carousel: Title', 'happy-elementor-addons' );
|
34 |
+
case 'subtitle':
|
35 |
+
return __( 'Carousel: Subtitle', 'happy-elementor-addons' );
|
36 |
+
default:
|
37 |
+
return '';
|
38 |
+
}
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* @param string $field
|
43 |
+
*
|
44 |
+
* @return string
|
45 |
+
*/
|
46 |
+
protected function get_editor_type( $field ) {
|
47 |
+
switch ( $field ) {
|
48 |
+
case 'title':
|
49 |
+
return 'LINE';
|
50 |
+
case 'subtitle':
|
51 |
+
return 'AREA';
|
52 |
+
default:
|
53 |
+
return '';
|
54 |
+
}
|
55 |
+
}
|
56 |
+
}
|
wpml/image-grid.php
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Image Grid integration
|
4 |
+
*/
|
5 |
+
namespace Happy_Addons\Elementor;
|
6 |
+
|
7 |
+
defined( 'ABSPATH' ) || die();
|
8 |
+
|
9 |
+
class WPML_Image_Grid extends \WPML_Elementor_Module_With_Items {
|
10 |
+
|
11 |
+
/**
|
12 |
+
* @return string
|
13 |
+
*/
|
14 |
+
public function get_items_field() {
|
15 |
+
return 'gallery';
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* @return array
|
20 |
+
*/
|
21 |
+
public function get_fields() {
|
22 |
+
return ['filter'];
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @param string $field
|
27 |
+
*
|
28 |
+
* @return string
|
29 |
+
*/
|
30 |
+
protected function get_title( $field ) {
|
31 |
+
switch ( $field ) {
|
32 |
+
case 'filter':
|
33 |
+
return __( 'Image Grid: Filter Name', 'happy-elementor-addons' );
|
34 |
+
default:
|
35 |
+
return '';
|
36 |
+
}
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* @param string $field
|
41 |
+
*
|
42 |
+
* @return string
|
43 |
+
*/
|
44 |
+
protected function get_editor_type( $field ) {
|
45 |
+
switch ( $field ) {
|
46 |
+
case 'filter':
|
47 |
+
return 'LINE';
|
48 |
+
default:
|
49 |
+
return '';
|
50 |
+
}
|
51 |
+
}
|
52 |
+
}
|
wpml/justified-gallery.php
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Justified Gallery integration
|
4 |
+
*/
|
5 |
+
namespace Happy_Addons\Elementor;
|
6 |
+
|
7 |
+
defined( 'ABSPATH' ) || die();
|
8 |
+
|
9 |
+
class WPML_Justified_Gallery extends \WPML_Elementor_Module_With_Items {
|
10 |
+
|
11 |
+
/**
|
12 |
+
* @return string
|
13 |
+
*/
|
14 |
+
public function get_items_field() {
|
15 |
+
return 'gallery';
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* @return array
|
20 |
+
*/
|
21 |
+
public function get_fields() {
|
22 |
+
return ['filter'];
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @param string $field
|
27 |
+
*
|
28 |
+
* @return string
|
29 |
+
*/
|
30 |
+
protected function get_title( $field ) {
|
31 |
+
switch ( $field ) {
|
32 |
+
case 'filter':
|
33 |
+
return __( 'Justified Grid: Filter Name', 'happy-elementor-addons' );
|
34 |
+
default:
|
35 |
+
return '';
|
36 |
+
}
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* @param string $field
|
41 |
+
*
|
42 |
+
* @return string
|
43 |
+
*/
|
44 |
+
protected function get_editor_type( $field ) {
|
45 |
+
switch ( $field ) {
|
46 |
+
case 'filter':
|
47 |
+
return 'LINE';
|
48 |
+
default:
|
49 |
+
return '';
|
50 |
+
}
|
51 |
+
}
|
52 |
+
}
|
wpml/logo-grid.php
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Logo Grid integration
|
4 |
+
*/
|
5 |
+
namespace Happy_Addons\Elementor;
|
6 |
+
|
7 |
+
defined( 'ABSPATH' ) || die();
|
8 |
+
|
9 |
+
class WPML_Logo_Grid extends \WPML_Elementor_Module_With_Items {
|
10 |
+
|
11 |
+
/**
|
12 |
+
* @return string
|
13 |
+
*/
|
14 |
+
public function get_items_field() {
|
15 |
+
return 'logo_list';
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* @return array
|
20 |
+
*/
|
21 |
+
public function get_fields() {
|
22 |
+
return ['name'];
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @param string $field
|
27 |
+
*
|
28 |
+
* @return string
|
29 |
+
*/
|
30 |
+
protected function get_title( $field ) {
|
31 |
+
switch ( $field ) {
|
32 |
+
case 'name':
|
33 |
+
return __( 'Logo Grid: Brand Name', 'happy-elementor-addons' );
|
34 |
+
default:
|
35 |
+
return '';
|
36 |
+
}
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* @param string $field
|
41 |
+
*
|
42 |
+
* @return string
|
43 |
+
*/
|
44 |
+
protected function get_editor_type( $field ) {
|
45 |
+
switch ( $field ) {
|
46 |
+
case 'name':
|
47 |
+
return 'LINE';
|
48 |
+
default:
|
49 |
+
return '';
|
50 |
+
}
|
51 |
+
}
|
52 |
+
}
|
wpml/pricing-table.php
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Pricing Table integration
|
4 |
+
*/
|
5 |
+
namespace Happy_Addons\Elementor;
|
6 |
+
|
7 |
+
defined( 'ABSPATH' ) || die();
|
8 |
+
|
9 |
+
class WPML_Pricing_Table extends \WPML_Elementor_Module_With_Items {
|
10 |
+
|
11 |
+
/**
|
12 |
+
* @return string
|
13 |
+
*/
|
14 |
+
public function get_items_field() {
|
15 |
+
return 'features_list';
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* @return array
|
20 |
+
*/
|
21 |
+
public function get_fields() {
|
22 |
+
return ['text'];
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @param string $field
|
27 |
+
*
|
28 |
+
* @return string
|
29 |
+
*/
|
30 |
+
protected function get_title( $field ) {
|
31 |
+
switch ( $field ) {
|
32 |
+
case 'text':
|
33 |
+
return __( 'Pricing Table: Feature Text', 'happy-elementor-addons' );
|
34 |
+
default:
|
35 |
+
return '';
|
36 |
+
}
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* @param string $field
|
41 |
+
*
|
42 |
+
* @return string
|
43 |
+
*/
|
44 |
+
protected function get_editor_type( $field ) {
|
45 |
+
switch ( $field ) {
|
46 |
+
case 'text':
|
47 |
+
return 'AREA';
|
48 |
+
default:
|
49 |
+
return '';
|
50 |
+
}
|
51 |
+
}
|
52 |
+
}
|
wpml/skills.php
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Skills integration
|
4 |
+
*/
|
5 |
+
namespace Happy_Addons\Elementor;
|
6 |
+
|
7 |
+
defined( 'ABSPATH' ) || die();
|
8 |
+
|
9 |
+
class WPML_Skills extends \WPML_Elementor_Module_With_Items {
|
10 |
+
|
11 |
+
/**
|
12 |
+
* @return string
|
13 |
+
*/
|
14 |
+
public function get_items_field() {
|
15 |
+
return 'skills';
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* @return array
|
20 |
+
*/
|
21 |
+
public function get_fields() {
|
22 |
+
return ['name'];
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @param string $field
|
27 |
+
*
|
28 |
+
* @return string
|
29 |
+
*/
|
30 |
+
protected function get_title( $field ) {
|
31 |
+
switch ( $field ) {
|
32 |
+
case 'name':
|
33 |
+
return __( 'Skills: Skill Name', 'happy-elementor-addons' );
|
34 |
+
default:
|
35 |
+
return '';
|
36 |
+
}
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* @param string $field
|
41 |
+
*
|
42 |
+
* @return string
|
43 |
+
*/
|
44 |
+
protected function get_editor_type( $field ) {
|
45 |
+
switch ( $field ) {
|
46 |
+
case 'name':
|
47 |
+
return 'LINE';
|
48 |
+
default:
|
49 |
+
return '';
|
50 |
+
}
|
51 |
+
}
|
52 |
+
}
|
wpml/slider.php
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Slider integration
|
4 |
+
*/
|
5 |
+
namespace Happy_Addons\Elementor;
|
6 |
+
|
7 |
+
defined( 'ABSPATH' ) || die();
|
8 |
+
|
9 |
+
class WPML_Slider extends \WPML_Elementor_Module_With_Items {
|
10 |
+
|
11 |
+
/**
|
12 |
+
* @return string
|
13 |
+
*/
|
14 |
+
public function get_items_field() {
|
15 |
+
return 'slides';
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* @return array
|
20 |
+
*/
|
21 |
+
public function get_fields() {
|
22 |
+
return ['title', 'subtitle'];
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @param string $field
|
27 |
+
*
|
28 |
+
* @return string
|
29 |
+
*/
|
30 |
+
protected function get_title( $field ) {
|
31 |
+
switch ( $field ) {
|
32 |
+
case 'title':
|
33 |
+
return __( 'Slider: Title', 'happy-elementor-addons' );
|
34 |
+
case 'subtitle':
|
35 |
+
return __( 'Slider: Subtitle', 'happy-elementor-addons' );
|
36 |
+
default:
|
37 |
+
return '';
|
38 |
+
}
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* @param string $field
|
43 |
+
*
|
44 |
+
* @return string
|
45 |
+
*/
|
46 |
+
protected function get_editor_type( $field ) {
|
47 |
+
switch ( $field ) {
|
48 |
+
case 'title':
|
49 |
+
return 'LINE';
|
50 |
+
case 'subtitle':
|
51 |
+
return 'AREA';
|
52 |
+
default:
|
53 |
+
return '';
|
54 |
+
}
|
55 |
+
}
|
56 |
+
}
|
wpml/social-icons.php
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Social Icons integration
|
4 |
+
*/
|
5 |
+
namespace Happy_Addons\Elementor;
|
6 |
+
|
7 |
+
defined( 'ABSPATH' ) || die();
|
8 |
+
|
9 |
+
class WPML_Social_Icons extends \WPML_Elementor_Module_With_Items {
|
10 |
+
|
11 |
+
/**
|
12 |
+
* @return string
|
13 |
+
*/
|
14 |
+
public function get_items_field() {
|
15 |
+
return 'ha_social_icon_list';
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* @return array
|
20 |
+
*/
|
21 |
+
public function get_fields() {
|
22 |
+
return ['ha_social_icon_title'];
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @param string $field
|
27 |
+
*
|
28 |
+
* @return string
|
29 |
+
*/
|
30 |
+
protected function get_title( $field ) {
|
31 |
+
switch ( $field ) {
|
32 |
+
case 'ha_social_icon_title':
|
33 |
+
return __( 'Social Icons: Title', 'happy-elementor-addons' );
|
34 |
+
default:
|
35 |
+
return '';
|
36 |
+
}
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* @param string $field
|
41 |
+
*
|
42 |
+
* @return string
|
43 |
+
*/
|
44 |
+
protected function get_editor_type( $field ) {
|
45 |
+
switch ( $field ) {
|
46 |
+
case 'ha_social_icon_title':
|
47 |
+
return 'LINE';
|
48 |
+
default:
|
49 |
+
return '';
|
50 |
+
}
|
51 |
+
}
|
52 |
+
}
|