From 65491b2704a2e3894e4803689313e2d90174bc47 Mon Sep 17 00:00:00 2001 From: Christopher Lenz Date: Mon, 20 Jul 2009 21:31:30 +0000 Subject: Make the view URL in Futon consistent with the URL for views in the HTTP interface (and thereby also avoid a redirect). Thanks to Volker Mische for the suggestion and patch. Closes COUCHDB-408. git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@796027 13f79535-47bb-0310-9956-ffa450edef68 --- share/www/database.html | 7 +------ share/www/script/futon.browse.js | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 14 deletions(-) (limited to 'share') diff --git a/share/www/database.html b/share/www/database.html index 5a722e1a..1abed3db 100644 --- a/share/www/database.html +++ b/share/www/database.html @@ -40,11 +40,6 @@ specific language governing permissions and limitations under the License. if (page.redirecting) return; $("h1 strong").text(page.db.name); var viewPath = page.viewName || "_all_docs"; - if (/^_design\//.test(viewPath)) { - var parts = viewPath.split("/"); - parts.splice(2, 0, "_view"); - viewPath = parts.join("/"); - } if (viewPath != "_temp_view" && viewPath != "_design_docs") { $("h1 a.raw").attr("href", "/" + encodeURIComponent(page.db.name) + "/" + viewPath); @@ -95,7 +90,7 @@ specific language governing permissions and limitations under the License. var viewName = $(this).val(); if (!viewName) $.cookies.remove(page.db.name + ".view"); location.href = "?" + encodeURIComponent(page.db.name) + - (viewName ? "/" + encodeURIComponent(viewName) : ""); + (viewName ? "/" + viewName : ""); }); $("#documents thead th.key").click(function() { $(this).toggleClass("desc"); diff --git a/share/www/script/futon.browse.js b/share/www/script/futon.browse.js index 1b91e27d..84b3474e 100644 --- a/share/www/script/futon.browse.js +++ b/share/www/script/futon.browse.js @@ -104,7 +104,7 @@ if (viewName) { this.redirecting = true; location.href = "database.html?" + encodeURIComponent(dbName) + - "/" + encodeDocId(viewName); + "/" + viewName; } } var db = $.couch.db(dbName); @@ -258,9 +258,10 @@ .attr("label", doc._id.substr(8)); for (var name in doc.views) { var option = $(document.createElement("option")) - .attr("value", doc._id + "/" + name).text(name) + .attr("value", encodeURIComponent(doc._id) + "/_view/" + + encodeURIComponent(name)).text(name) .appendTo(optGroup); - if (doc._id + "/" + name == viewName) { + if (doc._id + "/_view/" + name == viewName) { option[0].selected = true; } } @@ -283,7 +284,7 @@ if (!page.storedViewCode) { var viewNameParts = viewName.split("/"); var designDocId = viewNameParts[1]; - var localViewName = viewNameParts[2]; + var localViewName = viewNameParts[3]; db.openDoc(["_design", designDocId].join("/"), { error: function(status, error, reason) { if (status == 404) { @@ -332,7 +333,7 @@ if (viewName && /^_design/.test(viewName)) { var viewNameParts = viewName.split("/"); var designDocId = viewNameParts[1]; - var localViewName = viewNameParts[2]; + var localViewName = viewNameParts[3]; } else { var designDocId = "", localViewName = ""; } @@ -407,7 +408,7 @@ page.isDirty = false; location.href = "database.html?" + encodeURIComponent(dbName) + "/" + encodeDocId(doc._id) + - "/" + encodeURIComponent(data.name); + "/_view/" + encodeURIComponent(data.name); } }); } @@ -428,7 +429,7 @@ this.saveViewChanges = function() { var viewNameParts = viewName.split("/"); var designDocId = viewNameParts[1]; - var localViewName = viewNameParts[2]; + var localViewName = viewNameParts[3]; db.openDoc(["_design", designDocId].join("/"), { success: function(doc) { var numViews = 0; @@ -635,7 +636,8 @@ if (page.isDirty) { db.query(currentMapCode, currentReduceCode, page.viewLanguage, options); } else { - db.view(viewName.substr(8), options); + var viewParts = viewName.split('/'); + db.view(viewParts[1] + "/" + viewParts[3], options); } } } -- cgit v1.2.3