[wp-trac] [WordPress Trac] #55577: Wrong Date Format on jQuery UI datepicker on the public side of Jetpack forms for Localized sites

WordPress Trac noreply at wordpress.org
Thu Apr 14 19:26:50 UTC 2022


#55577: Wrong Date Format on jQuery UI datepicker on the public side of Jetpack
forms for Localized sites
------------------------------+-----------------------------
 Reporter:  miguelsansegundo  |      Owner:  (none)
     Type:  defect (bug)      |     Status:  new
 Priority:  normal            |  Milestone:  Awaiting Review
Component:  I18N              |    Version:
 Severity:  normal            |   Keywords:
  Focuses:  ui                |
------------------------------+-----------------------------
 There is an issue on the public side showing the wrong date format for
 escaped literal text such as `\d\e` in the date format `j \d\e F \d\e Y`
 when internationalizing the input value of the jQuery UI datepicker. Which
 is used by [https://jetpack.com/support/jetpack-blocks/contact-form/
 Jetpack forms].

 The literal text `de` is common in the date format of Spain and Portugal.
 For instance in `15 de Abril de 2022`.

 Here is a [https://user-
 images.githubusercontent.com/1881481/163436224-437e1d50-161a-4c50-93ef-
 b0f5dc8ff6ae.png screenshot] of the issue showing the wrong format on the
 datepicker input on the public side.

 As you can see, the issue doesn't affect the dates rendered via PHP
 because the backward slashes are the correct format in that case.

 The issue doesn't affect the [https://user-
 images.githubusercontent.com/1881481/163449525-abda00c7-7895-48e8-8879-4865c3f1eaf5.png
 settings] either. Only affects the jQuery UI datepicker on the public
 side.

 The issue happens because we use **backward slashes** to
 [https://wordpress.org/support/article/formatting-date-and-time/#escaping
 escape literal text when formatting custom dates in WordPress] but the
 datepicker of jQuery UI only accepts **single quotes** to **scape literal
 text in the date format**. It seems that in the past
 [https://stackoverflow.com/a/4760345 both syntaxes were supported] but
 nowadays with the latest versions
 [https://jsfiddle.net/miksansegundo/f3v0odh5/3/ the backward slashes don't
 work].

 The `dateFormat` together with other localizations for the datepicker of
 jQuery UI is passed [https://user-
 images.githubusercontent.com/1881481/163448347-72780427-6e01-4673-b43f-
 65b0bc94e3fe.png in a script in the HTML document] thanks to the WordPress
 core function [https://github.com/WordPress/WordPress/blob/master/wp-
 includes/script-loader.php#L1817 wp_localize_jquery_ui_datepicker].

 I believe this is not the responsibility of jQuery UI, or Jetpack, but the
 WordPress core function `wp_localize_jquery_ui_datepicker` that introduces
 two bugs:

 1. Replaces `d` by `dd` when converting the PHP date format into jQuery
 UI's format **not excluding escaped literal text when it should** because
 `\d` should not be converted into `\dd`.
 2. Does not convert the PHP date format for escaped literal text `\d` with
 backward slash into the supported jQuery UI's date format, which uses
 single quotes `'de'`.

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/55577>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list