From ce47f5e1d487bd980d833a68e4d868f32d9db883 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Tue, 13 Nov 2012 18:42:50 +0000 Subject: [PATCH] Started to move dropbox bits and pieces into a plugin Currently tw5dropbox is broken, pending some further changes around module handling --- core/boot.js | 23 ++++---- core/plugins/TemporaryTestPlugin.tid | 17 ------ .../tiddlywiki/dropbox-app}/dropbox-app.js | 2 +- plugins/tiddlywiki/dropbox-app/plugin.bundle | 7 +++ .../tiddlywiki/dropbox-main}/dropbox-main.js | 2 +- plugins/tiddlywiki/dropbox-main/plugin.bundle | 7 +++ .../tiddlywiki/dropbox}/async.js | 0 plugins/tiddlywiki/dropbox/async.js.meta | 3 ++ .../tiddlywiki/dropbox}/dropbox.js | 7 ++- .../tiddlywiki/dropbox}/loginmacro.js | 2 +- .../tiddlywiki/dropbox}/logoutmacro.js | 2 +- .../tiddlywiki/dropbox}/newwikimacro.js | 2 +- plugins/tiddlywiki/dropbox/plugin.bundle | 7 +++ tw5dropbox/appwiki/plugins/tiddlywiki.files | 52 ------------------- tw5dropbox/appwiki/tiddlywiki.info | 7 +++ tw5dropbox/mainwiki/plugins/tiddlywiki.files | 52 ------------------- tw5dropbox/mainwiki/tiddlywiki.info | 7 +++ tw5dropbox/plugins/async.js.meta | 3 -- 18 files changed, 57 insertions(+), 145 deletions(-) delete mode 100644 core/plugins/TemporaryTestPlugin.tid rename {tw5dropbox/appwiki/plugins => plugins/tiddlywiki/dropbox-app}/dropbox-app.js (96%) create mode 100644 plugins/tiddlywiki/dropbox-app/plugin.bundle rename {tw5dropbox/mainwiki/plugins => plugins/tiddlywiki/dropbox-main}/dropbox-main.js (90%) create mode 100644 plugins/tiddlywiki/dropbox-main/plugin.bundle rename {tw5dropbox/plugins => plugins/tiddlywiki/dropbox}/async.js (100%) create mode 100644 plugins/tiddlywiki/dropbox/async.js.meta rename {tw5dropbox/plugins => plugins/tiddlywiki/dropbox}/dropbox.js (99%) rename {tw5dropbox/plugins => plugins/tiddlywiki/dropbox}/loginmacro.js (92%) rename {tw5dropbox/plugins => plugins/tiddlywiki/dropbox}/logoutmacro.js (91%) rename {tw5dropbox/plugins => plugins/tiddlywiki/dropbox}/newwikimacro.js (94%) create mode 100644 plugins/tiddlywiki/dropbox/plugin.bundle delete mode 100644 tw5dropbox/appwiki/plugins/tiddlywiki.files create mode 100644 tw5dropbox/appwiki/tiddlywiki.info delete mode 100644 tw5dropbox/mainwiki/plugins/tiddlywiki.files create mode 100644 tw5dropbox/mainwiki/tiddlywiki.info delete mode 100644 tw5dropbox/plugins/async.js.meta diff --git a/core/boot.js b/core/boot.js index c1648fa71..b8f2c4b5e 100644 --- a/core/boot.js +++ b/core/boot.js @@ -77,6 +77,9 @@ $tw.crypto.sjcl = $tw.browser ? window.sjcl : require("./sjcl.js"); // Boot information $tw.boot = {}; +// Plugin state +$tw.plugins = {}; + // Modules store registers all the modules the system has seen $tw.modules = $tw.modules || {}; $tw.modules.titles = $tw.modules.titles || {}; // hashmap by module title of {fn:, exports:, moduleType:} @@ -296,7 +299,7 @@ if(!$tw.browser) { Register the exports of a single module in the $tw.modules.types hashmap */ $tw.modules.registerModuleExports = function(name,moduleType,moduleExports) { - if(!(moduleType in $tw.modules.types)) { + if(!$tw.utils.hop($tw.modules.types,moduleType)) { $tw.modules.types[moduleType] = []; } $tw.modules.types[moduleType].push(moduleExports); @@ -487,19 +490,11 @@ $tw.Wiki.prototype.registerModuleTiddlers = function() { } } // Register and execute any modules in ordinary tiddlers - if($tw.browser) { - for(title in $tw.modules.titles) { - if($tw.utils.hop($tw.modules.titles,title)) { - $tw.modules.registerModuleExports(title,$tw.modules.titles[title].moduleType,$tw.modules.execute(title)); - } - } - } else { - for(title in $tw.wiki.tiddlers) { - if($tw.utils.hop($tw.wiki.tiddlers,title)) { - tiddler = $tw.wiki.getTiddler(title); - if(tiddler.fields.type === "application/javascript" && tiddler.hasField("module-type")) { - $tw.modules.registerModuleExports(title,tiddler.fields["module-type"],$tw.modules.execute(title)); - } + for(title in $tw.wiki.tiddlers) { + if($tw.utils.hop($tw.wiki.tiddlers,title)) { + tiddler = $tw.wiki.getTiddler(title); + if(tiddler.fields.type === "application/javascript" && tiddler.hasField("module-type")) { + $tw.modules.registerModuleExports(title,tiddler.fields["module-type"],$tw.modules.execute(title)); } } } diff --git a/core/plugins/TemporaryTestPlugin.tid b/core/plugins/TemporaryTestPlugin.tid deleted file mode 100644 index a894bb03b..000000000 --- a/core/plugins/TemporaryTestPlugin.tid +++ /dev/null @@ -1,17 +0,0 @@ -title: TemporaryTestPlugin -type: application/json -bundle: yes - -{ - "title": "$:/plugins/tiddlywiki/test", - "description": "An exemplary plugin for demonstration purposes", - "author": "JeremyRuston", - "version": "0.0.0-alpha0", - "coreVersion": ">=5.0.0", - "tiddlers": { - "Test1": {"text": "Some text"}, - "Test2": {"text": "Some more text"}, - "Test3": {"text": "console.log(require('$:/plugins/tiddlywiki/test/Test4').string);", "type": "application/javascript", "module-type": "custom"}, - "Test4": {"text": "exports.string = 'Plugin I am in You!';", "type": "application/javascript", "module-type": "custom"} - } -} diff --git a/tw5dropbox/appwiki/plugins/dropbox-app.js b/plugins/tiddlywiki/dropbox-app/dropbox-app.js similarity index 96% rename from tw5dropbox/appwiki/plugins/dropbox-app.js rename to plugins/tiddlywiki/dropbox-app/dropbox-app.js index 12b534752..73cbcda3f 100644 --- a/tw5dropbox/appwiki/plugins/dropbox-app.js +++ b/plugins/tiddlywiki/dropbox-app/dropbox-app.js @@ -1,5 +1,5 @@ /*\ -title: $:/plugins/dropbox/dropbox-app.js +title: $:/plugins/tiddlywiki/dropbox-app/dropbox-app.js type: application/javascript module-type: dropbox-startup diff --git a/plugins/tiddlywiki/dropbox-app/plugin.bundle b/plugins/tiddlywiki/dropbox-app/plugin.bundle new file mode 100644 index 000000000..3a89d462d --- /dev/null +++ b/plugins/tiddlywiki/dropbox-app/plugin.bundle @@ -0,0 +1,7 @@ +{ + "title": "$:/plugins/tiddlywiki/dropbox-app", + "description": "Dropbox app components", + "author": "JeremyRuston", + "version": "0.0.0", + "coreVersion": ">=5.0.0" +} diff --git a/tw5dropbox/mainwiki/plugins/dropbox-main.js b/plugins/tiddlywiki/dropbox-main/dropbox-main.js similarity index 90% rename from tw5dropbox/mainwiki/plugins/dropbox-main.js rename to plugins/tiddlywiki/dropbox-main/dropbox-main.js index dc96668f5..697970959 100644 --- a/tw5dropbox/mainwiki/plugins/dropbox-main.js +++ b/plugins/tiddlywiki/dropbox-main/dropbox-main.js @@ -1,5 +1,5 @@ /*\ -title: $:/plugins/dropbox/dropbox-main.js +title: $:/plugins/tiddlywiki/dropbox-main/dropbox-main.js type: application/javascript module-type: dropbox-startup diff --git a/plugins/tiddlywiki/dropbox-main/plugin.bundle b/plugins/tiddlywiki/dropbox-main/plugin.bundle new file mode 100644 index 000000000..7b7126aff --- /dev/null +++ b/plugins/tiddlywiki/dropbox-main/plugin.bundle @@ -0,0 +1,7 @@ +{ + "title": "$:/plugins/tiddlywiki/dropbox-main", + "description": "Dropbox main components", + "author": "JeremyRuston", + "version": "0.0.0", + "coreVersion": ">=5.0.0" +} diff --git a/tw5dropbox/plugins/async.js b/plugins/tiddlywiki/dropbox/async.js similarity index 100% rename from tw5dropbox/plugins/async.js rename to plugins/tiddlywiki/dropbox/async.js diff --git a/plugins/tiddlywiki/dropbox/async.js.meta b/plugins/tiddlywiki/dropbox/async.js.meta new file mode 100644 index 000000000..c09a37bdc --- /dev/null +++ b/plugins/tiddlywiki/dropbox/async.js.meta @@ -0,0 +1,3 @@ +title: $:/plugins/tiddlywiki/dropbox/async.js +type: application/javascript +module-type: library diff --git a/tw5dropbox/plugins/dropbox.js b/plugins/tiddlywiki/dropbox/dropbox.js similarity index 99% rename from tw5dropbox/plugins/dropbox.js rename to plugins/tiddlywiki/dropbox/dropbox.js index 0d4e2b1f8..ae1743ec0 100644 --- a/tw5dropbox/plugins/dropbox.js +++ b/plugins/tiddlywiki/dropbox/dropbox.js @@ -1,7 +1,7 @@ /*\ -title: $:/plugins/dropbox/dropbox.js +title: $:/plugins/tiddlywiki/dropbox/dropbox.js type: application/javascript -module-type: startup +module-type: browser-startup Main Dropbox integration module. It creates the `$tw.plugins.dropbox` object that includes static methods for various Dropbox operations. It also contains a startup function that kicks off the login process @@ -18,6 +18,9 @@ var apiKey = "m+qwjj8wFRA=|1TSoitGS9Nz2RTwv+jrUJnsAj0yy57NhQJ4TkZ/+Hw=="; // Query string marker for forcing authentication var queryLoginMarker = "login=true"; +// Require async.js +var async = require("./async.js"); + $tw.plugins.dropbox = { // State data client: null, // Dropbox.js client object diff --git a/tw5dropbox/plugins/loginmacro.js b/plugins/tiddlywiki/dropbox/loginmacro.js similarity index 92% rename from tw5dropbox/plugins/loginmacro.js rename to plugins/tiddlywiki/dropbox/loginmacro.js index 753abf21b..b4332a204 100644 --- a/tw5dropbox/plugins/loginmacro.js +++ b/plugins/tiddlywiki/dropbox/loginmacro.js @@ -1,5 +1,5 @@ /*\ -title: $:/plugins/dropbox/logoutmacro.js +title: $:/plugins/tiddlywiki/dropbox/loginmacro.js type: application/javascript module-type: macro diff --git a/tw5dropbox/plugins/logoutmacro.js b/plugins/tiddlywiki/dropbox/logoutmacro.js similarity index 91% rename from tw5dropbox/plugins/logoutmacro.js rename to plugins/tiddlywiki/dropbox/logoutmacro.js index 0757fa138..ed0bbec61 100644 --- a/tw5dropbox/plugins/logoutmacro.js +++ b/plugins/tiddlywiki/dropbox/logoutmacro.js @@ -1,5 +1,5 @@ /*\ -title: $:/plugins/dropbox/logoutmacro.js +title: $:/plugins/tiddlywiki/dropbox/logoutmacro.js type: application/javascript module-type: macro diff --git a/tw5dropbox/plugins/newwikimacro.js b/plugins/tiddlywiki/dropbox/newwikimacro.js similarity index 94% rename from tw5dropbox/plugins/newwikimacro.js rename to plugins/tiddlywiki/dropbox/newwikimacro.js index ac2f09ece..2eaf8698a 100644 --- a/tw5dropbox/plugins/newwikimacro.js +++ b/plugins/tiddlywiki/dropbox/newwikimacro.js @@ -1,5 +1,5 @@ /*\ -title: $:/plugins/dropbox/newwikimacro.js +title: $:/plugins/tiddlywiki/dropbox/newwikimacro.js type: application/javascript module-type: macro diff --git a/plugins/tiddlywiki/dropbox/plugin.bundle b/plugins/tiddlywiki/dropbox/plugin.bundle new file mode 100644 index 000000000..2ed607fbd --- /dev/null +++ b/plugins/tiddlywiki/dropbox/plugin.bundle @@ -0,0 +1,7 @@ +{ + "title": "$:/plugins/tiddlywiki/dropbox", + "description": "Dropbox components", + "author": "JeremyRuston", + "version": "0.0.0", + "coreVersion": ">=5.0.0" +} diff --git a/tw5dropbox/appwiki/plugins/tiddlywiki.files b/tw5dropbox/appwiki/plugins/tiddlywiki.files deleted file mode 100644 index d2f7cd4b1..000000000 --- a/tw5dropbox/appwiki/plugins/tiddlywiki.files +++ /dev/null @@ -1,52 +0,0 @@ -{ - "tiddlers": [ - { - "file": "../../plugins/async.js", - "fields": { - "title": "$:/plugins/dropbox/async.js", - "type": "application/javascript", - "library": "yes" - } - }, - { - "file": "../../plugins/dropbox.js", - "fields": { - "title": "$:/plugins/dropbox/dropbox.js", - "type": "application/javascript", - "module-type": "startup" - } - }, - { - "file": "../../plugins/logoutmacro.js", - "fields": { - "title": "$:/plugins/dropbox/logoutmacro.js", - "type": "application/javascript", - "module-type": "macro" - } - }, - { - "file": "../../plugins/loginmacro.js", - "fields": { - "title": "$:/plugins/dropbox/loginmacro.js", - "type": "application/javascript", - "module-type": "macro" - } - }, - { - "file": "../../plugins/newwikimacro.js", - "fields": { - "title": "$:/plugins/dropbox/newwikimacro.js", - "type": "application/javascript", - "module-type": "macro" - } - }, - { - "file": "dropbox-app.js", - "fields": { - "title": "$:/plugins/dropbox/dropbox-app.js", - "type": "application/javascript", - "module-type": "dropbox-startup" - } - } - ] -} \ No newline at end of file diff --git a/tw5dropbox/appwiki/tiddlywiki.info b/tw5dropbox/appwiki/tiddlywiki.info new file mode 100644 index 000000000..2f912aa7d --- /dev/null +++ b/tw5dropbox/appwiki/tiddlywiki.info @@ -0,0 +1,7 @@ +{ + "plugins": [ + "tiddlywiki/fullscreen", + "tiddlywiki/dropbox", + "tiddlywiki/dropbox-app" + ] +} \ No newline at end of file diff --git a/tw5dropbox/mainwiki/plugins/tiddlywiki.files b/tw5dropbox/mainwiki/plugins/tiddlywiki.files deleted file mode 100644 index 742df79e2..000000000 --- a/tw5dropbox/mainwiki/plugins/tiddlywiki.files +++ /dev/null @@ -1,52 +0,0 @@ -{ - "tiddlers": [ - { - "file": "../../plugins/async.js", - "fields": { - "title": "$:/plugins/dropbox/async.js", - "type": "application/javascript", - "library": "yes" - } - }, - { - "file": "../../plugins/dropbox.js", - "fields": { - "title": "$:/plugins/dropbox/dropbox.js", - "type": "application/javascript", - "module-type": "startup" - } - }, - { - "file": "../../plugins/logoutmacro.js", - "fields": { - "title": "$:/plugins/dropbox/logoutmacro.js", - "type": "application/javascript", - "module-type": "macro" - } - }, - { - "file": "../../plugins/loginmacro.js", - "fields": { - "title": "$:/plugins/dropbox/loginmacro.js", - "type": "application/javascript", - "module-type": "macro" - } - }, - { - "file": "../../plugins/newwikimacro.js", - "fields": { - "title": "$:/plugins/dropbox/newwikimacro.js", - "type": "application/javascript", - "module-type": "macro" - } - }, - { - "file": "dropbox-main.js", - "fields": { - "title": "$:/plugins/dropbox/dropbox-main.js", - "type": "application/javascript", - "module-type": "dropbox-startup" - } - } - ] -} \ No newline at end of file diff --git a/tw5dropbox/mainwiki/tiddlywiki.info b/tw5dropbox/mainwiki/tiddlywiki.info new file mode 100644 index 000000000..41253f612 --- /dev/null +++ b/tw5dropbox/mainwiki/tiddlywiki.info @@ -0,0 +1,7 @@ +{ + "plugins": [ + "tiddlywiki/fullscreen", + "tiddlywiki/dropbox", + "tiddlywiki/dropbox-main" + ] +} \ No newline at end of file diff --git a/tw5dropbox/plugins/async.js.meta b/tw5dropbox/plugins/async.js.meta deleted file mode 100644 index cade5224e..000000000 --- a/tw5dropbox/plugins/async.js.meta +++ /dev/null @@ -1,3 +0,0 @@ -title: $:/plugins/dropbox/async.js -type: application/javascript -library: yes