summaryrefslogtreecommitdiff
path: root/data/extensions/gnuzilla-ext-workarounds@gnu.org/workaround/googledocs_main.js
blob: d746815ebe7c4bbc0e6f5f3a8841aacc56a98efe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/*

 Copyright (C) 2017-2019 Nathan Nichols
 Copyright (C) 2019 Free Software Foundation, Inc.

 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU 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 General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.

*/
if(document.location.href.indexOf("docs.google.com") != -1){
    console.log("googledocs_main.js");
    function parseURL(a){
	let url = new URL(a);
	var result = Object.create(null);
	for(let i of url.searchParams) {
	    result[i[0]] = i[1];
	}
	return JSON.stringify(result, undefined, 4); 
    }
    var id;
    var url;
    function form_check(){
	console.log("boop");
	var format = "";
	var input = document.getElementsByTagName("input");
	if(input[input.length-1].value != "Expected 3 letter file extension"){
	    format = input[input.length-1].value;
	} else{
	    for(var i = 0; i < input.length-1; i++){
		if(input[i].value != ""){
		    format = input[i].value;
		    break;
		}
	    }
	    if(format == ""){
		return 0;		
	    }
	}

	// Supposed to look like this:
	// https://docs.google.com/document/export?format=FORMAT&id=ID
	// Thanks to Alyssa Rosenzweig.
	var new_url = 'https://docs.google.com/document/export?format='+format+'&id='+id;
	document.location.assign(new_url);
	return 0;
    }


    var contains_apostrophe = "You don't really want to store your data in a cloudy service do you?";
    var opts_form =
	'	<br>'+
	'	<h1>Google Drive without non-free Javascript</h1>'+
	'	'+contains_apostrophe+'<br><br><br>'+
	'	<div id="opts">'+
	'	<b>Please select the format to download in:</b><br><br>'+
	'	<input type="radio" name="format" value="txt"> Plain text ("txt")<br>'+
	'	<input type="radio" name="format" value="odt"> ODT ("odt")<br><br>'+
	'	Or try to get the document in a different format, '+
	'	("png", "avi", "pdf", etc..):<br><br>'+
	'	<input type="text" value="Expected 3 letter file extension"><br><br>'+
	'	<button id="submit">Go fetch the document<br>'+
	'	</div>'+
	''+
	''+
	'';

    // see if its a document or not.
    function check_valid(){
	id = "no ID found.";
	var url_arr = document.location.href.split("/");
	for(var i = 0; i < url_arr.length-1; i++){
	    if(url_arr[i] == "d"){
		id = url_arr[i+1];
		break;
	    }
	    if(url_arr[i].indexOf("id=") != -1){
		id = document.location.href.substring(url_arr[i].indexOf("id=")+3,document.location.href.length);
		break;
	    }
	}
	console.log(id);
	if(id == "no ID found."){
	    // do nothing because it could be an info page or something
	    console.log("no id found.");
	    return false;
	}
	else {
	    return true;
	}
    }



    function main(){
	
	if(check_valid()){	
	    console.log("---------------------------------"+Date.now()+":Detected Google Drive."+"---------------------------------");
	    window.stop();
	    document.head.innerHTML = "";
	    document.body.innerHTML = opts_form;
	    document.body.style.textAlign = "center";
	    document.getElementById("opts").style.textAlign = "left";	
	    //document.getElementsById("opts").style.float = "left";	
	    document.body.style.marginTop = "2%"
	    document.body.style.marginLeft = "25%"
	    document.body.style.marginRight = "25%"
	    document.getElementById("submit").addEventListener("click",form_check);
	}
	return 0;
    }
    main();
}