/* * Copyright (C) 2014 * This file is part of WvS VPlan. * * WvS VPlan is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ function show_pdf(url){ $('#input').attr('src', url); console.log("Download fertig, parse PDF"); var input = document.getElementById("input"); var processor = document.getElementById("processor"); var output = document.getElementById("output"); window.addEventListener("message", function(event){ if(event.source != processor.contentWindow) return; switch(event.data){ case "ready": var xhr = new XMLHttpRequest; xhr.open("GET", input.getAttribute("src"), true); xhr.responseType = "arraybuffer"; xhr.onload = function(event){ processor.contentWindow.postMessage(this.response, "*"); }; xhr.send(); break; default: output.textContent = event.data.replace(/\s+/g, " "); break; } }, true); } function fail(text){ alert("Etwas ist schiefgelaufen: " + text.toString()); } function download_pdf(link){ var filename = link.substring(link.lastIndexOf('/') + 1); window.requestFileSystem( LocalFileSystem.PERSISTENT, 0, function onFileSystemSuccess(fileSystem){ fileSystem.root.getFile( filename, {create: true, exclusive: false}, function gotFileEntry(fileEntry){ var sPath = "/storage/sdcard0" + fileEntry.fullPath; // !!! TODO Unterstützung anderer Geräte console.log("Pfad: " + sPath); var fileTransfer = new FileTransfer(); fileEntry.remove(); fileTransfer.download( link, sPath, function(theFile){ console.log("Download fertig: " + theFile.toURL()); show_pdf(theFile.toURL()); }, function(error){ console.log("Fehler: " + error.source + " - "+ error.target + " - " + error.code); } ); }, fail); }, fail); } function get_plan(link){ var request = $.ajax({ type: "GET", url: link }); request.done(function(result){ var pdf_re = new RegExp("(http://***REMOVED***\\.de/moodle/pluginfile\\.php/\\d+/mod_resource/content/\\d+.*?\\.pdf)"); var pdflink = pdf_re.exec(result)[1]; console.log('Plan gefunden: ' + pdflink); download_pdf(pdflink); }); request.fail(function(jqXHR, textStatus){ alert("Etwas ist schiefgelaufen: " + textStatus); }); } function get_overview(link){ var request = $.ajax({ type: "GET", url: link }); request.done(function(result){ var plans_re = new RegExp("window\\.open\\('(http://***REMOVED***\\.de/moodle/mod/resource/view\\.php\\?id=\\d+)&redirect=1'\\)"); var links = plans_re.exec(result); for(var i = 1; i < links.length; i += 2){ console.log('suche Plan ' + links[i]); get_plan(links[i]); } console.log('Übersichts-Request erfolgreich'); location.href = '#overview'; }); request.fail(function(jqXHR, textStatus){ alert("Etwas ist schiefgelaufen: " + textStatus); }); } function login(){ $.mobile.loading("show", { text: "Lade...", textVisible: true, theme: "b", }); var username = encodeURIComponent($("#username").val()); var password = encodeURIComponent($("#password").val()); var params = "username=" + username + "&password=" + password; var request = $.ajax({ type: "POST", url: "https://***REMOVED***/moodle/login/index.php", data: {username: username, password: password} }); request.done(function(result){ var vertretungs_re = new RegExp("title=\"Vertretungsplan\" href=\"(http://***REMOVED***\\.de/moodle/course/view\\.php\\?id=\\d+)"); var link = vertretungs_re.exec(result)[1]; console.log('Login-Request erfolgreich: ' + link); get_overview(link); }); request.fail(function(jqXHR, textStatus){ alert("Etwas ist schiefgelaufen: " + textStatus); }); } var app = { // Application Constructor initialize: function() { this.bindEvents(); }, // Bind Event Listeners // // Bind any events that are required on startup. Common events are: // 'load', 'deviceready', 'offline', and 'online'. bindEvents: function() { document.addEventListener('deviceready', this.onDeviceReady, false); }, // deviceready Event Handler // // The scope of 'this' is the event. In order to call the 'receivedEvent' // function, we must explicity call 'app.receivedEvent(...);' onDeviceReady: function() { app.receivedEvent('deviceready'); }, // Update DOM on a Received Event receivedEvent: function(id) { /* var parentElement = document.getElementById(id); var listeningElement = parentElement.querySelector('.listening'); var receivedElement = parentElement.querySelector('.received'); listeningElement.setAttribute('style', 'display:none;'); receivedElement.setAttribute('style', 'display:block;'); */ console.log('Received Event: ' + id); } };