// ==UserScript==
// @name WBB-Drive
// @namespace absolut-fair.com
// @description Nie mehr verlorene PNs!
// @include http://forum.sa-mp.de/*
// @include https://forum.sa-mp.de/*
// @require https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js
// @version 1.1.6
// @grant unsafeWindow
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_xmlhttpRequest
// @grant GM_info
// @grant GM_setClipboard
// @grant GM_addStyle
// @grant GM_openInTab
// ==/UserScript==
var popupStatus=0;
var secid = unsafeWindow.SECURITY_TOKEN;
var sid = unsafeWindow.SID_ARG_2ND;
secid=secid+sid;
var foldid = unsafeWindow.folderID;
var prefix="http";
$(document).ready(function () {
if( $("#tplPmIndex, #tplPmView").length==0) return 1;
initpop();
bfid = $("#userNote > a").attr("href");
bfid = bfid.replace(prefix+"://forum.sa-mp.de/","");
bfid = bfid.replace("index.php?page=User&userID=","");
bfid = bfid.replace("index.php?page=User&userID=","");
installed=0;
$(".pageMenu").find("span").each(function() {
if( $(this).text().indexOf("Cloud")!=-1)
{
installed=1;
installobj=this;
return false;
}
});
if(installed)
{
$(installobj).each(function() { //ist zwar nur einer aber so istes einfacher
$(this).parent("a").find("img").attr("src","https://absolut-fair.com/wbb_back/cloud1.png");
$(this).text(' Cloud-Backups');
indexeda = parseInt($(this).parent("a").attr("href").replace(prefix+"://forum.sa-mp.de/index.php?page=PMList&folderID=",""));
atma = parseInt(location.href.replace(prefix+"://forum.sa-mp.de/index.php?page=PMList&folderID=",""));
if( indexeda == atma )
{
seecloud_cmd=1;
checkreg();
}
return false;
});
if( foldid < -1 || foldid>0) return 1;
if( $(".tableList",".pmMessages").length == 0) return 1;
$(".largeButtons > ul").prepend('<li><a href="#cloud" onclick="return false;" class="tocloud"><img src="https://absolut-fair.com/wbb_back/cloud2.png" alt="" /> \
<span>In die Cloud leeren</span></a></li>');
$(".tocloud").click(function() { tocloud=1; GM_setValue("doaction", "1"); checkreg(); });
$('a[href="javascript:pmListEdit.moveMarkedTo('+indexeda+');"]').live("click",function(e) {
e.preventDefault();
openpop("Bedienungsfehler",'Hallo '+$("#userNote > a").text()+',<br>\
leider scheint es so als hättest du nicht verstanden wie man WBB-Drive bedient.<br><br>\
\
Um deine Nachrichten in die Cloud zu verschieben,<br>\
gehe auf den entsprechenden Ordner und drücke dort auf "In die Cloud leeren"',1);
});
if(GM_getValue("doaction","0")=="1")
{
tocloud=1;
goon();
}
}
else
{
$(".largeButtons > ul").prepend('<li><a href="#cloud" onclick="return false;" class="tocloud"><img src="https://absolut-fair.com/wbb_back/cloud2.png" alt="" /> \
<span>WBB-Drive installieren</span></a></li>');
$(".tocloud").click(function() { checkreg(); });
}
});
function goon()
{
if(typeof seecloud_cmd != 'undefined') seecloud();
if(typeof tocloud != 'undefined') movetocloud();
}
function checkreg()
{
GM_xmlhttpRequest({
method: "GET",
url: "https://absolut-fair.com/wbb_back/api.php?id=1&uid="+bfid+"&s="+secid,
onload: function(resp) {
var conti=resp.responseText;
loggedin = parseInt(conti);
if(loggedin==2)
{
openpop("Es wurde ein Problem festgestellt",'Hallo '+$("#userNote > a").text()+',<br><br>\
WBB-Drive erweitert das Postfach komfortabel und wird dadurch unbegrenzt groß -<br>\
ein Privileg, welches Unterstützern unseres Forums bisher immer vorbehalten war!<br><br>\
Bitte habe daher Verständnis dafür,<br>\
dass ein derart mächtiges Werkzeug auch nur diesen Benutzern zugänglich ist!<br><br>\
<input type="button" id="godonator" value="Jetzt auch Donator werden">',1);
$("#godonator").click(function() {
disablePopup();
GM_openInTab(prefix+"://forum.sa-mp.de/allgemeines-und-foreneigenes/fehler-vorschl%C3%A4ge-kritik-lob-zum-forum/52748-donator-s-club-mitgliedschaft/");
window.location=prefix+"://forum.sa-mp.de/index.php?page=PMList";
});
return 0;
}
if(loggedin && installed) return goon();
else
{
openpop("Willkommen in der WBB-Cloud",'Mit WBB-Drive verlieren Sie ihre privaten Nachrichten nie wieder!<br><br>\
<b>Features:</b><br>\
- Sekundenschnelle Einrichtung<br>\
- Absolut kostenfrei<br>\
- Jederzeitige Deinstallation<br>\
- Sicherer Datentransfer - es wird nichts geloggt!<br>\
- Schnelle und unkomplizierte Bedienung<br>\
- Eigene Verwaltung der Daten - Zugriff per Google Drive & Webinterface<br>\
- Dynamische und optisch ansprechende Einbindung ins Forum<br>\
<br>\
<input type="button" id="goset" value="WBB-Drive installieren">',1);
$("#goset").click(function() {
openrealpop("https://absolut-fair.com/wbb_back/api.php?id=2");
if(!installed)
{
GM_xmlhttpRequest({
method: "POST",
url: prefix+"://forum.sa-mp.de/index.php?form=PMFolderEdit",
data: "color=yellow&folderName=Cloud&add=Absenden",
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
onload: function(resp) {
return 1;
}
});
}
openpop("Warte auf Bestätigung","WBB-Drive wartet auf Authentifizierung",0);
var temptimer = setInterval(function() {
GM_xmlhttpRequest({
method: "GET",
url: "https://absolut-fair.com/wbb_back/api.php?id=1&uid="+bfid+"&s="+secid,
onload: function(resp) {
var conti=resp.responseText;
if( !popupStatus || conti=="1") clearInterval(temptimer);
if( conti=="1" )
{
disablePopup();
window.location=window.location;
}
}
});
},1000);
return 0;
});
}
}
});
}
function seecloud()
{
$(".largeButtons > ul").find("li").remove();
$(".largeButtons:first > ul").html('\
<li><a href="#" onclick="return false;" id="wbbdrive_uninstall"><img src="https://absolut-fair.com/wbb_back/uninstall.png" alt="" /> <span>Deinstallieren</span></a></li>\
<li><a href="#" onclick="return false;" id="wbbdrive_logout"><img src="https://absolut-fair.com/wbb_back/logout.png" alt="" /> <span>Abmelden</span></a></li>\
')
$("#wbbdrive_uninstall").click(function() {
GM_xmlhttpRequest({
method: "GET",
url: prefix+"://forum.sa-mp.de/index.php?form=PMFolderEdit&delete="+indexeda,
onload: function(resp) {
window.location=prefix+"://forum.sa-mp.de/index.php?page=PMList";
return 1;
}
});
});
$("#wbbdrive_logout").click(function() {
openrealpop("https://absolut-fair.com/wbb_back/index.php?logout");
window.location=prefix+"://forum.sa-mp.de/index.php?page=PMList";
});
$(".container-1:first",".pmMessages").html('Die Daten aus der Cloud werden empfangen...').css("height","100%");
GM_xmlhttpRequest({
method: "GET",
url: "https://absolut-fair.com/wbb_back/index.php?json",
onload: function(resp) {
var conti=resp.responseText;
var obj = jQuery.parseJSON(conti);
$(".pmMessages").html('<div class="border">\
<table class="tableList">\
<thead>\
<tr class="tableHead">\
<th class="columnIcon"><div><p><a href="#" onclick="return false;">\
</a></p></div></th>\
\
<th class="columnIcon"><div><p><a href="#" onclick="return false;">\
</a></p></div></th>\
\
<th><div><p><a href="#" onclick="return false;">\
Ordner \
</a></p></div></th>\
\
<th class="active"><div><p><a href="#" onclick="return false;">\
Datum <img src="wcf/icon/sortDESCS.png" alt="" />\
</a></p></div></th>\
\
</tr>\
</thead>\
<tbody>');
var switscha=1;
$.each(obj.data,function(key,val) {
switscha = !switscha;
if(switscha) var colcol="2";
else colcol="1";
$(".tableList",".pmMessages").append('\
<tr class="container-'+colcol+'" id="wbbdrive_'+key+'">\
<td class="columnIcon">\
<a href="'+val.download+'">\
<img id="pmEdit550213" src="https://absolut-fair.com/wbb_back/download.png" alt="" />\
</a>\
</td>\
<td>\
<a href="#" delid="'+key+'" onclick="return false;" class="wbbdrive_del">\
<img src="https://absolut-fair.com/wbb_back/remove.png">\
</a>\
</td>\
<td class="columnTitle" style="text-align:center;">\
'+val.name+'\
</td>\
<td class="columnDate smallFont">\
'+val.time_disp+'\
</td>\
</tr>');
});
$(".wbbdrive_del").click(function() {
if(!confirm("Datei unwiederbringlich entfernen?")) return false;
var delid=$(this).attr("delid");
GM_xmlhttpRequest({
method: "GET",
url: "https://absolut-fair.com/wbb_back/index.php?delete="+delid,
onload:function() {
$("#wbbdrive_"+delid).fadeOut();
}
});
});
$(".container-1:first",".pmMessages").append('</tbody></table></div>');
}
});
}
function movetocloud()
{
GM_setValue("doaction", "0");
openpop("WBB-Drive",'\
<center>\
<img src="https://absolut-fair.com/wbb_back/loading2.gif" alt="loading"><br><br>\
<p id="syncstatus">Synchronisierung wird initialisiert...</p>\
</center>',1);
$(".tocloud > img").attr("src","https://absolut-fair.com/wbb_back/loading.gif");
GM_xmlhttpRequest({
method: "GET",
url: prefix+"://forum.sa-mp.de/index.php?action=PMMarkAll&folderID="+foldid+"&t="+secid,
onload: function() {
$("#syncstatus").text("Backup wird gedownloadet...");
var dlurl = prefix+"://forum.sa-mp.de/index.php?page=PM&action=downloadMarked&t="+secid;
GM_xmlhttpRequest({
method: "GET",
url: dlurl,
overrideMimeType: 'text/plain; charset=x-user-defined',
timeout:0,
onload: function(resp) {
var conti=resp.responseText;
var foldname=$(".headlineContainer").find("h2").text();
if( $(".columnTitle").length>1) var fileend="zip";
else var fileend="txt";
$("#syncstatus").text("Backup wird in die Cloud geladen...");
var encoded = encodeURIComponent(base64Encode(conti));
GM_xmlhttpRequest({
method: "POST",
url: "https://absolut-fair.com/wbb_back/api.php?id=3&uid="+bfid+"&s="+secid,
overrideMimeType: 'text/plain; charset=x-user-defined',
data:"f="+foldname+"&end="+fileend+"&data="+encoded,
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
onload: function(resp) {
var conti=resp.responseText;
GM_xmlhttpRequest({
method: "GET",
url: prefix+"://forum.sa-mp.de/index.php?page=PM&action=unmarkAll&t="+secid,
onload:function() {
$(".tocloud > img").attr("src","https://absolut-fair.com/wbb_back/cloud2.png");
if(conti!="1")
{
openpop("Es ist ein Fehler aufgetreten!","Es ist ein schwerwiegender Fehler aufgetreten der das Backup gestoppt hat.<br>Bitte melde diesen Fehler umgehend.<br><br><b>Fehlermeldung</b><br>"+conti,1);
}
else
{
openpop("WBB-Drive",'Das Backup wurde erfolgreich in die Cloud geladen.<br>\
Du kannst über den Ordner "Cloud-Backups" darauf zugreifen!<br>\
Wie möchtest du nun fortfahren?<br><br>\
<input type="button" id="emptymarked" value="PNs leeren"><br>\
<input type="button" id="skipempty" value="Ignorieren">',1);
$("#skipempty").click(function() {
disablePopup();
});
$("#emptymarked").click(function() {
GM_xmlhttpRequest({
method: "GET",
url: prefix+"://forum.sa-mp.de/index.php?action=PMMarkAll&folderID="+foldid+"&t="+secid,
onload: function() {
GM_xmlhttpRequest({
method: "GET",
url: prefix+"://forum.sa-mp.de/index.php?page=PM&action=deleteMarked&folderID="+foldid+"&t="+secid,
onload: function() {
GM_xmlhttpRequest({
method: "GET",
url: prefix+"://forum.sa-mp.de/index.php?page=PM&action=emptyRecycleBin&t="+secid,
onload: function() {
disablePopup();
window.location=window.location;
}
});
}
});
}
});
});
}
}
});
}
});
}
});
}
});
}
function openrealpop(url)
{
poppei = window.open(url, "mrpopper", "width=600,height=400,status=yes,scrollbars=yes,resizable=no");
poppei.focus();
}
function base64Encode(str) {
var CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var out = "", i = 0, len = str.length, c1, c2, c3;
while (i < len) {
c1 = str.charCodeAt(i++) & 0xff;
if (i == len) {
out += CHARS.charAt(c1 >> 2);
out += CHARS.charAt((c1 & 0x3) << 4);
out += "==";
break;
}
c2 = str.charCodeAt(i++);
if (i == len) {
out += CHARS.charAt(c1 >> 2);
out += CHARS.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
out += CHARS.charAt((c2 & 0xF) << 2);
out += "=";
break;
}
c3 = str.charCodeAt(i++);
out += CHARS.charAt(c1 >> 2);
out += CHARS.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
out += CHARS.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6));
out += CHARS.charAt(c3 & 0x3F);
}
return out;
}
//#############################################################################################
// Funktionen von andren Leuten (wenn auch editiert)...
//#############################################################################################
String.prototype.between = function(prefix, suffix) {
s = this;
var i = s.indexOf(prefix);
if (i >= 0) {
s = s.substring(i + prefix.length);
}
else {
return '';
}
if (suffix) {
i = s.indexOf(suffix);
if (i >= 0) {
s = s.substring(0, i);
}
else {
return '';
}
}
return s;
}
function openpop(titel,text,ishtml)
{
$("#popupContact2 > h1").html(titel);
if(ishtml) $("#contactArea2").html(text);
else $("#contactArea2").text(text);
//$("img","#contactArea2").attr({src:"",alt:"Bild"});
centerPopup();
loadPopup();
}
function initpop()
{
GM_addStyle("#backgroundPopup2{ \
display:none; \
position:fixed; \
_position:absolute; \
height:500%; \
width:500%; \
top:-15px; \
left:-15px; \
background:#000000; \
border:1px solid #cecece; \
z-index:98; \
} \
#popupContact2{ \
display:none; \
position:fixed; \
_position:fixed; \
min-width:408px; \
max-width:80%; \
max-height:80%; \
background:#FFFFFF; \
border:2px solid #cecece; \
z-index:99; \
padding:12px; \
font-size:13px; \
} \
#popupContact2 h1{ \
text-align:left; \
color:#6FA5FD; \
font-size:22px; \
font-weight:700; \
border-bottom:1px dotted #D3D3D3; \
padding-bottom:2px; \
margin-bottom:20px; \
} \
#popupContactClose2{ \
font-size:14px; \
line-height:14px; \
right:6px; \
top:4px; \
position:absolute; \
color:#6fa5fd; \
font-weight:700; \
display:block; \
} \
");
$("#tplPmIndex, #tplPmView").before(''+
'<div id="popupContact2"> '+
' <a id="popupContactClose2">x</a> '+
' <h1></h1> '+
' <p id="contactArea2"> '+
' </p> '+
'</div> '+
'<div id="backgroundPopup2"></div>');
$("#popupContactClose2").click(function() {
disablePopup();
});
$("#backgroundPopup2").click(function() {
disablePopup();
});
$(document).keypress(function(e) {
if(e.keyCode==27 && popupStatus==1)
{
disablePopup();
}
});
}
function loadPopup()
{
if(popupStatus==0)
{
$("#backgroundPopup2").css({
"opacity": "0.7"
});
$("#backgroundPopup2").fadeIn("fast");
$("#popupContact2").fadeIn("fast");
popupStatus = 1;
}
}
function disablePopup(){
if(popupStatus==1){
$("#backgroundPopup2").fadeOut("fast");
$("#popupContact2").fadeOut("fast");
popupStatus = 0;
}
}
function centerPopup(){
var windowWidth = document.documentElement.clientWidth;
var windowHeight = document.documentElement.clientHeight;
var popupHeight = $("#popupContact2").height();
var popupWidth = $("#popupContact2").width();
//centering
$("#popupContact2").css({
"position": "fixed",
"top": windowHeight/2-popupHeight/2,
"left": windowWidth/2-popupWidth/2
});
}