mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-11-27 12:07:19 +00:00
Prevent adding extra file extensions (#2504)
Fixes #2503
This bug was introduced in commit c4c7b18
where it would append
additional .tid extensions to a file every time the node server was
restarted.
Here we check the filepath does not have the extension already before
appending it.
This commit is contained in:
parent
6499fe5d3d
commit
64b7e66675
@ -97,6 +97,13 @@ FileSystemAdaptor.prototype.findFirstFilter = function(filters,source) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Add file extension to a file path if it doesn't already exist.
|
||||||
|
*/
|
||||||
|
FileSystemAdaptor.addFileExtention = function(file,extension) {
|
||||||
|
return $tw.utils.strEndsWith(file,extension) ? file : file + extension;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Given a tiddler title and an array of existing filenames, generate a new legal filename for the title, case insensitively avoiding the array of existing filenames
|
Given a tiddler title and an array of existing filenames, generate a new legal filename for the title, case insensitively avoiding the array of existing filenames
|
||||||
@ -124,12 +131,8 @@ FileSystemAdaptor.prototype.generateTiddlerFilename = function(title,extension,e
|
|||||||
if(baseFilename.length > 200) {
|
if(baseFilename.length > 200) {
|
||||||
baseFilename = baseFilename.substr(0,200);
|
baseFilename = baseFilename.substr(0,200);
|
||||||
}
|
}
|
||||||
// Prevent redundent file extensions
|
|
||||||
if($tw.utils.strEndsWith(baseFilename,extension)) {
|
|
||||||
extension = "";
|
|
||||||
}
|
|
||||||
// Start with the base filename plus the extension
|
// Start with the base filename plus the extension
|
||||||
var filename = baseFilename + extension,
|
var filename = FileSystemAdaptor.addFileExtention(baseFilename,extension),
|
||||||
count = 1;
|
count = 1;
|
||||||
// Add a discriminator if we're clashing with an existing filename while
|
// Add a discriminator if we're clashing with an existing filename while
|
||||||
// handling case-insensitive filesystems (NTFS, FAT/FAT32, etc.)
|
// handling case-insensitive filesystems (NTFS, FAT/FAT32, etc.)
|
||||||
@ -145,7 +148,7 @@ Save a tiddler and invoke the callback with (err,adaptorInfo,revision)
|
|||||||
FileSystemAdaptor.prototype.saveTiddler = function(tiddler,callback) {
|
FileSystemAdaptor.prototype.saveTiddler = function(tiddler,callback) {
|
||||||
var self = this;
|
var self = this;
|
||||||
this.getTiddlerFileInfo(tiddler,function(err,fileInfo) {
|
this.getTiddlerFileInfo(tiddler,function(err,fileInfo) {
|
||||||
var template, content, encoding,
|
var template, content, encoding, filepath,
|
||||||
_finish = function() {
|
_finish = function() {
|
||||||
callback(null, {}, 0);
|
callback(null, {}, 0);
|
||||||
};
|
};
|
||||||
@ -159,12 +162,14 @@ FileSystemAdaptor.prototype.saveTiddler = function(tiddler,callback) {
|
|||||||
var typeInfo = $tw.config.contentTypeInfo[fileInfo.type];
|
var typeInfo = $tw.config.contentTypeInfo[fileInfo.type];
|
||||||
if(fileInfo.hasMetaFile || typeInfo.encoding === "base64") {
|
if(fileInfo.hasMetaFile || typeInfo.encoding === "base64") {
|
||||||
// Save the tiddler as a separate body and meta file
|
// Save the tiddler as a separate body and meta file
|
||||||
fs.writeFile(fileInfo.filepath,tiddler.fields.text,{encoding: typeInfo.encoding},function(err) {
|
filepath = fileInfo.filepath;
|
||||||
|
fs.writeFile(filepath,tiddler.fields.text,{encoding: typeInfo.encoding},function(err) {
|
||||||
if(err) {
|
if(err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
content = self.wiki.renderTiddler("text/plain","$:/core/templates/tiddler-metadata",{variables: {currentTiddler: tiddler.fields.title}});
|
content = self.wiki.renderTiddler("text/plain","$:/core/templates/tiddler-metadata",{variables: {currentTiddler: tiddler.fields.title}});
|
||||||
fs.writeFile(fileInfo.filepath + ".meta",content,{encoding: "utf8"},function (err) {
|
filepath = FileSystemAdaptor.addFileExtention(fileInfo.filepath,".meta");
|
||||||
|
fs.writeFile(filepath,content,{encoding: "utf8"},function (err) {
|
||||||
if(err) {
|
if(err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
@ -175,7 +180,8 @@ FileSystemAdaptor.prototype.saveTiddler = function(tiddler,callback) {
|
|||||||
} else {
|
} else {
|
||||||
// Save the tiddler as a self contained templated file
|
// Save the tiddler as a self contained templated file
|
||||||
content = self.wiki.renderTiddler("text/plain","$:/core/templates/tid-tiddler",{variables: {currentTiddler: tiddler.fields.title}});
|
content = self.wiki.renderTiddler("text/plain","$:/core/templates/tid-tiddler",{variables: {currentTiddler: tiddler.fields.title}});
|
||||||
fs.writeFile(fileInfo.filepath + ".tid",content,{encoding: "utf8"},function (err) {
|
filepath = FileSystemAdaptor.addFileExtention(fileInfo.filepath,".tid");
|
||||||
|
fs.writeFile(filepath,content,{encoding: "utf8"},function (err) {
|
||||||
if(err) {
|
if(err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
@ -211,7 +217,7 @@ FileSystemAdaptor.prototype.deleteTiddler = function(title,callback,options) {
|
|||||||
self.logger.log("Deleted file",fileInfo.filepath);
|
self.logger.log("Deleted file",fileInfo.filepath);
|
||||||
// Delete the metafile if present
|
// Delete the metafile if present
|
||||||
if(fileInfo.hasMetaFile) {
|
if(fileInfo.hasMetaFile) {
|
||||||
fs.unlink(fileInfo.filepath + ".meta",function(err) {
|
fs.unlink(FileSystemAdaptor.addFileExtention(fileInfo.filepath,".meta"),function(err) {
|
||||||
if(err) {
|
if(err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user