mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2025-11-05 01:52:59 +00:00
Fix filesystem regression (#5176)
* $:/config/OriginalTiddlerPaths if no filters match * fixed & docs updated * tested with tiddlywiki.files & tw.com edition * typos * originalpath to options, propigate isEditableFile * syntax cleanup
This commit is contained in:
@@ -206,12 +206,14 @@ Create a fileInfo object for saving a tiddler:
|
||||
filepath: the absolute path to the file containing the tiddler
|
||||
type: the type of the tiddler file on disk (NOT the type of the tiddler)
|
||||
hasMetaFile: true if the file also has a companion .meta file
|
||||
isEditableFile: true if the tiddler was loaded via non-standard options & marked editable
|
||||
Options include:
|
||||
directory: absolute path of root directory to which we are saving
|
||||
pathFilters: optional array of filters to be used to generate the base path
|
||||
extFilters: optional array of filters to be used to generate the base path
|
||||
wiki: optional wiki for evaluating the pathFilters,
|
||||
fileInfo: an existing fileInfo to check against
|
||||
originalpath: a preferred filepath if no pathFilters match
|
||||
*/
|
||||
exports.generateTiddlerFileInfo = function(tiddler,options) {
|
||||
var fileInfo = {}, metaExt;
|
||||
@@ -271,8 +273,13 @@ exports.generateTiddlerFileInfo = function(tiddler,options) {
|
||||
directory: options.directory,
|
||||
pathFilters: options.pathFilters,
|
||||
wiki: options.wiki,
|
||||
fileInfo: options.fileInfo
|
||||
fileInfo: options.fileInfo,
|
||||
originalpath: options.originalpath
|
||||
});
|
||||
// Propigate the isEditableFile flag
|
||||
if(options.fileInfo) {
|
||||
fileInfo.isEditableFile = options.fileInfo.isEditableFile || false;
|
||||
}
|
||||
return fileInfo;
|
||||
};
|
||||
|
||||
@@ -313,6 +320,7 @@ exports.generateTiddlerFilepath = function(title,options) {
|
||||
var self = this,
|
||||
directory = options.directory || "",
|
||||
extension = options.extension || "",
|
||||
originalpath = options.originalpath || "",
|
||||
filepath;
|
||||
// Check if any of the pathFilters applies
|
||||
if(options.pathFilters && options.wiki) {
|
||||
@@ -326,7 +334,11 @@ exports.generateTiddlerFilepath = function(title,options) {
|
||||
}
|
||||
});
|
||||
}
|
||||
if(!filepath) {
|
||||
if(!filepath && originalpath !== "") {
|
||||
//Use the originalpath without the extension
|
||||
var ext = path.extname(originalpath);
|
||||
filepath = originalpath.substring(0,originalpath.length - ext.length);;
|
||||
} else if(!filepath) {
|
||||
filepath = title;
|
||||
// If the filepath already ends in the extension then remove it
|
||||
if(filepath.substring(filepath.length - extension.length) === extension) {
|
||||
@@ -367,8 +379,8 @@ exports.generateTiddlerFilepath = function(title,options) {
|
||||
}
|
||||
count++;
|
||||
} while(fs.existsSync(fullPath));
|
||||
//If the path does not start with the wiki directory, or if the last write failed
|
||||
var encode = fullPath.indexOf($tw.boot.wikiPath) !== 0 || ((options.fileInfo || {writeError: false}).writeError == true);
|
||||
//If the path does not start with the wikiPath directory or the wikiTiddlersPath directory, or if the last write failed
|
||||
var encode = !(fullPath.indexOf($tw.boot.wikiPath) == 0 || fullPath.indexOf($tw.boot.wikiTiddlersPath) == 0) || ((options.fileInfo || {writeError: false}).writeError == true);
|
||||
if(encode){
|
||||
//encodeURIComponent() and then resolve to tiddler directory
|
||||
fullPath = path.resolve(directory, encodeURIComponent(fullPath));
|
||||
|
||||
Reference in New Issue
Block a user