liquid_feedback_frontend
diff static/js/dragdrop.js @ 519:7492497005bd
Fixed voting for non javascript capable browser, removed browser warning
author | bsw |
---|---|
date | Mon Apr 16 23:27:07 2012 +0200 (2012-04-16) |
parents | 8d91bccab0bf |
children | b865f87ea810 |
line diff
1.1 --- a/static/js/dragdrop.js Sun Apr 15 18:26:06 2012 +0200 1.2 +++ b/static/js/dragdrop.js Mon Apr 16 23:27:07 2012 +0200 1.3 @@ -1,73 +1,76 @@ 1.4 -window.addEventListener("load", function(event) { 1.5 - var originalElement; 1.6 - var draggedElement; 1.7 - var mouseX; 1.8 - var mouseY; 1.9 - var mouseOffsetX; 1.10 - var mouseOffsetY; 1.11 - var elementOffsetX; 1.12 - var elementOffsetY; 1.13 - var dropFunc; 1.14 - var dragElement = function(element, func) { 1.15 - //if (typeof(element) == "string") element = document.getElementById(element); 1.16 - originalElement = element; 1.17 - draggedElement = originalElement.cloneNode(true); 1.18 - originalElement.style.visibility = "hidden"; 1.19 - draggedElement.style.margin = 0; 1.20 - draggedElement.style.position = "absolute"; 1.21 - draggedElement.style.left = elementOffsetX = originalElement.offsetLeft; 1.22 - draggedElement.style.top = elementOffsetY = originalElement.offsetTop; 1.23 - draggedElement.style.width = originalElement.clientWidth; 1.24 - draggedElement.style.height = originalElement.clientHeight; 1.25 - draggedElement.style.backgroundColor = "#eee"; 1.26 - draggedElement.style.opacity = 0.8; 1.27 - originalElement.offsetParent.appendChild(draggedElement); 1.28 - // workaround for wrong clientWidth and clientHeight information: 1.29 - draggedElement.style.width = 2*originalElement.clientWidth - draggedElement.clientWidth; 1.30 - draggedElement.style.height = 2*originalElement.clientHeight - draggedElement.clientHeight; 1.31 - mouseOffsetX = mouseX; 1.32 - mouseOffsetY = mouseY; 1.33 - dropFunc = func; 1.34 - }; 1.35 - window.addEventListener("mousemove", function(event) { 1.36 - mouseX = event.pageX; 1.37 - mouseY = event.pageY; 1.38 - if (draggedElement) { 1.39 - draggedElement.style.left = elementOffsetX + mouseX - mouseOffsetX; 1.40 - draggedElement.style.top = elementOffsetY + mouseY - mouseOffsetY; 1.41 +if (!jsFail) { 1.42 + window.addEventListener("load", function(event) { 1.43 + var originalElement; 1.44 + var draggedElement; 1.45 + var mouseX; 1.46 + var mouseY; 1.47 + var mouseOffsetX; 1.48 + var mouseOffsetY; 1.49 + var elementOffsetX; 1.50 + var elementOffsetY; 1.51 + var dropFunc; 1.52 + var dragElement = function(element, func) { 1.53 + //if (typeof(element) == "string") element = document.getElementById(element); 1.54 + originalElement = element; 1.55 + draggedElement = originalElement.cloneNode(true); 1.56 + originalElement.style.visibility = "hidden"; 1.57 + draggedElement.style.margin = 0; 1.58 + draggedElement.style.position = "absolute"; 1.59 + draggedElement.style.left = elementOffsetX = originalElement.offsetLeft; 1.60 + draggedElement.style.top = elementOffsetY = originalElement.offsetTop; 1.61 + draggedElement.style.width = originalElement.clientWidth; 1.62 + draggedElement.style.height = originalElement.clientHeight; 1.63 + draggedElement.style.backgroundColor = "#eee"; 1.64 + draggedElement.style.opacity = 0.8; 1.65 + originalElement.offsetParent.appendChild(draggedElement); 1.66 + // workaround for wrong clientWidth and clientHeight information: 1.67 + draggedElement.style.width = 2*originalElement.clientWidth - draggedElement.clientWidth; 1.68 + draggedElement.style.height = 2*originalElement.clientHeight - draggedElement.clientHeight; 1.69 + mouseOffsetX = mouseX; 1.70 + mouseOffsetY = mouseY; 1.71 + dropFunc = func; 1.72 + }; 1.73 + window.addEventListener("mousemove", function(event) { 1.74 + mouseX = event.pageX; 1.75 + mouseY = event.pageY; 1.76 + if (draggedElement) { 1.77 + draggedElement.style.left = elementOffsetX + mouseX - mouseOffsetX; 1.78 + draggedElement.style.top = elementOffsetY + mouseY - mouseOffsetY; 1.79 + } 1.80 + }, true); 1.81 + var mouseDrop = function(event) { 1.82 + if (draggedElement) { 1.83 + dropFunc( 1.84 + originalElement, 1.85 + elementOffsetX + mouseX - mouseOffsetX, 1.86 + elementOffsetY + mouseY - mouseOffsetY 1.87 + ); 1.88 + originalElement.style.visibility = ''; 1.89 + draggedElement.parentNode.removeChild(draggedElement); 1.90 + originalElement = null; 1.91 + draggedElement = null; 1.92 + } 1.93 + }; 1.94 + window.addEventListener("mouseup", mouseDrop, true); 1.95 + window.addEventListener("mousedown", mouseDrop, true); 1.96 + var elements = document.getElementsByTagName("*"); 1.97 + for (var i=0; i<elements.length; i++) { 1.98 + var element = elements[i]; 1.99 + if (element.className == "movable") { 1.100 + element.addEventListener("mousedown", function(event) { 1.101 + event.target.style.cursor = "move"; 1.102 + dragElement(event.currentTarget, function(element, dropX, dropY) { 1.103 + event.target.style.cursor = ''; 1.104 + elementDropped(element, dropX, dropY); 1.105 + }); 1.106 + event.preventDefault(); 1.107 + }, false); 1.108 + } else if (element.className == "clickable") { 1.109 + element.addEventListener("mousedown", function(event) { 1.110 + event.stopPropagation(); 1.111 + }, false); 1.112 + } 1.113 } 1.114 - }, true); 1.115 - var mouseDrop = function(event) { 1.116 - if (draggedElement) { 1.117 - dropFunc( 1.118 - originalElement, 1.119 - elementOffsetX + mouseX - mouseOffsetX, 1.120 - elementOffsetY + mouseY - mouseOffsetY 1.121 - ); 1.122 - originalElement.style.visibility = ''; 1.123 - draggedElement.parentNode.removeChild(draggedElement); 1.124 - originalElement = null; 1.125 - draggedElement = null; 1.126 - } 1.127 - }; 1.128 - window.addEventListener("mouseup", mouseDrop, true); 1.129 - window.addEventListener("mousedown", mouseDrop, true); 1.130 - var elements = document.getElementsByTagName("*"); 1.131 - for (var i=0; i<elements.length; i++) { 1.132 - var element = elements[i]; 1.133 - if (element.className == "movable") { 1.134 - element.addEventListener("mousedown", function(event) { 1.135 - event.target.style.cursor = "move"; 1.136 - dragElement(event.currentTarget, function(element, dropX, dropY) { 1.137 - event.target.style.cursor = ''; 1.138 - elementDropped(element, dropX, dropY); 1.139 - }); 1.140 - event.preventDefault(); 1.141 - }, false); 1.142 - } else if (element.className == "clickable") { 1.143 - element.addEventListener("mousedown", function(event) { 1.144 - event.stopPropagation(); 1.145 - }, false); 1.146 - } 1.147 - } 1.148 -}, false); 1.149 + }, false); 1.150 + 1.151 +} 1.152 \ No newline at end of file