disco-attempt-7

by Andrea Ercolino

HTML

<script src="http://cdnjs.cloudflare.com/ajax/libs/yepnope/1.5.4/yepnope.min.js"></script>

JavaScript

$(function() {
    
    $.proxyGet('http://disco-tools.eu/disco2_portal/terms.php', function(data) {
        
        $.ajaxSetup({
            beforeSend: useProxyWhenNeeded()
        });
        
        convert_relative_urls_to_absolute();
        var remote_scripts = remove_scripts();
        $('body').append(data);
        monkey_patch_indexOf();
        remote_scripts.shift();  // ignore jQuery
        yepnope({load: remote_scripts});
        remove_noise();
        
        //---
        
        function monkey_patch_indexOf() {
            var String_prototype_indexOf = String.prototype.indexOf;
            String.prototype.indexOf = function(sub) {
                var value = this.toString();
                var jsfiddle_update = /\/\w{5,5}(\/\d+)?\/show\/$/;
                var jsfiddle_run    = '/_display/';
                if (jsfiddle_update.test(value) || jsfiddle_run == value) {
                    value = '/disco2_portal/terms.php';
                }
                var result = String_prototype_indexOf.apply(value, arguments);
                return result;
            };
            console.log('Monkey patched String.prototype.indexOf !!');
        }
        
        function useProxyWhenNeeded() {
            var reqno = 0;
            return function( jqXHR, settings ) {
                var url = settings.url;
                console.log('Request ' + (++reqno) + ': ' + settings.type + ' ' + url + ' .');
                if (url.indexOf('ajax/ajaxCalls.php') == 0) {
                    url = 'http://disco-tools.eu/disco2_portal/' + url;
                }
                var needs_proxy = url.indexOf('http://disco-tools.eu/disco2_portal/ajax/ajaxCalls.php') == 0;
                if (needs_proxy) {
                    console.log('Proxying ' + url + ' .');
                    //debugger;
                    $.proxyGet(url, settings.success, $.extend(my_proxy, { 
                        filter: function(data) {
                            return...