mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2025-02-23 06:20:01 +00:00
prevents drag and drop import in same window
fixes #592 Introduces and preserves **_origin** field when using drag-and-drop — bad idea? discard? different field name? demo http://592.tiddlyspot.com
This commit is contained in:
parent
d340277cb2
commit
09afa8297a
@ -27,14 +27,14 @@ DropZoneWidget.prototype = new Widget();
|
|||||||
Render this widget into the DOM
|
Render this widget into the DOM
|
||||||
*/
|
*/
|
||||||
DropZoneWidget.prototype.render = function(parent,nextSibling) {
|
DropZoneWidget.prototype.render = function(parent,nextSibling) {
|
||||||
var self = this;
|
var domNode;
|
||||||
// Remember parent
|
// Remember parent
|
||||||
this.parentDomNode = parent;
|
this.parentDomNode = parent;
|
||||||
// Compute attributes and execute state
|
// Compute attributes and execute state
|
||||||
this.computeAttributes();
|
this.computeAttributes();
|
||||||
this.execute();
|
this.execute();
|
||||||
// Create element
|
// Create element
|
||||||
var domNode = this.document.createElement("div");
|
domNode = this.document.createElement("div");
|
||||||
domNode.className = "tc-dropzone";
|
domNode.className = "tc-dropzone";
|
||||||
// Add event handlers
|
// Add event handlers
|
||||||
$tw.utils.addEventListeners(domNode,[
|
$tw.utils.addEventListeners(domNode,[
|
||||||
@ -119,20 +119,27 @@ DropZoneWidget.prototype.handleDropEvent = function(event) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
DropZoneWidget.prototype.importData = function(dataTransfer) {
|
DropZoneWidget.prototype.importData = function(dataTransfer) {
|
||||||
|
var data, dataType, origin, t, tiddlerFields, title;
|
||||||
// Try each provided data type in turn
|
// Try each provided data type in turn
|
||||||
for(var t=0; t<this.importDataTypes.length; t++) {
|
for(t=0; t<this.importDataTypes.length; t++) {
|
||||||
if(!$tw.browser.isIE || this.importDataTypes[t].IECompatible) {
|
if(!$tw.browser.isIE || this.importDataTypes[t].IECompatible) {
|
||||||
// Get the data
|
// Get the data
|
||||||
var dataType = this.importDataTypes[t];
|
dataType = this.importDataTypes[t];
|
||||||
var data = dataTransfer.getData(dataType.type);
|
data = dataTransfer.getData(dataType.type);
|
||||||
// Import the tiddlers in the data
|
// Import the tiddlers in the data
|
||||||
if(data !== "" && data !== null) {
|
if(data !== "" && data !== null) {
|
||||||
if($tw.log.IMPORT) {
|
if($tw.log.IMPORT) {
|
||||||
console.log("Importing data type '" + dataType.type + "', data: '" + data + "'")
|
console.log("Importing data type '" + dataType.type + "', data: '" + data + "'")
|
||||||
}
|
}
|
||||||
var tiddlerFields = dataType.convertToFields(data);
|
tiddlerFields = dataType.convertToFields(data);
|
||||||
if(!tiddlerFields.title) {
|
title = tiddlerFields.title;
|
||||||
|
if(!title) {
|
||||||
tiddlerFields.title = this.wiki.generateNewTitle("Untitled");
|
tiddlerFields.title = this.wiki.generateNewTitle("Untitled");
|
||||||
|
} else {
|
||||||
|
origin = tiddlerFields["_origin"];
|
||||||
|
if(origin && origin === window.location.href && $tw.wiki.getTiddler(title)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
this.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify([tiddlerFields])});
|
this.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify([tiddlerFields])});
|
||||||
return;
|
return;
|
||||||
|
@ -153,7 +153,7 @@ LinkWidget.prototype.handleDragStartEvent = function(event) {
|
|||||||
}
|
}
|
||||||
// Then the data
|
// Then the data
|
||||||
dataTransfer.clearData();
|
dataTransfer.clearData();
|
||||||
var jsonData = this.wiki.getTiddlerAsJson(this.to),
|
var jsonData = this.wiki.getTiddlerAsJson(this.to,true),
|
||||||
textData = this.wiki.getTiddlerText(this.to,""),
|
textData = this.wiki.getTiddlerText(this.to,""),
|
||||||
title = (new RegExp("^" + $tw.config.textPrimitives.wikiLink + "$","mg")).exec(this.to) ? this.to : "[[" + this.to + "]]";
|
title = (new RegExp("^" + $tw.config.textPrimitives.wikiLink + "$","mg")).exec(this.to) ? this.to : "[[" + this.to + "]]";
|
||||||
// IE doesn't like these content types
|
// IE doesn't like these content types
|
||||||
|
@ -594,17 +594,20 @@ exports.getSubTiddler = function(title,subTiddlerTitle) {
|
|||||||
/*
|
/*
|
||||||
Retrieve a tiddler as a JSON string of the fields
|
Retrieve a tiddler as a JSON string of the fields
|
||||||
*/
|
*/
|
||||||
exports.getTiddlerAsJson = function(title) {
|
exports.getTiddlerAsJson = function(title,exporting) {
|
||||||
var tiddler = this.getTiddler(title);
|
var fields = Object.create(null),
|
||||||
|
tiddler = this.getTiddler(title);
|
||||||
if(tiddler) {
|
if(tiddler) {
|
||||||
var fields = Object.create(null);
|
|
||||||
$tw.utils.each(tiddler.fields,function(value,name) {
|
$tw.utils.each(tiddler.fields,function(value,name) {
|
||||||
fields[name] = tiddler.getFieldString(name);
|
fields[name] = tiddler.getFieldString(name);
|
||||||
});
|
});
|
||||||
return JSON.stringify(fields);
|
|
||||||
} else {
|
} else {
|
||||||
return JSON.stringify({title: title});
|
fields["title"] = title;
|
||||||
}
|
}
|
||||||
|
if(exporting) {
|
||||||
|
fields["_origin"] = window.location.href;
|
||||||
|
}
|
||||||
|
return JSON.stringify(fields);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user