Tuesday, October 13, 2015

Download modules from Magento Connect with a single click

If you are a developer and work with Magento, it is very likely that you don't use Magento Connect to download modules. Magento Connect was made to simplify the process of installing modules for people that don't have a solid background on development, which makes it potentially harmful.

There are a few websites which allow you to download a module through them, entering the extension key, or searching through a list of modules like these:

I read this article that explains how to download a module, manually generating the URL of the module package, based on the data found on the module page. Using this information I wrote this small script, that when executed on a Magento Connect module page, opens a new window that causes the module package download to start:

var lastVersion = jQuery(".extension-version li")
    .first().contents().last()
    .text().trim();

jQuery("#button-purchase-input").click();
jQuery("#connect-version-id").val(2);
jQuery("#licence-agreement-checkbox").click();
jQuery("#get-extension-button-free").click();

var magentoConnectKey = jQuery("#extension-key-input").val();
var moduleName = magentoConnectKey.replace(/.*\/([^/]*)/, "$1");

window.open(
    magentoConnectKey + "/" +
    lastVersion + "/" +
    moduleName + "-" +
    lastVersion + ".tgz");

What the code does is quite clear: it just clicks on some elements, gets the last version and the module key from the page, generates the URL and opens it on a new window.

I added this code to my favorites, and now, all I have to do to download a module is to go to the module page on Magento Connect and click the favorites button on the browser.

To add the script to the browser favorites you need to add the prefix "javascript:", so the browser interprets whatever comes next as a JavaScript code. Here is a minified vesion ready to paste:

javascript:(function(){var e=jQuery(".extension-version li").first().contents().last().text().trim();jQuery("#button-purchase-input").click(),jQuery("#connect-version-id").val(2),jQuery("#licence-agreement-checkbox").click(),jQuery("#get-extension-button-free").click();var n=jQuery("#extension-key-input").val(),t=n.replace(/.*\/([^/]*)/,"$1");window.open(n+"/"+e+"/"+t+"-"+e+".tgz")})();

1 comment:

  1. Another way: https://www.magentoextensions.org/download
    Seem to work in 2017.

    ReplyDelete