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