summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGarren Smith <garren.smith@gmail.com>2014-01-21 15:18:45 +0200
committerGarren Smith <garren.smith@gmail.com>2014-01-29 15:48:54 +0200
commit864e0d14de4c51e1fa52bb0b4e2c17f68001ca76 (patch)
tree076f4eec804bf7348af9826c49e7ac04615df857
parent014b8c111157e251a88a016643c53ae692eaf85d (diff)
downloadcouchdb-864e0d14de4c51e1fa52bb0b4e2c17f68001ca76.tar.gz
remove extension
-rw-r--r--src/fauxton/app/addons/fauxton/base.js1
-rw-r--r--src/fauxton/app/app.js8
-rw-r--r--src/fauxton/app/core/base.js25
3 files changed, 33 insertions, 1 deletions
diff --git a/src/fauxton/app/addons/fauxton/base.js b/src/fauxton/app/addons/fauxton/base.js
index 2fee68070..b42188e65 100644
--- a/src/fauxton/app/addons/fauxton/base.js
+++ b/src/fauxton/app/addons/fauxton/base.js
@@ -137,6 +137,7 @@ function(app, FauxtonAPI, resizeColumns) {
this.resizeColumns.onResizeHandler();
FauxtonAPI.extensions.on('add:navbar:addHeaderLink', this.addLink);
+ FauxtonAPI.extensions.on('removeItem:navbar:addHeaderLink', this.removeLink);
},
serialize: function() {
diff --git a/src/fauxton/app/app.js b/src/fauxton/app/app.js
index 74980ea89..3ec2c99ac 100644
--- a/src/fauxton/app/app.js
+++ b/src/fauxton/app/app.js
@@ -97,7 +97,13 @@ function(app, $, _, Backbone, Bootstrap, Helpers, Utils, FauxtonAPI, Couchdb) {
},
removeHeaderLink: function(link) {
- // TODO add remove to extensions
+ FauxtonAPI.removeExtensionItem('navbar:addHeaderLink', link, function (item) {
+ if (item.title === link.title) {
+ return true;
+ }
+
+ return false;
+ });
}
});
diff --git a/src/fauxton/app/core/base.js b/src/fauxton/app/core/base.js
index e98bdf867..55a8d876d 100644
--- a/src/fauxton/app/core/base.js
+++ b/src/fauxton/app/core/base.js
@@ -90,6 +90,14 @@ function(Backbone) {
extensions[name].push(view);
};
+ FauxtonAPI.unRegisterExtension = function (name) {
+ var views = extensions[name];
+
+ if (!views) { return; }
+ extensions.trigger('remove:' + name, views);
+ delete extensions[name];
+ };
+
FauxtonAPI.getExtensions = function (name) {
var views = extensions[name];
@@ -100,6 +108,23 @@ function(Backbone) {
return views;
};
+ FauxtonAPI.removeExtensionItem = function (name, view, cb) {
+ var views = extensions[name];
+ if (!views) { return; }
+
+ var _cb = arguments[arguments.length -1];
+ if (_.isObject(view) && !cb) {
+ _cb = function (item) { return _.isEqual(item, view);};
+ }
+
+ views = _.filter(views, function (item) {
+ return !_cb(item);
+ });
+
+ extensions[name] = views;
+ extensions.trigger('removeItem:' + name, view);
+ };
+
FauxtonAPI.extensions = extensions;
FauxtonAPI.setSession = function (newSession) {