95 lines
2.4 KiB
JavaScript
95 lines
2.4 KiB
JavaScript
(function(connector) {
|
|
'use strict';
|
|
|
|
var iframe;
|
|
var flag;
|
|
|
|
var closeFlag = function(ev) {
|
|
flag.classList.add('closing');
|
|
setTimeout(function() {
|
|
flag.style.opacity = 0;
|
|
setTimeout(function() {
|
|
flag.remove();
|
|
},500);
|
|
},3000);
|
|
//TODO timeout und vanish
|
|
}
|
|
|
|
var openFlag = function(ev) {
|
|
flag = document.createElement('div');
|
|
flag.id = 'flag-overlay';
|
|
iframe = document.createElement('iframe');
|
|
iframe.src= '';
|
|
iframe.name = 'flag-iframe';
|
|
flag.appendChild(iframe);
|
|
document.body.appendChild(flag);
|
|
|
|
var form = document.createElement('form');
|
|
form.action = connector;
|
|
form.target = 'flag-iframe';
|
|
form.method = 'POST';
|
|
const screenshotTarget = document.body;
|
|
|
|
/*html2canvas(screenshotTarget).then((canvas) => {
|
|
const base64image = canvas.toDataURL("image/png");
|
|
window.location.href = base64image;
|
|
});*/
|
|
var fields = {};
|
|
fields['s'] = window.location.hostname;
|
|
if(document.referrer) {fields['r'] = document.referrer;}
|
|
if(window.location.href) {fields['u'] = window.location.href;}
|
|
|
|
for(var f in fields) {
|
|
var inp = document.createElement('input');
|
|
inp.type = 'hidden';
|
|
inp.name = f;
|
|
inp.value = fields[f]
|
|
form.appendChild(inp);
|
|
}
|
|
|
|
form.style = 'display:none';
|
|
document.body.appendChild(form);
|
|
form.submit();
|
|
}
|
|
|
|
var panel = document.createElement('div');
|
|
panel.id = 'flag-panel';
|
|
|
|
var tab = document.createElement('span');
|
|
tab.innerHTML = '⚑';
|
|
tab.addEventListener('mouseenter',function(ev) {
|
|
if(!panel.classList.contains('opened')) {
|
|
panel.classList.add('opened');
|
|
}
|
|
panel.classList.toggle('open');
|
|
});
|
|
|
|
var button = document.createElement('button');
|
|
|
|
button.innerHTML = 'Problem melden';
|
|
button.addEventListener('click',openFlag);
|
|
|
|
window.addEventListener("message", (event) => {
|
|
//console.log(event);
|
|
if(event.data == 'close') {
|
|
closeFlag();
|
|
}
|
|
});
|
|
|
|
var links = document.getElementsByClassName('flag-link');
|
|
if(links.length > 0) {
|
|
for(var l in links) {
|
|
console.log(links);
|
|
links[l].addEventListener('click',function(ev) {
|
|
openFlag(ev);
|
|
ev.preventDefault();
|
|
return false;
|
|
});
|
|
}
|
|
}
|
|
|
|
panel.appendChild(tab);
|
|
panel.appendChild(button);
|
|
|
|
document.body.appendChild(panel);
|
|
})('https://troy-grunt.de/feedback'); |