Changeset 3472539
- Timestamp:
- 03/02/2026 09:42:09 AM (3 months ago)
- Location:
- ht-mega-for-elementor
- Files:
-
- 18 edited
- 1 copied
-
tags/3.0.6 (copied) (copied from ht-mega-for-elementor/trunk)
-
tags/3.0.6/admin/include/class-deactivation.php (modified) (18 diffs)
-
tags/3.0.6/admin/include/class.diagnostic-data.php (modified) (5 diffs)
-
tags/3.0.6/admin/include/class.newsletter-data.php (modified) (1 diff)
-
tags/3.0.6/admin/include/template-library.php (modified) (1 diff)
-
tags/3.0.6/htmega_addons_elementor.php (modified) (1 diff)
-
tags/3.0.6/includes/class.assests-cache.php (modified) (2 diffs)
-
tags/3.0.6/includes/class.assests.php (modified) (1 diff)
-
tags/3.0.6/languages/htmega-addons.pot (modified) (45 diffs)
-
tags/3.0.6/readme.txt (modified) (3 diffs)
-
trunk/admin/include/class-deactivation.php (modified) (18 diffs)
-
trunk/admin/include/class.diagnostic-data.php (modified) (5 diffs)
-
trunk/admin/include/class.newsletter-data.php (modified) (1 diff)
-
trunk/admin/include/template-library.php (modified) (1 diff)
-
trunk/htmega_addons_elementor.php (modified) (1 diff)
-
trunk/includes/class.assests-cache.php (modified) (2 diffs)
-
trunk/includes/class.assests.php (modified) (1 diff)
-
trunk/languages/htmega-addons.pot (modified) (45 diffs)
-
trunk/readme.txt (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
ht-mega-for-elementor/tags/3.0.6/admin/include/class-deactivation.php
r3233878 r3472539 1 1 <?php 2 2 if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly 3 /** 4 * Add Plugin Deactivation Feedback 5 * 6 * Edit: 7 * - $PROJECT_NAME 8 * - $PROJECT_VERSION 9 * - $PROJECT_SLUG 10 * - $PROJECT_PRO_SLUG 11 */ 3 12 4 class HTmega_Plugin_Deactivation_Feedback { 13 5 … … 20 12 public $PROJECT_PRO_INSTALL; 21 13 public $PROJECT_PRO_VERSION; 22 // public $DATA_CENTER = 'https://webhook.site/c76bcc06-ad79-4e62-a55b-71118d236a77'; // For testing purpose only23 public $ DATA_CENTER = 'https://connect.pabbly.com/workflow/sendwebhookdata/IjU3NjAwNTY1MDYzZTA0MzM1MjY1NTUzNyI_3D_pc';14 public $DATA_CENTER = 'https://exit-feedback.hasthemes.com/w/f6d46a1c-3d29-4079-baa0-8de1cb0dcc01'; 15 public $WEBHOOK_SECRET = '83d687b0cf4e635ac08e9c7ff1468f5fe98228c631d30c438bc49eae1ef69d03'; 24 16 25 17 private static $_instance = null; 26 /** 27 * Class Instance 28 */ 18 29 19 public static function instance(){ 30 20 if( is_null( self::$_instance ) ){ … … 33 23 return self::$_instance; 34 24 } 35 25 36 26 public function __construct() { 37 27 $this->PROJECT_PRO_ACTIVE = $this->is_pro_plugin_active(); … … 42 32 } 43 33 44 45 34 /** 46 35 * Handle AJAX feedback submission 47 36 */ 48 37 public function handle_feedback() { 49 // Add nonce verification50 38 if ( !check_ajax_referer('htmega_deactivation_nonce', 'nonce', false) ) { 51 39 wp_send_json_error('Invalid nonce'); 52 40 return; 53 41 } 54 42 55 43 if(!current_user_can( 'administrator' )) { 56 44 wp_send_json_error('Permission denied'); 57 45 return; 58 46 } 59 // Sanitize and prepare data 47 60 48 $reason = sanitize_text_field($_POST['reason']); 61 49 $message = sanitize_textarea_field($_POST['message']); 62 50 63 // Prepare data for Pabbly64 51 $data = array_merge( 65 52 [ … … 70 57 ); 71 58 59 $body = wp_json_encode( $data ); 60 72 61 $site_url = wp_parse_url( home_url(), PHP_URL_HOST ); 73 62 $headers = [ 74 'user-agent' => $this->PROJECT_NAME . '/' . md5( $site_url ) . ';',75 'Content-Type' => 'application/json',63 'user-agent' => $this->PROJECT_NAME . '/' . md5( $site_url ) . ';', 64 'Content-Type' => 'application/json', 76 65 ]; 77 66 78 // Send data to Pabbly 67 $signature = $this->generate_signature( $body ); 68 if ( ! empty( $signature ) ) { 69 $headers['X-Webhook-Signature'] = $signature; 70 } 71 79 72 $response = wp_remote_post($this->DATA_CENTER, [ 80 73 'method' => 'POST', … … 85 78 'sslverify' => false, 86 79 'headers' => $headers, 87 'body' => wp_json_encode($data),80 'body' => $body, 88 81 'cookies' => [] 89 82 ]); 90 83 91 // Check for errors92 84 if (!is_wp_error($response)) { 93 85 wp_send_json_success('Feedback submitted successfully'); … … 98 90 99 91 public function get_data() { 100 $hash = md5( current_time( 'U', true ) );101 92 102 93 // Get plugin specific information … … 111 102 112 103 $site_title = get_bloginfo( 'name' ); 113 $site_description = get_bloginfo( 'description' );114 104 $site_url = wp_parse_url( home_url(), PHP_URL_HOST ); 115 105 $admin_email = get_option( 'admin_email' ); … … 136 126 137 127 $ip_address = $this->get_ip_address(); 138 139 // Get Plugins 140 $all_plugins = get_plugins(); 141 $active_plugins = get_option('active_plugins'); 142 $plugins_string = ''; 143 foreach($all_plugins as $plugin_path => $plugin) { 144 $plugins_string .= sprintf( 145 "%s (v%s) - %s | ", 146 $plugin['Name'], 147 $plugin['Version'], 148 in_array($plugin_path, $active_plugins) ? 'Active' : 'Inactive' 149 ); 150 } 151 $plugins_string = rtrim($plugins_string, ' | '); 152 // Get Themes 153 $all_themes = wp_get_themes(); 154 $active_theme = wp_get_theme(); 155 $themes_string = ''; 156 foreach($all_themes as $theme_slug => $theme) { 157 $themes_string .= sprintf( 158 "%s (v%s) - %s | ", 159 $theme->get('Name'), 160 $theme->get('Version'), 161 ($theme_slug === $active_theme->get_stylesheet()) ? 'Active' : 'Inactive' 162 ); 163 } 164 $themes_string = rtrim($themes_string, ' | '); 165 166 128 $install_time = get_option( 'htmega_elementor_addons_activation_time' ); 167 129 $data = [ 168 'hash' => $hash, 169 'project' => $project, 130 'project' => $project, 170 131 'site_title' => $site_title, 171 'site_description' => $site_description,172 132 'site_address' => $site_url, 173 133 'site_url' => $site_url, … … 178 138 'server_info' => $this->get_server_info(), 179 139 'wordpress_info' => $this->get_wordpress_info(), 180 'users_count' => $this->get_users_count(),181 140 'plugins_count' => $this->get_plugins_count(), 182 141 'ip_address' => $ip_address, 183 142 'country_name' => $this->get_country_from_ip( $ip_address ), 184 'plugin_list' => $plugins_string,185 ' theme_list' => $themes_string,143 'plugin_list' => $this->get_active_plugins(), 144 'install_time' => $install_time, 186 145 ]; 187 146 … … 198 157 $php_version = function_exists ( 'phpversion' ) ? phpversion () : ''; 199 158 $mysql_version = method_exists ( $wpdb, 'db_version' ) ? $wpdb->db_version () : ''; 200 $php_max_upload_size = size_format( wp_max_upload_size() );201 $php_default_timezone = date_default_timezone_get();202 $php_soap = class_exists ( 'SoapClient' ) ? 'yes' : 'no';203 $php_fsockopen = function_exists ( 'fsockopen' ) ? 'yes' : 'no';204 $php_curl = function_exists ( 'curl_init' ) ? 'yes' : 'no';205 159 206 160 $server_info = array( … … 208 162 'php_version' => $php_version, 209 163 'mysql_version' => $mysql_version, 210 'php_max_upload_size' => $php_max_upload_size,211 'php_default_timezone' => $php_default_timezone,212 'php_soap' => $php_soap,213 'php_fsockopen' => $php_fsockopen,214 'php_curl' => $php_curl,215 164 ); 216 165 … … 224 173 $wordpress_info = []; 225 174 226 $memory_limit = defined ( 'WP_MEMORY_LIMIT' ) ? WP_MEMORY_LIMIT : '';227 175 $debug_mode = ( defined ( 'WP_DEBUG' ) && WP_DEBUG ) ? 'yes' : 'no'; 228 176 $locale = get_locale(); 229 177 $version = get_bloginfo( 'version' ); 230 $multisite = is_multisite () ? 'yes' : 'no';231 178 $theme_slug = get_stylesheet(); 232 179 233 180 $wordpress_info = [ 234 'memory_limit' => $memory_limit,235 181 'debug_mode' => $debug_mode, 236 182 'locale' => $locale, 237 183 'version' => $version, 238 'multisite' => $multisite,239 184 'theme_slug' => $theme_slug, 240 185 ]; … … 257 202 258 203 return $wordpress_info; 259 }260 261 /**262 * Get users count.263 */264 private function get_users_count() {265 $users_count = [];266 267 $users_count_data = count_users();268 269 $total_users = isset ( $users_count_data['total_users'] ) ? $users_count_data['total_users'] : 0;270 $avail_roles = isset ( $users_count_data['avail_roles'] ) ? $users_count_data['avail_roles'] : [];271 272 $users_count['total'] = $total_users;273 274 if ( is_array( $avail_roles ) && ! empty( $avail_roles ) ) {275 foreach ( $avail_roles as $role => $count ) {276 $users_count[ $role ] = $count;277 }278 }279 280 return $users_count;281 204 } 282 205 … … 317 240 318 241 /** 242 * Get active plugins. 243 */ 244 private function get_active_plugins() { 245 $active_plugins = get_option('active_plugins'); 246 $all_plugins = get_plugins(); 247 $active_plugin_string = ''; 248 foreach($all_plugins as $plugin_path => $plugin) { 249 if ( ! in_array($plugin_path, $active_plugins) ) { 250 continue; 251 } 252 $active_plugin_string .= sprintf( 253 "%s (v%s) - %s | ", 254 $plugin['Name'], 255 $plugin['Version'], 256 'Active' 257 ); 258 } 259 $active_plugin_string = rtrim($active_plugin_string, ' | '); 260 return $active_plugin_string; 261 } 262 263 /** 319 264 * Get IP Address 320 265 */ … … 337 282 338 283 /** 339 * Get Country F orm IDAddress284 * Get Country From IP Address 340 285 */ 341 286 private function get_country_from_ip( $ip_address ) { 342 287 $api_url = 'http://ip-api.com/json/' . $ip_address; 343 344 // Fetch data from the API 288 345 289 $response = wp_remote_get( $api_url ); 346 290 347 291 if ( is_wp_error( $response ) ) { 348 292 return 'Error'; 349 293 } 350 351 // Decode the JSON response 294 352 295 $data = json_decode( wp_remote_retrieve_body($response) ); 353 296 354 297 if ($data && $data->status === 'success') { 355 298 return $data->country; … … 357 300 return 'Unknown'; 358 301 } 302 } 303 304 /** 305 * Generate HMAC-SHA256 signature for webhook payload. 306 */ 307 private function generate_signature( $payload ) { 308 if ( empty( $this->WEBHOOK_SECRET ) ) { 309 return ''; 310 } 311 return 'sha256=' . hash_hmac( 'sha256', $payload, $this->WEBHOOK_SECRET ); 359 312 } 360 313 … … 393 346 return; 394 347 } 348 395 349 $this->deactivation_form_html(); 396 $this->deactivation_form_js(); 397 $this->deactivation_form_css(); 398 } 399 400 public function deactivation_form_html() { ?> 401 <div id="htmega-deactivation-dialog" style="display: none;"> 402 <div class="htmega-deactivation-dialog-content"> 403 <button type="button" class="htmega-close-dialog" aria-label="Close">×</button> 404 <h2 class="htmega-deactivation-dialog-title"><?php esc_html_e('Quick Feedback', 'htmega-addons') ?></h2> 405 <p class="htmega-deactivation-dialog-desc"><?php esc_html_e('If you have a moment, please let us know why you are deactivating: ', 'htmega-addons'); echo esc_html($this->PROJECT_NAME); ?></p> 406 <form id="htmega-deactivation-feedback-form"> 407 <div class="htmega-feedback-options"> 408 <label> 409 <input type="radio" name="reason" data-id="found_better" value="<?php esc_attr_e('I found a better plugin', 'htmega-addons') ?>"> 410 <?php esc_html_e('I found a better plugin', 'htmega-addons') ?> 411 </label> 412 <div id="htmega-found_better-reason-text" class="htmega-deactivation-reason-input" style="display: none;"> 413 <textarea name="found_better_reason" placeholder="<?php esc_attr_e('Please share which plugin.', 'htmega-addons') ?>"></textarea> 414 </div> 415 <label> 416 <input type="radio" name="reason" data-id="stopped_working" value="<?php esc_attr_e('The plugin suddenly stopped working', 'htmega-addons') ?>"> 417 <?php esc_html_e('The plugin suddenly stopped working', 'htmega-addons') ?> 418 </label> 419 <div id="htmega-stopped_working-reason-text" class="htmega-deactivation-reason-input" style="display: none;"> 420 <textarea name="stopped_working_reason" placeholder="<?php esc_attr_e('Please share more details.', 'htmega-addons') ?>"></textarea> 421 </div> 422 <label> 423 <input type="radio" name="reason" data-id="found_bug" value="<?php esc_attr_e('I encountered an error or bug', 'htmega-addons') ?>"> 424 <?php esc_html_e('I encountered an error or bug', 'htmega-addons') ?> 425 </label> 426 <div id="htmega-found_bug-reason-text" class="htmega-deactivation-reason-input" style="display: none;"> 427 <textarea name="found_bug_reason" placeholder="<?php esc_attr_e('Please describe the error/bug you encountered. This will help us fix it for future users.', 'htmega-addons') ?>"></textarea> 428 </div> 429 <label> 430 <input type="radio" name="reason" data-id="not_working" value="<?php esc_attr_e("I could not get the plugin to work", 'htmega-addons') ?>"> 431 <?php esc_html_e("I could not get the plugin to work", 'htmega-addons') ?> 432 </label> 433 <label> 434 <input type="radio" name="reason" data-id="" value="<?php esc_attr_e('I no longer need the plugin', 'htmega-addons') ?>"> 435 <?php esc_html_e('I no longer need the plugin', 'htmega-addons') ?> 436 </label> 437 <label> 438 <input type="radio" name="reason" data-id="" value="<?php esc_attr_e("It's a temporary deactivation", 'htmega-addons') ?>"> 439 <?php esc_html_e("It's a temporary deactivation", 'htmega-addons') ?> 440 </label> 441 <label> 442 <input type="radio" name="reason" data-id="other" value="<?php esc_attr_e("Other", 'htmega-addons') ?>"> 443 <?php esc_html_e("Other", 'htmega-addons') ?> 444 </label> 445 <div id="htmega-other-reason-text" class="htmega-deactivation-reason-input" style="display: none;"> 446 <textarea name="other_reason" placeholder="<?php esc_attr_e("Please share the reason.", 'htmega-addons') ?>"></textarea> 447 </div> 448 </div> 449 <div class="htmega-deactivation-dialog-buttons"> 450 <button type="submit" class="button button-primary"><?php esc_html_e("Submit & Deactivate", 'htmega-addons') ?></button> 451 <a href="#" class="htmega-skip-feedback"><?php esc_html_e("Skip & Deactivate", 'htmega-addons') ?></a> 452 </div> 453 </form> 350 } 351 352 /** 353 * Deactivation form html. 354 */ 355 public function deactivation_form_html() { 356 $ajaxurl = admin_url('admin-ajax.php'); 357 $nonce = wp_create_nonce('htmega_deactivation_nonce'); 358 ?> 359 360 <div id="htmega-deactivation-dialog" class="htm-deactivate-overlay" style="display: none;"> 361 <div class="htm-deactivate-modal"> 362 <!-- Header --> 363 <div class="htm-deactivate-header"> 364 <button type="button" class="htm-close-btn htmega-close-dialog" aria-label="Close"> 365 <svg viewBox="0 0 24 24" fill="none"> 366 <path d="M18 6L6 18M6 6l12 12" stroke-linecap="round" stroke-linejoin="round"/> 367 </svg> 368 </button> 369 <div class="htm-header-content"> 370 <div class="htm-header-icon"> 371 <img src="<?php echo esc_url( HTMEGA_ADDONS_PL_URL . 'admin/assets/images/logo.png' ); ?>" alt="<?php esc_attr_e('HT Mega Logo', 'htmega-addons'); ?>"> 372 </div> 373 <div class="htm-header-text"> 374 <h3><?php esc_html_e("We're Sorry to See You Go!", 'htmega-addons') ?></h3> 375 <p><?php esc_html_e('Your feedback helps us improve HT Mega for everyone.', 'htmega-addons') ?></p> 376 </div> 454 377 </div> 455 378 </div> 456 <?php } 457 public function deactivation_form_js() { 458 $ajaxurl = admin_url('admin-ajax.php'); 459 $nonce = wp_create_nonce('htmega_deactivation_nonce'); 460 ?> 461 <script> 462 jQuery(document).ready(function($) { 463 let pluginToDeactivate = ''; 464 465 function closeDialog() { 466 $('#htmega-deactivation-dialog').hide(); 467 pluginToDeactivate = ''; 468 } 469 470 $('[data-slug="<?php echo esc_attr($this->PROJECT_SLUG); ?>"] .deactivate a').on('click', function(e) { 471 e.preventDefault(); 472 pluginToDeactivate = $(this).attr('href'); 473 $('#htmega-deactivation-dialog').show(); 379 380 <!-- Body --> 381 <div class="htm-deactivate-body"> 382 <p class="htm-body-title"><?php esc_html_e('Please share why you\'re deactivating HT Mega:', 'htmega-addons') ?></p> 383 384 <form id="htmega-deactivation-feedback-form"> 385 <div class="htm-reasons-list"> 386 <!-- Reason 1: Temporary --> 387 <div class="htm-reason-item"> 388 <input type="radio" name="reason" id="htm_reason_temporary" data-id="" value="<?php esc_attr_e("It's a temporary deactivation", 'htmega-addons') ?>"> 389 <label for="htm_reason_temporary" class="htm-reason-label"> 390 <span class="htm-reason-radio"></span> 391 <span class="htm-reason-icon"> 392 <svg viewBox="0 0 24 24"> 393 <circle cx="12" cy="12" r="10"/> 394 <polyline points="12 6 12 12 16 14"/> 395 </svg> 396 </span> 397 <span class="htm-reason-text"> 398 <span><?php esc_html_e("It's a temporary deactivation", 'htmega-addons') ?></span> 399 </span> 400 </label> 401 </div> 402 403 <!-- Reason 2: No longer need --> 404 <div class="htm-reason-item"> 405 <input type="radio" name="reason" id="htm_reason_no_need" data-id="" value="<?php esc_attr_e('I no longer need the plugin', 'htmega-addons') ?>"> 406 <label for="htm_reason_no_need" class="htm-reason-label"> 407 <span class="htm-reason-radio"></span> 408 <span class="htm-reason-icon"> 409 <svg viewBox="0 0 24 24"> 410 <path d="M18 6L6 18M6 6l12 12"/> 411 </svg> 412 </span> 413 <span class="htm-reason-text"> 414 <span><?php esc_html_e('I no longer need the plugin', 'htmega-addons') ?></span> 415 </span> 416 </label> 417 </div> 418 419 <!-- Reason 3: Found better --> 420 <div class="htm-reason-item"> 421 <input type="radio" name="reason" id="htm_reason_better" data-id="found_better" value="<?php esc_attr_e('I found a better plugin', 'htmega-addons') ?>"> 422 <label for="htm_reason_better" class="htm-reason-label"> 423 <span class="htm-reason-radio"></span> 424 <span class="htm-reason-icon"> 425 <svg viewBox="0 0 24 24"> 426 <circle cx="11" cy="11" r="8"/> 427 <path d="M21 21l-4.35-4.35"/> 428 </svg> 429 </span> 430 <span class="htm-reason-text"> 431 <span><?php esc_html_e('I found a better plugin', 'htmega-addons') ?></span> 432 </span> 433 </label> 434 </div> 435 <div id="htmega-found_better-reason-text" class="htm-additional-input htmega-deactivation-reason-input"> 436 <textarea name="found_better_reason" placeholder="<?php esc_attr_e('Which plugin are you switching to? We\'d love to know...', 'htmega-addons') ?>"></textarea> 437 </div> 438 439 <!-- Reason 4: Not working --> 440 <div class="htm-reason-item"> 441 <input type="radio" name="reason" id="htm_reason_not_working" data-id="stopped_working" value="<?php esc_attr_e('The plugin suddenly stopped working', 'htmega-addons') ?>"> 442 <label for="htm_reason_not_working" class="htm-reason-label"> 443 <span class="htm-reason-radio"></span> 444 <span class="htm-reason-icon"> 445 <svg viewBox="0 0 24 24"> 446 <path d="M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z"/> 447 <line x1="12" y1="9" x2="12" y2="13"/> 448 <line x1="12" y1="17" x2="12.01" y2="17"/> 449 </svg> 450 </span> 451 <span class="htm-reason-text"> 452 <span><?php esc_html_e('The plugin suddenly stopped working', 'htmega-addons') ?></span> 453 </span> 454 </label> 455 </div> 456 <div id="htmega-stopped_working-reason-text" class="htm-additional-input htmega-deactivation-reason-input"> 457 <textarea name="stopped_working_reason" placeholder="<?php esc_attr_e('Please describe the issue you\'re experiencing...', 'htmega-addons') ?>"></textarea> 458 </div> 459 460 <!-- Reason 5: Bug --> 461 <div class="htm-reason-item"> 462 <input type="radio" name="reason" id="htm_reason_bug" data-id="found_bug" value="<?php esc_attr_e('I encountered an error or bug', 'htmega-addons') ?>"> 463 <label for="htm_reason_bug" class="htm-reason-label"> 464 <span class="htm-reason-radio"></span> 465 <span class="htm-reason-icon"> 466 <svg viewBox="0 0 24 24"> 467 <path d="M14.7 6.3a1 1 0 000 1.4l1.6 1.6a1 1 0 001.4 0l3.77-3.77a6 6 0 01-7.94 7.94l-6.91 6.91a2.12 2.12 0 01-3-3l6.91-6.91a6 6 0 017.94-7.94l-3.76 3.76z"/> 468 </svg> 469 </span> 470 <span class="htm-reason-text"> 471 <span><?php esc_html_e('I encountered an error or bug', 'htmega-addons') ?></span> 472 </span> 473 </label> 474 </div> 475 <div id="htmega-found_bug-reason-text" class="htm-additional-input htmega-deactivation-reason-input"> 476 <textarea name="found_bug_reason" placeholder="<?php esc_attr_e('Please describe the error/bug. This will help us fix it...', 'htmega-addons') ?>"></textarea> 477 </div> 478 479 <!-- Reason 6: Other --> 480 <div class="htm-reason-item"> 481 <input type="radio" name="reason" id="htm_reason_other" data-id="other" value="<?php esc_attr_e('Other', 'htmega-addons') ?>"> 482 <label for="htm_reason_other" class="htm-reason-label"> 483 <span class="htm-reason-radio"></span> 484 <span class="htm-reason-icon"> 485 <svg viewBox="0 0 24 24"> 486 <path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/> 487 </svg> 488 </span> 489 <span class="htm-reason-text"> 490 <span><?php esc_html_e('Other', 'htmega-addons') ?></span> 491 </span> 492 </label> 493 </div> 494 <div id="htmega-other-reason-text" class="htm-additional-input htmega-deactivation-reason-input"> 495 <textarea name="other_reason" placeholder="<?php esc_attr_e('Please share the reason...', 'htmega-addons') ?>"></textarea> 496 </div> 497 </div> 498 499 <!-- Footer --> 500 <div class="htm-deactivate-footer"> 501 <a href="#" class="htm-btn htm-btn-skip htmega-skip-feedback"><?php esc_html_e('Skip & Deactivate', 'htmega-addons') ?></a> 502 <button type="submit" class="htm-btn htm-btn-submit"> 503 <span><?php esc_html_e('Submit & Deactivate', 'htmega-addons') ?></span> 504 </button> 505 </div> 506 </form> 507 </div> 508 </div> 509 </div> 510 511 <script> 512 ;jQuery(document).ready(function($) { 513 let pluginToDeactivate = ''; 514 515 function closeDialog() { 516 $('#htmega-deactivation-dialog').animate({ 517 opacity: 0 518 }, 'slow', function() { 519 $(this).css('display', 'none'); 520 }); 521 pluginToDeactivate = ''; 522 } 523 524 // Open dialog when deactivate is clicked 525 $('[data-slug="<?php echo esc_attr($this->PROJECT_SLUG); ?>"] .deactivate a').on('click', function(e) { 526 e.preventDefault(); 527 pluginToDeactivate = $(this).attr('href'); 528 $('#htmega-deactivation-dialog').css({'display': 'flex', 'opacity': '1'}); 529 }); 530 531 // Close dialog on X button click 532 $('.htmega-close-dialog').on('click', closeDialog); 533 534 // Close dialog on overlay click 535 $('#htmega-deactivation-dialog').on('click', function(e) { 536 if (e.target === this) { 537 closeDialog(); 538 } 539 }); 540 541 // Prevent close when clicking modal content 542 $('.htm-deactivate-modal').on('click', function(e) { 543 e.stopPropagation(); 544 }); 545 546 // Handle radio button change - show/hide textarea 547 $('input[name="reason"]').on('change', function() { 548 $('.htmega-deactivation-reason-input').removeClass('active').hide(); 549 550 const id = $(this).data('id'); 551 if (['other', 'found_better', 'stopped_working', 'found_bug'].includes(id)) { 552 $(`#htmega-${id}-reason-text`).addClass('active').show(); 553 $(`#htmega-${id}-reason-text textarea`).focus(); 554 } 555 }); 556 557 // Handle form submission 558 $('#htmega-deactivation-feedback-form').on('submit', function(e) { 559 e.preventDefault(); 560 561 const $submitButton = $(this).find('button[type="submit"]'); 562 const $buttonText = $submitButton.find('span'); 563 const originalText = $buttonText.text(); 564 565 $buttonText.text('<?php esc_html_e('Submitting...', 'htmega-addons') ?>'); 566 $submitButton.prop('disabled', true); 567 568 const reason = $('input[name="reason"]:checked').val() || 'No reason selected'; 569 const message = $('.htmega-deactivation-reason-input.active textarea').val() || ''; 570 571 const data = { 572 action: 'htmega_plugin_deactivation_feedback', 573 reason: reason, 574 message: message, 575 nonce: '<?php echo esc_js($nonce); ?>' 576 }; 577 578 $.post('<?php echo esc_url_raw($ajaxurl); ?>', data) 579 .done(function(response) { 580 if (response.success) { 581 window.location.href = pluginToDeactivate; 582 } else { 583 console.error('Feedback submission failed:', response.data); 584 $buttonText.text(originalText); 585 $submitButton.prop('disabled', false); 586 } 587 }) 588 .fail(function(xhr) { 589 console.error('Feedback submission failed:', xhr.responseText); 590 $buttonText.text(originalText); 591 $submitButton.prop('disabled', false); 474 592 }); 475 476 $('.htmega-close-dialog').on('click', closeDialog); 477 478 $('#htmega-deactivation-dialog').on('click', function(e) { 479 if (e.target === this) { 480 closeDialog(); 481 } 482 }); 483 484 $('.htmega-deactivation-dialog-content').on('click', function(e) { 485 e.stopPropagation(); 486 }); 487 488 $('input[name="reason"]').on('change', function() { 489 $('.htmega-deactivation-reason-input').removeClass('active').hide(); 490 491 const id = $(this).data('id'); 492 if (['other', 'found_better', 'stopped_working', 'found_bug'].includes(id)) { 493 $(`#htmega-${id}-reason-text`).addClass('active').show(); 494 } 495 }); 496 497 $('#htmega-deactivation-feedback-form').on('submit', function(e) { 498 e.preventDefault(); 499 500 const $submitButton = $(this).find('button[type="submit"]'); 501 const originalText = $submitButton.text(); 502 503 $submitButton.text('Submitting...').prop('disabled', true); 504 505 const reason = $('input[name="reason"]:checked').val() || 'No reason selected'; 506 const message = $('.htmega-deactivation-reason-input.active textarea').val() || ''; 507 508 const data = { 509 action: 'htmega_plugin_deactivation_feedback', 510 reason: reason, 511 message: message, 512 nonce: '<?php echo esc_js($nonce); ?>' 513 }; 514 $.post('<?php echo esc_url_raw($ajaxurl); ?>', data) 515 .done(function(response) { 516 if (response.success) { 517 window.location.href = pluginToDeactivate; 518 } else { 519 console.error('Feedback submission failed:', response.data); 520 $submitButton.text(originalText).prop('disabled', false); 521 } 522 }) 523 .fail(function(xhr) { 524 console.error('Feedback submission failed:', xhr.responseText); 525 $submitButton.text(originalText).prop('disabled', false); 526 }); 527 }); 528 529 $('.htmega-skip-feedback').on('click', function(e) { 530 e.preventDefault(); 531 window.location.href = pluginToDeactivate; 532 }); 533 }); 534 </script> 535 <?php 536 } 537 public function deactivation_form_css() { ?> 538 <style> 539 #htmega-deactivation-dialog { 540 position: fixed; 541 top: 0; 542 left: 0; 543 right: 0; 544 bottom: 0; 545 background: rgba(0, 0, 0, 0.5); 546 z-index: 9999; 547 display: flex; 548 align-items: center; 549 justify-content: center; 550 } 551 552 .htmega-deactivation-dialog-content { 553 background: #fff; 554 padding: 30px; 555 max-width: 500px; 556 width: 100%; 557 border-radius: 4px; 558 box-shadow: 0 2px 30px rgba(0, 0, 0, 0.1); 559 position: relative; 560 } 561 .htmega-deactivation-dialog-title { 562 margin-top: 0; 563 } 564 565 .htmega-close-dialog { 566 position: absolute; 567 top: 10px; 568 right: 10px; 569 width: 24px; 570 height: 24px; 571 border-radius: 50%; 572 background: #f0f0f0; 573 border: none; 574 cursor: pointer; 575 display: flex; 576 justify-content: center; 577 font-size: 18px; 578 line-height: 18px; 579 color: #333; 580 transition: all 0.2s ease; 581 font-weight: 700; 582 } 583 584 .htmega-close-dialog:hover { 585 background: #e0e0e0; 586 color: #333; 587 } 588 589 .htmega-feedback-options { 590 margin: 20px 0; 591 } 592 593 .htmega-feedback-options label { 594 display: block; 595 margin: 10px 0; 596 } 597 598 599 .htmega-deactivation-reason-input { 600 margin-bottom: 15px; 601 } 602 .htmega-deactivation-reason-input textarea { 603 width: 100%; 604 min-height: 60px; 605 padding: 6px 8px; 606 display: block; 607 } 608 609 .htmega-deactivation-dialog-buttons { 610 margin-top: 20px; 611 display: flex; 612 align-items: center; 613 justify-content: flex-end; 614 } 615 616 .htmega-skip-feedback { 617 margin-left: 10px; 618 color: #666; 619 text-decoration: none; 620 } 621 </style> 593 }); 594 595 // Skip feedback and deactivate 596 $('.htmega-skip-feedback').on('click', function(e) { 597 e.preventDefault(); 598 window.location.href = pluginToDeactivate; 599 }); 600 }); 601 </script> 602 603 <style> 604 /* Overlay */ 605 #htmega-deactivation-dialog.htm-deactivate-overlay { 606 position: fixed; 607 top: 0; 608 left: 0; 609 width: 100%; 610 height: 100%; 611 background: rgba(0, 0, 0, 0.6); 612 display: flex; 613 align-items: center; 614 justify-content: center; 615 z-index: 999999; 616 animation: htmFadeIn 0.3s ease; 617 } 618 619 @keyframes htmFadeIn { 620 from { opacity: 0; } 621 to { opacity: 1; } 622 } 623 624 @keyframes htmFadeOut { 625 from { opacity: 1; } 626 to { opacity: 0; } 627 } 628 629 @keyframes htmSlideUp { 630 from { 631 opacity: 0; 632 transform: translateY(30px) scale(0.95); 633 } 634 to { 635 opacity: 1; 636 transform: translateY(0) scale(1); 637 } 638 } 639 640 @keyframes htmSlideDown { 641 from { 642 opacity: 1; 643 transform: translateY(0) scale(1); 644 } 645 to { 646 opacity: 0; 647 transform: translateY(30px) scale(0.95); 648 } 649 } 650 651 /* Closing animation classes */ 652 #htmega-deactivation-dialog.htm-deactivate-overlay.htm-closing { 653 animation: htmFadeOut 0.25s ease forwards; 654 } 655 656 #htmega-deactivation-dialog.htm-closing .htm-deactivate-modal { 657 animation: htmSlideDown 0.25s ease forwards; 658 } 659 660 /* Modal Container */ 661 .htm-deactivate-modal { 662 background: #ffffff; 663 border-radius: 8px; 664 width: 480px; 665 max-width: 95%; 666 overflow: hidden; 667 box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2); 668 animation: htmSlideUp 0.4s ease; 669 } 670 671 /* Header */ 672 .htm-deactivate-header { 673 background: linear-gradient(135deg, #C02D5E 0%, #D43A6B 50%, #DA4D7A 100%); 674 padding: 20px 28px; 675 position: relative; 676 overflow: hidden; 677 } 678 679 .htm-deactivate-header::before { 680 content: ''; 681 position: absolute; 682 top: -50%; 683 right: -20%; 684 width: 200px; 685 height: 200px; 686 background: rgba(255, 255, 255, 0.1); 687 border-radius: 50%; 688 } 689 690 .htm-deactivate-header::after { 691 content: ''; 692 position: absolute; 693 bottom: -30%; 694 left: 10%; 695 width: 120px; 696 height: 120px; 697 background: rgba(255, 255, 255, 0.08); 698 border-radius: 50%; 699 } 700 701 .htm-header-content { 702 position: relative; 703 z-index: 1; 704 display: flex; 705 align-items: center; 706 gap: 16px; 707 } 708 709 .htm-header-icon { 710 width: 40px; 711 height: 40px; 712 display: flex; 713 align-items: center; 714 justify-content: center; 715 } 716 717 .htm-header-icon img { 718 width: 100%; 719 height: 100%; 720 object-fit: cover; 721 } 722 723 .htm-header-text h3 { 724 color: #ffffff; 725 font-size: 16px; 726 font-weight: 600; 727 margin: 0 0 2px 0; 728 } 729 730 .htm-header-text p { 731 color: rgba(255, 255, 255, 0.85); 732 font-size: 12px; 733 font-weight: 400; 734 margin: 0; 735 } 736 737 /* Close Button */ 738 .htm-close-btn { 739 position: absolute; 740 top: 16px; 741 right: 16px; 742 width: 28px; 743 height: 28px; 744 background: rgba(255, 255, 255, 0.15); 745 border: none; 746 border-radius: 6px; 747 cursor: pointer; 748 display: flex; 749 align-items: center; 750 justify-content: center; 751 transition: all 0.2s ease; 752 z-index: 2; 753 padding: 0; 754 } 755 756 .htm-close-btn:hover { 757 background: rgba(255, 255, 255, 0.25); 758 transform: rotate(90deg); 759 } 760 761 .htm-close-btn svg { 762 width: 16px; 763 height: 16px; 764 stroke: #ffffff; 765 stroke-width: 2; 766 } 767 768 /* Body Content */ 769 .htm-body-title { 770 font-size: 14px; 771 color: #374151; 772 font-weight: 500; 773 margin: 20px 0 0 0; 774 padding: 0 25px; 775 } 776 777 /* Reason Options */ 778 .htm-reasons-list { 779 display: flex; 780 flex-direction: column; 781 gap: 6px; 782 padding: 20px 25px; 783 } 784 785 .htm-reason-item { 786 position: relative; 787 } 788 789 .htm-reason-item input[type="radio"] { 790 position: absolute; 791 opacity: 0; 792 width: 0; 793 height: 0; 794 } 795 796 .htm-reason-label { 797 display: flex; 798 align-items: center; 799 gap: 12px; 800 padding: 10px 14px; 801 background: #ffffff; 802 border: 1px solid #e5e5e5; 803 border-radius: 8px; 804 cursor: pointer; 805 transition: all 0.25s ease; 806 } 807 808 .htm-reason-label:hover { 809 border-color: #D43A6B; 810 background: #FDF2F5; 811 } 812 813 .htm-reason-item input[type="radio"]:checked + .htm-reason-label { 814 border-color: #D43A6B; 815 background: #FDF2F5; 816 box-shadow: 0 2px 8px rgba(212, 58, 107, 0.15); 817 } 818 819 .htm-reason-radio { 820 width: 14px; 821 height: 14px; 822 min-width: 14px; 823 border: 2px solid #d1d5db; 824 border-radius: 50%; 825 display: flex; 826 align-items: center; 827 justify-content: center; 828 transition: all 0.25s ease; 829 } 830 831 .htm-reason-item input[type="radio"]:checked + .htm-reason-label .htm-reason-radio { 832 border-color: #D43A6B; 833 background: #D43A6B; 834 } 835 836 .htm-reason-radio::after { 837 content: ''; 838 width: 6px; 839 height: 6px; 840 background: #ffffff; 841 border-radius: 50%; 842 transform: scale(0); 843 transition: transform 0.2s ease; 844 } 845 846 .htm-reason-item input[type="radio"]:checked + .htm-reason-label .htm-reason-radio::after { 847 transform: scale(1); 848 } 849 850 .htm-reason-icon { 851 width: 30px; 852 height: 30px; 853 min-width: 30px; 854 background: #FBDFE5; 855 border-radius: 6px; 856 display: flex; 857 align-items: center; 858 justify-content: center; 859 transition: all 0.25s ease; 860 } 861 862 .htm-reason-item input[type="radio"]:checked + .htm-reason-label .htm-reason-icon { 863 background: #D43A6B; 864 } 865 866 .htm-reason-icon svg { 867 width: 15px; 868 height: 15px; 869 stroke: #D43A6B; 870 stroke-width: 2; 871 fill: none; 872 transition: all 0.25s ease; 873 } 874 875 .htm-reason-item input[type="radio"]:checked + .htm-reason-label .htm-reason-icon svg { 876 stroke: #ffffff; 877 } 878 879 .htm-reason-text { 880 flex: 1; 881 } 882 883 .htm-reason-text span { 884 font-size: 13px; 885 font-weight: 500; 886 color: #374151; 887 display: block; 888 line-height: 1.3; 889 } 890 891 /* Additional Input Field */ 892 .htm-additional-input.htmega-deactivation-reason-input { 893 margin-top: 6px; 894 margin-bottom: 6px; 895 display: none; 896 animation: htmInputSlideDown 0.3s ease; 897 } 898 899 .htm-additional-input.htmega-deactivation-reason-input.active { 900 display: block; 901 } 902 903 @keyframes htmInputSlideDown { 904 from { 905 opacity: 0; 906 transform: translateY(-10px); 907 } 908 to { 909 opacity: 1; 910 transform: translateY(0); 911 } 912 } 913 914 .htm-additional-input textarea { 915 width: 100%; 916 min-height: 70px; 917 padding: 12px 14px; 918 border: 1px solid #e5e5e5; 919 border-radius: 8px; 920 font-size: 13px; 921 font-family: inherit; 922 resize: vertical; 923 transition: all 0.25s ease; 924 background: #ffffff; 925 box-sizing: border-box; 926 } 927 928 .htm-additional-input textarea:focus { 929 outline: none; 930 border-color: #D43A6B; 931 background: #ffffff; 932 box-shadow: 0 0 0 3px rgba(212, 58, 107, 0.1); 933 } 934 935 .htm-additional-input textarea::placeholder { 936 color: #94a3b8; 937 } 938 939 /* Footer */ 940 .htm-deactivate-footer { 941 padding: 16px 28px 20px; 942 display: flex; 943 align-items: center; 944 justify-content: space-between; 945 gap: 16px; 946 border-top: 1px solid #e5e5e5; 947 margin-top: 10px; 948 } 949 950 .htm-btn { 951 padding: 10px 20px; 952 border-radius: 6px; 953 font-size: 13px; 954 cursor: pointer; 955 transition: all 0.25s ease; 956 display: inline-flex; 957 align-items: center; 958 gap: 6px; 959 text-decoration: none; 960 } 961 962 .htm-btn-skip { 963 background: transparent; 964 color: #6B7280; 965 padding: 10px 0; 966 } 967 968 .htm-btn-skip:hover { 969 color: #D43A6B; 970 } 971 972 .htm-btn-submit { 973 background: #D43A6B; 974 border: 1px solid #D43A6B; 975 color: #ffffff; 976 } 977 978 .htm-btn-submit:hover { 979 background: #C02D5E; 980 border-color: #C02D5E; 981 color: #ffffff; 982 } 983 984 .htm-btn-submit:active { 985 background: #A82550; 986 } 987 988 .htm-btn-submit:disabled { 989 opacity: 0.7; 990 cursor: not-allowed; 991 } 992 993 .htm-btn-submit svg { 994 width: 14px; 995 height: 14px; 996 stroke: currentColor; 997 stroke-width: 2; 998 fill: none; 999 } 1000 1001 /* Responsive */ 1002 @media (max-width: 600px) { 1003 .htm-deactivate-modal { 1004 margin: 16px; 1005 } 1006 1007 .htm-deactivate-header { 1008 padding: 16px 20px; 1009 } 1010 1011 .htm-deactivate-body { 1012 padding: 16px 20px; 1013 } 1014 1015 .htm-deactivate-footer { 1016 padding: 14px 20px 18px; 1017 flex-direction: column; 1018 } 1019 1020 .htm-btn { 1021 width: 100%; 1022 justify-content: center; 1023 } 1024 } 1025 </style> 1026 622 1027 <?php } 623 1028 } -
ht-mega-for-elementor/tags/3.0.6/admin/include/class.diagnostic-data.php
r3257530 r3472539 80 80 $this->project_type = 'wordpress-plugin'; 81 81 $this->project_version = HTMEGA_VERSION; 82 $this->data_center = 'https:// connect.pabbly.com/workflow/sendwebhookdata/IjU3NjAwNTY1MDYzZTA0MzM1MjY1NTUzNyI_3D_pc';82 $this->data_center = 'https://n8n.aslamhasib.com/webhook/484fe1ab-9cdf-4318-8b6f-2b218ac47009'; 83 83 $this->privacy_policy = 'https://wphtmega.com/privacy-policy/'; 84 84 … … 86 86 $this->project_pro_installed = $this->is_pro_plugin_installed(); 87 87 $this->project_pro_version = $this->get_pro_version(); 88 89 if ( get_option( 'htmega_diagnostic_data_agreed' ) === 'yes' || get_option( 'htmega_diagnostic_data_notice' ) === 'no' ) { 90 return; 91 } 88 92 89 93 add_action( 'admin_notices', function () { … … 468 472 * Show notices. 469 473 */ 474 /** 475 * Check if this plugin should show the diagnostic data notice. 476 * Returns false if already agreed, dismissed, or another HT plugin takes priority. 477 */ 478 public function should_show_notice() { 479 if ( get_option( 'htmega_diagnostic_data_agreed' ) === 'yes' || get_option( 'htmega_diagnostic_data_notice' ) === 'no' ) { 480 return false; 481 } 482 483 $sibling_plugins = array( 484 'woolentor-addons/woolentor_addons_elementor.php' => array( 485 'agreed' => 'woolentor_diagnostic_data_agreed', 486 'notice' => 'woolentor_diagnostic_data_notice', 487 ), 488 'ht-easy-google-analytics/ht-easy-google-analytics.php' => array( 489 'agreed' => 'htga4_diagnostic_data_agreed', 490 'notice' => 'htga4_diagnostic_data_notice', 491 ), 492 'ht-contactform/contact-form-widget-elementor.php' => array( 493 'agreed' => 'ht_contactform_diagnostic_data_agreed', 494 'notice' => 'ht_contactform_diagnostic_data_notice', 495 ), 496 'hashbar-wp-notification-bar/init.php' => array( 497 'agreed' => 'hashbar_diagnostic_data_agreed', 498 'notice' => 'hashbar_diagnostic_data_notice', 499 ), 500 'support-genix-lite/support-genix-lite.php' => array( 501 'agreed' => 'support_genix_lite_diagnostic_data_agreed', 502 'notice' => 'support_genix_lite_diagnostic_data_notice', 503 ), 504 'pixelavo/pixelavo.php' => array( 505 'agreed' => 'pixelavo_diagnostic_data_agreed', 506 'notice' => 'pixelavo_diagnostic_data_notice', 507 ), 508 'swatchly/swatchly.php' => array( 509 'agreed' => 'swatchly_diagnostic_data_agreed', 510 'notice' => 'swatchly_diagnostic_data_notice', 511 ), 512 'extensions-for-cf7/extensions-for-cf7.php' => array( 513 'agreed' => 'ht_cf7extensions_diagnostic_data_agreed', 514 'notice' => 'ht_cf7extensions_diagnostic_data_notice', 515 ), 516 'whols/whols.php' => array( 517 'agreed' => 'whols_diagnostic_data_agreed', 518 'notice' => 'whols_diagnostic_data_notice', 519 ), 520 'wp-plugin-manager/plugin-main.php' => array( 521 'agreed' => 'htpm_diagnostic_data_agreed', 522 'notice' => 'htpm_diagnostic_data_notice', 523 ), 524 'just-tables/just-tables.php' => array( 525 'agreed' => 'justtables_diagnostic_data_agreed', 526 'notice' => 'justtables_diagnostic_data_notice', 527 ), 528 'really-simple-google-tag-manager/really-simple-google-tag-manager.php' => array( 529 'agreed' => 'simple_googletag_diagnostic_data_agreed', 530 'notice' => 'simple_googletag_diagnostic_data_notice', 531 ), 532 'insert-headers-and-footers-script/init.php' => array( 533 'agreed' => 'ihafs_diagnostic_data_agreed', 534 'notice' => 'ihafs_diagnostic_data_notice', 535 ), 536 ); 537 538 foreach ( $sibling_plugins as $plugin_slug => $options ) { 539 if ( get_option( $options['agreed'] ) === 'yes' ) { 540 update_option( 'htmega_diagnostic_data_agreed', 'yes' ); 541 update_option( 'htmega_diagnostic_data_notice', 'no' ); 542 return false; 543 } 544 } 545 546 // Ensure only one HT plugin shows the diagnostic notice per request. 547 global $ht_diagnostic_notice_owner; 548 if ( isset( $ht_diagnostic_notice_owner ) && $ht_diagnostic_notice_owner !== 'htmega' ) { 549 return false; 550 } 551 $ht_diagnostic_notice_owner = 'htmega'; 552 553 return true; 554 } 555 470 556 private function show_notices() { 557 if ( ! $this->should_show_notice() ) { 558 return; 559 } 560 471 561 if ( 'no' === $this->is_capable_user() ) { 472 562 return; … … 490 580 $ajax_nonce = wp_create_nonce( "htmega-diagonstic-data-ajax-request" ); 491 581 492 $message_l1 = sprintf(/* translators: 1: Project Name, 2: Opening strong tag, 3: Closing strong tag, 4: Privacy Policy link */ esc_html__( 'At %2$s%1$s%3$s, we prioritize continuous improvement and compatibility. To achieve this, we gather non-sensitive diagnostic information and details about plugin usage. This includes your site\'s URL, the versions of WordPress and PHP you\'re using, and a list of your installed plugins and themes. We also require your email address to provide you with exclusive discount coupons and updates. This data collection is crucial for ensuring that %2$s%1$s%3$s remains up-to-date and compatible with the most widely-used plugins and themes. Rest assured, your privacy is our priority - no spam, guaranteed. %4$sPrivacy Policy%5$s', 'htmega-addons' ), esc_html( $this->project_name ), '<strong>', '</strong>', '<a target="_blank" href="' . esc_url( $this->privacy_policy ) . '">', '</a>', '<h4 class="htmega-diagnostic-data-title">', '</h4>' ); 493 $message_l2 = sprintf( esc_html__( 'Server information (Web server, PHP version, MySQL version), WordPress information, site name, site URL, number of plugins, number of users, your name, and email address. You can rest assured that no sensitive data will be collected or tracked. %1$sLearn more%2$s.', 'htmega-addons' ), '<a target="_blank" href="' . esc_url( $this->privacy_policy ) . '">', '</a>' ); 582 $message_l2 = sprintf( esc_html__( 'Server information (Web server, PHP version, MySQL version), WordPress information, site name, site URL, number of plugins, number of users, your name, and email address. You can rest assured that no sensitive data will be collected or tracked. %1$sPrivacy Policy%2$s', 'htmega-addons' ), '<a target="_blank" href="' . esc_url( $this->privacy_policy ) . '">', '</a>' ); 494 583 495 584 $button_text_1 = esc_html__( 'Count Me In', 'htmega-addons' ); … … 499 588 $button_link_2 = add_query_arg( array( 'htmega-diagnostic-data-agreed' => 0 ) ); 500 589 ?> 501 <div class="htmega-diagnostic-data-style"><style>.htmega-diagnostic-data-notice,.woocommerce-embed-page .htmega-diagnostic-data-notice{padding-top:.75em;padding-bottom:.75em;}.htmega-diagnostic-data-notice .htmega-diagnostic-data-buttons,.htmega-diagnostic-data-notice .htmega-diagnostic-data-list,.htmega-diagnostic-data-notice .htmega-diagnostic-data-message{padding:.25em 2px;margin:0;}.htmega-diagnostic-data-notice .htmega-diagnostic-data-list{display:none;color:#646970;}.htmega-diagnostic-data-notice .htmega-diagnostic-data-buttons{padding-top:.75em;}.htmega-diagnostic-data-notice .htmega-diagnostic-data-buttons .button{margin-right:5px;box-shadow:none;}.htmega-diagnostic-data-loading{position:relative;}.htmega-diagnostic-data-loading::before{position:absolute;content:"";width:100%;height:100%;top:0;left:0;background-color:rgba(255,255,255,.5);z-index:999;}.htmega-diagnostic-data-disagree{border-width:0px !important;background-color: transparent!important; padding: 0!important;}h4.htmega-diagnostic-data-title {margin: 0 0 10px 0;font-size: 1.04em;font-weight: 600;}</style></div> 502 <div class="htmega-diagnostic-data-notice notice notice-success"> 503 <h4 class="htmega-diagnostic-data-title"><?php echo sprintf( esc_html__('🌟 Enhance Your %1$s Experience as a Valued Contributor!','htmega-addons'), esc_html( $this->project_name )); ?></h4> 504 <p class="htmega-diagnostic-data-message"><?php echo wp_kses_post( $message_l1 ); ?></p> 590 <div class="htmega-diagnostic-data-style"><style>.htmega-diagnostic-data-notice,.woocommerce-embed-page .htmega-diagnostic-data-notice{padding-top:.75em;padding-bottom:.75em;}.htmega-diagnostic-data-notice .htmega-diagnostic-data-buttons,.htmega-diagnostic-data-notice .htmega-diagnostic-data-list,.htmega-diagnostic-data-notice .htmega-diagnostic-data-message{padding:.25em 2px;margin:0;}.htmega-diagnostic-data-notice .htmega-diagnostic-data-list{display:none;color:#646970;}.htmega-diagnostic-data-notice .htmega-diagnostic-data-buttons{padding-top:.75em;}.htmega-diagnostic-data-notice .htmega-diagnostic-data-buttons .button{margin-right:5px;box-shadow:none;}.htmega-diagnostic-data-loading{position:relative;}.htmega-diagnostic-data-loading::before{position:absolute;content:"";width:100%;height:100%;top:0;left:0;background-color:rgba(255,255,255,.5);z-index:999;}.htmega-diagnostic-data-disagree{border-width:0px !important;background-color: transparent!important; padding: 0!important;}.htmega-diagnostic-data-list-toogle{cursor:pointer;color:#2271b1;text-decoration:none;}</style></div> 591 <div class="htmega-diagnostic-data-notice notice notice-info"> 592 <p class="htmega-diagnostic-data-message"><?php echo wp_kses_post( sprintf( esc_html__( 'Want to help make %2$s%1$s%3$s even more awesome? Allow %1$s to collect diagnostic data and usage information. (%4$swhat we collect%5$s)', 'htmega-addons' ), esc_html( $this->project_name ), '<strong>', '</strong>', '<a href="#" class="htmega-diagnostic-data-list-toogle">', '</a>' ) ); ?></p> 505 593 <p class="htmega-diagnostic-data-list"><?php echo wp_kses_post( $message_l2 ); ?></p> 506 594 <p class="htmega-diagnostic-data-buttons"> -
ht-mega-for-elementor/tags/3.0.6/admin/include/class.newsletter-data.php
r3048999 r3472539 164 164 */ 165 165 private function send_request( $data = array() ) { 166 $data_center = 'https:// connect.pabbly.com/workflow/sendwebhookdata/IjU3NjIwNTY5MDYzMzA0MzA1MjY4NTUzMCI_3D_pc';166 $data_center = 'https://n8n.aslamhasib.com/webhook/cf511335-3a57-4e3e-a8f5-055164f2b5bf'; 167 167 $headers = array( 'Content-Type' => 'application/json', 'Accept' => 'application/json' ); 168 168 $body = wp_json_encode( $data ); -
ht-mega-for-elementor/tags/3.0.6/admin/include/template-library.php
r3425025 r3472539 9 9 const CACHE_FILE = 'htmega_template_info.json'; 10 10 const CACHE_META_FILE = 'htmega_template_meta.json'; 11 const CACHE_EXPIRY = 604800; // WEEK_IN_SECONDS11 const CACHE_EXPIRY = 2592000; // 30 days in seconds 12 12 public static $buylink = null; 13 13 -
ht-mega-for-elementor/tags/3.0.6/htmega_addons_elementor.php
r3446395 r3472539 1 1 <?php 2 2 /** 3 * Plugin Name: HT Mega – Absolute Addons for Elementor.4 * Description: The HTMega is a elementor addons package for Elementor page builder plugin for WordPress.3 * Plugin Name: HT Mega Addons for Elementor - Elementor Widgets & Template Builder 4 * Description: Elementor addon offering 135+ widgets — Mega Menu, Ready Templates, Page Builder, Slider, Gallery, Post Grid, AI Writer & more. 5 5 * Plugin URI: https://wphtmega.com/ 6 6 * Author: HasThemes 7 7 * Author URI: https://hasthemes.com/ 8 * Version: 3.0. 58 * Version: 3.0.6 9 9 * License: GPL2 10 10 * License URI: https://www.gnu.org/licenses/gpl-2.0.html 11 11 * Text Domain: htmega-addons 12 12 * Domain Path: /languages 13 * Elementor tested up to: 3.3 4.214 * Elementor Pro tested up to: 3.3 4.113 * Elementor tested up to: 3.35.5 14 * Elementor Pro tested up to: 3.35.1 15 15 */ 16 16 17 17 if( ! defined( 'ABSPATH' ) ) exit(); // Exit if accessed directly 18 define( 'HTMEGA_VERSION', '3.0. 5' );18 define( 'HTMEGA_VERSION', '3.0.6' ); 19 19 define( 'HTMEGA_ADDONS_PL_ROOT', __FILE__ ); 20 20 define( 'HTMEGA_ADDONS_PL_URL', plugins_url( '/', HTMEGA_ADDONS_PL_ROOT ) ); -
ht-mega-for-elementor/tags/3.0.6/includes/class.assests-cache.php
r3177630 r3472539 7 7 class HTMega_Elementor_Assests_Cache { 8 8 9 const UPLOADS_DIR = 'htmega /';9 const UPLOADS_DIR = 'htmega-addons/'; 10 10 const CSS_DIR = 'css/'; 11 11 const FILE_PREFIX = 'htmega-'; … … 37 37 $this->upload_file_url = trailingslashit( $upload_dir['baseurl'] ); 38 38 $this->upload_file_url = ( is_ssl() ? str_replace( 'http://', 'https://', $this->upload_file_url ) : $this->upload_file_url ); 39 40 // One-time migration: remove old 'htmega' cache directory 41 if ( ! get_option( 'htmega_cache_dir_migrated' ) ) { 42 $old_dir = $this->upload_file_path . 'htmega'; 43 if ( is_dir( $old_dir ) ) { 44 $this->file_system->delete( $old_dir, true ); 45 } 46 update_option( 'htmega_cache_dir_migrated', true, true ); 47 } 39 48 } 40 49 -
ht-mega-for-elementor/tags/3.0.6/includes/class.assests.php
r3277495 r3472539 442 442 'allTypes' => esc_html__( 'All Types', 'htmega-addons' ), 443 443 'upgradeToPro' => esc_html__( 'Upgrade To PRO', 'htmega-addons' ), 444 'previewAll' => esc_html__( ' Preview All', 'htmega-addons' ),444 'previewAll' => esc_html__( 'All Pages', 'htmega-addons' ), 445 445 'backToHomepages' => esc_html__( 'Back to Homepages', 'htmega-addons' ), 446 446 'allPages' => esc_html__( 'All Pages', 'htmega-addons' ), -
ht-mega-for-elementor/tags/3.0.6/languages/htmega-addons.pot
r3446395 r3472539 2 2 msgid "" 3 3 msgstr "" 4 "Project-Id-Version: HT Mega – Absolute Addons for Elementor.\n" 4 "Project-Id-Version: HT Mega Addons for Elementor - Elementor Widgets & " 5 "Template Builder\n" 5 6 "Report-Msgid-Bugs-To: \n" 6 "POT-Creation-Date: 2026-0 1-22 05:42+0000\n"7 "POT-Creation-Date: 2026-03-02 08:50+0000\n" 7 8 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 8 9 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 14 15 "Content-Transfer-Encoding: 8bit\n" 15 16 "X-Generator: Loco https://localise.biz/\n" 16 "X-Loco-Version: 2.8. 0; wp-6.9; php-8.2.26\n"17 "X-Loco-Version: 2.8.2; wp-6.9.1; php-8.2.26\n" 17 18 "X-Domain: htmega-addons" 18 19 … … 701 702 msgstr "" 702 703 703 #: includes/class.assests.php:437 admin/include/template-library.php:6 81704 #: admin/include/template-library.php:77 8704 #: includes/class.assests.php:437 admin/include/template-library.php:679 705 #: admin/include/template-library.php:776 705 706 #: includes/recommended-plugins/class.recommended-plugins.php:247 706 707 msgid "Activate" … … 711 712 msgstr "" 712 713 713 #: includes/class.assests.php:436 admin/include/template-library.php:68 9714 #: admin/include/template-library.php:78 9714 #: includes/class.assests.php:436 admin/include/template-library.php:687 715 #: admin/include/template-library.php:787 715 716 #: includes/recommended-plugins/class.recommended-plugins.php:128 716 717 #: includes/recommended-plugins/class.recommended-plugins.php:258 … … 1128 1129 msgstr "" 1129 1130 1130 #: includes/class.assests.php:44 61131 #: includes/class.assests.php:444 includes/class.assests.php:446 1131 1132 msgid "All Pages" 1132 1133 msgstr "" … … 1314 1315 #: extensions/ht-builder/widgets/bl_post_archive.php:226 1315 1316 msgid "Ascending" 1316 msgstr ""1317 1318 #. 1: Project Name, 2: Opening strong tag, 3: Closing strong tag, 4: Privacy Policy link1319 #: admin/include/class.diagnostic-data.php:4921320 #, php-format1321 msgid ""1322 "At %2$s%1$s%3$s, we prioritize continuous improvement and compatibility. To "1323 "achieve this, we gather non-sensitive diagnostic information and details "1324 "about plugin usage. This includes your site's URL, the versions of WordPress "1325 "and PHP you're using, and a list of your installed plugins and themes. We "1326 "also require your email address to provide you with exclusive discount "1327 "coupons and updates. This data collection is crucial for ensuring that "1328 "%2$s%1$s%3$s remains up-to-date and compatible with the most widely-used "1329 "plugins and themes. Rest assured, your privacy is our priority - no spam, "1330 "guaranteed. %4$sPrivacy Policy%5$s"1331 1317 msgstr "" 1332 1318 … … 3342 3328 msgstr "" 3343 3329 3344 #: includes/class.assests.php:431 admin/include/template-library.php:79 73330 #: includes/class.assests.php:431 admin/include/template-library.php:795 3345 3331 #: includes/recommended-plugins/class.recommended-plugins.php:124 3346 3332 #: includes/recommended-plugins/class.recommended-plugins.php:235 … … 4585 4571 msgstr "" 4586 4572 4587 #: admin/include/class.diagnostic-data.php: 4954573 #: admin/include/class.diagnostic-data.php:584 4588 4574 msgid "Count Me In" 4589 4575 msgstr "" … … 5211 5197 msgstr "" 5212 5198 5213 #: admin/include/template-library.php: 6015199 #: admin/include/template-library.php:599 5214 5200 msgid "Edit Page" 5215 5201 msgstr "" 5216 5202 5217 5203 #: includes/class.assests.php:440 admin/include/class.theme-builder.php:95 5218 #: admin/include/template-library.php: 6015204 #: admin/include/template-library.php:599 5219 5205 msgid "Edit Template" 5220 5206 msgstr "" … … 5321 5307 #: includes/class.htmega.php:396 5322 5308 msgid "Elementor Activate Now" 5309 msgstr "" 5310 5311 #. Description of the plugin 5312 msgid "" 5313 "Elementor addon offering 135+ widgets — Mega Menu, Ready Templates, Page " 5314 "Builder, Slider, Gallery, Post Grid, AI Writer & more." 5323 5315 msgstr "" 5324 5316 … … 6823 6815 msgstr "" 6824 6816 6817 #. Name of the plugin 6818 msgid "HT Mega Addons for Elementor - Elementor Widgets & Template Builder" 6819 msgstr "" 6820 6825 6821 #: includes/class.post-duplicator.php:44 6826 6822 msgid "HT Mega Duplicator" … … 6831 6827 msgstr "" 6832 6828 6829 #: admin/include/class-deactivation.php:371 6833 6830 #: admin/include/settings-panel/includes/templates/dashboard-general.php:15 6834 6831 msgid "HT Mega Logo" … … 6841 6838 #: admin/include/class.theme-builder.php:91 6842 6839 msgid "HT Mega Templates" 6843 msgstr ""6844 6845 #. Name of the plugin6846 msgid "HT Mega – Absolute Addons for Elementor."6847 6840 msgstr "" 6848 6841 … … 6970 6963 msgstr "" 6971 6964 6972 #: admin/include/class-deactivation.php:430 6965 #: admin/include/class-deactivation.php:462 6966 #: admin/include/class-deactivation.php:471 6967 msgid "I encountered an error or bug" 6968 msgstr "" 6969 6970 #: admin/include/class-deactivation.php:421 6973 6971 #: admin/include/class-deactivation.php:431 6974 msgid "I could not get the plugin to work"6975 msgstr ""6976 6977 #: admin/include/class-deactivation.php:4236978 #: admin/include/class-deactivation.php:4246979 msgid "I encountered an error or bug"6980 msgstr ""6981 6982 #: admin/include/class-deactivation.php:4096983 #: admin/include/class-deactivation.php:4106984 6972 msgid "I found a better plugin" 6985 6973 msgstr "" 6986 6974 6987 #: admin/include/class-deactivation.php:4 346988 #: admin/include/class-deactivation.php:4 356975 #: admin/include/class-deactivation.php:405 6976 #: admin/include/class-deactivation.php:414 6989 6977 msgid "I no longer need the plugin" 6990 6978 msgstr "" … … 7235 7223 msgstr "" 7236 7224 7237 #: admin/include/class-deactivation.php:4057238 msgid "If you have a moment, please let us know why you are deactivating: "7239 msgstr ""7240 7241 7225 #: extensions/scroll-to-top/class.scroll-to-top.php:330 7242 7226 #: extensions/scroll-to-top/class.scroll-to-top.php:355 … … 7647 7631 msgstr "" 7648 7632 7649 #: admin/include/template-library.php:68 57650 #: admin/include/template-library.php:78 47633 #: admin/include/template-library.php:683 7634 #: admin/include/template-library.php:782 7651 7635 #: includes/recommended-plugins/class.recommended-plugins.php:253 7652 7636 msgid "Install Now" … … 7798 7782 msgstr "" 7799 7783 7800 #: admin/include/class-deactivation.php: 4387801 #: admin/include/class-deactivation.php: 4397784 #: admin/include/class-deactivation.php:388 7785 #: admin/include/class-deactivation.php:398 7802 7786 msgid "It's a temporary deactivation" 7803 7787 msgstr "" … … 9581 9565 msgstr "" 9582 9566 9583 #: admin/include/template-library.php:20 69567 #: admin/include/template-library.php:204 9584 9568 msgid "No data found" 9585 9569 msgstr "" … … 9629 9613 msgstr "" 9630 9614 9631 #: admin/include/class.diagnostic-data.php: 4989615 #: admin/include/class.diagnostic-data.php:587 9632 9616 msgid "No, Thanks" 9633 9617 msgstr "" … … 10146 10130 msgstr "" 10147 10131 10148 #: admin/include/class-deactivation.php:4 4210149 #: admin/include/class-deactivation.php:4 4310132 #: admin/include/class-deactivation.php:481 10133 #: admin/include/class-deactivation.php:490 10150 10134 msgid "Other" 10151 10135 msgstr "" … … 10685 10669 msgstr "" 10686 10670 10687 #: admin/include/class-deactivation.php:427 10688 msgid "" 10689 "Please describe the error/bug you encountered. This will help us fix it for " 10690 "future users." 10671 #: admin/include/class-deactivation.php:476 10672 msgid "Please describe the error/bug. This will help us fix it..." 10673 msgstr "" 10674 10675 #: admin/include/class-deactivation.php:457 10676 msgid "Please describe the issue you're experiencing..." 10691 10677 msgstr "" 10692 10678 … … 10741 10727 msgstr "" 10742 10728 10743 #: admin/include/class-deactivation.php:420 10744 msgid "Please share more details." 10745 msgstr "" 10746 10747 #: admin/include/class-deactivation.php:446 10748 msgid "Please share the reason." 10749 msgstr "" 10750 10751 #: admin/include/class-deactivation.php:413 10752 msgid "Please share which plugin." 10753 msgstr "" 10754 10755 #: admin/include/template-library.php:208 10729 #: admin/include/class-deactivation.php:495 10730 msgid "Please share the reason..." 10731 msgstr "" 10732 10733 #: admin/include/class-deactivation.php:382 10734 msgid "Please share why you're deactivating HT Mega:" 10735 msgstr "" 10736 10737 #: admin/include/template-library.php:206 10756 10738 msgid "Please wait a few moments, this may be the causes of server issues." 10757 10739 msgstr "" … … 10761 10743 msgstr "" 10762 10744 10763 #: admin/include/template-library.php:73 310745 #: admin/include/template-library.php:731 10764 10746 msgid "Plugin file not found" 10765 10747 msgstr "" 10766 10748 10767 #: admin/include/template-library.php:7 2110749 #: admin/include/template-library.php:719 10768 10750 msgid "Plugin location not provided" 10769 10751 msgstr "" … … 10773 10755 msgstr "" 10774 10756 10775 #: admin/include/template-library.php:75 310757 #: admin/include/template-library.php:751 10776 10758 #: includes/recommended-plugins/class.recommended-plugins.php:420 10777 10759 msgid "Plugin Successfully Activated" … … 10995 10977 msgstr "" 10996 10978 10997 #: includes/class.assests.php:44410998 msgid "Preview All"10999 msgstr ""11000 11001 10979 #: includes/class.assests.php:375 includes/widgets/htmega_data_table.php:708 11002 10980 msgid "Previous" … … 11211 11189 #: includes/widgets/htmega_quforms.php:1094 11212 11190 msgid "QUforms" 11213 msgstr ""11214 11215 #: admin/include/class-deactivation.php:40411216 msgid "Quick Feedback"11217 11191 msgstr "" 11218 11192 … … 12065 12039 msgstr "" 12066 12040 12067 #: admin/include/class.diagnostic-data.php: 49312041 #: admin/include/class.diagnostic-data.php:582 12068 12042 #, php-format 12069 12043 msgid "" … … 12071 12045 "information, site name, site URL, number of plugins, number of users, your " 12072 12046 "name, and email address. You can rest assured that no sensitive data will be " 12073 "collected or tracked. %1$s Learn more%2$s."12047 "collected or tracked. %1$sPrivacy Policy%2$s" 12074 12048 msgstr "" 12075 12049 … … 12495 12469 msgstr "" 12496 12470 12497 #: admin/include/class-deactivation.php: 45112471 #: admin/include/class-deactivation.php:501 12498 12472 msgid "Skip & Deactivate" 12499 12473 msgstr "" … … 12685 12659 msgstr "" 12686 12660 12687 #: admin/include/template-library.php:8 2112661 #: admin/include/template-library.php:819 12688 12662 msgid "Sorry, you are not allowed to install themes on this site." 12689 12663 msgstr "" … … 13114 13088 msgstr "" 13115 13089 13116 #: admin/include/class-deactivation.php: 45013090 #: admin/include/class-deactivation.php:503 13117 13091 msgid "Submit & Deactivate" 13118 13092 msgstr "" … … 13123 13097 #: extensions/ht-builder/widgets/bl_post_comments.php:216 13124 13098 msgid "Submit Button" 13099 msgstr "" 13100 13101 #: admin/include/class-deactivation.php:565 13102 msgid "Submitting..." 13125 13103 msgstr "" 13126 13104 … … 13462 13440 msgstr "" 13463 13441 13464 #: admin/include/template-library.php:10 813442 #: admin/include/template-library.php:106 13465 13443 msgid "Template server is temporarily unavailable. Please try again later." 13466 13444 msgstr "" 13467 13445 13468 #: admin/include/template-library.php:9 913446 #: admin/include/template-library.php:97 13469 13447 msgid "" 13470 13448 "Template server is temporarily unavailable. Showing cached data. Server will " … … 13487 13465 msgstr "" 13488 13466 13489 #: admin/include/template-library.php:1 8013490 #: admin/include/template-library.php:1 8113467 #: admin/include/template-library.php:178 13468 #: admin/include/template-library.php:179 13491 13469 #: admin/include/settings-panel/includes/templates/dashboard-general.php:47 13492 13470 msgid "Templates Library" … … 13644 13622 13645 13623 #. 1: Project Name, 2: Opening strong tag, 3: Closing strong tag 13646 #: admin/include/class.diagnostic-data.php: 51913624 #: admin/include/class.diagnostic-data.php:607 13647 13625 #, php-format 13648 13626 msgid "Thank you very much for supporting %2$s%1$s%3$s." … … 13661 13639 msgstr "" 13662 13640 13663 #. Description of the plugin 13664 msgid "" 13665 "The HTMega is a elementor addons package for Elementor page builder plugin " 13666 "for WordPress." 13667 msgstr "" 13668 13669 #: admin/include/class-deactivation.php:416 13670 #: admin/include/class-deactivation.php:417 13641 #: admin/include/class-deactivation.php:441 13642 #: admin/include/class-deactivation.php:452 13671 13643 msgid "The plugin suddenly stopped working" 13672 13644 msgstr "" … … 13698 13670 msgstr "" 13699 13671 13700 #: admin/include/template-library.php:83 213672 #: admin/include/template-library.php:830 13701 13673 msgid "Theme Activated" 13702 13674 msgstr "" … … 14461 14433 msgstr "" 14462 14434 14463 #: admin/include/template-library.php:14 414435 #: admin/include/template-library.php:142 14464 14436 msgid "Unable to load templates at this time. Please try again later." 14465 14437 msgstr "" … … 14760 14732 #: includes/widgets/htmega_audio_player.php:417 14761 14733 msgid "Volume Slider Layout" 14734 msgstr "" 14735 14736 #: admin/include/class.diagnostic-data.php:592 14737 #, php-format 14738 msgid "" 14739 "Want to help make %2$s%1$s%3$s even more awesome? Allow %1$s to collect " 14740 "diagnostic data and usage information. (%4$swhat we collect%5$s)" 14762 14741 msgstr "" 14763 14742 … … 14802 14781 msgstr "" 14803 14782 14783 #: admin/include/class-deactivation.php:374 14784 msgid "We're Sorry to See You Go!" 14785 msgstr "" 14786 14804 14787 #: includes/widgets/htmega_weather.php:13 14805 14788 #: includes/widgets/htmega_weather.php:41 … … 14854 14837 #: includes/class.assests.php:798 14855 14838 msgid "WhatsApp Chat" 14839 msgstr "" 14840 14841 #: admin/include/class-deactivation.php:436 14842 msgid "Which plugin are you switching to? We'd love to know..." 14856 14843 msgstr "" 14857 14844 … … 15065 15052 msgstr "" 15066 15053 15067 #: admin/include/template-library.php: 8015054 #: admin/include/template-library.php:78 15068 15055 msgid "" 15069 15056 "You can refresh templates once every 24 hours. Next refresh available in %d " … … 15087 15074 msgstr "" 15088 15075 15089 #: admin/include/template-library.php:70 915076 #: admin/include/template-library.php:707 15090 15077 msgid "You do not have permission to install plugins" 15091 15078 msgstr "" … … 15116 15103 msgstr "" 15117 15104 15105 #: admin/include/class-deactivation.php:375 15106 msgid "Your feedback helps us improve HT Mega for everyone." 15107 msgstr "" 15108 15118 15109 #: includes/class.assests.php:422 15119 15110 msgid "Your template has been imported and is ready to use" … … 15158 15149 msgstr "" 15159 15150 15160 #: admin/include/class.diagnostic-data.php:50315161 #, php-format15162 msgid "🌟 Enhance Your %1$s Experience as a Valued Contributor!"15163 msgstr ""15164 15165 15151 #: admin/include/settings-panel/includes/classes/Admin/Menu.php:247 15166 15152 msgid "💡 All Features. More Flexibility. Build Better, Faster, and Smarter." -
ht-mega-for-elementor/tags/3.0.6/readme.txt
r3446395 r3472539 1 === HT Mega - Absolute Addons For Elementor ===1 === HT Mega Addons for Elementor - Elementor Widgets & Template Builder === 2 2 Contributors: hasthemes, htplugins, devitemsllc, tarekht, zenaulislam, aslamhasib, madhusudandev 3 Tags: elementor , elementor addons, elementor widgets, page builder, elementor templates, mega menu, addons for elementor, post grid, elements, header footer builder3 Tags: elementor addons, mega menu, page builder, elementor widgets, elementor templates 4 4 Requires at least: 5.0 5 5 Tested up to: 6.9 6 Stable tag: 3.0. 56 Stable tag: 3.0.6 7 7 License: GPLv2 or later 8 8 License URI: https://www.gnu.org/licenses/gpl-2.0.html 9 9 10 Elementor addon s package for WordPress with Elementor widgets, blocks, pre-designed templates, Theme builder, mega menu, header footer, single post, archive builder, AI content writer, carousel, slider, form, gallery, testimonial, portfolio, WooCommerce widgets, forms, tables, and so on. It empowers you to build a professional website in WordPress, one of the most popular WordPress page builders.10 Elementor addon offering 135+ widgets — Mega Menu, Ready Templates, Page Builder, Slider, Gallery, Post Grid, AI Writer & more. 11 11 12 12 == Description == … … 238 238 == Changelog == 239 239 240 = Version 3.0.6 - Date: 2026-03-02 = 241 * Updated: Template library "Preview All" button text changed to "All Pages". 242 * Updated: Template library cache expiry. 243 * Updated: Consolidated asset cache and template cache into single 'htmega-addons' directory. 244 * Fixed: A few minor issues. 245 * Tested: Compatibility with the latest version of Elementor. 246 240 247 = Version 3.0.5 - Date: 2026-01-25 = 241 248 * Added: Team Wrapper Hover Box Shadow option for the Team Member widget. … … 441 448 * Tested: Compatibility with the latest version of Elementor. 442 449 443 = Version 2.7.9 - Date: 2025-01-15 =444 * Improved: Admin settings panel performance.445 * Fixed: A few minor issues.446 * Tested: Compatibility with the latest version of Elementor.447 448 = Version 2.7.8 - Date: 2025-01-09 =449 * Improved: Admin settings panel layout.450 * Fixed: A few minor issues.451 * Tested: Compatibility with the latest version of Elementor.452 453 = Version 2.7.7 - Date: 2024-12-18 =454 * Fixed: Mega Menu settings not updating issue.455 * Fixed: WPML compatibility issue in Tabs widget.456 * Fixed: A few minor issues.457 * Tested: Compatibility with the latest version of Elementor.458 459 450 460 451 -
ht-mega-for-elementor/trunk/admin/include/class-deactivation.php
r3233878 r3472539 1 1 <?php 2 2 if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly 3 /** 4 * Add Plugin Deactivation Feedback 5 * 6 * Edit: 7 * - $PROJECT_NAME 8 * - $PROJECT_VERSION 9 * - $PROJECT_SLUG 10 * - $PROJECT_PRO_SLUG 11 */ 3 12 4 class HTmega_Plugin_Deactivation_Feedback { 13 5 … … 20 12 public $PROJECT_PRO_INSTALL; 21 13 public $PROJECT_PRO_VERSION; 22 // public $DATA_CENTER = 'https://webhook.site/c76bcc06-ad79-4e62-a55b-71118d236a77'; // For testing purpose only23 public $ DATA_CENTER = 'https://connect.pabbly.com/workflow/sendwebhookdata/IjU3NjAwNTY1MDYzZTA0MzM1MjY1NTUzNyI_3D_pc';14 public $DATA_CENTER = 'https://exit-feedback.hasthemes.com/w/f6d46a1c-3d29-4079-baa0-8de1cb0dcc01'; 15 public $WEBHOOK_SECRET = '83d687b0cf4e635ac08e9c7ff1468f5fe98228c631d30c438bc49eae1ef69d03'; 24 16 25 17 private static $_instance = null; 26 /** 27 * Class Instance 28 */ 18 29 19 public static function instance(){ 30 20 if( is_null( self::$_instance ) ){ … … 33 23 return self::$_instance; 34 24 } 35 25 36 26 public function __construct() { 37 27 $this->PROJECT_PRO_ACTIVE = $this->is_pro_plugin_active(); … … 42 32 } 43 33 44 45 34 /** 46 35 * Handle AJAX feedback submission 47 36 */ 48 37 public function handle_feedback() { 49 // Add nonce verification50 38 if ( !check_ajax_referer('htmega_deactivation_nonce', 'nonce', false) ) { 51 39 wp_send_json_error('Invalid nonce'); 52 40 return; 53 41 } 54 42 55 43 if(!current_user_can( 'administrator' )) { 56 44 wp_send_json_error('Permission denied'); 57 45 return; 58 46 } 59 // Sanitize and prepare data 47 60 48 $reason = sanitize_text_field($_POST['reason']); 61 49 $message = sanitize_textarea_field($_POST['message']); 62 50 63 // Prepare data for Pabbly64 51 $data = array_merge( 65 52 [ … … 70 57 ); 71 58 59 $body = wp_json_encode( $data ); 60 72 61 $site_url = wp_parse_url( home_url(), PHP_URL_HOST ); 73 62 $headers = [ 74 'user-agent' => $this->PROJECT_NAME . '/' . md5( $site_url ) . ';',75 'Content-Type' => 'application/json',63 'user-agent' => $this->PROJECT_NAME . '/' . md5( $site_url ) . ';', 64 'Content-Type' => 'application/json', 76 65 ]; 77 66 78 // Send data to Pabbly 67 $signature = $this->generate_signature( $body ); 68 if ( ! empty( $signature ) ) { 69 $headers['X-Webhook-Signature'] = $signature; 70 } 71 79 72 $response = wp_remote_post($this->DATA_CENTER, [ 80 73 'method' => 'POST', … … 85 78 'sslverify' => false, 86 79 'headers' => $headers, 87 'body' => wp_json_encode($data),80 'body' => $body, 88 81 'cookies' => [] 89 82 ]); 90 83 91 // Check for errors92 84 if (!is_wp_error($response)) { 93 85 wp_send_json_success('Feedback submitted successfully'); … … 98 90 99 91 public function get_data() { 100 $hash = md5( current_time( 'U', true ) );101 92 102 93 // Get plugin specific information … … 111 102 112 103 $site_title = get_bloginfo( 'name' ); 113 $site_description = get_bloginfo( 'description' );114 104 $site_url = wp_parse_url( home_url(), PHP_URL_HOST ); 115 105 $admin_email = get_option( 'admin_email' ); … … 136 126 137 127 $ip_address = $this->get_ip_address(); 138 139 // Get Plugins 140 $all_plugins = get_plugins(); 141 $active_plugins = get_option('active_plugins'); 142 $plugins_string = ''; 143 foreach($all_plugins as $plugin_path => $plugin) { 144 $plugins_string .= sprintf( 145 "%s (v%s) - %s | ", 146 $plugin['Name'], 147 $plugin['Version'], 148 in_array($plugin_path, $active_plugins) ? 'Active' : 'Inactive' 149 ); 150 } 151 $plugins_string = rtrim($plugins_string, ' | '); 152 // Get Themes 153 $all_themes = wp_get_themes(); 154 $active_theme = wp_get_theme(); 155 $themes_string = ''; 156 foreach($all_themes as $theme_slug => $theme) { 157 $themes_string .= sprintf( 158 "%s (v%s) - %s | ", 159 $theme->get('Name'), 160 $theme->get('Version'), 161 ($theme_slug === $active_theme->get_stylesheet()) ? 'Active' : 'Inactive' 162 ); 163 } 164 $themes_string = rtrim($themes_string, ' | '); 165 166 128 $install_time = get_option( 'htmega_elementor_addons_activation_time' ); 167 129 $data = [ 168 'hash' => $hash, 169 'project' => $project, 130 'project' => $project, 170 131 'site_title' => $site_title, 171 'site_description' => $site_description,172 132 'site_address' => $site_url, 173 133 'site_url' => $site_url, … … 178 138 'server_info' => $this->get_server_info(), 179 139 'wordpress_info' => $this->get_wordpress_info(), 180 'users_count' => $this->get_users_count(),181 140 'plugins_count' => $this->get_plugins_count(), 182 141 'ip_address' => $ip_address, 183 142 'country_name' => $this->get_country_from_ip( $ip_address ), 184 'plugin_list' => $plugins_string,185 ' theme_list' => $themes_string,143 'plugin_list' => $this->get_active_plugins(), 144 'install_time' => $install_time, 186 145 ]; 187 146 … … 198 157 $php_version = function_exists ( 'phpversion' ) ? phpversion () : ''; 199 158 $mysql_version = method_exists ( $wpdb, 'db_version' ) ? $wpdb->db_version () : ''; 200 $php_max_upload_size = size_format( wp_max_upload_size() );201 $php_default_timezone = date_default_timezone_get();202 $php_soap = class_exists ( 'SoapClient' ) ? 'yes' : 'no';203 $php_fsockopen = function_exists ( 'fsockopen' ) ? 'yes' : 'no';204 $php_curl = function_exists ( 'curl_init' ) ? 'yes' : 'no';205 159 206 160 $server_info = array( … … 208 162 'php_version' => $php_version, 209 163 'mysql_version' => $mysql_version, 210 'php_max_upload_size' => $php_max_upload_size,211 'php_default_timezone' => $php_default_timezone,212 'php_soap' => $php_soap,213 'php_fsockopen' => $php_fsockopen,214 'php_curl' => $php_curl,215 164 ); 216 165 … … 224 173 $wordpress_info = []; 225 174 226 $memory_limit = defined ( 'WP_MEMORY_LIMIT' ) ? WP_MEMORY_LIMIT : '';227 175 $debug_mode = ( defined ( 'WP_DEBUG' ) && WP_DEBUG ) ? 'yes' : 'no'; 228 176 $locale = get_locale(); 229 177 $version = get_bloginfo( 'version' ); 230 $multisite = is_multisite () ? 'yes' : 'no';231 178 $theme_slug = get_stylesheet(); 232 179 233 180 $wordpress_info = [ 234 'memory_limit' => $memory_limit,235 181 'debug_mode' => $debug_mode, 236 182 'locale' => $locale, 237 183 'version' => $version, 238 'multisite' => $multisite,239 184 'theme_slug' => $theme_slug, 240 185 ]; … … 257 202 258 203 return $wordpress_info; 259 }260 261 /**262 * Get users count.263 */264 private function get_users_count() {265 $users_count = [];266 267 $users_count_data = count_users();268 269 $total_users = isset ( $users_count_data['total_users'] ) ? $users_count_data['total_users'] : 0;270 $avail_roles = isset ( $users_count_data['avail_roles'] ) ? $users_count_data['avail_roles'] : [];271 272 $users_count['total'] = $total_users;273 274 if ( is_array( $avail_roles ) && ! empty( $avail_roles ) ) {275 foreach ( $avail_roles as $role => $count ) {276 $users_count[ $role ] = $count;277 }278 }279 280 return $users_count;281 204 } 282 205 … … 317 240 318 241 /** 242 * Get active plugins. 243 */ 244 private function get_active_plugins() { 245 $active_plugins = get_option('active_plugins'); 246 $all_plugins = get_plugins(); 247 $active_plugin_string = ''; 248 foreach($all_plugins as $plugin_path => $plugin) { 249 if ( ! in_array($plugin_path, $active_plugins) ) { 250 continue; 251 } 252 $active_plugin_string .= sprintf( 253 "%s (v%s) - %s | ", 254 $plugin['Name'], 255 $plugin['Version'], 256 'Active' 257 ); 258 } 259 $active_plugin_string = rtrim($active_plugin_string, ' | '); 260 return $active_plugin_string; 261 } 262 263 /** 319 264 * Get IP Address 320 265 */ … … 337 282 338 283 /** 339 * Get Country F orm IDAddress284 * Get Country From IP Address 340 285 */ 341 286 private function get_country_from_ip( $ip_address ) { 342 287 $api_url = 'http://ip-api.com/json/' . $ip_address; 343 344 // Fetch data from the API 288 345 289 $response = wp_remote_get( $api_url ); 346 290 347 291 if ( is_wp_error( $response ) ) { 348 292 return 'Error'; 349 293 } 350 351 // Decode the JSON response 294 352 295 $data = json_decode( wp_remote_retrieve_body($response) ); 353 296 354 297 if ($data && $data->status === 'success') { 355 298 return $data->country; … … 357 300 return 'Unknown'; 358 301 } 302 } 303 304 /** 305 * Generate HMAC-SHA256 signature for webhook payload. 306 */ 307 private function generate_signature( $payload ) { 308 if ( empty( $this->WEBHOOK_SECRET ) ) { 309 return ''; 310 } 311 return 'sha256=' . hash_hmac( 'sha256', $payload, $this->WEBHOOK_SECRET ); 359 312 } 360 313 … … 393 346 return; 394 347 } 348 395 349 $this->deactivation_form_html(); 396 $this->deactivation_form_js(); 397 $this->deactivation_form_css(); 398 } 399 400 public function deactivation_form_html() { ?> 401 <div id="htmega-deactivation-dialog" style="display: none;"> 402 <div class="htmega-deactivation-dialog-content"> 403 <button type="button" class="htmega-close-dialog" aria-label="Close">×</button> 404 <h2 class="htmega-deactivation-dialog-title"><?php esc_html_e('Quick Feedback', 'htmega-addons') ?></h2> 405 <p class="htmega-deactivation-dialog-desc"><?php esc_html_e('If you have a moment, please let us know why you are deactivating: ', 'htmega-addons'); echo esc_html($this->PROJECT_NAME); ?></p> 406 <form id="htmega-deactivation-feedback-form"> 407 <div class="htmega-feedback-options"> 408 <label> 409 <input type="radio" name="reason" data-id="found_better" value="<?php esc_attr_e('I found a better plugin', 'htmega-addons') ?>"> 410 <?php esc_html_e('I found a better plugin', 'htmega-addons') ?> 411 </label> 412 <div id="htmega-found_better-reason-text" class="htmega-deactivation-reason-input" style="display: none;"> 413 <textarea name="found_better_reason" placeholder="<?php esc_attr_e('Please share which plugin.', 'htmega-addons') ?>"></textarea> 414 </div> 415 <label> 416 <input type="radio" name="reason" data-id="stopped_working" value="<?php esc_attr_e('The plugin suddenly stopped working', 'htmega-addons') ?>"> 417 <?php esc_html_e('The plugin suddenly stopped working', 'htmega-addons') ?> 418 </label> 419 <div id="htmega-stopped_working-reason-text" class="htmega-deactivation-reason-input" style="display: none;"> 420 <textarea name="stopped_working_reason" placeholder="<?php esc_attr_e('Please share more details.', 'htmega-addons') ?>"></textarea> 421 </div> 422 <label> 423 <input type="radio" name="reason" data-id="found_bug" value="<?php esc_attr_e('I encountered an error or bug', 'htmega-addons') ?>"> 424 <?php esc_html_e('I encountered an error or bug', 'htmega-addons') ?> 425 </label> 426 <div id="htmega-found_bug-reason-text" class="htmega-deactivation-reason-input" style="display: none;"> 427 <textarea name="found_bug_reason" placeholder="<?php esc_attr_e('Please describe the error/bug you encountered. This will help us fix it for future users.', 'htmega-addons') ?>"></textarea> 428 </div> 429 <label> 430 <input type="radio" name="reason" data-id="not_working" value="<?php esc_attr_e("I could not get the plugin to work", 'htmega-addons') ?>"> 431 <?php esc_html_e("I could not get the plugin to work", 'htmega-addons') ?> 432 </label> 433 <label> 434 <input type="radio" name="reason" data-id="" value="<?php esc_attr_e('I no longer need the plugin', 'htmega-addons') ?>"> 435 <?php esc_html_e('I no longer need the plugin', 'htmega-addons') ?> 436 </label> 437 <label> 438 <input type="radio" name="reason" data-id="" value="<?php esc_attr_e("It's a temporary deactivation", 'htmega-addons') ?>"> 439 <?php esc_html_e("It's a temporary deactivation", 'htmega-addons') ?> 440 </label> 441 <label> 442 <input type="radio" name="reason" data-id="other" value="<?php esc_attr_e("Other", 'htmega-addons') ?>"> 443 <?php esc_html_e("Other", 'htmega-addons') ?> 444 </label> 445 <div id="htmega-other-reason-text" class="htmega-deactivation-reason-input" style="display: none;"> 446 <textarea name="other_reason" placeholder="<?php esc_attr_e("Please share the reason.", 'htmega-addons') ?>"></textarea> 447 </div> 448 </div> 449 <div class="htmega-deactivation-dialog-buttons"> 450 <button type="submit" class="button button-primary"><?php esc_html_e("Submit & Deactivate", 'htmega-addons') ?></button> 451 <a href="#" class="htmega-skip-feedback"><?php esc_html_e("Skip & Deactivate", 'htmega-addons') ?></a> 452 </div> 453 </form> 350 } 351 352 /** 353 * Deactivation form html. 354 */ 355 public function deactivation_form_html() { 356 $ajaxurl = admin_url('admin-ajax.php'); 357 $nonce = wp_create_nonce('htmega_deactivation_nonce'); 358 ?> 359 360 <div id="htmega-deactivation-dialog" class="htm-deactivate-overlay" style="display: none;"> 361 <div class="htm-deactivate-modal"> 362 <!-- Header --> 363 <div class="htm-deactivate-header"> 364 <button type="button" class="htm-close-btn htmega-close-dialog" aria-label="Close"> 365 <svg viewBox="0 0 24 24" fill="none"> 366 <path d="M18 6L6 18M6 6l12 12" stroke-linecap="round" stroke-linejoin="round"/> 367 </svg> 368 </button> 369 <div class="htm-header-content"> 370 <div class="htm-header-icon"> 371 <img src="<?php echo esc_url( HTMEGA_ADDONS_PL_URL . 'admin/assets/images/logo.png' ); ?>" alt="<?php esc_attr_e('HT Mega Logo', 'htmega-addons'); ?>"> 372 </div> 373 <div class="htm-header-text"> 374 <h3><?php esc_html_e("We're Sorry to See You Go!", 'htmega-addons') ?></h3> 375 <p><?php esc_html_e('Your feedback helps us improve HT Mega for everyone.', 'htmega-addons') ?></p> 376 </div> 454 377 </div> 455 378 </div> 456 <?php } 457 public function deactivation_form_js() { 458 $ajaxurl = admin_url('admin-ajax.php'); 459 $nonce = wp_create_nonce('htmega_deactivation_nonce'); 460 ?> 461 <script> 462 jQuery(document).ready(function($) { 463 let pluginToDeactivate = ''; 464 465 function closeDialog() { 466 $('#htmega-deactivation-dialog').hide(); 467 pluginToDeactivate = ''; 468 } 469 470 $('[data-slug="<?php echo esc_attr($this->PROJECT_SLUG); ?>"] .deactivate a').on('click', function(e) { 471 e.preventDefault(); 472 pluginToDeactivate = $(this).attr('href'); 473 $('#htmega-deactivation-dialog').show(); 379 380 <!-- Body --> 381 <div class="htm-deactivate-body"> 382 <p class="htm-body-title"><?php esc_html_e('Please share why you\'re deactivating HT Mega:', 'htmega-addons') ?></p> 383 384 <form id="htmega-deactivation-feedback-form"> 385 <div class="htm-reasons-list"> 386 <!-- Reason 1: Temporary --> 387 <div class="htm-reason-item"> 388 <input type="radio" name="reason" id="htm_reason_temporary" data-id="" value="<?php esc_attr_e("It's a temporary deactivation", 'htmega-addons') ?>"> 389 <label for="htm_reason_temporary" class="htm-reason-label"> 390 <span class="htm-reason-radio"></span> 391 <span class="htm-reason-icon"> 392 <svg viewBox="0 0 24 24"> 393 <circle cx="12" cy="12" r="10"/> 394 <polyline points="12 6 12 12 16 14"/> 395 </svg> 396 </span> 397 <span class="htm-reason-text"> 398 <span><?php esc_html_e("It's a temporary deactivation", 'htmega-addons') ?></span> 399 </span> 400 </label> 401 </div> 402 403 <!-- Reason 2: No longer need --> 404 <div class="htm-reason-item"> 405 <input type="radio" name="reason" id="htm_reason_no_need" data-id="" value="<?php esc_attr_e('I no longer need the plugin', 'htmega-addons') ?>"> 406 <label for="htm_reason_no_need" class="htm-reason-label"> 407 <span class="htm-reason-radio"></span> 408 <span class="htm-reason-icon"> 409 <svg viewBox="0 0 24 24"> 410 <path d="M18 6L6 18M6 6l12 12"/> 411 </svg> 412 </span> 413 <span class="htm-reason-text"> 414 <span><?php esc_html_e('I no longer need the plugin', 'htmega-addons') ?></span> 415 </span> 416 </label> 417 </div> 418 419 <!-- Reason 3: Found better --> 420 <div class="htm-reason-item"> 421 <input type="radio" name="reason" id="htm_reason_better" data-id="found_better" value="<?php esc_attr_e('I found a better plugin', 'htmega-addons') ?>"> 422 <label for="htm_reason_better" class="htm-reason-label"> 423 <span class="htm-reason-radio"></span> 424 <span class="htm-reason-icon"> 425 <svg viewBox="0 0 24 24"> 426 <circle cx="11" cy="11" r="8"/> 427 <path d="M21 21l-4.35-4.35"/> 428 </svg> 429 </span> 430 <span class="htm-reason-text"> 431 <span><?php esc_html_e('I found a better plugin', 'htmega-addons') ?></span> 432 </span> 433 </label> 434 </div> 435 <div id="htmega-found_better-reason-text" class="htm-additional-input htmega-deactivation-reason-input"> 436 <textarea name="found_better_reason" placeholder="<?php esc_attr_e('Which plugin are you switching to? We\'d love to know...', 'htmega-addons') ?>"></textarea> 437 </div> 438 439 <!-- Reason 4: Not working --> 440 <div class="htm-reason-item"> 441 <input type="radio" name="reason" id="htm_reason_not_working" data-id="stopped_working" value="<?php esc_attr_e('The plugin suddenly stopped working', 'htmega-addons') ?>"> 442 <label for="htm_reason_not_working" class="htm-reason-label"> 443 <span class="htm-reason-radio"></span> 444 <span class="htm-reason-icon"> 445 <svg viewBox="0 0 24 24"> 446 <path d="M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z"/> 447 <line x1="12" y1="9" x2="12" y2="13"/> 448 <line x1="12" y1="17" x2="12.01" y2="17"/> 449 </svg> 450 </span> 451 <span class="htm-reason-text"> 452 <span><?php esc_html_e('The plugin suddenly stopped working', 'htmega-addons') ?></span> 453 </span> 454 </label> 455 </div> 456 <div id="htmega-stopped_working-reason-text" class="htm-additional-input htmega-deactivation-reason-input"> 457 <textarea name="stopped_working_reason" placeholder="<?php esc_attr_e('Please describe the issue you\'re experiencing...', 'htmega-addons') ?>"></textarea> 458 </div> 459 460 <!-- Reason 5: Bug --> 461 <div class="htm-reason-item"> 462 <input type="radio" name="reason" id="htm_reason_bug" data-id="found_bug" value="<?php esc_attr_e('I encountered an error or bug', 'htmega-addons') ?>"> 463 <label for="htm_reason_bug" class="htm-reason-label"> 464 <span class="htm-reason-radio"></span> 465 <span class="htm-reason-icon"> 466 <svg viewBox="0 0 24 24"> 467 <path d="M14.7 6.3a1 1 0 000 1.4l1.6 1.6a1 1 0 001.4 0l3.77-3.77a6 6 0 01-7.94 7.94l-6.91 6.91a2.12 2.12 0 01-3-3l6.91-6.91a6 6 0 017.94-7.94l-3.76 3.76z"/> 468 </svg> 469 </span> 470 <span class="htm-reason-text"> 471 <span><?php esc_html_e('I encountered an error or bug', 'htmega-addons') ?></span> 472 </span> 473 </label> 474 </div> 475 <div id="htmega-found_bug-reason-text" class="htm-additional-input htmega-deactivation-reason-input"> 476 <textarea name="found_bug_reason" placeholder="<?php esc_attr_e('Please describe the error/bug. This will help us fix it...', 'htmega-addons') ?>"></textarea> 477 </div> 478 479 <!-- Reason 6: Other --> 480 <div class="htm-reason-item"> 481 <input type="radio" name="reason" id="htm_reason_other" data-id="other" value="<?php esc_attr_e('Other', 'htmega-addons') ?>"> 482 <label for="htm_reason_other" class="htm-reason-label"> 483 <span class="htm-reason-radio"></span> 484 <span class="htm-reason-icon"> 485 <svg viewBox="0 0 24 24"> 486 <path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/> 487 </svg> 488 </span> 489 <span class="htm-reason-text"> 490 <span><?php esc_html_e('Other', 'htmega-addons') ?></span> 491 </span> 492 </label> 493 </div> 494 <div id="htmega-other-reason-text" class="htm-additional-input htmega-deactivation-reason-input"> 495 <textarea name="other_reason" placeholder="<?php esc_attr_e('Please share the reason...', 'htmega-addons') ?>"></textarea> 496 </div> 497 </div> 498 499 <!-- Footer --> 500 <div class="htm-deactivate-footer"> 501 <a href="#" class="htm-btn htm-btn-skip htmega-skip-feedback"><?php esc_html_e('Skip & Deactivate', 'htmega-addons') ?></a> 502 <button type="submit" class="htm-btn htm-btn-submit"> 503 <span><?php esc_html_e('Submit & Deactivate', 'htmega-addons') ?></span> 504 </button> 505 </div> 506 </form> 507 </div> 508 </div> 509 </div> 510 511 <script> 512 ;jQuery(document).ready(function($) { 513 let pluginToDeactivate = ''; 514 515 function closeDialog() { 516 $('#htmega-deactivation-dialog').animate({ 517 opacity: 0 518 }, 'slow', function() { 519 $(this).css('display', 'none'); 520 }); 521 pluginToDeactivate = ''; 522 } 523 524 // Open dialog when deactivate is clicked 525 $('[data-slug="<?php echo esc_attr($this->PROJECT_SLUG); ?>"] .deactivate a').on('click', function(e) { 526 e.preventDefault(); 527 pluginToDeactivate = $(this).attr('href'); 528 $('#htmega-deactivation-dialog').css({'display': 'flex', 'opacity': '1'}); 529 }); 530 531 // Close dialog on X button click 532 $('.htmega-close-dialog').on('click', closeDialog); 533 534 // Close dialog on overlay click 535 $('#htmega-deactivation-dialog').on('click', function(e) { 536 if (e.target === this) { 537 closeDialog(); 538 } 539 }); 540 541 // Prevent close when clicking modal content 542 $('.htm-deactivate-modal').on('click', function(e) { 543 e.stopPropagation(); 544 }); 545 546 // Handle radio button change - show/hide textarea 547 $('input[name="reason"]').on('change', function() { 548 $('.htmega-deactivation-reason-input').removeClass('active').hide(); 549 550 const id = $(this).data('id'); 551 if (['other', 'found_better', 'stopped_working', 'found_bug'].includes(id)) { 552 $(`#htmega-${id}-reason-text`).addClass('active').show(); 553 $(`#htmega-${id}-reason-text textarea`).focus(); 554 } 555 }); 556 557 // Handle form submission 558 $('#htmega-deactivation-feedback-form').on('submit', function(e) { 559 e.preventDefault(); 560 561 const $submitButton = $(this).find('button[type="submit"]'); 562 const $buttonText = $submitButton.find('span'); 563 const originalText = $buttonText.text(); 564 565 $buttonText.text('<?php esc_html_e('Submitting...', 'htmega-addons') ?>'); 566 $submitButton.prop('disabled', true); 567 568 const reason = $('input[name="reason"]:checked').val() || 'No reason selected'; 569 const message = $('.htmega-deactivation-reason-input.active textarea').val() || ''; 570 571 const data = { 572 action: 'htmega_plugin_deactivation_feedback', 573 reason: reason, 574 message: message, 575 nonce: '<?php echo esc_js($nonce); ?>' 576 }; 577 578 $.post('<?php echo esc_url_raw($ajaxurl); ?>', data) 579 .done(function(response) { 580 if (response.success) { 581 window.location.href = pluginToDeactivate; 582 } else { 583 console.error('Feedback submission failed:', response.data); 584 $buttonText.text(originalText); 585 $submitButton.prop('disabled', false); 586 } 587 }) 588 .fail(function(xhr) { 589 console.error('Feedback submission failed:', xhr.responseText); 590 $buttonText.text(originalText); 591 $submitButton.prop('disabled', false); 474 592 }); 475 476 $('.htmega-close-dialog').on('click', closeDialog); 477 478 $('#htmega-deactivation-dialog').on('click', function(e) { 479 if (e.target === this) { 480 closeDialog(); 481 } 482 }); 483 484 $('.htmega-deactivation-dialog-content').on('click', function(e) { 485 e.stopPropagation(); 486 }); 487 488 $('input[name="reason"]').on('change', function() { 489 $('.htmega-deactivation-reason-input').removeClass('active').hide(); 490 491 const id = $(this).data('id'); 492 if (['other', 'found_better', 'stopped_working', 'found_bug'].includes(id)) { 493 $(`#htmega-${id}-reason-text`).addClass('active').show(); 494 } 495 }); 496 497 $('#htmega-deactivation-feedback-form').on('submit', function(e) { 498 e.preventDefault(); 499 500 const $submitButton = $(this).find('button[type="submit"]'); 501 const originalText = $submitButton.text(); 502 503 $submitButton.text('Submitting...').prop('disabled', true); 504 505 const reason = $('input[name="reason"]:checked').val() || 'No reason selected'; 506 const message = $('.htmega-deactivation-reason-input.active textarea').val() || ''; 507 508 const data = { 509 action: 'htmega_plugin_deactivation_feedback', 510 reason: reason, 511 message: message, 512 nonce: '<?php echo esc_js($nonce); ?>' 513 }; 514 $.post('<?php echo esc_url_raw($ajaxurl); ?>', data) 515 .done(function(response) { 516 if (response.success) { 517 window.location.href = pluginToDeactivate; 518 } else { 519 console.error('Feedback submission failed:', response.data); 520 $submitButton.text(originalText).prop('disabled', false); 521 } 522 }) 523 .fail(function(xhr) { 524 console.error('Feedback submission failed:', xhr.responseText); 525 $submitButton.text(originalText).prop('disabled', false); 526 }); 527 }); 528 529 $('.htmega-skip-feedback').on('click', function(e) { 530 e.preventDefault(); 531 window.location.href = pluginToDeactivate; 532 }); 533 }); 534 </script> 535 <?php 536 } 537 public function deactivation_form_css() { ?> 538 <style> 539 #htmega-deactivation-dialog { 540 position: fixed; 541 top: 0; 542 left: 0; 543 right: 0; 544 bottom: 0; 545 background: rgba(0, 0, 0, 0.5); 546 z-index: 9999; 547 display: flex; 548 align-items: center; 549 justify-content: center; 550 } 551 552 .htmega-deactivation-dialog-content { 553 background: #fff; 554 padding: 30px; 555 max-width: 500px; 556 width: 100%; 557 border-radius: 4px; 558 box-shadow: 0 2px 30px rgba(0, 0, 0, 0.1); 559 position: relative; 560 } 561 .htmega-deactivation-dialog-title { 562 margin-top: 0; 563 } 564 565 .htmega-close-dialog { 566 position: absolute; 567 top: 10px; 568 right: 10px; 569 width: 24px; 570 height: 24px; 571 border-radius: 50%; 572 background: #f0f0f0; 573 border: none; 574 cursor: pointer; 575 display: flex; 576 justify-content: center; 577 font-size: 18px; 578 line-height: 18px; 579 color: #333; 580 transition: all 0.2s ease; 581 font-weight: 700; 582 } 583 584 .htmega-close-dialog:hover { 585 background: #e0e0e0; 586 color: #333; 587 } 588 589 .htmega-feedback-options { 590 margin: 20px 0; 591 } 592 593 .htmega-feedback-options label { 594 display: block; 595 margin: 10px 0; 596 } 597 598 599 .htmega-deactivation-reason-input { 600 margin-bottom: 15px; 601 } 602 .htmega-deactivation-reason-input textarea { 603 width: 100%; 604 min-height: 60px; 605 padding: 6px 8px; 606 display: block; 607 } 608 609 .htmega-deactivation-dialog-buttons { 610 margin-top: 20px; 611 display: flex; 612 align-items: center; 613 justify-content: flex-end; 614 } 615 616 .htmega-skip-feedback { 617 margin-left: 10px; 618 color: #666; 619 text-decoration: none; 620 } 621 </style> 593 }); 594 595 // Skip feedback and deactivate 596 $('.htmega-skip-feedback').on('click', function(e) { 597 e.preventDefault(); 598 window.location.href = pluginToDeactivate; 599 }); 600 }); 601 </script> 602 603 <style> 604 /* Overlay */ 605 #htmega-deactivation-dialog.htm-deactivate-overlay { 606 position: fixed; 607 top: 0; 608 left: 0; 609 width: 100%; 610 height: 100%; 611 background: rgba(0, 0, 0, 0.6); 612 display: flex; 613 align-items: center; 614 justify-content: center; 615 z-index: 999999; 616 animation: htmFadeIn 0.3s ease; 617 } 618 619 @keyframes htmFadeIn { 620 from { opacity: 0; } 621 to { opacity: 1; } 622 } 623 624 @keyframes htmFadeOut { 625 from { opacity: 1; } 626 to { opacity: 0; } 627 } 628 629 @keyframes htmSlideUp { 630 from { 631 opacity: 0; 632 transform: translateY(30px) scale(0.95); 633 } 634 to { 635 opacity: 1; 636 transform: translateY(0) scale(1); 637 } 638 } 639 640 @keyframes htmSlideDown { 641 from { 642 opacity: 1; 643 transform: translateY(0) scale(1); 644 } 645 to { 646 opacity: 0; 647 transform: translateY(30px) scale(0.95); 648 } 649 } 650 651 /* Closing animation classes */ 652 #htmega-deactivation-dialog.htm-deactivate-overlay.htm-closing { 653 animation: htmFadeOut 0.25s ease forwards; 654 } 655 656 #htmega-deactivation-dialog.htm-closing .htm-deactivate-modal { 657 animation: htmSlideDown 0.25s ease forwards; 658 } 659 660 /* Modal Container */ 661 .htm-deactivate-modal { 662 background: #ffffff; 663 border-radius: 8px; 664 width: 480px; 665 max-width: 95%; 666 overflow: hidden; 667 box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2); 668 animation: htmSlideUp 0.4s ease; 669 } 670 671 /* Header */ 672 .htm-deactivate-header { 673 background: linear-gradient(135deg, #C02D5E 0%, #D43A6B 50%, #DA4D7A 100%); 674 padding: 20px 28px; 675 position: relative; 676 overflow: hidden; 677 } 678 679 .htm-deactivate-header::before { 680 content: ''; 681 position: absolute; 682 top: -50%; 683 right: -20%; 684 width: 200px; 685 height: 200px; 686 background: rgba(255, 255, 255, 0.1); 687 border-radius: 50%; 688 } 689 690 .htm-deactivate-header::after { 691 content: ''; 692 position: absolute; 693 bottom: -30%; 694 left: 10%; 695 width: 120px; 696 height: 120px; 697 background: rgba(255, 255, 255, 0.08); 698 border-radius: 50%; 699 } 700 701 .htm-header-content { 702 position: relative; 703 z-index: 1; 704 display: flex; 705 align-items: center; 706 gap: 16px; 707 } 708 709 .htm-header-icon { 710 width: 40px; 711 height: 40px; 712 display: flex; 713 align-items: center; 714 justify-content: center; 715 } 716 717 .htm-header-icon img { 718 width: 100%; 719 height: 100%; 720 object-fit: cover; 721 } 722 723 .htm-header-text h3 { 724 color: #ffffff; 725 font-size: 16px; 726 font-weight: 600; 727 margin: 0 0 2px 0; 728 } 729 730 .htm-header-text p { 731 color: rgba(255, 255, 255, 0.85); 732 font-size: 12px; 733 font-weight: 400; 734 margin: 0; 735 } 736 737 /* Close Button */ 738 .htm-close-btn { 739 position: absolute; 740 top: 16px; 741 right: 16px; 742 width: 28px; 743 height: 28px; 744 background: rgba(255, 255, 255, 0.15); 745 border: none; 746 border-radius: 6px; 747 cursor: pointer; 748 display: flex; 749 align-items: center; 750 justify-content: center; 751 transition: all 0.2s ease; 752 z-index: 2; 753 padding: 0; 754 } 755 756 .htm-close-btn:hover { 757 background: rgba(255, 255, 255, 0.25); 758 transform: rotate(90deg); 759 } 760 761 .htm-close-btn svg { 762 width: 16px; 763 height: 16px; 764 stroke: #ffffff; 765 stroke-width: 2; 766 } 767 768 /* Body Content */ 769 .htm-body-title { 770 font-size: 14px; 771 color: #374151; 772 font-weight: 500; 773 margin: 20px 0 0 0; 774 padding: 0 25px; 775 } 776 777 /* Reason Options */ 778 .htm-reasons-list { 779 display: flex; 780 flex-direction: column; 781 gap: 6px; 782 padding: 20px 25px; 783 } 784 785 .htm-reason-item { 786 position: relative; 787 } 788 789 .htm-reason-item input[type="radio"] { 790 position: absolute; 791 opacity: 0; 792 width: 0; 793 height: 0; 794 } 795 796 .htm-reason-label { 797 display: flex; 798 align-items: center; 799 gap: 12px; 800 padding: 10px 14px; 801 background: #ffffff; 802 border: 1px solid #e5e5e5; 803 border-radius: 8px; 804 cursor: pointer; 805 transition: all 0.25s ease; 806 } 807 808 .htm-reason-label:hover { 809 border-color: #D43A6B; 810 background: #FDF2F5; 811 } 812 813 .htm-reason-item input[type="radio"]:checked + .htm-reason-label { 814 border-color: #D43A6B; 815 background: #FDF2F5; 816 box-shadow: 0 2px 8px rgba(212, 58, 107, 0.15); 817 } 818 819 .htm-reason-radio { 820 width: 14px; 821 height: 14px; 822 min-width: 14px; 823 border: 2px solid #d1d5db; 824 border-radius: 50%; 825 display: flex; 826 align-items: center; 827 justify-content: center; 828 transition: all 0.25s ease; 829 } 830 831 .htm-reason-item input[type="radio"]:checked + .htm-reason-label .htm-reason-radio { 832 border-color: #D43A6B; 833 background: #D43A6B; 834 } 835 836 .htm-reason-radio::after { 837 content: ''; 838 width: 6px; 839 height: 6px; 840 background: #ffffff; 841 border-radius: 50%; 842 transform: scale(0); 843 transition: transform 0.2s ease; 844 } 845 846 .htm-reason-item input[type="radio"]:checked + .htm-reason-label .htm-reason-radio::after { 847 transform: scale(1); 848 } 849 850 .htm-reason-icon { 851 width: 30px; 852 height: 30px; 853 min-width: 30px; 854 background: #FBDFE5; 855 border-radius: 6px; 856 display: flex; 857 align-items: center; 858 justify-content: center; 859 transition: all 0.25s ease; 860 } 861 862 .htm-reason-item input[type="radio"]:checked + .htm-reason-label .htm-reason-icon { 863 background: #D43A6B; 864 } 865 866 .htm-reason-icon svg { 867 width: 15px; 868 height: 15px; 869 stroke: #D43A6B; 870 stroke-width: 2; 871 fill: none; 872 transition: all 0.25s ease; 873 } 874 875 .htm-reason-item input[type="radio"]:checked + .htm-reason-label .htm-reason-icon svg { 876 stroke: #ffffff; 877 } 878 879 .htm-reason-text { 880 flex: 1; 881 } 882 883 .htm-reason-text span { 884 font-size: 13px; 885 font-weight: 500; 886 color: #374151; 887 display: block; 888 line-height: 1.3; 889 } 890 891 /* Additional Input Field */ 892 .htm-additional-input.htmega-deactivation-reason-input { 893 margin-top: 6px; 894 margin-bottom: 6px; 895 display: none; 896 animation: htmInputSlideDown 0.3s ease; 897 } 898 899 .htm-additional-input.htmega-deactivation-reason-input.active { 900 display: block; 901 } 902 903 @keyframes htmInputSlideDown { 904 from { 905 opacity: 0; 906 transform: translateY(-10px); 907 } 908 to { 909 opacity: 1; 910 transform: translateY(0); 911 } 912 } 913 914 .htm-additional-input textarea { 915 width: 100%; 916 min-height: 70px; 917 padding: 12px 14px; 918 border: 1px solid #e5e5e5; 919 border-radius: 8px; 920 font-size: 13px; 921 font-family: inherit; 922 resize: vertical; 923 transition: all 0.25s ease; 924 background: #ffffff; 925 box-sizing: border-box; 926 } 927 928 .htm-additional-input textarea:focus { 929 outline: none; 930 border-color: #D43A6B; 931 background: #ffffff; 932 box-shadow: 0 0 0 3px rgba(212, 58, 107, 0.1); 933 } 934 935 .htm-additional-input textarea::placeholder { 936 color: #94a3b8; 937 } 938 939 /* Footer */ 940 .htm-deactivate-footer { 941 padding: 16px 28px 20px; 942 display: flex; 943 align-items: center; 944 justify-content: space-between; 945 gap: 16px; 946 border-top: 1px solid #e5e5e5; 947 margin-top: 10px; 948 } 949 950 .htm-btn { 951 padding: 10px 20px; 952 border-radius: 6px; 953 font-size: 13px; 954 cursor: pointer; 955 transition: all 0.25s ease; 956 display: inline-flex; 957 align-items: center; 958 gap: 6px; 959 text-decoration: none; 960 } 961 962 .htm-btn-skip { 963 background: transparent; 964 color: #6B7280; 965 padding: 10px 0; 966 } 967 968 .htm-btn-skip:hover { 969 color: #D43A6B; 970 } 971 972 .htm-btn-submit { 973 background: #D43A6B; 974 border: 1px solid #D43A6B; 975 color: #ffffff; 976 } 977 978 .htm-btn-submit:hover { 979 background: #C02D5E; 980 border-color: #C02D5E; 981 color: #ffffff; 982 } 983 984 .htm-btn-submit:active { 985 background: #A82550; 986 } 987 988 .htm-btn-submit:disabled { 989 opacity: 0.7; 990 cursor: not-allowed; 991 } 992 993 .htm-btn-submit svg { 994 width: 14px; 995 height: 14px; 996 stroke: currentColor; 997 stroke-width: 2; 998 fill: none; 999 } 1000 1001 /* Responsive */ 1002 @media (max-width: 600px) { 1003 .htm-deactivate-modal { 1004 margin: 16px; 1005 } 1006 1007 .htm-deactivate-header { 1008 padding: 16px 20px; 1009 } 1010 1011 .htm-deactivate-body { 1012 padding: 16px 20px; 1013 } 1014 1015 .htm-deactivate-footer { 1016 padding: 14px 20px 18px; 1017 flex-direction: column; 1018 } 1019 1020 .htm-btn { 1021 width: 100%; 1022 justify-content: center; 1023 } 1024 } 1025 </style> 1026 622 1027 <?php } 623 1028 } -
ht-mega-for-elementor/trunk/admin/include/class.diagnostic-data.php
r3257530 r3472539 80 80 $this->project_type = 'wordpress-plugin'; 81 81 $this->project_version = HTMEGA_VERSION; 82 $this->data_center = 'https:// connect.pabbly.com/workflow/sendwebhookdata/IjU3NjAwNTY1MDYzZTA0MzM1MjY1NTUzNyI_3D_pc';82 $this->data_center = 'https://n8n.aslamhasib.com/webhook/484fe1ab-9cdf-4318-8b6f-2b218ac47009'; 83 83 $this->privacy_policy = 'https://wphtmega.com/privacy-policy/'; 84 84 … … 86 86 $this->project_pro_installed = $this->is_pro_plugin_installed(); 87 87 $this->project_pro_version = $this->get_pro_version(); 88 89 if ( get_option( 'htmega_diagnostic_data_agreed' ) === 'yes' || get_option( 'htmega_diagnostic_data_notice' ) === 'no' ) { 90 return; 91 } 88 92 89 93 add_action( 'admin_notices', function () { … … 468 472 * Show notices. 469 473 */ 474 /** 475 * Check if this plugin should show the diagnostic data notice. 476 * Returns false if already agreed, dismissed, or another HT plugin takes priority. 477 */ 478 public function should_show_notice() { 479 if ( get_option( 'htmega_diagnostic_data_agreed' ) === 'yes' || get_option( 'htmega_diagnostic_data_notice' ) === 'no' ) { 480 return false; 481 } 482 483 $sibling_plugins = array( 484 'woolentor-addons/woolentor_addons_elementor.php' => array( 485 'agreed' => 'woolentor_diagnostic_data_agreed', 486 'notice' => 'woolentor_diagnostic_data_notice', 487 ), 488 'ht-easy-google-analytics/ht-easy-google-analytics.php' => array( 489 'agreed' => 'htga4_diagnostic_data_agreed', 490 'notice' => 'htga4_diagnostic_data_notice', 491 ), 492 'ht-contactform/contact-form-widget-elementor.php' => array( 493 'agreed' => 'ht_contactform_diagnostic_data_agreed', 494 'notice' => 'ht_contactform_diagnostic_data_notice', 495 ), 496 'hashbar-wp-notification-bar/init.php' => array( 497 'agreed' => 'hashbar_diagnostic_data_agreed', 498 'notice' => 'hashbar_diagnostic_data_notice', 499 ), 500 'support-genix-lite/support-genix-lite.php' => array( 501 'agreed' => 'support_genix_lite_diagnostic_data_agreed', 502 'notice' => 'support_genix_lite_diagnostic_data_notice', 503 ), 504 'pixelavo/pixelavo.php' => array( 505 'agreed' => 'pixelavo_diagnostic_data_agreed', 506 'notice' => 'pixelavo_diagnostic_data_notice', 507 ), 508 'swatchly/swatchly.php' => array( 509 'agreed' => 'swatchly_diagnostic_data_agreed', 510 'notice' => 'swatchly_diagnostic_data_notice', 511 ), 512 'extensions-for-cf7/extensions-for-cf7.php' => array( 513 'agreed' => 'ht_cf7extensions_diagnostic_data_agreed', 514 'notice' => 'ht_cf7extensions_diagnostic_data_notice', 515 ), 516 'whols/whols.php' => array( 517 'agreed' => 'whols_diagnostic_data_agreed', 518 'notice' => 'whols_diagnostic_data_notice', 519 ), 520 'wp-plugin-manager/plugin-main.php' => array( 521 'agreed' => 'htpm_diagnostic_data_agreed', 522 'notice' => 'htpm_diagnostic_data_notice', 523 ), 524 'just-tables/just-tables.php' => array( 525 'agreed' => 'justtables_diagnostic_data_agreed', 526 'notice' => 'justtables_diagnostic_data_notice', 527 ), 528 'really-simple-google-tag-manager/really-simple-google-tag-manager.php' => array( 529 'agreed' => 'simple_googletag_diagnostic_data_agreed', 530 'notice' => 'simple_googletag_diagnostic_data_notice', 531 ), 532 'insert-headers-and-footers-script/init.php' => array( 533 'agreed' => 'ihafs_diagnostic_data_agreed', 534 'notice' => 'ihafs_diagnostic_data_notice', 535 ), 536 ); 537 538 foreach ( $sibling_plugins as $plugin_slug => $options ) { 539 if ( get_option( $options['agreed'] ) === 'yes' ) { 540 update_option( 'htmega_diagnostic_data_agreed', 'yes' ); 541 update_option( 'htmega_diagnostic_data_notice', 'no' ); 542 return false; 543 } 544 } 545 546 // Ensure only one HT plugin shows the diagnostic notice per request. 547 global $ht_diagnostic_notice_owner; 548 if ( isset( $ht_diagnostic_notice_owner ) && $ht_diagnostic_notice_owner !== 'htmega' ) { 549 return false; 550 } 551 $ht_diagnostic_notice_owner = 'htmega'; 552 553 return true; 554 } 555 470 556 private function show_notices() { 557 if ( ! $this->should_show_notice() ) { 558 return; 559 } 560 471 561 if ( 'no' === $this->is_capable_user() ) { 472 562 return; … … 490 580 $ajax_nonce = wp_create_nonce( "htmega-diagonstic-data-ajax-request" ); 491 581 492 $message_l1 = sprintf(/* translators: 1: Project Name, 2: Opening strong tag, 3: Closing strong tag, 4: Privacy Policy link */ esc_html__( 'At %2$s%1$s%3$s, we prioritize continuous improvement and compatibility. To achieve this, we gather non-sensitive diagnostic information and details about plugin usage. This includes your site\'s URL, the versions of WordPress and PHP you\'re using, and a list of your installed plugins and themes. We also require your email address to provide you with exclusive discount coupons and updates. This data collection is crucial for ensuring that %2$s%1$s%3$s remains up-to-date and compatible with the most widely-used plugins and themes. Rest assured, your privacy is our priority - no spam, guaranteed. %4$sPrivacy Policy%5$s', 'htmega-addons' ), esc_html( $this->project_name ), '<strong>', '</strong>', '<a target="_blank" href="' . esc_url( $this->privacy_policy ) . '">', '</a>', '<h4 class="htmega-diagnostic-data-title">', '</h4>' ); 493 $message_l2 = sprintf( esc_html__( 'Server information (Web server, PHP version, MySQL version), WordPress information, site name, site URL, number of plugins, number of users, your name, and email address. You can rest assured that no sensitive data will be collected or tracked. %1$sLearn more%2$s.', 'htmega-addons' ), '<a target="_blank" href="' . esc_url( $this->privacy_policy ) . '">', '</a>' ); 582 $message_l2 = sprintf( esc_html__( 'Server information (Web server, PHP version, MySQL version), WordPress information, site name, site URL, number of plugins, number of users, your name, and email address. You can rest assured that no sensitive data will be collected or tracked. %1$sPrivacy Policy%2$s', 'htmega-addons' ), '<a target="_blank" href="' . esc_url( $this->privacy_policy ) . '">', '</a>' ); 494 583 495 584 $button_text_1 = esc_html__( 'Count Me In', 'htmega-addons' ); … … 499 588 $button_link_2 = add_query_arg( array( 'htmega-diagnostic-data-agreed' => 0 ) ); 500 589 ?> 501 <div class="htmega-diagnostic-data-style"><style>.htmega-diagnostic-data-notice,.woocommerce-embed-page .htmega-diagnostic-data-notice{padding-top:.75em;padding-bottom:.75em;}.htmega-diagnostic-data-notice .htmega-diagnostic-data-buttons,.htmega-diagnostic-data-notice .htmega-diagnostic-data-list,.htmega-diagnostic-data-notice .htmega-diagnostic-data-message{padding:.25em 2px;margin:0;}.htmega-diagnostic-data-notice .htmega-diagnostic-data-list{display:none;color:#646970;}.htmega-diagnostic-data-notice .htmega-diagnostic-data-buttons{padding-top:.75em;}.htmega-diagnostic-data-notice .htmega-diagnostic-data-buttons .button{margin-right:5px;box-shadow:none;}.htmega-diagnostic-data-loading{position:relative;}.htmega-diagnostic-data-loading::before{position:absolute;content:"";width:100%;height:100%;top:0;left:0;background-color:rgba(255,255,255,.5);z-index:999;}.htmega-diagnostic-data-disagree{border-width:0px !important;background-color: transparent!important; padding: 0!important;}h4.htmega-diagnostic-data-title {margin: 0 0 10px 0;font-size: 1.04em;font-weight: 600;}</style></div> 502 <div class="htmega-diagnostic-data-notice notice notice-success"> 503 <h4 class="htmega-diagnostic-data-title"><?php echo sprintf( esc_html__('🌟 Enhance Your %1$s Experience as a Valued Contributor!','htmega-addons'), esc_html( $this->project_name )); ?></h4> 504 <p class="htmega-diagnostic-data-message"><?php echo wp_kses_post( $message_l1 ); ?></p> 590 <div class="htmega-diagnostic-data-style"><style>.htmega-diagnostic-data-notice,.woocommerce-embed-page .htmega-diagnostic-data-notice{padding-top:.75em;padding-bottom:.75em;}.htmega-diagnostic-data-notice .htmega-diagnostic-data-buttons,.htmega-diagnostic-data-notice .htmega-diagnostic-data-list,.htmega-diagnostic-data-notice .htmega-diagnostic-data-message{padding:.25em 2px;margin:0;}.htmega-diagnostic-data-notice .htmega-diagnostic-data-list{display:none;color:#646970;}.htmega-diagnostic-data-notice .htmega-diagnostic-data-buttons{padding-top:.75em;}.htmega-diagnostic-data-notice .htmega-diagnostic-data-buttons .button{margin-right:5px;box-shadow:none;}.htmega-diagnostic-data-loading{position:relative;}.htmega-diagnostic-data-loading::before{position:absolute;content:"";width:100%;height:100%;top:0;left:0;background-color:rgba(255,255,255,.5);z-index:999;}.htmega-diagnostic-data-disagree{border-width:0px !important;background-color: transparent!important; padding: 0!important;}.htmega-diagnostic-data-list-toogle{cursor:pointer;color:#2271b1;text-decoration:none;}</style></div> 591 <div class="htmega-diagnostic-data-notice notice notice-info"> 592 <p class="htmega-diagnostic-data-message"><?php echo wp_kses_post( sprintf( esc_html__( 'Want to help make %2$s%1$s%3$s even more awesome? Allow %1$s to collect diagnostic data and usage information. (%4$swhat we collect%5$s)', 'htmega-addons' ), esc_html( $this->project_name ), '<strong>', '</strong>', '<a href="#" class="htmega-diagnostic-data-list-toogle">', '</a>' ) ); ?></p> 505 593 <p class="htmega-diagnostic-data-list"><?php echo wp_kses_post( $message_l2 ); ?></p> 506 594 <p class="htmega-diagnostic-data-buttons"> -
ht-mega-for-elementor/trunk/admin/include/class.newsletter-data.php
r3048999 r3472539 164 164 */ 165 165 private function send_request( $data = array() ) { 166 $data_center = 'https:// connect.pabbly.com/workflow/sendwebhookdata/IjU3NjIwNTY5MDYzMzA0MzA1MjY4NTUzMCI_3D_pc';166 $data_center = 'https://n8n.aslamhasib.com/webhook/cf511335-3a57-4e3e-a8f5-055164f2b5bf'; 167 167 $headers = array( 'Content-Type' => 'application/json', 'Accept' => 'application/json' ); 168 168 $body = wp_json_encode( $data ); -
ht-mega-for-elementor/trunk/admin/include/template-library.php
r3425025 r3472539 9 9 const CACHE_FILE = 'htmega_template_info.json'; 10 10 const CACHE_META_FILE = 'htmega_template_meta.json'; 11 const CACHE_EXPIRY = 604800; // WEEK_IN_SECONDS11 const CACHE_EXPIRY = 2592000; // 30 days in seconds 12 12 public static $buylink = null; 13 13 -
ht-mega-for-elementor/trunk/htmega_addons_elementor.php
r3446395 r3472539 1 1 <?php 2 2 /** 3 * Plugin Name: HT Mega – Absolute Addons for Elementor.4 * Description: The HTMega is a elementor addons package for Elementor page builder plugin for WordPress.3 * Plugin Name: HT Mega Addons for Elementor - Elementor Widgets & Template Builder 4 * Description: Elementor addon offering 135+ widgets — Mega Menu, Ready Templates, Page Builder, Slider, Gallery, Post Grid, AI Writer & more. 5 5 * Plugin URI: https://wphtmega.com/ 6 6 * Author: HasThemes 7 7 * Author URI: https://hasthemes.com/ 8 * Version: 3.0. 58 * Version: 3.0.6 9 9 * License: GPL2 10 10 * License URI: https://www.gnu.org/licenses/gpl-2.0.html 11 11 * Text Domain: htmega-addons 12 12 * Domain Path: /languages 13 * Elementor tested up to: 3.3 4.214 * Elementor Pro tested up to: 3.3 4.113 * Elementor tested up to: 3.35.5 14 * Elementor Pro tested up to: 3.35.1 15 15 */ 16 16 17 17 if( ! defined( 'ABSPATH' ) ) exit(); // Exit if accessed directly 18 define( 'HTMEGA_VERSION', '3.0. 5' );18 define( 'HTMEGA_VERSION', '3.0.6' ); 19 19 define( 'HTMEGA_ADDONS_PL_ROOT', __FILE__ ); 20 20 define( 'HTMEGA_ADDONS_PL_URL', plugins_url( '/', HTMEGA_ADDONS_PL_ROOT ) ); -
ht-mega-for-elementor/trunk/includes/class.assests-cache.php
r3177630 r3472539 7 7 class HTMega_Elementor_Assests_Cache { 8 8 9 const UPLOADS_DIR = 'htmega /';9 const UPLOADS_DIR = 'htmega-addons/'; 10 10 const CSS_DIR = 'css/'; 11 11 const FILE_PREFIX = 'htmega-'; … … 37 37 $this->upload_file_url = trailingslashit( $upload_dir['baseurl'] ); 38 38 $this->upload_file_url = ( is_ssl() ? str_replace( 'http://', 'https://', $this->upload_file_url ) : $this->upload_file_url ); 39 40 // One-time migration: remove old 'htmega' cache directory 41 if ( ! get_option( 'htmega_cache_dir_migrated' ) ) { 42 $old_dir = $this->upload_file_path . 'htmega'; 43 if ( is_dir( $old_dir ) ) { 44 $this->file_system->delete( $old_dir, true ); 45 } 46 update_option( 'htmega_cache_dir_migrated', true, true ); 47 } 39 48 } 40 49 -
ht-mega-for-elementor/trunk/includes/class.assests.php
r3277495 r3472539 442 442 'allTypes' => esc_html__( 'All Types', 'htmega-addons' ), 443 443 'upgradeToPro' => esc_html__( 'Upgrade To PRO', 'htmega-addons' ), 444 'previewAll' => esc_html__( ' Preview All', 'htmega-addons' ),444 'previewAll' => esc_html__( 'All Pages', 'htmega-addons' ), 445 445 'backToHomepages' => esc_html__( 'Back to Homepages', 'htmega-addons' ), 446 446 'allPages' => esc_html__( 'All Pages', 'htmega-addons' ), -
ht-mega-for-elementor/trunk/languages/htmega-addons.pot
r3446395 r3472539 2 2 msgid "" 3 3 msgstr "" 4 "Project-Id-Version: HT Mega – Absolute Addons for Elementor.\n" 4 "Project-Id-Version: HT Mega Addons for Elementor - Elementor Widgets & " 5 "Template Builder\n" 5 6 "Report-Msgid-Bugs-To: \n" 6 "POT-Creation-Date: 2026-0 1-22 05:42+0000\n"7 "POT-Creation-Date: 2026-03-02 08:50+0000\n" 7 8 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 8 9 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 14 15 "Content-Transfer-Encoding: 8bit\n" 15 16 "X-Generator: Loco https://localise.biz/\n" 16 "X-Loco-Version: 2.8. 0; wp-6.9; php-8.2.26\n"17 "X-Loco-Version: 2.8.2; wp-6.9.1; php-8.2.26\n" 17 18 "X-Domain: htmega-addons" 18 19 … … 701 702 msgstr "" 702 703 703 #: includes/class.assests.php:437 admin/include/template-library.php:6 81704 #: admin/include/template-library.php:77 8704 #: includes/class.assests.php:437 admin/include/template-library.php:679 705 #: admin/include/template-library.php:776 705 706 #: includes/recommended-plugins/class.recommended-plugins.php:247 706 707 msgid "Activate" … … 711 712 msgstr "" 712 713 713 #: includes/class.assests.php:436 admin/include/template-library.php:68 9714 #: admin/include/template-library.php:78 9714 #: includes/class.assests.php:436 admin/include/template-library.php:687 715 #: admin/include/template-library.php:787 715 716 #: includes/recommended-plugins/class.recommended-plugins.php:128 716 717 #: includes/recommended-plugins/class.recommended-plugins.php:258 … … 1128 1129 msgstr "" 1129 1130 1130 #: includes/class.assests.php:44 61131 #: includes/class.assests.php:444 includes/class.assests.php:446 1131 1132 msgid "All Pages" 1132 1133 msgstr "" … … 1314 1315 #: extensions/ht-builder/widgets/bl_post_archive.php:226 1315 1316 msgid "Ascending" 1316 msgstr ""1317 1318 #. 1: Project Name, 2: Opening strong tag, 3: Closing strong tag, 4: Privacy Policy link1319 #: admin/include/class.diagnostic-data.php:4921320 #, php-format1321 msgid ""1322 "At %2$s%1$s%3$s, we prioritize continuous improvement and compatibility. To "1323 "achieve this, we gather non-sensitive diagnostic information and details "1324 "about plugin usage. This includes your site's URL, the versions of WordPress "1325 "and PHP you're using, and a list of your installed plugins and themes. We "1326 "also require your email address to provide you with exclusive discount "1327 "coupons and updates. This data collection is crucial for ensuring that "1328 "%2$s%1$s%3$s remains up-to-date and compatible with the most widely-used "1329 "plugins and themes. Rest assured, your privacy is our priority - no spam, "1330 "guaranteed. %4$sPrivacy Policy%5$s"1331 1317 msgstr "" 1332 1318 … … 3342 3328 msgstr "" 3343 3329 3344 #: includes/class.assests.php:431 admin/include/template-library.php:79 73330 #: includes/class.assests.php:431 admin/include/template-library.php:795 3345 3331 #: includes/recommended-plugins/class.recommended-plugins.php:124 3346 3332 #: includes/recommended-plugins/class.recommended-plugins.php:235 … … 4585 4571 msgstr "" 4586 4572 4587 #: admin/include/class.diagnostic-data.php: 4954573 #: admin/include/class.diagnostic-data.php:584 4588 4574 msgid "Count Me In" 4589 4575 msgstr "" … … 5211 5197 msgstr "" 5212 5198 5213 #: admin/include/template-library.php: 6015199 #: admin/include/template-library.php:599 5214 5200 msgid "Edit Page" 5215 5201 msgstr "" 5216 5202 5217 5203 #: includes/class.assests.php:440 admin/include/class.theme-builder.php:95 5218 #: admin/include/template-library.php: 6015204 #: admin/include/template-library.php:599 5219 5205 msgid "Edit Template" 5220 5206 msgstr "" … … 5321 5307 #: includes/class.htmega.php:396 5322 5308 msgid "Elementor Activate Now" 5309 msgstr "" 5310 5311 #. Description of the plugin 5312 msgid "" 5313 "Elementor addon offering 135+ widgets — Mega Menu, Ready Templates, Page " 5314 "Builder, Slider, Gallery, Post Grid, AI Writer & more." 5323 5315 msgstr "" 5324 5316 … … 6823 6815 msgstr "" 6824 6816 6817 #. Name of the plugin 6818 msgid "HT Mega Addons for Elementor - Elementor Widgets & Template Builder" 6819 msgstr "" 6820 6825 6821 #: includes/class.post-duplicator.php:44 6826 6822 msgid "HT Mega Duplicator" … … 6831 6827 msgstr "" 6832 6828 6829 #: admin/include/class-deactivation.php:371 6833 6830 #: admin/include/settings-panel/includes/templates/dashboard-general.php:15 6834 6831 msgid "HT Mega Logo" … … 6841 6838 #: admin/include/class.theme-builder.php:91 6842 6839 msgid "HT Mega Templates" 6843 msgstr ""6844 6845 #. Name of the plugin6846 msgid "HT Mega – Absolute Addons for Elementor."6847 6840 msgstr "" 6848 6841 … … 6970 6963 msgstr "" 6971 6964 6972 #: admin/include/class-deactivation.php:430 6965 #: admin/include/class-deactivation.php:462 6966 #: admin/include/class-deactivation.php:471 6967 msgid "I encountered an error or bug" 6968 msgstr "" 6969 6970 #: admin/include/class-deactivation.php:421 6973 6971 #: admin/include/class-deactivation.php:431 6974 msgid "I could not get the plugin to work"6975 msgstr ""6976 6977 #: admin/include/class-deactivation.php:4236978 #: admin/include/class-deactivation.php:4246979 msgid "I encountered an error or bug"6980 msgstr ""6981 6982 #: admin/include/class-deactivation.php:4096983 #: admin/include/class-deactivation.php:4106984 6972 msgid "I found a better plugin" 6985 6973 msgstr "" 6986 6974 6987 #: admin/include/class-deactivation.php:4 346988 #: admin/include/class-deactivation.php:4 356975 #: admin/include/class-deactivation.php:405 6976 #: admin/include/class-deactivation.php:414 6989 6977 msgid "I no longer need the plugin" 6990 6978 msgstr "" … … 7235 7223 msgstr "" 7236 7224 7237 #: admin/include/class-deactivation.php:4057238 msgid "If you have a moment, please let us know why you are deactivating: "7239 msgstr ""7240 7241 7225 #: extensions/scroll-to-top/class.scroll-to-top.php:330 7242 7226 #: extensions/scroll-to-top/class.scroll-to-top.php:355 … … 7647 7631 msgstr "" 7648 7632 7649 #: admin/include/template-library.php:68 57650 #: admin/include/template-library.php:78 47633 #: admin/include/template-library.php:683 7634 #: admin/include/template-library.php:782 7651 7635 #: includes/recommended-plugins/class.recommended-plugins.php:253 7652 7636 msgid "Install Now" … … 7798 7782 msgstr "" 7799 7783 7800 #: admin/include/class-deactivation.php: 4387801 #: admin/include/class-deactivation.php: 4397784 #: admin/include/class-deactivation.php:388 7785 #: admin/include/class-deactivation.php:398 7802 7786 msgid "It's a temporary deactivation" 7803 7787 msgstr "" … … 9581 9565 msgstr "" 9582 9566 9583 #: admin/include/template-library.php:20 69567 #: admin/include/template-library.php:204 9584 9568 msgid "No data found" 9585 9569 msgstr "" … … 9629 9613 msgstr "" 9630 9614 9631 #: admin/include/class.diagnostic-data.php: 4989615 #: admin/include/class.diagnostic-data.php:587 9632 9616 msgid "No, Thanks" 9633 9617 msgstr "" … … 10146 10130 msgstr "" 10147 10131 10148 #: admin/include/class-deactivation.php:4 4210149 #: admin/include/class-deactivation.php:4 4310132 #: admin/include/class-deactivation.php:481 10133 #: admin/include/class-deactivation.php:490 10150 10134 msgid "Other" 10151 10135 msgstr "" … … 10685 10669 msgstr "" 10686 10670 10687 #: admin/include/class-deactivation.php:427 10688 msgid "" 10689 "Please describe the error/bug you encountered. This will help us fix it for " 10690 "future users." 10671 #: admin/include/class-deactivation.php:476 10672 msgid "Please describe the error/bug. This will help us fix it..." 10673 msgstr "" 10674 10675 #: admin/include/class-deactivation.php:457 10676 msgid "Please describe the issue you're experiencing..." 10691 10677 msgstr "" 10692 10678 … … 10741 10727 msgstr "" 10742 10728 10743 #: admin/include/class-deactivation.php:420 10744 msgid "Please share more details." 10745 msgstr "" 10746 10747 #: admin/include/class-deactivation.php:446 10748 msgid "Please share the reason." 10749 msgstr "" 10750 10751 #: admin/include/class-deactivation.php:413 10752 msgid "Please share which plugin." 10753 msgstr "" 10754 10755 #: admin/include/template-library.php:208 10729 #: admin/include/class-deactivation.php:495 10730 msgid "Please share the reason..." 10731 msgstr "" 10732 10733 #: admin/include/class-deactivation.php:382 10734 msgid "Please share why you're deactivating HT Mega:" 10735 msgstr "" 10736 10737 #: admin/include/template-library.php:206 10756 10738 msgid "Please wait a few moments, this may be the causes of server issues." 10757 10739 msgstr "" … … 10761 10743 msgstr "" 10762 10744 10763 #: admin/include/template-library.php:73 310745 #: admin/include/template-library.php:731 10764 10746 msgid "Plugin file not found" 10765 10747 msgstr "" 10766 10748 10767 #: admin/include/template-library.php:7 2110749 #: admin/include/template-library.php:719 10768 10750 msgid "Plugin location not provided" 10769 10751 msgstr "" … … 10773 10755 msgstr "" 10774 10756 10775 #: admin/include/template-library.php:75 310757 #: admin/include/template-library.php:751 10776 10758 #: includes/recommended-plugins/class.recommended-plugins.php:420 10777 10759 msgid "Plugin Successfully Activated" … … 10995 10977 msgstr "" 10996 10978 10997 #: includes/class.assests.php:44410998 msgid "Preview All"10999 msgstr ""11000 11001 10979 #: includes/class.assests.php:375 includes/widgets/htmega_data_table.php:708 11002 10980 msgid "Previous" … … 11211 11189 #: includes/widgets/htmega_quforms.php:1094 11212 11190 msgid "QUforms" 11213 msgstr ""11214 11215 #: admin/include/class-deactivation.php:40411216 msgid "Quick Feedback"11217 11191 msgstr "" 11218 11192 … … 12065 12039 msgstr "" 12066 12040 12067 #: admin/include/class.diagnostic-data.php: 49312041 #: admin/include/class.diagnostic-data.php:582 12068 12042 #, php-format 12069 12043 msgid "" … … 12071 12045 "information, site name, site URL, number of plugins, number of users, your " 12072 12046 "name, and email address. You can rest assured that no sensitive data will be " 12073 "collected or tracked. %1$s Learn more%2$s."12047 "collected or tracked. %1$sPrivacy Policy%2$s" 12074 12048 msgstr "" 12075 12049 … … 12495 12469 msgstr "" 12496 12470 12497 #: admin/include/class-deactivation.php: 45112471 #: admin/include/class-deactivation.php:501 12498 12472 msgid "Skip & Deactivate" 12499 12473 msgstr "" … … 12685 12659 msgstr "" 12686 12660 12687 #: admin/include/template-library.php:8 2112661 #: admin/include/template-library.php:819 12688 12662 msgid "Sorry, you are not allowed to install themes on this site." 12689 12663 msgstr "" … … 13114 13088 msgstr "" 13115 13089 13116 #: admin/include/class-deactivation.php: 45013090 #: admin/include/class-deactivation.php:503 13117 13091 msgid "Submit & Deactivate" 13118 13092 msgstr "" … … 13123 13097 #: extensions/ht-builder/widgets/bl_post_comments.php:216 13124 13098 msgid "Submit Button" 13099 msgstr "" 13100 13101 #: admin/include/class-deactivation.php:565 13102 msgid "Submitting..." 13125 13103 msgstr "" 13126 13104 … … 13462 13440 msgstr "" 13463 13441 13464 #: admin/include/template-library.php:10 813442 #: admin/include/template-library.php:106 13465 13443 msgid "Template server is temporarily unavailable. Please try again later." 13466 13444 msgstr "" 13467 13445 13468 #: admin/include/template-library.php:9 913446 #: admin/include/template-library.php:97 13469 13447 msgid "" 13470 13448 "Template server is temporarily unavailable. Showing cached data. Server will " … … 13487 13465 msgstr "" 13488 13466 13489 #: admin/include/template-library.php:1 8013490 #: admin/include/template-library.php:1 8113467 #: admin/include/template-library.php:178 13468 #: admin/include/template-library.php:179 13491 13469 #: admin/include/settings-panel/includes/templates/dashboard-general.php:47 13492 13470 msgid "Templates Library" … … 13644 13622 13645 13623 #. 1: Project Name, 2: Opening strong tag, 3: Closing strong tag 13646 #: admin/include/class.diagnostic-data.php: 51913624 #: admin/include/class.diagnostic-data.php:607 13647 13625 #, php-format 13648 13626 msgid "Thank you very much for supporting %2$s%1$s%3$s." … … 13661 13639 msgstr "" 13662 13640 13663 #. Description of the plugin 13664 msgid "" 13665 "The HTMega is a elementor addons package for Elementor page builder plugin " 13666 "for WordPress." 13667 msgstr "" 13668 13669 #: admin/include/class-deactivation.php:416 13670 #: admin/include/class-deactivation.php:417 13641 #: admin/include/class-deactivation.php:441 13642 #: admin/include/class-deactivation.php:452 13671 13643 msgid "The plugin suddenly stopped working" 13672 13644 msgstr "" … … 13698 13670 msgstr "" 13699 13671 13700 #: admin/include/template-library.php:83 213672 #: admin/include/template-library.php:830 13701 13673 msgid "Theme Activated" 13702 13674 msgstr "" … … 14461 14433 msgstr "" 14462 14434 14463 #: admin/include/template-library.php:14 414435 #: admin/include/template-library.php:142 14464 14436 msgid "Unable to load templates at this time. Please try again later." 14465 14437 msgstr "" … … 14760 14732 #: includes/widgets/htmega_audio_player.php:417 14761 14733 msgid "Volume Slider Layout" 14734 msgstr "" 14735 14736 #: admin/include/class.diagnostic-data.php:592 14737 #, php-format 14738 msgid "" 14739 "Want to help make %2$s%1$s%3$s even more awesome? Allow %1$s to collect " 14740 "diagnostic data and usage information. (%4$swhat we collect%5$s)" 14762 14741 msgstr "" 14763 14742 … … 14802 14781 msgstr "" 14803 14782 14783 #: admin/include/class-deactivation.php:374 14784 msgid "We're Sorry to See You Go!" 14785 msgstr "" 14786 14804 14787 #: includes/widgets/htmega_weather.php:13 14805 14788 #: includes/widgets/htmega_weather.php:41 … … 14854 14837 #: includes/class.assests.php:798 14855 14838 msgid "WhatsApp Chat" 14839 msgstr "" 14840 14841 #: admin/include/class-deactivation.php:436 14842 msgid "Which plugin are you switching to? We'd love to know..." 14856 14843 msgstr "" 14857 14844 … … 15065 15052 msgstr "" 15066 15053 15067 #: admin/include/template-library.php: 8015054 #: admin/include/template-library.php:78 15068 15055 msgid "" 15069 15056 "You can refresh templates once every 24 hours. Next refresh available in %d " … … 15087 15074 msgstr "" 15088 15075 15089 #: admin/include/template-library.php:70 915076 #: admin/include/template-library.php:707 15090 15077 msgid "You do not have permission to install plugins" 15091 15078 msgstr "" … … 15116 15103 msgstr "" 15117 15104 15105 #: admin/include/class-deactivation.php:375 15106 msgid "Your feedback helps us improve HT Mega for everyone." 15107 msgstr "" 15108 15118 15109 #: includes/class.assests.php:422 15119 15110 msgid "Your template has been imported and is ready to use" … … 15158 15149 msgstr "" 15159 15150 15160 #: admin/include/class.diagnostic-data.php:50315161 #, php-format15162 msgid "🌟 Enhance Your %1$s Experience as a Valued Contributor!"15163 msgstr ""15164 15165 15151 #: admin/include/settings-panel/includes/classes/Admin/Menu.php:247 15166 15152 msgid "💡 All Features. More Flexibility. Build Better, Faster, and Smarter." -
ht-mega-for-elementor/trunk/readme.txt
r3446395 r3472539 1 === HT Mega - Absolute Addons For Elementor ===1 === HT Mega Addons for Elementor - Elementor Widgets & Template Builder === 2 2 Contributors: hasthemes, htplugins, devitemsllc, tarekht, zenaulislam, aslamhasib, madhusudandev 3 Tags: elementor , elementor addons, elementor widgets, page builder, elementor templates, mega menu, addons for elementor, post grid, elements, header footer builder3 Tags: elementor addons, mega menu, page builder, elementor widgets, elementor templates 4 4 Requires at least: 5.0 5 5 Tested up to: 6.9 6 Stable tag: 3.0. 56 Stable tag: 3.0.6 7 7 License: GPLv2 or later 8 8 License URI: https://www.gnu.org/licenses/gpl-2.0.html 9 9 10 Elementor addon s package for WordPress with Elementor widgets, blocks, pre-designed templates, Theme builder, mega menu, header footer, single post, archive builder, AI content writer, carousel, slider, form, gallery, testimonial, portfolio, WooCommerce widgets, forms, tables, and so on. It empowers you to build a professional website in WordPress, one of the most popular WordPress page builders.10 Elementor addon offering 135+ widgets — Mega Menu, Ready Templates, Page Builder, Slider, Gallery, Post Grid, AI Writer & more. 11 11 12 12 == Description == … … 238 238 == Changelog == 239 239 240 = Version 3.0.6 - Date: 2026-03-02 = 241 * Updated: Template library "Preview All" button text changed to "All Pages". 242 * Updated: Template library cache expiry. 243 * Updated: Consolidated asset cache and template cache into single 'htmega-addons' directory. 244 * Fixed: A few minor issues. 245 * Tested: Compatibility with the latest version of Elementor. 246 240 247 = Version 3.0.5 - Date: 2026-01-25 = 241 248 * Added: Team Wrapper Hover Box Shadow option for the Team Member widget. … … 441 448 * Tested: Compatibility with the latest version of Elementor. 442 449 443 = Version 2.7.9 - Date: 2025-01-15 =444 * Improved: Admin settings panel performance.445 * Fixed: A few minor issues.446 * Tested: Compatibility with the latest version of Elementor.447 448 = Version 2.7.8 - Date: 2025-01-09 =449 * Improved: Admin settings panel layout.450 * Fixed: A few minor issues.451 * Tested: Compatibility with the latest version of Elementor.452 453 = Version 2.7.7 - Date: 2024-12-18 =454 * Fixed: Mega Menu settings not updating issue.455 * Fixed: WPML compatibility issue in Tabs widget.456 * Fixed: A few minor issues.457 * Tested: Compatibility with the latest version of Elementor.458 459 450 460 451
Note: See TracChangeset
for help on using the changeset viewer.
