You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ga...@apache.org on 2014/01/15 16:33:39 UTC
[4/4] git commit: updated refs/heads/fauxton-file-reorder to 339329f
First working version
Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/339329f0
Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/339329f0
Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/339329f0
Branch: refs/heads/fauxton-file-reorder
Commit: 339329f0fc27da9b806977fd4f4c3e246b6c2b87
Parents: 95d20a0
Author: Garren Smith <ga...@gmail.com>
Authored: Wed Jan 15 15:33:07 2014 +0200
Committer: Garren Smith <ga...@gmail.com>
Committed: Wed Jan 15 15:53:29 2014 +0200
----------------------------------------------------------------------
src/fauxton/app/addons/documents/views.js | 2 +-
src/fauxton/app/addons/fauxton/base.js | 68 ++++++++++++--
src/fauxton/app/addons/fauxton/layout.js | 15 +---
src/fauxton/app/addons/fauxton/resizeColumns.js | 87 ++++++++++++++++++
src/fauxton/app/addons/fauxton/resizeCoumns.js | 87 ------------------
src/fauxton/app/app.js | 91 +++++--------------
src/fauxton/app/core/api.js | 30 +++----
src/fauxton/app/core/base.js | 1 -
src/fauxton/app/core/resources.js | 18 +---
src/fauxton/app/core/utils.js | 94 ++++++++++++++++++++
src/fauxton/app/main.js | 10 ++-
src/fauxton/app/router.js | 4 +-
src/fauxton/app/utils.js | 66 --------------
src/fauxton/settings.json.default | 1 +
14 files changed, 291 insertions(+), 283 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb/blob/339329f0/src/fauxton/app/addons/documents/views.js
----------------------------------------------------------------------
diff --git a/src/fauxton/app/addons/documents/views.js b/src/fauxton/app/addons/documents/views.js
index 94332a2..18063cb 100644
--- a/src/fauxton/app/addons/documents/views.js
+++ b/src/fauxton/app/addons/documents/views.js
@@ -21,7 +21,7 @@ define([
"addons/pouchdb/base",
// Libs
- "resizeColumns",
+ "addons/Fauxton/resizeColumns",
// Plugins
"plugins/prettify"
http://git-wip-us.apache.org/repos/asf/couchdb/blob/339329f0/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 e2b8c5d..ee6b794 100644
--- a/src/fauxton/app/addons/fauxton/base.js
+++ b/src/fauxton/app/addons/fauxton/base.js
@@ -11,13 +11,62 @@
// the License.
define([
+ "app",
"api",
"addons/fauxton/resizeColumns"
],
-function(FauxtonAPI, resizeColumns) {
+function(app, FauxtonAPI, resizeColumns) {
- var Fauxton = {};
+ var Fauxton = FauxtonAPI.addon();
+ FauxtonAPI.addNotification = function (options) {
+ options = _.extend({
+ msg: "Notification Event Triggered!",
+ type: "info",
+ selector: "#global-notifications"
+ }, options);
+
+ var view = new Fauxton.Notification(options);
+ return view.renderNotification();
+ };
+
+ Fauxton.initialize = function () {
+ app.footer = new Fauxton.Footer({el: "#footer-content"}),
+ app.navBar = new Fauxton.NavBar();
+ app.apiBar = new Fauxton.ApiBar();
+
+ FauxtonAPI.when.apply(null, app.footer.establish()).done(function() {
+ FauxtonAPI.masterLayout.layout.setView("#primary-navbar", app.navBar);
+ FauxtonAPI.masterLayout.layout.setView("#api-navbar", app.apiBar);
+ app.navBar.render();
+ app.apiBar.render();
+
+ app.footer.render();
+ });
+
+ FauxtonAPI.masterLayout.navBar = app.navBar;
+ FauxtonAPI.masterLayout.apiBar = app.apiBar;
+
+ FauxtonAPI.RouteObject.on('beforeFullRender', function (routeObject) {
+ $('#primary-navbar li').removeClass('active');
+
+ if (routeObject.selectedHeader) {
+ app.selectedHeader = routeObject.selectedHeader;
+ $('#primary-navbar li[data-nav-name="' + routeObject.selectedHeader + '"]').addClass('active');
+ }
+ });
+
+ FauxtonAPI.RouteObject.on('beforeEstablish', function (routeObject) {
+ FauxtonAPI.masterLayout.clearBreadcrumbs();
+ var crumbs = routeObject.get('crumbs');
+
+ if (crumbs.length) {
+ FauxtonAPI.masterLayout.setBreadcrumbs(new Fauxton.Breadcrumbs({
+ crumbs: crumbs
+ }));
+ }
+ });
+ };
Fauxton.Breadcrumbs = Backbone.View.extend({
template: "templates/fauxton/breadcrumbs",
@@ -36,7 +85,7 @@ function(FauxtonAPI, resizeColumns) {
Fauxton.VersionInfo = Backbone.Model.extend({
url: function () {
- return FauxtonAPI.host;
+ return app.host;
}
});
@@ -73,10 +122,12 @@ function(FauxtonAPI, resizeColumns) {
footerNavLinks: [],
initialize: function () {
+ _.bindAll(this);
//resizeAnimation
this.resizeColumns = new resizeColumns({});
this.resizeColumns.onResizeHandler();
-
+
+ FauxtonAPI.extensions.on('add:navbar:addHeaderLink', this.addLink);
},
serialize: function() {
@@ -102,6 +153,8 @@ function(FauxtonAPI, resizeColumns) {
} else {
this.navLinks.push(link);
}
+
+ //this.render();
},
removeLink: function (removeLink) {
@@ -127,7 +180,6 @@ function(FauxtonAPI, resizeColumns) {
},
afterRender: function(){
-
$('#primary-navbar li[data-nav-name="' + app.selectedHeader + '"]').addClass('active');
var menuOpen = true;
@@ -146,13 +198,14 @@ function(FauxtonAPI, resizeColumns) {
menuOpen = $selectorList.hasClass('closeMenu');
this.resizeColumns.onResizeHandler();
}
-
+
+ var that = this;
$('#primary-navbar').on("click", ".nav a", function(){
if (!($selectorList.hasClass('closeMenu'))){
setTimeout(
function(){
$selectorList.addClass('closeMenu');
- this.resizeColumns.onResizeHandler();
+ that.resizeColumns.onResizeHandler();
},3000);
}
@@ -268,6 +321,5 @@ function(FauxtonAPI, resizeColumns) {
}
});
-
return Fauxton;
});
http://git-wip-us.apache.org/repos/asf/couchdb/blob/339329f0/src/fauxton/app/addons/fauxton/layout.js
----------------------------------------------------------------------
diff --git a/src/fauxton/app/addons/fauxton/layout.js b/src/fauxton/app/addons/fauxton/layout.js
index 1422241..3810c84 100644
--- a/src/fauxton/app/addons/fauxton/layout.js
+++ b/src/fauxton/app/addons/fauxton/layout.js
@@ -20,25 +20,12 @@ function(Backbone) {
// navBar -> the top navigation bar
// dashboardContent -> Main display view
// breadcrumbs -> Breadcrumbs navigation section
- var Layout = function (navBar, apiBar) {
- this.navBar = navBar;
- this.apiBar = apiBar;
-
+ var Layout = function () {
this.layout = new Backbone.Layout({
template: "templates/layouts/with_sidebar",
-
- views: {
- "#primary-navbar": this.navBar,
- "#api-navbar": this.apiBar
- },
- afterRender: function(){
-
- }
});
this.layoutViews = {};
- //this.hooks = {};
-
this.el = this.layout.el;
};
http://git-wip-us.apache.org/repos/asf/couchdb/blob/339329f0/src/fauxton/app/addons/fauxton/resizeColumns.js
----------------------------------------------------------------------
diff --git a/src/fauxton/app/addons/fauxton/resizeColumns.js b/src/fauxton/app/addons/fauxton/resizeColumns.js
new file mode 100644
index 0000000..abfcd2f
--- /dev/null
+++ b/src/fauxton/app/addons/fauxton/resizeColumns.js
@@ -0,0 +1,87 @@
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+
+
+// This file creates a set of helper functions that will be loaded for all html
+// templates. These functions should be self contained and not rely on any
+// external dependencies as they are loaded prior to the application. We may
+// want to change this later, but for now this should be thought of as a
+// "purely functional" helper system.
+
+define([
+ "api"
+],
+
+function(FauxtonAPI) {
+
+ var Resize = function(options){
+ this.options = options;
+ this.options.selectorElements = options.selectorElements || ".window-resizeable";
+ };
+
+ Resize.prototype = {
+ getPrimaryNavWidth: function(){
+ var primaryNavWidth = $('body').hasClass('closeMenu')? 64:224;
+ return primaryNavWidth;
+ },
+ getPanelWidth: function(){
+ var sidebarWidth = $('#sidebar-content').length > 0 ? $('#sidebar-content').width(): 0;
+ return (this.getPrimaryNavWidth() + sidebarWidth);
+ },
+ initialize: function(){
+ // $(window).off('resize');
+ var that = this;
+ //add throttler :)
+ this.lazyLayout = _.debounce(that.onResizeHandler, 300).bind(this);
+ FauxtonAPI.utils.addWindowResize(this.lazyLayout,"animation");
+ FauxtonAPI.utils.initWindowResize();
+ this.onResizeHandler();
+ },
+ updateOptions:function(options){
+ this.options = {};
+ this.options = options;
+ this.options.selectorElements = options.selectorElements || ".window-resizeable";
+ },
+ turnOff:function(){
+ FauxtonAPI.utils.removeWindowResize("animation");
+ },
+ cleanupCallback: function(){
+ this.callback = null;
+ },
+ onResizeHandler: function (){
+ //if there is an override, do that instead
+ if (this.options.onResizeHandler){
+ this.options.onResizeHandler();
+ } else {
+ var combinedWidth = window.innerWidth - this.getPanelWidth(),
+ smallWidthConstraint = ($('#sidebar-content').length > 0)? 470:800,
+ panelWidth;
+
+ if( combinedWidth > smallWidthConstraint && combinedWidth < 1400){
+ panelWidth = window.innerWidth - this.getPanelWidth();
+ } else if (combinedWidth < smallWidthConstraint){
+ panelWidth = smallWidthConstraint;
+ } else if(combinedWidth > 1400){
+ panelWidth = 1400;
+ }
+
+ $(this.options.selectorElements).innerWidth(panelWidth);
+ }
+ //if there is a callback, run that
+ if(this.options.callback) {
+ this.options.callback();
+ }
+ }
+ };
+
+ return Resize;
+});
http://git-wip-us.apache.org/repos/asf/couchdb/blob/339329f0/src/fauxton/app/addons/fauxton/resizeCoumns.js
----------------------------------------------------------------------
diff --git a/src/fauxton/app/addons/fauxton/resizeCoumns.js b/src/fauxton/app/addons/fauxton/resizeCoumns.js
deleted file mode 100644
index bb50767..0000000
--- a/src/fauxton/app/addons/fauxton/resizeCoumns.js
+++ /dev/null
@@ -1,87 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
-// This file creates a set of helper functions that will be loaded for all html
-// templates. These functions should be self contained and not rely on any
-// external dependencies as they are loaded prior to the application. We may
-// want to change this later, but for now this should be thought of as a
-// "purely functional" helper system.
-
-define([
- "utils"
-],
-
-function(utils) {
-
- var Resize = function(options){
- this.options = options;
- this.options.selectorElements = options.selectorElements || ".window-resizeable";
- };
-
- Resize.prototype = {
- getPrimaryNavWidth: function(){
- var primaryNavWidth = $('body').hasClass('closeMenu')? 64:224;
- return primaryNavWidth;
- },
- getPanelWidth: function(){
- var sidebarWidth = $('#sidebar-content').length > 0 ? $('#sidebar-content').width(): 0;
- return (this.getPrimaryNavWidth() + sidebarWidth);
- },
- initialize: function(){
- // $(window).off('resize');
- var that = this;
- //add throttler :)
- this.lazyLayout = _.debounce(that.onResizeHandler, 300).bind(this);
- utils.addWindowResize(this.lazyLayout,"animation");
- utils.initWindowResize();
- this.onResizeHandler();
- },
- updateOptions:function(options){
- this.options = {};
- this.options = options;
- this.options.selectorElements = options.selectorElements || ".window-resizeable";
- },
- turnOff:function(){
- utils.removeWindowResize("animation");
- },
- cleanupCallback: function(){
- this.callback = null;
- },
- onResizeHandler: function (){
- //if there is an override, do that instead
- if (this.options.onResizeHandler){
- this.options.onResizeHandler();
- } else {
- var combinedWidth = window.innerWidth - this.getPanelWidth(),
- smallWidthConstraint = ($('#sidebar-content').length > 0)? 470:800,
- panelWidth;
-
- if( combinedWidth > smallWidthConstraint && combinedWidth < 1400){
- panelWidth = window.innerWidth - this.getPanelWidth();
- } else if (combinedWidth < smallWidthConstraint){
- panelWidth = smallWidthConstraint;
- } else if(combinedWidth > 1400){
- panelWidth = 1400;
- }
-
- $(this.options.selectorElements).innerWidth(panelWidth);
- }
- //if there is a callback, run that
- if(this.options.callback) {
- this.options.callback();
- }
- }
- };
-
- return Resize;
-});
http://git-wip-us.apache.org/repos/asf/couchdb/blob/339329f0/src/fauxton/app/app.js
----------------------------------------------------------------------
diff --git a/src/fauxton/app/app.js b/src/fauxton/app/app.js
index 3b25be8..23a72c7 100644
--- a/src/fauxton/app/app.js
+++ b/src/fauxton/app/app.js
@@ -21,90 +21,33 @@ define([
"bootstrap",
"helpers",
- "utils",
+ "core/utils",
// Modules
- "resizeColumns",
"core/api",
- "addons/fauxton/base",
- // Plugins.
+ "addons/Fauxton/layout",
+ // Plugins.
"plugins/backbone.layoutmanager",
"plugins/jquery.form"
],
-function(app, $, _, Backbone, Bootstrap, Helpers, Utils, resizeColumns, FauxtonAPI, Fauxton) {
-
- // Make sure we have a console.log
+function(app, $, _, Backbone, Bootstrap, Helpers, Utils, FauxtonAPI, Layout, LoadAddons) {
+ // Make sure we have a console.log
if (typeof console == "undefined") {
console = {
- log: function(){}
+ log: function(){},
+ trace: function(){},
+ debug: function(){}
};
}
// Provide a global location to place configuration settings and module
// creation also mix in Backbone.Events
- _.extend(app, Backbone.Events, {
+ _.extend(app, {
utils: Utils,
-
- // Thanks to: http://stackoverflow.com/a/2880929
- getParams: function(queryString) {
- if (queryString) {
- // I think this could be combined into one if
- if (queryString.substring(0,1) === "?") {
- queryString = queryString.substring(1);
- } else if (queryString.indexOf('?') > -1) {
- queryString = queryString.split('?')[1];
- }
- }
- var hash = window.location.hash.split('?')[1];
- queryString = queryString || hash || window.location.search.substring(1);
- var match,
- urlParams = {},
- pl = /\+/g, // Regex for replacing addition symbol with a space
- search = /([^&=]+)=?([^&]*)/g,
- decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
- query = queryString;
-
- if (queryString) {
- while ((match = search.exec(query))) {
- urlParams[decode(match[1])] = decode(match[2]);
- }
- }
-
- return urlParams;
- }
-
+ getParams: FauxtonAPI.utils.getParams
});
- //MOVE THIS ELSEWHERE
- app.footer = new Fauxton.Footer({el: "#footer-content"});
- // TODO: move this to a proper Fauxton.View
- $.when.apply(null, app.footer.establish()).done(function() {
- app.footer.render();
- });
- app.navBar = new Fauxton.NavBar();
- app.apiBar = new Fauxton.ApiBar();
- // Define your master router on the application namespace and trigger all
- // navigation from this instance.
- app.router = new FauxtonAPI.Router();
- FauxtonAPI.config({
- router: app.router,
- masterLayout: new Layout(app.navBar, app.apiBar),
- addNotification: function (options) {
- options = _.extend({
- msg: "Notification Event Triggered!",
- type: "info",
- selector: "#global-notifications"
- }, options);
-
- var view = new Fauxton.Notification(options);
- return view.renderNotification();
- }
- });
- // Trigger the initial route and enable HTML5 History API support, set the
- // root folder to '/' by default. Change in app.js.
- Backbone.history.start({ pushState: false, root: app.root });
-
// Localize or create a new JavaScript Template object.
var JST = window.JST = window.JST || {};
@@ -141,6 +84,20 @@ function(app, $, _, Backbone, Bootstrap, Helpers, Utils, resizeColumns, FauxtonA
}
});
+ // Define your master router on the application namespace and trigger all
+ // navigation from this instance.
+ FauxtonAPI.config({
+ el: "#app-container",
+ masterLayout: new Layout(),
+
+ addHeaderLink: function(link) {
+ FauxtonAPI.registerExtension('navbar:addHeaderLink', link);
+ },
+
+ removeHeaderLink: function(link) {
+ // TODO add remove to extensions
+ }
+ });
return app;
});
http://git-wip-us.apache.org/repos/asf/couchdb/blob/339329f0/src/fauxton/app/core/api.js
----------------------------------------------------------------------
diff --git a/src/fauxton/app/core/api.js b/src/fauxton/app/core/api.js
index 5f5cbf8..81e9aa4 100644
--- a/src/fauxton/app/core/api.js
+++ b/src/fauxton/app/core/api.js
@@ -12,11 +12,11 @@
define([
"core/resources",
- // Modules
+ "core/utils"
],
-function(FauxtonAPI, Fauxton) {
-
+function(FauxtonAPI, utils) {
+ FauxtonAPI.utils = utils;
FauxtonAPI.navigate = function(url, _opts) {
var options = _.extend({trigger: true}, _opts );
FauxtonAPI.router.navigate(url,options);
@@ -30,14 +30,6 @@ function(FauxtonAPI, Fauxton) {
FauxtonAPI.router.removeBeforeUnload.apply(FauxtonAPI.router, arguments);
};
- FauxtonAPI.addHeaderLink = function(link) {
- FauxtonAPI.masterLayout.navBar.addLink(link);
- };
-
- FauxtonAPI.removeHeaderLink = function(link) {
- FauxtonAPI.masterLayout.navBar.removeLink(link);
- };
-
FauxtonAPI.addRoute = function(route) {
FauxtonAPI.router.route(route.route, route.name, route.callback);
};
@@ -83,7 +75,7 @@ function(FauxtonAPI, Fauxton) {
this.route(route, route.toString(), function() {
var args = Array.prototype.slice.call(arguments),
roles = RouteObject.prototype.getRouteRoles(route),
- authPromise = app.auth.checkAccess(roles);
+ authPromise = FauxtonAPI.auth.checkAccess(roles);
authPromise.then(function () {
if (!that.activeRouteObject || !that.activeRouteObject.hasRoute(route)) {
@@ -104,8 +96,8 @@ function(FauxtonAPI, Fauxton) {
}, this);
},
- setModuleRoutes: function() {
- _.each(LoadAddons.addons, function(module) {
+ setModuleRoutes: function(addons) {
+ _.each(addons, function(module) {
if (module){
module.initialize();
// This is pure routes the addon provides
@@ -116,14 +108,14 @@ function(FauxtonAPI, Fauxton) {
}, this);
},
- initialize: function() {
- //TODO: It would be nice to handle this with a router
- this.auth = app.auth = FauxtonAPI.auth;
+ initialize: function(addons) {
+ this.addons = addons;
+ this.auth = FauxtonAPI.auth;
// NOTE: This must be below creation of the layout
// FauxtonAPI header links and others depend on existence of the layout
- this.setModuleRoutes();
+ this.setModuleRoutes(addons);
- $("#app-container").html(FauxtonAPI.masterLayout.el);
+ $(FauxtonAPI.el).html(FauxtonAPI.masterLayout.el);
FauxtonAPI.masterLayout.render();
},
http://git-wip-us.apache.org/repos/asf/couchdb/blob/339329f0/src/fauxton/app/core/base.js
----------------------------------------------------------------------
diff --git a/src/fauxton/app/core/base.js b/src/fauxton/app/core/base.js
index f9bb065..4601386 100644
--- a/src/fauxton/app/core/base.js
+++ b/src/fauxton/app/core/base.js
@@ -109,7 +109,6 @@ function() {
FauxtonAPI.extensions = extensions;
-
return FauxtonAPI;
});
http://git-wip-us.apache.org/repos/asf/couchdb/blob/339329f0/src/fauxton/app/core/resources.js
----------------------------------------------------------------------
diff --git a/src/fauxton/app/core/resources.js b/src/fauxton/app/core/resources.js
index 249d7fc..3a29077 100644
--- a/src/fauxton/app/core/resources.js
+++ b/src/fauxton/app/core/resources.js
@@ -13,10 +13,9 @@
define([
"app",
"core/couchdbSession",
- "addons/fauxton/base",
"backbone"
],
-function(app, FauxtonAPI, Fauxton) {
+function(app, FauxtonAPI) {
// This is not exposed externally as it should not need to be accessed or overridden
var Auth = function (options) {
@@ -139,21 +138,6 @@ function(app, FauxtonAPI, Fauxton) {
if (!this.renderedState) {
masterLayout.setTemplate(this.layout);
triggerBroadcast('beforeFullRender');
- $('#primary-navbar li').removeClass('active');
-
- if (this.selectedHeader) {
- app.selectedHeader = this.selectedHeader;
- $('#primary-navbar li[data-nav-name="' + this.selectedHeader + '"]').addClass('active');
- }
- }
-
- masterLayout.clearBreadcrumbs();
- var crumbs = this.get('crumbs');
-
- if (crumbs.length) {
- masterLayout.setBreadcrumbs(new Fauxton.Breadcrumbs({
- crumbs: crumbs
- }));
}
triggerBroadcast('beforeEstablish');
http://git-wip-us.apache.org/repos/asf/couchdb/blob/339329f0/src/fauxton/app/core/utils.js
----------------------------------------------------------------------
diff --git a/src/fauxton/app/core/utils.js b/src/fauxton/app/core/utils.js
new file mode 100644
index 0000000..44945e8
--- /dev/null
+++ b/src/fauxton/app/core/utils.js
@@ -0,0 +1,94 @@
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+
+
+// This file creates a set of helper functions that will be loaded for all html
+// templates. These functions should be self contained and not rely on any
+// external dependencies as they are loaded prior to the application. We may
+// want to change this later, but for now this should be thought of as a
+// "purely functional" helper system.
+
+
+define([
+ "jquery",
+ "lodash"
+],
+
+function($, _ ) {
+
+ var onWindowResize = {};
+
+ var utils = {
+ // Thanks to: http://stackoverflow.com/a/2880929
+ getParams: function(queryString) {
+ if (queryString) {
+ // I think this could be combined into one if
+ if (queryString.substring(0,1) === "?") {
+ queryString = queryString.substring(1);
+ } else if (queryString.indexOf('?') > -1) {
+ queryString = queryString.split('?')[1];
+ }
+ }
+ var hash = window.location.hash.split('?')[1];
+ queryString = queryString || hash || window.location.search.substring(1);
+ var match,
+ urlParams = {},
+ pl = /\+/g, // Regex for replacing addition symbol with a space
+ search = /([^&=]+)=?([^&]*)/g,
+ decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
+ query = queryString;
+
+ if (queryString) {
+ while ((match = search.exec(query))) {
+ urlParams[decode(match[1])] = decode(match[2]);
+ }
+ }
+
+ return urlParams;
+ },
+
+ addWindowResize: function(fun, key){
+ onWindowResize[key]=fun;
+ // You shouldn't need to call it here. Just define it at startup and each time it will loop
+ // through all the functions in the hash.
+ //app.initWindowResize();
+ },
+
+ removeWindowResize: function(key){
+ delete onWindowResize[key];
+ utils.initWindowResize();
+ },
+
+ initWindowResize: function(){
+ //when calling this it should be overriding what was called previously
+ window.onresize = function(e) {
+ // could do this instead of the above for loop
+ _.each(onWindowResize, function (fn) {
+ fn();
+ });
+ };
+ },
+
+ removeSpecialCharacters: function(name){
+ return name.replace(/[^\w\s]/gi,"");
+ },
+
+ safeURLName: function(name){
+ var testName = name || "";
+ var checkforBad = testName.match(/[\$\-/_,+-]/g);
+ return (checkforBad !== null)?encodeURIComponent(name):name;
+ }
+ };
+
+ return utils;
+});
+
http://git-wip-us.apache.org/repos/asf/couchdb/blob/339329f0/src/fauxton/app/main.js
----------------------------------------------------------------------
diff --git a/src/fauxton/app/main.js b/src/fauxton/app/main.js
index 13b8370..9df15c5 100644
--- a/src/fauxton/app/main.js
+++ b/src/fauxton/app/main.js
@@ -13,9 +13,17 @@
require([
// Application.
"app",
+ "api",
+ "load_addons"
],
-function(app) {
+function(app, FauxtonAPI, LoadAddons) {
+
+ app.addons = LoadAddons.addons;
+ FauxtonAPI.router = app.router = new FauxtonAPI.Router(app.addons);
+ // Trigger the initial route and enable HTML5 History API support, set the
+ // root folder to '/' by default. Change in app.js.
+ Backbone.history.start({ pushState: false, root: app.root });
// All navigation that is relative should be passed through the navigate
// method, to be processed by the router. If the link has a `data-bypass`
http://git-wip-us.apache.org/repos/asf/couchdb/blob/339329f0/src/fauxton/app/router.js
----------------------------------------------------------------------
diff --git a/src/fauxton/app/router.js b/src/fauxton/app/router.js
index 8954227..65aee51 100644
--- a/src/fauxton/app/router.js
+++ b/src/fauxton/app/router.js
@@ -25,9 +25,9 @@ define([
"core/api",
// Modules
- "addons/fauxton/base",
+ //"addons/fauxton/base",
// Layout
- "addons/fauxton/layout",
+ //"addons/fauxton/layout",
"load_addons"
],
http://git-wip-us.apache.org/repos/asf/couchdb/blob/339329f0/src/fauxton/app/utils.js
----------------------------------------------------------------------
diff --git a/src/fauxton/app/utils.js b/src/fauxton/app/utils.js
deleted file mode 100644
index ded7dac..0000000
--- a/src/fauxton/app/utils.js
+++ /dev/null
@@ -1,66 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
-// This file creates a set of helper functions that will be loaded for all html
-// templates. These functions should be self contained and not rely on any
-// external dependencies as they are loaded prior to the application. We may
-// want to change this later, but for now this should be thought of as a
-// "purely functional" helper system.
-
-
-define([
- "jquery",
- "lodash"
-],
-
-function($, _ ) {
-
- var utils = {};
-
- var onWindowResize = {};
-
- utils.addWindowResize = function(fun, key){
- onWindowResize[key]=fun;
- // You shouldn't need to call it here. Just define it at startup and each time it will loop
- // through all the functions in the hash.
- //app.initWindowResize();
- };
-
- utils.removeWindowResize = function(key){
- delete onWindowResize[key];
- utils.initWindowResize();
- };
-
- utils.initWindowResize = function(){
- //when calling this it should be overriding what was called previously
- window.onresize = function(e) {
- // could do this instead of the above for loop
- _.each(onWindowResize, function (fn) {
- fn();
- });
- };
- };
-
- utils.removeSpecialCharacters = function(name){
- return name.replace(/[^\w\s]/gi,"");
- };
-
- utils.safeURLName = function(name){
- var testName = name || "";
- var checkforBad = testName.match(/[\$\-/_,+-]/g);
- return (checkforBad !== null)?encodeURIComponent(name):name;
- };
-
- return utils;
-});
-
http://git-wip-us.apache.org/repos/asf/couchdb/blob/339329f0/src/fauxton/settings.json.default
----------------------------------------------------------------------
diff --git a/src/fauxton/settings.json.default b/src/fauxton/settings.json.default
index cb09eb2..807f6bf 100644
--- a/src/fauxton/settings.json.default
+++ b/src/fauxton/settings.json.default
@@ -3,6 +3,7 @@
{ "name": "databases" },
{ "name": "documents" },
{ "name": "pouchdb" },
+ { "name": "fauxton" },
{ "name": "activetasks" },
{ "name": "config" },
{ "name": "logs" },