Version Description
10 December 2019 =
Fix: News Ticket single post selection issue
Fix: Blank icons controls JS error issue (it also fixes EA Table and Elementor FORM issue)
Fix: Gravity Forms Elementor editor style issue
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.4.1 |
Comparing to | |
See all releases |
Code changes from version 2.4.0 to 2.4.1
- assets/admin/js/editor.js +10 -6
- assets/admin/js/editor.min.js +1 -1
- assets/js/happy-addons.js +1 -1
- changelog.txt +6 -0
- classes/assets-manager.php +9 -0
- classes/attention-seeker.php +1 -18
- classes/widgets-manager.php +8 -0
- extensions/widgets-extended.php +10 -12
- plugin.php +2 -2
- readme.txt +20 -14
- widgets/gravityforms/widget.php +2 -2
- widgets/news-ticker/widget.php +2 -2
assets/admin/js/editor.js
CHANGED
@@ -62,18 +62,22 @@
|
|
62 |
if ( elementor.modules.controls.Icons ) {
|
63 |
var WithHappyIcons = elementor.modules.controls.Icons.extend({
|
64 |
getControlValue: function() {
|
65 |
-
var
|
66 |
model = this.model,
|
67 |
valueToMigrate = this.getValueToMigrate(),
|
68 |
newValue = { value: '', library: 'happy-icons' };
|
69 |
|
70 |
-
if ( _.isObject(
|
71 |
-
|
|
|
|
|
|
|
|
|
72 |
this.elementSettingsModel.set( model.get( 'name' ), newValue );
|
73 |
return newValue;
|
74 |
}
|
75 |
|
76 |
-
if ( ! _.isObject(
|
77 |
newValue.value = valueToMigrate;
|
78 |
this.elementSettingsModel.set( model.get( 'name' ), newValue );
|
79 |
return newValue;
|
@@ -85,7 +89,7 @@
|
|
85 |
|
86 |
// Bail if no migration flag or no value to migrate
|
87 |
if ( ! valueToMigrate ) {
|
88 |
-
return
|
89 |
}
|
90 |
|
91 |
var didMigration = this.elementSettingsModel.get( this.dataKeys.migratedKey ),
|
@@ -97,7 +101,7 @@
|
|
97 |
}
|
98 |
// Check if already migrated
|
99 |
if ( didMigration && didMigration[ controlName ] ) {
|
100 |
-
return
|
101 |
}
|
102 |
|
103 |
// Do migration
|
62 |
if ( elementor.modules.controls.Icons ) {
|
63 |
var WithHappyIcons = elementor.modules.controls.Icons.extend({
|
64 |
getControlValue: function() {
|
65 |
+
var controlValue = this.constructor.__super__.getControlValue.call(this),
|
66 |
model = this.model,
|
67 |
valueToMigrate = this.getValueToMigrate(),
|
68 |
newValue = { value: '', library: 'happy-icons' };
|
69 |
|
70 |
+
if ( _.isObject( controlValue ) &&
|
71 |
+
!_.isEmpty( controlValue ) &&
|
72 |
+
controlValue.library !== 'svg' &&
|
73 |
+
controlValue.value.indexOf( 'fashm' ) === 0
|
74 |
+
) {
|
75 |
+
newValue.value = controlValue.value.substr( controlValue.value.indexOf( 'hm hm-' ) );
|
76 |
this.elementSettingsModel.set( model.get( 'name' ), newValue );
|
77 |
return newValue;
|
78 |
}
|
79 |
|
80 |
+
if ( ! _.isObject( controlValue ) && valueToMigrate && valueToMigrate.indexOf( 'hm hm-' ) === 0 ) {
|
81 |
newValue.value = valueToMigrate;
|
82 |
this.elementSettingsModel.set( model.get( 'name' ), newValue );
|
83 |
return newValue;
|
89 |
|
90 |
// Bail if no migration flag or no value to migrate
|
91 |
if ( ! valueToMigrate ) {
|
92 |
+
return controlValue;
|
93 |
}
|
94 |
|
95 |
var didMigration = this.elementSettingsModel.get( this.dataKeys.migratedKey ),
|
101 |
}
|
102 |
// Check if already migrated
|
103 |
if ( didMigration && didMigration[ controlName ] ) {
|
104 |
+
return controlValue;
|
105 |
}
|
106 |
|
107 |
// Do migration
|
assets/admin/js/editor.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(e,t,n){"use strict";function i(){return{translate:["x","y","x_tablet","y_tablet","x_mobile","y_mobile"],skew:["x","y","x_tablet","y_tablet","x_mobile","y_mobile"],scale:["x","y","x_tablet","y_tablet","x_mobile","y_mobile"],rotate:["x","y","z","x_tablet","y_tablet","z_tablet","x_mobile","y_mobile","z_mobile"]}}function a(t,n,i){t="ha_transform_fx_"+t,n="ha_transform_fx_"+n,i.on("change:"+t,function(t,a){if(!a){var o=e.getPanelView().getCurrentPageView().children.find(function(e){return e.model.get("name")===n});i.set(n,_.extend({},i.defaults[n])),o&&o.render()}})}function o(t){var n=elementorFrontend.config.elements.data[t.cid];_.each(i(),function(e,t){_.each(e,function(e){a(t+"_toggle",t+"_"+e,n)})}),e.getPanelView().getCurrentPageView().model.on("editor:close",function(){_.each(i(),function(e,t){n.off("change:ha_transform_fx_"+t+"_toggle")})})}if(e.on("panel:init",function(){t("#elementor-panel-elements-search-input").on("keyup",_.debounce(function(){t("#elementor-panel-elements").find(".hm").parents(".elementor-element").addClass("is-ha-widget")},100))}),e.hooks.addAction("panel/open_editor/widget",function(e,t){o(t)}),e.modules.controls.Icons){var l=e.modules.controls.Icons.extend({getControlValue:function(){var e=this.constructor.__super__.getControlValue.call(this),t=this.model,n=this.getValueToMigrate(),i={value:"",library:"happy-icons"};if(_.isObject(e)&&"svg"!==e.library&&0===e.value.indexOf("fashm"))return i.value=e.value.substr(e.value.indexOf("hm hm-")),this.elementSettingsModel.set(t.get("name"),i),i;if(!_.isObject(e)&&n&&0===n.indexOf("hm hm-"))return i.value=n,this.elementSettingsModel.set(t.get("name"),i),i;if(!this.isMigrationAllowed())return n;if(!n)return e;var a=this.elementSettingsModel.get(this.dataKeys.migratedKey),o=t.get("name");return this.cache.migratedFlag[o]?this.cache.migratedFlag[o]:a&&a[o]?e:this.migrateFa4toFa5(n)}});e.addControlView("icons",l)}n.ha_has_icon_library=function(){return e.helpers&&e.helpers.renderIcon},n.ha_get_feature_label=function(e){var t=document.createElement("DIV");return t.innerHTML=e,e=t.textContent||t.innerText||e,e.length>20?e.substring(0,20)+"...":e},e.modules.layouts.panel.pages.menu.Menu.addItem({name:"happyaddons-home",icon:"hm hm-happyaddons",title:HappyAddonsEditor.editorPanelHomeLinkTitle,type:"link",link:HappyAddonsEditor.editorPanelHomeLinkURL,newTab:!0},"settings"),e.modules.layouts.panel.pages.menu.Menu.addItem({name:"happyaddons-widgets",icon:"hm hm-cross-game",title:HappyAddonsEditor.editorPanelWidgetsLinkTitle,type:"link",link:HappyAddonsEditor.editorPanelWidgetsLinkURL,newTab:!0},"settings")}(elementor,jQuery,window);
|
1 |
+
!function(e,t,n){"use strict";function i(){return{translate:["x","y","x_tablet","y_tablet","x_mobile","y_mobile"],skew:["x","y","x_tablet","y_tablet","x_mobile","y_mobile"],scale:["x","y","x_tablet","y_tablet","x_mobile","y_mobile"],rotate:["x","y","z","x_tablet","y_tablet","z_tablet","x_mobile","y_mobile","z_mobile"]}}function a(t,n,i){t="ha_transform_fx_"+t,n="ha_transform_fx_"+n,i.on("change:"+t,function(t,a){if(!a){var o=e.getPanelView().getCurrentPageView().children.find(function(e){return e.model.get("name")===n});i.set(n,_.extend({},i.defaults[n])),o&&o.render()}})}function o(t){var n=elementorFrontend.config.elements.data[t.cid];_.each(i(),function(e,t){_.each(e,function(e){a(t+"_toggle",t+"_"+e,n)})}),e.getPanelView().getCurrentPageView().model.on("editor:close",function(){_.each(i(),function(e,t){n.off("change:ha_transform_fx_"+t+"_toggle")})})}if(e.on("panel:init",function(){t("#elementor-panel-elements-search-input").on("keyup",_.debounce(function(){t("#elementor-panel-elements").find(".hm").parents(".elementor-element").addClass("is-ha-widget")},100))}),e.hooks.addAction("panel/open_editor/widget",function(e,t){o(t)}),e.modules.controls.Icons){var l=e.modules.controls.Icons.extend({getControlValue:function(){var e=this.constructor.__super__.getControlValue.call(this),t=this.model,n=this.getValueToMigrate(),i={value:"",library:"happy-icons"};if(_.isObject(e)&&!_.isEmpty(e)&&"svg"!==e.library&&0===e.value.indexOf("fashm"))return i.value=e.value.substr(e.value.indexOf("hm hm-")),this.elementSettingsModel.set(t.get("name"),i),i;if(!_.isObject(e)&&n&&0===n.indexOf("hm hm-"))return i.value=n,this.elementSettingsModel.set(t.get("name"),i),i;if(!this.isMigrationAllowed())return n;if(!n)return e;var a=this.elementSettingsModel.get(this.dataKeys.migratedKey),o=t.get("name");return this.cache.migratedFlag[o]?this.cache.migratedFlag[o]:a&&a[o]?e:this.migrateFa4toFa5(n)}});e.addControlView("icons",l)}n.ha_has_icon_library=function(){return e.helpers&&e.helpers.renderIcon},n.ha_get_feature_label=function(e){var t=document.createElement("DIV");return t.innerHTML=e,e=t.textContent||t.innerText||e,e.length>20?e.substring(0,20)+"...":e},e.modules.layouts.panel.pages.menu.Menu.addItem({name:"happyaddons-home",icon:"hm hm-happyaddons",title:HappyAddonsEditor.editorPanelHomeLinkTitle,type:"link",link:HappyAddonsEditor.editorPanelHomeLinkURL,newTab:!0},"settings"),e.modules.layouts.panel.pages.menu.Menu.addItem({name:"happyaddons-widgets",icon:"hm hm-cross-game",title:HappyAddonsEditor.editorPanelWidgetsLinkTitle,type:"link",link:HappyAddonsEditor.editorPanelWidgetsLinkURL,newTab:!0},"settings")}(elementor,jQuery,window);
|
assets/js/happy-addons.js
CHANGED
@@ -441,7 +441,7 @@
|
|
441 |
'ha-image-compare.default': HandleImageCompare,
|
442 |
'ha-justified-gallery.default': HandleJustifiedGallery,
|
443 |
'ha-number.default': NumberHandler,
|
444 |
-
'ha-skills.default': SkillHandler
|
445 |
};
|
446 |
|
447 |
$.each( handlersFnMap, function( widgetName, handlerFn ) {
|
441 |
'ha-image-compare.default': HandleImageCompare,
|
442 |
'ha-justified-gallery.default': HandleJustifiedGallery,
|
443 |
'ha-number.default': NumberHandler,
|
444 |
+
'ha-skills.default': SkillHandler,
|
445 |
};
|
446 |
|
447 |
$.each( handlersFnMap, function( widgetName, handlerFn ) {
|
changelog.txt
CHANGED
@@ -1,3 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
= 2.4.0 - 3 December 2019 =
|
2 |
|
3 |
- New: Happy Clone - (duplicate post/page from anywhere!)
|
1 |
+
= 2.4.1 - 10 December 2019 =
|
2 |
+
|
3 |
+
- Fix: News Ticket single post selection issue
|
4 |
+
- Fix: Blank icons controls JS error issue (it also fixes EA Table and Elementor FORM issue)
|
5 |
+
- Fix: Gravity Forms Elementor editor style issue
|
6 |
+
|
7 |
= 2.4.0 - 3 December 2019 =
|
8 |
|
9 |
- New: Happy Clone - (duplicate post/page from anywhere!)
|
classes/assets-manager.php
CHANGED
@@ -298,5 +298,14 @@ class Assets_Manager {
|
|
298 |
HAPPY_ADDONS_VERSION
|
299 |
);
|
300 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
301 |
}
|
302 |
}
|
298 |
HAPPY_ADDONS_VERSION
|
299 |
);
|
300 |
}
|
301 |
+
|
302 |
+
if ( ha_is_gravityforms_activated() ) {
|
303 |
+
wp_enqueue_style(
|
304 |
+
'happy-elementor-gravity-preview',
|
305 |
+
plugins_url( '/gravityforms/css/formsmain.min.css', 'gravityforms' ),
|
306 |
+
null,
|
307 |
+
HAPPY_ADDONS_VERSION
|
308 |
+
);
|
309 |
+
}
|
310 |
}
|
311 |
}
|
classes/attention-seeker.php
CHANGED
@@ -98,23 +98,6 @@ class Attention_Seeker {
|
|
98 |
}
|
99 |
|
100 |
private static function get_attentions() {
|
101 |
-
return [
|
102 |
-
[
|
103 |
-
'_id' => '#000Friday',
|
104 |
-
'start_date' => strtotime( '20th November 2019, 12AM' ),
|
105 |
-
'end_date' => strtotime( '4th December 2019, 11:59:59PM' ),
|
106 |
-
'render_cb' => [ __CLASS__, 'render_000Friday_offer' ],
|
107 |
-
]
|
108 |
-
];
|
109 |
-
}
|
110 |
-
|
111 |
-
public static function render_000Friday_offer( $id ) {
|
112 |
-
?>
|
113 |
-
<div class="notice updated elementor-message is-dismissible ha-seeker" data-id="<?php echo $id; ?>">
|
114 |
-
<a href="https://happyaddons.com/pricing/" target="_blank" rel="noopener">
|
115 |
-
<img style="max-width:100%; height: auto; display: block;" src="<?php echo HAPPY_ADDONS_ASSETS ?>/imgs/bf-img.png" alt="Black Friday & Cyber Monday Offer - BFCM2019">
|
116 |
-
</a>
|
117 |
-
</div>
|
118 |
-
<?php
|
119 |
}
|
120 |
}
|
98 |
}
|
99 |
|
100 |
private static function get_attentions() {
|
101 |
+
return [];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
102 |
}
|
103 |
}
|
classes/widgets-manager.php
CHANGED
@@ -155,6 +155,11 @@ class Widgets_Manager {
|
|
155 |
'icon' => 'hm hm-hand-watch',
|
156 |
'is_pro' => true,
|
157 |
],
|
|
|
|
|
|
|
|
|
|
|
158 |
];
|
159 |
}
|
160 |
|
@@ -493,8 +498,11 @@ class Widgets_Manager {
|
|
493 |
|
494 |
protected static function register_widget( $widget_key ) {
|
495 |
$widget_file = HAPPY_ADDONS_DIR_PATH . 'widgets/' . $widget_key . '/widget.php';
|
|
|
496 |
if ( is_readable( $widget_file ) ) {
|
|
|
497 |
include_once( $widget_file );
|
|
|
498 |
$widget_class = '\Happy_Addons\Elementor\Widget\\' . str_replace( '-', '_', $widget_key );
|
499 |
if ( class_exists( $widget_class ) ) {
|
500 |
ha_elementor()->widgets_manager->register_widget_type( new $widget_class );
|
155 |
'icon' => 'hm hm-hand-watch',
|
156 |
'is_pro' => true,
|
157 |
],
|
158 |
+
'promo-box' => [
|
159 |
+
'title' => __( 'Promo Box', 'happy-elementor-addons' ),
|
160 |
+
'icon' => 'hm hm-promo',
|
161 |
+
'is_pro' => true,
|
162 |
+
],
|
163 |
];
|
164 |
}
|
165 |
|
498 |
|
499 |
protected static function register_widget( $widget_key ) {
|
500 |
$widget_file = HAPPY_ADDONS_DIR_PATH . 'widgets/' . $widget_key . '/widget.php';
|
501 |
+
|
502 |
if ( is_readable( $widget_file ) ) {
|
503 |
+
|
504 |
include_once( $widget_file );
|
505 |
+
|
506 |
$widget_class = '\Happy_Addons\Elementor\Widget\\' . str_replace( '-', '_', $widget_key );
|
507 |
if ( class_exists( $widget_class ) ) {
|
508 |
ha_elementor()->widgets_manager->register_widget_type( new $widget_class );
|
extensions/widgets-extended.php
CHANGED
@@ -14,13 +14,11 @@ defined('ABSPATH') || die();
|
|
14 |
class Widgets_Extended {
|
15 |
|
16 |
public static function init() {
|
17 |
-
add_action( 'elementor/element/button/section_style/after_section_start', [ __CLASS__, 'add_button_controls'
|
18 |
-
] );
|
19 |
}
|
20 |
|
21 |
-
public static function add_button_controls( Widget_Base $
|
22 |
-
|
23 |
-
$element->add_control(
|
24 |
'ha_fixed_size_toggle',
|
25 |
[
|
26 |
'label' => sprintf( __( 'Fixed Size %s', 'happy-elementor-addons' ), '<i style="color: #d5dadf;" class="hm hm-happyaddons"></i>' ),
|
@@ -29,9 +27,9 @@ class Widgets_Extended {
|
|
29 |
]
|
30 |
);
|
31 |
|
32 |
-
$
|
33 |
|
34 |
-
$
|
35 |
'ha_height',
|
36 |
[
|
37 |
'label' => __( 'Height', 'happy-elementor-addons' ),
|
@@ -53,7 +51,7 @@ class Widgets_Extended {
|
|
53 |
]
|
54 |
);
|
55 |
|
56 |
-
$
|
57 |
'ha_width',
|
58 |
[
|
59 |
'label' => __( 'Width', 'happy-elementor-addons' ),
|
@@ -75,7 +73,7 @@ class Widgets_Extended {
|
|
75 |
]
|
76 |
);
|
77 |
|
78 |
-
$
|
79 |
'ha_align_x',
|
80 |
[
|
81 |
'type' => Controls_Manager::CHOOSE,
|
@@ -110,7 +108,7 @@ class Widgets_Extended {
|
|
110 |
]
|
111 |
);
|
112 |
|
113 |
-
$
|
114 |
'ha_align_y',
|
115 |
[
|
116 |
'type' => Controls_Manager::CHOOSE,
|
@@ -145,7 +143,7 @@ class Widgets_Extended {
|
|
145 |
]
|
146 |
);
|
147 |
|
148 |
-
$
|
149 |
'ha_flex_display',
|
150 |
[
|
151 |
'type' => Controls_Manager::HIDDEN,
|
@@ -161,6 +159,6 @@ class Widgets_Extended {
|
|
161 |
]
|
162 |
);
|
163 |
|
164 |
-
$
|
165 |
}
|
166 |
}
|
14 |
class Widgets_Extended {
|
15 |
|
16 |
public static function init() {
|
17 |
+
add_action( 'elementor/element/button/section_style/after_section_start', [ __CLASS__, 'add_button_controls' ] );
|
|
|
18 |
}
|
19 |
|
20 |
+
public static function add_button_controls( Widget_Base $widget ) {
|
21 |
+
$widget->add_control(
|
|
|
22 |
'ha_fixed_size_toggle',
|
23 |
[
|
24 |
'label' => sprintf( __( 'Fixed Size %s', 'happy-elementor-addons' ), '<i style="color: #d5dadf;" class="hm hm-happyaddons"></i>' ),
|
27 |
]
|
28 |
);
|
29 |
|
30 |
+
$widget->start_popover();
|
31 |
|
32 |
+
$widget->add_responsive_control(
|
33 |
'ha_height',
|
34 |
[
|
35 |
'label' => __( 'Height', 'happy-elementor-addons' ),
|
51 |
]
|
52 |
);
|
53 |
|
54 |
+
$widget->add_responsive_control(
|
55 |
'ha_width',
|
56 |
[
|
57 |
'label' => __( 'Width', 'happy-elementor-addons' ),
|
73 |
]
|
74 |
);
|
75 |
|
76 |
+
$widget->add_control(
|
77 |
'ha_align_x',
|
78 |
[
|
79 |
'type' => Controls_Manager::CHOOSE,
|
108 |
]
|
109 |
);
|
110 |
|
111 |
+
$widget->add_control(
|
112 |
'ha_align_y',
|
113 |
[
|
114 |
'type' => Controls_Manager::CHOOSE,
|
143 |
]
|
144 |
);
|
145 |
|
146 |
+
$widget->add_control(
|
147 |
'ha_flex_display',
|
148 |
[
|
149 |
'type' => Controls_Manager::HIDDEN,
|
159 |
]
|
160 |
);
|
161 |
|
162 |
+
$widget->end_popover();
|
163 |
}
|
164 |
}
|
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.4.
|
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.4.
|
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.4.1
|
7 |
* Author: weDevs
|
8 |
* Author URI: https://happyaddons.com/
|
9 |
* License: GPLv2
|
34 |
|
35 |
defined( 'ABSPATH' ) || die();
|
36 |
|
37 |
+
define( 'HAPPY_ADDONS_VERSION', '2.4.1' );
|
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,6 +1,6 @@
|
|
1 |
=== Happy Elementor Addons ===
|
2 |
Plugin Name: Happy Elementor Addons
|
3 |
-
Version: 2.4.
|
4 |
Author: weDevs
|
5 |
Author URI: https://happyaddons.com/
|
6 |
Contributors: thehappymonster, happyaddons, hasinhayder, mosaddek73, tareq1988, sourav926, wedevs, iqbalrony, obiplabon
|
@@ -27,7 +27,7 @@ _HappyAddons is a unique Elementor Addon. It might be the best addon package for
|
|
27 |
_— **Adam Preiser, Founder of WP Crafter**_
|
28 |
|
29 |
|
30 |
-
###
|
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 |
|
@@ -60,7 +60,7 @@ Unlike other Elementor addons, the Happy Elementor Addons comes with a host of f
|
|
60 |
27. **[News Ticker](https://happyaddons.com/docs/happy-addons-for-elementor/widgets/news-ticker/)** - 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 |
|
62 |
|
63 |
-
###
|
64 |
|
65 |
**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.**
|
66 |
|
@@ -88,25 +88,25 @@ As mentioned, the happy Elementor Addons caters you with these two effects that
|
|
88 |
👉 **[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.
|
89 |
|
90 |
https://www.youtube.com/watch?v=LmtacsLcFPU
|
91 |
-
|
92 |
**Space Effects Using Floating Effects**
|
93 |
-
|
94 |
https://www.youtube.com/watch?v=F33g3zqkeog
|
95 |
|
96 |
|
97 |
-
###
|
98 |
|
99 |
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.
|
100 |
|
101 |
https://www.youtube.com/watch?v=QwJrFMtfO2U
|
102 |
|
103 |
|
104 |
-
##
|
105 |
|
106 |
The premium features of happy addons make it stand out from all the other Elementor add-ons. You will get the following three premium features from the Happy Addons:
|
107 |
|
108 |
|
109 |
-
###
|
110 |
|
111 |
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.
|
112 |
|
@@ -119,7 +119,7 @@ This is where the goodness of the Happy Addons comes to the rescue! With this to
|
|
119 |
https://www.youtube.com/watch?v=s1WlUYweJl0
|
120 |
|
121 |
|
122 |
-
###
|
123 |
|
124 |
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.
|
125 |
|
@@ -130,7 +130,7 @@ To tackle this hassle, the Preset option of the Happy Addons comes into play! Mu
|
|
130 |
https://www.youtube.com/watch?v=fEEvoc6HRBA
|
131 |
|
132 |
|
133 |
-
###
|
134 |
|
135 |
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.
|
136 |
|
@@ -141,7 +141,7 @@ And as usual, you can insert as many widgets as you want into those sections.
|
|
141 |
https://www.youtube.com/watch?v=Vr0-msIB3jc
|
142 |
|
143 |
|
144 |
-
###
|
145 |
|
146 |
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.
|
147 |
|
@@ -154,7 +154,7 @@ Unlike a theme template, using the demo designs won’t put any pressure on your
|
|
154 |
https://www.youtube.com/watch?v=339WNqlDFAA
|
155 |
|
156 |
|
157 |
-
##
|
158 |
|
159 |
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:
|
160 |
|
@@ -183,7 +183,7 @@ to make your text stand apart from the crowd applying smart animations. You can
|
|
183 |
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/)
|
184 |
|
185 |
|
186 |
-
###
|
187 |
|
188 |
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.
|
189 |
|
@@ -192,7 +192,7 @@ For example, it’s compatible with almost every WordPress theme; it’s lightwe
|
|
192 |
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.
|
193 |
|
194 |
|
195 |
-
###
|
196 |
|
197 |
Please give us feedback, contribute and file technical bugs on [GitHub Repo](https://github.com/weDevsOfficial/happy-elementor-addons/issues).
|
198 |
|
@@ -258,6 +258,12 @@ It's really easy and super simple to install **Happy Elementor Addons** plugin b
|
|
258 |
|
259 |
== Changelog ==
|
260 |
|
|
|
|
|
|
|
|
|
|
|
|
|
261 |
= 2.4.0 - 3 December 2019 =
|
262 |
|
263 |
- New: Happy Clone - (duplicate post/page from anywhere!)
|
1 |
=== Happy Elementor Addons ===
|
2 |
Plugin Name: Happy Elementor Addons
|
3 |
+
Version: 2.4.1
|
4 |
Author: weDevs
|
5 |
Author URI: https://happyaddons.com/
|
6 |
Contributors: thehappymonster, happyaddons, hasinhayder, mosaddek73, tareq1988, sourav926, wedevs, iqbalrony, obiplabon
|
27 |
_— **Adam Preiser, Founder of WP Crafter**_
|
28 |
|
29 |
|
30 |
+
### INCLUDED 27 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 |
|
60 |
27. **[News Ticker](https://happyaddons.com/docs/happy-addons-for-elementor/widgets/news-ticker/)** - 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 |
|
62 |
|
63 |
+
### Free Built-in Extensions to Give You an Awesome Experience
|
64 |
|
65 |
**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.**
|
66 |
|
88 |
👉 **[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.
|
89 |
|
90 |
https://www.youtube.com/watch?v=LmtacsLcFPU
|
91 |
+
|
92 |
**Space Effects Using Floating Effects**
|
93 |
+
|
94 |
https://www.youtube.com/watch?v=F33g3zqkeog
|
95 |
|
96 |
|
97 |
+
### Presenting the Mighty Happy Elementor Add Ons Pro
|
98 |
|
99 |
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.
|
100 |
|
101 |
https://www.youtube.com/watch?v=QwJrFMtfO2U
|
102 |
|
103 |
|
104 |
+
## Premium (Pro) Features of the Happy Elementor Addons
|
105 |
|
106 |
The premium features of happy addons make it stand out from all the other Elementor add-ons. You will get the following three premium features from the Happy Addons:
|
107 |
|
108 |
|
109 |
+
### Cross-Domain Copy-Paste: Apply the Same Design to Multiple Domains with a Single Click
|
110 |
|
111 |
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.
|
112 |
|
119 |
https://www.youtube.com/watch?v=s1WlUYweJl0
|
120 |
|
121 |
|
122 |
+
### Preset: Save Your Time and Effort by Using the Preset Feature
|
123 |
|
124 |
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.
|
125 |
|
130 |
https://www.youtube.com/watch?v=fEEvoc6HRBA
|
131 |
|
132 |
|
133 |
+
### Unlimited Section Nesting: Use Unlimited Section Nesting to Go Beyond the Limit
|
134 |
|
135 |
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.
|
136 |
|
141 |
https://www.youtube.com/watch?v=Vr0-msIB3jc
|
142 |
|
143 |
|
144 |
+
### Live Copy: Copy Designs from Demo Site to Get It Done Right Away!
|
145 |
|
146 |
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.
|
147 |
|
154 |
https://www.youtube.com/watch?v=339WNqlDFAA
|
155 |
|
156 |
|
157 |
+
## Premium Widgets of Happy Elementor Addons
|
158 |
|
159 |
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:
|
160 |
|
183 |
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/)
|
184 |
|
185 |
|
186 |
+
### Enjoy Extra Benefits from the Happy Addons!
|
187 |
|
188 |
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.
|
189 |
|
192 |
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.
|
193 |
|
194 |
|
195 |
+
### BUGS, TECHNICAL HINTS OR CONTRIBUTE
|
196 |
|
197 |
Please give us feedback, contribute and file technical bugs on [GitHub Repo](https://github.com/weDevsOfficial/happy-elementor-addons/issues).
|
198 |
|
258 |
|
259 |
== Changelog ==
|
260 |
|
261 |
+
= 2.4.1 - 10 December 2019 =
|
262 |
+
|
263 |
+
- Fix: News Ticket single post selection issue
|
264 |
+
- Fix: Blank icons controls JS error issue (it also fixes EA Table and Elementor FORM issue)
|
265 |
+
- Fix: Gravity Forms Elementor editor style issue
|
266 |
+
|
267 |
= 2.4.0 - 3 December 2019 =
|
268 |
|
269 |
- New: Happy Clone - (duplicate post/page from anywhere!)
|
widgets/gravityforms/widget.php
CHANGED
@@ -153,8 +153,8 @@ class GravityForms extends Base {
|
|
153 |
'type' => Controls_Manager::DIMENSIONS,
|
154 |
'size_units' => [ 'px', '%' ],
|
155 |
'selectors' => [
|
156 |
-
'{{WRAPPER}} .gfield .ginput_container:not(.ginput_container_fileupload) > input' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
157 |
-
'{{WRAPPER}} .gfield .ginput_container.ginput_complex input' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
158 |
'{{WRAPPER}} .gform_body .gfield textarea' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
159 |
],
|
160 |
]
|
153 |
'type' => Controls_Manager::DIMENSIONS,
|
154 |
'size_units' => [ 'px', '%' ],
|
155 |
'selectors' => [
|
156 |
+
'{{WRAPPER}} .gform_body .gfield .ginput_container:not(.ginput_container_fileupload) > input' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
157 |
+
'{{WRAPPER}} .gform_body .gfield .ginput_container.ginput_complex input' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
158 |
'{{WRAPPER}} .gform_body .gfield textarea' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
159 |
],
|
160 |
]
|
widgets/news-ticker/widget.php
CHANGED
@@ -451,7 +451,7 @@ class News_Ticker extends Base {
|
|
451 |
$news_posts = [];
|
452 |
$the_query = get_posts( $query_args );
|
453 |
if ( ! empty( $the_query ) ) {
|
454 |
-
$news_posts = wp_list_pluck( $the_query, 'post_title', '
|
455 |
}
|
456 |
|
457 |
$this->add_render_attribute( 'wrapper', 'class', [ 'ha-news-ticker-wrapper' ] );
|
@@ -471,7 +471,7 @@ class News_Ticker extends Base {
|
|
471 |
<?php foreach ( $news_posts as $key => $value ): ?>
|
472 |
<li <?php $this->print_render_attribute_string( 'item' ); ?>>
|
473 |
<h2 class="ha-news-ticker-title">
|
474 |
-
<a href="<?php echo esc_url( $key ); ?>">
|
475 |
<?php echo esc_html( $value ); ?>
|
476 |
</a>
|
477 |
</h2>
|
451 |
$news_posts = [];
|
452 |
$the_query = get_posts( $query_args );
|
453 |
if ( ! empty( $the_query ) ) {
|
454 |
+
$news_posts = wp_list_pluck( $the_query, 'post_title', 'ID' );
|
455 |
}
|
456 |
|
457 |
$this->add_render_attribute( 'wrapper', 'class', [ 'ha-news-ticker-wrapper' ] );
|
471 |
<?php foreach ( $news_posts as $key => $value ): ?>
|
472 |
<li <?php $this->print_render_attribute_string( 'item' ); ?>>
|
473 |
<h2 class="ha-news-ticker-title">
|
474 |
+
<a href="<?php echo esc_url( get_the_permalink($key) ); ?>">
|
475 |
<?php echo esc_html( $value ); ?>
|
476 |
</a>
|
477 |
</h2>
|