diff options
author | Garren Smith <garren.smith@gmail.com> | 2014-01-21 15:18:45 +0200 |
---|---|---|
committer | Garren Smith <garren.smith@gmail.com> | 2014-01-29 15:48:54 +0200 |
commit | 864e0d14de4c51e1fa52bb0b4e2c17f68001ca76 (patch) | |
tree | 076f4eec804bf7348af9826c49e7ac04615df857 | |
parent | 014b8c111157e251a88a016643c53ae692eaf85d (diff) | |
download | couchdb-864e0d14de4c51e1fa52bb0b4e2c17f68001ca76.tar.gz |
remove extension
-rw-r--r-- | src/fauxton/app/addons/fauxton/base.js | 1 | ||||
-rw-r--r-- | src/fauxton/app/app.js | 8 | ||||
-rw-r--r-- | src/fauxton/app/core/base.js | 25 |
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) { |