From 42b83db4e1bd17d88a1c257b34492c60607b01e3 Mon Sep 17 00:00:00 2001 From: karthikeya-io Date: Wed, 3 Sep 2025 02:15:27 +0530 Subject: [PATCH 1/2] Fix: Incorrect post status if user is before site time-zone --- src/js/_enqueues/admin/inline-edit-post.js | 9 ++++++++- src/wp-admin/edit.php | 8 ++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/js/_enqueues/admin/inline-edit-post.js b/src/js/_enqueues/admin/inline-edit-post.js index 6f313fc0558c7..ce6e00527aef3 100644 --- a/src/js/_enqueues/admin/inline-edit-post.js +++ b/src/js/_enqueues/admin/inline-edit-post.js @@ -434,7 +434,14 @@ window.wp = window.wp || {}; post_date_string += ' ' + $(':input[name="hh"]').val() + ':' + $(':input[name="mn"]').val() + ':' + $(':input[name="ss"]').val(); var post_date = new Date( post_date_string ); status = $('._status', rowData).text(); - if ( 'future' !== status && Date.now() > post_date ) { + // Convert browser Date into site timezone before comparing. + var browserDate = new Date(); + var browserOffset = browserDate.getTimezoneOffset(); + var siteOffset = (window.inlineEditPostConfig && inlineEditPostConfig.siteTzOffset) + ? parseInt(inlineEditPostConfig.siteTzOffset, 10) + : browserOffset; + var siteDate = new Date( browserDate.getTime() + (browserOffset - siteOffset) * 60000 ); + if ( 'future' !== status && siteDate > post_date ) { $('select[name="_status"] option[value="future"]', editRow).remove(); } else { $('select[name="_status"] option[value="publish"]', editRow).remove(); diff --git a/src/wp-admin/edit.php b/src/wp-admin/edit.php index 15cb17d303bd3..37a8e1a200345 100644 --- a/src/wp-admin/edit.php +++ b/src/wp-admin/edit.php @@ -235,6 +235,14 @@ $wp_list_table->prepare_items(); wp_enqueue_script( 'inline-edit-post' ); +wp_localize_script( + 'inline-edit-post', + 'inlineEditPostConfig', + array( + // get the site offset and convert to minutes. + 'siteTzOffset' => (int) ( - get_option( 'gmt_offset' ) * 60 ), + ) +); wp_enqueue_script( 'heartbeat' ); if ( 'wp_block' === $post_type ) { From cb9429a18e1f09266d522da41ccb7a4aac3f8aa6 Mon Sep 17 00:00:00 2001 From: karthikeya-io Date: Fri, 5 Sep 2025 15:20:50 +0530 Subject: [PATCH 2/2] Lint: Fix JSHint warnings --- src/js/_enqueues/admin/inline-edit-post.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/js/_enqueues/admin/inline-edit-post.js b/src/js/_enqueues/admin/inline-edit-post.js index ce6e00527aef3..96fff89dac972 100644 --- a/src/js/_enqueues/admin/inline-edit-post.js +++ b/src/js/_enqueues/admin/inline-edit-post.js @@ -437,9 +437,10 @@ window.wp = window.wp || {}; // Convert browser Date into site timezone before comparing. var browserDate = new Date(); var browserOffset = browserDate.getTimezoneOffset(); - var siteOffset = (window.inlineEditPostConfig && inlineEditPostConfig.siteTzOffset) - ? parseInt(inlineEditPostConfig.siteTzOffset, 10) - : browserOffset; + var siteOffset = browserOffset; + if ( window.inlineEditPostConfig && window.inlineEditPostConfig.siteTzOffset ) { + siteOffset = parseInt( window.inlineEditPostConfig.siteTzOffset, 10 ); + } var siteDate = new Date( browserDate.getTime() + (browserOffset - siteOffset) * 60000 ); if ( 'future' !== status && siteDate > post_date ) { $('select[name="_status"] option[value="future"]', editRow).remove();