remove extension

Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/0e8b9c9a
Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/0e8b9c9a
Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/0e8b9c9a

Branch: refs/heads/fauxton-file-reorder
Commit: 0e8b9c9a4cce99281d7e476195a6048e8bb06df7
Parents: 562ebae
Author: Garren Smith <[email protected]>
Authored: Tue Jan 21 15:18:45 2014 +0200
Committer: Garren Smith <[email protected]>
Committed: Mon Jan 27 08:41:31 2014 +0200

----------------------------------------------------------------------
 src/fauxton/app/addons/fauxton/base.js |  1 +
 src/fauxton/app/app.js                 |  8 +++++++-
 src/fauxton/app/core/base.js           | 25 +++++++++++++++++++++++++
 3 files changed, 33 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb/blob/0e8b9c9a/src/fauxton/app/addons/fauxton/base.js
----------------------------------------------------------------------
diff --git a/src/fauxton/app/addons/fauxton/base.js 
b/src/fauxton/app/addons/fauxton/base.js
index 2fee680..b42188e 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() {

http://git-wip-us.apache.org/repos/asf/couchdb/blob/0e8b9c9a/src/fauxton/app/app.js
----------------------------------------------------------------------
diff --git a/src/fauxton/app/app.js b/src/fauxton/app/app.js
index 74980ea..3ec2c99 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;
+      });
     }
   });
 

http://git-wip-us.apache.org/repos/asf/couchdb/blob/0e8b9c9a/src/fauxton/app/core/base.js
----------------------------------------------------------------------
diff --git a/src/fauxton/app/core/base.js b/src/fauxton/app/core/base.js
index e98bdf8..55a8d87 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) {

Reply via email to