/*
* 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 .
*/
var page_html = '\
\
\
WvS VPlan | Vertretungen
\
\
\
\
\
\
';
function show_pdf(url, filename){
name = encodeURIComponent(filename.replace(".pdf", ""));
console.log("Download fertig, zeige PDF " + name);
$("#loginpage").after(page_html.replace(/{ID}/g, name));
location.href = "#page-" + name;
PDFJS.getDocument(url).then(function(pdf){
pdf.getPage(1).then(function(page){
var scale = 1.5;
var viewport = page.getViewport(scale);
var canvas = document.getElementById("canvas-" + name);
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
var renderContext = {
canvasContext: context,
viewport: viewport
};
page.render(renderContext);
});
});
}
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(), filename);
},
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');
});
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);
}
};