Script para ies

Script que agrega funcionalidades al tid

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey, το Greasemonkey ή το Violentmonkey για να εγκαταστήσετε αυτόν τον κώδικα.

You will need to install an extension such as Tampermonkey to install this script.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey ή το Violentmonkey για να εγκαταστήσετε αυτόν τον κώδικα.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey ή το Userscripts για να εγκαταστήσετε αυτόν τον κώδικα.

You will need to install an extension such as Tampermonkey to install this script.

Θα χρειαστεί να εγκαταστήσετε μια επέκταση διαχείρισης κώδικα χρήστη για να εγκαταστήσετε αυτόν τον κώδικα.

(Έχω ήδη έναν διαχειριστή κώδικα χρήστη, επιτρέψτε μου να τον εγκαταστήσω!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(Έχω ήδη έναν διαχειριστή στυλ χρήστη, επιτρέψτε μου να τον εγκαταστήσω!)

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

(function init() {
    try{
        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();
            console.log("me hiciste click:D");
            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;
                        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 && div.dataset.tipo == undefined) {
                    //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.dataset.tipo = "video";
                        div.appendChild(iframe);
                        //   div.append("aquí estaba un video");
                    } else if (xhr.response.includes('video')){
                        medias.children[0].remove();
                        var iVideo = xhr.response.indexOf('<video');
                        var jVideo = xhr.response.indexOf('video>');
                        var videotext = xhr.response.substring(iVideo, jVideo);
                        var src = videotext.match(/src="([^"]+)\./);
                        var video = document.createElement('video');
                        video.controls = true;
                        video.poster = src[1] + ".jpg";
                        video.width = 640; video.height = 480;
                        //in video
                        var source = document.createElement('source');source.src = src[1] + ".mp4";source.type = "video/mp4";
                        var object = document.createElement('object');object.width ="100%";object.height=480;object.type = "application/x-shockwave-flash";object.data = "fp//flashmediaelement.swf";
                        //in object
                        var paramMovie = document.createElement('param');paramMovie.name = "movie"; paramMovie.value = "fp/flashmediaelement.swf";
                        var paramAllow = document.createElement('param');paramAllow.name = "allowScriptAccess";paramAllow.value="always";
                        var paramFlash = document.createElement('param');paramFlash.name = "flashvars";paramFlash.value = "autoplay=false&autohide=false&controls=true&file=../" + src[1] + ".mp4";
                        var paramImg = document.createElement('img');paramImg.width = 640;paramImg.height = 480;paramImg.src = src[1] + ".jpg";
                        object.appendChild(paramMovie);object.appendChild(paramAllow);object.appendChild(paramFlash);object.appendChild(paramImg);
                        video.appendChild(source);
                        video.appendChild(object);
                        div.appendChild(video);
                        //console.log("incluye video :DD");
                        div.dataset.tipo = "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.dataset.tipo = "object";
                        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);
                        div.dataset.tipo = "iframe";

                    }

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

        setTimeout(replaceLinks(), 1000);
        setTimeout(replaceMedia(), 1000);
        document.onmouseup = function(e) {
            if(e.srcElement.localName == "p"){
                if (e.shiftKey){apptx.mSeleccion(1);}
                else{apptx.mSeleccion(2);}
            }
        };
    }catch(error){}
})();