From dad60cda05c29974e5ae74aa488fa5c31a177504 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Mon, 14 Apr 2014 21:30:30 +0100 Subject: [PATCH] Improve wiki.sortByList() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously list-before and list-after didn’t work if they referenced entries that hadn’t yet been placed --- core/modules/wiki.js | 63 ++++++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/core/modules/wiki.js b/core/modules/wiki.js index 4eed2d69c..dfa53d491 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -497,7 +497,7 @@ exports.sortByList = function(array,listTitle) { var list = this.getTiddlerList(listTitle); if(!array || array.length === 0) { return []; - } else if(list) { + } else { var titles = [], t, title; // First place any entries that are present in the list for(t=0; t= 0) { - ++pos; - } - } - } - } - if(pos >= 0) { - titles.splice(pos,0,title); - } else { - titles.push(title); - } + titles.push(title); } } + // Finally obey the list-before and list-after fields of each tiddler in turn + var sortedTitles = titles.slice(0); + for(t=0; t= 0) { + ++newPos; + } + } + if(newPos === -1) { + newPos = currPos; + } + if(newPos !== currPos) { + titles.splice(currPos,1); + if(newPos >= currPos) { + newPos--; + } + titles.splice(newPos,0,title); + } + } + + } return titles; - } else { - return array; } };