Greasy Fork is available in English.

Script para ies

Script que agrega funcionalidades al tid

2018-05-06 يوللانغان نەشرى. ئەڭ يېڭى نەشرىنى كۆرۈش.

// ==UserScript==
// @name         Script para ies
// @namespace    http://tampermonkey.net/
// @version      0.6
// @description  Script que agrega funcionalidades al tid
// @author       Falaz
// @match        http://tid.ies21.edu.ar/*
// @grant        none
// @run-at       document-end
// ==/UserScript==

(function init() {
    var tiempoInicial = new Date();
    var a = document.querySelector('.ui-grid-c');
    var li = document.createElement('li');
    li.classList.add('ui-block-d');
    li.id = "achild";
    li.innerHTML = '<a href="javascript:void(0)" data-icon="gear" data-ajax="false" data-corners="false" data-shadow="false" data-theme="a" class="ui-btn ui-btn-up-a ui-btn-inline ui-btn-icon-top"><span class="ui-btn-inner"><span class=ui-btn-text">Falaz´s tools    </span><span class="ui-btn-text" id="TimeSpan">00:00</span><span class="ui-icon ui-icon-gear ui-icon-shadow">&nbsp;</span></span></a>';
    try {
        a.appendChild(li);
        a.classList.remove('ui-grid-c');
        a.classList.add('ui-grid-d');
    } catch (error) {
        console.log("Será porque lo hace dos veceS?");
    }
    li.onclick = function () {
        tiempoInicial = new Date();
        return false;
    };
    var timeSpan = document.querySelector('#TimeSpan');

    // Calcular tiempo de lectura
    var todosLosP = document.getElementsByTagName("p");
    var texto = "";
    for (var i = 0; i < todosLosP.length; i++) {
        texto += (todosLosP[i].innerText);
    }
    texto = texto.replace(/[ ]+/g, " ");
    texto = texto.replace(/^ /, "");
    texto = texto.replace(/ $/, "");
    var textoTroceado = texto.split(" ");

    var numeroPalabras = textoTroceado.length;

    console.log("Palabras contadas: " + numeroPalabras);
    console.log("El tiempo estimado de lectura, se basa en unas 150 o 100 palabras por minuto");
    console.log("Tiempo inicial: " + tiempoInicial);
    try{
    timeSpan.innerText = Math.round(numeroPalabras / 170) + " - " + Math.round(numeroPalabras / 130) + " min aprox\n";
    }catch(error){}
    var time = setInterval(myTimer, 1000);

    function myTimer() {
        var c = new Date();
        var segundos = (c.getTime() - tiempoInicial.getTime()) / 1000;
        var min = Math.floor(segundos / 60);
        segundos = Math.round(segundos % 60);

    }

    function replaceLinks() {
        var botones = document.getElementsByClassName('ui-btn');
        var linksPrincipal = document.getElementsByClassName('ui-link-inherit');
        var i = 0;
        for (i = 0; i < linksPrincipal.length; i++) {
            linksPrincipal[i].onclick = function () {
                $(document).on('pageshow', function (e) {
                    init();
                });
            };
        }
        // for (i = 0; i < botones.length; i++) {
        //     botones[i].onclick = function () {
        //         $(document).on('pageshow', function (e) {
        //             init();
        //         });
        //     };
        // }
        console.log("links reemplazados");
    }

    function replaceMedia() {
        var medias = $('.textoc'),
            mediasLinks = $('a'),
            medias2 = $('.tc'),
            link, tipo, div, i = 0;
        for (i = 0; i < medias.length; i++) {
            if (medias[i].children) {
                console.log("tiene hijos");
                if (medias[i].children.length > 0 && medias[i].children[0] !== null) {
                    link = '';
                    tipo = 'video';
                    link = medias[i].children[0].href;
                    div = document.createElement('div');
                    replaceVideo(link, div, medias[i]);
                    div.id = 'media' + [i];
                    medias[i].appendChild(div);
                }
            }
            // $('#media' + [i]).load(link + '#containingBlock');
        }
        for(i = 0;i<medias2.length;i++){
           if(medias2[i].children){
               if(medias2[i].children.length >0 && medias2[i].children[0] !== null){
                   link = "";
                   tipo = 'object';
                   link = medias2[i].children[0].href;
                   console.log(medias2[i].children[0]);
                   div = document.createElement('div');
                   replaceVideo(link,div,medias2[i]);
                   div.id = "media" + medias2[i];
                   medias2[i].appendChild(div);
               }
           }
        }
        for (i = 0; i < mediasLinks.length; i++) {
            if (mediasLinks[i].href.match(/media/)) {
                if (mediasLinks[i].attributes.getNamedItem('data-rel') === null) {
                    //console.log(mediasLinks[i].href);
                    link = '';
                    tipo = 'object';
                    link = mediasLinks[i].href;
                    div = document.createElement('div');
                    replaceVideo(link, div, mediasLinks[i]);
                    div.id = 'media' + [i];
                    mediasLinks[i].appendChild(div);
                }
            }
        }
    }

    function replaceVideo(link, div, medias) {
        if(link === undefined){/*console.log(link, div, medias);*/return null;}
        var xhr = new XMLHttpRequest();
        xhr.withCredentials = true;

        xhr.addEventListener("readystatechange", function () {
            if (this.readyState === 4) {
                //tomar el iframe del response. Para los videos de youtube.
                if (xhr.response.includes('iframe')) {
                    //remove link and img from div

                    medias.children[0].remove();
                    var index = xhr.response.indexOf('<iframe');
                    var j = xhr.response.lastIndexOf('iframe>');
                    j += 7;
                    var iframetext = xhr.response.substring(index, j);
                    var iframeSrc = iframetext.match(/src="([^"]+)"/);
                    var iframe = document.createElement('iframe');
                    iframe.src = iframeSrc[1];
                    iframe.height = 400;
                    iframe.width = 600;
                    div.appendChild(iframe);
                    //   div.append("aquí estaba un video");
                } else if (xhr.response.includes('object')) {
                    //console.log("Soy un object :D");
                    medias.children[0].remove();
                    var iObject = xhr.response.indexOf('<object');
                    var jObject = xhr.response.indexOf('.swf"');
                    //console.log(iObject, jObject);
                    jObject += 5;
                    var objectText = xhr.response.substring(iObject, jObject);
                    var objectData = objectText.match(/data="([^"]+)"/);
                    var objectWidth = objectText.match(/width="([^"]+)"/);
                    var objectHeight = objectText.match(/height="([^"]+)"/);
                    var iframeObject = document.createElement('object');
                    iframeObject.data = objectData[1];
                    iframeObject.height = parseInt(objectHeight[1]) + 100;
                    //if (objectWidth[1].match(/%/)){
                    //    iframeObject.width = 600;
                    //}else{
                    iframeObject.width = objectWidth[1];
                    //}
                    div.appendChild(iframeObject);
                }else if(xhr.response.includes('div id="containingBlock"')){
                         console.log("Es una imagen :DD");
                } else {
                    console.log("hola, agregué un iframe :D");
                    medias.children[0].remove();
                    var iFrameEntirePage = document.createElement('iframe');
                    iFrameEntirePage.src = link;
                    iFrameEntirePage.width = 800;
                    iFrameEntirePage.height = 600;
                    var exist = false;
                    div.appendChild(iFrameEntirePage);

                }

            }
        });
        xhr.open("GET", link);
        xhr.send('cache-control');
    }

    setTimeout(replaceLinks(), 1000);
    setTimeout(replaceMedia(), 1000);
})();