-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdrag.js
65 lines (64 loc) · 2.61 KB
/
drag.js
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
/*
This looks pretty complex, but it really isn't! This is just the drag-drop mechanism! It even has a few useful functions such as tagify, which makes html clickable!
*/
var dragging;
$(function () {
var clientFrameWindow = $('#iframe-select').get(0).contentWindow;
$("#myDropdown a").on('dragstart', function () {
dragging = event.target;
});
$("#myDropdown a").on('dragend', function () {
event.preventDefault();
event.stopPropagation();
var iframe = document.getElementById('iframe-select');
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
if (innerDoc.elementsFromPoint(event.clientX, event.clientY)[0].tagName != "section") {
var key=dragging.innerHTML;
var fs = require('fs');
var obj = JSON.parse(fs.readFileSync(__dirname + '\\controls.json', 'utf8'));
innerDoc.elementsFromPoint(event.clientX, event.clientY)[0].insertAdjacentHTML('beforeend', tagify(obj[key]));
updateHTML();
}
});
$('#iframe-select').on('load', function () {
var total = 0;
$(clientFrameWindow.document.body).find('*').on('dragenter', function (event) {
event.preventDefault();
event.stopPropagation();
total += 1;
}).on('dragover', function (event) {
event.preventDefault();
event.stopPropagation();
total += 1;
});
});
});
function addelement(x, y)
{
}
function tagify(htmlcode)
{
parser = new DOMParser();
doc = parser.parseFromString(htmlcode, "text/xml");
var all = doc.querySelectorAll("a,h1,h2,h3,h4,h5,h6,p,section,nav,footer,div,input,button");
for (var i = 0, max = all.length; i < max; i++) {
var itemid=Math.random().toString(36).substr(2, 9);
all[i].id = itemid;
all[i].setAttribute("safehref",all[i].getAttribute("href"));
all[i].setAttribute("href","javascript:void(0)");
all[i].setAttribute("ondblclick","window.parent.editElement(\"" + itemid + "\")");
all[i].setAttribute("onmousedown","event.stopPropagation();window.parent.selectcontrol('" + itemid + "','" + dragging.innerHTML + "');");
console.log(all[i]);
}
return new XMLSerializer().serializeToString(doc);
}
function updateHTML()
{
var iframe = document.getElementById('iframe-select');
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
var safe = new XMLSerializer().serializeToString(innerDoc);
var editor = ace.edit("editor");
var pretty=require("pretty");
safe=pretty(safe,false);
editor.session.setValue(safe);
}