cssjs-func-lib/flag.js
2022-02-26 12:50:35 +01:00

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');