1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2024-12-24 17:10:29 +00:00

Save the tiddler index

This commit is contained in:
Jeremy Ruston 2012-10-13 16:09:19 +01:00
parent 66cdd8a639
commit 5a4a121ee4
7 changed files with 52 additions and 14 deletions

10
dbld.sh
View File

@ -6,10 +6,10 @@ pushd tw5dropbox/appwiki > /dev/null
node ../../core/boot.js \
--verbose \
--savetiddler $:/core/templates/tw5dropbox.template.js ../../../../../Apps/Static\ Web\ Apps/TiddlyWiki5/public/tw5dropbox.js text/plain [!is[shadow]] \
--savetiddler $:/core/templates/index.template.html ../../../../../Apps/TiddlyWiki5/My\ TiddlyWiki/index.html text/plain [!is[shadow]] \
--savetiddler $:/core/templates/index.template.html ../../../../../Apps/Static\ Web\ Apps/TiddlyWiki5/public/apptemplate.html text/plain [!is[shadow]] \
--savetiddler $:/core/templates/styles.template.css ../../../../../Apps/Static\ Web\ Apps/TiddlyWiki5/public/styles.css text/plain [!is[shadow]] \
--savetiddler $:/plugins/dropbox/tw5dropbox.template.js ../../../../../Apps/Static\ Web\ Apps/TiddlyWiki5/public/tw5dropbox.js text/plain [!is[shadow]] \
--savetiddler $:/plugins/dropbox/index.template.html ../../../../../Apps/TiddlyWiki5/My\ TiddlyWiki/index.html text/plain [!is[shadow]] \
--savetiddler $:/plugins/dropbox/index.template.html ../../../../../Apps/Static\ Web\ Apps/TiddlyWiki5/public/apptemplate.html text/plain [!is[shadow]] \
--savetiddler $:/plugins/dropbox/styles.template.css ../../../../../Apps/Static\ Web\ Apps/TiddlyWiki5/public/styles.css text/plain [!is[shadow]] \
|| exit 1
popd > /dev/null
@ -18,7 +18,7 @@ pushd tw5dropbox/mainwiki > /dev/null
node ../../core/boot.js \
--verbose \
--savetiddler $:/core/templates/index.template.html ../../../../../Apps/Static\ Web\ Apps/TiddlyWiki5/public/index.html text/plain [!is[shadow]] \
--savetiddler $:/plugins/dropbox/index.template.html ../../../../../Apps/Static\ Web\ Apps/TiddlyWiki5/public/index.html text/plain [!is[shadow]] \
|| exit 1
popd > /dev/null

View File

@ -28,8 +28,11 @@ exports.startup = function() {
$tw.plugins.dropbox.wikiName = wikiName;
$tw.wiki.addTiddler({title: titleWikiName, text: $tw.plugins.dropbox.wikiName},true);
// Load tiddlers
$tw.plugins.dropbox.loadTiddlerFiles("/" + $tw.plugins.dropbox.wikiName + "/tiddlers",function() {
console.log("Loaded all tiddlers",$tw.wiki.tiddlers);
$tw.plugins.dropbox.loadTiddlerFiles("/" + $tw.plugins.dropbox.wikiName + "/tiddlers",function(fileRevisions) {
// Save the tiddler index
$tw.plugins.dropbox.saveTiddlerIndex("/" + $tw.plugins.dropbox.wikiName + "/index.html",fileRevisions,function(error) {
console.log("Saved tiddler index");
});
});
} else {
alert("This TiddlyWiki file must be in Dropbox");

View File

@ -1,4 +1,4 @@
title: $:/core/templates/index.template.html
title: $:/plugins/dropbox/index.template.html
type: text/x-tiddlywiki-html
<!doctype html>
@ -16,9 +16,12 @@ type: text/x-tiddlywiki-html
" />
<title><<tiddler "$:/core/wiki/title">></title>
<<serialize "[tag[$:/core/wiki/rawmarkup]]" text/plain>>
<link rel="stylesheet" href="//dl-web.dropbox.com/spa/4f6lw6nhu5zn5pr/TiddlyWiki5/public/styles.css" type="text/css" />
</head>
<body>
<link rel="stylesheet" href="//dl-web.dropbox.com/spa/4f6lw6nhu5zn5pr/TiddlyWiki5/public/styles.css" type="text/css" />
<div id="shadowArea" style="display:none;">
<<serialize "[[$:/plugins/dropbox/Index]]" application/x-tiddler-html-div>>
</div>
</body>
<script src="//cdnjs.cloudflare.com/ajax/libs/dropbox.js/0.6.1/dropbox.min.js"></script>
<script src="//dl-web.dropbox.com/spa/4f6lw6nhu5zn5pr/TiddlyWiki5/public/tw5dropbox.js"></script>

View File

@ -1,4 +1,4 @@
title: $:/core/templates/styles.template.css
title: $:/plugins/dropbox/styles.template.css
type: text/x-tiddlywiki-html
<<serialize "[is[shadow]type[text/css]]" text/plain>>

View File

@ -1,4 +1,4 @@
title: $:/core/templates/tw5dropbox.template.js
title: $:/plugins/dropbox/tw5dropbox.template.js
type: text/x-tiddlywiki-html
<<serialize "[is[shadow]type[application/javascript]library[yes]] -[[$:/library/sjcl.js]]" text/plain>>

View File

@ -1,4 +1,4 @@
title: $:/core/templates/index.template.html
title: $:/plugins/dropbox/index.template.html
type: text/x-tiddlywiki-html
<!doctype html>

View File

@ -19,7 +19,9 @@ var apiKey = "m+qwjj8wFRA=|1TSoitGS9Nz2RTwv+jrUJnsAj0yy57NhQJ4TkZ/+Hw==";
var titleIsLoggedIn = "$:/plugins/dropbox/IsLoggedIn",
titleUserName = "$:/plugins/dropbox/UserName",
titlePublicAppUrl = "$:/plugins/dropbox/PublicAppUrl",
titleAppTemplateHtml = "$:/plugins/dropbox/apptemplate.html";
titleAppTemplateHtml = "$:/plugins/dropbox/apptemplate.html",
titleTiddlerIndex = "$:/plugins/dropbox/Index",
titleAppIndexTemplate = "$:/plugins/dropbox/index.template.html";
// Query string marker for forcing authentication
var queryLoginMarker = "login=true";
@ -112,7 +114,13 @@ $tw.plugins.dropbox.loadTiddlerFiles = function(path,callback) {
$tw.plugins.dropbox.loadTiddlerFile(task.path,task.type,task.stats,callback);
}, 2);
// Call the callback when we've processed all the files
q.drain = callback;
q.drain = function() {
var fileRevisions = {};
for(var t=0; t<stats.length; t++) {
fileRevisions[stats[t].name] = stats[t].versionTag;
}
callback(fileRevisions);
};
// Push a task onto the queue for each file to be processed
for(var s=0; s<stats.length; s++) {
var stat = stats[s],
@ -276,6 +284,30 @@ $tw.plugins.dropbox.createWiki = function(wikiName) {
});
};
// Save the index file
$tw.plugins.dropbox.saveTiddlerIndex = function(path,fileRevisions,callback) {
// Get the tiddler index information
var index = {tiddlers: [],shadows: [], fileRevisions: {}}
// First all the tiddlers
$tw.wiki.forEachTiddler(function(title,tiddler) {
if(tiddler.isShadow) {
index.tiddlers.push(tiddler.fields);
} else {
index.shadows.push(tiddler.fields);
}
});
// Then all the revision information
index.fileRevisions = fileRevisions;
// Save everything to a tiddler
$tw.wiki.addTiddler({title: titleTiddlerIndex, type: "application/json", text: JSON.stringify(index)});
// Generate the index file
var file = $tw.wiki.renderTiddler("text/plain",titleAppIndexTemplate);
// Save the index to Dropbox
$tw.plugins.dropbox.client.writeFile(path,file,function(error,stat) {
callback(error);
});
};
exports.startup = function() {
if(!$tw.browser) {
return;