WordPress.org

Ready to get started?Download WordPress

Forums

Plugins Garbage Collector
Empty Ajax response MultiSite Fix (3 posts)

  1. alx359
    Member
    Posted 2 years ago #

    I like the plugin idea, but unfortunately, it wasn't working for me. After some debugging, I found the following.

    Ajax is going to return an empty response in WP3.x.x MultiSite (with domain mapping) because, by design (in FF), ajax does not allow calls to a different domain (if not in jsonp as it's the case).

    Th issue is that WP inits all the scripts with the siteurl domain (e.g. sub.mysite.com), but when the admin is invoked within a mapped site (www.mymappedsite.com) the ajax call needs to happen within that mapped domain too.

    This is the fix that works for me:

    plugins-garbage-collector\pgc-lib.php li ~29, add the following 2 lines:

    $pgcPluginDirName = substr(dirname(__FILE__), strlen(WP_PLUGIN_DIR) + 1, strlen(__FILE__) - strlen(WP_PLUGIN_DIR)-1);
    
    ////[alx359] new definition for Multisite support
    $pgc_siteURL_wpmu = ( is_ssl() && !is_admin() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'];
    define('PGC_PLUGIN_DIR_WPMU', $pgc_siteURL_wpmu.'/wp-content/plugins/'.$pgcPluginDirName);
    ////

    plugins-garbage-collector.php li ~122 change the following line:

    function pgc_scriptsAction() {
      wp_enqueue_script('pgc_js_script', PGC_PLUGIN_URL.'/pgc-ajax.js', array('jquery','jquery-form'));
      //[alx359] use current (mapped) domain, to avoid forbidden cross-domain ajax calls
      //wp_localize_script('pgc_js_script', 'pgcSettings', array('plugin_url' => PGC_PLUGIN_URL, 'ajax_nonce' => wp_create_nonce('plugins-garbage-collector')));
      wp_localize_script('pgc_js_script', 'pgcSettings', array('plugin_url' => PGC_PLUGIN_DIR_WPMU, 'ajax_nonce' => wp_create_nonce('plugins-garbage-collector')));
    }

    This should fix the issue.

    Additionally, unessential but useful: more comprehensive ajax error messages if something goes wrong, instead of [Object object]
    pgc-ajax.js li ~33

    /*[alx359] better error handling | error: function(msg) {*/
       error: function(jqXHR, textStatus, errorThrown) {
         stopProgressBar();
       /*[alx359] better error handling | alert(msg);*/
         alert(textStatus+' - '+errorThrown);

    *

    This below are just little layout embellishments (tested in FF5 only).

    a) Better alignment of ajax wait wheel

    pgc-admin.css li ~72. Change height

    #progressbar {
      height:22px; /*[alx359] changed | height:16px*/

    pgc-admin.css li ~104. Add some padding

    .ajax_processing {
      padding: 0 0 0 10px; /*[alx359] added*/

    b) Better "Scan" button alignment

    pgc-options.php li ~111 change margin

    <div style="float: left; display: inline; margin: -5px 0 10px 0;<?/*[alx359] margin-bottom: 10px;*/?>">
    <input type="button" name="scan_db" value="<?php _e('Scan', 'pgc'); ?>" title="<?php _e('Click this button to gather information how plugins use your WordPress database', 'pgc'); ?>" onclick="pgc_Actions('scan');"/>

    HTH.

  2. Vladimir Garagulya
    Member
    Plugin Author

    Posted 2 years ago #

    I included your contribution to version 0.9.7. Thanks for your help.

  3. alx359
    Member
    Posted 2 years ago #

    Thank to you, Vlado, for sharing this wonderful plugin with us!

Topic Closed

This topic has been closed to new replies.

About this Plugin

About this Topic