diff options
author | dave@33eels.com <dave@33eels.com@4eb1ac78-321c-0410-a911-ec516a8615a5> | 2009-03-07 13:21:10 (GMT) |
---|---|---|
committer | dave@33eels.com <dave@33eels.com@4eb1ac78-321c-0410-a911-ec516a8615a5> | 2009-03-07 13:21:10 (GMT) |
commit | 8742c7e99bdb1291e2b74cb273c58dc9e9d439e4 (patch) | |
tree | db559e4c1ea48d69eeb57e0fb64010a6ccf8ad7f | |
parent | 4d6bb99344640d00f44a48b6a44a0c0ba75671e3 (diff) |
Brought extension up-to-date with API changes. All seems to be working now. Remember:
1. Delete your bandwagon.sqlite file.
2. Set bandwagon.firstrun to be true.
git-svn-id: http://svn.mozilla.org/addons/trunk@22984 4eb1ac78-321c-0410-a911-ec516a8615a5
-rw-r--r-- | bandwagon/components/bandwagon-service.js | 53 | ||||
-rw-r--r-- | bandwagon/content/scripts/bandwagon.js | 2 | ||||
-rw-r--r-- | bandwagon/content/scripts/factory/collectionFactory.js | 120 | ||||
-rw-r--r-- | bandwagon/content/scripts/model/addon.js | 9 | ||||
-rw-r--r-- | bandwagon/content/scripts/model/collection.js | 1 | ||||
-rw-r--r-- | bandwagon/content/scripts/model/serviceDocument.js | 5 | ||||
-rw-r--r-- | bandwagon/content/scripts/rpc/constants.js | 2 | ||||
-rw-r--r-- | bandwagon/content/scripts/rpc/net.js | 5 | ||||
-rw-r--r-- | bandwagon/content/ui/bindings/bandwagon.xml | 38 | ||||
-rw-r--r-- | bandwagon/content/ui/collectionsPaneController.js | 42 | ||||
-rw-r--r-- | bandwagon/content/ui/overlays/extensionsOverlay.xul | 2 | ||||
-rw-r--r-- | bandwagon/content/ui/overlays/extensionsOverlayController.js | 2 | ||||
-rw-r--r-- | bandwagon/content/ui/settingsController.js | 7 |
13 files changed, 169 insertions, 119 deletions
diff --git a/bandwagon/components/bandwagon-service.js b/bandwagon/components/bandwagon-service.js index 1632e3a..17f9cdb 100644 --- a/bandwagon/components/bandwagon-service.js +++ b/bandwagon/components/bandwagon-service.js @@ -114,6 +114,9 @@ BandwagonService.prototype = { // first run stuff +// FIXME temp temp temp +this.updateCollectionsList(); + if (Bandwagon.Preferences.getPreference("firstrun") == true) { Bandwagon.Preferences.setPreference("firstrun", false); @@ -268,26 +271,58 @@ BandwagonService.prototype = { { if (event.isError()) { + Bandwagon.Logger.error("Could not update collections list: " + event.getError().toString()); } else { - Bandwagon.Logger.debug("Updating collections list: have " + event.collections.length + " collections"); + var collections = event.serviceDocument.collections; + + Bandwagon.Logger.debug("Updating collections list: saw " + collections.length + " collections"); - for (var i=0; i<event.collections.length; i++) + for (var i=0; i<bandwagonService.collections.length; i++) { - var collection = event.collections[i]; + var isStaleCollection = true; + + for (var j=0; j<collections.length; j++) + { + if (bandwagonService.collections[i].equals(collections[j])) + { + isStaleCollection = false; + break; + } + } + + if (isStaleCollection) + { + Bandwagon.Logger.debug("Updating collections list: removing stale collection: " + bandwagonService.collections[i].toString()); + + bandwagonService.deleteCollection(bandwagonService.collections[i]); + } + } - // TODO: do this properly, add/remove what we do/don't have. + for (var i=0; i<collections.length; i++) + { + var collection = collections[i]; - Bandwagon.Logger.debug("Updating collections list: adding " + collection.toString()); + if (bandwagonService.collections[collection.resourceURL]) + { + // we have already added this collection + } + else + { + // this is a new collection + Bandwagon.Logger.debug("Updating collections list: adding new collection: " + collection.toString()); - this.collections[collection] = collection; + bandwagonService.collections[collection.resourceURL] = collection; - // TODO notify CollectionUpdate observers + bandwagonService.forceCheckForUpdates(collection); + } } + + bandwagonService._notifyListChangeObservers(); if (Bandwagon.COMMIT_NOW) - this.commit(collection); + bandwagonService.commitAll(); } } }, @@ -720,7 +755,7 @@ BandwagonService.prototype = { + "addonsPerPage INTEGER NOT NULL)" ); this._storageConnection.executeSimpleSQL( - "CREATE TABLE IF NOT EXISTS addons " + "CREATE TABLE IF NOT EXISTS collectionsAddons " + "(id INTEGER PRIMARY KEY AUTOINCREMENT, " + "collection INTEGER NOT NULL, " + "addon INTEGER NOT NULL, " diff --git a/bandwagon/content/scripts/bandwagon.js b/bandwagon/content/scripts/bandwagon.js index 154c6ea..aea00cf 100644 --- a/bandwagon/content/scripts/bandwagon.js +++ b/bandwagon/content/scripts/bandwagon.js @@ -52,5 +52,5 @@ Bandwagon.COLLECTIONSPANE_DO_SUBSCRIBE_URL = "https://bandwagon.stage.mozilla.co Bandwagon.MAGIC_ADD_COLLECTION_COOKIE_HOST = "www.33eels.com"; // TODO Bandwagon.MAGIC_ADD_COLLECTION_COOKIE_NAME = "bandwagon_addcollection"; -Bandwagon.COMMIT_NOW = 0; // 1=commit on the fly. 0=commit when browser exit. +Bandwagon.COMMIT_NOW = 1; // 1=commit on the fly. 0=commit when browser exit. diff --git a/bandwagon/content/scripts/factory/collectionFactory.js b/bandwagon/content/scripts/factory/collectionFactory.js index 38293a5..58372c8 100644 --- a/bandwagon/content/scripts/factory/collectionFactory.js +++ b/bandwagon/content/scripts/factory/collectionFactory.js @@ -64,7 +64,7 @@ Bandwagon.Factory.CollectionFactory.prototype.openCollection = function(collecti if (!collection) return null; - collection.addons = this._openCollectionItems(collection); + collection.addons = this._openAddons(collection); collections[collection.resourceURL] = collection; } @@ -94,7 +94,7 @@ Bandwagon.Factory.CollectionFactory.prototype.openCollections = function() if (!collection) continue; - collection.addons = this._openCollectionItems(collection); + collection.addons = this._openAddons(collection); collections[collection.resourceURL] = collection; } @@ -116,7 +116,7 @@ Bandwagon.Factory.CollectionFactory.prototype.commitCollection = function(collec try { - (collection.id==-1?statement.bindNullParameter(0):statement.bindInt32Parameter(0, collection.id)); + (collection.storageID==-1?statement.bindNullParameter(0):statement.bindInt32Parameter(0, collection.storageID)); statement.bindUTF8StringParameter(1, collection.resourceURL); statement.bindUTF8StringParameter(2, collection.name); statement.bindUTF8StringParameter(3, collection.description); @@ -135,14 +135,14 @@ Bandwagon.Factory.CollectionFactory.prototype.commitCollection = function(collec statement.reset(); } - if (collection.id == -1) + if (collection.storageID == -1) { - collection.id = this.connection.lastInsertRowID; + collection.storageID = this.connection.lastInsertRowID; } for (var id in collection.addons) { - this._commitCollectionItem(collection, collection.addons[id]); + this._commitAddon(collection, collection.addons[id]); } return true; @@ -162,16 +162,16 @@ Bandwagon.Factory.CollectionFactory.prototype.deleteCollection = function(collec return null; var statement1 = this.connection.createStatement("DELETE FROM collections where id = ?1"); - var statement2 = this.connection.createStatement("DELETE FROM addons where collection = ?1"); + var statement2 = this.connection.createStatement("DELETE FROM collectionsAddons where collection = ?1"); try { // TODO transaction here? - statement1.bindInt32Parameter(0, collection.id); + statement1.bindInt32Parameter(0, collection.storageID); statement1.execute(); - statement2.bindInt32Parameter(0, collection.id); + statement2.bindInt32Parameter(0, collection.storageID); statement2.execute(); } finally @@ -188,7 +188,7 @@ Bandwagon.Factory.CollectionFactory.prototype.deleteCollection = function(collec Bandwagon.Factory.CollectionFactory.prototype._openCollectionFromRS = function(resultset) { var collection = new this.Bandwagon.Model.Collection(); - collection.id = resultset.getInt32(0); + collection.storageID = resultset.getInt32(0); collection.resourceURL = resultset.getUTF8String(1); collection.name = resultset.getUTF8String(2); collection.description = resultset.getUTF8String(3); @@ -206,23 +206,23 @@ Bandwagon.Factory.CollectionFactory.prototype._openCollectionFromRS = function(r return collection; } -Bandwagon.Factory.CollectionFactory.prototype._openCollectionItems = function(collection) +Bandwagon.Factory.CollectionFactory.prototype._openAddons = function(collection) { var addons = {}; - var statement = this.connection.createStatement("SELECT addons.*, addons.id, addons.read FROM addons LEFT JOIN addons ON addons.id = addons.addon WHERE addons.collection = ?1 LIMIT ?2"); + var statement = this.connection.createStatement("SELECT addons.*, collectionsAddons.id, collectionsAddons.read FROM addons LEFT JOIN collectionsAddons ON addons.id = collectionsAddons.addon WHERE collectionsAddons.collection = ?1 LIMIT ?2"); try { - statement.bindInt32Parameter(0, collection.id); + statement.bindInt32Parameter(0, collection.storageID); statement.bindInt32Parameter(1, this.Bandwagon.DEFAULT_ADDONS_PER_PAGE); while (statement.executeStep()) { - var addon = new this.Bandwagon.Model.CollectionItem(); + var addon = new this.Bandwagon.Model.Addon(); addon.Bandwagon = this.Bandwagon; - addon.id = statement.getInt32(0); + addon.storageID = statement.getInt32(0); addon.guid = statement.getUTF8String(1); addon.name = statement.getUTF8String(2); addon.type = statement.getInt32(3); @@ -237,13 +237,13 @@ Bandwagon.Factory.CollectionFactory.prototype._openCollectionItems = function(co addon.author = statement.getUTF8String(12); addon.category = statement.getUTF8String(13); addon.dateAdded = new Date(statement.getInt32(14)*1000); - addon.addonId = statement.getInt32(15); + addon.collectionsAddonsStorageID = statement.getInt32(15); addon.read = (statement.getInt32(16)==1?true:false); - addon.compatibleApplications = this._openCollectionItemCompatibleApplications(addon); - addon.compatibleOS = this._openCollectionItemCompatibleOS(addon); - addon.installs = this._openCollectionItemInstalls(addon); - addon.comments = this._openCollectionItemComments(addon); + addon.compatibleApplications = this._openAddonCompatibleApplications(addon); + addon.compatibleOS = this._openAddonCompatibleOS(addon); + addon.installs = this._openAddonInstalls(addon); + addon.comments = this._openAddonComments(addon); addons[addon.guid] = addon; } @@ -256,7 +256,7 @@ Bandwagon.Factory.CollectionFactory.prototype._openCollectionItems = function(co return addons; } -Bandwagon.Factory.CollectionFactory.prototype._openCollectionItemCompatibleApplications = function(addon) +Bandwagon.Factory.CollectionFactory.prototype._openAddonCompatibleApplications = function(addon) { var compatibleApplications = {}; @@ -264,7 +264,7 @@ Bandwagon.Factory.CollectionFactory.prototype._openCollectionItemCompatibleAppli try { - statement.bindInt32Parameter(0, addon.id); + statement.bindInt32Parameter(0, addon.storageID); while (statement.executeStep()) { @@ -288,7 +288,7 @@ Bandwagon.Factory.CollectionFactory.prototype._openCollectionItemCompatibleAppli return compatibleApplications; } -Bandwagon.Factory.CollectionFactory.prototype._openCollectionItemCompatibleOS = function(addon) +Bandwagon.Factory.CollectionFactory.prototype._openAddonCompatibleOS = function(addon) { var compatibleOS = {}; @@ -296,7 +296,7 @@ Bandwagon.Factory.CollectionFactory.prototype._openCollectionItemCompatibleOS = try { - statement.bindInt32Parameter(0, addon.id); + statement.bindInt32Parameter(0, addon.storageID); while (statement.executeStep()) { @@ -313,7 +313,7 @@ Bandwagon.Factory.CollectionFactory.prototype._openCollectionItemCompatibleOS = return compatibleOS; } -Bandwagon.Factory.CollectionFactory.prototype._openCollectionItemInstalls = function(addon) +Bandwagon.Factory.CollectionFactory.prototype._openAddonInstalls = function(addon) { var installs = {}; @@ -321,7 +321,7 @@ Bandwagon.Factory.CollectionFactory.prototype._openCollectionItemInstalls = func try { - statement.bindInt32Parameter(0, addon.id); + statement.bindInt32Parameter(0, addon.storageID); while (statement.executeStep()) { @@ -343,7 +343,7 @@ Bandwagon.Factory.CollectionFactory.prototype._openCollectionItemInstalls = func return installs; } -Bandwagon.Factory.CollectionFactory.prototype._openCollectionItemComments = function(addon) +Bandwagon.Factory.CollectionFactory.prototype._openAddonComments = function(addon) { var comments = []; @@ -351,7 +351,7 @@ Bandwagon.Factory.CollectionFactory.prototype._openCollectionItemComments = func try { - statement.bindInt32Parameter(0, addon.id); + statement.bindInt32Parameter(0, addon.storageID); while (statement.executeStep()) { @@ -372,7 +372,7 @@ Bandwagon.Factory.CollectionFactory.prototype._openCollectionItemComments = func return comments; } -Bandwagon.Factory.CollectionFactory.prototype._commitCollectionItem = function(collection, addon) +Bandwagon.Factory.CollectionFactory.prototype._commitAddon = function(collection, addon) { if (!this.connection) return; @@ -382,7 +382,7 @@ Bandwagon.Factory.CollectionFactory.prototype._commitCollectionItem = function(c // if guid doesn't exist - insert var statement = this.connection.createStatement("SELECT id FROM addons where guid = ?1"); - var addonid = null; + var addonStorageID = null; try { @@ -390,7 +390,7 @@ Bandwagon.Factory.CollectionFactory.prototype._commitCollectionItem = function(c while (statement.executeStep()) { - addonid = statement.getInt32(0); + addonStorageID = statement.getInt32(0); } } finally @@ -402,15 +402,15 @@ Bandwagon.Factory.CollectionFactory.prototype._commitCollectionItem = function(c try { - if (addonid != null) + if (addonStorageID != null) { // addon already exists (in another collection, or from previous commit of this collection) - statement2.bindInt32Parameter(0, addonid); + statement2.bindInt32Parameter(0, addonStorageID); } - else if (addon.id != -1) + else if (addon.storageID != -1) { // addon doesn't already exist, but exists from a previous commit of this collection (?) - statement2.bindInt32Parameter(0, addon.id); + statement2.bindInt32Parameter(0, addon.storageID); } else { @@ -440,50 +440,50 @@ Bandwagon.Factory.CollectionFactory.prototype._commitCollectionItem = function(c statement2.reset(); } - if (addon.id == -1 && addonid == null) + if (addon.storageID == -1 && addonStorageID == null) { - addonid = this.connection.lastInsertRowID; + addonStorageID = this.connection.lastInsertRowID; } // add the other addon bits for (var id in addon.compatibleApplications) { - this._commitAddonCompatibleApplication(addonid, addon.compatibleApplications[id]); + this._commitAddonCompatibleApplication(addonStorageID, addon.compatibleApplications[id]); } for (var id in addon.compatibleOS) { - this._commitAddonCompatibleOS(addonid, addon.compatibleOS[id]); + this._commitAddonCompatibleOS(addonStorageID, addon.compatibleOS[id]); } for (var id in addon.installs) { - this._commitAddonInstall(addonid, addon.installs[id]); + this._commitAddonInstall(addonStorageID, addon.installs[id]); } for (var i=0; i<addon.comments.length; i++) { - this._commitAddonComment(addonid, addon.comments[i]); + this._commitAddonComment(addonStorageID, addon.comments[i]); } // add the addon connector - var statement3 = this.connection.createStatement("REPLACE INTO addons VALUES (?1, ?2, ?3, ?4)"); + var statement3 = this.connection.createStatement("REPLACE INTO collectionsAddons VALUES (?1, ?2, ?3, ?4)"); try { - if (addon.addonId == -1) + if (addon.collectionsAddonsStorageID == -1) { statement3.bindNullParameter(0); } else { - statement3.bindInt32Parameter(0, addon.addonId); + statement3.bindInt32Parameter(0, addon.collectionsAddonsStorageID); } - statement3.bindInt32Parameter(1, collection.id); - statement3.bindInt32Parameter(2, addonid); + statement3.bindInt32Parameter(1, collection.storageID); + statement3.bindInt32Parameter(2, addonStorageID); statement3.bindInt32Parameter(3, (addon.read?1:0)); statement3.execute(); @@ -493,21 +493,21 @@ Bandwagon.Factory.CollectionFactory.prototype._commitCollectionItem = function(c statement3.reset(); } - if (addon.addonId == -1) + if (addon.collectionsAddonsStorageID == -1) { - addon.addonId = this.connection.lastInsertRowID; + addon.collectionsAddonsStorageID = this.connection.lastInsertRowID; } return true; } -Bandwagon.Factory.CollectionFactory.prototype._commitAddonCompatibleApplication = function(addonid, application) +Bandwagon.Factory.CollectionFactory.prototype._commitAddonCompatibleApplication = function(addonStorageID, application) { var statement = this.connection.createStatement("DELETE FROM addonCompatibleApplications WHERE addon = ?1"); try { - statement.bindInt32Parameter(0, addonid); + statement.bindInt32Parameter(0, addonStorageID); statement.execute(); } finally @@ -519,7 +519,7 @@ Bandwagon.Factory.CollectionFactory.prototype._commitAddonCompatibleApplication try { - statement2.bindInt32Parameter(0, addonid); + statement2.bindInt32Parameter(0, addonStorageID); statement2.bindUTF8StringParameter(1, application.name); statement2.bindInt32Parameter(2, application.applicationId); statement2.bindUTF8StringParameter(3, application.minVersion); @@ -534,13 +534,13 @@ Bandwagon.Factory.CollectionFactory.prototype._commitAddonCompatibleApplication } } -Bandwagon.Factory.CollectionFactory.prototype._commitAddonCompatibleOS = function(addonid, os) +Bandwagon.Factory.CollectionFactory.prototype._commitAddonCompatibleOS = function(addonStorageID, os) { var statement = this.connection.createStatement("DELETE FROM addonCompatibleOS WHERE addon = ?1"); try { - statement.bindInt32Parameter(0, addonid); + statement.bindInt32Parameter(0, addonStorageID); statement.execute(); } finally @@ -552,7 +552,7 @@ Bandwagon.Factory.CollectionFactory.prototype._commitAddonCompatibleOS = functio try { - statement2.bindInt32Parameter(0, addonid); + statement2.bindInt32Parameter(0, addonStorageID); statement2.bindUTF8StringParameter(1, os); statement2.execute(); @@ -563,13 +563,13 @@ Bandwagon.Factory.CollectionFactory.prototype._commitAddonCompatibleOS = functio } } -Bandwagon.Factory.CollectionFactory.prototype._commitAddonInstall = function(addonid, install) +Bandwagon.Factory.CollectionFactory.prototype._commitAddonInstall = function(addonStorageID, install) { var statement = this.connection.createStatement("DELETE FROM addonInstalls WHERE addon = ?1"); try { - statement.bindInt32Parameter(0, addonid); + statement.bindInt32Parameter(0, addonStorageID); statement.execute(); } finally @@ -581,7 +581,7 @@ Bandwagon.Factory.CollectionFactory.prototype._commitAddonInstall = function(add try { - statement2.bindInt32Parameter(0, addonid); + statement2.bindInt32Parameter(0, addonStorageID); statement2.bindUTF8StringParameter(1, install.url); statement2.bindUTF8StringParameter(2, install.hash); statement2.bindUTF8StringParameter(3, install.os); @@ -594,13 +594,13 @@ Bandwagon.Factory.CollectionFactory.prototype._commitAddonInstall = function(add } } -Bandwagon.Factory.CollectionFactory.prototype._commitAddonComment = function(addonid, comment) +Bandwagon.Factory.CollectionFactory.prototype._commitAddonComment = function(addonStorageID, comment) { var statement = this.connection.createStatement("DELETE FROM addonComments WHERE addon = ?1"); try { - statement.bindInt32Parameter(0, addonid); + statement.bindInt32Parameter(0, addonStorageID); statement.execute(); } finally @@ -612,7 +612,7 @@ Bandwagon.Factory.CollectionFactory.prototype._commitAddonComment = function(add try { - statement2.bindInt32Parameter(0, addonid); + statement2.bindInt32Parameter(0, addonStorageID); statement2.bindUTF8StringParameter(1, comment.comment); statement2.bindUTF8StringParameter(2, comment.author); diff --git a/bandwagon/content/scripts/model/addon.js b/bandwagon/content/scripts/model/addon.js index 58e74fc..1131f64 100644 --- a/bandwagon/content/scripts/model/addon.js +++ b/bandwagon/content/scripts/model/addon.js @@ -45,6 +45,9 @@ Bandwagon.Model.Addon = function() this.TYPE_EXTENSION = 1; this.STATUS_PUBLIC = 4; + this.storageID = -1; + this.collectionsAddonsStorageID = -1; + this.name = ""; this.type = -1; this.guid = ""; @@ -260,16 +263,18 @@ Bandwagon.Model.Addon.prototype.unserialize = function(xaddon) for each (var xauthor in xaddon.authors.author) { - this.authors.push(xauthor.text().toString()); + this.authors[xauthor.text().toString()] = xauthor.text().toString(); } for each (var xcategory in xaddon.categories.category) { - this.categories.push(xcategory.text().toString()); + this.categories[xcategory.text().toString()] = xcategory.text().toString(); } this.dateAdded = this.Bandwagon.Util.ISO8601toDate(xaddon.meta.added.text().toString()); + this.comments = []; + for each (var xcomment in xaddon.meta.comments.comment) { this.comments.push(xcomment.text().toString()); diff --git a/bandwagon/content/scripts/model/collection.js b/bandwagon/content/scripts/model/collection.js index f89e701..ba949bd 100644 --- a/bandwagon/content/scripts/model/collection.js +++ b/bandwagon/content/scripts/model/collection.js @@ -38,6 +38,7 @@ Bandwagon.Model.Collection = function() { this.Bandwagon = Bandwagon; + this.storageID = -1; this.resourceURL = ""; this.name = ""; diff --git a/bandwagon/content/scripts/model/serviceDocument.js b/bandwagon/content/scripts/model/serviceDocument.js index 67e87eb..2cd8aff 100644 --- a/bandwagon/content/scripts/model/serviceDocument.js +++ b/bandwagon/content/scripts/model/serviceDocument.js @@ -38,11 +38,14 @@ Bandwagon.Model.ServiceDocument = function() { this.Bandwagon = Bandwagon; - this.collections = {}; + this.collections = []; } Bandwagon.Model.ServiceDocument.prototype.unserialize = function(xsharing) { + var xmlns = new Namespace('http://www.w3.org/XML/1998/namespace'); + var baseURL = xsharing.@xmlns::base.toString(); + // collections for each (var xcollection in xsharing.collections.collection) diff --git a/bandwagon/content/scripts/rpc/constants.js b/bandwagon/content/scripts/rpc/constants.js index b558245..d0d36f4 100644 --- a/bandwagon/content/scripts/rpc/constants.js +++ b/bandwagon/content/scripts/rpc/constants.js @@ -37,7 +37,7 @@ Bandwagon.RPC.Constants = new function() { - this.BANDWAGON_RPC_SERVICE_DOCUMENT = "https://bandwagon.stage.mozilla.org/en-US/firefox/api/1.3/sharing"; + this.BANDWAGON_RPC_SERVICE_DOCUMENT = "https://bandwagon.stage.mozilla.com/en-US/firefox/api/1.3/sharing"; this.BANDWAGON_RPC_EVENT_TYPE_BANDWAGON_RPC_SHARE_TO_EMAIL_ACTION = "firefox/api/recommend_email"; this.BANDWAGON_RPC_EVENT_TYPE_BANDWAGON_RPC_GET_SERVICE_DOCUMENT_COMPLETE = 100; diff --git a/bandwagon/content/scripts/rpc/net.js b/bandwagon/content/scripts/rpc/net.js index 82c712e..d6ae3e9 100644 --- a/bandwagon/content/scripts/rpc/net.js +++ b/bandwagon/content/scripts/rpc/net.js @@ -117,9 +117,12 @@ Bandwagon.RPC.Net = function(Bandwagon, Components) // parse xml here instead, put in response var var xmlStr = rpcnetrequest.responseText; - // workaround for E4X bug/feature + // workaround for E4X bugs/features xmlStr = xmlStr.replace(/^<\?xml\s+version\s*=\s*(["'])[^\1]+\1[^?]*\?>/, ""); // bug 336551 + //default xml namespace = 'http://addons.mozilla.org/'; + xmlStr = xmlStr.replace(/xmlns="http:\/\/addons.mozilla.org\/"/, ""); + response = new XML(xmlStr); //rpcnet._logger.debug("Bandwagon.RPC.Net.send.onreadystatechange: ' + rpcnet.id + ': XML representation: '" + response.toXMLString() + "'"); diff --git a/bandwagon/content/ui/bindings/bandwagon.xml b/bandwagon/content/ui/bindings/bandwagon.xml index 919d066..93cac05 100644 --- a/bandwagon/content/ui/bindings/bandwagon.xml +++ b/bandwagon/content/ui/bindings/bandwagon.xml @@ -144,13 +144,13 @@ </content> <implementation> - <field name="collectionItem"/> + <field name="addon"/> <field name="_stringBundle">document.getAnonymousElementByAttribute(this, "anonid", "stringbundle");</field> <constructor> <![CDATA[ - if (this.collectionItem) - this.setAddon(this.collectionItem); + if (this.addon) + this.setAddon(this.addon); ]]> </constructor> @@ -291,24 +291,24 @@ </property> <method name="setAddon"> - <parameter name="collectionItem"/> + <parameter name="addon"/> <body> <![CDATA[ - this.collectionItem = collectionItem; - this.name = collectionItem.name; - this.guid = collectionItem.guid; - this.summary = collectionItem.summary; - this.description = collectionItem.summary; // Use summary and not description - this.iconURL = collectionItem.icon; - this.thumbnailURL = collectionItem.thumbnail; - this.author = (collectionItem.author?collectionItem.author:"Unknown"); - this.category = (collectionItem.category?collectionItem.category:"Unknown"); - this.dateAdded = collectionItem.dateAdded; - this.read = collectionItem.read; - - if (collectionItem.comments.length > 0) + this.addon = addon; + this.name = addon.name; + this.guid = addon.guid; + this.summary = addon.summary; + this.description = addon.summary; // Use summary and not description + this.iconURL = addon.icon; + this.thumbnailURL = addon.thumbnail; + this.author = (addon.author?addon.author:"Unknown"); + this.category = (addon.category?addon.category:"Unknown"); + this.dateAdded = addon.dateAdded; + this.read = addon.read; + + if (addon.comments.length > 0) { - this.comment = collectionItem.comments[0]; + this.comment = addon.comments[0]; } else { @@ -319,7 +319,7 @@ } } - var canInstall = collectionItem.canInstall(Bandwagon.Util.getHostEnvironmentInfo()); + var canInstall = addon.canInstall(Bandwagon.Util.getHostEnvironmentInfo()); this.showVersionHelper(canInstall.type, canInstall.requiredVersion); if (document.getAnonymousElementByAttribute(this, 'anonid', 'publish')) diff --git a/bandwagon/content/ui/collectionsPaneController.js b/bandwagon/content/ui/collectionsPaneController.js index b1a9a39..7b193dc 100644 --- a/bandwagon/content/ui/collectionsPaneController.js +++ b/bandwagon/content/ui/collectionsPaneController.js @@ -63,7 +63,7 @@ Bandwagon.Controller.CollectionsPane.init = function() Bandwagon.Logger.debug("Initializing Bandwagon.Controller.CollectionsPane"); this.elemBandwagonCollections = document.getElementById("bandwagon-collections-list"); - this.elemBandwagonAddons = document.getElementById("bandwagon-collectionitems-list"); + this.elemBandwagonAddons = document.getElementById("bandwagon-addons-list"); this.elemBandwagonButtonViewSite = document.getElementById("bandwagon-button-viewsite"); //this.elemBandwagonButtonUpdate = document.getElementById("bandwagon-button-update"); this.elemBandwagonButtonRemove = document.getElementById("bandwagon-button-remove"); @@ -409,12 +409,12 @@ Bandwagon.Controller.CollectionsPane.doExpandAddon = function(event) var selectedElemBandwagonAddon = Bandwagon.Controller.CollectionsPane.elemBandwagonAddons.selectedItem; - if (selectedElemBandwagonAddon != null && selectedElemBandwagonAddon.collectionItem != null) + if (selectedElemBandwagonAddon != null && selectedElemBandwagonAddon.addon != null) { selectedElemBandwagonAddon.read = true; - var collectionItem = selectedElemBandwagonAddon.collectionItem; - collectionItem.read = true; + var addon = selectedElemBandwagonAddon.addon; + addon.read = true; Bandwagon.Controller.CollectionsPane.elemBandwagonCollections.selectedItem.unread = Bandwagon.Controller.CollectionsPane.elemBandwagonCollections.selectedItem.collection.getUnreadAddons().length; @@ -423,11 +423,11 @@ Bandwagon.Controller.CollectionsPane.doExpandAddon = function(event) const XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; var elemBandwagonAddonExpanded = document.createElementNS(XULNS, "bandwagonAddonExpanded"); - elemBandwagonAddonExpanded.collectionItem = collectionItem; + elemBandwagonAddonExpanded.addon = addon; try { - Bandwagon.Controller.CollectionsPane.elemBandwagonAddonExpanded.setAddon(collectionItem); + Bandwagon.Controller.CollectionsPane.elemBandwagonAddonExpanded.setAddon(addon); } catch (e) {} Bandwagon.Controller.CollectionsPane.elemBandwagonAddons.insertBefore(elemBandwagonAddonExpanded, selectedElemBandwagonAddon); @@ -444,7 +444,7 @@ Bandwagon.Controller.CollectionsPane.doMoreInfo = function(event) if (Bandwagon.Controller.CollectionsPane.elemBandwagonAddons == null) return; - Bandwagon.Controller.CollectionsPane._openURL(Bandwagon.Controller.CollectionsPane.elemBandwagonAddons.selectedItem.collectionItem.learnmore); + Bandwagon.Controller.CollectionsPane._openURL(Bandwagon.Controller.CollectionsPane.elemBandwagonAddons.selectedItem.addon.learnmore); } Bandwagon.Controller.CollectionsPane.doAddToFirefox = function() @@ -452,16 +452,16 @@ Bandwagon.Controller.CollectionsPane.doAddToFirefox = function() if (Bandwagon.Controller.CollectionsPane.elemBandwagonAddons.selectedItem == null) return; - var collectionItem = Bandwagon.Controller.CollectionsPane.elemBandwagonAddons.selectedItem.collectionItem; + var addon = Bandwagon.Controller.CollectionsPane.elemBandwagonAddons.selectedItem.addon; if (!isXPInstallEnabled()) return; - if (collectionItem.eula && collectionItem.eula != "") + if (addon.eula && addon.eula != "") { var eula = { - name: collectionItem.name, - text: collectionItem.eula, + name: addon.name, + text: addon.eula, accepted: false }; @@ -472,7 +472,7 @@ Bandwagon.Controller.CollectionsPane.doAddToFirefox = function() return; } - var installer = collectionItem.getInstaller(Bandwagon.Util.getHostEnvironmentInfo().os); + var installer = addon.getInstaller(Bandwagon.Util.getHostEnvironmentInfo().os); if (!installer) { @@ -481,7 +481,7 @@ Bandwagon.Controller.CollectionsPane.doAddToFirefox = function() } var params = []; - params[collectionItem.name] = installer; + params[addon.name] = installer; // TODO do some user collectionback here? @@ -618,7 +618,7 @@ Bandwagon.Controller.CollectionsPane.prefObserver = if (topic != "nsPref:changed") return; - if (data.match(/collectionitemsperpage/)) + if (data.match(/addonsperpage/)) { Bandwagon.Controller.CollectionsPane.refresh(); } @@ -733,24 +733,24 @@ Bandwagon.Controller.CollectionsPane._repopulateAddonsList = function(collection Bandwagon.Logger.debug("Bandwagon.Controller.CollectionsPane: repopulating collection '" + collection.resourceURL + "'"); - // sort by collectionItem.dateAdded + // sort by addon.dateAdded - var collectionItemsSorted = collection.getSortedAddons(); + var addonsSorted = collection.getSortedAddons(); // repopulate with collection items - var collectionItemsPerPage = bandwagonService.getAddonsPerPage(collection); + var addonsPerPage = bandwagonService.getAddonsPerPage(collection); const XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; - for (var i=0; (i<collectionItemsSorted.length&&i<collectionItemsPerPage); i++) + for (var i=0; (i<addonsSorted.length&&i<addonsPerPage); i++) { - var collectionItem = collection.collectionItems[collectionItemsSorted[i].guid]; + var addon = collection.addons[addonsSorted[i].guid]; - if (collectionItem == null) + if (addon == null) continue; var elemBandwagonAddon = document.createElementNS(XULNS, "bandwagonAddon"); - elemBandwagonAddon.collectionItem = collectionItem; + elemBandwagonAddon.addon = addon; Bandwagon.Controller.CollectionsPane.elemBandwagonAddons.appendChild(elemBandwagonAddon); } diff --git a/bandwagon/content/ui/overlays/extensionsOverlay.xul b/bandwagon/content/ui/overlays/extensionsOverlay.xul index a008812..f2d1fb3 100644 --- a/bandwagon/content/ui/overlays/extensionsOverlay.xul +++ b/bandwagon/content/ui/overlays/extensionsOverlay.xul @@ -109,7 +109,7 @@ </vbox> <deck id="bandwagon-collection-deck" selectedIndex="0" flex="1"> <hbox flex="1"> - <richlistbox id="bandwagon-collectionitems-list" + <richlistbox id="bandwagon-addons-list" seltype="single" flex="1"/> </hbox> diff --git a/bandwagon/content/ui/overlays/extensionsOverlayController.js b/bandwagon/content/ui/overlays/extensionsOverlayController.js index 05a09d6..50a66d8 100644 --- a/bandwagon/content/ui/overlays/extensionsOverlayController.js +++ b/bandwagon/content/ui/overlays/extensionsOverlayController.js @@ -99,7 +99,7 @@ Bandwagon.Controller.ExtensionsOverlay.init = function() if (bandwagonService.collections[inArgs.selectCollection]) { - Bandwagon.Controller.ColllectionsPane.preferredCollection = bandwagonService.collections[inArgs.selectCollection]; + Bandwagon.Controller.CollectionsPane.preferredCollection = bandwagonService.collections[inArgs.selectCollection]; } setTimeout(function() diff --git a/bandwagon/content/ui/settingsController.js b/bandwagon/content/ui/settingsController.js index 4e5de97..ef7d60e 100644 --- a/bandwagon/content/ui/settingsController.js +++ b/bandwagon/content/ui/settingsController.js @@ -129,7 +129,7 @@ Bandwagon.Controller.Settings.collectionsListChangeObserver = function() Bandwagon.Controller.Settings.invalidate = function() { var collectionCount = Bandwagon.Controller.Settings.elemBandwagonCollections.getElementsByTagName("bandwagonCollection").length; - var colllectionSelection = Bandwagon.Controller.Settings.elemBandwagonCollections.selectedItem; + var collectionSelection = Bandwagon.Controller.Settings.elemBandwagonCollections.selectedItem; var disabled = (!collectionSelection || collectionCount == 0); @@ -162,7 +162,10 @@ Bandwagon.Controller.Settings.doShowCollection = function() return; } - Bandwagon.Controller.Settings.elemCollectionName.value = (collection.name&&collection.name!=""?collection.name:collection.resourceURL); + if ( Bandwagon.Controller.Settings.elemCollectionName) + { + Bandwagon.Controller.Settings.elemCollectionName.value = (collection.name&&collection.name!=""?collection.name:collection.resourceURL); + } //if (document.getElementById("checkbox-updateinterval-global").checked) if (true) |