WordPress.org

Make WordPress Core

Ticket #20714: 20714.0.diff

File 20714.0.diff, 1.5 KB (added by westonruter, 3 years ago)
  • src/wp-includes/js/customize-preview.js

    diff --git src/wp-includes/js/customize-preview.js src/wp-includes/js/customize-preview.js
    index f5569ed..7e100a4 100644
     
    6767                        });
    6868
    6969                        // You cannot submit forms.
    70                         // @todo: Allow form submissions by mixing $_POST data with the customize setting $_POST data.
    7170                        this.body.on( 'submit.preview', 'form', function( event ) {
     71                                var urlParser;
     72
     73                                /*
     74                                 * If the default wasn't prevented already (in which case the form
     75                                 * submission is already being handled by JS), and if it has a GET
     76                                 * request method, then take the serialized form data and add it as
     77                                 * a query string to the action URL and send this in a url message
     78                                 * to the Customizer pane so that it will be loaded. If the form's
     79                                 * action points to a non-previewable URL, the the Customizer pane's
     80                                 * previewUrl setter will reject it so that the form submission is
     81                                 * a no-op, which is the same behavior as when clicking a link to an
     82                                 * external site in the preview.
     83                                 */
     84                                if ( ! event.isDefaultPrevented() && 'GET' === this.method.toUpperCase() ) {
     85                                        urlParser = document.createElement( 'a' );
     86                                        urlParser.href = this.action;
     87                                        if ( urlParser.search.substr( 1 ).length > 1 ) {
     88                                                urlParser.search += '&';
     89                                        }
     90                                        urlParser.search += $( this ).serialize();
     91                                        api.preview.send( 'url', urlParser.href );
     92                                }
     93
    7294                                event.preventDefault();
    7395                        });
    7496