From 3ad5916352638991e6ca044c694bed051c91e44a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Cabrera?= Date: Wed, 16 Apr 2025 10:56:14 -0400 Subject: [PATCH 1/7] Shortcode: fixes stuck on loading state in Elementor editor --- src/Compatibility/Elementor/Elementor.php | 22 +++++++++++++++++++ .../Elementor/widgets/widget.php | 5 ----- src/Shortcode/Posts.php | 4 ++-- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/Compatibility/Elementor/Elementor.php b/src/Compatibility/Elementor/Elementor.php index 03bfd2f..b2a5470 100644 --- a/src/Compatibility/Elementor/Elementor.php +++ b/src/Compatibility/Elementor/Elementor.php @@ -53,6 +53,8 @@ public function init() add_action('elementor/editor/after_enqueue_scripts', [$this, 'elementor_icon_css']); // Registers WPP widget add_action('elementor/widgets/register', [$this, 'register_widget']); + // Disable [wpp] shortcode AJAX loading in editor mode + add_filter('shortcode_atts_wpp', [$this, 'disable_ajax_in_editor'], 10, 4); } } @@ -95,4 +97,24 @@ public function register_widget($widgets_manager) { ) ); } + + /** + * Disables [wpp] AJAX loading in editor mode. + * + * @since 7.4.0 + * @param array $out The output array of shortcode attributes. + * @param array $pairs The supported attributes and their defaults. + * @param array $atts The user defined shortcode attributes. + * @param string $shortcode The shortcode name. + */ + public function disable_ajax_in_editor(array $out, array $pairs, array $atts, string $shortcode) { + if ( + 'wpp' === $shortcode && + \Elementor\Plugin::$instance->editor->is_edit_mode() + ) { + $out['ajaxify'] = 0; + } + + return $out; + } } diff --git a/src/Compatibility/Elementor/widgets/widget.php b/src/Compatibility/Elementor/widgets/widget.php index 784f9b8..d4707b8 100644 --- a/src/Compatibility/Elementor/widgets/widget.php +++ b/src/Compatibility/Elementor/widgets/widget.php @@ -208,11 +208,6 @@ protected function render(): void { $widget_id = $this->get_id(); $settings = $this->parse_settings(); - /** We're in Edit mode, disable AJAX loading and display widget ID */ - if ( $is_edit_mode ) { - $settings['ajaxify'] = '0'; - } - /** * Allows to modify settings passed to wpp_get_mostpopular() * diff --git a/src/Shortcode/Posts.php b/src/Shortcode/Posts.php index fbafa79..2d27ff1 100644 --- a/src/Shortcode/Posts.php +++ b/src/Shortcode/Posts.php @@ -229,8 +229,8 @@ public function handle($attributes = []) : string $load_via_ajax = $this->config['tools']['ajax']; - if ( isset($attributes['ajaxify']) && is_numeric($attributes['ajaxify']) ) { - $load_via_ajax = (bool) absint($attributes['ajaxify']); + if ( is_numeric($ajaxify) ) { + $load_via_ajax = (bool) absint($ajaxify); } if ( $load_via_ajax && ! is_customize_preview() && ! $isAdmin ) { From 5ff459ff9bc51d65edc1c998da8f846235ea9d27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Cabrera?= Date: Thu, 24 Apr 2025 15:44:57 -0400 Subject: [PATCH 2/7] Adds new This-X Time Ranges --- assets/js/blocks/block-wpp-widget.asset.php | 2 +- assets/js/blocks/block-wpp-widget.js | 2 +- src/Block/Widget/edit.js | 3 +++ .../Elementor/widgets/widget-controls.php | 3 +++ src/Query.php | 20 +++++++++++++++++++ src/Rest/PostsEndpoint.php | 2 +- src/Shortcode/Posts.php | 2 +- 7 files changed, 30 insertions(+), 4 deletions(-) diff --git a/assets/js/blocks/block-wpp-widget.asset.php b/assets/js/blocks/block-wpp-widget.asset.php index 1919695..b544629 100644 --- a/assets/js/blocks/block-wpp-widget.asset.php +++ b/assets/js/blocks/block-wpp-widget.asset.php @@ -1 +1 @@ - array(), 'version' => '942d471458588c607ed1'); + array(), 'version' => 'cbd713bf860812786509'); diff --git a/assets/js/blocks/block-wpp-widget.js b/assets/js/blocks/block-wpp-widget.js index d9e2e76..f7568e0 100644 --- a/assets/js/blocks/block-wpp-widget.js +++ b/assets/js/blocks/block-wpp-widget.js @@ -1 +1 @@ -(()=>{"use strict";var e={};e.flame=React.createElement("svg",{viewBox:"0 0 248 379"},React.createElement("path",{fill:"#fff",d:"M-83,96q0-122.5,0-245H165q0,131,0,262a31.87,31.87,0,0,1-.95-4.33A123.87,123.87,0,0,0,153.47,68.3c-12.28-27.74-31.1-50.64-53-71.21C75.67-26.13,55.85-52,54.32-87.87c-.79-18.47.81-36.24,11.59-52.15,1.08-1.59.38-4.4.5-6.64-2.43.1-5.5-.7-7.18.47a140.91,140.91,0,0,0-17.12,13.72C19.49-110.67,3-84.6-9.51-56A149,149,0,0,0-21.86-3.77c-2,39.4,11.38,73.46,36.17,103.51,1.74,2.11,3.51,4.2,5.27,6.3l-.67,1.07c-3.94-1.07-8-1.83-11.82-3.24C-25.17,91.94-52.36,58.57-51.12,21c.1-2.91.21-6.45-3.51-6.49-2,0-4.76,2.16-5.79,4.09-9.4,17.55-16.35,36-19.73,55.73C-81.38,81.49-82.07,88.76-83,96Z",transform:"translate(83 149)"}),React.createElement("path",{fill:"#ba2f2f",d:"M-83,96c.93-7.24,1.62-14.51,2.85-21.7,3.38-19.69,10.33-38.18,19.73-55.73,1-1.93,3.83-4.11,5.79-4.09,3.72,0,3.61,3.58,3.51,6.49-1.25,37.59,25.94,71,58.2,82.89,3.82,1.41,7.87,2.18,11.82,3.24l.67-1.07c-1.76-2.1-3.52-4.19-5.27-6.3C-10.49,69.68-23.88,35.63-21.86-3.77A149,149,0,0,1-9.51-56c12.48-28.62,29-54.69,51.62-76.5a140.91,140.91,0,0,1,17.12-13.72c1.68-1.18,4.75-.37,7.18-.47-.13,2.24.58,5-.5,6.64-10.78,15.9-12.37,33.68-11.59,52.15,1.53,35.89,21.35,61.74,46.11,85,21.94,20.57,40.76,43.47,53,71.21a123.87,123.87,0,0,1,10.59,40.36A31.87,31.87,0,0,0,165,113v9c-.7,4.24-1.17,8.54-2.13,12.73-10.74,46.51-37.08,78.75-84.34,91.58C72.16,228,65.52,228.79,59,230H43a25.19,25.19,0,0,0-3.12-1.18c-10-2.37-20.21-4.12-30-7.12-45.83-14-75.19-44.64-89-90.24-2.28-7.52-2.64-15.63-3.88-23.46Q-83,102-83,96ZM61.63-143.61c-6.24,5.39-12.87,10.38-18.64,16.22A229,229,0,0,0-8.77-46.26,138.37,138.37,0,0,0-16.63,23c4.69,32.54,20.21,59.59,42.4,83.23,1.34,1.43,2.7,2.83,4.8,5-15.23,1-28-3.3-39.74-10.64-29.74-18.62-46-45.23-46.8-81a138.75,138.75,0,0,0-7.46,14.67A178.29,178.29,0,0,0-78.24,93.09C-80.9,129.7-68,160.25-42.78,185.71c28.91,29.16,65.19,41.42,105.43,38.91,43.82-2.73,80.34-35.08,93.53-79.39,8.68-29.18,3.11-56.71-10.29-83.15C134.15,38.92,117.71,19.34,99,1.57,85-11.65,71.34-25.28,62.72-42.69,46.33-75.79,44.36-109.22,61.63-143.61Z",transform:"translate(83 149)"}),React.createElement("path",{fill:"#fff",d:"M-83,108c1.25,7.84,1.61,15.94,3.88,23.46,13.79,45.6,43.15,76.21,89,90.24,9.82,3,20,4.76,30,7.12A25.19,25.19,0,0,1,43,230H-83Q-83,169-83,108Z",transform:"translate(83 149)"}),React.createElement("path",{fill:"#fff",d:"M59,230c6.52-1.21,13.16-2,19.53-3.69,47.26-12.83,73.6-45.07,84.34-91.58,1-4.18,1.43-8.48,2.13-12.73V230Z",transform:"translate(83 149)"}),React.createElement("path",{fill:"#ba2f2f",d:"M61.63-143.61c-17.28,34.39-15.3,67.82,1.09,100.92C71.34-25.28,85-11.65,99,1.57c18.75,17.77,35.2,37.35,46.94,60.51,13.4,26.44,19,54,10.29,83.15-13.18,44.31-49.71,76.66-93.53,79.39-40.25,2.51-76.52-9.75-105.43-38.91C-68,160.25-80.9,129.7-78.24,93.09A178.29,178.29,0,0,1-63.45,34.31,138.75,138.75,0,0,1-56,19.64c.77,35.79,17.06,62.4,46.8,81C2.54,108,15.33,112.3,30.56,111.3c-2.1-2.21-3.46-3.62-4.8-5C3.57,82.62-11.94,55.57-16.63,23A138.37,138.37,0,0,1-8.77-46.26,229,229,0,0,1,43-127.38C48.76-133.23,55.39-138.22,61.63-143.61Z",transform:"translate(83 149)"}));const t=e;function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function s(e,t){for(var a=0;a":">",'"':""","'":"'","/":"/","`":"`"};return e.replace(/[&<>"'/]/gi,(function(e){return t[e]}))}(function(e){var t=document.createElement("div");t.innerHTML=e;var a=t.childNodes[0];return a?a.nodeValue:""}(e)),a({title:e})}}),React.createElement(y,{label:__("Limit","wordpress-popular-posts"),type:"number",value:t.limit,min:"1",onChange:function(e){a({limit:parseInt(e,10)})}}),React.createElement(f,{label:__("Sort posts by","wordpress-popular-posts"),value:t.order_by,options:[{label:__("Total views","wordpress-popular-posts"),value:"views"},{label:__("Avg. daily views","wordpress-popular-posts"),value:"avg"},{label:__("Comments","wordpress-popular-posts"),value:"comments"}],onChange:function(e){a({order_by:e})}}),React.createElement(f,{label:__("Time Range","wordpress-popular-posts"),value:t.range,options:[{label:__("Last 24 Hours","wordpress-popular-posts"),value:"last24hours"},{label:__("Last 7 days","wordpress-popular-posts"),value:"last7days"},{label:__("Last 30 days","wordpress-popular-posts"),value:"last30days"},{label:__("All-time","wordpress-popular-posts"),value:"all"},{label:__("Custom","wordpress-popular-posts"),value:"custom"}],onChange:function(e){a({range:e})}}),"custom"==t.range&&React.createElement("div",{className:"option-subset"},React.createElement(y,{label:__("Time Quantity","wordpress-popular-posts"),type:"number",value:t.time_quantity,min:"1",onChange:function(e){a({time_quantity:parseInt(e,10)})}}),React.createElement(f,{label:__("Time Unit","wordpress-popular-posts"),value:t.time_unit,options:[{label:__("Minute(s)","wordpress-popular-posts"),value:"minute"},{label:__("Hour(s)","wordpress-popular-posts"),value:"hour"},{label:__("Day(s)","wordpress-popular-posts"),value:"day"}],onChange:function(e){a({time_unit:e})}})),React.createElement(h,{label:__("Display only posts published within the selected Time Range","wordpress-popular-posts"),checked:t.freshness,onChange:function(e){a({freshness:e})}}))}},{key:"getFiltersFields",value:function(){var e=this.props,t=e.attributes,a=e.setAttributes,s=this,r=[];if(this.state.taxonomies)for(var o in this.state.taxonomies)r.push({name:this.state.taxonomies[o].name,label:this.state.taxonomies[o].labels.singular_name+" ("+this.state.taxonomies[o].name+")",terms:this.state.taxonomies[o]._terms});return React.createElement(c,null,React.createElement("p",{className:"not-a-legend"},React.createElement("strong",null,__("Filters","wordpress-popular-posts"))),React.createElement(y,{label:__("Post type(s)","wordpress-popular-posts"),help:__("Post types must be comma separated.","wordpress-popular-posts"),value:t.post_type,onChange:function(e){var t=e.replace(/[^a-z0-9-_\,]+/gi,"");a({post_type:t})}}),React.createElement(y,{label:__("Post ID(s) to exclude","wordpress-popular-posts"),help:__("IDs must be comma separated.","wordpress-popular-posts"),value:t.pid,onChange:function(e){var t=e.replace(/[^0-9\,]/g,"");a({pid:t})}}),React.createElement(y,{label:__("Author ID(s)","wordpress-popular-posts"),help:__("IDs must be comma separated.","wordpress-popular-posts"),value:t.author,onChange:function(e){var t=e.replace(/[^0-9\,]/g,"");a({author:t})}}),r&&r.filter((function(e){return"post_format"!=e.name})).map((function(e){return React.createElement(y,{label:e.label,help:__("Term IDs must be comma separated, prefix a minus sign to exclude.","wordpress-popular-posts"),value:e.terms,onChange:function(t){return function(e,t){var a=s.state.taxonomies;t=t.replace(/[^0-9-\,]/g,""),a&&void 0!==a[e]&&(a[e]._terms=t,s.setState({taxonomies:a}))}(e.name,t)},onBlur:function(){return function(e){var t=s.state.taxonomies;if(t&&void 0!==t[e]){var r=t[e]._terms.split(",");r.length&&(r=r.map((function(e){return e.trim()})).filter((function(e){return""!=e&&"-"!=e}))),r.length&&(r=Array.from(new Set(r))),t[e]._terms=r.join(","),s.setState({taxonomies:t});var o="",n="";for(var l in s.state.taxonomies)if(s.state.taxonomies.hasOwnProperty(l)){if(!s.state.taxonomies[l]._terms.length)continue;o+=l+";",n+=s.state.taxonomies[l]._terms+";"}o&&n&&(o=o.replace(new RegExp(";$"),""),n=n.replace(new RegExp(";$"),"")),a({tax:o,term_id:n})}}(e.name)}})})))}},{key:"getPostSettingsFields",value:function(){var e=this.props,t=e.attributes,a=e.setAttributes,s=this;function r(e,t){t=parseInt(t,10),a("width"==e?{thumbnail_width:t}:{thumbnail_height:t})}var o=[];if(this.state.imgSizes)for(var n in this.state.imgSizes)o.push({label:n,value:n});return React.createElement(c,null,React.createElement("p",{className:"not-a-legend"},React.createElement("strong",null,__("Posts settings","wordpress-popular-posts"))),React.createElement(h,{label:__("Shorten title","wordpress-popular-posts"),checked:t.shorten_title,onChange:function(e){a(0==e?{title_length:0,title_by_words:0,shorten_title:e}:{shorten_title:e,title_length:25})}}),t.shorten_title&&React.createElement("div",{className:"option-subset"},React.createElement(y,{label:__("Shorten title to","wordpress-popular-posts"),type:"number",value:t.title_length,min:"1",onChange:function(e){a({title_length:parseInt(e,10)})}}),React.createElement(f,{value:t.title_by_words,options:[{label:__("characters","wordpress-popular-posts"),value:0},{label:__("words","wordpress-popular-posts"),value:1}],onChange:function(e){return a({title_by_words:Number(e)})}})),React.createElement(h,{label:__("Display post excerpt","wordpress-popular-posts"),checked:t.display_post_excerpt,onChange:function(e){a(0==e?{excerpt_length:0,excerpt_by_words:0,display_post_excerpt:e,excerpt_format:!1}:{display_post_excerpt:e,excerpt_length:55})}}),t.display_post_excerpt&&React.createElement("div",{className:"option-subset"},React.createElement(h,{label:__("Keep text format and links","wordpress-popular-posts"),checked:t.excerpt_format,onChange:function(e){return a({excerpt_format:e})}}),React.createElement(y,{label:__("Excerpt length","wordpress-popular-posts"),type:"number",value:t.excerpt_length,min:"1",onChange:function(e){a({excerpt_length:parseInt(e,10)})}}),React.createElement(f,{value:t.excerpt_by_words,options:[{label:__("characters","wordpress-popular-posts"),value:0},{label:__("words","wordpress-popular-posts"),value:1}],onChange:function(e){return a({excerpt_by_words:Number(e)})}})),React.createElement(h,{label:__("Display post thumbnail","wordpress-popular-posts"),checked:t.display_post_thumbnail,onChange:function(e){a(0==e?{thumbnail_width:0,thumbnail_height:0,display_post_thumbnail:e,thumbnail_build:"manual"}:{thumbnail_width:75,thumbnail_height:75,display_post_thumbnail:e})}}),t.display_post_thumbnail&&React.createElement("div",{className:"option-subset"},React.createElement(f,{value:t.thumbnail_build,options:[{label:__("Set size manually","wordpress-popular-posts"),value:"manual"},{label:__("Use predefined size","wordpress-popular-posts"),value:"predefined"}],onChange:function(e){a("predefined"==e?{thumbnail_width:s.state.imgSizes[o[0].value].width,thumbnail_height:s.state.imgSizes[o[0].value].height,thumbnail_size:o[0].value}:{thumbnail_width:75,thumbnail_height:75,thumbnail_size:""}),a({thumbnail_build:e})}}),"manual"==t.thumbnail_build&&React.createElement(c,null,React.createElement(y,{label:__("Thumbnail width","wordpress-popular-posts"),type:"number",help:__("Size in px units (pixels)","wordpress-popular-posts"),value:t.thumbnail_width,min:"1",onChange:function(e){return r("width",e)}}),React.createElement(y,{label:__("Thumbnail height","wordpress-popular-posts"),type:"number",help:__("Size in px units (pixels)","wordpress-popular-posts"),value:t.thumbnail_height,min:"1",onChange:function(e){return r("height",e)}})),"predefined"==t.thumbnail_build&&React.createElement(c,null,React.createElement(f,{value:t.thumbnail_size,options:o,onChange:function(e){a({thumbnail_width:s.state.imgSizes[e].width,thumbnail_height:s.state.imgSizes[e].height,thumbnail_size:e})}}))),_wordpress_popular_posts.can_show_rating&&React.createElement(h,{label:__("Display post rating","wordpress-popular-posts"),checked:t.rating,onChange:function(e){return a({rating:e})}}))}},{key:"getStatsTagFields",value:function(){var e=this.props,t=e.attributes,a=e.setAttributes,s=[];if(this.state.taxonomies)for(var r in this.state.taxonomies)s.push({label:this.state.taxonomies[r].labels.singular_name+" ("+this.state.taxonomies[r].name+")",value:this.state.taxonomies[r].name});return React.createElement(c,null,React.createElement("p",{className:"not-a-legend"},React.createElement("strong",null,__("Stats Tag settings","wordpress-popular-posts"))),React.createElement(h,{label:__("Display comments count","wordpress-popular-posts"),checked:t.stats_comments,onChange:function(e){return a({stats_comments:e})}}),React.createElement(h,{label:__("Display views","wordpress-popular-posts"),checked:t.stats_views,onChange:function(e){return a({stats_views:e})}}),React.createElement(h,{label:__("Display author","wordpress-popular-posts"),checked:t.stats_author,onChange:function(e){return a({stats_author:e})}}),React.createElement(h,{label:__("Display date","wordpress-popular-posts"),checked:t.stats_date,onChange:function(e){return a({stats_date:e})}}),t.stats_date&&React.createElement("div",{className:"option-subset"},React.createElement(f,{label:__("Date Format","wordpress-popular-posts"),value:t.stats_date_format,options:[{label:__("Relative","wordpress-popular-posts"),value:"relative"},{label:__("Month Day, Year","wordpress-popular-posts"),value:"F j, Y"},{label:__("yyyy/mm/dd","wordpress-popular-posts"),value:"Y/m/d"},{label:__("mm/dd/yyyy","wordpress-popular-posts"),value:"m/d/Y"},{label:__("dd/mm/yyyy","wordpress-popular-posts"),value:"d/m/Y"},{label:__("WordPress Date Format","wordpress-popular-posts"),value:"wp_date_format"}],onChange:function(e){return a({stats_date_format:e})}})),React.createElement(h,{label:__("Display taxonomy","wordpress-popular-posts"),checked:t.stats_taxonomy,onChange:function(e){return a({stats_taxonomy:e})}}),t.stats_taxonomy&&React.createElement("div",{className:"option-subset"},React.createElement(f,{label:__("Taxonomy","wordpress-popular-posts"),value:t.taxonomy,options:s,onChange:function(e){return a({taxonomy:e})}})))}},{key:"getHTMLMarkupFields",value:function(){var e=this.props,t=e.attributes,a=e.setAttributes,s=this,r=[{label:__("None","wordpress-popular-posts"),value:""}];if(this.state.themes)for(var o in this.state.themes)r.push({label:this.state.themes[o].json.name,value:o});return React.createElement(c,null,React.createElement("p",{className:"not-a-legend"},React.createElement("strong",null,__("HTML Markup settings","wordpress-popular-posts"))," ",React.createElement("small",null,"(",React.createElement("a",{href:"https://github.com/cabrerahector/wordpress-popular-posts/wiki/5.-FAQ#how-can-i-use-my-own-html-markup-with-your-plugin",target:"_blank"},__("What is this?","wordpress-popular-posts")),")")),React.createElement(h,{label:__("Use custom HTML Markup","wordpress-popular-posts"),checked:t.custom_html,onChange:function(e){return a({custom_html:e})}}),t.custom_html&&React.createElement("div",{className:"option-subset"},React.createElement(g,{rows:"1",label:__("Before title","wordpress-popular-posts"),value:t.header_start,onChange:function(e){return a({header_start:e})}}),React.createElement(g,{rows:"1",label:__("After title","wordpress-popular-posts"),value:t.header_end,onChange:function(e){return a({header_end:e})}}),React.createElement(g,{rows:"1",label:__("Before popular posts","wordpress-popular-posts"),value:t.wpp_start,onChange:function(e){return a({wpp_start:e})}}),React.createElement(g,{rows:"1",label:__("After popular posts","wordpress-popular-posts"),value:t.wpp_end,onChange:function(e){return a({wpp_end:e})}}),React.createElement(g,{label:__("Post HTML markup","wordpress-popular-posts"),value:t.post_html,onChange:function(e){return a({post_html:e})}}),React.createElement("small",null,React.createElement("a",{href:"https://github.com/cabrerahector/wordpress-popular-posts/wiki/2.-Template-tags#content-tags",target:"_blank"},__("Content Tags List","wordpress-popular-posts")))),React.createElement(f,{label:__("Theme","wordpress-popular-posts"),value:t.theme,options:r,onChange:function(e){if(void 0!==s.state.themes[e]){var t=s.state.themes[e].json.config;a({shorten_title:t.shorten_title.active,title_length:t.shorten_title.length,title_by_words:t.shorten_title.words?1:0,display_post_excerpt:t["post-excerpt"].active,excerpt_format:t["post-excerpt"].format,excerpt_length:t["post-excerpt"].length,excerpt_by_words:t["post-excerpt"].words?1:0,display_post_thumbnail:t.thumbnail.active,thumbnail_build:t.thumbnail.build,thumbnail_width:t.thumbnail.width,thumbnail_height:t.thumbnail.height,stats_comments:t.stats_tag.comment_count,stats_views:t.stats_tag.views,stats_author:t.stats_tag.author,stats_date:t.stats_tag.date.active,stats_date_format:t.stats_tag.date.format,stats_taxonomy:t.stats_tag.taxonomy.active,taxonomy:t.stats_tag.taxonomy.name,custom_html:!0,wpp_start:t.markup["wpp-start"],wpp_end:t.markup["wpp-end"],post_html:t.markup["post-html"],theme:e})}else a({theme:e})}}))}},{key:"render",value:function(){if(!this.state.taxonomies||!this.state.themes||!this.state.imgSizes)return React.createElement(_,null);var e=this.props,t=e.isSelected,a=e.className,s=e.attributes,r=a;return r+=this.state.editMode?" in-edit-mode":" in-preview-mode",r+=t?" is-selected":"",[this.getBlockControls(),React.createElement("div",{className:r},this.state.editMode&&React.createElement(c,null,this.getMainFields(),this.getFiltersFields(),this.getPostSettingsFields(),this.getStatsTagFields(),this.getHTMLMarkupFields()),!this.state.editMode&&React.createElement(b,null,React.createElement(p,{block:this.props.name,className:a,attributes:s,urlQueryArgs:{isSelected:t}})))]}}],i&&s(r.prototype,i),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,i}(u),R=wp.blocks.registerBlockType,C=wp.i18n.__;R("wordpress-popular-posts/widget",{title:"WordPress Popular Posts",category:"widgets",icon:t.flame,description:C("A highly customizable block that displays your most popular posts.","wordpress-popular-posts"),keywords:["popular","posts","trending","popularity"],attributes:{_editMode:{type:"boolean",default:!0},_isSelected:{type:"boolean",default:!1},title:{type:"string"},limit:{type:"number",default:10},offset:{type:"number",default:0},order_by:{type:"string",default:"views"},range:{type:"string",default:"last24hours"},time_quantity:{type:"number",default:24},time_unit:{type:"string",default:"hour"},freshness:{type:"boolean",default:!1},post_type:{type:"string",default:"post"},pid:{type:"string",default:""},exclude:{type:"string",default:""},author:{type:"string",default:""},tax:{type:"string",default:""},term_id:{type:"string",default:""},shorten_title:{type:"boolean",default:!1},title_length:{type:"number",default:0},title_by_words:{type:"number",default:0},display_post_excerpt:{type:"boolean",default:!1},excerpt_format:{type:"boolean",default:!1},excerpt_length:{type:"number",default:0},excerpt_by_words:{type:"number",default:0},display_post_thumbnail:{type:"boolean",default:!1},thumbnail_width:{type:"number",default:0},thumbnail_height:{type:"number",default:0},thumbnail_build:{type:"string",default:"manual"},thumbnail_size:{type:"string",default:""},rating:{type:"boolean",default:!1},stats_comments:{type:"boolean",default:!1},stats_views:{type:"boolean",default:!0},stats_author:{type:"boolean",default:!1},stats_date:{type:"boolean",default:!1},stats_date_format:{type:"string",default:"F j, Y"},stats_taxonomy:{type:"boolean",default:!1},taxonomy:{type:"string",default:""},custom_html:{type:"boolean",default:!1},header_start:{type:"string",default:"

"},header_end:{type:"string",default:"

"},wpp_start:{type:"string",default:'
    '},wpp_end:{type:"string",default:"
"},post_html:{type:"string",default:'
  • {thumb} {title} {stats}
  • '},theme:{type:"string",default:""}},supports:{anchor:!0,align:!0,html:!1},example:{attributes:{_editMode:!1,title:"Popular Posts",limit:3,range:"last7days",display_post_excerpt:!0,excerpt_length:75,display_post_thumbnail:!0,thumbnail_width:75,thumbnail_height:75,stats_views:!1,stats_taxonomy:!0,custom_html:!0,wpp_start:'
      ',post_html:'
    • {thumb_img}
      {taxonomy}
      {title}

      {excerpt}

    • ',theme:"cards"}},edit:E,save:function(){return null}})})(); \ No newline at end of file +(()=>{"use strict";var e={};e.flame=React.createElement("svg",{viewBox:"0 0 248 379"},React.createElement("path",{fill:"#fff",d:"M-83,96q0-122.5,0-245H165q0,131,0,262a31.87,31.87,0,0,1-.95-4.33A123.87,123.87,0,0,0,153.47,68.3c-12.28-27.74-31.1-50.64-53-71.21C75.67-26.13,55.85-52,54.32-87.87c-.79-18.47.81-36.24,11.59-52.15,1.08-1.59.38-4.4.5-6.64-2.43.1-5.5-.7-7.18.47a140.91,140.91,0,0,0-17.12,13.72C19.49-110.67,3-84.6-9.51-56A149,149,0,0,0-21.86-3.77c-2,39.4,11.38,73.46,36.17,103.51,1.74,2.11,3.51,4.2,5.27,6.3l-.67,1.07c-3.94-1.07-8-1.83-11.82-3.24C-25.17,91.94-52.36,58.57-51.12,21c.1-2.91.21-6.45-3.51-6.49-2,0-4.76,2.16-5.79,4.09-9.4,17.55-16.35,36-19.73,55.73C-81.38,81.49-82.07,88.76-83,96Z",transform:"translate(83 149)"}),React.createElement("path",{fill:"#ba2f2f",d:"M-83,96c.93-7.24,1.62-14.51,2.85-21.7,3.38-19.69,10.33-38.18,19.73-55.73,1-1.93,3.83-4.11,5.79-4.09,3.72,0,3.61,3.58,3.51,6.49-1.25,37.59,25.94,71,58.2,82.89,3.82,1.41,7.87,2.18,11.82,3.24l.67-1.07c-1.76-2.1-3.52-4.19-5.27-6.3C-10.49,69.68-23.88,35.63-21.86-3.77A149,149,0,0,1-9.51-56c12.48-28.62,29-54.69,51.62-76.5a140.91,140.91,0,0,1,17.12-13.72c1.68-1.18,4.75-.37,7.18-.47-.13,2.24.58,5-.5,6.64-10.78,15.9-12.37,33.68-11.59,52.15,1.53,35.89,21.35,61.74,46.11,85,21.94,20.57,40.76,43.47,53,71.21a123.87,123.87,0,0,1,10.59,40.36A31.87,31.87,0,0,0,165,113v9c-.7,4.24-1.17,8.54-2.13,12.73-10.74,46.51-37.08,78.75-84.34,91.58C72.16,228,65.52,228.79,59,230H43a25.19,25.19,0,0,0-3.12-1.18c-10-2.37-20.21-4.12-30-7.12-45.83-14-75.19-44.64-89-90.24-2.28-7.52-2.64-15.63-3.88-23.46Q-83,102-83,96ZM61.63-143.61c-6.24,5.39-12.87,10.38-18.64,16.22A229,229,0,0,0-8.77-46.26,138.37,138.37,0,0,0-16.63,23c4.69,32.54,20.21,59.59,42.4,83.23,1.34,1.43,2.7,2.83,4.8,5-15.23,1-28-3.3-39.74-10.64-29.74-18.62-46-45.23-46.8-81a138.75,138.75,0,0,0-7.46,14.67A178.29,178.29,0,0,0-78.24,93.09C-80.9,129.7-68,160.25-42.78,185.71c28.91,29.16,65.19,41.42,105.43,38.91,43.82-2.73,80.34-35.08,93.53-79.39,8.68-29.18,3.11-56.71-10.29-83.15C134.15,38.92,117.71,19.34,99,1.57,85-11.65,71.34-25.28,62.72-42.69,46.33-75.79,44.36-109.22,61.63-143.61Z",transform:"translate(83 149)"}),React.createElement("path",{fill:"#fff",d:"M-83,108c1.25,7.84,1.61,15.94,3.88,23.46,13.79,45.6,43.15,76.21,89,90.24,9.82,3,20,4.76,30,7.12A25.19,25.19,0,0,1,43,230H-83Q-83,169-83,108Z",transform:"translate(83 149)"}),React.createElement("path",{fill:"#fff",d:"M59,230c6.52-1.21,13.16-2,19.53-3.69,47.26-12.83,73.6-45.07,84.34-91.58,1-4.18,1.43-8.48,2.13-12.73V230Z",transform:"translate(83 149)"}),React.createElement("path",{fill:"#ba2f2f",d:"M61.63-143.61c-17.28,34.39-15.3,67.82,1.09,100.92C71.34-25.28,85-11.65,99,1.57c18.75,17.77,35.2,37.35,46.94,60.51,13.4,26.44,19,54,10.29,83.15-13.18,44.31-49.71,76.66-93.53,79.39-40.25,2.51-76.52-9.75-105.43-38.91C-68,160.25-80.9,129.7-78.24,93.09A178.29,178.29,0,0,1-63.45,34.31,138.75,138.75,0,0,1-56,19.64c.77,35.79,17.06,62.4,46.8,81C2.54,108,15.33,112.3,30.56,111.3c-2.1-2.21-3.46-3.62-4.8-5C3.57,82.62-11.94,55.57-16.63,23A138.37,138.37,0,0,1-8.77-46.26,229,229,0,0,1,43-127.38C48.76-133.23,55.39-138.22,61.63-143.61Z",transform:"translate(83 149)"}));const t=e;function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function s(e,t){for(var a=0;a":">",'"':""","'":"'","/":"/","`":"`"};return e.replace(/[&<>"'/]/gi,(function(e){return t[e]}))}(function(e){var t=document.createElement("div");t.innerHTML=e;var a=t.childNodes[0];return a?a.nodeValue:""}(e)),a({title:e})}}),React.createElement(y,{label:__("Limit","wordpress-popular-posts"),type:"number",value:t.limit,min:"1",onChange:function(e){a({limit:parseInt(e,10)})}}),React.createElement(f,{label:__("Sort posts by","wordpress-popular-posts"),value:t.order_by,options:[{label:__("Total views","wordpress-popular-posts"),value:"views"},{label:__("Avg. daily views","wordpress-popular-posts"),value:"avg"},{label:__("Comments","wordpress-popular-posts"),value:"comments"}],onChange:function(e){a({order_by:e})}}),React.createElement(f,{label:__("Time Range","wordpress-popular-posts"),value:t.range,options:[{label:__("Last 24 Hours","wordpress-popular-posts"),value:"last24hours"},{label:__("Today","wordpress-popular-posts"),value:"today"},{label:__("Last 7 days","wordpress-popular-posts"),value:"last7days"},{label:__("This week","wordpress-popular-posts"),value:"thisweek"},{label:__("Last 30 days","wordpress-popular-posts"),value:"last30days"},{label:__("This month","wordpress-popular-posts"),value:"thismonth"},{label:__("All-time","wordpress-popular-posts"),value:"all"},{label:__("Custom","wordpress-popular-posts"),value:"custom"}],onChange:function(e){a({range:e})}}),"custom"==t.range&&React.createElement("div",{className:"option-subset"},React.createElement(y,{label:__("Time Quantity","wordpress-popular-posts"),type:"number",value:t.time_quantity,min:"1",onChange:function(e){a({time_quantity:parseInt(e,10)})}}),React.createElement(f,{label:__("Time Unit","wordpress-popular-posts"),value:t.time_unit,options:[{label:__("Minute(s)","wordpress-popular-posts"),value:"minute"},{label:__("Hour(s)","wordpress-popular-posts"),value:"hour"},{label:__("Day(s)","wordpress-popular-posts"),value:"day"}],onChange:function(e){a({time_unit:e})}})),React.createElement(h,{label:__("Display only posts published within the selected Time Range","wordpress-popular-posts"),checked:t.freshness,onChange:function(e){a({freshness:e})}}))}},{key:"getFiltersFields",value:function(){var e=this.props,t=e.attributes,a=e.setAttributes,s=this,r=[];if(this.state.taxonomies)for(var o in this.state.taxonomies)r.push({name:this.state.taxonomies[o].name,label:this.state.taxonomies[o].labels.singular_name+" ("+this.state.taxonomies[o].name+")",terms:this.state.taxonomies[o]._terms});return React.createElement(c,null,React.createElement("p",{className:"not-a-legend"},React.createElement("strong",null,__("Filters","wordpress-popular-posts"))),React.createElement(y,{label:__("Post type(s)","wordpress-popular-posts"),help:__("Post types must be comma separated.","wordpress-popular-posts"),value:t.post_type,onChange:function(e){var t=e.replace(/[^a-z0-9-_\,]+/gi,"");a({post_type:t})}}),React.createElement(y,{label:__("Post ID(s) to exclude","wordpress-popular-posts"),help:__("IDs must be comma separated.","wordpress-popular-posts"),value:t.pid,onChange:function(e){var t=e.replace(/[^0-9\,]/g,"");a({pid:t})}}),React.createElement(y,{label:__("Author ID(s)","wordpress-popular-posts"),help:__("IDs must be comma separated.","wordpress-popular-posts"),value:t.author,onChange:function(e){var t=e.replace(/[^0-9\,]/g,"");a({author:t})}}),r&&r.filter((function(e){return"post_format"!=e.name})).map((function(e){return React.createElement(y,{label:e.label,help:__("Term IDs must be comma separated, prefix a minus sign to exclude.","wordpress-popular-posts"),value:e.terms,onChange:function(t){return function(e,t){var a=s.state.taxonomies;t=t.replace(/[^0-9-\,]/g,""),a&&void 0!==a[e]&&(a[e]._terms=t,s.setState({taxonomies:a}))}(e.name,t)},onBlur:function(){return function(e){var t=s.state.taxonomies;if(t&&void 0!==t[e]){var r=t[e]._terms.split(",");r.length&&(r=r.map((function(e){return e.trim()})).filter((function(e){return""!=e&&"-"!=e}))),r.length&&(r=Array.from(new Set(r))),t[e]._terms=r.join(","),s.setState({taxonomies:t});var o="",n="";for(var l in s.state.taxonomies)if(s.state.taxonomies.hasOwnProperty(l)){if(!s.state.taxonomies[l]._terms.length)continue;o+=l+";",n+=s.state.taxonomies[l]._terms+";"}o&&n&&(o=o.replace(new RegExp(";$"),""),n=n.replace(new RegExp(";$"),"")),a({tax:o,term_id:n})}}(e.name)}})})))}},{key:"getPostSettingsFields",value:function(){var e=this.props,t=e.attributes,a=e.setAttributes,s=this;function r(e,t){t=parseInt(t,10),a("width"==e?{thumbnail_width:t}:{thumbnail_height:t})}var o=[];if(this.state.imgSizes)for(var n in this.state.imgSizes)o.push({label:n,value:n});return React.createElement(c,null,React.createElement("p",{className:"not-a-legend"},React.createElement("strong",null,__("Posts settings","wordpress-popular-posts"))),React.createElement(h,{label:__("Shorten title","wordpress-popular-posts"),checked:t.shorten_title,onChange:function(e){a(0==e?{title_length:0,title_by_words:0,shorten_title:e}:{shorten_title:e,title_length:25})}}),t.shorten_title&&React.createElement("div",{className:"option-subset"},React.createElement(y,{label:__("Shorten title to","wordpress-popular-posts"),type:"number",value:t.title_length,min:"1",onChange:function(e){a({title_length:parseInt(e,10)})}}),React.createElement(f,{value:t.title_by_words,options:[{label:__("characters","wordpress-popular-posts"),value:0},{label:__("words","wordpress-popular-posts"),value:1}],onChange:function(e){return a({title_by_words:Number(e)})}})),React.createElement(h,{label:__("Display post excerpt","wordpress-popular-posts"),checked:t.display_post_excerpt,onChange:function(e){a(0==e?{excerpt_length:0,excerpt_by_words:0,display_post_excerpt:e,excerpt_format:!1}:{display_post_excerpt:e,excerpt_length:55})}}),t.display_post_excerpt&&React.createElement("div",{className:"option-subset"},React.createElement(h,{label:__("Keep text format and links","wordpress-popular-posts"),checked:t.excerpt_format,onChange:function(e){return a({excerpt_format:e})}}),React.createElement(y,{label:__("Excerpt length","wordpress-popular-posts"),type:"number",value:t.excerpt_length,min:"1",onChange:function(e){a({excerpt_length:parseInt(e,10)})}}),React.createElement(f,{value:t.excerpt_by_words,options:[{label:__("characters","wordpress-popular-posts"),value:0},{label:__("words","wordpress-popular-posts"),value:1}],onChange:function(e){return a({excerpt_by_words:Number(e)})}})),React.createElement(h,{label:__("Display post thumbnail","wordpress-popular-posts"),checked:t.display_post_thumbnail,onChange:function(e){a(0==e?{thumbnail_width:0,thumbnail_height:0,display_post_thumbnail:e,thumbnail_build:"manual"}:{thumbnail_width:75,thumbnail_height:75,display_post_thumbnail:e})}}),t.display_post_thumbnail&&React.createElement("div",{className:"option-subset"},React.createElement(f,{value:t.thumbnail_build,options:[{label:__("Set size manually","wordpress-popular-posts"),value:"manual"},{label:__("Use predefined size","wordpress-popular-posts"),value:"predefined"}],onChange:function(e){a("predefined"==e?{thumbnail_width:s.state.imgSizes[o[0].value].width,thumbnail_height:s.state.imgSizes[o[0].value].height,thumbnail_size:o[0].value}:{thumbnail_width:75,thumbnail_height:75,thumbnail_size:""}),a({thumbnail_build:e})}}),"manual"==t.thumbnail_build&&React.createElement(c,null,React.createElement(y,{label:__("Thumbnail width","wordpress-popular-posts"),type:"number",help:__("Size in px units (pixels)","wordpress-popular-posts"),value:t.thumbnail_width,min:"1",onChange:function(e){return r("width",e)}}),React.createElement(y,{label:__("Thumbnail height","wordpress-popular-posts"),type:"number",help:__("Size in px units (pixels)","wordpress-popular-posts"),value:t.thumbnail_height,min:"1",onChange:function(e){return r("height",e)}})),"predefined"==t.thumbnail_build&&React.createElement(c,null,React.createElement(f,{value:t.thumbnail_size,options:o,onChange:function(e){a({thumbnail_width:s.state.imgSizes[e].width,thumbnail_height:s.state.imgSizes[e].height,thumbnail_size:e})}}))),_wordpress_popular_posts.can_show_rating&&React.createElement(h,{label:__("Display post rating","wordpress-popular-posts"),checked:t.rating,onChange:function(e){return a({rating:e})}}))}},{key:"getStatsTagFields",value:function(){var e=this.props,t=e.attributes,a=e.setAttributes,s=[];if(this.state.taxonomies)for(var r in this.state.taxonomies)s.push({label:this.state.taxonomies[r].labels.singular_name+" ("+this.state.taxonomies[r].name+")",value:this.state.taxonomies[r].name});return React.createElement(c,null,React.createElement("p",{className:"not-a-legend"},React.createElement("strong",null,__("Stats Tag settings","wordpress-popular-posts"))),React.createElement(h,{label:__("Display comments count","wordpress-popular-posts"),checked:t.stats_comments,onChange:function(e){return a({stats_comments:e})}}),React.createElement(h,{label:__("Display views","wordpress-popular-posts"),checked:t.stats_views,onChange:function(e){return a({stats_views:e})}}),React.createElement(h,{label:__("Display author","wordpress-popular-posts"),checked:t.stats_author,onChange:function(e){return a({stats_author:e})}}),React.createElement(h,{label:__("Display date","wordpress-popular-posts"),checked:t.stats_date,onChange:function(e){return a({stats_date:e})}}),t.stats_date&&React.createElement("div",{className:"option-subset"},React.createElement(f,{label:__("Date Format","wordpress-popular-posts"),value:t.stats_date_format,options:[{label:__("Relative","wordpress-popular-posts"),value:"relative"},{label:__("Month Day, Year","wordpress-popular-posts"),value:"F j, Y"},{label:__("yyyy/mm/dd","wordpress-popular-posts"),value:"Y/m/d"},{label:__("mm/dd/yyyy","wordpress-popular-posts"),value:"m/d/Y"},{label:__("dd/mm/yyyy","wordpress-popular-posts"),value:"d/m/Y"},{label:__("WordPress Date Format","wordpress-popular-posts"),value:"wp_date_format"}],onChange:function(e){return a({stats_date_format:e})}})),React.createElement(h,{label:__("Display taxonomy","wordpress-popular-posts"),checked:t.stats_taxonomy,onChange:function(e){return a({stats_taxonomy:e})}}),t.stats_taxonomy&&React.createElement("div",{className:"option-subset"},React.createElement(f,{label:__("Taxonomy","wordpress-popular-posts"),value:t.taxonomy,options:s,onChange:function(e){return a({taxonomy:e})}})))}},{key:"getHTMLMarkupFields",value:function(){var e=this.props,t=e.attributes,a=e.setAttributes,s=this,r=[{label:__("None","wordpress-popular-posts"),value:""}];if(this.state.themes)for(var o in this.state.themes)r.push({label:this.state.themes[o].json.name,value:o});return React.createElement(c,null,React.createElement("p",{className:"not-a-legend"},React.createElement("strong",null,__("HTML Markup settings","wordpress-popular-posts"))," ",React.createElement("small",null,"(",React.createElement("a",{href:"https://github.com/cabrerahector/wordpress-popular-posts/wiki/5.-FAQ#how-can-i-use-my-own-html-markup-with-your-plugin",target:"_blank"},__("What is this?","wordpress-popular-posts")),")")),React.createElement(h,{label:__("Use custom HTML Markup","wordpress-popular-posts"),checked:t.custom_html,onChange:function(e){return a({custom_html:e})}}),t.custom_html&&React.createElement("div",{className:"option-subset"},React.createElement(g,{rows:"1",label:__("Before title","wordpress-popular-posts"),value:t.header_start,onChange:function(e){return a({header_start:e})}}),React.createElement(g,{rows:"1",label:__("After title","wordpress-popular-posts"),value:t.header_end,onChange:function(e){return a({header_end:e})}}),React.createElement(g,{rows:"1",label:__("Before popular posts","wordpress-popular-posts"),value:t.wpp_start,onChange:function(e){return a({wpp_start:e})}}),React.createElement(g,{rows:"1",label:__("After popular posts","wordpress-popular-posts"),value:t.wpp_end,onChange:function(e){return a({wpp_end:e})}}),React.createElement(g,{label:__("Post HTML markup","wordpress-popular-posts"),value:t.post_html,onChange:function(e){return a({post_html:e})}}),React.createElement("small",null,React.createElement("a",{href:"https://github.com/cabrerahector/wordpress-popular-posts/wiki/2.-Template-tags#content-tags",target:"_blank"},__("Content Tags List","wordpress-popular-posts")))),React.createElement(f,{label:__("Theme","wordpress-popular-posts"),value:t.theme,options:r,onChange:function(e){if(void 0!==s.state.themes[e]){var t=s.state.themes[e].json.config;a({shorten_title:t.shorten_title.active,title_length:t.shorten_title.length,title_by_words:t.shorten_title.words?1:0,display_post_excerpt:t["post-excerpt"].active,excerpt_format:t["post-excerpt"].format,excerpt_length:t["post-excerpt"].length,excerpt_by_words:t["post-excerpt"].words?1:0,display_post_thumbnail:t.thumbnail.active,thumbnail_build:t.thumbnail.build,thumbnail_width:t.thumbnail.width,thumbnail_height:t.thumbnail.height,stats_comments:t.stats_tag.comment_count,stats_views:t.stats_tag.views,stats_author:t.stats_tag.author,stats_date:t.stats_tag.date.active,stats_date_format:t.stats_tag.date.format,stats_taxonomy:t.stats_tag.taxonomy.active,taxonomy:t.stats_tag.taxonomy.name,custom_html:!0,wpp_start:t.markup["wpp-start"],wpp_end:t.markup["wpp-end"],post_html:t.markup["post-html"],theme:e})}else a({theme:e})}}))}},{key:"render",value:function(){if(!this.state.taxonomies||!this.state.themes||!this.state.imgSizes)return React.createElement(_,null);var e=this.props,t=e.isSelected,a=e.className,s=e.attributes,r=a;return r+=this.state.editMode?" in-edit-mode":" in-preview-mode",r+=t?" is-selected":"",[this.getBlockControls(),React.createElement("div",{className:r},this.state.editMode&&React.createElement(c,null,this.getMainFields(),this.getFiltersFields(),this.getPostSettingsFields(),this.getStatsTagFields(),this.getHTMLMarkupFields()),!this.state.editMode&&React.createElement(b,null,React.createElement(p,{block:this.props.name,className:a,attributes:s,urlQueryArgs:{isSelected:t}})))]}}],i&&s(r.prototype,i),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,i}(u),R=wp.blocks.registerBlockType,C=wp.i18n.__;R("wordpress-popular-posts/widget",{title:"WordPress Popular Posts",category:"widgets",icon:t.flame,description:C("A highly customizable block that displays your most popular posts.","wordpress-popular-posts"),keywords:["popular","posts","trending","popularity"],attributes:{_editMode:{type:"boolean",default:!0},_isSelected:{type:"boolean",default:!1},title:{type:"string"},limit:{type:"number",default:10},offset:{type:"number",default:0},order_by:{type:"string",default:"views"},range:{type:"string",default:"last24hours"},time_quantity:{type:"number",default:24},time_unit:{type:"string",default:"hour"},freshness:{type:"boolean",default:!1},post_type:{type:"string",default:"post"},pid:{type:"string",default:""},exclude:{type:"string",default:""},author:{type:"string",default:""},tax:{type:"string",default:""},term_id:{type:"string",default:""},shorten_title:{type:"boolean",default:!1},title_length:{type:"number",default:0},title_by_words:{type:"number",default:0},display_post_excerpt:{type:"boolean",default:!1},excerpt_format:{type:"boolean",default:!1},excerpt_length:{type:"number",default:0},excerpt_by_words:{type:"number",default:0},display_post_thumbnail:{type:"boolean",default:!1},thumbnail_width:{type:"number",default:0},thumbnail_height:{type:"number",default:0},thumbnail_build:{type:"string",default:"manual"},thumbnail_size:{type:"string",default:""},rating:{type:"boolean",default:!1},stats_comments:{type:"boolean",default:!1},stats_views:{type:"boolean",default:!0},stats_author:{type:"boolean",default:!1},stats_date:{type:"boolean",default:!1},stats_date_format:{type:"string",default:"F j, Y"},stats_taxonomy:{type:"boolean",default:!1},taxonomy:{type:"string",default:""},custom_html:{type:"boolean",default:!1},header_start:{type:"string",default:"

      "},header_end:{type:"string",default:"

      "},wpp_start:{type:"string",default:'
        '},wpp_end:{type:"string",default:"
      "},post_html:{type:"string",default:'
    • {thumb} {title} {stats}
    • '},theme:{type:"string",default:""}},supports:{anchor:!0,align:!0,html:!1},example:{attributes:{_editMode:!1,title:"Popular Posts",limit:3,range:"last7days",display_post_excerpt:!0,excerpt_length:75,display_post_thumbnail:!0,thumbnail_width:75,thumbnail_height:75,stats_views:!1,stats_taxonomy:!0,custom_html:!0,wpp_start:'
        ',post_html:'
      • {thumb_img}
        {taxonomy}
        {title}

        {excerpt}

      • ',theme:"cards"}},edit:E,save:function(){return null}})})(); \ No newline at end of file diff --git a/src/Block/Widget/edit.js b/src/Block/Widget/edit.js index c81be5c..d5427e7 100644 --- a/src/Block/Widget/edit.js +++ b/src/Block/Widget/edit.js @@ -197,8 +197,11 @@ export class WPPWidgetBlockEdit extends Component value={attributes.range} options={[ {label: __('Last 24 Hours', 'wordpress-popular-posts'), value: 'last24hours'}, + {label: __('Today', 'wordpress-popular-posts'), value: 'today'}, {label: __('Last 7 days', 'wordpress-popular-posts'), value: 'last7days'}, + {label: __('This week', 'wordpress-popular-posts'), value: 'thisweek'}, {label: __('Last 30 days', 'wordpress-popular-posts'), value: 'last30days'}, + {label: __('This month', 'wordpress-popular-posts'), value: 'thismonth'}, {label: __('All-time', 'wordpress-popular-posts'), value: 'all'}, {label: __('Custom', 'wordpress-popular-posts'), value: 'custom'}, ]} diff --git a/src/Compatibility/Elementor/widgets/widget-controls.php b/src/Compatibility/Elementor/widgets/widget-controls.php index 37a3a22..cab04df 100644 --- a/src/Compatibility/Elementor/widgets/widget-controls.php +++ b/src/Compatibility/Elementor/widgets/widget-controls.php @@ -55,8 +55,11 @@ 'default' => 'last24hours', 'options' => [ 'last24hours' => esc_html__('Last 24 Hours', 'wordpress-popular-posts'), + 'today' => esc_html__('Today', 'wordpress-popular-posts'), 'last7days' => esc_html__('Last 7 days', 'wordpress-popular-posts'), + 'thisweek' => esc_html__('This week', 'wordpress-popular-posts'), 'last30days' => esc_html__('Last 30 days', 'wordpress-popular-posts'), + 'thismonth' => esc_html__('This month', 'wordpress-popular-posts'), 'all' => esc_html__('All-time', 'wordpress-popular-posts'), 'custom' => esc_html__('Custom', 'wordpress-popular-posts') ] diff --git a/src/Query.php b/src/Query.php index 2fafc21..efd7c7f 100644 --- a/src/Query.php +++ b/src/Query.php @@ -364,18 +364,38 @@ private function build_query() $start_datetime = $start_date->format('Y-m-d H:i:s'); $views_time_range = "view_datetime >= '{$start_datetime}'"; break; + case 'today': + $start_datetime = $start_date->format('Y-m-d 00:00:00'); + $end_datetime = $start_date->format('Y-m-d 23:59:55'); + $views_time_range = "view_date >= '{$start_datetime}' AND view_date <= '{$end_datetime}'"; + break; case 'last7days': case 'weekly': $start_date = $start_date->sub(new \DateInterval('P6D')); $start_datetime = $start_date->format('Y-m-d'); $views_time_range = "view_date >= '{$start_datetime}'"; break; + case 'thisweek': + $start_date = new \DateTime('Monday this week', wp_timezone()); + $start_datetime = $start_date->format('Y-m-d 00:00:00'); + $start_date->add(new \DateInterval('P6D')); + $end_datetime = $start_date->format('Y-m-d 23:59:59'); + $views_time_range = "view_date >= '{$start_datetime}' AND view_date <= '{$end_datetime}'"; + break; case 'last30days': case 'monthly': $start_date = $start_date->sub(new \DateInterval('P29D')); $start_datetime = $start_date->format('Y-m-d'); $views_time_range = "view_date >= '{$start_datetime}'"; break; + case 'thismonth': + $start_date = new \DateTime('First day of this month', wp_timezone()); + $start_datetime = $start_date->format('Y-m-d 00:00:00'); + $end_date = new \DateTime('Last day of this month', wp_timezone()); + $end_datetime = $end_date->format('Y-m-d 23:59:59'); + $views_time_range = "view_date >= '{$start_datetime}' AND view_date <= '{$end_datetime}'"; + break; + break; case 'custom': $time_units = ['MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH']; diff --git a/src/Rest/PostsEndpoint.php b/src/Rest/PostsEndpoint.php index 390adcc..d94ea1c 100644 --- a/src/Rest/PostsEndpoint.php +++ b/src/Rest/PostsEndpoint.php @@ -153,7 +153,7 @@ public function get_collection_params() 'range' => [ 'description' => __('Return popular posts from a specified time range.'), 'type' => 'string', - 'enum' => ['last24hours', 'last7days', 'last30days', 'all', 'custom'], + 'enum' => ['last24hours', 'today', 'last7days', 'thisweek', 'last30days', 'thismonth', 'all', 'custom'], 'default' => 'last24hours', 'sanitize_callback' => 'sanitize_text_field', 'validate_callback' => 'rest_validate_request_arg', diff --git a/src/Shortcode/Posts.php b/src/Shortcode/Posts.php index 2d27ff1..440c219 100644 --- a/src/Shortcode/Posts.php +++ b/src/Shortcode/Posts.php @@ -123,7 +123,7 @@ public function handle($attributes = []) : string // possible values for "Time Range" and "Order by" $time_units = ['minute', 'hour', 'day', 'week', 'month']; - $range_values = ['daily', 'last24hours', 'weekly', 'last7days', 'monthly', 'last30days', 'all', 'custom']; + $range_values = ['daily', 'last24hours', 'today', 'weekly', 'last7days', 'thisweek', 'monthly', 'last30days', 'thismonth', 'all', 'custom']; $order_by_values = ['comments', 'views', 'avg']; $shortcode_ops = [ From d6e39a0c07719cffae28fc920fbceabc1468567e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Cabrera?= Date: Thu, 24 Apr 2025 19:34:49 -0400 Subject: [PATCH 3/7] Block: updates allowed time range values --- src/Block/Widget/Widget.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Block/Widget/Widget.php b/src/Block/Widget/Widget.php index f62e619..62f0ba6 100644 --- a/src/Block/Widget/Widget.php +++ b/src/Block/Widget/Widget.php @@ -369,7 +369,7 @@ public function render(array $attributes) // possible values for "Time Range" and "Order by" $time_units = ['minute', 'hour', 'day', 'week', 'month']; - $range_values = ['daily', 'last24hours', 'weekly', 'last7days', 'monthly', 'last30days', 'all', 'custom']; + $range_values = ['daily', 'last24hours', 'today', 'weekly', 'last7days', 'thisweek', 'monthly', 'last30days', 'thismonth', 'all', 'custom']; $order_by_values = ['comments', 'views', 'avg']; $theme_data = $this->themer->get_theme($theme); From 75e6c0c182c486967d38350c1b31da0d11a424d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Cabrera?= Date: Thu, 24 Apr 2025 21:41:46 -0400 Subject: [PATCH 4/7] thisweek starts on day defined in General Settings --- src/Helper.php | 38 ++++++++++++++++++++++++++++++++++++++ src/Query.php | 5 ++++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/Helper.php b/src/Helper.php index 1208adc..aa67c4e 100644 --- a/src/Helper.php +++ b/src/Helper.php @@ -364,4 +364,42 @@ public static function sanitize_html(string $html, array $options) return wp_kses($html, $allowed_tags); } + + /** + * Returns the name of the first day of the week as per + * WordPress settings. + * + * @since 7.4.0 + * @return string + */ + public static function get_start_of_week() + { + $start_of_week = absint(get_option('start_of_week', 0)); + + switch( $start_of_week ) { + case 1; + $day = 'Monday'; + break; + case 2; + $day = 'Tuesday'; + break; + case 3; + $day = 'Wednesday'; + break; + case 4; + $day = 'Thurdsday'; + break; + case 5; + $day = 'Friday'; + break; + case 6; + $day = 'Saturday'; + break; + default: + $day = 'Sunday'; + break; + } + + return $day; + } } diff --git a/src/Query.php b/src/Query.php index efd7c7f..e1165fa 100644 --- a/src/Query.php +++ b/src/Query.php @@ -376,7 +376,10 @@ private function build_query() $views_time_range = "view_date >= '{$start_datetime}'"; break; case 'thisweek': - $start_date = new \DateTime('Monday this week', wp_timezone()); + $start_of_week = Helper::get_start_of_week(); + $today_weekday = $now->format('l'); + $datetime = ( $today_weekday === $start_of_week ) ? 'today' : 'last ' . $start_of_week; + $start_date = new \DateTime($datetime, wp_timezone()); $start_datetime = $start_date->format('Y-m-d 00:00:00'); $start_date->add(new \DateInterval('P6D')); $end_datetime = $start_date->format('Y-m-d 23:59:59'); From c5b755951bc1fe839c07375cdd4c86601fbb521d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Cabrera?= Date: Thu, 1 May 2025 11:27:50 -0400 Subject: [PATCH 5/7] Query: removes duplicate break sentence --- src/Query.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Query.php b/src/Query.php index e1165fa..0757029 100644 --- a/src/Query.php +++ b/src/Query.php @@ -398,7 +398,6 @@ private function build_query() $end_datetime = $end_date->format('Y-m-d 23:59:59'); $views_time_range = "view_date >= '{$start_datetime}' AND view_date <= '{$end_datetime}'"; break; - break; case 'custom': $time_units = ['MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH']; From 0036621995d7c4cfba522b19390415471ba26912 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Cabrera?= Date: Sun, 25 May 2025 10:06:54 -0400 Subject: [PATCH 6/7] Adds 'This year' Time Range --- assets/js/blocks/block-wpp-widget.asset.php | 2 +- assets/js/blocks/block-wpp-widget.js | 2 +- src/Block/Widget/Widget.php | 2 +- src/Block/Widget/edit.js | 1 + src/Compatibility/Elementor/widgets/widget-controls.php | 1 + src/Query.php | 8 +++++++- src/Rest/PostsEndpoint.php | 2 +- src/Shortcode/Posts.php | 2 +- 8 files changed, 14 insertions(+), 6 deletions(-) diff --git a/assets/js/blocks/block-wpp-widget.asset.php b/assets/js/blocks/block-wpp-widget.asset.php index b544629..21d4852 100644 --- a/assets/js/blocks/block-wpp-widget.asset.php +++ b/assets/js/blocks/block-wpp-widget.asset.php @@ -1 +1 @@ - array(), 'version' => 'cbd713bf860812786509'); + array(), 'version' => '26d9eb44dc363c7be1ed'); diff --git a/assets/js/blocks/block-wpp-widget.js b/assets/js/blocks/block-wpp-widget.js index f7568e0..81f0bf8 100644 --- a/assets/js/blocks/block-wpp-widget.js +++ b/assets/js/blocks/block-wpp-widget.js @@ -1 +1 @@ -(()=>{"use strict";var e={};e.flame=React.createElement("svg",{viewBox:"0 0 248 379"},React.createElement("path",{fill:"#fff",d:"M-83,96q0-122.5,0-245H165q0,131,0,262a31.87,31.87,0,0,1-.95-4.33A123.87,123.87,0,0,0,153.47,68.3c-12.28-27.74-31.1-50.64-53-71.21C75.67-26.13,55.85-52,54.32-87.87c-.79-18.47.81-36.24,11.59-52.15,1.08-1.59.38-4.4.5-6.64-2.43.1-5.5-.7-7.18.47a140.91,140.91,0,0,0-17.12,13.72C19.49-110.67,3-84.6-9.51-56A149,149,0,0,0-21.86-3.77c-2,39.4,11.38,73.46,36.17,103.51,1.74,2.11,3.51,4.2,5.27,6.3l-.67,1.07c-3.94-1.07-8-1.83-11.82-3.24C-25.17,91.94-52.36,58.57-51.12,21c.1-2.91.21-6.45-3.51-6.49-2,0-4.76,2.16-5.79,4.09-9.4,17.55-16.35,36-19.73,55.73C-81.38,81.49-82.07,88.76-83,96Z",transform:"translate(83 149)"}),React.createElement("path",{fill:"#ba2f2f",d:"M-83,96c.93-7.24,1.62-14.51,2.85-21.7,3.38-19.69,10.33-38.18,19.73-55.73,1-1.93,3.83-4.11,5.79-4.09,3.72,0,3.61,3.58,3.51,6.49-1.25,37.59,25.94,71,58.2,82.89,3.82,1.41,7.87,2.18,11.82,3.24l.67-1.07c-1.76-2.1-3.52-4.19-5.27-6.3C-10.49,69.68-23.88,35.63-21.86-3.77A149,149,0,0,1-9.51-56c12.48-28.62,29-54.69,51.62-76.5a140.91,140.91,0,0,1,17.12-13.72c1.68-1.18,4.75-.37,7.18-.47-.13,2.24.58,5-.5,6.64-10.78,15.9-12.37,33.68-11.59,52.15,1.53,35.89,21.35,61.74,46.11,85,21.94,20.57,40.76,43.47,53,71.21a123.87,123.87,0,0,1,10.59,40.36A31.87,31.87,0,0,0,165,113v9c-.7,4.24-1.17,8.54-2.13,12.73-10.74,46.51-37.08,78.75-84.34,91.58C72.16,228,65.52,228.79,59,230H43a25.19,25.19,0,0,0-3.12-1.18c-10-2.37-20.21-4.12-30-7.12-45.83-14-75.19-44.64-89-90.24-2.28-7.52-2.64-15.63-3.88-23.46Q-83,102-83,96ZM61.63-143.61c-6.24,5.39-12.87,10.38-18.64,16.22A229,229,0,0,0-8.77-46.26,138.37,138.37,0,0,0-16.63,23c4.69,32.54,20.21,59.59,42.4,83.23,1.34,1.43,2.7,2.83,4.8,5-15.23,1-28-3.3-39.74-10.64-29.74-18.62-46-45.23-46.8-81a138.75,138.75,0,0,0-7.46,14.67A178.29,178.29,0,0,0-78.24,93.09C-80.9,129.7-68,160.25-42.78,185.71c28.91,29.16,65.19,41.42,105.43,38.91,43.82-2.73,80.34-35.08,93.53-79.39,8.68-29.18,3.11-56.71-10.29-83.15C134.15,38.92,117.71,19.34,99,1.57,85-11.65,71.34-25.28,62.72-42.69,46.33-75.79,44.36-109.22,61.63-143.61Z",transform:"translate(83 149)"}),React.createElement("path",{fill:"#fff",d:"M-83,108c1.25,7.84,1.61,15.94,3.88,23.46,13.79,45.6,43.15,76.21,89,90.24,9.82,3,20,4.76,30,7.12A25.19,25.19,0,0,1,43,230H-83Q-83,169-83,108Z",transform:"translate(83 149)"}),React.createElement("path",{fill:"#fff",d:"M59,230c6.52-1.21,13.16-2,19.53-3.69,47.26-12.83,73.6-45.07,84.34-91.58,1-4.18,1.43-8.48,2.13-12.73V230Z",transform:"translate(83 149)"}),React.createElement("path",{fill:"#ba2f2f",d:"M61.63-143.61c-17.28,34.39-15.3,67.82,1.09,100.92C71.34-25.28,85-11.65,99,1.57c18.75,17.77,35.2,37.35,46.94,60.51,13.4,26.44,19,54,10.29,83.15-13.18,44.31-49.71,76.66-93.53,79.39-40.25,2.51-76.52-9.75-105.43-38.91C-68,160.25-80.9,129.7-78.24,93.09A178.29,178.29,0,0,1-63.45,34.31,138.75,138.75,0,0,1-56,19.64c.77,35.79,17.06,62.4,46.8,81C2.54,108,15.33,112.3,30.56,111.3c-2.1-2.21-3.46-3.62-4.8-5C3.57,82.62-11.94,55.57-16.63,23A138.37,138.37,0,0,1-8.77-46.26,229,229,0,0,1,43-127.38C48.76-133.23,55.39-138.22,61.63-143.61Z",transform:"translate(83 149)"}));const t=e;function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function s(e,t){for(var a=0;a":">",'"':""","'":"'","/":"/","`":"`"};return e.replace(/[&<>"'/]/gi,(function(e){return t[e]}))}(function(e){var t=document.createElement("div");t.innerHTML=e;var a=t.childNodes[0];return a?a.nodeValue:""}(e)),a({title:e})}}),React.createElement(y,{label:__("Limit","wordpress-popular-posts"),type:"number",value:t.limit,min:"1",onChange:function(e){a({limit:parseInt(e,10)})}}),React.createElement(f,{label:__("Sort posts by","wordpress-popular-posts"),value:t.order_by,options:[{label:__("Total views","wordpress-popular-posts"),value:"views"},{label:__("Avg. daily views","wordpress-popular-posts"),value:"avg"},{label:__("Comments","wordpress-popular-posts"),value:"comments"}],onChange:function(e){a({order_by:e})}}),React.createElement(f,{label:__("Time Range","wordpress-popular-posts"),value:t.range,options:[{label:__("Last 24 Hours","wordpress-popular-posts"),value:"last24hours"},{label:__("Today","wordpress-popular-posts"),value:"today"},{label:__("Last 7 days","wordpress-popular-posts"),value:"last7days"},{label:__("This week","wordpress-popular-posts"),value:"thisweek"},{label:__("Last 30 days","wordpress-popular-posts"),value:"last30days"},{label:__("This month","wordpress-popular-posts"),value:"thismonth"},{label:__("All-time","wordpress-popular-posts"),value:"all"},{label:__("Custom","wordpress-popular-posts"),value:"custom"}],onChange:function(e){a({range:e})}}),"custom"==t.range&&React.createElement("div",{className:"option-subset"},React.createElement(y,{label:__("Time Quantity","wordpress-popular-posts"),type:"number",value:t.time_quantity,min:"1",onChange:function(e){a({time_quantity:parseInt(e,10)})}}),React.createElement(f,{label:__("Time Unit","wordpress-popular-posts"),value:t.time_unit,options:[{label:__("Minute(s)","wordpress-popular-posts"),value:"minute"},{label:__("Hour(s)","wordpress-popular-posts"),value:"hour"},{label:__("Day(s)","wordpress-popular-posts"),value:"day"}],onChange:function(e){a({time_unit:e})}})),React.createElement(h,{label:__("Display only posts published within the selected Time Range","wordpress-popular-posts"),checked:t.freshness,onChange:function(e){a({freshness:e})}}))}},{key:"getFiltersFields",value:function(){var e=this.props,t=e.attributes,a=e.setAttributes,s=this,r=[];if(this.state.taxonomies)for(var o in this.state.taxonomies)r.push({name:this.state.taxonomies[o].name,label:this.state.taxonomies[o].labels.singular_name+" ("+this.state.taxonomies[o].name+")",terms:this.state.taxonomies[o]._terms});return React.createElement(c,null,React.createElement("p",{className:"not-a-legend"},React.createElement("strong",null,__("Filters","wordpress-popular-posts"))),React.createElement(y,{label:__("Post type(s)","wordpress-popular-posts"),help:__("Post types must be comma separated.","wordpress-popular-posts"),value:t.post_type,onChange:function(e){var t=e.replace(/[^a-z0-9-_\,]+/gi,"");a({post_type:t})}}),React.createElement(y,{label:__("Post ID(s) to exclude","wordpress-popular-posts"),help:__("IDs must be comma separated.","wordpress-popular-posts"),value:t.pid,onChange:function(e){var t=e.replace(/[^0-9\,]/g,"");a({pid:t})}}),React.createElement(y,{label:__("Author ID(s)","wordpress-popular-posts"),help:__("IDs must be comma separated.","wordpress-popular-posts"),value:t.author,onChange:function(e){var t=e.replace(/[^0-9\,]/g,"");a({author:t})}}),r&&r.filter((function(e){return"post_format"!=e.name})).map((function(e){return React.createElement(y,{label:e.label,help:__("Term IDs must be comma separated, prefix a minus sign to exclude.","wordpress-popular-posts"),value:e.terms,onChange:function(t){return function(e,t){var a=s.state.taxonomies;t=t.replace(/[^0-9-\,]/g,""),a&&void 0!==a[e]&&(a[e]._terms=t,s.setState({taxonomies:a}))}(e.name,t)},onBlur:function(){return function(e){var t=s.state.taxonomies;if(t&&void 0!==t[e]){var r=t[e]._terms.split(",");r.length&&(r=r.map((function(e){return e.trim()})).filter((function(e){return""!=e&&"-"!=e}))),r.length&&(r=Array.from(new Set(r))),t[e]._terms=r.join(","),s.setState({taxonomies:t});var o="",n="";for(var l in s.state.taxonomies)if(s.state.taxonomies.hasOwnProperty(l)){if(!s.state.taxonomies[l]._terms.length)continue;o+=l+";",n+=s.state.taxonomies[l]._terms+";"}o&&n&&(o=o.replace(new RegExp(";$"),""),n=n.replace(new RegExp(";$"),"")),a({tax:o,term_id:n})}}(e.name)}})})))}},{key:"getPostSettingsFields",value:function(){var e=this.props,t=e.attributes,a=e.setAttributes,s=this;function r(e,t){t=parseInt(t,10),a("width"==e?{thumbnail_width:t}:{thumbnail_height:t})}var o=[];if(this.state.imgSizes)for(var n in this.state.imgSizes)o.push({label:n,value:n});return React.createElement(c,null,React.createElement("p",{className:"not-a-legend"},React.createElement("strong",null,__("Posts settings","wordpress-popular-posts"))),React.createElement(h,{label:__("Shorten title","wordpress-popular-posts"),checked:t.shorten_title,onChange:function(e){a(0==e?{title_length:0,title_by_words:0,shorten_title:e}:{shorten_title:e,title_length:25})}}),t.shorten_title&&React.createElement("div",{className:"option-subset"},React.createElement(y,{label:__("Shorten title to","wordpress-popular-posts"),type:"number",value:t.title_length,min:"1",onChange:function(e){a({title_length:parseInt(e,10)})}}),React.createElement(f,{value:t.title_by_words,options:[{label:__("characters","wordpress-popular-posts"),value:0},{label:__("words","wordpress-popular-posts"),value:1}],onChange:function(e){return a({title_by_words:Number(e)})}})),React.createElement(h,{label:__("Display post excerpt","wordpress-popular-posts"),checked:t.display_post_excerpt,onChange:function(e){a(0==e?{excerpt_length:0,excerpt_by_words:0,display_post_excerpt:e,excerpt_format:!1}:{display_post_excerpt:e,excerpt_length:55})}}),t.display_post_excerpt&&React.createElement("div",{className:"option-subset"},React.createElement(h,{label:__("Keep text format and links","wordpress-popular-posts"),checked:t.excerpt_format,onChange:function(e){return a({excerpt_format:e})}}),React.createElement(y,{label:__("Excerpt length","wordpress-popular-posts"),type:"number",value:t.excerpt_length,min:"1",onChange:function(e){a({excerpt_length:parseInt(e,10)})}}),React.createElement(f,{value:t.excerpt_by_words,options:[{label:__("characters","wordpress-popular-posts"),value:0},{label:__("words","wordpress-popular-posts"),value:1}],onChange:function(e){return a({excerpt_by_words:Number(e)})}})),React.createElement(h,{label:__("Display post thumbnail","wordpress-popular-posts"),checked:t.display_post_thumbnail,onChange:function(e){a(0==e?{thumbnail_width:0,thumbnail_height:0,display_post_thumbnail:e,thumbnail_build:"manual"}:{thumbnail_width:75,thumbnail_height:75,display_post_thumbnail:e})}}),t.display_post_thumbnail&&React.createElement("div",{className:"option-subset"},React.createElement(f,{value:t.thumbnail_build,options:[{label:__("Set size manually","wordpress-popular-posts"),value:"manual"},{label:__("Use predefined size","wordpress-popular-posts"),value:"predefined"}],onChange:function(e){a("predefined"==e?{thumbnail_width:s.state.imgSizes[o[0].value].width,thumbnail_height:s.state.imgSizes[o[0].value].height,thumbnail_size:o[0].value}:{thumbnail_width:75,thumbnail_height:75,thumbnail_size:""}),a({thumbnail_build:e})}}),"manual"==t.thumbnail_build&&React.createElement(c,null,React.createElement(y,{label:__("Thumbnail width","wordpress-popular-posts"),type:"number",help:__("Size in px units (pixels)","wordpress-popular-posts"),value:t.thumbnail_width,min:"1",onChange:function(e){return r("width",e)}}),React.createElement(y,{label:__("Thumbnail height","wordpress-popular-posts"),type:"number",help:__("Size in px units (pixels)","wordpress-popular-posts"),value:t.thumbnail_height,min:"1",onChange:function(e){return r("height",e)}})),"predefined"==t.thumbnail_build&&React.createElement(c,null,React.createElement(f,{value:t.thumbnail_size,options:o,onChange:function(e){a({thumbnail_width:s.state.imgSizes[e].width,thumbnail_height:s.state.imgSizes[e].height,thumbnail_size:e})}}))),_wordpress_popular_posts.can_show_rating&&React.createElement(h,{label:__("Display post rating","wordpress-popular-posts"),checked:t.rating,onChange:function(e){return a({rating:e})}}))}},{key:"getStatsTagFields",value:function(){var e=this.props,t=e.attributes,a=e.setAttributes,s=[];if(this.state.taxonomies)for(var r in this.state.taxonomies)s.push({label:this.state.taxonomies[r].labels.singular_name+" ("+this.state.taxonomies[r].name+")",value:this.state.taxonomies[r].name});return React.createElement(c,null,React.createElement("p",{className:"not-a-legend"},React.createElement("strong",null,__("Stats Tag settings","wordpress-popular-posts"))),React.createElement(h,{label:__("Display comments count","wordpress-popular-posts"),checked:t.stats_comments,onChange:function(e){return a({stats_comments:e})}}),React.createElement(h,{label:__("Display views","wordpress-popular-posts"),checked:t.stats_views,onChange:function(e){return a({stats_views:e})}}),React.createElement(h,{label:__("Display author","wordpress-popular-posts"),checked:t.stats_author,onChange:function(e){return a({stats_author:e})}}),React.createElement(h,{label:__("Display date","wordpress-popular-posts"),checked:t.stats_date,onChange:function(e){return a({stats_date:e})}}),t.stats_date&&React.createElement("div",{className:"option-subset"},React.createElement(f,{label:__("Date Format","wordpress-popular-posts"),value:t.stats_date_format,options:[{label:__("Relative","wordpress-popular-posts"),value:"relative"},{label:__("Month Day, Year","wordpress-popular-posts"),value:"F j, Y"},{label:__("yyyy/mm/dd","wordpress-popular-posts"),value:"Y/m/d"},{label:__("mm/dd/yyyy","wordpress-popular-posts"),value:"m/d/Y"},{label:__("dd/mm/yyyy","wordpress-popular-posts"),value:"d/m/Y"},{label:__("WordPress Date Format","wordpress-popular-posts"),value:"wp_date_format"}],onChange:function(e){return a({stats_date_format:e})}})),React.createElement(h,{label:__("Display taxonomy","wordpress-popular-posts"),checked:t.stats_taxonomy,onChange:function(e){return a({stats_taxonomy:e})}}),t.stats_taxonomy&&React.createElement("div",{className:"option-subset"},React.createElement(f,{label:__("Taxonomy","wordpress-popular-posts"),value:t.taxonomy,options:s,onChange:function(e){return a({taxonomy:e})}})))}},{key:"getHTMLMarkupFields",value:function(){var e=this.props,t=e.attributes,a=e.setAttributes,s=this,r=[{label:__("None","wordpress-popular-posts"),value:""}];if(this.state.themes)for(var o in this.state.themes)r.push({label:this.state.themes[o].json.name,value:o});return React.createElement(c,null,React.createElement("p",{className:"not-a-legend"},React.createElement("strong",null,__("HTML Markup settings","wordpress-popular-posts"))," ",React.createElement("small",null,"(",React.createElement("a",{href:"https://github.com/cabrerahector/wordpress-popular-posts/wiki/5.-FAQ#how-can-i-use-my-own-html-markup-with-your-plugin",target:"_blank"},__("What is this?","wordpress-popular-posts")),")")),React.createElement(h,{label:__("Use custom HTML Markup","wordpress-popular-posts"),checked:t.custom_html,onChange:function(e){return a({custom_html:e})}}),t.custom_html&&React.createElement("div",{className:"option-subset"},React.createElement(g,{rows:"1",label:__("Before title","wordpress-popular-posts"),value:t.header_start,onChange:function(e){return a({header_start:e})}}),React.createElement(g,{rows:"1",label:__("After title","wordpress-popular-posts"),value:t.header_end,onChange:function(e){return a({header_end:e})}}),React.createElement(g,{rows:"1",label:__("Before popular posts","wordpress-popular-posts"),value:t.wpp_start,onChange:function(e){return a({wpp_start:e})}}),React.createElement(g,{rows:"1",label:__("After popular posts","wordpress-popular-posts"),value:t.wpp_end,onChange:function(e){return a({wpp_end:e})}}),React.createElement(g,{label:__("Post HTML markup","wordpress-popular-posts"),value:t.post_html,onChange:function(e){return a({post_html:e})}}),React.createElement("small",null,React.createElement("a",{href:"https://github.com/cabrerahector/wordpress-popular-posts/wiki/2.-Template-tags#content-tags",target:"_blank"},__("Content Tags List","wordpress-popular-posts")))),React.createElement(f,{label:__("Theme","wordpress-popular-posts"),value:t.theme,options:r,onChange:function(e){if(void 0!==s.state.themes[e]){var t=s.state.themes[e].json.config;a({shorten_title:t.shorten_title.active,title_length:t.shorten_title.length,title_by_words:t.shorten_title.words?1:0,display_post_excerpt:t["post-excerpt"].active,excerpt_format:t["post-excerpt"].format,excerpt_length:t["post-excerpt"].length,excerpt_by_words:t["post-excerpt"].words?1:0,display_post_thumbnail:t.thumbnail.active,thumbnail_build:t.thumbnail.build,thumbnail_width:t.thumbnail.width,thumbnail_height:t.thumbnail.height,stats_comments:t.stats_tag.comment_count,stats_views:t.stats_tag.views,stats_author:t.stats_tag.author,stats_date:t.stats_tag.date.active,stats_date_format:t.stats_tag.date.format,stats_taxonomy:t.stats_tag.taxonomy.active,taxonomy:t.stats_tag.taxonomy.name,custom_html:!0,wpp_start:t.markup["wpp-start"],wpp_end:t.markup["wpp-end"],post_html:t.markup["post-html"],theme:e})}else a({theme:e})}}))}},{key:"render",value:function(){if(!this.state.taxonomies||!this.state.themes||!this.state.imgSizes)return React.createElement(_,null);var e=this.props,t=e.isSelected,a=e.className,s=e.attributes,r=a;return r+=this.state.editMode?" in-edit-mode":" in-preview-mode",r+=t?" is-selected":"",[this.getBlockControls(),React.createElement("div",{className:r},this.state.editMode&&React.createElement(c,null,this.getMainFields(),this.getFiltersFields(),this.getPostSettingsFields(),this.getStatsTagFields(),this.getHTMLMarkupFields()),!this.state.editMode&&React.createElement(b,null,React.createElement(p,{block:this.props.name,className:a,attributes:s,urlQueryArgs:{isSelected:t}})))]}}],i&&s(r.prototype,i),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,i}(u),R=wp.blocks.registerBlockType,C=wp.i18n.__;R("wordpress-popular-posts/widget",{title:"WordPress Popular Posts",category:"widgets",icon:t.flame,description:C("A highly customizable block that displays your most popular posts.","wordpress-popular-posts"),keywords:["popular","posts","trending","popularity"],attributes:{_editMode:{type:"boolean",default:!0},_isSelected:{type:"boolean",default:!1},title:{type:"string"},limit:{type:"number",default:10},offset:{type:"number",default:0},order_by:{type:"string",default:"views"},range:{type:"string",default:"last24hours"},time_quantity:{type:"number",default:24},time_unit:{type:"string",default:"hour"},freshness:{type:"boolean",default:!1},post_type:{type:"string",default:"post"},pid:{type:"string",default:""},exclude:{type:"string",default:""},author:{type:"string",default:""},tax:{type:"string",default:""},term_id:{type:"string",default:""},shorten_title:{type:"boolean",default:!1},title_length:{type:"number",default:0},title_by_words:{type:"number",default:0},display_post_excerpt:{type:"boolean",default:!1},excerpt_format:{type:"boolean",default:!1},excerpt_length:{type:"number",default:0},excerpt_by_words:{type:"number",default:0},display_post_thumbnail:{type:"boolean",default:!1},thumbnail_width:{type:"number",default:0},thumbnail_height:{type:"number",default:0},thumbnail_build:{type:"string",default:"manual"},thumbnail_size:{type:"string",default:""},rating:{type:"boolean",default:!1},stats_comments:{type:"boolean",default:!1},stats_views:{type:"boolean",default:!0},stats_author:{type:"boolean",default:!1},stats_date:{type:"boolean",default:!1},stats_date_format:{type:"string",default:"F j, Y"},stats_taxonomy:{type:"boolean",default:!1},taxonomy:{type:"string",default:""},custom_html:{type:"boolean",default:!1},header_start:{type:"string",default:"

        "},header_end:{type:"string",default:"

        "},wpp_start:{type:"string",default:'
          '},wpp_end:{type:"string",default:"
        "},post_html:{type:"string",default:'
      • {thumb} {title} {stats}
      • '},theme:{type:"string",default:""}},supports:{anchor:!0,align:!0,html:!1},example:{attributes:{_editMode:!1,title:"Popular Posts",limit:3,range:"last7days",display_post_excerpt:!0,excerpt_length:75,display_post_thumbnail:!0,thumbnail_width:75,thumbnail_height:75,stats_views:!1,stats_taxonomy:!0,custom_html:!0,wpp_start:'
          ',post_html:'
        • {thumb_img}
          {taxonomy}
          {title}

          {excerpt}

        • ',theme:"cards"}},edit:E,save:function(){return null}})})(); \ No newline at end of file +(()=>{"use strict";var e={};e.flame=React.createElement("svg",{viewBox:"0 0 248 379"},React.createElement("path",{fill:"#fff",d:"M-83,96q0-122.5,0-245H165q0,131,0,262a31.87,31.87,0,0,1-.95-4.33A123.87,123.87,0,0,0,153.47,68.3c-12.28-27.74-31.1-50.64-53-71.21C75.67-26.13,55.85-52,54.32-87.87c-.79-18.47.81-36.24,11.59-52.15,1.08-1.59.38-4.4.5-6.64-2.43.1-5.5-.7-7.18.47a140.91,140.91,0,0,0-17.12,13.72C19.49-110.67,3-84.6-9.51-56A149,149,0,0,0-21.86-3.77c-2,39.4,11.38,73.46,36.17,103.51,1.74,2.11,3.51,4.2,5.27,6.3l-.67,1.07c-3.94-1.07-8-1.83-11.82-3.24C-25.17,91.94-52.36,58.57-51.12,21c.1-2.91.21-6.45-3.51-6.49-2,0-4.76,2.16-5.79,4.09-9.4,17.55-16.35,36-19.73,55.73C-81.38,81.49-82.07,88.76-83,96Z",transform:"translate(83 149)"}),React.createElement("path",{fill:"#ba2f2f",d:"M-83,96c.93-7.24,1.62-14.51,2.85-21.7,3.38-19.69,10.33-38.18,19.73-55.73,1-1.93,3.83-4.11,5.79-4.09,3.72,0,3.61,3.58,3.51,6.49-1.25,37.59,25.94,71,58.2,82.89,3.82,1.41,7.87,2.18,11.82,3.24l.67-1.07c-1.76-2.1-3.52-4.19-5.27-6.3C-10.49,69.68-23.88,35.63-21.86-3.77A149,149,0,0,1-9.51-56c12.48-28.62,29-54.69,51.62-76.5a140.91,140.91,0,0,1,17.12-13.72c1.68-1.18,4.75-.37,7.18-.47-.13,2.24.58,5-.5,6.64-10.78,15.9-12.37,33.68-11.59,52.15,1.53,35.89,21.35,61.74,46.11,85,21.94,20.57,40.76,43.47,53,71.21a123.87,123.87,0,0,1,10.59,40.36A31.87,31.87,0,0,0,165,113v9c-.7,4.24-1.17,8.54-2.13,12.73-10.74,46.51-37.08,78.75-84.34,91.58C72.16,228,65.52,228.79,59,230H43a25.19,25.19,0,0,0-3.12-1.18c-10-2.37-20.21-4.12-30-7.12-45.83-14-75.19-44.64-89-90.24-2.28-7.52-2.64-15.63-3.88-23.46Q-83,102-83,96ZM61.63-143.61c-6.24,5.39-12.87,10.38-18.64,16.22A229,229,0,0,0-8.77-46.26,138.37,138.37,0,0,0-16.63,23c4.69,32.54,20.21,59.59,42.4,83.23,1.34,1.43,2.7,2.83,4.8,5-15.23,1-28-3.3-39.74-10.64-29.74-18.62-46-45.23-46.8-81a138.75,138.75,0,0,0-7.46,14.67A178.29,178.29,0,0,0-78.24,93.09C-80.9,129.7-68,160.25-42.78,185.71c28.91,29.16,65.19,41.42,105.43,38.91,43.82-2.73,80.34-35.08,93.53-79.39,8.68-29.18,3.11-56.71-10.29-83.15C134.15,38.92,117.71,19.34,99,1.57,85-11.65,71.34-25.28,62.72-42.69,46.33-75.79,44.36-109.22,61.63-143.61Z",transform:"translate(83 149)"}),React.createElement("path",{fill:"#fff",d:"M-83,108c1.25,7.84,1.61,15.94,3.88,23.46,13.79,45.6,43.15,76.21,89,90.24,9.82,3,20,4.76,30,7.12A25.19,25.19,0,0,1,43,230H-83Q-83,169-83,108Z",transform:"translate(83 149)"}),React.createElement("path",{fill:"#fff",d:"M59,230c6.52-1.21,13.16-2,19.53-3.69,47.26-12.83,73.6-45.07,84.34-91.58,1-4.18,1.43-8.48,2.13-12.73V230Z",transform:"translate(83 149)"}),React.createElement("path",{fill:"#ba2f2f",d:"M61.63-143.61c-17.28,34.39-15.3,67.82,1.09,100.92C71.34-25.28,85-11.65,99,1.57c18.75,17.77,35.2,37.35,46.94,60.51,13.4,26.44,19,54,10.29,83.15-13.18,44.31-49.71,76.66-93.53,79.39-40.25,2.51-76.52-9.75-105.43-38.91C-68,160.25-80.9,129.7-78.24,93.09A178.29,178.29,0,0,1-63.45,34.31,138.75,138.75,0,0,1-56,19.64c.77,35.79,17.06,62.4,46.8,81C2.54,108,15.33,112.3,30.56,111.3c-2.1-2.21-3.46-3.62-4.8-5C3.57,82.62-11.94,55.57-16.63,23A138.37,138.37,0,0,1-8.77-46.26,229,229,0,0,1,43-127.38C48.76-133.23,55.39-138.22,61.63-143.61Z",transform:"translate(83 149)"}));const t=e;function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function s(e,t){for(var a=0;a":">",'"':""","'":"'","/":"/","`":"`"};return e.replace(/[&<>"'/]/gi,(function(e){return t[e]}))}(function(e){var t=document.createElement("div");t.innerHTML=e;var a=t.childNodes[0];return a?a.nodeValue:""}(e)),a({title:e})}}),React.createElement(y,{label:__("Limit","wordpress-popular-posts"),type:"number",value:t.limit,min:"1",onChange:function(e){a({limit:parseInt(e,10)})}}),React.createElement(f,{label:__("Sort posts by","wordpress-popular-posts"),value:t.order_by,options:[{label:__("Total views","wordpress-popular-posts"),value:"views"},{label:__("Avg. daily views","wordpress-popular-posts"),value:"avg"},{label:__("Comments","wordpress-popular-posts"),value:"comments"}],onChange:function(e){a({order_by:e})}}),React.createElement(f,{label:__("Time Range","wordpress-popular-posts"),value:t.range,options:[{label:__("Last 24 Hours","wordpress-popular-posts"),value:"last24hours"},{label:__("Today","wordpress-popular-posts"),value:"today"},{label:__("Last 7 days","wordpress-popular-posts"),value:"last7days"},{label:__("This week","wordpress-popular-posts"),value:"thisweek"},{label:__("Last 30 days","wordpress-popular-posts"),value:"last30days"},{label:__("This month","wordpress-popular-posts"),value:"thismonth"},{label:__("This year","wordpress-popular-posts"),value:"thisyear"},{label:__("All-time","wordpress-popular-posts"),value:"all"},{label:__("Custom","wordpress-popular-posts"),value:"custom"}],onChange:function(e){a({range:e})}}),"custom"==t.range&&React.createElement("div",{className:"option-subset"},React.createElement(y,{label:__("Time Quantity","wordpress-popular-posts"),type:"number",value:t.time_quantity,min:"1",onChange:function(e){a({time_quantity:parseInt(e,10)})}}),React.createElement(f,{label:__("Time Unit","wordpress-popular-posts"),value:t.time_unit,options:[{label:__("Minute(s)","wordpress-popular-posts"),value:"minute"},{label:__("Hour(s)","wordpress-popular-posts"),value:"hour"},{label:__("Day(s)","wordpress-popular-posts"),value:"day"}],onChange:function(e){a({time_unit:e})}})),React.createElement(h,{label:__("Display only posts published within the selected Time Range","wordpress-popular-posts"),checked:t.freshness,onChange:function(e){a({freshness:e})}}))}},{key:"getFiltersFields",value:function(){var e=this.props,t=e.attributes,a=e.setAttributes,s=this,r=[];if(this.state.taxonomies)for(var o in this.state.taxonomies)r.push({name:this.state.taxonomies[o].name,label:this.state.taxonomies[o].labels.singular_name+" ("+this.state.taxonomies[o].name+")",terms:this.state.taxonomies[o]._terms});return React.createElement(c,null,React.createElement("p",{className:"not-a-legend"},React.createElement("strong",null,__("Filters","wordpress-popular-posts"))),React.createElement(y,{label:__("Post type(s)","wordpress-popular-posts"),help:__("Post types must be comma separated.","wordpress-popular-posts"),value:t.post_type,onChange:function(e){var t=e.replace(/[^a-z0-9-_\,]+/gi,"");a({post_type:t})}}),React.createElement(y,{label:__("Post ID(s) to exclude","wordpress-popular-posts"),help:__("IDs must be comma separated.","wordpress-popular-posts"),value:t.pid,onChange:function(e){var t=e.replace(/[^0-9\,]/g,"");a({pid:t})}}),React.createElement(y,{label:__("Author ID(s)","wordpress-popular-posts"),help:__("IDs must be comma separated.","wordpress-popular-posts"),value:t.author,onChange:function(e){var t=e.replace(/[^0-9\,]/g,"");a({author:t})}}),r&&r.filter((function(e){return"post_format"!=e.name})).map((function(e){return React.createElement(y,{label:e.label,help:__("Term IDs must be comma separated, prefix a minus sign to exclude.","wordpress-popular-posts"),value:e.terms,onChange:function(t){return function(e,t){var a=s.state.taxonomies;t=t.replace(/[^0-9-\,]/g,""),a&&void 0!==a[e]&&(a[e]._terms=t,s.setState({taxonomies:a}))}(e.name,t)},onBlur:function(){return function(e){var t=s.state.taxonomies;if(t&&void 0!==t[e]){var r=t[e]._terms.split(",");r.length&&(r=r.map((function(e){return e.trim()})).filter((function(e){return""!=e&&"-"!=e}))),r.length&&(r=Array.from(new Set(r))),t[e]._terms=r.join(","),s.setState({taxonomies:t});var o="",n="";for(var l in s.state.taxonomies)if(s.state.taxonomies.hasOwnProperty(l)){if(!s.state.taxonomies[l]._terms.length)continue;o+=l+";",n+=s.state.taxonomies[l]._terms+";"}o&&n&&(o=o.replace(new RegExp(";$"),""),n=n.replace(new RegExp(";$"),"")),a({tax:o,term_id:n})}}(e.name)}})})))}},{key:"getPostSettingsFields",value:function(){var e=this.props,t=e.attributes,a=e.setAttributes,s=this;function r(e,t){t=parseInt(t,10),a("width"==e?{thumbnail_width:t}:{thumbnail_height:t})}var o=[];if(this.state.imgSizes)for(var n in this.state.imgSizes)o.push({label:n,value:n});return React.createElement(c,null,React.createElement("p",{className:"not-a-legend"},React.createElement("strong",null,__("Posts settings","wordpress-popular-posts"))),React.createElement(h,{label:__("Shorten title","wordpress-popular-posts"),checked:t.shorten_title,onChange:function(e){a(0==e?{title_length:0,title_by_words:0,shorten_title:e}:{shorten_title:e,title_length:25})}}),t.shorten_title&&React.createElement("div",{className:"option-subset"},React.createElement(y,{label:__("Shorten title to","wordpress-popular-posts"),type:"number",value:t.title_length,min:"1",onChange:function(e){a({title_length:parseInt(e,10)})}}),React.createElement(f,{value:t.title_by_words,options:[{label:__("characters","wordpress-popular-posts"),value:0},{label:__("words","wordpress-popular-posts"),value:1}],onChange:function(e){return a({title_by_words:Number(e)})}})),React.createElement(h,{label:__("Display post excerpt","wordpress-popular-posts"),checked:t.display_post_excerpt,onChange:function(e){a(0==e?{excerpt_length:0,excerpt_by_words:0,display_post_excerpt:e,excerpt_format:!1}:{display_post_excerpt:e,excerpt_length:55})}}),t.display_post_excerpt&&React.createElement("div",{className:"option-subset"},React.createElement(h,{label:__("Keep text format and links","wordpress-popular-posts"),checked:t.excerpt_format,onChange:function(e){return a({excerpt_format:e})}}),React.createElement(y,{label:__("Excerpt length","wordpress-popular-posts"),type:"number",value:t.excerpt_length,min:"1",onChange:function(e){a({excerpt_length:parseInt(e,10)})}}),React.createElement(f,{value:t.excerpt_by_words,options:[{label:__("characters","wordpress-popular-posts"),value:0},{label:__("words","wordpress-popular-posts"),value:1}],onChange:function(e){return a({excerpt_by_words:Number(e)})}})),React.createElement(h,{label:__("Display post thumbnail","wordpress-popular-posts"),checked:t.display_post_thumbnail,onChange:function(e){a(0==e?{thumbnail_width:0,thumbnail_height:0,display_post_thumbnail:e,thumbnail_build:"manual"}:{thumbnail_width:75,thumbnail_height:75,display_post_thumbnail:e})}}),t.display_post_thumbnail&&React.createElement("div",{className:"option-subset"},React.createElement(f,{value:t.thumbnail_build,options:[{label:__("Set size manually","wordpress-popular-posts"),value:"manual"},{label:__("Use predefined size","wordpress-popular-posts"),value:"predefined"}],onChange:function(e){a("predefined"==e?{thumbnail_width:s.state.imgSizes[o[0].value].width,thumbnail_height:s.state.imgSizes[o[0].value].height,thumbnail_size:o[0].value}:{thumbnail_width:75,thumbnail_height:75,thumbnail_size:""}),a({thumbnail_build:e})}}),"manual"==t.thumbnail_build&&React.createElement(c,null,React.createElement(y,{label:__("Thumbnail width","wordpress-popular-posts"),type:"number",help:__("Size in px units (pixels)","wordpress-popular-posts"),value:t.thumbnail_width,min:"1",onChange:function(e){return r("width",e)}}),React.createElement(y,{label:__("Thumbnail height","wordpress-popular-posts"),type:"number",help:__("Size in px units (pixels)","wordpress-popular-posts"),value:t.thumbnail_height,min:"1",onChange:function(e){return r("height",e)}})),"predefined"==t.thumbnail_build&&React.createElement(c,null,React.createElement(f,{value:t.thumbnail_size,options:o,onChange:function(e){a({thumbnail_width:s.state.imgSizes[e].width,thumbnail_height:s.state.imgSizes[e].height,thumbnail_size:e})}}))),_wordpress_popular_posts.can_show_rating&&React.createElement(h,{label:__("Display post rating","wordpress-popular-posts"),checked:t.rating,onChange:function(e){return a({rating:e})}}))}},{key:"getStatsTagFields",value:function(){var e=this.props,t=e.attributes,a=e.setAttributes,s=[];if(this.state.taxonomies)for(var r in this.state.taxonomies)s.push({label:this.state.taxonomies[r].labels.singular_name+" ("+this.state.taxonomies[r].name+")",value:this.state.taxonomies[r].name});return React.createElement(c,null,React.createElement("p",{className:"not-a-legend"},React.createElement("strong",null,__("Stats Tag settings","wordpress-popular-posts"))),React.createElement(h,{label:__("Display comments count","wordpress-popular-posts"),checked:t.stats_comments,onChange:function(e){return a({stats_comments:e})}}),React.createElement(h,{label:__("Display views","wordpress-popular-posts"),checked:t.stats_views,onChange:function(e){return a({stats_views:e})}}),React.createElement(h,{label:__("Display author","wordpress-popular-posts"),checked:t.stats_author,onChange:function(e){return a({stats_author:e})}}),React.createElement(h,{label:__("Display date","wordpress-popular-posts"),checked:t.stats_date,onChange:function(e){return a({stats_date:e})}}),t.stats_date&&React.createElement("div",{className:"option-subset"},React.createElement(f,{label:__("Date Format","wordpress-popular-posts"),value:t.stats_date_format,options:[{label:__("Relative","wordpress-popular-posts"),value:"relative"},{label:__("Month Day, Year","wordpress-popular-posts"),value:"F j, Y"},{label:__("yyyy/mm/dd","wordpress-popular-posts"),value:"Y/m/d"},{label:__("mm/dd/yyyy","wordpress-popular-posts"),value:"m/d/Y"},{label:__("dd/mm/yyyy","wordpress-popular-posts"),value:"d/m/Y"},{label:__("WordPress Date Format","wordpress-popular-posts"),value:"wp_date_format"}],onChange:function(e){return a({stats_date_format:e})}})),React.createElement(h,{label:__("Display taxonomy","wordpress-popular-posts"),checked:t.stats_taxonomy,onChange:function(e){return a({stats_taxonomy:e})}}),t.stats_taxonomy&&React.createElement("div",{className:"option-subset"},React.createElement(f,{label:__("Taxonomy","wordpress-popular-posts"),value:t.taxonomy,options:s,onChange:function(e){return a({taxonomy:e})}})))}},{key:"getHTMLMarkupFields",value:function(){var e=this.props,t=e.attributes,a=e.setAttributes,s=this,r=[{label:__("None","wordpress-popular-posts"),value:""}];if(this.state.themes)for(var o in this.state.themes)r.push({label:this.state.themes[o].json.name,value:o});return React.createElement(c,null,React.createElement("p",{className:"not-a-legend"},React.createElement("strong",null,__("HTML Markup settings","wordpress-popular-posts"))," ",React.createElement("small",null,"(",React.createElement("a",{href:"https://github.com/cabrerahector/wordpress-popular-posts/wiki/5.-FAQ#how-can-i-use-my-own-html-markup-with-your-plugin",target:"_blank"},__("What is this?","wordpress-popular-posts")),")")),React.createElement(h,{label:__("Use custom HTML Markup","wordpress-popular-posts"),checked:t.custom_html,onChange:function(e){return a({custom_html:e})}}),t.custom_html&&React.createElement("div",{className:"option-subset"},React.createElement(g,{rows:"1",label:__("Before title","wordpress-popular-posts"),value:t.header_start,onChange:function(e){return a({header_start:e})}}),React.createElement(g,{rows:"1",label:__("After title","wordpress-popular-posts"),value:t.header_end,onChange:function(e){return a({header_end:e})}}),React.createElement(g,{rows:"1",label:__("Before popular posts","wordpress-popular-posts"),value:t.wpp_start,onChange:function(e){return a({wpp_start:e})}}),React.createElement(g,{rows:"1",label:__("After popular posts","wordpress-popular-posts"),value:t.wpp_end,onChange:function(e){return a({wpp_end:e})}}),React.createElement(g,{label:__("Post HTML markup","wordpress-popular-posts"),value:t.post_html,onChange:function(e){return a({post_html:e})}}),React.createElement("small",null,React.createElement("a",{href:"https://github.com/cabrerahector/wordpress-popular-posts/wiki/2.-Template-tags#content-tags",target:"_blank"},__("Content Tags List","wordpress-popular-posts")))),React.createElement(f,{label:__("Theme","wordpress-popular-posts"),value:t.theme,options:r,onChange:function(e){if(void 0!==s.state.themes[e]){var t=s.state.themes[e].json.config;a({shorten_title:t.shorten_title.active,title_length:t.shorten_title.length,title_by_words:t.shorten_title.words?1:0,display_post_excerpt:t["post-excerpt"].active,excerpt_format:t["post-excerpt"].format,excerpt_length:t["post-excerpt"].length,excerpt_by_words:t["post-excerpt"].words?1:0,display_post_thumbnail:t.thumbnail.active,thumbnail_build:t.thumbnail.build,thumbnail_width:t.thumbnail.width,thumbnail_height:t.thumbnail.height,stats_comments:t.stats_tag.comment_count,stats_views:t.stats_tag.views,stats_author:t.stats_tag.author,stats_date:t.stats_tag.date.active,stats_date_format:t.stats_tag.date.format,stats_taxonomy:t.stats_tag.taxonomy.active,taxonomy:t.stats_tag.taxonomy.name,custom_html:!0,wpp_start:t.markup["wpp-start"],wpp_end:t.markup["wpp-end"],post_html:t.markup["post-html"],theme:e})}else a({theme:e})}}))}},{key:"render",value:function(){if(!this.state.taxonomies||!this.state.themes||!this.state.imgSizes)return React.createElement(_,null);var e=this.props,t=e.isSelected,a=e.className,s=e.attributes,r=a;return r+=this.state.editMode?" in-edit-mode":" in-preview-mode",r+=t?" is-selected":"",[this.getBlockControls(),React.createElement("div",{className:r},this.state.editMode&&React.createElement(c,null,this.getMainFields(),this.getFiltersFields(),this.getPostSettingsFields(),this.getStatsTagFields(),this.getHTMLMarkupFields()),!this.state.editMode&&React.createElement(b,null,React.createElement(p,{block:this.props.name,className:a,attributes:s,urlQueryArgs:{isSelected:t}})))]}}],i&&s(r.prototype,i),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,i}(u),R=wp.blocks.registerBlockType,C=wp.i18n.__;R("wordpress-popular-posts/widget",{title:"WordPress Popular Posts",category:"widgets",icon:t.flame,description:C("A highly customizable block that displays your most popular posts.","wordpress-popular-posts"),keywords:["popular","posts","trending","popularity"],attributes:{_editMode:{type:"boolean",default:!0},_isSelected:{type:"boolean",default:!1},title:{type:"string"},limit:{type:"number",default:10},offset:{type:"number",default:0},order_by:{type:"string",default:"views"},range:{type:"string",default:"last24hours"},time_quantity:{type:"number",default:24},time_unit:{type:"string",default:"hour"},freshness:{type:"boolean",default:!1},post_type:{type:"string",default:"post"},pid:{type:"string",default:""},exclude:{type:"string",default:""},author:{type:"string",default:""},tax:{type:"string",default:""},term_id:{type:"string",default:""},shorten_title:{type:"boolean",default:!1},title_length:{type:"number",default:0},title_by_words:{type:"number",default:0},display_post_excerpt:{type:"boolean",default:!1},excerpt_format:{type:"boolean",default:!1},excerpt_length:{type:"number",default:0},excerpt_by_words:{type:"number",default:0},display_post_thumbnail:{type:"boolean",default:!1},thumbnail_width:{type:"number",default:0},thumbnail_height:{type:"number",default:0},thumbnail_build:{type:"string",default:"manual"},thumbnail_size:{type:"string",default:""},rating:{type:"boolean",default:!1},stats_comments:{type:"boolean",default:!1},stats_views:{type:"boolean",default:!0},stats_author:{type:"boolean",default:!1},stats_date:{type:"boolean",default:!1},stats_date_format:{type:"string",default:"F j, Y"},stats_taxonomy:{type:"boolean",default:!1},taxonomy:{type:"string",default:""},custom_html:{type:"boolean",default:!1},header_start:{type:"string",default:"

          "},header_end:{type:"string",default:"

          "},wpp_start:{type:"string",default:'
            '},wpp_end:{type:"string",default:"
          "},post_html:{type:"string",default:'
        • {thumb} {title} {stats}
        • '},theme:{type:"string",default:""}},supports:{anchor:!0,align:!0,html:!1},example:{attributes:{_editMode:!1,title:"Popular Posts",limit:3,range:"last7days",display_post_excerpt:!0,excerpt_length:75,display_post_thumbnail:!0,thumbnail_width:75,thumbnail_height:75,stats_views:!1,stats_taxonomy:!0,custom_html:!0,wpp_start:'
            ',post_html:'
          • {thumb_img}
            {taxonomy}
            {title}

            {excerpt}

          • ',theme:"cards"}},edit:E,save:function(){return null}})})(); \ No newline at end of file diff --git a/src/Block/Widget/Widget.php b/src/Block/Widget/Widget.php index 62f0ba6..06a083b 100644 --- a/src/Block/Widget/Widget.php +++ b/src/Block/Widget/Widget.php @@ -369,7 +369,7 @@ public function render(array $attributes) // possible values for "Time Range" and "Order by" $time_units = ['minute', 'hour', 'day', 'week', 'month']; - $range_values = ['daily', 'last24hours', 'today', 'weekly', 'last7days', 'thisweek', 'monthly', 'last30days', 'thismonth', 'all', 'custom']; + $range_values = ['daily', 'last24hours', 'today', 'weekly', 'last7days', 'thisweek', 'monthly', 'last30days', 'thismonth', 'thisyear', 'all', 'custom']; $order_by_values = ['comments', 'views', 'avg']; $theme_data = $this->themer->get_theme($theme); diff --git a/src/Block/Widget/edit.js b/src/Block/Widget/edit.js index d5427e7..7540a7c 100644 --- a/src/Block/Widget/edit.js +++ b/src/Block/Widget/edit.js @@ -202,6 +202,7 @@ export class WPPWidgetBlockEdit extends Component {label: __('This week', 'wordpress-popular-posts'), value: 'thisweek'}, {label: __('Last 30 days', 'wordpress-popular-posts'), value: 'last30days'}, {label: __('This month', 'wordpress-popular-posts'), value: 'thismonth'}, + {label: __('This year', 'wordpress-popular-posts'), value: 'thisyear'}, {label: __('All-time', 'wordpress-popular-posts'), value: 'all'}, {label: __('Custom', 'wordpress-popular-posts'), value: 'custom'}, ]} diff --git a/src/Compatibility/Elementor/widgets/widget-controls.php b/src/Compatibility/Elementor/widgets/widget-controls.php index cab04df..5febbfc 100644 --- a/src/Compatibility/Elementor/widgets/widget-controls.php +++ b/src/Compatibility/Elementor/widgets/widget-controls.php @@ -60,6 +60,7 @@ 'thisweek' => esc_html__('This week', 'wordpress-popular-posts'), 'last30days' => esc_html__('Last 30 days', 'wordpress-popular-posts'), 'thismonth' => esc_html__('This month', 'wordpress-popular-posts'), + 'thisyear' => esc_html__('This year', 'wordpress-popular-posts'), 'all' => esc_html__('All-time', 'wordpress-popular-posts'), 'custom' => esc_html__('Custom', 'wordpress-popular-posts') ] diff --git a/src/Query.php b/src/Query.php index 0757029..df7a2a2 100644 --- a/src/Query.php +++ b/src/Query.php @@ -366,7 +366,7 @@ private function build_query() break; case 'today': $start_datetime = $start_date->format('Y-m-d 00:00:00'); - $end_datetime = $start_date->format('Y-m-d 23:59:55'); + $end_datetime = $start_date->format('Y-m-d 23:59:59'); $views_time_range = "view_date >= '{$start_datetime}' AND view_date <= '{$end_datetime}'"; break; case 'last7days': @@ -398,6 +398,12 @@ private function build_query() $end_datetime = $end_date->format('Y-m-d 23:59:59'); $views_time_range = "view_date >= '{$start_datetime}' AND view_date <= '{$end_datetime}'"; break; + case 'thisyear': + $current_year = $start_date->format('Y'); + $start_datetime = $current_year . '-01-01 00:00:00'; + $end_datetime = $current_year . '-12-31 23:59:59'; + $views_time_range = "view_date >= '{$start_datetime}' AND view_date <= '{$end_datetime}'"; + break; case 'custom': $time_units = ['MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH']; diff --git a/src/Rest/PostsEndpoint.php b/src/Rest/PostsEndpoint.php index d94ea1c..6398cbb 100644 --- a/src/Rest/PostsEndpoint.php +++ b/src/Rest/PostsEndpoint.php @@ -153,7 +153,7 @@ public function get_collection_params() 'range' => [ 'description' => __('Return popular posts from a specified time range.'), 'type' => 'string', - 'enum' => ['last24hours', 'today', 'last7days', 'thisweek', 'last30days', 'thismonth', 'all', 'custom'], + 'enum' => ['last24hours', 'today', 'last7days', 'thisweek', 'last30days', 'thismonth', 'thisyear', 'all', 'custom'], 'default' => 'last24hours', 'sanitize_callback' => 'sanitize_text_field', 'validate_callback' => 'rest_validate_request_arg', diff --git a/src/Shortcode/Posts.php b/src/Shortcode/Posts.php index 440c219..8cac9bd 100644 --- a/src/Shortcode/Posts.php +++ b/src/Shortcode/Posts.php @@ -123,7 +123,7 @@ public function handle($attributes = []) : string // possible values for "Time Range" and "Order by" $time_units = ['minute', 'hour', 'day', 'week', 'month']; - $range_values = ['daily', 'last24hours', 'today', 'weekly', 'last7days', 'thisweek', 'monthly', 'last30days', 'thismonth', 'all', 'custom']; + $range_values = ['daily', 'last24hours', 'today', 'weekly', 'last7days', 'thisweek', 'monthly', 'last30days', 'thismonth', 'thisyear', 'all', 'custom']; $order_by_values = ['comments', 'views', 'avg']; $shortcode_ops = [ From 5318a313c3e1ee624ddaf79365c6e20293b01ab9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Cabrera?= Date: Mon, 26 May 2025 16:53:07 -0400 Subject: [PATCH 7/7] Query: simplifies today/this-x-time-range logic --- src/Query.php | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/Query.php b/src/Query.php index df7a2a2..a8e8c2d 100644 --- a/src/Query.php +++ b/src/Query.php @@ -365,9 +365,8 @@ private function build_query() $views_time_range = "view_datetime >= '{$start_datetime}'"; break; case 'today': - $start_datetime = $start_date->format('Y-m-d 00:00:00'); - $end_datetime = $start_date->format('Y-m-d 23:59:59'); - $views_time_range = "view_date >= '{$start_datetime}' AND view_date <= '{$end_datetime}'"; + $start_datetime = $start_date->format('Y-m-d'); + $views_time_range = "view_date >= '{$start_datetime}'"; break; case 'last7days': case 'weekly': @@ -380,9 +379,9 @@ private function build_query() $today_weekday = $now->format('l'); $datetime = ( $today_weekday === $start_of_week ) ? 'today' : 'last ' . $start_of_week; $start_date = new \DateTime($datetime, wp_timezone()); - $start_datetime = $start_date->format('Y-m-d 00:00:00'); + $start_datetime = $start_date->format('Y-m-d'); $start_date->add(new \DateInterval('P6D')); - $end_datetime = $start_date->format('Y-m-d 23:59:59'); + $end_datetime = $start_date->format('Y-m-d'); $views_time_range = "view_date >= '{$start_datetime}' AND view_date <= '{$end_datetime}'"; break; case 'last30days': @@ -393,16 +392,15 @@ private function build_query() break; case 'thismonth': $start_date = new \DateTime('First day of this month', wp_timezone()); - $start_datetime = $start_date->format('Y-m-d 00:00:00'); + $start_datetime = $start_date->format('Y-m-d'); $end_date = new \DateTime('Last day of this month', wp_timezone()); - $end_datetime = $end_date->format('Y-m-d 23:59:59'); + $end_datetime = $end_date->format('Y-m-d'); $views_time_range = "view_date >= '{$start_datetime}' AND view_date <= '{$end_datetime}'"; break; case 'thisyear': $current_year = $start_date->format('Y'); - $start_datetime = $current_year . '-01-01 00:00:00'; - $end_datetime = $current_year . '-12-31 23:59:59'; - $views_time_range = "view_date >= '{$start_datetime}' AND view_date <= '{$end_datetime}'"; + $start_datetime = $current_year . '-01-01'; + $views_time_range = "view_date >= '{$start_datetime}'"; break; case 'custom': $time_units = ['MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH'];