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

Impressum / About Us