Adds rudimentary Zeroconf support to Zotero (a.k.a. "Z(ot)eroconf")

- Inspired by Dan Chudnov's Python/MODS-based Zeroconf demo at THATcamp
- Enabled by extensions.zotero.zeroconf.enabled (off by default)
- Currently supports only OS X (tested on Leopard, not sure about earlier versions)
- Uses Apple's dns-sd and mDNS command-client clients, but should be able to be extended to other clients, though a native library would be far superior
- Discovery is on-demand for now via Actions menu ("Search for Shared Libraries")
- Includes rudimentary web server (code copied from integration.js) that serves items as sync XML -- no authentication yet!
- Only supports top-level items
- Remote libraries show up in left pane (under remote computer name, for now)
- Items can be dragged into collections (but not the library yet, for some reason)
- On first run, might cause a long pause and the "This file was downloaded from the Internet" message on Leopard -- can't manage to get around the quarantine for the script file that we need to access stdout from Firefox
- Needs a lot of work, and without a real JS (or otherwise Mozilla-native) Zeroconf library we can't do proper discovery without intermittent polling
- But it works, at least for me

Also includes some data/sync-layer changes that I needed along the way (and that we'll need for shared collections of any type)
This commit is contained in:
Dan Stillman 2008-06-03 05:26:30 +00:00
parent 4d03dd8d43
commit 00c2b14d6c
16 changed files with 859 additions and 56 deletions

View file

@ -16,11 +16,11 @@ var ZoteroWrapped = this;
var xpcomFiles = [ 'zotero',
'annotate', 'attachments', 'cite', 'cite_compat', 'collectionTreeView',
'data_access', 'data/item', 'data/items', 'data/collection', 'data/collections',
'dataServer', 'data_access', 'data/item', 'data/items', 'data/collection', 'data/collections',
'data/cachedTypes', 'data/creator', 'data/creators', 'data/itemFields',
'data/notes', 'data/tags', 'db', 'file', 'fulltext', 'id', 'ingester', 'integration',
'itemTreeView', 'mime', 'notifier', 'progressWindow', 'quickCopy', 'report',
'schema', 'search', 'sync', 'timeline', 'translate', 'utilities'];
'schema', 'search', 'sync', 'timeline', 'translate', 'utilities', 'zeroconf'];
for (var i=0; i<xpcomFiles.length; i++) {
Cc["@mozilla.org/moz/jssubscript-loader;1"]