# HG changeset patch # User veltr # Date 1364996657 -7200 # Node ID c472984db275f7795d4ee6c599727e27b69ebcb3 # Parent 37a4566bb7ee3fabbe64e8c40f81213fc4142691 refactored drag-and-drop interface (IE Compatibility) diff -r 37a4566bb7ee -r c472984db275 src/js/utils.js --- a/src/js/utils.js Wed Apr 03 15:40:58 2013 +0200 +++ b/src/js/utils.js Wed Apr 03 15:44:17 2013 +0200 @@ -107,3 +107,18 @@ console.log.apply(console, arguments); } } + +IriSP.attachDndData = function(jqSel, data) { + jqSel.attr("draggable", "true").on("dragstart", function(_event) { + var d = (typeof data === "function" ? data.call(this) : data); + try { + IriSP._(d).each(function(v, k) { + if (v) { + _event.originalEvent.dataTransfer.setData("text/x-iri-" + k, v); + } + }); + } catch(err) { + _event.originalEvent.dataTransfer.setData("Text", JSON.stringify(d)); + } + }); +} diff -r 37a4566bb7ee -r c472984db275 src/widgets/Annotation.js --- a/src/widgets/Annotation.js Wed Apr 03 15:40:58 2013 +0200 +++ b/src/widgets/Annotation.js Wed Apr 03 15:44:17 2013 +0200 @@ -34,7 +34,7 @@ + '
' + '
' + '{{#show_social}}
{{/show_social}}' - + '

{{#show_annotation_type}} » {{/show_annotation_type}} ' + + '

{{#show_annotation_type}} » {{/show_annotation_type}} ' + '( - )

' + '

{{l10n.excerpt_from}} ' + '( - )

' @@ -167,16 +167,15 @@ this.source.getAnnotations().on("found", highlightTitleAndDescription); this.source.getAnnotations().on("not-found", highlightTitleAndDescription); this.source.getAnnotations().on("search-cleared", highlightTitleAndDescription); - this.$.find("[draggable]").on("dragstart", function(e) { - var url = (typeof currentAnnotation.url !== "undefined" - ? currentAnnotation.url - : (document.location.href.replace(/#.*$/,'') + '#id=' + currentAnnotation.id)); - e.originalEvent.dataTransfer.setData("text/x-iri-title",currentAnnotation.title); - e.originalEvent.dataTransfer.setData("text/x-iri-description",currentAnnotation.description); - e.originalEvent.dataTransfer.setData("text/x-iri-uri",url); - if (typeof currentAnnotation.thumbnail !== "undefined" && currentAnnotation.thumbnail) { - e.originalEvent.dataTransfer.setData("text/x-iri-image",currentAnnotation.thumbnail); - } + IriSP.attachDndData(this.$.find("h3"), function() { + return { + title: currentAnnotation.title, + description: currentAnnotation.description, + image: currentAnnotation.thumbnail, + uri: (typeof currentAnnotation.url !== "undefined" + ? currentAnnotation.url + : (document.location.href.replace(/#.*$/,'') + '#id=' + currentAnnotation.id)) + } }); } diff -r 37a4566bb7ee -r c472984db275 src/widgets/AnnotationsList.js --- a/src/widgets/AnnotationsList.js Wed Apr 03 15:40:58 2013 +0200 +++ b/src/widgets/AnnotationsList.js Wed Apr 03 15:44:17 2013 +0200 @@ -230,14 +230,12 @@ _annotation.trigger("unselect"); }) .appendTo(_this.list_$); - _el.find("[draggable]").on("dragstart", function(e) { - e.originalEvent.dataTransfer.setData("text/x-iri-title",_title); - e.originalEvent.dataTransfer.setData("text/x-iri-description",_description); - e.originalEvent.dataTransfer.setData("text/x-iri-uri",_url); - if (typeof _annotation.thumbnail !== "undefined" && _annotation.thumbnail) { - e.originalEvent.dataTransfer.setData("text/x-iri-image",_annotation.thumbnail); - } - }); + IriSP.attachDndData(_el.find("[draggable]"), { + title: _title, + description: _description, + uri: _url, + image: _annotation.thumbnail + }); _el.on("remove", function() { _annotation.off("select", _onselect); _annotation.off("unselect", _onunselect); diff -r 37a4566bb7ee -r c472984db275 src/widgets/Polemic.js --- a/src/widgets/Polemic.js Wed Apr 03 15:40:58 2013 +0200 +++ b/src/widgets/Polemic.js Wed Apr 03 15:44:17 2013 +0200 @@ -113,7 +113,7 @@ function displayAnnotation(_elx, _ely, _pol, _col, _annotation) { var _html = Mustache.to_html( - '
', { id: _annotation.id, @@ -134,17 +134,15 @@ _annotation.trigger("unselect"); }).click(function() { _annotation.trigger("click"); - }).on("dragstart", function(e) { - var url = (typeof _annotation.url !== "undefined" - ? _annotation.url - : (document.location.href.replace(/#.*$/,'') + '#id=' + _annotation.id)); - e.originalEvent.dataTransfer.setData("text/x-iri-title",_annotation.title); - e.originalEvent.dataTransfer.setData("text/x-iri-description",_annotation.description); - e.originalEvent.dataTransfer.setData("text/x-iri-uri",url); - if (typeof _annotation.thumbnail !== "undefined" && _annotation.thumbnail) { - e.originalEvent.dataTransfer.setData("text/x-iri-image",_annotation.thumbnail); - } - }); + }); + IriSP.attachDndData(_el, { + title: _annotation.title, + description: _annotation.description, + image: _annotation.thumbnail, + uri: (typeof _annotation.url !== "undefined" + ? _annotation.url + : (document.location.href.replace(/#.*$/,'') + '#id=' + _annotation.id)) + }); _annotation.on("select", function() { if (_this.tooltip) { _this.tooltip.show( diff -r 37a4566bb7ee -r c472984db275 src/widgets/Segments.js --- a/src/widgets/Segments.js Wed Apr 03 15:40:58 2013 +0200 +++ b/src/widgets/Segments.js Wed Apr 03 15:44:17 2013 +0200 @@ -22,7 +22,7 @@ + '
'; IriSP.Widgets.Segments.prototype.annotationTemplate = - '
' @@ -98,18 +98,15 @@ .click(function() { _annotation.trigger("click"); }) - .on("dragstart", function(e) { - var url = (typeof _annotation.url !== "undefined" - ? _annotation.url - : (document.location.href.replace(/#.*$/,'') + '#id=' + _annotation.id)); - e.originalEvent.dataTransfer.setData("text/x-iri-title",_annotation.title); - e.originalEvent.dataTransfer.setData("text/x-iri-description",_annotation.description); - e.originalEvent.dataTransfer.setData("text/x-iri-uri",url); - if (typeof _annotation.thumbnail !== "undefined" && _annotation.thumbnail) { - e.originalEvent.dataTransfer.setData("text/x-iri-image",_annotation.thumbnail); - } - }) - .appendTo(list_$) + .appendTo(list_$); + IriSP.attachDndData(_el, { + title: _annotation.title, + description: _annotation.description, + uri: (typeof _annotation.url !== "undefined" + ? _annotation.url + : (document.location.href.replace(/#.*$/,'') + '#id=' + _annotation.id)), + image: _annotation.thumbnail + }); _annotation.on("select", function() { _this.$segments.each(function() { var _segment = IriSP.jQuery(this);