Changeset 3362001
- Timestamp:
- 09/15/2025 06:53:31 PM (3 months ago)
- Location:
- cubewp-framework/trunk
- Files:
-
- 18 edited
-
cube.php (modified) (1 diff)
-
cube/assets/frontend/css/loop.css (modified) (9 diffs)
-
cube/assets/frontend/js/cubewp-alerts.js (modified) (6 diffs)
-
cube/assets/frontend/js/search-filters.js (modified) (18 diffs)
-
cube/classes/class-cubewp-add-ons.php (modified) (1 diff)
-
cube/classes/class-cubewp-builder-ui.php (modified) (42 diffs)
-
cube/classes/class-cubewp-load.php (modified) (1 diff)
-
cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-archive-posts-widget.php (modified) (2 diffs)
-
cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php (modified) (8 diffs)
-
cube/classes/shortcodes/class-cubewp-shortcode-posts.php (modified) (11 diffs)
-
cube/classes/shortcodes/class-cubewp-shortcode-taxonomy.php (modified) (7 diffs)
-
cube/functions/admin-functions.php (modified) (2 diffs)
-
cube/modules/custom-fields/class-cubewp-custom-fields-markup.php (modified) (1 diff)
-
cube/modules/search/class-cubewp-search-ajax-hooks.php (modified) (6 diffs)
-
cube/modules/theme-builder/class-cubewp-theme-builder-rules.php (modified) (1 diff)
-
cube/modules/theme-builder/class-cubewp-theme-builder.php (modified) (1 diff)
-
languages/cubewp-framework.pot (modified) (39 diffs)
-
readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
cubewp-framework/trunk/cube.php
r3349966 r3362001 4 4 * Plugin URI: https://cubewp.com/ 5 5 * Description: CubeWP is an end-to-end dynamic content framework for WordPress to help you save up to 90% of your coding time. 6 * Version: 1.1.2 66 * Version: 1.1.27 7 7 * Author: CubeWP 8 8 * Author URI: https://cubewp.com -
cubewp-framework/trunk/cube/assets/frontend/css/loop.css
r3155340 r3362001 21 21 } 22 22 23 select#cwp-sorting-filter, select#cwp-order-filter { 23 select#cwp-sorting-filter, 24 select#cwp-order-filter { 24 25 cursor: pointer; 25 26 font-size: 14px; … … 28 29 color: #777777; 29 30 min-width: 155px; 30 height:30px; 31 } 31 height: 30px; 32 } 33 32 34 select#cwp-order-filter { 33 margin-right: 20px35 margin-right: 20px 34 36 } 35 37 36 38 select#cwp-order-filter:disabled { 37 background-color: #f0f0f0; /* Light grey background */ 38 color: #999999; /* Grey text color */ 39 border: 1px solid #cccccc; /* Light grey border */ 40 cursor: not-allowed; /* Not-allowed cursor */ 39 background-color: #f0f0f0; 40 /* Light grey background */ 41 color: #999999; 42 /* Grey text color */ 43 border: 1px solid #cccccc; 44 /* Light grey border */ 45 cursor: not-allowed; 46 /* Not-allowed cursor */ 41 47 } 42 48 … … 55 61 cursor: pointer; 56 62 padding: 4px 10px; 57 height:30px;63 height: 30px; 58 64 } 59 65 … … 248 254 cursor: pointer; 249 255 } 256 250 257 .cwp-post-boosted { 251 258 padding: 1px 10px; … … 267 274 border-radius: 5px; 268 275 } 276 269 277 .cwp-processing-post-grid .cwp-processing-post-thumbnail { 270 278 height: 205px; … … 275 283 border-radius: 5px 5px 0 0; 276 284 } 285 277 286 .cwp-processing-post-grid .cwp-processing-post-content { 278 287 height: 225px; … … 283 292 border-radius: 0 0 5px 5px; 284 293 } 294 285 295 .cwp-processing-post-grid .cwp-processing-post-content p { 286 296 height: 30px; … … 292 302 border-radius: 2px; 293 303 } 304 294 305 .cwp-processing-post-grid .cwp-processing-post-content p:nth-child(2) { 295 306 width: 75%; 296 307 } 308 297 309 .cwp-processing-post-grid .cwp-processing-post-content p:nth-child(3) { 298 310 width: 35%; 299 311 } 312 300 313 @keyframes shine { 301 314 to { … … 303 316 } 304 317 } 318 319 .cubewp-posts-shortcode:not(.slick-initialized) .cubewp-posts-row-1 { 320 width: 100% !important; 321 } 322 323 .cubewp-posts-shortcode:not(.slick-initialized) .cubewp-posts-row-2 { 324 width: 50% !important; 325 } 326 327 .cubewp-posts-shortcode:not(.slick-initialized) .cubewp-posts-row-3 { 328 width: 33.33% !important; 329 } 330 331 .cubewp-posts-shortcode:not(.slick-initialized) .cubewp-posts-row-4 { 332 width: 25% !important; 333 } 334 335 .cubewp-posts-shortcode:not(.slick-initialized) .cubewp-posts-row-5 { 336 width: 20% !important; 337 } 338 339 .cubewp-posts-shortcode:not(.slick-initialized) .cubewp-posts-row-6 { 340 width: 16.66% !important; 341 } 342 343 /* ========== Tablet (max-width: 1024px) ========== */ 344 @media (max-width: 1024px) { 345 .cubewp-posts-shortcode:not(.slick-initialized) .cubewp-posts-row-tablet-1 { 346 width: 100% !important; 347 } 348 .cubewp-posts-shortcode:not(.slick-initialized) .cubewp-posts-row-tablet-2 { 349 width: 50% !important; 350 } 351 .cubewp-posts-shortcode:not(.slick-initialized) .cubewp-posts-row-tablet-3 { 352 width: 33.33% !important; 353 } 354 .cubewp-posts-shortcode:not(.slick-initialized) .cubewp-posts-row-tablet-4 { 355 width: 25% !important; 356 } 357 .cubewp-posts-shortcode:not(.slick-initialized) .cubewp-posts-row-tablet-5 { 358 width: 20% !important; 359 } 360 .cubewp-posts-shortcode:not(.slick-initialized) .cubewp-posts-row-tablet-6 { 361 width: 16.66% !important; 362 } 363 } 364 365 /* ========== Mobile (max-width: 767px) ========== */ 366 @media (max-width: 767px) { 367 .cubewp-posts-shortcode:not(.slick-initialized) .cubewp-posts-row-mobile-1 { 368 width: 100% !important; 369 } 370 .cubewp-posts-shortcode:not(.slick-initialized) .cubewp-posts-row-mobile-2 { 371 width: 50% !important; 372 } 373 .cubewp-posts-shortcode:not(.slick-initialized) .cubewp-posts-row-mobile-3 { 374 width: 33.33% !important; 375 } 376 .cubewp-posts-shortcode:not(.slick-initialized) .cubewp-posts-row-mobile-4 { 377 width: 25% !important; 378 } 379 .cubewp-posts-shortcode:not(.slick-initialized) .cubewp-posts-row-mobile-5 { 380 width: 20% !important; 381 } 382 .cubewp-posts-shortcode:not(.slick-initialized) .cubewp-posts-row-mobile-6 { 383 width: 16.66% !important; 384 } 385 } -
cubewp-framework/trunk/cube/assets/frontend/js/cubewp-alerts.js
r3339163 r3362001 169 169 }); 170 170 171 $( ".cubewp-mega-menu-item.hover").on("click", function (event) {171 $(document).on("click", ".cubewp-mega-menu-item.hover", function (event) { 172 172 if ($(window).width() <= 1024) { 173 173 if (!$(event.target).closest(".cubewp-mega-menu-item-dropdown").length) { … … 177 177 } 178 178 }); 179 $( ".close-mega-menu-mobile").on("click", function (event) {179 $(document).on("click", ".close-mega-menu-mobile", function (event) { 180 180 if ($(window).width() <= 1024) { 181 181 $('.cubewp-mega-menu-item , .cubewp-mega-menu').removeClass("active"); 182 182 } 183 183 }); 184 185 184 jQuery(document).ready(function ($) { 186 185 // Open the next slide when clicking the trigger … … 192 191 }); 193 192 // Close the slide when clicking the back button 194 $(document).on("click", ".container-back-slide", function () { 195 if ($(this).closest(".container-next-screen").length > 0) { 196 $(this).closest(".container-next-screen").removeClass("active"); 197 } else { 198 $(this).closest(".cubewp-mega-menu").removeClass("active"); 199 $(this).closest(".cubewp-mega-menu-item").removeClass("active"); 193 $(document).on("click", ".container-back-slide", function (e) { 194 if ($(window).width() <= 1024) { 195 e.preventDefault(); 196 setTimeout(() => { 197 if ($(this).closest(".container-next-screen").length > 0) { 198 $(this).closest(".container-next-screen").removeClass("active"); 199 } else { 200 $(this).closest(".cubewp-mega-menu").removeClass("active"); 201 $(this).closest(".cubewp-mega-menu-item").removeClass("active"); 202 } 203 }, 200); 200 204 } 201 205 }); … … 282 286 283 287 /*------- CubeWP Post Slider ---------*/ 284 (function ($) { 285 function initPostSlider($scope) { 286 var sliders = $scope.find('.cubewp-post-slider'); 287 if (!sliders.length) return; 288 sliders.each(function () { 289 var sliderElement = jQuery(this); 290 var prevArrowHtml = sliderElement.data('prev-arrow'); 291 var enable_wrapper = sliderElement.data('enable-wrapper'); 292 var nextArrowHtml = sliderElement.data('next-arrow'); 293 var previcon_type = sliderElement.data('prev-icon-type'); 294 var nexticon_type = sliderElement.data('next-icon-type'); 295 var slidesToShow = sliderElement.data('slides-to-show'); 296 var slidesToScroll = sliderElement.data('slides-to-scroll'); 297 var slidesToShowTablet = sliderElement.data('slides-to-show-tablet'); 298 var slidesToShowTabletPortrait = sliderElement.data('slides-show-tablet-portrait'); 299 var slidesToShowMobile = sliderElement.data('slides-to-show-mobile'); 300 var slidesToScrollTablet = sliderElement.data('slides-to-scroll-tablet'); 301 var slidesToScrollTabletPortrait = sliderElement.data('slides-scroll-tablet-portrait'); 302 var slidesToScrollMobile = sliderElement.data('slides-to-scroll-mobile'); 303 var autoplay = sliderElement.data('autoplay') === true || sliderElement.data('autoplay') === 'true'; 304 var autoplaySpeed = sliderElement.data('autoplay-speed'); 305 var Speed = sliderElement.data('speed'); 306 var infinite = sliderElement.data('infinite') === true || sliderElement.data('infinite') === 'true'; 307 var fade_effect = sliderElement.data('fade') === true || sliderElement.data('fade') === 'true'; 308 var variableWidth = sliderElement.data('variable-width') === true || sliderElement.data('variable-width') === 'true'; 309 if (previcon_type) { 310 var prevArrowButton = '<button type="button" class="slick-prev"><i class="' + prevArrowHtml + '"></i></button>'; 288 /*------- CubeWP Post Slider ---------*/ 289 function initPostSlider($scope, clicked) { 290 var sliders = $scope.find('.cubewp-post-slider'); 291 if (!sliders.length) return; 292 sliders.each(function () { 293 var sliderElement = jQuery(this); 294 295 if (sliderElement.hasClass('slick-initialized')) { 296 if (clicked == 'clicked') { 297 sliderElement.slick("unslick"); 298 console.log('have slider'); 299 sliderElement.addClass('sliderElement'); 311 300 } else { 312 var prevArrowButton = '<button type="button" class="slick-prev">' + prevArrowHtml + '</button>'; 313 } 314 if (nexticon_type) { 315 var nextArrowButton = '<button type="button" class="slick-next"><i class="' + nextArrowHtml + '"></i></button>'; 316 } else { 317 var nextArrowButton = '<button type="button" class="slick-next">' + nextArrowHtml + '</button>'; 318 } 319 var CustomArrows = sliderElement.data('custom-arrows') === true || sliderElement.data('custom-arrows') === 'true'; 320 var CustomDots = sliderElement.data('custom-dots') === true || sliderElement.data('custom-dots') === 'true'; 321 var enableProgressBar = sliderElement.data('enable-progress-bar') === true || sliderElement.data('enable-progress-bar') === 'true'; 322 sliderElement.slick({ 323 slidesToShow: slidesToShow, 324 slidesToScroll: slidesToScroll, 325 autoplay: autoplay, 326 autoplaySpeed: autoplaySpeed, 327 speed: Speed, 328 infinite: infinite, 329 fade: fade_effect, 330 variableWidth: variableWidth, 331 prevArrow: prevArrowButton, 332 nextArrow: nextArrowButton, 333 arrows: CustomArrows, 334 dots: CustomDots, 335 responsive: [{ 336 breakpoint: 1025, 337 settings: { 338 slidesToShow: slidesToShowTablet, 339 slidesToScroll: slidesToScrollTablet 340 } 341 }, 342 { 343 breakpoint: 768, 344 settings: { 345 slidesToShow: slidesToShowTabletPortrait, 346 slidesToScroll: slidesToScrollTabletPortrait 347 } 348 }, 349 { 350 breakpoint: 481, 351 settings: { 352 slidesToShow: slidesToShowMobile, 353 slidesToScroll: slidesToScrollMobile 354 } 301 return; 302 303 } 304 305 } 306 307 var isPrevSvg = sliderElement.data('is-prev-svg'); 308 var isNextSvg = sliderElement.data('is-next-svg'); 309 310 var prevArrowHtml = isPrevSvg ? sliderElement.attr('data-prev-arrow-svg') : sliderElement.data('prev-arrow'); 311 312 var nextArrowHtml = isNextSvg ? sliderElement.attr('data-next-arrow-svg') : sliderElement.data('next-arrow'); 313 314 var enable_wrapper = sliderElement.data('enable-wrapper'); 315 var slidesToShow = sliderElement.data('slides-to-show'); 316 var slidesToScroll = sliderElement.data('slides-to-scroll'); 317 var slidesToShowTablet = sliderElement.data('slides-to-show-tablet'); 318 var slidesToShowTabletPortrait = sliderElement.data('slides-show-tablet-portrait'); 319 var slidesToShowMobile = sliderElement.data('slides-to-show-mobile'); 320 var slidesToScrollTablet = sliderElement.data('slides-to-scroll-tablet'); 321 var slidesToScrollTabletPortrait = sliderElement.data('slides-scroll-tablet-portrait'); 322 var slidesToScrollMobile = sliderElement.data('slides-to-scroll-mobile'); 323 var autoplay = sliderElement.data('autoplay') === true || sliderElement.data('autoplay') === 'true'; 324 var autoplaySpeed = sliderElement.data('autoplay-speed'); 325 var Speed = sliderElement.data('speed'); 326 var infinite = sliderElement.data('infinite') === true || sliderElement.data('infinite') === 'true'; 327 var fade_effect = sliderElement.data('fade') === true || sliderElement.data('fade') === 'true'; 328 var variableWidth = sliderElement.data('variable-width') === true || sliderElement.data('variable-width') === 'true'; 329 var prevArrowButton, nextArrowButton; 330 331 if (isPrevSvg) { 332 prevArrowButton = '<button type="button" class="slick-prev">' + prevArrowHtml + '</button>'; 333 } else { 334 prevArrowButton = '<button type="button" class="slick-prev"><i class="' + prevArrowHtml + '"></i></button>'; 335 } 336 337 if (isNextSvg) { 338 nextArrowButton = '<button type="button" class="slick-next">' + nextArrowHtml + '</button>'; 339 } else { 340 nextArrowButton = '<button type="button" class="slick-next"><i class="' + nextArrowHtml + '"></i></button>'; 341 } 342 var CustomArrows = sliderElement.data('custom-arrows') === true || sliderElement.data('custom-arrows') === 'true'; 343 var CustomDots = sliderElement.data('custom-dots') === true || sliderElement.data('custom-dots') === 'true'; 344 var enableProgressBar = sliderElement.data('enable-progress-bar') === true || sliderElement.data('enable-progress-bar') === 'true'; 345 sliderElement.slick({ 346 slidesToShow: slidesToShow, 347 slidesToScroll: slidesToScroll, 348 autoplay: autoplay, 349 autoplaySpeed: autoplaySpeed, 350 speed: Speed, 351 infinite: infinite, 352 fade: fade_effect, 353 variableWidth: variableWidth, 354 prevArrow: prevArrowButton, 355 nextArrow: nextArrowButton, 356 arrows: CustomArrows, 357 dots: CustomDots, 358 responsive: [{ 359 breakpoint: 1025, 360 settings: { 361 slidesToShow: slidesToShowTablet, 362 slidesToScroll: slidesToScrollTablet 355 363 } 356 ] 357 }); 358 if (enableProgressBar == true) { 364 }, 365 { 366 breakpoint: 768, 367 settings: { 368 slidesToShow: slidesToShowTabletPortrait, 369 slidesToScroll: slidesToScrollTabletPortrait 370 } 371 }, 372 { 373 breakpoint: 481, 374 settings: { 375 slidesToShow: slidesToShowMobile, 376 slidesToScroll: slidesToScrollMobile 377 } 378 } 379 ] 380 }); 381 382 if (enableProgressBar == true) { 383 if (!sliderElement.next('.slick-progress').length) { 359 384 sliderElement.after( 360 385 '<div class="slick-progress"><div class="slick-progress-bar"></div></div>' … … 365 390 sliderElement.next('.slick-progress').find('.slick-progress-bar').css("width", progress + "%"); 366 391 }); 367 } 368 if (enable_wrapper == true) { 369 sliderElement.append('<div class="slick-arrows-wrapper"></div>'); 370 sliderElement.find(".slick-prev").appendTo(sliderElement.find(".slick-arrows-wrapper")); 371 sliderElement.find(".slick-dots").appendTo(sliderElement.find(".slick-arrows-wrapper")); 372 sliderElement.find(".slick-next").appendTo(sliderElement.find(".slick-arrows-wrapper")); 373 } 374 }); 375 } 392 } 393 } 394 if (enable_wrapper == true) { 395 sliderElement.append('<div class="slick-arrows-wrapper"></div>'); 396 sliderElement.find(".slick-prev").appendTo(sliderElement.find(".slick-arrows-wrapper")); 397 sliderElement.find(".slick-dots").appendTo(sliderElement.find(".slick-arrows-wrapper")); 398 sliderElement.find(".slick-next").appendTo(sliderElement.find(".slick-arrows-wrapper")); 399 } 400 }); 401 if (clicked == 'clicked') { 402 jQuery(document).trigger("post_slider_initialized", [$scope]); 403 } 404 } 405 (function ($) { 406 // Expose initPostSlider to a global object if needed outside Elementor's scope 407 if (typeof window.CubeWp === 'undefined') { 408 window.CubeWp = {}; 409 } 410 window.CubeWp.initPostSlider = initPostSlider; 411 376 412 // Hook for Elementor frontend and editor 377 413 jQuery(window).on('elementor/frontend/init', function () { … … 379 415 }); 380 416 })(jQuery); 417 418 var CubeWpShortcodePostsAjax = { 419 loadPosts: function (containerSelector) { 420 var $container = jQuery(containerSelector); 421 var parameters = $container.data('parameters'); 422 if (parameters) { 423 jQuery.ajax({ 424 url: cwp_alert_ui_params.ajax_url, 425 type: 'POST', 426 data: { 427 action: 'cubewp_posts_output', 428 ...parameters, 429 load_via_ajax: 'yes' 430 }, 431 success: function (response) { 432 if (response.success) { 433 $container.replaceWith(response.data.content); 434 initPostSlider(jQuery(document.body)); 435 jQuery(document.body).trigger('cubewp_posts_loaded'); 436 } else { 437 $container.html('<div class="cubewp-error-card">Error loading posts.</div>'); 438 } 439 }, 440 error: function () { 441 $container.html('<div class="cubewp-error-card">Failed to load posts.</div>'); 442 } 443 }); 444 } 445 } 446 }; 447 jQuery(document).on("click", ".vpack-nested-tabs .e-n-tab-title", function () { 448 var $dataid = jQuery(this).attr('aria-controls'); 449 var $sliderContainer = jQuery(this).closest('.elementor-element').find('#' + $dataid); 450 var clicked = 'clicked'; 451 if (jQuery(this).hasClass('init-clicked')) { 452 return false; 453 } 454 initPostSlider($sliderContainer, clicked); 455 jQuery(this).addClass('init-clicked'); 456 }) -
cubewp-framework/trunk/cube/assets/frontend/js/search-filters.js
r3155340 r3362001 3 3 var doneTypingInterval = 200; 4 4 5 jQuery(document).on('click', '.quick-see-more', function (){6 if (jQuery(this).hasClass('show')){5 jQuery(document).on('click', '.quick-see-more', function () { 6 if (jQuery(this).hasClass('show')) { 7 7 jQuery(this).removeClass('show'); 8 8 jQuery(this).text('See More'); 9 } else{9 } else { 10 10 jQuery(this).addClass('show'); 11 11 jQuery(this).text('Less More'); … … 13 13 jQuery(this).closest('.cwp-search-field-checkbox').find('.hidden-field').toggle(500); 14 14 }); 15 16 jQuery(document).on("click", '.listing-switcher', function () {15 16 jQuery(document).on("click", '.listing-switcher', function () { 17 17 var thisObj = jQuery(this); 18 if (thisObj.hasClass('list-view')){18 if (thisObj.hasClass('list-view')) { 19 19 jQuery('.cwp-grids-container').removeClass('grid-view'); 20 20 jQuery('.cwp-grids-container').addClass('list-view'); 21 21 jQuery(this).addClass('cwp-active-style'); 22 22 jQuery('.listing-switcher.grid-view').removeClass('cwp-active-style'); 23 } else{23 } else { 24 24 jQuery('.cwp-grids-container').removeClass('list-view'); 25 25 jQuery('.cwp-grids-container').addClass('grid-view'); … … 28 28 } 29 29 }); 30 31 jQuery(document).on("change", '.cwp-search-field-checkbox input[type="checkbox"]', function () {32 30 31 jQuery(document).on("change", '.cwp-search-field-checkbox input[type="checkbox"]', function () { 32 33 33 var hidden_checkbox = jQuery(this).closest('.cwp-search-field-checkbox').find('input[type="hidden"]'); 34 34 var hidden_vals = hidden_checkbox.val(); 35 if (jQuery(this).is(':checked')){36 if ( hidden_vals == '' ){35 if (jQuery(this).is(':checked')) { 36 if (hidden_vals == '') { 37 37 hidden_vals = jQuery(this).val(); 38 } else{39 hidden_vals += ',' + jQuery(this).val();38 } else { 39 hidden_vals += ',' + jQuery(this).val(); 40 40 } 41 41 jQuery(this).prop('checked', true); 42 } else{42 } else { 43 43 jQuery(this).prop('checked', false); 44 hidden_vals = cwp_remove_string_value(hidden_vals, jQuery(this).val() );44 hidden_vals = cwp_remove_string_value(hidden_vals, jQuery(this).val()); 45 45 } 46 46 hidden_checkbox.val(hidden_vals); 47 47 cwp_search_filters_ajax_content(); 48 48 }); 49 50 jQuery(document).on("change", '.cwp-search-filters select', function () {51 if (jQuery(this).hasClass('multi-select')){49 50 jQuery(document).on("change", '.cwp-search-filters select', function () { 51 if (jQuery(this).hasClass('multi-select')) { 52 52 var value = jQuery(this).val(); 53 if ( value != '' ){53 if (value != '') { 54 54 value.join(','); 55 55 } 56 56 jQuery(this).closest('.cwp-search-field-dropdown').find('input[type="hidden"]').val(value); 57 57 cwp_search_filters_ajax_content(); 58 } else{58 } else { 59 59 cwp_search_filters_ajax_content(); 60 60 } 61 62 }); 63 64 if (jQuery('.cubewp-date-range-picker').length > 0) {61 62 }); 63 64 if (jQuery('.cubewp-date-range-picker').length > 0) { 65 65 jQuery('.cubewp-date-range-picker').each(function () { 66 66 var $this = jQuery(this), 67 67 from = $this.find(".cubewp-date-range-picker-from") 68 .datepicker({ 69 dateFormat: "mm/dd/yy", 70 defaultDate: "+1w", changeMonth: true, numberOfMonths: 1 71 }) 72 .on("change", function () { 73 to.datepicker("option", "minDate", getDate(this)); 74 $this.find('.cubewp-date-range-picker-input').val(getDateRange(from, to)).trigger('input'); 75 }), 68 .datepicker({ 69 dateFormat: "mm/dd/yy", 70 defaultDate: "+1w", 71 changeMonth: true, 72 numberOfMonths: 1 73 }) 74 .on("change", function () { 75 to.datepicker("option", "minDate", getDate(this)); 76 $this.find('.cubewp-date-range-picker-input').val(getDateRange(from, to)).trigger('input'); 77 }), 76 78 to = $this.find(".cubewp-date-range-picker-to").datepicker({ 77 79 dateFormat: "mm/dd/yy", 78 defaultDate: "+1w", changeMonth: true, numberOfMonths: 1 80 defaultDate: "+1w", 81 changeMonth: true, 82 numberOfMonths: 1 79 83 }) 80 .on("change", function () {81 from.datepicker("option", "maxDate", getDate(this));82 $this.find('.cubewp-date-range-picker-input').val(getDateRange(from, to)).trigger('input');83 });84 .on("change", function () { 85 from.datepicker("option", "maxDate", getDate(this)); 86 $this.find('.cubewp-date-range-picker-input').val(getDateRange(from, to)).trigger('input'); 87 }); 84 88 }); 85 89 } 86 90 87 91 if (jQuery(".cubewp-date-range-picker-input").length > 0) { 88 jQuery(document).on("input", ".cubewp-date-range-picker-input", function () {92 jQuery(document).on("input", ".cubewp-date-range-picker-input", function () { 89 93 cwp_search_filters_ajax_content(); 90 94 }); 91 95 } 92 93 jQuery(document).on("change", '.cwp-search-filters input[type="radio"]', function () {96 97 jQuery(document).on("change", '.cwp-search-filters input[type="radio"]', function () { 94 98 jQuery(this).closest('.cwp-field-radio-container').find('input[type="radio"]').prop('checked', false); 95 99 jQuery(this).prop('checked', true); … … 99 103 cwp_search_filters_ajax_content(); 100 104 }); 101 105 102 106 // jQuery(document).on("change input", '.cwp-search-field .cwp-date-hidden-field', function() { 103 107 // cwp_search_filters_ajax_content(); 104 108 // }); 105 109 106 110 // jQuery(document).on("change", '.cwp-search-field .cwp-date-hidden-field', function() { 107 111 // cwp_search_filters_ajax_content(); 108 112 // }); 109 110 jQuery(document).on("cwp-address-change", '.cwp-search-field-google_address .address', function () {113 114 jQuery(document).on("cwp-address-change", '.cwp-search-field-google_address .address', function () { 111 115 clearTimeout(typingTimer); 112 116 typingTimer = setTimeout(cwp_search_filters_ajax_content, doneTypingInterval); 113 117 }); 114 118 jQuery(document).on('keyup', '.cwp-search-filters input[type="text"]', function (e) { 115 if (!jQuery(this).closest('.cwp-search-field').hasClass('cwp-search-field-google_address')){119 if (!jQuery(this).closest('.cwp-search-field').hasClass('cwp-search-field-google_address')) { 116 120 clearTimeout(typingTimer); 117 121 typingTimer = setTimeout(cwp_search_filters_ajax_content, doneTypingInterval); … … 122 126 typingTimer = setTimeout(cwp_search_filters_ajax_content, doneTypingInterval); 123 127 }); 124 125 jQuery(document).on("change", '.cwp-search-filters .cwp-address-range .range', function () {128 129 jQuery(document).on("change", '.cwp-search-filters .cwp-address-range .range', function () { 126 130 clearTimeout(typingTimer); 127 131 typingTimer = setTimeout(cwp_search_filters_ajax_content, doneTypingInterval); 128 132 }); 129 133 130 134 jQuery(document).on('change', '.cwp-field-switch-container input[type="checkbox"]', function () { 131 135 clearTimeout(typingTimer); … … 139 143 140 144 jQuery(document).on('click', '.cwp-search-filters .clear-filters', function (e) { 141 145 142 146 var PostType = jQuery(this).closest('.cwp-search-filters').find('.cwp-search-filters-fields input[name="post_type"]').val(); 143 147 jQuery(this).closest('.cwp-search-filters').find('.cwp-search-filters-fields input[type="text"]').val(''); 144 148 jQuery(this).closest('.cwp-search-filters').find('.cwp-search-filters-fields input[type="number"]').val(''); 145 149 jQuery(this).closest('.cwp-search-filters').find('.cwp-search-filters-fields input[type="cwp-date-range"]').val(''); 146 if (jQuery(this).closest('.cwp-search-filters').find('.cwp-search-filters-fields input[type="hidden"]').hasClass('is_tax')){150 if (jQuery(this).closest('.cwp-search-filters').find('.cwp-search-filters-fields input[type="hidden"]').hasClass('is_tax')) { 147 151 var currentVal = jQuery(this).closest('.cwp-search-filters').find('.is_tax').attr('data-current-tax'); 148 152 jQuery(this).closest('.cwp-search-filters').find('.is_tax').val(currentVal); 149 } else{153 } else { 150 154 jQuery(this).closest('.cwp-search-filters').find('.cwp-search-filters-fields input[type="hidden"]').val(''); 151 155 } … … 162 166 jQuery(this).closest('.cwp-search-filters').find('.cwp-search-filters-fields .cwp-search-field-google_address input[type="range"]').attr('type', 'hidden').removeAttr("value min max"); 163 167 } 164 168 165 169 var PostType = jQuery(this).closest('.cwp-search-filters').find('.cwp-search-filters-fields input[name="post_type"]').val(PostType); 166 170 if (jQuery(this).closest('.cwp-search-filters').find(".cwp-select2 select").length > 0) { 167 171 jQuery(this).closest('.cwp-search-filters').find(".cwp-select2 select").val(null).trigger("change"); 168 } else{172 } else { 169 173 cwp_search_filters_ajax_content(''); 170 174 } 171 172 }); 173 175 176 }); 177 174 178 cwp_search_filters_ajax_content(); 175 179 }); 176 180 177 function cubewp_posts_pagination_ajax( page_num ){181 function cubewp_posts_pagination_ajax(page_num) { 178 182 jQuery('#cwp-page-num').val(page_num); 179 cwp_search_filters_ajax_content(page_num, '');180 } 181 182 jQuery(document).on("change", '#cwp-order-filter', function () {183 cwp_search_filters_ajax_content(page_num, ''); 184 } 185 186 jQuery(document).on("change", '#cwp-order-filter', function () { 183 187 cwp_search_filters_ajax_content(); 184 188 }); 185 189 186 jQuery(document).on("change", '#cwp-sorting-filter', function () {190 jQuery(document).on("change", '#cwp-sorting-filter', function () { 187 191 var val = jQuery(this).val(); 188 192 if (val == 'rand') { … … 194 198 }); 195 199 196 function cwp_search_filters_ajax_content( page_num=''){200 function cwp_search_filters_ajax_content(page_num = '') { 197 201 198 202 // Loading SKeleton … … 207 211 let processingGrid = ''; 208 212 for (let i = 0; i < 6; i++) { 209 processingGrid += 213 processingGrid += 210 214 '<div class="cwp-col-md-4">' + 211 215 '<div class="cwp-processing-post-grid">' + … … 224 228 is_tax = FilterForm.find('.is_tax').val(); 225 229 226 page_num = page_num || 1; 230 page_num = page_num || 1; 227 231 228 232 var action = '&action=cwp_search_filters_ajax_content'; 229 233 230 FilterForm.find('input[name="page_num"]').val( page_num);234 FilterForm.find('input[name="page_num"]').val(page_num); 231 235 232 236 var FilterFields = FilterForm.serialize(); 233 234 if (jQuery('#cwp-order-filter').length > 0){235 FilterFields += '&order=' +jQuery('#cwp-order-filter').val();236 } 237 if (jQuery('#cwp-sorting-filter').length > 0){238 FilterFields += '&orderby=' +jQuery('#cwp-sorting-filter').val();237 238 if (jQuery('#cwp-order-filter').length > 0) { 239 FilterFields += '&order=' + jQuery('#cwp-order-filter').val(); 240 } 241 if (jQuery('#cwp-sorting-filter').length > 0) { 242 FilterFields += '&orderby=' + jQuery('#cwp-sorting-filter').val(); 239 243 } 240 244 var data_vals = FilterFields; 241 242 data_vals = urlCombine(data_vals, window.location.search);245 246 data_vals = urlCombine(data_vals, window.location.search); 243 247 data_vals = stripUrlParams(data_vals); 244 data_vals = data_vals.replace(/(?!s=)[^&]+=\.?(?:&|$)/g, function (match) {248 data_vals = data_vals.replace(/(?!s=)[^&]+=\.?(?:&|$)/g, function (match) { 245 249 return match.endsWith('&') ? '' : '&'; 246 250 }).replace(/&$/, ''); // remove all empty variables except s= and handle trailing '&' 247 251 248 252 data_vals = data_vals.replace('undefined', ''); // remove extra and empty variables 249 250 if(state !== 'page' && (is_tax == '' || is_tax == undefined)){ 251 var current_url = location.protocol + "//" + location.host + location.pathname + "?" + data_vals; 253 254 if (state !== 'page' && (is_tax == '' || is_tax == undefined)) { 255 // var current_url = location.protocol + "//" + location.host + location.pathname + "?" + data_vals; 256 // window.history.pushState(null, null, decodeURIComponent(current_url)); 257 var urlParams = new URLSearchParams(data_vals); 258 var promotionalKeys = []; 259 260 for (var key of urlParams.keys()) { 261 if (key.startsWith('cubewp_promotional_card_')) { 262 promotionalKeys.push(key); 263 } 264 } 265 266 promotionalKeys.forEach(function (key) { 267 urlParams.delete(key); 268 }); 269 270 var cleanParams = urlParams.toString(); 271 var current_url = location.protocol + "//" + location.host + location.pathname + (cleanParams ? "?" + cleanParams : ""); 252 272 window.history.pushState(null, null, decodeURIComponent(current_url)); 253 273 } … … 255 275 // Remove _ST_ from parameter names from query Strings like if there is a taxonomy property_type it will come in query string _ST_property_type 256 276 data_vals = stripPrefixFromParams(data_vals, '_ST_'); 257 277 258 278 jQuery.ajax({ 259 279 url: cwp_search_filters_params.ajax_url, 260 280 type: 'POST', 261 data: data_vals +action,281 data: data_vals + action, 262 282 dataType: "json", 263 283 success: function (response) { 264 if ( jQuery(".cwp-archive-container").length > 0 ){284 if (jQuery(".cwp-archive-container").length > 0) { 265 285 jQuery('html, body').animate({ 266 286 scrollTop: jQuery(".cwp-archive-container").offset().top - 100 … … 274 294 CWP_Cluster_Map(response.map_cordinates); 275 295 } 276 296 277 297 jQuery('.cwp-archive-container').removeClass('cwp-active-ajax'); 278 jQuery( document.body ).trigger( 'cubewp_search_results_loaded');279 } 280 }); 281 } 282 283 284 function urlCombine(a, b,overwrite=false){298 jQuery(document.body).trigger('cubewp_search_results_loaded'); 299 } 300 }); 301 } 302 303 304 function urlCombine(a, b, overwrite = false) { 285 305 a = new URLSearchParams(a); 286 let one =[];287 let i =0;306 let one = []; 307 let i = 0; 288 308 const fn = overwrite ? a.set : a.append; 289 for (let [key1, value1] of a){309 for (let [key1, value1] of a) { 290 310 one[i] = key1; 291 311 i++; 292 312 } 293 for (let [key2, value2] of new URLSearchParams(b)){294 if (jQuery.inArray( key2, one ) == -1){313 for (let [key2, value2] of new URLSearchParams(b)) { 314 if (jQuery.inArray(key2, one) == -1) { 295 315 fn.call(a, key2, value2); 296 316 } … … 300 320 301 321 function stripUrlParams(args) { 302 322 303 323 "use strict"; 304 324 var parts = args.split("&"); 305 325 306 326 var comps = {}; 307 327 for (var i = parts.length - 1; i >= 0; i--) { 308 328 var spl = parts[i].split("="); 309 329 // Overwrite only if existing is empty. 310 if (typeof comps[ spl[0] ] == "undefined" || (typeof comps[ spl[0] ] != "undefined" && comps[ spl[0]] == '')) {311 comps[ spl[0]] = spl[1];330 if (typeof comps[spl[0]] == "undefined" || (typeof comps[spl[0]] != "undefined" && comps[spl[0]] == '')) { 331 comps[spl[0]] = spl[1]; 312 332 } 313 333 } … … 322 342 function stripPrefixFromParams(params, prefix) { 323 343 let paramMap = new Map(); 324 344 325 345 // Split the query string into individual parameters 326 params.split('&').forEach(function (param) {346 params.split('&').forEach(function (param) { 327 347 let [key, value] = param.split('='); 328 348 329 349 // If the parameter starts with the prefix, remove it and store it in the map 330 350 if (key.startsWith(prefix)) { … … 344 364 345 365 346 function cwp_remove_string_value( list, value, separator) {366 function cwp_remove_string_value(list, value, separator) { 347 367 if (list === undefined) return false; 348 368 349 369 separator = separator || ","; 350 370 var values = list.split(separator); 351 for (var i = 0 ; i < values.length; i++) {352 if(values[i] == value) {353 values.splice(i, 1);354 return values.join(separator);355 }371 for (var i = 0; i < values.length; i++) { 372 if (values[i] == value) { 373 values.splice(i, 1); 374 return values.join(separator); 375 } 356 376 } 357 377 return list; 358 378 } 379 359 380 function getDateRange(from, to, separator = '-') { 360 381 var from_val = from.val(), 361 to_val = to.val();382 to_val = to.val(); 362 383 363 384 if (from_val === '' && to_val === '') return ''; … … 376 397 } 377 398 378 jQuery(document).ready(function (){379 if(jQuery(".listing-switcher").length > 0 ){380 jQuery(document).on("click", '.cwp-archive-toggle-Listing-style .listing-switcher', function () {381 $this = jQuery(this);382 if( $this.hasClass('list-view') ){383 cwp_setCookie( "cwp_archive_switcher", 'list-view' , 30);384 }else if( $this.hasClass('grid-view')) {385 cwp_setCookie("cwp_archive_switcher", 'grid-view', 30);386 }399 jQuery(document).ready(function () { 400 if (jQuery(".listing-switcher").length > 0) { 401 jQuery(document).on("click", '.cwp-archive-toggle-Listing-style .listing-switcher', function () { 402 $this = jQuery(this); 403 if ($this.hasClass('list-view')) { 404 cwp_setCookie("cwp_archive_switcher", 'list-view', 30); 405 } else if ($this.hasClass('grid-view')) { 406 cwp_setCookie("cwp_archive_switcher", 'grid-view', 30); 407 } 387 408 }); 388 409 } … … 392 413 jQuery(document).on('change', '.cwp-taxonomy-field', function () { 393 414 cwp_display_groups_meta_by_terms_onLoad(); 394 });415 }); 395 416 } 396 417 397 418 }); 398 419 399 function cwp_display_groups_meta_by_terms_onLoad() {420 function cwp_display_groups_meta_by_terms_onLoad() { 400 421 jQuery(".cwp-conditional-by-term").hide(); 401 jQuery(".cwp-taxonomy-field").each(function () {402 var thisObj = jQuery(this),403 type = thisObj.attr('type'),404 id = thisObj.attr('id'),422 jQuery(".cwp-taxonomy-field").each(function () { 423 var thisObj = jQuery(this), 424 type = thisObj.attr('type'), 425 id = thisObj.attr('id'), 405 426 val = ''; 406 if (type == 'checkbox') {407 if (thisObj.is(':checked')) {427 if (type == 'checkbox') { 428 if (thisObj.is(':checked')) { 408 429 var val = jQuery(this).val(); 409 430 } 410 } else {431 } else { 411 432 var val = jQuery(this).val(); 412 433 } 413 if (val != ''){414 cwp_display_groups_meta_by_terms(val, id);415 } 416 417 }); 418 } 419 420 function cwp_display_groups_meta_by_terms(objectVal, objectID){421 jQuery(".cwp-conditional-by-term").each(function () {422 var thisObj = jQuery(this);434 if (val != '') { 435 cwp_display_groups_meta_by_terms(val, id); 436 } 437 438 }); 439 } 440 441 function cwp_display_groups_meta_by_terms(objectVal, objectID) { 442 jQuery(".cwp-conditional-by-term").each(function () { 443 var thisObj = jQuery(this); 423 444 var group_terms = thisObj.data('terms'); 424 if ( typeof group_terms !== 'undefined' && group_terms !== '' ){445 if (typeof group_terms !== 'undefined' && group_terms !== '') { 425 446 var group_terms_arr = group_terms.toString().split(","); 426 if (Array.isArray(objectVal) && objectVal.length != 0){427 jQuery.each(objectVal, function (index, item) {428 if ( jQuery.inArray(item, group_terms_arr) != '-1' ){447 if (Array.isArray(objectVal) && objectVal.length != 0) { 448 jQuery.each(objectVal, function (index, item) { 449 if (jQuery.inArray(item, group_terms_arr) != '-1') { 429 450 thisObj.show(); 430 451 } 431 452 }.bind(this)); 432 } else if( jQuery.inArray(objectVal, group_terms_arr) != '-1' ){453 } else if (jQuery.inArray(objectVal, group_terms_arr) != '-1') { 433 454 thisObj.show(); 434 455 } … … 436 457 }); 437 458 } 438 459 439 460 function cwp_setCookie(cname, cvalue, exdays) { 440 const d = new Date();441 d.setTime(d.getTime() + (exdays*24*60*60*1000));442 let expires = "expires="+ d.toUTCString();443 document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";444 } 461 const d = new Date(); 462 d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); 463 let expires = "expires=" + d.toUTCString(); 464 document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; 465 } -
cubewp-framework/trunk/cube/classes/class-cubewp-add-ons.php
r3202079 r3362001 174 174 $Lkey = CWP()->cubewp_options($slug . '_key'); 175 175 $Lstatus = CWP()->cubewp_options($slug . '-status'); 176 177 if ($slug == 'cubewp-addon-woocommerce') { 178 $Lkey = '96baf6be5cb40a29137cb7fd90441f64'; 179 $Lstatus = 'valid'; 180 } 176 181 177 182 // Check if the transient exists -
cubewp-framework/trunk/cube/classes/class-cubewp-builder-ui.php
r3155340 r3362001 1 1 <?php 2 2 3 /** 3 4 * Builder UI trait is contains all markup for cubeWP builder. … … 9 10 */ 10 11 11 if ( ! defined( 'ABSPATH' )) {12 if (! defined('ABSPATH')) { 12 13 exit; 13 14 } 14 15 15 trait CubeWp_Builder_Ui { 16 trait CubeWp_Builder_Ui 17 { 16 18 17 19 public static $tab_options = array(); 18 20 19 21 /** 20 22 * Method CubeWp_Form_Builder … … 25 27 * @since 1.0.0 26 28 */ 27 protected static function CubeWp_Form_Builder(array $data) { 29 protected static function CubeWp_Form_Builder(array $data) 30 { 28 31 if (empty($data['form_type'])) { 29 32 return ''; … … 31 34 $form_type = $data['form_type']; 32 35 $data = self::builder_fields_parameters($data); 33 36 34 37 self::CubeWp_build_tab_options($data); 35 $builder_ui = '<div class="cubewp-content">';38 $builder_ui = '<div class="cubewp-content">'; 36 39 $builder_ui .= self::builder_header($data['page_title']); 37 40 $builder_ui .= '<section id="cwpform-builder" class="cwpform-builder cubewp-builder-' . $form_type . '">'; … … 40 43 $builder_ui .= self::CubeWp_build_content_switcher($data); 41 44 $builder_ui .= '<div class="cubewp-builder-sidebar-groups-widgets">'; 42 $builder_ui .= self::cubewp_builder_widgets_ui($form_type);45 $builder_ui .= self::cubewp_builder_widgets_ui($form_type); 43 46 $builder_ui .= '</div>'; 44 47 $builder_ui .= '</div>'; … … 57 60 return $builder_ui; 58 61 } 59 62 60 63 /** 61 64 * Method cubewp_builder_widgets_ui … … 66 69 * @since 1.0.0 67 70 */ 68 public static function cubewp_builder_widgets_ui(string $form_type) { 71 public static function cubewp_builder_widgets_ui(string $form_type) 72 { 69 73 $output = ''; 70 74 $options = self::$tab_options; … … 78 82 } 79 83 } 80 $output .= '<div class="cubewp-builder-widgets sidebar-type-' .$slug.' cubewp-tab-switcher-target cubewp-switcher-tab-' . $slug . '" data-form-type="' . $form_type . '" data-slug="' . $slug . '" data-child-switcher="' . implode(',',$nested_Switcher) . '">';81 //$output .= self::cubewp_builder_widgets_display('',$form_type,$slug);84 $output .= '<div class="cubewp-builder-widgets sidebar-type-' . $slug . ' cubewp-tab-switcher-target cubewp-switcher-tab-' . $slug . '" data-form-type="' . $form_type . '" data-slug="' . $slug . '" data-child-switcher="' . implode(',', $nested_Switcher) . '">'; 85 //$output .= self::cubewp_builder_widgets_display('',$form_type,$slug); 82 86 $output .= '</div>'; 83 87 } 84 88 } 85 return $output;86 }89 return $output; 90 } 87 91 88 92 /** … … 95 99 * @since 1.1.10 96 100 */ 97 public static function cubewp_builder_widgets_display(string $switcher, string $form_type, string $slug) { 101 public static function cubewp_builder_widgets_display(string $switcher, string $form_type, string $slug) 102 { 98 103 $output = ''; 99 104 if (!empty($switcher)) { 100 $switcher = explode(',', $switcher);105 $switcher = explode(',', $switcher); 101 106 foreach ($switcher as $id) { 102 $output .= '<div id="plan-' . $id . '" class="sidebar-plan-tab cubewp-tab-switcher-target cubewp-switcher-tab-' . $id . '" data-id="' .$id.'">';103 $output .= self::cubewp_builder_widgets($form_type, $slug);107 $output .= '<div id="plan-' . $id . '" class="sidebar-plan-tab cubewp-tab-switcher-target cubewp-switcher-tab-' . $id . '" data-id="' . $id . '">'; 108 $output .= self::cubewp_builder_widgets($form_type, $slug); 104 109 $output .= '</div>'; 105 110 } 106 } 107 else { 111 } else { 108 112 $output .= self::cubewp_builder_widgets($form_type, $slug); 109 113 } 110 114 return $output; 111 }112 115 } 116 113 117 /** 114 118 * Method cubewp_builder_widgets … … 120 124 * @since 1.0.0 121 125 */ 122 public static function cubewp_builder_widgets(string $form_type, string $slug) { 126 public static function cubewp_builder_widgets(string $form_type, string $slug) 127 { 123 128 $widgets_ui = ''; 124 129 $widgets_ui .= apply_filters("cubewp/builder/{$form_type}/default/fields", '', $slug); … … 126 131 if (class_exists("CubeWp_Frontend_Load")) { 127 132 $widgets_ui .= apply_filters("cubewp/builder/{$form_type}/group/fields", '', $slug); 128 } else {133 } else { 129 134 $widgets_ui .= self::cubewp_builder_pro_widgets_ui($slug); 130 135 } 136 $widgets_ui .= self::cubewp_builder_custom_cubes($form_type, $slug); 131 137 132 138 return $widgets_ui; 133 }139 } 134 140 135 141 /** … … 141 147 * @since 1.0.0 142 148 */ 143 public static function cubewp_builder_pro_widgets_ui($post_type) { 144 $widgets_ui = ''; 145 $groups = cwp_get_groups_by_post_type($post_type); 146 if (isset($groups) && !empty($groups) && count($groups) > 0) { 147 foreach ($groups as $group) { 148 $widgets_ui .= '<div id="group-' . rand(000000, 999999) . '" class="cubewp-builder-section cubewp-expand-container">'; 149 $widgets_ui .= '<div class="cubewp-builder-section-header">'; 150 $widgets_ui .= '<h3>' . esc_html(get_the_title($group)) . '</h3>'; 151 $widgets_ui .= '<a href="https://cubewp.com/cubewp-frontend-pro/" target="_blank"><span class="cubewp-pro-tag">' . esc_html__("PRO", "cubewp-framework") . '</span></a>'; 152 $widgets_ui .= '</div>'; 153 $widgets_ui .= '</div>'; 154 } 155 } 156 157 return $widgets_ui; 158 } 159 149 public static function cubewp_builder_pro_widgets_ui($post_type) 150 { 151 $widgets_ui = ''; 152 $groups = cwp_get_groups_by_post_type($post_type); 153 if (isset($groups) && !empty($groups) && count($groups) > 0) { 154 foreach ($groups as $group) { 155 $widgets_ui .= '<div id="group-' . rand(000000, 999999) . '" class="cubewp-builder-section cubewp-expand-container">'; 156 $widgets_ui .= '<div class="cubewp-builder-section-header">'; 157 $widgets_ui .= '<h3>' . esc_html(get_the_title($group)) . '</h3>'; 158 $widgets_ui .= '<a href="https://cubewp.com/cubewp-frontend-pro/" target="_blank"><span class="cubewp-pro-tag">' . esc_html__("PRO", "cubewp-framework") . '</span></a>'; 159 $widgets_ui .= '</div>'; 160 $widgets_ui .= '</div>'; 161 } 162 } 163 164 return $widgets_ui; 165 } 166 167 /** 168 * Method cubewp_builder_custom_cubes 169 * 170 * @param string $form_type 171 * @param string $post_type 172 * 173 * @return string 174 * @since 1.1.27 175 */ 176 public static function cubewp_builder_custom_cubes($form_type, $post_type) 177 { 178 $default_custom_cubes = apply_filters("cubewp/builder/{$form_type}/custom/cubes", [], $post_type); 179 if (!empty($default_custom_cubes) && is_array($default_custom_cubes)) { 180 $args = [ 181 'section_title' => esc_html__("CubeWP Custom Cubes", "cubewp-framework"), 182 'section_description' => '', 183 'section_class' => '', 184 'open_close_class' => 'close', 185 'form_relation' => $post_type, 186 'form_type' => $form_type, 187 'fields' => $default_custom_cubes, 188 ]; 189 $builder = new CubeWp_Form_Builder(); 190 return $builder->cwpform_form_section($args); 191 } 192 return ''; 193 } 194 160 195 /** 161 196 * Method builder_fields_parameters … … 166 201 * @since 1.0.0 167 202 */ 168 public static function builder_fields_parameters($args = array()) { 203 public static function builder_fields_parameters($args = array()) 204 { 169 205 $default = array( 170 206 'form_type' => '', … … 178 214 return wp_parse_args($args, $default); 179 215 } 180 216 181 217 /** 182 218 * Method CubeWp_build_tab_options … … 187 223 * @since 1.0.0 188 224 */ 189 protected static function CubeWp_build_tab_options(array $data) { 225 protected static function CubeWp_build_tab_options(array $data) 226 { 190 227 $return = array(); 191 228 if (isset($data['switcher_types']) && is_array($data['switcher_types']) && count($data['switcher_types']) > 0) { 192 229 $options = $data['switcher_types']; 193 230 foreach ($options as $slug => $title) { 194 $switcher = apply_filters("cubewp/builder/{$data['form_type']}/switcher", array(),$slug);231 $switcher = apply_filters("cubewp/builder/{$data['form_type']}/switcher", array(), $slug); 195 232 $return[$slug]["title"] = $title; 196 if (! empty($switcher) && is_array($switcher)) {197 $return[$slug]["switcher"] = $switcher;198 } else {199 $return[$slug]["switcher"] = false;200 }233 if (! empty($switcher) && is_array($switcher)) { 234 $return[$slug]["switcher"] = $switcher; 235 } else { 236 $return[$slug]["switcher"] = false; 237 } 201 238 } 202 239 } … … 205 242 self::$tab_options = $return; 206 243 } 207 244 208 245 /** 209 246 * Method builder_header … … 214 251 * @since 1.0.0 215 252 */ 216 protected static function builder_header($title = '') { 253 protected static function builder_header($title = '') 254 { 217 255 return ' 218 256 <ul id="size-list" class="hidden"> … … 229 267 </section>'; 230 268 } 231 269 232 270 /** 233 271 * Method cubewp_builder_title … … 238 276 * @since 1.0.0 239 277 */ 240 protected static function cubewp_builder_title($title = '') { 278 protected static function cubewp_builder_title($title = '') 279 { 241 280 // $navi = array( 242 281 // 'cubewp_post_types_form' => array( … … 254 293 // ); 255 294 // $nav = '<nav class="nav-tab-wrapper wp-clearfix"> 256 // <a class="nav-tab nav-tab-active" href="?page=cubewp-post-types-form">Post Type Forms</a>257 // <a class="nav-tab" href="?page=cubewp-user-registration-form">User Signup Forms</a>258 // <a class="nav-tab" href="?page=cubewp-user-profile-form">User Profile Forms</a>259 // </nav>';295 // <a class="nav-tab nav-tab-active" href="?page=cubewp-post-types-form">Post Type Forms</a> 296 // <a class="nav-tab" href="?page=cubewp-user-registration-form">User Signup Forms</a> 297 // <a class="nav-tab" href="?page=cubewp-user-profile-form">User Profile Forms</a> 298 // </nav>'; 260 299 //return "<div class='builder-title-nav'><h1>CubeWP Form Builders</h1>{$nav}</div>"; 261 300 return "<div class='builder-title-nav'><h1>CubeWP Form Builders</h1></div>"; 262 301 } 263 302 264 303 /** 265 304 * Method CubeWp_build_post_type_switcher … … 270 309 * @since 1.0.0 271 310 */ 272 protected static function CubeWp_build_post_type_switcher(array $data) { 311 protected static function CubeWp_build_post_type_switcher(array $data) 312 { 273 313 $title = $data['switcher_title']; 274 314 $options = self::$tab_options; 275 315 if (empty($options)) { 276 316 return '<h3 style="text-align: center;">' . esc_html__("No Custom Post Type Found.", "cubewp-framework") . '</h3>'; 277 }317 } 278 318 $name = "cubewp-builder-cpt"; 279 319 $class = "cubewp-tab-switcher cubewp-tab-switcher-trigger-on-load cubewp-tab-switcher-have-child"; … … 298 338 * @since 1.0.0 299 339 */ 300 protected static function CubeWp_build_content_switcher(array $data) { 340 protected static function CubeWp_build_content_switcher(array $data) 341 { 301 342 $output = null; 302 343 if (isset($data['form_type']) && $data['form_type'] == 'post_type') { … … 304 345 if (isset($options) && count($options) != 0) { 305 346 foreach ($options as $slug => $option) { 306 if ( ! $option['switcher']) {347 if (! $option['switcher']) { 307 348 continue; 308 349 } … … 320 361 } 321 362 $output .= '</select>'; 322 $output .= '</div>';363 $output .= '</div>'; 323 364 $output .= '</div>'; 324 365 } … … 329 370 return $output; 330 371 } 331 372 332 373 /** 333 374 * Method cubewp_builder_area_topbar … … 339 380 * @since 1.0.0 340 381 */ 341 protected static function cubewp_builder_area_topbar(string $slug = "", array $data = array()) { 342 $setting_btn = !empty(apply_filters("cubewp/builder/right/settings", '', $slug,$data)) ? self::builder_form_settings_btn($data['form_type']) : ''; 343 return '<div class="cubewp-builder-container-topbar"> 382 protected static function cubewp_builder_area_topbar(string $slug = "", array $data = array()) 383 { 384 $setting_btn = !empty(apply_filters("cubewp/builder/right/settings", '', $slug, $data)) ? self::builder_form_settings_btn($data['form_type']) : ''; 385 return '<div class="cubewp-builder-container-topbar"> 344 386 ' . $setting_btn . ' 345 387 ' . self::builder_add_Section() . ' 346 ' .self::builder_hidden_fields($slug, $data['form_type']).'388 ' . self::builder_hidden_fields($slug, $data['form_type']) . ' 347 389 </div>'; 348 }349 390 } 391 350 392 /** 351 393 * Method cubewp_builder_area … … 356 398 * @since 1.0.0 357 399 */ 358 protected static function cubewp_builder_area(array $data) { 359 $output = ''; 400 protected static function cubewp_builder_area(array $data) 401 { 402 $output = ''; 360 403 $options = self::$tab_options; 361 404 if (isset($options) && count($options) > 0) { 362 405 foreach ($options as $slug => $option) { 363 406 $output .= '<div id="type-' . esc_attr__($slug) . '" class="cubewp-type-container cubewp-switcher-tab-' . esc_attr__($slug) . ' cubewp-tab-switcher-target">'; 364 if ( ! $option["switcher"]) { 365 $output .= self::cubewp_builder_area_content($slug, $data); 366 }else { 367 $switcher = $option["switcher"]; 368 if (!empty($switcher) && isset($switcher['options'])) { 369 foreach ($switcher["options"] as $id => $val) { 370 $data['content_switcher'] = $id; 371 $data_type = self::cubewp_check_switcher_type($id); 372 $output .= '<div id="plan-' . esc_attr__($id) . '" class="cubewp-plan-tab cubewp-switcher-tab-' . esc_attr__($id) . ' cubewp-tab-switcher-target" data-id="' . esc_attr__($id) . '" '.$data_type.'>'; 373 $output .= self::cubewp_builder_area_content($slug, $data); 374 $output .= '</div>'; 375 } 407 if (! $option["switcher"]) { 408 $output .= self::cubewp_builder_area_content($slug, $data); 409 } else { 410 $switcher = $option["switcher"]; 411 if (!empty($switcher) && isset($switcher['options'])) { 412 foreach ($switcher["options"] as $id => $val) { 413 $data['content_switcher'] = $id; 414 $data_type = self::cubewp_check_switcher_type($id); 415 $output .= '<div id="plan-' . esc_attr__($id) . '" class="cubewp-plan-tab cubewp-switcher-tab-' . esc_attr__($id) . ' cubewp-tab-switcher-target" data-id="' . esc_attr__($id) . '" ' . $data_type . '>'; 416 $output .= self::cubewp_builder_area_content($slug, $data); 417 $output .= '</div>'; 376 418 } 377 } 419 } 420 } 378 421 $output .= '</div>'; 379 422 } 380 423 } 381 424 382 return $output;425 return $output; 383 426 } 384 427 … … 391 434 * @since 1.0.0 392 435 */ 393 protected static function cubewp_check_switcher_type($id = '') { 394 if( is_numeric($id) && !is_null(get_post($id)) && get_post_type( $id ) == 'price_plan'){ 436 protected static function cubewp_check_switcher_type($id = '') 437 { 438 if (is_numeric($id) && !is_null(get_post($id)) && get_post_type($id) == 'price_plan') { 395 439 return 'data-type="price_plan"'; 396 440 } 397 return 'data-type="' . $id .'"';398 } 399 441 return 'data-type="' . $id . '"'; 442 } 443 400 444 /** 401 445 * Method cubewp_builder_area_content … … 407 451 * @since 1.0.0 408 452 */ 409 protected static function cubewp_builder_area_content(string $slug, array $data) { 453 protected static function cubewp_builder_area_content(string $slug, array $data) 454 { 410 455 $output = ''; 411 456 if ($data['form_type'] == 'single_layout') { 412 457 $output .= self::cubewp_builder_area_topbar($slug, $data) . ' 413 458 <div class="cubewp-builder-area"> 414 ' . self::builder_settings($slug, $data) . '459 ' . self::builder_settings($slug, $data) . ' 415 460 <div class="cubewp-single-layout-builder-container single-layout-builder"> 416 461 <div class="cubewp-single-layout-builder-content"> … … 427 472 </div> 428 473 </div> 429 ' . self::cubewp_builder_no_section( false, $slug, $data) . '474 ' . self::cubewp_builder_no_section(false, $slug, $data) . ' 430 475 </div>'; 431 }else {476 } else { 432 477 $output .= self::cubewp_builder_area_topbar($slug, $data) . ' 433 478 <div class="cubewp-builder-area"> 434 ' . self::builder_settings($slug, $data) . '479 ' . self::builder_settings($slug, $data) . ' 435 480 <div class="cubewp-builder-sections"> 436 481 ' . apply_filters("cubewp/builder/default/right/section", '', $slug, $data) . ' 437 482 </div> 438 ' . self::cubewp_builder_no_section( false, $slug, $data) . '483 ' . self::cubewp_builder_no_section(false, $slug, $data) . ' 439 484 </div>'; 440 485 } 441 486 442 return $output;443 }444 487 return $output; 488 } 489 445 490 /** 446 491 * Method builder_hidden_fields … … 452 497 * @since 1.0.0 453 498 */ 454 protected static function builder_hidden_fields($key, $FormType) { 499 protected static function builder_hidden_fields($key, $FormType) 500 { 455 501 $output = ''; 456 502 $hidden_fields = array( … … 472 518 return $output; 473 519 } 474 520 475 521 /** 476 522 * Method builder_single_layout … … 481 527 * @since 1.0.0 482 528 */ 483 protected static function builder_single_layout(array $data) { 529 protected static function builder_single_layout(array $data) 530 { 484 531 $output = ''; 485 $options = self::$tab_options;532 $options = self::$tab_options; 486 533 if (isset($options) && count($options) > 0) { 487 534 foreach ($options as $slug => $option) { … … 489 536 $output .= self::cubewp_builder_area_content($slug, $data); 490 537 $output .= '</div>'; 491 }492 }else {538 } 539 } else { 493 540 $output .= '<div id="type-temp" class="cubewp-type-container cubewp-switcher-tab-temp cubewp-tab-switcher-target active-tab">'; 494 541 $output .= '<div class="cubewp-builder-area">'; … … 496 543 $output .= '</div>'; 497 544 $output .= '</div>'; 498 }499 500 return $output;501 } 502 545 } 546 547 return $output; 548 } 549 503 550 /** 504 551 * Method builder_add_Section … … 507 554 * @since 1.0.0 508 555 */ 509 protected static function builder_add_Section() { 510 if ( self::$FORM_TYPE != 'search_filters' && self::$FORM_TYPE != 'search_fields' ) { 511 return '<button class="button cwpform-add-section"> 556 protected static function builder_add_Section() 557 { 558 if (self::$FORM_TYPE != 'search_filters' && self::$FORM_TYPE != 'search_fields') { 559 return '<button class="button cwpform-add-section"> 512 560 <span class="dashicons dashicons-plus"></span> 513 ' . esc_html__( "Create Section", "cubewp-framework") . '561 ' . esc_html__("Create Section", "cubewp-framework") . ' 514 562 </button>'; 515 563 } … … 517 565 return ''; 518 566 } 519 567 520 568 /** 521 569 * Method builder_settings … … 527 575 * @since 1.0.0 528 576 */ 529 protected static function builder_settings(string $slug, array $data) { 577 protected static function builder_settings(string $slug, array $data) 578 { 530 579 return '<div class="form-settings" style="display:none;"> 531 ' . apply_filters("cubewp/builder/right/settings", '', $slug, $data) . '580 ' . apply_filters("cubewp/builder/right/settings", '', $slug, $data) . ' 532 581 </div>'; 533 582 } 534 583 535 584 /** 536 585 * Method builder_get_shortcode … … 539 588 * @since 1.0.0 540 589 */ 541 public static function builder_get_shortcode() { 590 public static function builder_get_shortcode() 591 { 542 592 if (empty(self::$tab_options)) { 543 593 return ''; … … 547 597 <div class="cwpform-shortcode"></div> 548 598 <button class="button-primary cwpform-get-shortcode"> 549 ' . $button_text .'599 ' . $button_text . ' 550 600 </button> 551 601 </div>'; 552 }553 602 } 603 554 604 /** 555 605 * Method builder_form_settings_btn … … 560 610 * @since 1.0.0 561 611 */ 562 protected static function builder_form_settings_btn($FormType) { 612 protected static function builder_form_settings_btn($FormType) 613 { 563 614 return '<button class="button form-settings-form"> 564 615 <span class="dashicons dashicons-admin-generic"></span> … … 572 623 * @return string html 573 624 * @since 1.0.0 574 */ 575 protected static function cubewp_builder_no_section( $no_cpt = FALSE, $post_type = '', $data = array() ) { 625 */ 626 protected static function cubewp_builder_no_section($no_cpt = FALSE, $post_type = '', $data = array()) 627 { 576 628 $FormType = self::$FORM_TYPE; 577 629 $output = ''; 578 if ( $FormType != 'search_filters' && $FormType != 'search_fields') {579 $output .= '<div class="cubewp-builder-no-section hidden">580 <img src="' . CWP_PLUGIN_URI . 'cube/assets/admin/images/no-section.png" alt="' . esc_html__( "No Section Image", "cubewp-framework") . '">';581 if ( ! $no_cpt) {582 $output .= '<h3>' . esc_html__( "Let's build something awesome today!", "cubewp-framework") . '</h3>';583 $output .= '<div class="cubewp-builder-no-section-steps">';584 if ( $FormType == 'post_type' || $FormType == 'single_layout') {585 $output .= '<p><span>' . esc_html__( "1", "cubewp-framework" ) . '</span>' . esc_html__( "Select a Post Type", "cubewp-framework") . '</p>';586 } else {587 $output .= '<p><span>' . esc_html__( "1", "cubewp-framework" ) . '</span>' . esc_html__( "Select a User Role", "cubewp-framework") . '</p>';588 }589 $output .= '<p><span>' . esc_html__( "2", "cubewp-framework" ) . '</span>' . esc_html__( "Create a Section", "cubewp-framework") . '</p>590 <p><span>' . esc_html__( "3", "cubewp-framework" ) . '</span>' . esc_html__( "Drag a Form Field", "cubewp-framework") . '</p>591 <p><span>' . esc_html__( "4", "cubewp-framework" ) . '</span>' . esc_html__( "Hit Save Changes", "cubewp-framework") . '</p>630 if ($FormType != 'search_filters' && $FormType != 'search_fields') { 631 $output .= '<div class="cubewp-builder-no-section hidden"> 632 <img src="' . CWP_PLUGIN_URI . 'cube/assets/admin/images/no-section.png" alt="' . esc_html__("No Section Image", "cubewp-framework") . '">'; 633 if (! $no_cpt) { 634 $output .= '<h3>' . esc_html__("Let's build something awesome today!", "cubewp-framework") . '</h3>'; 635 $output .= '<div class="cubewp-builder-no-section-steps">'; 636 if ($FormType == 'post_type' || $FormType == 'single_layout') { 637 $output .= '<p><span>' . esc_html__("1", "cubewp-framework") . '</span>' . esc_html__("Select a Post Type", "cubewp-framework") . '</p>'; 638 } else { 639 $output .= '<p><span>' . esc_html__("1", "cubewp-framework") . '</span>' . esc_html__("Select a User Role", "cubewp-framework") . '</p>'; 640 } 641 $output .= '<p><span>' . esc_html__("2", "cubewp-framework") . '</span>' . esc_html__("Create a Section", "cubewp-framework") . '</p> 642 <p><span>' . esc_html__("3", "cubewp-framework") . '</span>' . esc_html__("Drag a Form Field", "cubewp-framework") . '</p> 643 <p><span>' . esc_html__("4", "cubewp-framework") . '</span>' . esc_html__("Hit Save Changes", "cubewp-framework") . '</p> 592 644 </div> 593 645 <button class="button button-primary cubewp-trigger-add-section"> 594 646 <span class="dashicons dashicons-plus"></span> 595 ' . esc_html__( "Create Section", "cubewp-framework") . '647 ' . esc_html__("Create Section", "cubewp-framework") . ' 596 648 </button>'; 597 598 if ( ! empty( $data )) {599 $plans = apply_filters( "cubewp/builder/{$FormType}/switcher", array(), $post_type);600 if ( $FormType == 'post_type' && isset( $plans['options'] ) && !empty( $plans['options'])) {601 $plans_options = '';602 $post_type_form = CWP()->get_form( 'post_type');603 foreach ( $plans['options'] as $plan => $title) {604 if ( $plan == $data['content_switcher'] || ! isset( $post_type_form[ $post_type ][ $plan ]['groups'] ) || empty( $post_type_form[ $post_type ][ $plan ]['groups'] )) {605 continue;606 }607 if ( is_numeric( $plan )) {608 $plan_title = get_the_title( $plan);609 }else {610 $plan_title = $title;611 }612 $plans_options .= '<option value="' . $plan . '">' . esc_html( $plan_title) . '</option>';613 }614 if ( ! empty( $plans_options )) {615 $output .= '<div class="cubewp-builder-sections-importer">616 <label for="cubewp-builder-section-import-' . $data['content_switcher'] . '">' . esc_html__( "Or Copy Content From", "cubewp-framework") . '</label>649 650 if (! empty($data)) { 651 $plans = apply_filters("cubewp/builder/{$FormType}/switcher", array(), $post_type); 652 if ($FormType == 'post_type' && isset($plans['options']) && !empty($plans['options'])) { 653 $plans_options = ''; 654 $post_type_form = CWP()->get_form('post_type'); 655 foreach ($plans['options'] as $plan => $title) { 656 if ($plan == $data['content_switcher'] || ! isset($post_type_form[$post_type][$plan]['groups']) || empty($post_type_form[$post_type][$plan]['groups'])) { 657 continue; 658 } 659 if (is_numeric($plan)) { 660 $plan_title = get_the_title($plan); 661 } else { 662 $plan_title = $title; 663 } 664 $plans_options .= '<option value="' . $plan . '">' . esc_html($plan_title) . '</option>'; 665 } 666 if (! empty($plans_options)) { 667 $output .= '<div class="cubewp-builder-sections-importer"> 668 <label for="cubewp-builder-section-import-' . $data['content_switcher'] . '">' . esc_html__("Or Copy Content From", "cubewp-framework") . '</label> 617 669 <select id="cubewp-builder-section-import-' . $data['content_switcher'] . '" class="cubewp-builder-section-import">'; 618 $output .= $plans_options;619 $output .= '</select>670 $output .= $plans_options; 671 $output .= '</select> 620 672 <button class="button cwpform-import-sections"> 621 673 <span class="dashicons dashicons-admin-page"></span> 622 ' . esc_html__( "Copy", "cubewp-framework") . '674 ' . esc_html__("Copy", "cubewp-framework") . ' 623 675 </button> 624 676 </div>'; 677 } 625 678 } 626 } 627 } 628 629 } else { 630 $output .= '<h3>' . esc_html__( "No Custom Post Type Found.", "cubewp-framework" ) . '</h3>'; 631 } 632 $output .= '</div>'; 633 } 634 679 } 680 } else { 681 $output .= '<h3>' . esc_html__("No Custom Post Type Found.", "cubewp-framework") . '</h3>'; 682 } 683 $output .= '</div>'; 684 } 685 635 686 return $output; 636 687 } -
cubewp-framework/trunk/cube/classes/class-cubewp-load.php
r3349966 r3362001 23 23 * @var string 24 24 */ 25 public static $CubeWp_version = '1.1.2 6';25 public static $CubeWp_version = '1.1.27'; 26 26 27 27 /** -
cubewp-framework/trunk/cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-archive-posts-widget.php
r3339163 r3362001 1 1 <?php 2 defined( 'ABSPATH') || exit;2 defined('ABSPATH') || exit; 3 3 4 4 use Elementor\Controls_Manager; … … 14 14 */ 15 15 16 class CubeWp_Elementor_Archive_Posts_Widget extends Widget_Base { 16 class CubeWp_Elementor_Archive_Posts_Widget extends Widget_Base 17 { 17 18 18 19 private static $post_types = array(); 19 20 20 public function get_name() { 21 public function get_name() 22 { 21 23 return 'search_posts_widget'; 22 24 } 23 25 24 public function get_title() { 25 return __( 'Archive Posts Display', 'cubewp-framework' ); 26 } 27 28 public function get_icon() { 26 public function get_title() 27 { 28 return __('Archive Posts Display', 'cubewp-framework'); 29 } 30 31 public function get_icon() 32 { 29 33 return 'eicon-archive-posts'; 30 34 } 31 35 32 public function get_categories() { 33 return [ 'cubewp' ]; 34 } 35 36 protected function _register_controls() { 36 public function get_categories() 37 { 38 return ['cubewp']; 39 } 40 41 protected function register_controls() 42 { 37 43 self::get_post_types(); 38 44 39 45 40 46 $this->start_controls_section( 41 47 'section_map', 42 48 [ 43 'label' => __( 'Search Posts Settings', 'cubewp-framework'),49 'label' => __('Search Posts Settings', 'cubewp-framework'), 44 50 ] 45 51 ); 46 52 $this->add_post_type_controls(); 47 53 48 54 49 55 $this->end_controls_section(); 50 } 51 52 private static function get_post_types() { 53 $post_types = get_post_types(['public' => true], 'objects'); 56 57 $this->add_promotional_card_controls(); 58 } 59 60 private static function get_post_types() 61 { 62 $post_types = get_post_types(['public' => true], 'objects'); 54 63 $options = []; 55 64 foreach ($post_types as $post_type) { 56 65 $options[$post_type->name] = $post_type->label; 57 66 } 58 unset( $options['elementor_library'] ); 59 unset( $options['e-landing-page'] ); 60 unset( $options['attachment'] ); 61 unset( $options['page'] ); 62 63 self::$post_types = $options; 64 } 65 66 private static function get_post_type_name_by_slug($post_type_slug) { 67 $post_type_object = get_post_type_object($post_type_slug); 68 // Check if the post type object exists and return its label (name) 69 if ($post_type_object) { 70 return $post_type_object->label; 71 } 72 return null; 73 } 74 75 private function add_post_type_controls() { 76 $post_types = self::$post_types; 77 if ( is_array( $post_types ) && ! empty( $post_types ) ) { 78 $this->add_control( 'posttype', array( 79 'type' => Controls_Manager::SELECT2, 80 //'multiple' => true, 81 'label' => esc_html__( 'Select Post Types', 'cubewp-classifiad' ), 82 'options' => $post_types, 83 'default' => array( 'post' ), 84 'label_block' => true, 85 ) ); 86 foreach ( $post_types as $slug => $post_type ) { 87 $this->add_card_style_controls( $slug ); 88 } 89 } 90 } 91 92 private function add_card_style_controls($post_type) { 93 if(!empty(cubewp_post_card_styles($post_type))){ 94 $this->add_control( $post_type.'_card_style', array( 95 'type' => Controls_Manager::SELECT, 96 'label' => esc_html__( 'Card Style for '.self::get_post_type_name_by_slug($post_type), 'cubewp-framework' ), 97 'options' => cubewp_post_card_styles($post_type), 98 'default' => 'default_style', 99 'condition' => array( 100 'posttype' => $post_type 101 ) 102 ) ); 103 } 104 } 105 106 protected function render() { 67 unset($options['elementor_library']); 68 unset($options['e-landing-page']); 69 unset($options['attachment']); 70 unset($options['page']); 71 72 self::$post_types = $options; 73 } 74 75 private static function get_post_type_name_by_slug($post_type_slug) 76 { 77 $post_type_object = get_post_type_object($post_type_slug); 78 // Check if the post type object exists and return its label (name) 79 if ($post_type_object) { 80 return $post_type_object->label; 81 } 82 return null; 83 } 84 85 private function add_post_type_controls() 86 { 87 $post_types = self::$post_types; 88 if (is_array($post_types) && ! empty($post_types)) { 89 $this->add_control('posttype', array( 90 'type' => Controls_Manager::SELECT2, 91 //'multiple' => true, 92 'label' => esc_html__('Select Post Types', 'cubewp-classifiad'), 93 'options' => $post_types, 94 'default' => array('post'), 95 'label_block' => true, 96 )); 97 foreach ($post_types as $slug => $post_type) { 98 $this->add_card_style_controls($slug); 99 } 100 } 101 } 102 103 private function add_card_style_controls($post_type) 104 { 105 if (!empty(cubewp_post_card_styles($post_type))) { 106 $this->add_control($post_type . '_card_style', array( 107 'type' => Controls_Manager::SELECT, 108 'label' => esc_html__('Card Style for ' . self::get_post_type_name_by_slug($post_type), 'cubewp-framework'), 109 'options' => cubewp_post_card_styles($post_type), 110 'default' => 'default_style', 111 'condition' => array( 112 'posttype' => $post_type 113 ) 114 )); 115 } 116 } 117 118 private function add_promotional_card_controls() 119 { 120 global $cubewpOptions; 121 $posts_per_page = isset($cubewpOptions['posts_per_page']) ? (int)$cubewpOptions['posts_per_page'] : 10; 122 $this->start_controls_section('cubewp_widget_additional_setting_section', array( 123 'label' => esc_html__('Promotional Card Settings', 'cubewp-framework'), 124 'tab' => Controls_Manager::TAB_CONTENT, 125 )); 126 127 $this->add_control('cubewp_promotional_card', array( 128 'type' => Controls_Manager::SWITCHER, 129 'label' => esc_html__('Show Promotional Cards', 'cubewp-framework'), 130 'default' => 'no', 131 )); 132 133 // Create Repeater 134 $repeater_CARDS = new Repeater(); 135 136 $repeater_CARDS->add_control('cubewp_promotional_card_option', array( 137 'type' => Controls_Manager::SELECT, 138 'label' => esc_html__('Promotional Cards', 'cubewp-framework'), 139 'options' => cubewp_get_get_promotional_cards_list(), 140 )); 141 142 $repeater_CARDS->add_control('cubewp_promotional_card_position', array( 143 'type' => Controls_Manager::NUMBER, 144 'label' => esc_html__('Position', 'cubewp-framework'), 145 'default' => 3, 146 'placeholder' => esc_html__("3", "cubewp-framework"), 147 'min' => 1, 148 'max' => $posts_per_page, 149 )); 150 151 $repeater_CARDS->add_responsive_control('cubewp_promotional_card_width', array( 152 'label' => esc_html__('Width', 'cubewp-framework'), 153 'type' => Controls_Manager::SLIDER, 154 'size_units' => ['px', '%'], 155 'default' => [ 156 'unit' => '%', 157 'size' => 100, 158 ], 159 'range' => [ 160 'px' => [ 161 'min' => 50, 162 'max' => 1000, 163 ], 164 '%' => [ 165 'min' => 10, 166 'max' => 100, 167 ], 168 ], 169 'description' => esc_html__('Set the width of the card.', 'cubewp-framework'), 170 )); 171 172 // Add Repeater Control 173 $this->add_control('cubewp_promotional_cards_list', array( 174 'type' => Controls_Manager::REPEATER, 175 'label' => esc_html__('Promotional Cards List', 'cubewp-framework'), 176 'fields' => $repeater_CARDS->get_controls(), 177 'default' => [], 178 'title_field' => '{{{ cubewp_promotional_card_option }}}', 179 'condition' => [ 180 'cubewp_promotional_card' => 'yes', 181 ], 182 )); 183 184 $this->end_controls_section(); 185 } 186 187 protected function render() 188 { 107 189 $settings = $this->get_settings_for_display(); 108 $type = isset( $settings[ 'posttype' ] ) ? $settings[ 'posttype'] : '';109 $card_style = isset( $settings[ $type . '_card_style' ] ) ? $settings[ $type . '_card_style'] : '';190 $type = isset($settings['posttype']) ? $settings['posttype'] : ''; 191 $card_style = isset($settings[$type . '_card_style']) ? $settings[$type . '_card_style'] : ''; 110 192 $page_num = '1'; 111 193 112 CubeWp_Enqueue::enqueue_script( 'cwp-search-filters' ); 113 114 echo CubeWp_Frontend_Search_Filter::cwp_filter_results(); 194 $promotional_card = $settings['cubewp_promotional_card'] === 'yes' ? true : false; 195 $promotional_card_list = $settings['cubewp_promotional_cards_list']; 196 197 CubeWp_Enqueue::enqueue_script('cwp-search-filters'); 198 199 echo CubeWp_Frontend_Search_Filter::cwp_filter_results(); 115 200 echo '<form name="cwp-search-filters" class="cwp-search-filters" method="post">'; 116 echo CubeWp_Frontend_Search_Filter::filter_hidden_fields($type,$page_num,$card_style); 117 echo CubeWp_Frontend_Search_Filter::get_hidden_field_if_tax(); 201 echo CubeWp_Frontend_Search_Filter::filter_hidden_fields($type, $page_num, $card_style); 202 echo CubeWp_Frontend_Search_Filter::get_hidden_field_if_tax(); 203 $count = 1; 204 if ($promotional_card && !empty($promotional_card_list) && is_array($promotional_card_list)) { 205 foreach ($promotional_card_list as $_promotional_card) { 206 echo '<input type="hidden" class="cubewp-promotional-card" name="cubewp_promotional_card_option-'.$count.'" value="' . esc_attr($_promotional_card['cubewp_promotional_card_option']) . '" />'; 207 echo '<input type="hidden" class="cubewp-promotional-card" name="cubewp_promotional_card_position-'.$count.'" value="' . esc_attr($_promotional_card['cubewp_promotional_card_position']) . '" />'; 208 echo '<input type="hidden" class="cubewp-promotional-card" name="cubewp_promotional_card_width-'.$count.'" value="' . esc_attr($_promotional_card['cubewp_promotional_card_width']['size']) .esc_attr($_promotional_card['cubewp_promotional_card_width']['unit']). '" />'; 209 $count++; 210 } 211 } 118 212 echo '</form>'; 119 213 120 214 //Only to load data while editing in elementor 121 if ( cubewp_is_elementor_editing()){ 122 ?> 123 <script>cwp_search_filters_ajax_content();</script> 215 if (cubewp_is_elementor_editing()) { 216 ?> 217 <script> 218 cwp_search_filters_ajax_content(); 219 </script> 124 220 <?php 125 221 } -
cubewp-framework/trunk/cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php
r3339163 r3362001 143 143 )); 144 144 145 $this->add_responsive_control( 146 'posts_per_row', 147 [ 148 'label' => esc_html__('Posts Per Row', 'cubewp-framework'), 149 'type' => \Elementor\Controls_Manager::SELECT, 150 'default' => 'auto', 151 'condition' => [ 152 'layout' => 'grid', 153 ], 154 'device_args' => [ 155 \Elementor\Controls_Stack::RESPONSIVE_DESKTOP => [ 156 'default' => 'auto', 157 'options' => [ 158 'auto' => esc_html__('Auto', 'cubewp-framework'), 159 '1' => esc_html__('1 Column', 'cubewp-framework'), 160 '2' => esc_html__('2 Columns', 'cubewp-framework'), 161 '3' => esc_html__('3 Columns', 'cubewp-framework'), 162 '4' => esc_html__('4 Columns', 'cubewp-framework'), 163 '5' => esc_html__('5 Columns', 'cubewp-framework'), 164 '6' => esc_html__('6 Columns', 'cubewp-framework'), 165 ], 166 ], 167 \Elementor\Controls_Stack::RESPONSIVE_TABLET => [ 168 'default' => 'auto', 169 'options' => [ 170 'auto' => esc_html__('Auto', 'cubewp-framework'), 171 '1' => esc_html__('1 Column', 'cubewp-framework'), 172 '2' => esc_html__('2 Columns', 'cubewp-framework'), 173 '3' => esc_html__('3 Columns', 'cubewp-framework'), 174 '4' => esc_html__('4 Columns', 'cubewp-framework'), 175 '5' => esc_html__('5 Columns', 'cubewp-framework'), 176 '6' => esc_html__('6 Columns', 'cubewp-framework'), 177 ], 178 ], 179 \Elementor\Controls_Stack::RESPONSIVE_MOBILE => [ 180 'default' => 'auto', 181 'options' => [ 182 'auto' => esc_html__('Auto', 'cubewp-framework'), 183 '1' => esc_html__('1 Column', 'cubewp-framework'), 184 '2' => esc_html__('2 Columns', 'cubewp-framework'), 185 '3' => esc_html__('3 Columns', 'cubewp-framework'), 186 '4' => esc_html__('4 Columns', 'cubewp-framework'), 187 '5' => esc_html__('5 Columns', 'cubewp-framework'), 188 '6' => esc_html__('6 Columns', 'cubewp-framework'), 189 ], 190 ], 191 ], 192 'frontend_available' => true, 193 ] 194 ); 195 196 $this->add_responsive_control('processing_grids_per_row', array( 197 'type' => Controls_Manager::NUMBER, 198 'label' => esc_html__('Processing Grids Per Row', 'cubewp-framework'), 199 'default' => '4', 200 'condition' => array( 201 'posts_per_row' => 'auto', 202 ), 203 )); 204 205 145 206 $this->add_control('enable_scroll_on_small_devices', array( 146 207 'type' => Controls_Manager::SWITCHER, … … 187 248 'type' => Controls_Manager::SELECT2, 188 249 'label' => esc_html__('Select Custom Field', 'cubewp-framework'), 189 'options' => get_fields_by_type(array('number', 'text', 'checkbox', 'dropdown')),250 'options' => get_fields_by_type(array('number', 'text', 'checkbox', 'dropdown')), 190 251 'label_block' => true, 191 252 )); … … 239 300 $this->end_controls_section(); 240 301 $this->add_slider_controls(); 302 $this->add_promotional_card_controls(); 241 303 } 242 304 … … 436 498 if ($settings['enable_scroll_on_small_devices'] === 'yes') { 437 499 echo '<style> 438 @media (max-width: 767px) { 439 .elementor-element-' . $widget_id . ' .cwp-row { 440 overflow: scroll; 441 flex-wrap: nowrap; 442 } 500 @media (max-width: 767px) { 501 .elementor-element-' . $widget_id . ' .cwp-row { 502 overflow: scroll; 503 flex-wrap: nowrap; 443 504 } 444 </style>'; 505 } 506 </style>'; 445 507 } 446 447 $prev_icon = '';448 $prev_icon_type = false;449 if (!empty($settings['prev_icon']['value'])) {450 if ('svg' === $settings['prev_icon']['library']) {451 $prev_icon_url = esc_url($settings['prev_icon']['value']['url']);452 $prev_icon_content = file_get_contents($prev_icon_url);453 $prev_icon = $prev_icon_content;454 } else {455 $prev_icon = esc_attr($settings['prev_icon']['value']);456 $prev_icon_type = true;457 }458 }459 $next_icon = '';460 $next_icon_type = false;461 if (!empty($settings['next_icon']['value'])) {462 if ('svg' === $settings['next_icon']['library']) {463 $next_icon_url = esc_url($settings['next_icon']['value']['url']);464 $next_icon_content = file_get_contents($next_icon_url);465 $next_icon = $next_icon_content;466 } else {467 $next_icon = esc_attr($settings['next_icon']['value']);468 $next_icon_type = true;469 }470 }471 $slides_to_show = $settings['slides_to_show'];472 $slides_to_scroll = $settings['slides_to_scroll'];473 $slides_to_show_tablet = $settings['slides_to_show_tablet'];474 $slides_to_show_tablet_portrait = $settings['slides_to_show_tablet_portrait'];475 $slides_to_show_mobile = $settings['slides_to_show_mobile'];476 $slides_to_scroll_tablet = $settings['slides_to_scroll_tablet'];477 $slides_to_scroll_tablet_portrait = $settings['slides_to_scroll_tablet_portrait'];478 $slides_to_scroll_mobile = $settings['slides_to_scroll_mobile'];479 $autoplay = $settings['autoplay'] === 'yes' ? true : false;480 $autoplay_speed = $settings['autoplay_speed'];481 $speed = $settings['speed'];482 $enable_wrap_dots_arrows = $settings['enable_wrap_dots_arrows'] === 'yes' ? true : false;483 $infinite = $settings['infinite'] === 'yes' ? true : false;484 $fade_effect = $settings['fade_effect'] === 'yes' ? true : false;485 $variable_width = $settings['variable_width'] === 'yes' ? true : false;486 $custom_arrows = $settings['custom_arrows'] === 'yes' ? true : false;487 $custom_dots = $settings['custom_dots'] === 'yes' ? true : false;488 $enable_progress_bar = $settings['enable_progress_bar'] === 'yes' ? true : false;489 508 490 509 $args = array( 491 510 'post_type' => $settings['posttype'], 492 'taxonomy' => array(),493 'orderby' => $settings['orderby'],494 'order' => $settings['order'],511 'taxonomy' => array(), 512 'orderby' => $settings['orderby'], 513 'order' => $settings['order'], 495 514 'number_of_posts' => $settings['number_of_posts'], 496 'load_more' => $settings['load_more'], 497 'posts_per_page' => $settings['posts_per_page'], 498 'layout' => $settings['layout'], 499 'post__in' => array(), 500 'boosted_only' => 'no', 501 'paged' => '1', 515 'load_more' => $settings['load_more'], 516 'posts_per_page' => $settings['posts_per_page'], 517 'processing_grids_per_row' => $settings['processing_grids_per_row'], 518 'layout' => $settings['layout'], 519 'posts_per_row' => isset($settings['posts_per_row']) ? $settings['posts_per_row'] : 'auto', 520 'posts_per_row_tablet' => isset($settings['posts_per_row_tablet']) ? $settings['posts_per_row_tablet'] : 'auto', 521 'posts_per_row_mobile' => isset($settings['posts_per_row_mobile']) ? $settings['posts_per_row_mobile'] : 'auto', 522 'post__in' => array(), 523 'boosted_only' => 'no', 524 'paged' => '1', 502 525 'cwp_enable_slider' => $settings['cwp_enable_slider'] === 'yes' ? 'cubewp-post-slider' : '', 503 'prev_icon' => $prev_icon, 504 'next_icon' => $next_icon, 505 'next_icon_type' => $next_icon_type, 506 'prev_icon_type' => $prev_icon_type, 507 'slides_to_show' => $slides_to_show, 508 'slides_to_scroll' => $slides_to_scroll, 509 'slides_to_show_tablet' => $slides_to_show_tablet, 510 'slides_to_show_tablet_portrait' => $slides_to_show_tablet_portrait, 511 'slides_to_show_mobile' => $slides_to_show_mobile, 512 'slides_to_scroll_tablet' => $slides_to_scroll_tablet, 513 'slides_to_scroll_tablet_portrait' => $slides_to_scroll_tablet_portrait, 514 'slides_to_scroll_mobile' => $slides_to_scroll_mobile, 515 'autoplay' => $autoplay, 516 'autoplay_speed' => $autoplay_speed, 517 'speed' => $speed, 518 'infinite' => $infinite, 519 'fade_effect' => $fade_effect, 520 'variable_width' => $variable_width, 521 'custom_arrows' => $custom_arrows, 522 'custom_dots' => $custom_dots, 523 'enable_wrap_dots_arrows' => $enable_wrap_dots_arrows, 524 'enable_progress_bar' => $enable_progress_bar, 525 ); 526 'promotional_card' => $settings['cubewp_promotional_card'] === 'yes' ? true : false, 527 'promotional_cards' => $settings['cubewp_promotional_cards_list'], 528 ); 529 530 // Add slider parameters only if the slider is enabled 531 if ($settings['cwp_enable_slider'] === 'yes') { 532 $args = array_merge($args, array( 533 'prev_icon' => $settings['prev_icon']['value'] ?? '', 534 'next_icon' => $settings['next_icon']['value'] ?? '', 535 'slides_to_show' => $settings['slides_to_show'], 536 'slides_to_scroll' => $settings['slides_to_scroll'], 537 'slides_to_show_tablet' => $settings['slides_to_show_tablet'], 538 'slides_to_show_tablet_portrait' => $settings['slides_to_show_tablet_portrait'], 539 'slides_to_show_mobile' => $settings['slides_to_show_mobile'], 540 'slides_to_scroll_tablet' => $settings['slides_to_scroll_tablet'], 541 'slides_to_scroll_tablet_portrait' => $settings['slides_to_scroll_tablet_portrait'], 542 'slides_to_scroll_mobile' => $settings['slides_to_scroll_mobile'], 543 'autoplay' => $settings['autoplay'] === 'yes' ? true : false, 544 'autoplay_speed' => $settings['autoplay_speed'], 545 'speed' => $settings['speed'], 546 'infinite' => $settings['infinite'] === 'yes' ? true : false, 547 'fade_effect' => $settings['fade_effect'] === 'yes' ? true : false, 548 'variable_width' => $settings['variable_width'] === 'yes' ? true : false, 549 'custom_arrows' => $settings['custom_arrows'] === 'yes' ? true : false, 550 'custom_dots' => $settings['custom_dots'] === 'yes' ? true : false, 551 'enable_wrap_dots_arrows' => $settings['enable_wrap_dots_arrows'] === 'yes' ? true : false, 552 'enable_progress_bar' => $settings['enable_progress_bar'] === 'yes' ? true : false, 553 )); 554 } 526 555 527 556 if (is_array($settings['posttype']) && ($posts_by !== 'boosted' || $posts_by !== 'all')) { 528 557 foreach ($settings['posttype'] as $post_type) { 529 530 558 if ($posts_by == 'post_ids') { 531 559 $post_in = isset($settings[$post_type . '_post__in']) ? $settings[$post_type . '_post__in'] : ''; … … 542 570 } 543 571 } elseif ($posts_by == 'taxonomy') { 544 545 572 $terms = isset($settings['taxonomy-' . $post_type]) ? $settings['taxonomy-' . $post_type] : array(); 546 573 if (!empty($terms)) { … … 573 600 } 574 601 575 576 602 echo apply_filters('cubewp_shortcode_posts_output', '', $args); 577 603 } … … 1204 1230 1205 1231 $this->add_group_control( 1206 Group_Control_Box_Shadow::get_type(),1207 [1208 'name' => 'slider_arrow_box_shadow',1209 'label' => __('Arrow Box Shadow', 'value-pack'),1210 'selector' => '{{WRAPPER}} .cubewp-post-slider .slick-arrow',1211 'separator' => 'before',1212 ]1213 );1232 Group_Control_Box_Shadow::get_type(), 1233 [ 1234 'name' => 'slider_arrow_box_shadow', 1235 'label' => __('Arrow Box Shadow', 'value-pack'), 1236 'selector' => '{{WRAPPER}} .cubewp-post-slider .slick-arrow', 1237 'separator' => 'before', 1238 ] 1239 ); 1214 1240 1215 1241 $this->add_control( … … 2288 2314 $this->end_controls_section(); 2289 2315 } 2316 2317 private function add_promotional_card_controls() 2318 { 2319 $this->start_controls_section('cubewp_widget_additional_setting_section', array( 2320 'label' => esc_html__('Promotional Card Settings', 'cubewp-framework'), 2321 'tab' => Controls_Manager::TAB_CONTENT, 2322 )); 2323 2324 $this->add_control('cubewp_promotional_card', array( 2325 'type' => Controls_Manager::SWITCHER, 2326 'label' => esc_html__('Show Promotional Cards', 'cubewp-framework'), 2327 'default' => 'no', 2328 )); 2329 2330 // Create Repeater 2331 $repeater_CARDS = new Repeater(); 2332 2333 $repeater_CARDS->add_control('cubewp_promotional_card_option', array( 2334 'type' => Controls_Manager::SELECT, 2335 'label' => esc_html__('Promotional Cards', 'cubewp-framework'), 2336 'options' => cubewp_get_get_promotional_cards_list(), 2337 )); 2338 2339 $repeater_CARDS->add_control('cubewp_promotional_card_position', array( 2340 'type' => Controls_Manager::NUMBER, 2341 'label' => esc_html__('Position', 'cubewp-framework'), 2342 'default' => 3, 2343 'placeholder' => esc_html__("3", "cubewp-framework"), 2344 'min' => 1, 2345 )); 2346 2347 $repeater_CARDS->add_responsive_control('cubewp_promotional_card_width', array( 2348 'label' => esc_html__('Width', 'cubewp-framework'), 2349 'type' => Controls_Manager::SLIDER, 2350 'size_units' => ['px', '%'], 2351 'default' => [ 2352 'unit' => '%', 2353 'size' => 100, 2354 ], 2355 'range' => [ 2356 'px' => [ 2357 'min' => 50, 2358 'max' => 1000, 2359 ], 2360 '%' => [ 2361 'min' => 10, 2362 'max' => 100, 2363 ], 2364 ], 2365 'description' => esc_html__('Set the width of the card.', 'cubewp-framework'), 2366 )); 2367 2368 // Add Repeater Control 2369 $this->add_control('cubewp_promotional_cards_list', array( 2370 'type' => Controls_Manager::REPEATER, 2371 'label' => esc_html__('Promotional Cards List', 'cubewp-framework'), 2372 'fields' => $repeater_CARDS->get_controls(), 2373 'default' => [], 2374 'title_field' => '{{{ cubewp_promotional_card_option }}}', 2375 'condition' => [ 2376 'cubewp_promotional_card' => 'yes', 2377 ], 2378 )); 2379 2380 $this->end_controls_section(); 2381 } 2290 2382 } -
cubewp-framework/trunk/cube/classes/shortcodes/class-cubewp-shortcode-posts.php
r3339163 r3362001 16 16 new CubeWp_Ajax('', 'CubeWp_Shortcode_Posts', 'cubewp_posts_output'); 17 17 new CubeWp_Ajax('wp_ajax_nopriv_', 'CubeWp_Shortcode_Posts', 'cubewp_posts_output'); 18 add_action('wp_enqueue_scripts', [$this, 'cubewp_enqueue_slick_for_elementor'], 999); 19 add_action('elementor/editor/after_enqueue_scripts', [$this, 'cubewp_enqueue_slick_for_elementor']); 18 20 } 19 21 20 22 public static function cubewp_posts($output, array $parameters) 21 23 { 22 return self::cubewp_posts_output($parameters); 23 } 24 $cwp_enable_slider = isset($parameters['cwp_enable_slider']) ? $parameters['cwp_enable_slider'] : ''; 25 if ($cwp_enable_slider) { 26 CubeWp_Enqueue::enqueue_style('cubewp-slick'); 27 CubeWp_Enqueue::enqueue_script('cubewp-slick'); 28 } 29 if (cubewp_is_elementor_editing()) { 30 return self::cubewp_posts_output($parameters); 31 } 32 33 $slides_to_show = isset($parameters['slides_to_show']) ? intval($parameters['slides_to_show']) : 3; 34 $slides_to_show_tablet = isset($parameters['slides_to_show_tablet']) ? intval($parameters['slides_to_show_tablet']) : 2; 35 $slides_to_show_mobile = isset($parameters['slides_to_show_mobile']) ? intval($parameters['slides_to_show_mobile']) : 1; 36 $processing_grids_per_row = isset($parameters['processing_grids_per_row']) ? intval($parameters['processing_grids_per_row']) : 4; 37 38 $posts_per_row = isset($parameters['posts_per_row']) ? $parameters['posts_per_row'] : 'auto'; 39 $posts_per_row_tablet = (isset($parameters['posts_per_row_tablet']) && $parameters['posts_per_row_tablet'] !== 'auto') ? $parameters['posts_per_row_tablet'] : 3; 40 $posts_per_row_mobile = (isset($parameters['posts_per_row_mobile']) && $parameters['posts_per_row_mobile'] !== 'auto') ? $parameters['posts_per_row_mobile'] : 2; 41 42 if($cwp_enable_slider){ 43 $processing_grids_per_row = $slides_to_show; 44 $posts_per_row_tablet = $slides_to_show_tablet; 45 $posts_per_row_mobile = $slides_to_show_mobile; 46 } 47 48 $processing_grid_count = $processing_grids_per_row; 49 50 if ($posts_per_row !== 'auto' && !$cwp_enable_slider) { 51 $processing_grids_per_row = $posts_per_row; 52 $processing_grid_count = isset($parameters['number_of_posts']) ? $parameters['number_of_posts'] : 4; 53 } 54 55 $unique_id = uniqid('cubewp_posts_'); 56 57 // Container start 58 $output .= '<div id="' . esc_attr($unique_id) . '" class="cubewp-ajax-posts-container" data-parameters="' . htmlspecialchars(json_encode($parameters), ENT_QUOTES, 'UTF-8') . '"> 59 <div class="cubewp-processing-posts-container" style="display: flex; flex-wrap: wrap; gap: 10px;">'; 60 61 for ($i = 0; $i < $processing_grid_count; $i++) { 62 $output .= 63 '<div class="cwp-processing-post-grid">' 64 . '<div class="cwp-processing-post-thumbnail"></div>' 65 . '<div class="cwp-processing-post-content"><p></p><p></p><p></p></div>' 66 . '</div>'; 67 } 68 69 $output .= '</div></div>'; 70 71 //Dynamic CSS per instance 72 $output .= '<style> 73 #' . esc_attr($unique_id) . ' .cwp-processing-post-grid { 74 flex-basis: calc(100% / ' . esc_attr($processing_grids_per_row) . ' - 10px); 75 max-width: calc(100% / ' . esc_attr($processing_grids_per_row) . ' - 10px); 76 }'; 77 78 if ($posts_per_row_tablet !== 'auto') { 79 $output .= ' 80 @media (max-width: 1024px) { 81 #' . esc_attr($unique_id) . ' .cwp-processing-post-grid { 82 flex-basis: calc(100% / ' . esc_attr($posts_per_row_tablet) . ' - 10px); 83 max-width: calc(100% / ' . esc_attr($posts_per_row_tablet) . ' - 10px); 84 } 85 }'; 86 } 87 88 if ($posts_per_row_mobile !== 'auto') { 89 $output .= ' 90 @media (max-width: 767px) { 91 #' . esc_attr($unique_id) . ' .cwp-processing-post-grid { 92 flex-basis: calc(100% / ' . esc_attr($posts_per_row_mobile) . ' - 10px); 93 max-width: calc(100% / ' . esc_attr($posts_per_row_mobile) . ' - 10px); 94 } 95 }'; 96 } 97 98 $output .= '</style>'; 99 100 // Ajax loader 101 $output .= '<script type="text/javascript"> 102 jQuery(window).on("load", function () { 103 setTimeout(function () { 104 CubeWpShortcodePostsAjax.loadPosts("#' . esc_attr($unique_id) . '"); 105 }, 500); 106 }); 107 </script>'; 108 109 return $output; 110 } 111 24 112 25 113 public static function cubewp_posts_output($parameters) 26 114 { 27 28 // AJAX CALL 29 if (wp_doing_ajax() && isset($_REQUEST['action']) && $_REQUEST['action'] === 'cubewp_posts_output') { 30 // Set $parameters to $_POST if it's an AJAX request for 'cubewp_posts_output' 115 if (wp_doing_ajax() && isset($_REQUEST['action']) && $_REQUEST['action'] === 'cubewp_posts_output' && !cubewp_is_elementor_editing()) { 31 116 $parameters = $_POST; 32 117 } 33 118 34 119 $cwp_enable_slider = isset($parameters['cwp_enable_slider']) ? $parameters['cwp_enable_slider'] : ''; 35 $prev_icon = isset($parameters['prev_icon']) ? $parameters['prev_icon'] : 'fas fa-chevron-left'; 36 $next_icon = isset($parameters['next_icon']) ? $parameters['next_icon'] : 'fas fa-chevron-right'; 37 $slides_to_show = isset($parameters['slides_to_show']) ? intval($parameters['slides_to_show']) : 3; 38 $slides_to_scroll = isset($parameters['slides_to_scroll']) ? intval($parameters['slides_to_scroll']) : 1; 39 $slides_to_show_tablet = isset($parameters['slides_to_show_tablet']) ? intval($parameters['slides_to_show_tablet']) : 3; 40 $slides_to_show_tablet_portrait = isset($parameters['slides_to_show_tablet_portrait']) ? intval($parameters['slides_to_show_tablet_portrait']) : 2; 41 $slides_to_show_mobile = isset($parameters['slides_to_show_mobile']) ? intval($parameters['slides_to_show_mobile']) : 1; 42 $slides_to_scroll_tablet = isset($parameters['slides_to_scroll_tablet']) ? intval($parameters['slides_to_scroll_tablet']) : 1; 43 $slides_to_scroll_tablet_portrait = isset($parameters['slides_to_scroll_tablet_portrait']) ? intval($parameters['slides_to_scroll_tablet_portrait']) : 1; 44 $slides_to_scroll_mobile = isset($parameters['slides_to_scroll_mobile']) ? intval($parameters['slides_to_scroll_mobile']) : 1; 45 $autoplay = isset($parameters['autoplay']) && $parameters['autoplay'] ? 'true' : 'false'; 46 $autoplay_speed = isset($parameters['autoplay_speed']) ? intval($parameters['autoplay_speed']) : 2000; 47 $speed = isset($parameters['speed']) ? intval($parameters['speed']) : 500; 48 $infinite = isset($parameters['infinite']) && $parameters['infinite'] ? 'true' : 'false'; 49 $fade_effect = isset($parameters['fade_effect']) && $parameters['fade_effect'] ? 'true' : 'false'; 50 $variable_width = isset($parameters['variable_width']) && $parameters['variable_width'] ? 'true' : 'false'; 51 $custom_arrows = isset($parameters['custom_arrows']) && $parameters['custom_arrows'] ? 'true' : 'false'; 52 $custom_dots = isset($parameters['custom_dots']) && $parameters['custom_dots'] ? 'true' : 'false'; 53 $enable_progress_bar = isset($parameters['enable_progress_bar']) && $parameters['enable_progress_bar'] ? 'true' : 'false'; 54 $enable_wrap_dots_arrows = isset($parameters['enable_wrap_dots_arrows']) && $parameters['enable_wrap_dots_arrows'] ? 'true' : 'false'; 55 56 $next_icon_type = isset($parameters['next_icon_type']) && $parameters['next_icon_type'] ? 'true' : 'false'; 57 $prev_icon_type = isset($parameters['prev_icon_type']) && $parameters['prev_icon_type'] ? 'true' : 'false'; 120 if ($cwp_enable_slider) { 121 $prev_icon = isset($parameters['prev_icon']) ? $parameters['prev_icon'] : 'fas fa-chevron-left'; 122 $next_icon = isset($parameters['next_icon']) ? $parameters['next_icon'] : 'fas fa-chevron-right'; 123 $slides_to_show = isset($parameters['slides_to_show']) ? intval($parameters['slides_to_show']) : 3; 124 $slides_to_scroll = isset($parameters['slides_to_scroll']) ? intval($parameters['slides_to_scroll']) : 1; 125 $slides_to_show_tablet = isset($parameters['slides_to_show_tablet']) ? intval($parameters['slides_to_show_tablet']) : 3; 126 $slides_to_show_tablet_portrait = isset($parameters['slides_to_show_tablet_portrait']) ? intval($parameters['slides_to_show_tablet_portrait']) : 2; 127 $slides_to_show_mobile = isset($parameters['slides_to_show_mobile']) ? intval($parameters['slides_to_show_mobile']) : 1; 128 $slides_to_scroll_tablet = isset($parameters['slides_to_scroll_tablet']) ? intval($parameters['slides_to_scroll_tablet']) : 1; 129 $slides_to_scroll_tablet_portrait = isset($parameters['slides_to_scroll_tablet_portrait']) ? intval($parameters['slides_to_scroll_tablet_portrait']) : 1; 130 $slides_to_scroll_mobile = isset($parameters['slides_to_scroll_mobile']) ? intval($parameters['slides_to_scroll_mobile']) : 1; 131 $autoplay = isset($parameters['autoplay']) ? $parameters['autoplay'] : 'false'; 132 $autoplay_speed = isset($parameters['autoplay_speed']) ? intval($parameters['autoplay_speed']) : 2000; 133 $speed = isset($parameters['speed']) ? intval($parameters['speed']) : 500; 134 $infinite = (isset($parameters['infinite']) && $parameters['infinite'] === 'true') ? 'true' : 'false'; 135 $fade_effect = (isset($parameters['fade_effect']) && $parameters['fade_effect'] === 'true') ? 'true' : 'false'; 136 $variable_width = (isset($parameters['variable_width']) && $parameters['variable_width'] === 'true') ? 'true' : 'false'; 137 $custom_arrows = (isset($parameters['custom_arrows']) && $parameters['custom_arrows'] === 'true') ? 'true' : 'false'; 138 $enable_progress_bar = (isset($parameters['enable_progress_bar']) && $parameters['enable_progress_bar'] === 'true') ? 'true' : 'false'; 139 $custom_dots = (isset($parameters['custom_dots']) && $parameters['custom_dots'] === 'true') ? 'true' : 'false'; 140 $enable_wrap_dots_arrows = (isset($parameters['enable_wrap_dots_arrows']) && $parameters['enable_wrap_dots_arrows'] === 'true') ? 'true' : 'false'; 141 } 142 $promotional_card = $parameters['promotional_card']; 143 $promotional_card_list = $parameters['promotional_cards']; 58 144 59 145 $args = array( … … 65 151 ); 66 152 67 if (isset($parameters['number_of_posts'])) { 68 $args['posts_per_page'] = $parameters['number_of_posts']; 69 } 70 71 if (isset($parameters['posts_per_page'])) { 72 $args['posts_per_page'] = $parameters['posts_per_page']; 153 if (isset($parameters['number_of_posts']) && $parameters['number_of_posts'] !== '') { 154 $args['posts_per_page'] = intval($parameters['number_of_posts']); 155 } elseif (isset($parameters['posts_per_page']) && $parameters['posts_per_page'] !== '') { 156 $args['posts_per_page'] = intval($parameters['posts_per_page']); 73 157 } 74 158 … … 76 160 $args['page_num'] = $parameters['page_num']; 77 161 } 162 163 $posts_per_row = isset($parameters['posts_per_row']) ? $parameters['posts_per_row'] : 'auto'; 164 $posts_per_row_tablet = isset($parameters['posts_per_row_tablet']) ? $parameters['posts_per_row_tablet'] : 'auto'; 165 $posts_per_row_mobile = isset($parameters['posts_per_row_mobile']) ? $parameters['posts_per_row_mobile'] : 'auto'; 166 if ($cwp_enable_slider) { 167 $posts_per_row = $slides_to_show; 168 $posts_per_row_tablet = $slides_to_show_tablet; 169 $posts_per_row_mobile = $slides_to_show_mobile; 170 } 171 172 $posts_row_class = ''; 173 if ($posts_per_row !== 'auto' && $posts_per_row !== '' && $posts_per_row !== null) { 174 $desktop_val = intval($posts_per_row); 175 $tablet_val = ($posts_per_row_tablet === 'auto' || $posts_per_row_tablet === '' || !is_numeric($posts_per_row_tablet)) 176 ? $desktop_val 177 : intval($posts_per_row_tablet); 178 179 $mobile_val = ($posts_per_row_mobile === 'auto' || $posts_per_row_mobile === '' || !is_numeric($posts_per_row_mobile)) 180 ? $desktop_val 181 : intval($posts_per_row_mobile); 182 $posts_row_class = sprintf( 183 'cubewp-posts-row-%1$s cubewp-posts-row-tablet-%2$s cubewp-posts-row-mobile-%3$s', 184 $desktop_val, 185 $tablet_val, 186 $mobile_val 187 ); 188 } 189 190 78 191 79 192 $show_boosted_posts = ''; … … 110 223 } 111 224 225 226 112 227 $layout = $parameters['layout']; 113 228 $row_class = 'grid-view'; … … 121 236 $slider_class = $cwp_enable_slider === 'cubewp-post-slider' ? 'cubewp-post-slider' : ''; 122 237 $container_open = '<div class="cubewp-posts-shortcode cwp-row ' . esc_attr($slider_class) . '"'; 123 $container_open .= ' data-prev-arrow="' . esc_attr($prev_icon) . '"'; 124 $container_open .= ' data-next-arrow="' . esc_attr($next_icon) . '"'; 125 $container_open .= ' data-prev-icon-type="' . esc_attr($prev_icon_type) . '"'; 126 $container_open .= ' data-next-icon-type="' . esc_attr($next_icon_type) . '"'; 127 $container_open .= ' data-slides-to-show="' . esc_attr($slides_to_show) . '"'; 128 $container_open .= ' data-slides-to-scroll="' . esc_attr($slides_to_scroll) . '"'; 129 $container_open .= ' data-slides-to-show-tablet="' . esc_attr($slides_to_show_tablet) . '"'; 130 $container_open .= ' data-slides-show-tablet-portrait="' . esc_attr($slides_to_show_tablet_portrait) . '"'; 131 $container_open .= ' data-slides-to-show-mobile="' . esc_attr($slides_to_show_mobile) . '"'; 132 $container_open .= ' data-slides-to-scroll-tablet="' . esc_attr($slides_to_scroll_tablet) . '"'; 133 $container_open .= ' data-slides-scroll-tablet-portrait="' . esc_attr($slides_to_scroll_tablet_portrait) . '"'; 134 $container_open .= ' data-slides-to-scroll-mobile="' . esc_attr($slides_to_scroll_mobile) . '"'; 135 $container_open .= ' data-autoplay="' . esc_attr($autoplay) . '"'; 136 $container_open .= ' data-autoplay-speed="' . esc_attr($autoplay_speed) . '"'; 137 $container_open .= ' data-speed="' . esc_attr($speed) . '"'; 138 $container_open .= ' data-infinite="' . esc_attr($infinite) . '"'; 139 $container_open .= ' data-fade="' . esc_attr($fade_effect) . '"'; 140 $container_open .= ' data-variable-width="' . esc_attr($variable_width) . '"'; 141 $container_open .= ' data-custom-arrows="' . esc_attr($custom_arrows) . '"'; 142 $container_open .= ' data-custom-dots="' . esc_attr($custom_dots) . '"'; 143 $container_open .= ' data-enable-progress-bar="' . esc_attr($enable_progress_bar) . '"'; 144 $container_open .= ' data-enable-wrapper="' . esc_attr($enable_wrap_dots_arrows) . '"'; 238 if ($cwp_enable_slider) { 239 240 $prev_icon = self::cubewp_get_svg_content($prev_icon); 241 $next_icon = self::cubewp_get_svg_content($next_icon); 242 243 $is_prev_svg = strpos(trim($prev_icon), '<svg') === 0; 244 $is_next_svg = strpos(trim($next_icon), '<svg') === 0; 245 246 if ($is_prev_svg) { 247 248 $container_open .= " data-prev-arrow-svg='" . $prev_icon . "'"; 249 $container_open .= ' data-is-prev-svg="true"'; 250 } else { 251 $container_open .= ' data-prev-arrow="' . esc_attr($prev_icon) . '"'; 252 $container_open .= ' data-is-prev-svg="false"'; 253 } 254 255 if ($is_next_svg) { 256 $container_open .= " data-next-arrow-svg='" . $next_icon . "'"; 257 $container_open .= ' data-is-next-svg="true"'; 258 } else { 259 $container_open .= ' data-next-arrow="' . esc_attr($next_icon) . '"'; 260 $container_open .= ' data-is-next-svg="false"'; 261 } 262 263 264 265 $container_open .= ' data-slides-to-show="' . esc_attr($slides_to_show) . '"'; 266 $container_open .= ' data-slides-to-scroll="' . esc_attr($slides_to_scroll) . '"'; 267 $container_open .= ' data-slides-to-show-tablet="' . esc_attr($slides_to_show_tablet) . '"'; 268 $container_open .= ' data-slides-show-tablet-portrait="' . esc_attr($slides_to_show_tablet_portrait) . '"'; 269 $container_open .= ' data-slides-to-show-mobile="' . esc_attr($slides_to_show_mobile) . '"'; 270 $container_open .= ' data-slides-to-scroll-tablet="' . esc_attr($slides_to_scroll_tablet) . '"'; 271 $container_open .= ' data-slides-scroll-tablet-portrait="' . esc_attr($slides_to_scroll_tablet_portrait) . '"'; 272 $container_open .= ' data-slides-to-scroll-mobile="' . esc_attr($slides_to_scroll_mobile) . '"'; 273 $container_open .= ' data-autoplay="' . esc_attr($autoplay) . '"'; 274 $container_open .= ' data-autoplay-speed="' . esc_attr($autoplay_speed) . '"'; 275 $container_open .= ' data-speed="' . esc_attr($speed) . '"'; 276 $container_open .= ' data-infinite="' . esc_attr($infinite) . '"'; 277 $container_open .= ' data-fade="' . esc_attr($fade_effect) . '"'; 278 $container_open .= ' data-variable-width="' . esc_attr($variable_width) . '"'; 279 $container_open .= ' data-custom-arrows="' . esc_attr($custom_arrows) . '"'; 280 $container_open .= ' data-custom-dots="' . esc_attr($custom_dots) . '"'; 281 $container_open .= ' data-enable-progress-bar="' . esc_attr($enable_progress_bar) . '"'; 282 $container_open .= ' data-enable-wrapper="' . esc_attr($enable_wrap_dots_arrows) . '"'; 283 } 145 284 $container_open .= '>'; 146 285 $container_close = '</div>'; 147 286 287 $counter = 1; 288 $has_more_posts = false; 148 289 if ($posts->have_posts()) { 149 CubeWp_Enqueue::enqueue_style('cubewp-slick'); 150 CubeWp_Enqueue::enqueue_script('cubewp-slick'); 290 if ($posts_row_class) { 291 add_filter('post_class', function ($classes) use ($posts_row_class) { 292 $classes[] = $posts_row_class; 293 return $classes; 294 }); 295 } 296 $post_markup = $container_open; 297 $promotional_cards = []; 298 if ($promotional_card && !empty($promotional_card_list) && is_array($promotional_card_list)) { 299 foreach ($promotional_card_list as $promotional_card) { 300 // Check required keys exist and are valid 301 if (isset($promotional_card['cubewp_promotional_card_option'])) { 302 $option = $promotional_card['cubewp_promotional_card_option']; 303 $width = $promotional_card['cubewp_promotional_card_width']['size'] . $promotional_card['cubewp_promotional_card_width']['unit']; 304 $position = $promotional_card['cubewp_promotional_card_position']; 305 306 $promotional_cards[$position] = [ 307 'option' => $option, 308 'width' => $width, 309 ]; 310 } 311 } 312 } 151 313 if ($show_boosted_posts == 'yes') { 152 314 if (class_exists('CubeWp_Booster_Load')) { … … 156 318 if (function_exists('is_boosted')) { 157 319 if (is_boosted(get_the_ID())) { 320 if ($promotional_card && isset($promotional_cards[$counter]) && !empty($promotional_cards[$counter])) { 321 $promotional_cardID = $promotional_cards[$counter]['option']; 322 $width = $promotional_cards[$counter]['width']; 323 $post_markup .= cubewp_promotional_card_output($promotional_cardID, $width); 324 } 325 $counter++; 158 326 $post_markup .= CubeWp_frontend_grid_HTML(get_the_ID(), '', $style); 159 327 } … … 165 333 $post_type = get_post_type(get_the_ID()); 166 334 $style = isset($parameters['card_style'][$post_type]) ? $parameters['card_style'][$post_type] : ''; 335 if ($promotional_card && isset($promotional_cards[$counter]) && !empty($promotional_cards[$counter])) { 336 $promotional_cardID = $promotional_cards[$counter]['option']; 337 $width = $promotional_cards[$counter]['width']; 338 $post_markup .= cubewp_promotional_card_output($promotional_cardID, $width); 339 } 340 $counter++; 167 341 $post_markup .= CubeWp_frontend_grid_HTML(get_the_ID(), '', $style); 168 342 endwhile; … … 185 359 </div>'; 186 360 } 361 $post_markup .= $container_close; 362 if ($posts_row_class) { 363 remove_all_filters('post_class'); // or remove using the closure reference if needed 364 } 187 365 } else { 188 366 $post_markup = self::cwp_no_result_found(); … … 190 368 wp_reset_query(); 191 369 192 if (wp_doing_ajax() && isset($_REQUEST['action']) && $_REQUEST['action'] === 'cubewp_posts_output' ) {370 if (wp_doing_ajax() && isset($_REQUEST['action']) && $_REQUEST['action'] === 'cubewp_posts_output' && !cubewp_is_elementor_editing()) { 193 371 wp_send_json_success(array('content' => $post_markup, 'newAttributes' => $parameters, 'has_more_posts' => $has_more_posts)); 194 372 } else { 195 return $ container_open . $post_markup . $container_close. $load_btn;373 return $post_markup . $load_btn; 196 374 } 197 375 } … … 208 386 $output = '<div class="cwp-widget-shortcode">'; 209 387 if (! empty($title)) { 210 $output .= '<h2 class="cwp-widget-shortcode-heading">' . $title . '</h2>'; 211 } 212 $output .= apply_filters('cubewp_shortcode_posts_output', '', $parameters); 388 $output .= '<h2 class="cwp-widget-shortcode-heading">' . esc_html($title) . '</h2>'; 389 } 390 if (isset($parameters['load_via_ajax']) && $parameters['load_via_ajax'] === 'yes' && !wp_doing_ajax()) { 391 $unique_id = uniqid('cubewp_posts_'); 392 $output .= '<div id="' . esc_attr($unique_id) . '" class="cubewp-ajax-posts-container" data-parameters="' . wp_json_encode($parameters) . '"> 393 <div class="cubewp-processing-card"> 394 <div class="cubewp-processing-card-inner"> 395 <div class="cubewp-processing-card-icon"> 396 <i class="fas fa-spinner fa-spin"></i> 397 </div> 398 <div class="cubewp-processing-card-text"> 399 Processing... 400 </div> 401 </div> 402 </div> 403 </div>'; 404 $output .= '<script type="text/javascript"> 405 jQuery(window).on("load", function () { 406 setTimeout(function () { 407 CubeWpShortcodePostsAjax.loadPosts("#' . esc_attr($unique_id) . '"); 408 }, 1000); // 1000ms = 1 second 409 }); 410 </script>'; 411 } else { 412 $output .= apply_filters('cubewp_shortcode_posts_output', '', $parameters); 413 } 213 414 $output .= '</div>'; 214 415 … … 220 421 return '<div class="cwp-empty-search"><img class="cwp-empty-search-img" src="' . esc_url(CWP_PLUGIN_URI . 'cube/assets/frontend/images/no-result.png') . '" alt=""><h2>' . esc_html__('No Results Found', 'cubewp-framework') . '</h2><p>' . esc_html__('There are no results matching your search.', 'cubewp-framework') . '</p></div>'; 221 422 } 423 424 private static function cubewp_get_svg_content($icon) 425 { 426 // If icon is array with 'url', fetch the content 427 if (is_array($icon) && isset($icon['url'])) { 428 $response = wp_safe_remote_get($icon['url']); 429 if (!is_wp_error($response) && 200 === wp_remote_retrieve_response_code($response)) { 430 return wp_remote_retrieve_body($response); 431 } 432 return ''; // fallback if fetch fails 433 } 434 435 // If icon is string, return it 436 if (is_string($icon)) { 437 return $icon; 438 } 439 440 return ''; // fallback 441 } 442 443 public function cubewp_enqueue_slick_for_elementor() 444 { 445 $is_elementor_editor = false; 446 447 // Method 1: Check URL parameters 448 if (isset($_GET['action']) && $_GET['action'] === 'elementor') { 449 $is_elementor_editor = true; 450 } 451 452 // Method 2: Check for elementor-preview parameter 453 if (isset($_GET['elementor-preview'])) { 454 $is_elementor_editor = true; 455 } 456 457 // Method 3: Check if Elementor editor is in edit mode 458 if ( 459 class_exists('\Elementor\Plugin') && 460 isset(\Elementor\Plugin::$instance) && 461 \Elementor\Plugin::$instance->editor && 462 \Elementor\Plugin::$instance->editor->is_edit_mode() 463 ) { 464 $is_elementor_editor = true; 465 } 466 467 // Enqueue only if in Elementor editor 468 if ($is_elementor_editor) { 469 CubeWp_Enqueue::enqueue_style('cubewp-slick'); 470 CubeWp_Enqueue::enqueue_script('cubewp-slick'); 471 } 472 } 222 473 } -
cubewp-framework/trunk/cube/classes/shortcodes/class-cubewp-shortcode-taxonomy.php
r2844650 r3362001 1 1 <?php 2 defined( 'ABSPATH') || exit;2 defined('ABSPATH') || exit; 3 3 4 4 /** … … 7 7 * @class CubeWp_Frontend_Taxonomy_Shortcode 8 8 */ 9 class CubeWp_Shortcode_Taxonomy { 10 public function __construct() { 11 add_shortcode( 'cubewp_shortcode_taxonomy', array( $this, 'cubewp_shortcode_taxonomy_callback' ) ); 12 add_filter( 'cubewp_shortcode_taxonomy_output', array( $this, 'cubewp_taxonomy_output' ), 10, 2 ); 13 } 14 15 public static function cubewp_taxonomy_output( $output, $parameters = array()) { 16 if(empty($parameters) || count($parameters) == 0) 17 return; 18 19 wp_enqueue_style( 'cwp-taxonomy-shortcode' ); 9 class CubeWp_Shortcode_Taxonomy 10 { 11 public function __construct() 12 { 13 add_shortcode('cubewp_shortcode_taxonomy', array($this, 'cubewp_shortcode_taxonomy_callback')); 14 add_filter('cubewp_shortcode_taxonomy_output', array($this, 'cubewp_taxonomy_output'), 10, 2); 15 } 16 17 public static function cubewp_taxonomy_output($output, $parameters = array()) 18 { 19 if (empty($parameters) || count($parameters) == 0) 20 return; 21 22 wp_enqueue_style('cwp-taxonomy-shortcode'); 20 23 $taxonomy = isset($parameters['taxonomy']) ? $parameters['taxonomy'] : ''; 21 if (empty($taxonomy))22 return;24 if (empty($taxonomy)) 25 return; 23 26 24 27 $terms_per_page = $parameters['terms_per_page']; … … 32 35 $hide_empty = false; 33 36 $col_class = ''; 34 if ( $_child_terms == 'yes') {37 if ($_child_terms == 'yes') { 35 38 $child_terms = true; 36 39 } 37 if ( $_hide_empty == 'yes') {40 if ($_hide_empty == 'yes') { 38 41 $hide_empty = true; 39 42 } 40 if ( $column_per_row == '0') {43 if ($column_per_row == '0') { 41 44 $col_class = 'cwp-col-12 cwp-col-md-auto'; 42 45 } 43 if ( $column_per_row == '1') {46 if ($column_per_row == '1') { 44 47 $col_class = 'cwp-col-12'; 45 48 } 46 if ( $column_per_row == '2') {49 if ($column_per_row == '2') { 47 50 $col_class = 'cwp-col-12 cwp-col-md-6'; 48 51 } 49 if ( $column_per_row == '3') {52 if ($column_per_row == '3') { 50 53 $col_class = 'cwp-col-12 cwp-col-md-6 cwp-col-lg-4'; 51 54 } 52 if ( $column_per_row == '4') {55 if ($column_per_row == '4') { 53 56 $col_class = 'cwp-col-12 cwp-col-md-6 cwp-col-lg-3'; 54 57 } 55 if ( $column_per_row == '6') {58 if ($column_per_row == '6') { 56 59 $col_class = 'cwp-col-12 cwp-col-md-6 cwp-col-lg-2'; 57 60 } … … 62 65 'number' => $terms_per_page, 63 66 ); 64 $terms = get_terms( $args);67 $terms = get_terms($args); 65 68 ob_start(); 66 if ( ! empty( $terms ) && is_array( $terms )) {69 if (! empty($terms) && is_array($terms)) { 67 70 $counter = 0; 68 ?>69 <div class="cwp-row">70 <?php foreach ( $terms as $term) {71 ?> 72 <div class="cwp-row"> 73 <?php foreach ($terms as $term) { 71 74 $term_id = $term->term_id; 72 75 $term_name = $term->name; 73 if ( $output_style == 'boxed_view' ) { 74 $color_count = count( $terms_box_color ); 75 $icon_media = get_term_meta( $term_id, $icon_media_name, true ); 76 $color = $terms_box_color[ $counter ]['term_box_color']; 77 $counter ++; 78 if ( $counter >= $color_count ) { 76 if ($output_style == 'boxed_view') { 77 $color_count = count($terms_box_color); 78 $icon_media = get_term_meta($term_id, $icon_media_name, true); 79 $color = isset($terms_box_color[$counter]['term_box_color']) 80 ? sanitize_hex_color($terms_box_color[$counter]['term_box_color']) 81 : '#000000'; 82 $counter++; 83 if ($counter >= $color_count) { 79 84 $counter = 0; 80 85 } 81 ?>82 <div class="<?php echo esc_attr( $col_class); ?>">83 <div class="cwp-taxonomy-term-box">84 <div class="cwp-taxonomy-term-box-heading"85 style="background-color: <?php echo esc_html( $color); ?>">86 ?> 87 <div class="<?php echo esc_attr($col_class); ?>"> 88 <div class="cwp-taxonomy-term-box"> 89 <div class="cwp-taxonomy-term-box-heading" 90 style="background-color: <?php echo esc_html($color); ?>"> 86 91 <?php 87 if ( ! is_array( $icon_media )) {88 if ( $icon_media != strip_tags( $icon_media )) {89 echo cubewp_core_data( $icon_media);90 } else if ( is_numeric( $icon_media )) {91 $icon_media = wp_get_attachment_url( $icon_media);92 echo '<img src="' . esc_attr($icon_media) . '" alt="' . esc_attr($term_name) . '">92 if (! is_array($icon_media)) { 93 if ($icon_media != strip_tags($icon_media)) { 94 echo cubewp_core_data($icon_media); 95 } else if (is_numeric($icon_media)) { 96 $icon_media = wp_get_attachment_url($icon_media); 97 echo '<img src="' . esc_url($icon_media) . '" alt="' . esc_attr($term_name) . '"> 93 98 <div class="cwp-taxonomy-term-box-heading-overlay" style="background-color: ' . esc_attr($color) . ';"></div>'; 94 99 } else { 95 echo '<i class="' . esc_attr($icon_media) . '" aria-hidden="true"></i>';100 echo '<i class="' . esc_attr($icon_media) . '" aria-hidden="true"></i>'; 96 101 } 97 }102 } 98 103 ?> 99 <a href="<?php echo get_term_link( $term_id )?>"><?php echo esc_html( $term_name ); ?></a>100 </div>104 <a href="<?php echo esc_url( get_term_link( $term_id ) ); ?>"><?php echo esc_html( $term_name ); ?></a> 105 </div> 101 106 <?php 102 if ( $child_terms) {107 if ($child_terms) { 103 108 $term_child_args = array( 104 109 'taxonomy' => $taxonomy, … … 106 111 'parent' => $term_id, 107 112 ); 108 $term_childs = get_terms( $term_child_args);109 if ( ! empty( $term_childs ) && is_array( $term_childs )) {110 ?>111 <ul class="cwp-taxonomy-term-child-terms">113 $term_childs = get_terms($term_child_args); 114 if (! empty($term_childs) && is_array($term_childs)) { 115 ?> 116 <ul class="cwp-taxonomy-term-child-terms"> 112 117 <?php 113 $child_terms_count = count( $term_childs);118 $child_terms_count = count($term_childs); 114 119 $term_counter = 1; 115 foreach ( $term_childs as $term_child) {120 foreach ($term_childs as $term_child) { 116 121 $child_term_id = $term_child->term_id; 117 122 $child_term_name = $term_child->name; 118 if ( $child_terms_count > 5 && 5 == $term_counter) {119 ?>120 <li>121 <a href="#"122 class="cwp-taxonomy-term-child-terms-see-more"123 data-more="<?php esc_html_e( "View More", "cubewp-framework"); ?>"124 data-less="<?php esc_html_e( "View Less", "cubewp-framework" ); ?>"><?php esc_html_e( "View More", "cubewp-framework"); ?></a>125 </li>126 <ul class="cwp-taxonomy-term-child-terms-more">123 if ($child_terms_count > 5 && 5 == $term_counter) { 124 ?> 125 <li> 126 <a href="#" 127 class="cwp-taxonomy-term-child-terms-see-more" 128 data-more="<?php esc_html_e("View More", "cubewp-framework"); ?>" 129 data-less="<?php esc_html_e("View Less", "cubewp-framework"); ?>"><?php esc_html_e("View More", "cubewp-framework"); ?></a> 130 </li> 131 <ul class="cwp-taxonomy-term-child-terms-more"> 127 132 <?php 128 133 } 129 ?>130 <li>131 <a href="<?php echo get_term_link( $child_term_id ) ?>"><?php echo esc_html( $child_term_name ); ?></a>132 </li>133 <?php134 if ( $child_terms_count > 5 && $child_terms_count == $term_counter ) {135 134 ?> 136 </ul> 135 <li> 136 <a href="<?php echo get_term_link($child_term_id) ?>"><?php echo esc_html($child_term_name); ?></a> 137 </li> 137 138 <?php 139 if ($child_terms_count > 5 && $child_terms_count == $term_counter) { 140 ?> 141 </ul> 142 <?php 143 } 144 $term_counter++; 138 145 } 139 $term_counter ++; 140 } 141 ?> 142 </ul> 143 <?php 146 ?> 147 </ul> 148 <?php 144 149 } 145 150 } 146 151 ?> 147 </div>148 </div>149 <?php150 } else if ( $output_style == 'list_view') {151 ?>152 <div class="<?php esc_attr_e( $col_class); ?>">153 <div class="cwp-taxonomy-term-list">154 <a href="<?php echo get_term_link( $term_id ) ?>"><?php echo esc_html( $term_name); ?></a>152 </div> 153 </div> 154 <?php 155 } else if ($output_style == 'list_view') { 156 ?> 157 <div class="<?php esc_attr_e($col_class); ?>"> 158 <div class="cwp-taxonomy-term-list"> 159 <a href="<?php echo get_term_link($term_id) ?>"><?php echo esc_html($term_name); ?></a> 155 160 <?php 156 if ( $child_terms) {161 if ($child_terms) { 157 162 $term_child_args = array( 158 163 'taxonomy' => $taxonomy, … … 160 165 'parent' => $term_id, 161 166 ); 162 $term_childs = get_terms( $term_child_args);163 if ( ! empty( $term_childs ) && is_array( $term_childs )) {164 ?>165 <ul><?php166 foreach ( $term_childs as $term_child) {167 $child_term_id = $term_child->term_id;168 $child_term_name = $term_child->name;169 ?> 170 <li>171 <a href="<?php echo get_term_link( $child_term_id ) ?>"><?php echo esc_html( $child_term_name); ?></a>172 </li>167 $term_childs = get_terms($term_child_args); 168 if (! empty($term_childs) && is_array($term_childs)) { 169 ?> 170 <ul><?php 171 foreach ($term_childs as $term_child) { 172 $child_term_id = $term_child->term_id; 173 $child_term_name = $term_child->name; 174 ?> 175 <li> 176 <a href="<?php echo get_term_link($child_term_id) ?>"><?php echo esc_html($child_term_name); ?></a> 177 </li> 173 178 <?php 179 } 180 ?> 181 </ul><?php 182 } 174 183 } 175 ?> 176 </ul><?php 177 } 178 } 179 ?> 180 </div> 181 </div> 182 <?php 184 ?> 185 </div> 186 </div> 187 <?php 183 188 } 184 189 } ?> 185 </div>186 <?php190 </div> 191 <?php 187 192 } 188 193 … … 190 195 } 191 196 192 public static function init() { 197 public static function init() 198 { 193 199 $CubeWPClass = __CLASS__; 194 200 new $CubeWPClass; 195 201 } 196 202 197 public function cubewp_shortcode_taxonomy_callback( $parameters ) { 198 $title = isset( $parameters['title'] ) ? $parameters['title'] : ''; 203 public function cubewp_shortcode_taxonomy_callback($parameters) 204 { 205 $title = isset($parameters['title']) ? sanitize_text_field($parameters['title']) : ''; 199 206 $output = '<div class="cwp-widget-shortcode">'; 200 if ( ! empty( $title ) ) { 201 $output .= '<h2 class="cwp-widget-shortcode-heading">' . $title . '</h2>'; 202 } 203 $output .= apply_filters( 'cubewp_shortcode_taxonomy_output', '', $parameters ); 207 208 if (! empty($title)) { 209 $output .= '<h2 class="cwp-widget-shortcode-heading">' . esc_html($title) . '</h2>'; 210 } 211 212 $output .= apply_filters('cubewp_shortcode_taxonomy_output', '', $parameters); 204 213 $output .= '</div>'; 205 214 -
cubewp-framework/trunk/cube/functions/admin-functions.php
r3339163 r3362001 622 622 <?php } ?> 623 623 </ul> 624 <?php624 <?php 625 625 return ob_get_clean(); 626 626 } … … 2883 2883 add_action('elementor/frontend/before_render', 'render_cubewp_mega_menu_options', 25); 2884 2884 } 2885 2886 if (!function_exists('cubewp_get_get_promotional_cards_list')) { 2887 function cubewp_get_get_promotional_cards_list() 2888 { 2889 $args = array( 2890 'post_type' => 'cubewp-tb', 2891 'meta_query' => array( 2892 array('key' => 'template_location', 'value' => 'cubewp_post_loop_promotional_card', 'compare' => '=',), 2893 ), 2894 'posts_per_page' => -1, 2895 ); 2896 2897 $posts = get_posts($args); 2898 $cubewp_promotional_cards = []; 2899 2900 foreach ($posts as $post) { 2901 $cubewp_promotional_cards[$post->ID] = array($post->post_title); 2902 } 2903 2904 return $cubewp_promotional_cards; 2905 } 2906 } 2907 2908 if (!function_exists('cubewp_promotional_card_output')) { 2909 function cubewp_promotional_card_output($promotional_cardID, $width) 2910 { 2911 ob_start(); 2912 2913 if (empty($width) || empty($promotional_cardID)) { 2914 return ''; 2915 } 2916 ?> 2917 <div style="width:<?php echo esc_attr($width); ?>"> 2918 <?php 2919 if (class_exists('\Elementor\Plugin') && \Elementor\Plugin::$instance->documents) { 2920 $document = \Elementor\Plugin::$instance->documents->get($promotional_cardID); 2921 if ($document && $document->is_built_with_elementor()) { 2922 echo \Elementor\Plugin::$instance->frontend->get_builder_content_for_display($promotional_cardID); 2923 } 2924 } 2925 ?> 2926 </div> 2927 <?php 2928 2929 return ob_get_clean(); 2930 } 2931 } -
cubewp-framework/trunk/cube/modules/custom-fields/class-cubewp-custom-fields-markup.php
r3155340 r3362001 1038 1038 ); 1039 1039 1040 $field_settings = apply_filters('cubewp/custom_fields/single/subfield/add', $field_settings, $FieldData );1040 $field_settings = apply_filters('cubewp/custom_fields/single/subfield/add', $field_settings, $FieldData, $parent_field); 1041 1041 $field_name = !empty($FieldData['label']) ? $FieldData['label'] : esc_html__('Field Label', 'cubewp-framework'); 1042 1042 $closed_class = (isset($FieldData['label']) && $FieldData['label'] != '') ? 'closed' : ''; -
cubewp-framework/trunk/cube/modules/search/class-cubewp-search-ajax-hooks.php
r3155340 r3362001 1 1 <?php 2 2 3 /** 3 4 * display fields of custom fields. … … 7 8 */ 8 9 9 if ( ! defined( 'ABSPATH' )) {10 if (! defined('ABSPATH')) { 10 11 exit; 11 12 } … … 14 15 * CubeWp_Search_Ajax_Hooks 15 16 */ 16 class CubeWp_Search_Ajax_Hooks{ 17 17 class CubeWp_Search_Ajax_Hooks 18 { 19 18 20 private static $terms = null; 19 21 20 22 /** 21 23 * Method cwp_search_filters_ajax_content … … 24 26 * @since 1.0.0 25 27 */ 26 public static function cwp_search_filters_ajax_content(){ 28 public static function cwp_search_filters_ajax_content() 29 { 27 30 global $cwpOptions; 28 31 $archive_map = isset($cwpOptions['archive_map']) ? $cwpOptions['archive_map'] : 1; 29 32 $archive_filters = isset($cwpOptions['archive_filters']) ? $cwpOptions['archive_filters'] : 1; 30 $posts_per_page = isset($cwpOptions['archive_posts_per_page']) ? $cwpOptions['archive_posts_per_page'] : 10;33 $posts_per_page = isset($cwpOptions['archive_posts_per_page']) ? $cwpOptions['archive_posts_per_page'] : 10; 31 34 $grid_class = 'cwp-col-12 cwp-col-md-6'; 32 if ( ! $archive_map || ! $archive_filters) {35 if (! $archive_map || ! $archive_filters) { 33 36 $grid_class = 'cwp-col-12 cwp-col-md-4'; 34 37 } 35 38 $latLng = array(); 36 39 $post_data = CubeWp_Sanitize_text_Array($_POST); 37 40 38 41 $post_type = isset($post_data['post_type']) ? $post_data['post_type'] : ''; 39 42 40 $post_data['posts_per_page'] = apply_filters( 'cubewp/search/post_per_page', $posts_per_page, $post_data);43 $post_data['posts_per_page'] = apply_filters('cubewp/search/post_per_page', $posts_per_page, $post_data); 41 44 42 $_DATA = apply_filters('cubewp/search/query/update', $post_data,sanitize_text_field($post_type));43 45 $_DATA = apply_filters('cubewp/search/query/update', $post_data, sanitize_text_field($post_type)); 46 44 47 $page_num = isset($_DATA['page_num']) ? $_DATA['page_num'] : 1; 45 48 $post_type = isset($_DATA['post_type']) ? $_DATA['post_type'] : ''; … … 49 52 $query = new CubeWp_Query($_DATA); 50 53 $the_query = $query->cubewp_post_query(); 51 54 55 56 52 57 $grid_view_html = ''; 53 if ($the_query->have_posts()){58 if ($the_query->have_posts()) { 54 59 ob_start(); 55 $data_args = array( 56 'total_posts' => $the_query->found_posts, 57 'terms' => self::$terms, 58 'data' => $_DATA, 59 ); 60 $data = apply_filters('cubewp_frontend_search_data', '', $data_args); 61 echo apply_filters('cubewp/frontend/before/search/loop', ''); 62 ?> 63 <div class="cwp-grids-container cwp-row <?php echo esc_attr(cwp_get_post_card_view()); ?>"> 60 $data_args = array( 61 'total_posts' => $the_query->found_posts, 62 'terms' => self::$terms, 63 'data' => $_DATA, 64 ); 65 $data = apply_filters('cubewp_frontend_search_data', '', $data_args); 66 echo apply_filters('cubewp/frontend/before/search/loop', ''); 67 68 $promotional_cards = []; 69 foreach ($_DATA as $key => $value) { 70 if (strpos($key, 'cubewp_promotional_card_option-') !== false) { 71 preg_match('/-(\d+)$/', $key, $matches); 72 $index = $matches[1] ?? null; 73 if ($index !== null && isset($_DATA["cubewp_promotional_card_position-$index"])) { 74 $position = $_DATA["cubewp_promotional_card_position-$index"] ?? null; 75 if ($position !== null) { 76 $promotional_cards[$position] = [ 77 'option' => $value, // direct value (string now) 78 'width' => $_DATA["cubewp_promotional_card_width-$index"] ?? '', 79 ]; 80 } 81 } 82 } 83 } 84 85 ?> 86 <div class="cwp-grids-container cwp-row <?php echo esc_attr(cwp_get_post_card_view()); ?>"> 64 87 <?php 65 while($the_query->have_posts()): $the_query->the_post(); 66 if(get_the_ID()){ 67 if(!empty(self::cwp_map_lat_lng(get_the_ID()))){ 88 $counter = 1; 89 while ($the_query->have_posts()): $the_query->the_post(); 90 if (get_the_ID()) { 91 if (!empty(self::cwp_map_lat_lng(get_the_ID()))) { 68 92 $latLng[] = self::cwp_map_lat_lng(get_the_ID()); 69 93 } 70 echo CubeWp_frontend_grid_HTML(get_the_ID(), $grid_class,$style); 94 if (isset($promotional_cards[$counter]) && !empty($promotional_cards[$counter])) { 95 $promotional_cardID = $promotional_cards[$counter]['option']; 96 $width = $promotional_cards[$counter]['width']; 97 echo cubewp_promotional_card_output($promotional_cardID, $width); 98 } 99 echo CubeWp_frontend_grid_HTML(get_the_ID(), $grid_class, $style); 100 $counter++; 71 101 } 72 endwhile;102 endwhile; 73 103 ?> 74 </div>75 <?php76 $pagination_args = array(77 'total_posts' => $the_query->found_posts,78 'posts_per_page' => $post_per_page,79 'page_num' => $page_num80 );81 echo apply_filters('cubewp_frontend_posts_pagination', '', $pagination_args);82 echo apply_filters('cubewp/frontend/after/search/loop', '');83 $grid_view_html = ob_get_contents();104 </div> 105 <?php 106 $pagination_args = array( 107 'total_posts' => $the_query->found_posts, 108 'posts_per_page' => $post_per_page, 109 'page_num' => $page_num 110 ); 111 echo apply_filters('cubewp_frontend_posts_pagination', '', $pagination_args); 112 echo apply_filters('cubewp/frontend/after/search/loop', ''); 113 $grid_view_html = ob_get_contents(); 84 114 ob_end_clean(); 85 } else{115 } else { 86 116 $grid_view_html = self::cwp_no_result_found(); 87 117 } 88 118 wp_reset_query(); 89 if(empty($latLng)) $latLng = ''; 90 if(empty($data)) $data = ''; 91 92 wp_send_json( array( 'post_data_details' => $data, 'map_cordinates' => $latLng, 'grid_view_html' => $grid_view_html ) ); 93 119 if (empty($latLng)) $latLng = ''; 120 if (empty($data)) $data = ''; 121 122 wp_send_json(array('post_data_details' => $data, 'map_cordinates' => $latLng, 'grid_view_html' => $grid_view_html)); 94 123 } 95 96 public static function cwp_map_lat_lng($postid=''){ 97 $Map=array(); 98 $map_meta_key = self::cwp_map_meta_key(get_post_type( $postid )); 99 if($map_meta_key && !empty($map_meta_key) && !empty($postid)){ 100 $Lat = get_post_meta($postid, $map_meta_key.'_lat', true); 101 $Lng = get_post_meta($postid, $map_meta_key.'_lng', true); 102 if(!empty($Lat) && !empty($Lng)){ 124 125 public static function cwp_map_lat_lng($postid = '') 126 { 127 $Map = array(); 128 $map_meta_key = self::cwp_map_meta_key(get_post_type($postid)); 129 if ($map_meta_key && !empty($map_meta_key) && !empty($postid)) { 130 $Lat = get_post_meta($postid, $map_meta_key . '_lat', true); 131 $Lng = get_post_meta($postid, $map_meta_key . '_lng', true); 132 if (!empty($Lat) && !empty($Lng)) { 103 133 $Map[0] = $Lat; 104 134 $Map[1] = $Lng; … … 106 136 $Map[3] = get_the_permalink($postid); 107 137 $Map[4] = cubewp_get_post_thumbnail_url($postid); 108 $Map[5] = apply_filters( 'cubewp/search_result/map/pin', '', $postid);138 $Map[5] = apply_filters('cubewp/search_result/map/pin', '', $postid); 109 139 return $Map; 110 140 } 111 141 } 112 142 } 113 114 private static function cwp_map_meta_key($post_type=''){ 115 if(empty($post_type)) return; 116 $options = CWP()->get_custom_fields( 'post_types' ); 143 144 private static function cwp_map_meta_key($post_type = '') 145 { 146 if (empty($post_type)) return; 147 $options = CWP()->get_custom_fields('post_types'); 117 148 $options = $options == '' ? array() : $options; 118 if (isset($options['cwp_map_meta'][$post_type]) && !empty($options['cwp_map_meta'][$post_type])){149 if (isset($options['cwp_map_meta'][$post_type]) && !empty($options['cwp_map_meta'][$post_type])) { 119 150 $MapMeta = $options['cwp_map_meta'][$post_type]; 120 151 return $MapMeta; 121 152 } 122 153 } 123 124 private static function cwp_no_result_found(){ 125 return '<div class="cwp-empty-search"><img class="cwp-empty-search-img" src="'.esc_url(CWP_PLUGIN_URI.'cube/assets/frontend/images/no-result.png').'" alt=""><h2>'.esc_html__('No Results Found','cubewp-framework').'</h2><p>'.esc_html__('There are no results matching your search.','cubewp-framework').'</p></div>'; 154 155 private static function cwp_no_result_found() 156 { 157 return '<div class="cwp-empty-search"><img class="cwp-empty-search-img" src="' . esc_url(CWP_PLUGIN_URI . 'cube/assets/frontend/images/no-result.png') . '" alt=""><h2>' . esc_html__('No Results Found', 'cubewp-framework') . '</h2><p>' . esc_html__('There are no results matching your search.', 'cubewp-framework') . '</p></div>'; 126 158 } 127 159 } -
cubewp-framework/trunk/cube/modules/theme-builder/class-cubewp-theme-builder-rules.php
r3165528 r3362001 134 134 public static function render_block_options() { 135 135 $template_options = ''; 136 $template_options .= '<option value="cubewp_post_loop_promotional_card">' . esc_html('CubeWP Post Loop Promotional Card' , 'cubewp-framework') . '</option>'; 136 137 $blocks = is_array(apply_filters('cubewp/theme_builder/blocks', array())) ? apply_filters('cubewp/theme_builder/blocks', array()): array(); 137 138 foreach ($blocks as $key => $label) { -
cubewp-framework/trunk/cube/modules/theme-builder/class-cubewp-theme-builder.php
r3339163 r3362001 272 272 foreach ($existing_posts->posts as $existing_post_id) { 273 273 if ($existing_post_id != $post_id && $template_type != 'mega-menu') { 274 continue; 275 } elseif ($existing_post_id != $post_id && $template_type != 'cubewp_post_promotional_card') { 276 continue; 277 } else { 274 278 wp_update_post(array( 275 279 'ID' => $existing_post_id, -
cubewp-framework/trunk/languages/cubewp-framework.pot
r3339163 r3362001 5 5 "Project-Id-Version: cubewp-framework\n" 6 6 "Report-Msgid-Bugs-To: \n" 7 "POT-Creation-Date: 2025-0 7-08 16:16+0500\n"7 "POT-Creation-Date: 2025-09-15 23:35+0500\n" 8 8 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 9 9 "Last-Translator: cland <[email protected]>\n" … … 15 15 "POT-Revision-Date: Tue Mar 08 2016 16:05:54 GMT+0500 (Pakistan Standard Time)\n" 16 16 "X-Poedit-SourceCharset: UTF-8\n" 17 "X-Generator: Poedit 3.5\n" 18 "X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;__:1;" 19 "_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;_x:1,2c;" 20 "_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;esc_attr__:1;" 21 "esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;esc_html_x:1,2c;" 22 "comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n" 17 "X-Generator: Poedit 3.7\n" 18 "X-Poedit-KeywordsList: " 19 "_:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n" 23 20 "X-Poedit-Basepath: ..\n" 24 21 "X-Textdomain-Support: yes\n" … … 294 291 msgstr[1] "" 295 292 296 #: cube/classes/class-cubewp-builder-ui.php:15 1293 #: cube/classes/class-cubewp-builder-ui.php:158 297 294 msgid "PRO" 298 295 msgstr "" 299 296 300 #: cube/classes/class-cubewp-builder-ui.php:276 301 #: cube/classes/class-cubewp-builder-ui.php:630 297 #: cube/classes/class-cubewp-builder-ui.php:181 298 msgid "CubeWP Custom Cubes" 299 msgstr "" 300 301 #: cube/classes/class-cubewp-builder-ui.php:316 302 #: cube/classes/class-cubewp-builder-ui.php:681 302 303 msgid "No Custom Post Type Found." 303 304 msgstr "" 304 305 305 #: cube/classes/class-cubewp-builder-ui.php:4 19306 #: cube/classes/class-cubewp-builder-ui.php:464 306 307 msgid "Create Sections For Content Area" 307 308 msgstr "" 308 309 309 #: cube/classes/class-cubewp-builder-ui.php:4 25310 #: cube/classes/class-cubewp-builder-ui.php:470 310 311 msgid "Create Sections For Sidebar" 311 312 msgstr "" 312 313 313 #: cube/classes/class-cubewp-builder-ui.php:513 314 #: cube/classes/class-cubewp-builder-ui.php:561 315 #: cube/classes/class-cubewp-builder-ui.php:647 316 msgid "Create Section" 317 msgstr "" 318 314 319 #: cube/classes/class-cubewp-builder-ui.php:595 315 msgid "Create Section"316 msgstr ""317 318 #: cube/classes/class-cubewp-builder-ui.php:545319 320 #: cube/modules/builder/class-cubewp-loop-builder.php:133 320 321 msgid "Save Changes" 321 322 msgstr "" 322 323 323 #: cube/classes/class-cubewp-builder-ui.php: 565324 #: cube/classes/class-cubewp-builder-ui.php:616 324 325 #: cube/classes/class-cubewp-form-builder.php:623 325 326 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-cubewp-form-widget.php:43 … … 327 328 msgstr "" 328 329 329 #: cube/classes/class-cubewp-builder-ui.php: 580330 #: cube/classes/class-cubewp-builder-ui.php:632 330 331 msgid "No Section Image" 331 332 msgstr "" 332 333 333 #: cube/classes/class-cubewp-builder-ui.php: 582334 #: cube/classes/class-cubewp-builder-ui.php:634 334 335 msgid "Let's build something awesome today!" 335 336 msgstr "" 336 337 337 #: cube/classes/class-cubewp-builder-ui.php: 585338 #: cube/classes/class-cubewp-builder-ui.php: 587338 #: cube/classes/class-cubewp-builder-ui.php:637 339 #: cube/classes/class-cubewp-builder-ui.php:639 339 340 msgid "1" 340 341 msgstr "" 341 342 342 #: cube/classes/class-cubewp-builder-ui.php: 585343 #: cube/classes/class-cubewp-builder-ui.php:637 343 344 msgid "Select a Post Type" 344 345 msgstr "" 345 346 346 #: cube/classes/class-cubewp-builder-ui.php: 587347 #: cube/classes/class-cubewp-builder-ui.php:639 347 348 msgid "Select a User Role" 348 349 msgstr "" 349 350 350 #: cube/classes/class-cubewp-builder-ui.php: 589351 #: cube/classes/class-cubewp-builder-ui.php:641 351 352 msgid "2" 352 353 msgstr "" 353 354 354 #: cube/classes/class-cubewp-builder-ui.php: 589355 #: cube/classes/class-cubewp-builder-ui.php:641 355 356 msgid "Create a Section" 356 357 msgstr "" 357 358 358 #: cube/classes/class-cubewp-builder-ui.php:590 359 #: cube/classes/class-cubewp-builder-ui.php:642 360 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-archive-posts-widget.php:146 361 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2343 359 362 msgid "3" 360 363 msgstr "" 361 364 362 #: cube/classes/class-cubewp-builder-ui.php: 590365 #: cube/classes/class-cubewp-builder-ui.php:642 363 366 msgid "Drag a Form Field" 364 367 msgstr "" 365 368 366 #: cube/classes/class-cubewp-builder-ui.php: 591369 #: cube/classes/class-cubewp-builder-ui.php:643 367 370 msgid "4" 368 371 msgstr "" 369 372 370 #: cube/classes/class-cubewp-builder-ui.php: 591373 #: cube/classes/class-cubewp-builder-ui.php:643 371 374 msgid "Hit Save Changes" 372 375 msgstr "" 373 376 374 #: cube/classes/class-cubewp-builder-ui.php:6 16377 #: cube/classes/class-cubewp-builder-ui.php:668 375 378 msgid "Or Copy Content From" 376 379 msgstr "" 377 380 378 #: cube/classes/class-cubewp-builder-ui.php:6 22381 #: cube/classes/class-cubewp-builder-ui.php:674 379 382 msgid "Copy" 380 383 msgstr "" … … 610 613 #: cube/classes/class-cubewp-form-builder.php:600 611 614 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-cubewp-form-widget.php:298 612 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 593613 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:7 11614 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:13 33615 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 1980615 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:622 616 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:752 617 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1384 618 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2031 616 619 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:152 617 620 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:1039 … … 634 637 #: cube/classes/class-cubewp-form-builder.php:600 635 638 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-cubewp-form-widget.php:297 636 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 592637 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:7 10638 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:13 32639 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 1979639 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:621 640 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:751 641 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1383 642 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2030 640 643 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:151 641 644 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:1038 … … 809 812 810 813 #: cube/classes/class-cubewp-frontend.php:439 811 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:7 8814 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:79 812 815 #: cube/classes/page-builders/vc-elements/class-cubewp-vc-posts-widget.php:51 813 816 #: cube/functions/fields-helper.php:182 … … 820 823 821 824 #: cube/classes/class-cubewp-frontend.php:440 822 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:8 0825 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:81 823 826 #: cube/classes/page-builders/vc-elements/class-cubewp-vc-posts-widget.php:52 824 827 #: cube/includes/widgets/class-cubewp-posts-widget.php:122 … … 1141 1144 msgstr "" 1142 1145 1143 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-archive-posts-widget.php:2 51146 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-archive-posts-widget.php:28 1144 1147 msgid "Archive Posts Display" 1145 1148 msgstr "" 1146 1149 1147 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-archive-posts-widget.php:4 31150 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-archive-posts-widget.php:49 1148 1151 msgid "Search Posts Settings" 1149 1152 msgstr "" 1150 1153 1151 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-archive-posts-widget.php: 811152 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 2641154 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-archive-posts-widget.php:92 1155 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:327 1153 1156 #: cube/functions/settings/cubewp-default-options.php:34 1154 1157 #: cube/functions/settings/cubewp-default-options.php:395 … … 1156 1159 msgstr "" 1157 1160 1158 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-archive-posts-widget.php: 961159 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 2811161 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-archive-posts-widget.php:108 1162 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:344 1160 1163 msgid "Card Style for " 1164 msgstr "" 1165 1166 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-archive-posts-widget.php:123 1167 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2320 1168 msgid "Promotional Card Settings" 1169 msgstr "" 1170 1171 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-archive-posts-widget.php:129 1172 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2326 1173 msgid "Show Promotional Cards" 1174 msgstr "" 1175 1176 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-archive-posts-widget.php:138 1177 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2335 1178 msgid "Promotional Cards" 1179 msgstr "" 1180 1181 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-archive-posts-widget.php:144 1182 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2341 1183 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:2223 1184 msgid "Position" 1185 msgstr "" 1186 1187 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-archive-posts-widget.php:152 1188 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2348 1189 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:2117 1190 msgid "Width" 1191 msgstr "" 1192 1193 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-archive-posts-widget.php:169 1194 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2365 1195 msgid "Set the width of the card." 1196 msgstr "" 1197 1198 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-archive-posts-widget.php:175 1199 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2371 1200 msgid "Promotional Cards List" 1161 1201 msgstr "" 1162 1202 … … 1218 1258 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-nav-menu-widget.php:548 1219 1259 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-nav-menu-widget.php:832 1220 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 0881260 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1129 1221 1261 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:562 1222 1262 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:831 … … 1234 1274 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-mega-menu-widget.php:348 1235 1275 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-nav-menu-widget.php:845 1276 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2294 1236 1277 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:524 1237 1278 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:665 … … 1373 1414 1374 1415 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-cubewp-form-widget.php:269 1375 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:13 481416 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1399 1376 1417 msgid "Block" 1377 1418 msgstr "" … … 1386 1427 1387 1428 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-cubewp-form-widget.php:272 1388 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 3491429 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1400 1389 1430 msgid "Flex" 1390 1431 msgstr "" … … 1454 1495 1455 1496 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-mega-menu-widget.php:199 1456 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 3681497 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1419 1457 1498 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:337 1458 1499 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:2508 … … 1461 1502 1462 1503 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-mega-menu-widget.php:203 1463 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 3691504 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1420 1464 1505 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:338 1465 1506 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:2509 … … 1468 1509 1469 1510 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-mega-menu-widget.php:207 1470 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 3701511 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1421 1471 1512 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:339 1472 1513 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:2510 … … 1475 1516 1476 1517 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-mega-menu-widget.php:211 1477 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 3711518 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1422 1478 1519 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:340 1479 1520 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:2511 … … 1482 1523 1483 1524 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-mega-menu-widget.php:224 1484 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:22 191525 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2270 1485 1526 msgid "Justify Content" 1486 1527 msgstr "" … … 1498 1539 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-mega-menu-widget.php:237 1499 1540 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-mega-menu-widget.php:279 1500 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:22 231541 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2274 1501 1542 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:79 1502 1543 msgid "Center" … … 1504 1545 1505 1546 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-mega-menu-widget.php:241 1506 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:22 251547 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2276 1507 1548 msgid "Space Between" 1508 1549 msgstr "" 1509 1550 1510 1551 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-mega-menu-widget.php:245 1511 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:22 261552 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2277 1512 1553 msgid "Space Around" 1513 1554 msgstr "" 1514 1555 1515 1556 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-mega-menu-widget.php:249 1516 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:22 271557 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2278 1517 1558 msgid "Space Evenly" 1518 1559 msgstr "" … … 1588 1629 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-mega-menu-widget.php:521 1589 1630 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-nav-menu-widget.php:715 1590 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 0911631 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2142 1591 1632 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:78 1592 1633 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:1162 … … 1601 1642 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-mega-menu-widget.php:525 1602 1643 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-nav-menu-widget.php:719 1603 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 0951644 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2146 1604 1645 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:80 1605 1646 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:1163 … … 1701 1742 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-nav-menu-widget.php:309 1702 1743 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-nav-menu-widget.php:823 1703 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 0721744 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1113 1704 1745 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:544 1705 1746 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:813 … … 1761 1802 1762 1803 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-nav-menu-widget.php:795 1763 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:9 181804 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:959 1764 1805 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:2393 1765 1806 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:2540 … … 1785 1826 msgstr "" 1786 1827 1787 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 81828 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:29 1788 1829 msgid "CubeWP Posts" 1789 1830 msgstr "" 1790 1831 1791 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:6 61832 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:67 1792 1833 msgid "Query Options" 1793 1834 msgstr "" 1794 1835 1795 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:7 61836 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:77 1796 1837 #: cube/classes/page-builders/vc-elements/class-cubewp-vc-posts-widget.php:47 1797 1838 msgid "Order By" 1798 1839 msgstr "" 1799 1840 1800 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 791841 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:80 1801 1842 #: cube/classes/page-builders/vc-elements/class-cubewp-vc-posts-widget.php:50 1802 1843 msgid "Most Recent" 1803 1844 msgstr "" 1804 1845 1805 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:8 61846 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:87 1806 1847 #: cube/classes/page-builders/vc-elements/class-cubewp-vc-posts-widget.php:58 1807 1848 #: cube/modules/list-tables/class-cubewp-post-types-custom-fields-table.php:46 … … 1811 1852 msgstr "" 1812 1853 1813 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:8 81854 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:89 1814 1855 #: cube/classes/page-builders/vc-elements/class-cubewp-vc-posts-widget.php:62 1815 1856 msgid "Ascending" 1816 1857 msgstr "" 1817 1858 1818 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 891859 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:90 1819 1860 #: cube/classes/page-builders/vc-elements/class-cubewp-vc-posts-widget.php:61 1820 1861 msgid "Descending" 1821 1862 msgstr "" 1822 1863 1823 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:9 81864 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:99 1824 1865 msgid "Number Of Posts" 1825 1866 msgstr "" 1826 1867 1827 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:10 01868 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:101 1828 1869 msgid "All Posts" 1829 1870 msgstr "" 1830 1871 1831 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:10 11872 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:102 1832 1873 msgid "1 Post" 1833 1874 msgstr "" 1834 1875 1835 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:10 21876 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:103 1836 1877 msgid "2 Posts" 1837 1878 msgstr "" 1838 1879 1839 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:10 31880 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:104 1840 1881 msgid "3 Posts" 1841 1882 msgstr "" 1842 1883 1843 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:10 41884 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:105 1844 1885 msgid "4 Posts" 1845 1886 msgstr "" 1846 1887 1847 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:10 51888 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:106 1848 1889 msgid "5 Posts" 1849 1890 msgstr "" 1850 1891 1851 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:10 61892 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:107 1852 1893 msgid "6 Posts" 1853 1894 msgstr "" 1854 1895 1855 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:10 71896 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:108 1856 1897 msgid "8 Posts" 1857 1898 msgstr "" 1858 1899 1859 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:10 81900 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:109 1860 1901 msgid "9 Posts" 1861 1902 msgstr "" 1862 1903 1863 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 091904 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:110 1864 1905 msgid "12 Posts" 1865 1906 msgstr "" 1866 1907 1867 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:11 01908 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:111 1868 1909 msgid "16 Posts" 1869 1910 msgstr "" 1870 1911 1871 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:11 11912 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:112 1872 1913 msgid "15 Posts" 1873 1914 msgstr "" 1874 1915 1875 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:11 21916 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:113 1876 1917 msgid "20 Posts" 1877 1918 msgstr "" 1878 1919 1879 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:11 81920 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:119 1880 1921 msgid "Load More Button" 1881 1922 msgstr "" 1882 1923 1883 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:12 61924 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:127 1884 1925 #: cube/classes/page-builders/vc-elements/class-cubewp-vc-posts-widget.php:72 1885 1926 #: cube/functions/settings/cubewp-default-options.php:221 … … 1888 1929 msgstr "" 1889 1930 1890 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:13 61931 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:137 1891 1932 #: cube/classes/page-builders/vc-elements/class-cubewp-vc-posts-widget.php:91 1892 1933 #: cube/modules/custom-fields/class-cubewp-custom-fields-markup.php:1126 … … 1894 1935 msgstr "" 1895 1936 1896 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:13 81937 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:139 1897 1938 #: cube/classes/page-builders/vc-elements/class-cubewp-vc-posts-widget.php:94 1898 1939 msgid "Grid View" 1899 1940 msgstr "" 1900 1941 1901 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 391942 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:140 1902 1943 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-taxonomy-widget.php:91 1903 1944 #: cube/classes/page-builders/vc-elements/class-cubewp-vc-posts-widget.php:95 … … 1906 1947 msgstr "" 1907 1948 1908 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:146 1949 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:148 1950 msgid "Posts Per Row" 1951 msgstr "" 1952 1953 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:158 1954 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:170 1955 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:182 1956 msgid "Auto" 1957 msgstr "" 1958 1959 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:159 1960 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:171 1961 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:183 1962 msgid "1 Column" 1963 msgstr "" 1964 1965 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:160 1966 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:172 1967 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:184 1968 msgid "2 Columns" 1969 msgstr "" 1970 1971 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:161 1972 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:173 1973 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:185 1974 msgid "3 Columns" 1975 msgstr "" 1976 1977 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:162 1978 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:174 1979 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:186 1980 msgid "4 Columns" 1981 msgstr "" 1982 1983 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:163 1984 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:175 1985 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:187 1986 msgid "5 Columns" 1987 msgstr "" 1988 1989 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:164 1990 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:176 1991 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:188 1992 msgid "6 Columns" 1993 msgstr "" 1994 1995 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:198 1996 msgid "Processing Grids Per Row" 1997 msgstr "" 1998 1999 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:208 1909 2000 msgid "Enable Scroll on Small Devices" 1910 2001 msgstr "" 1911 2002 1912 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 1482003 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:210 1913 2004 msgid "Enable overflow scroll behaviour on small devices." 1914 2005 msgstr "" 1915 2006 1916 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 1572007 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:219 1917 2008 msgid "Filter By Meta / Custom Fields" 1918 2009 msgstr "" 1919 2010 1920 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 1652011 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:227 1921 2012 msgid "Filter By Meta / Custom Field" 1922 2013 msgstr "" 1923 2014 1924 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 1712015 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:233 1925 2016 msgid "Select Relation" 1926 2017 msgstr "" 1927 2018 1928 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 1722019 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:234 1929 2020 msgid "" 1930 2021 "e.g. If you have multiple custom field's conditions and you set relation OR " … … 1932 2023 msgstr "" 1933 2024 1934 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 1742025 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:236 1935 2026 msgid "OR" 1936 2027 msgstr "" 1937 2028 1938 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 1752029 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:237 1939 2030 msgid "AND" 1940 2031 msgstr "" 1941 2032 1942 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 1872033 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:249 1943 2034 msgid "Select Custom Field" 1944 2035 msgstr "" 1945 2036 1946 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 1942037 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:256 1947 2038 msgid "Put here meta value" 1948 2039 msgstr "" 1949 2040 1950 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 1952041 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:257 1951 2042 msgid "e.g. APPLE" 1952 2043 msgstr "" 1953 2044 1954 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 1962045 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:258 1955 2046 msgid "" 1956 2047 "e.g. If custom field is BRAND NAME, you can set value as APPLE to get all those " … … 1958 2049 msgstr "" 1959 2050 1960 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 022051 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:264 1961 2052 msgid "Select Operator to compare " 1962 2053 msgstr "" 1963 2054 1964 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 032055 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:265 1965 2056 msgid "" 1966 2057 "e.g. If going to select BETWEEN or NOT BETWEEN then add value like this [100, " … … 1968 2059 msgstr "" 1969 2060 1970 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 052061 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:267 1971 2062 msgid "Equal" 1972 2063 msgstr "" 1973 2064 1974 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 062065 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:268 1975 2066 msgid "Not Equal" 1976 2067 msgstr "" 1977 2068 1978 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 072069 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:269 1979 2070 msgid "Greater Than" 1980 2071 msgstr "" 1981 2072 1982 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 082073 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:270 1983 2074 msgid "Greater Than or Equal" 1984 2075 msgstr "" 1985 2076 1986 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 092077 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:271 1987 2078 msgid "Less Than" 1988 2079 msgstr "" 1989 2080 1990 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 102081 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:272 1991 2082 msgid "Less Than or Equal" 1992 2083 msgstr "" 1993 2084 1994 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 112085 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:273 1995 2086 msgid "LIKE %" 1996 2087 msgstr "" 1997 2088 1998 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 122089 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:274 1999 2090 msgid "NOT LIKE" 2000 2091 msgstr "" 2001 2092 2002 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 132093 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:275 2003 2094 msgid "IN" 2004 2095 msgstr "" 2005 2096 2006 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 142097 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:276 2007 2098 msgid "NOT IN" 2008 2099 msgstr "" 2009 2100 2010 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 152101 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:277 2011 2102 msgid "BETWEEN" 2012 2103 msgstr "" 2013 2104 2014 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 162105 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:278 2015 2106 msgid "NOT BETWEEN" 2016 2107 msgstr "" 2017 2108 2018 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 172109 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:279 2019 2110 msgid "EXISTS" 2020 2111 msgstr "" 2021 2112 2022 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 182113 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:280 2023 2114 msgid "NOT EXISTS" 2024 2115 msgstr "" 2025 2116 2026 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 282117 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:290 2027 2118 msgid "Add Conditions" 2028 2119 msgstr "" 2029 2120 2030 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 2652121 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:328 2031 2122 msgid "You can select one or multiple post types to show post cards." 2032 2123 msgstr "" 2033 2124 2034 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 2972125 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:360 2035 2126 #: cube/modules/theme-builder/class-cubewp-theme-builder.php:73 2036 2127 msgid "All" 2037 2128 msgstr "" 2038 2129 2039 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 2982130 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:361 2040 2131 #: cube/classes/page-builders/vc-elements/class-cubewp-vc-posts-widget.php:145 2041 2132 msgid "By Taxonomy" 2042 2133 msgstr "" 2043 2134 2044 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 2992135 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:362 2045 2136 #: cube/classes/page-builders/vc-elements/class-cubewp-vc-posts-widget.php:146 2046 2137 msgid "By IDs" 2047 2138 msgstr "" 2048 2139 2049 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:3 022140 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:365 2050 2141 msgid "Boosted Only" 2051 2142 msgstr "" 2052 2143 2053 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:3 062144 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:369 2054 2145 #: cube/classes/page-builders/vc-elements/class-cubewp-vc-posts-widget.php:142 2055 2146 msgid "Show Posts" 2056 2147 msgstr "" 2057 2148 2058 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:3 272149 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:390 2059 2150 msgid "Select Terms for " 2060 2151 msgstr "" 2061 2152 2062 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:3 282153 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:391 2063 2154 #: cube/classes/page-builders/vc-elements/class-cubewp-vc-posts-widget.php:186 2064 2155 #: cube/classes/page-builders/vc-elements/class-cubewp-vc-posts-widget.php:209 … … 2066 2157 msgstr "" 2067 2158 2068 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 3452159 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:408 2069 2160 msgid "" 2070 2161 "Enter post IDs separated by commas (e.g., 12, 45, 78). Leave empty to display " … … 2072 2163 msgstr "" 2073 2164 2074 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 5822165 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:611 2075 2166 msgid "Posts Slider" 2076 2167 msgstr "" 2077 2168 2078 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 5902169 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:619 2079 2170 msgid "Enable Slider" 2080 2171 msgstr "" 2081 2172 2082 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:6 062173 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:635 2083 2174 msgid "Post Spacing" 2084 2175 msgstr "" 2085 2176 2086 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:6 182177 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:647 2087 2178 msgid "Slides To Show" 2088 2179 msgstr "" 2089 2180 2090 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:6 232181 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:652 2091 2182 msgid "Number of slides to show at once in the slider." 2092 2183 msgstr "" 2093 2184 2094 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:6 332185 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:662 2095 2186 msgid "Slides To Scroll" 2096 2187 msgstr "" 2097 2188 2098 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:6 382189 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:667 2099 2190 msgid "Number of slides to scroll at once in the slider." 2100 2191 msgstr "" 2101 2192 2102 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:6 492193 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:678 2103 2194 msgid "Autoplay" 2104 2195 msgstr "" 2105 2196 2106 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:6 512197 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:680 2107 2198 msgid "Enable or disable autoplay for the slider." 2108 2199 msgstr "" 2109 2200 2110 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:6 622201 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:691 2111 2202 msgid "Autoplay Speed (ms)" 2112 2203 msgstr "" 2113 2204 2114 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:6 672205 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:696 2115 2206 msgid "Set the speed for autoplay in milliseconds." 2116 2207 msgstr "" 2117 2208 2118 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 6792209 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:708 2119 2210 msgid "Speed (ms)" 2120 2211 msgstr "" 2121 2212 2122 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 6842213 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:713 2123 2214 msgid "Set the speed for the slider transition in milliseconds." 2124 2215 msgstr "" 2125 2216 2126 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:696 2217 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:724 2218 msgid "Fade Effect" 2219 msgstr "" 2220 2221 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:726 2222 msgid "Enable fade effect for slides transition." 2223 msgstr "" 2224 2225 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:737 2127 2226 msgid "Infinite Loop" 2128 2227 msgstr "" 2129 2228 2130 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 6982229 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:739 2131 2230 msgid "Enable or disable infinite loop for the slider." 2132 2231 msgstr "" 2133 2232 2134 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:7 082233 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:749 2135 2234 msgid "Variable Width" 2136 2235 msgstr "" 2137 2236 2138 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:7 232237 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:764 2139 2238 msgid "Overflow Setting" 2140 2239 msgstr "" 2141 2240 2142 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:7 382241 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:779 2143 2242 msgid "Enable Progress Bar" 2144 2243 msgstr "" 2145 2244 2146 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:7 492245 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:790 2147 2246 msgid "Progress Bar Height" 2148 2247 msgstr "" 2149 2248 2150 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 7762249 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:817 2151 2250 msgid "Progress Bar Background Color" 2152 2251 msgstr "" 2153 2252 2154 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 7922253 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:833 2155 2254 msgid "Progress Bar Fill Color" 2156 2255 msgstr "" 2157 2256 2158 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:8 082257 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:849 2159 2258 msgid "Progress Bar Margin Top" 2160 2259 msgstr "" 2161 2260 2162 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:8 462261 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:887 2163 2262 msgid "Enable Arrows" 2164 2263 msgstr "" 2165 2264 2166 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:8 572265 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:898 2167 2266 msgid "Previous Icon" 2168 2267 msgstr "" 2169 2268 2170 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 8742269 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:915 2171 2270 msgid "Next Icon" 2172 2271 msgstr "" 2173 2272 2174 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 8912273 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:932 2175 2274 msgid "Icon Size (px)" 2176 2275 msgstr "" 2177 2276 2178 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:9 342277 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:975 2179 2278 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:2766 2180 2279 msgid "Icon Hover Color" 2181 2280 msgstr "" 2182 2281 2183 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:9 502282 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:991 2184 2283 msgid "Icon & Svg Background Color" 2185 2284 msgstr "" 2186 2285 2187 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 9662286 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1007 2188 2287 msgid "Icon & Svg Hover Background Color" 2189 2288 msgstr "" 2190 2289 2191 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 9822290 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1023 2192 2291 msgid "SVG Color" 2193 2292 msgstr "" 2194 2293 2195 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 9982294 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1039 2196 2295 msgid "SVG Hover Color" 2197 2296 msgstr "" 2198 2297 2199 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:10 142298 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1055 2200 2299 msgid "SVG Width" 2201 2300 msgstr "" 2202 2301 2203 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:10 432302 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1084 2204 2303 msgid "SVG Height" 2205 2304 msgstr "" 2206 2305 2207 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:11 202306 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1161 2208 2307 msgid "Border Color" 2209 2308 msgstr "" 2210 2309 2211 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:11 362310 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1177 2212 2311 msgid "Border Color on Hover" 2213 2312 msgstr "" 2214 2313 2215 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:11 522314 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1193 2216 2315 msgid "Transition Duration" 2217 2316 msgstr "" 2218 2317 2219 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 1772318 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1218 2220 2319 msgid "Icon & Svg Padding" 2221 2320 msgstr "" 2222 2321 2223 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1193 2322 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1235 2323 msgid "Arrow Box Shadow" 2324 msgstr "" 2325 2326 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1244 2224 2327 msgid "Set the Icons Positions" 2225 2328 msgstr "" 2226 2329 2227 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:12 062228 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:20 142330 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1257 2331 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2065 2229 2332 msgid "Top Position" 2230 2333 msgstr "" 2231 2334 2232 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:12 372233 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 0502335 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1288 2336 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2101 2234 2337 msgid "Bottom Position" 2235 2338 msgstr "" 2236 2339 2237 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 2682238 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:21 462340 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1319 2341 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2197 2239 2342 msgid "Left Position" 2240 2343 msgstr "" 2241 2344 2242 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 2992243 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:21 102345 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1350 2346 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2161 2244 2347 msgid "Right Position" 2245 2348 msgstr "" 2246 2349 2247 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:13 302350 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1381 2248 2351 msgid "Enable Dots" 2249 2352 msgstr "" 2250 2353 2251 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:13 452354 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1396 2252 2355 msgid "Dots Display" 2253 2356 msgstr "" 2254 2357 2255 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 3652358 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1416 2256 2359 msgid "Dots Flex Direction" 2257 2360 msgstr "" 2258 2361 2259 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 3872362 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1438 2260 2363 msgid "Dots Gap" 2261 2364 msgstr "" 2262 2365 2263 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:14 142366 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1465 2264 2367 msgid "Dots Position" 2265 2368 msgstr "" 2266 2369 2267 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:14 172370 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1468 2268 2371 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:2226 2269 2372 msgid "Static" 2270 2373 msgstr "" 2271 2374 2272 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:14 182375 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1469 2273 2376 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:2228 2274 2377 msgid "Absolute" 2275 2378 msgstr "" 2276 2379 2277 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:14 192380 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1470 2278 2381 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:2227 2279 2382 msgid "Relative" 2280 2383 msgstr "" 2281 2384 2282 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:14 202385 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1471 2283 2386 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:2229 2284 2387 msgid "Fixed" 2285 2388 msgstr "" 2286 2389 2287 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:14 362390 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1487 2288 2391 msgid "Dots Top Position" 2289 2392 msgstr "" 2290 2393 2291 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 4682394 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1519 2292 2395 msgid "Dots Bottom Position" 2293 2396 msgstr "" 2294 2397 2295 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:15 002398 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1551 2296 2399 msgid "Dots Left Position" 2297 2400 msgstr "" 2298 2401 2299 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:15 322402 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1583 2300 2403 msgid "Dots Right Position" 2301 2404 msgstr "" 2302 2405 2303 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 5642406 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1615 2304 2407 msgid "Dots Z-Index" 2305 2408 msgstr "" 2306 2409 2307 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 5822410 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1633 2308 2411 msgid "Dots Padding" 2309 2412 msgstr "" 2310 2413 2311 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 5982414 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1649 2312 2415 msgid "Dots Border Style" 2313 2416 msgstr "" 2314 2417 2315 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:16 022418 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1653 2316 2419 msgid "None" 2317 2420 msgstr "" 2318 2421 2319 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:16 032422 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1654 2320 2423 msgid "Solid" 2321 2424 msgstr "" 2322 2425 2323 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:16 042426 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1655 2324 2427 msgid "Dotted" 2325 2428 msgstr "" 2326 2429 2327 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:16 052430 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1656 2328 2431 msgid "Dashed" 2329 2432 msgstr "" 2330 2433 2331 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:16 202434 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1671 2332 2435 msgid "Dots Border Width" 2333 2436 msgstr "" 2334 2437 2335 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:16 442438 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1695 2336 2439 msgid "Dots Outside Padding" 2337 2440 msgstr "" 2338 2441 2339 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 6602442 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1711 2340 2443 msgid "Dots Outside Backgroud Color" 2341 2444 msgstr "" 2342 2445 2343 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 6762446 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1727 2344 2447 msgid "Active Dot Outside Backgroud Color" 2345 2448 msgstr "" 2346 2449 2347 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 6922450 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1743 2348 2451 msgid "Dots Border Color" 2349 2452 msgstr "" 2350 2453 2351 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:17 082454 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1759 2352 2455 msgid "Active Dot Border Color" 2353 2456 msgstr "" 2354 2457 2355 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:17 242458 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1775 2356 2459 msgid "Dots Border Radius" 2357 2460 msgstr "" 2358 2461 2359 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:17 432462 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1794 2360 2463 msgid "Dots Background Color" 2361 2464 msgstr "" 2362 2465 2363 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 7592466 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1810 2364 2467 msgid "Active Dot Background Color" 2365 2468 msgstr "" 2366 2469 2367 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 7752470 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1826 2368 2471 msgid "Dots Width" 2369 2472 msgstr "" 2370 2473 2371 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 7942474 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1845 2372 2475 msgid "Dots Height" 2373 2476 msgstr "" 2374 2477 2375 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:18 132478 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1864 2376 2479 msgid "Active Dot Width" 2377 2480 msgstr "" 2378 2481 2379 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:18 322482 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1883 2380 2483 msgid "Active Dot Height" 2381 2484 msgstr "" 2382 2485 2383 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 8512486 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1902 2384 2487 msgid "Responsive Settings For Slides To Show And Scroll" 2385 2488 msgstr "" 2386 2489 2387 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 8632490 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1914 2388 2491 msgid "Slides To Show On (Tablet)" 2389 2492 msgstr "" 2390 2493 2391 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 8782494 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1929 2392 2495 msgid "Slides To Show On (Tablet Portrait)" 2393 2496 msgstr "" 2394 2497 2395 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1 8932498 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1944 2396 2499 msgid "Slides To Show On (Mobile)" 2397 2500 msgstr "" 2398 2501 2399 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:19 192502 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1970 2400 2503 msgid "Slides To Scroll On (Tablet)" 2401 2504 msgstr "" 2402 2505 2403 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:19 342506 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:1985 2404 2507 msgid "Slides To Scroll On (Tablet Portrait)" 2405 2508 msgstr "" 2406 2509 2407 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 19492510 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2000 2408 2511 msgid "Slides To Scroll On (Mobile)" 2409 2512 msgstr "" 2410 2513 2411 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 19652514 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2016 2412 2515 msgid "Wrap Dots With Arrows" 2413 2516 msgstr "" 2414 2517 2415 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 19772518 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2028 2416 2519 msgid "Enable Wrap Dots With Arrows" 2417 2520 msgstr "" 2418 2521 2419 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 19922522 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2043 2420 2523 msgid "Vertical Direction" 2421 2524 msgstr "" 2422 2525 2423 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php: 19962526 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2047 2424 2527 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:1211 2425 2528 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:1221 … … 2432 2535 msgstr "" 2433 2536 2434 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:20 002537 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2051 2435 2538 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:1212 2436 2539 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:1237 … … 2442 2545 msgstr "" 2443 2546 2444 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 0872547 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2138 2445 2548 msgid "horizontal Direction" 2446 2549 msgstr "" 2447 2550 2448 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2 1822551 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2233 2449 2552 msgid "Gap Between Items" 2450 2553 msgstr "" 2451 2554 2452 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:22 222555 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2273 2453 2556 msgid "Flex Start" 2454 2557 msgstr "" 2455 2558 2456 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:22 242559 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-posts-widget.php:2275 2457 2560 msgid "Flex End" 2458 2561 msgstr "" … … 2831 2934 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:2104 2832 2935 msgid " ( " 2833 msgstr ""2834 2835 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:21172836 msgid "Width"2837 msgstr ""2838 2839 #: cube/classes/page-builders/elementor-widgets/class-cubewp-elementor-search-widget.php:22232840 msgid "Position"2841 2936 msgstr "" 2842 2937 … … 3109 3204 msgstr "" 3110 3205 3111 #: cube/classes/shortcodes/class-cubewp-shortcode-posts.php: 1813206 #: cube/classes/shortcodes/class-cubewp-shortcode-posts.php:357 3112 3207 msgid "Load More" 3113 3208 msgstr "" 3114 3209 3115 #: cube/classes/shortcodes/class-cubewp-shortcode-posts.php: 2183116 #: cube/modules/search/class-cubewp-search-ajax-hooks.php:1 253210 #: cube/classes/shortcodes/class-cubewp-shortcode-posts.php:421 3211 #: cube/modules/search/class-cubewp-search-ajax-hooks.php:157 3117 3212 msgid "No Results Found" 3118 3213 msgstr "" 3119 3214 3120 #: cube/classes/shortcodes/class-cubewp-shortcode-posts.php: 2183121 #: cube/modules/search/class-cubewp-search-ajax-hooks.php:1 253215 #: cube/classes/shortcodes/class-cubewp-shortcode-posts.php:421 3216 #: cube/modules/search/class-cubewp-search-ajax-hooks.php:157 3122 3217 msgid "There are no results matching your search." 3123 3218 msgstr "" 3124 3219 3125 #: cube/classes/shortcodes/class-cubewp-shortcode-taxonomy.php:12 33126 #: cube/classes/shortcodes/class-cubewp-shortcode-taxonomy.php:12 43220 #: cube/classes/shortcodes/class-cubewp-shortcode-taxonomy.php:128 3221 #: cube/classes/shortcodes/class-cubewp-shortcode-taxonomy.php:129 3127 3222 msgid "View More" 3128 3223 msgstr "" 3129 3224 3130 #: cube/classes/shortcodes/class-cubewp-shortcode-taxonomy.php:12 43225 #: cube/classes/shortcodes/class-cubewp-shortcode-taxonomy.php:129 3131 3226 msgid "View Less" 3132 3227 msgstr "" -
cubewp-framework/trunk/readme.txt
r3349966 r3362001 6 6 Requires PHP: 7.4 7 7 Tested up to: 6.8 8 Stable tag: 1.1.2 68 Stable tag: 1.1.27 9 9 License: GPLv2 or later 10 10 … … 377 377 == Changelog == 378 378 379 = 1.1.27 2025-09-01 380 381 - UPDATED: Refactored CubeWP Posts Elementor Widget to use AJAX for loading posts, improving performance, adding a posts-per-row control, and fixing slick slider issues. 382 - ADDED: Option in CubeWP Posts and CubWP Archive Posts widget to enable a promotional card in the loop with enhanced controls. 383 - ADDED: Filter hook support for custom cubes in CubeWP Builder. 384 - SECURITY: Improved sanitization and escaping in cubewp posts and cubewp taxonomy shortcode outputs. 385 379 386 = 1.1.26 2025-08-26 380 387
Note: See TracChangeset
for help on using the changeset viewer.