You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by de...@apache.org on 2013/09/20 16:52:24 UTC
[2/3] git commit: updated refs/heads/master to 8a1118e
Fauxton: warn user if they edit _id
Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/faa65cd5
Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/faa65cd5
Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/faa65cd5
Branch: refs/heads/master
Commit: faa65cd5021bc0a1e855571e9626fec647502cd7
Parents: 446e139
Author: Garren Smith <ga...@gmail.com>
Authored: Thu Sep 19 16:02:02 2013 +0200
Committer: suelockwood <de...@gmail.com>
Committed: Fri Sep 20 10:52:15 2013 -0400
----------------------------------------------------------------------
src/fauxton/Gruntfile.js | 6 +++---
src/fauxton/app/modules/documents/resources.js | 6 ++++++
src/fauxton/app/modules/documents/views.js | 18 +++++++++++++++---
3 files changed, 24 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb/blob/faa65cd5/src/fauxton/Gruntfile.js
----------------------------------------------------------------------
diff --git a/src/fauxton/Gruntfile.js b/src/fauxton/Gruntfile.js
index 29a70ba..f9af371 100644
--- a/src/fauxton/Gruntfile.js
+++ b/src/fauxton/Gruntfile.js
@@ -218,9 +218,9 @@ module.exports = function(grunt) {
port: 8000,
proxy: {
target: {
- host: 'localhost',
- port: 5984,
- https: false
+ host: 'garrensmith.cloudant.com',
+ port: 443,
+ https: true
},
// This sets the Host header in the proxy so that you can use external
// CouchDB instances and not have the Host set to 'localhost'
http://git-wip-us.apache.org/repos/asf/couchdb/blob/faa65cd5/src/fauxton/app/modules/documents/resources.js
----------------------------------------------------------------------
diff --git a/src/fauxton/app/modules/documents/resources.js b/src/fauxton/app/modules/documents/resources.js
index 395d171..de27ab0 100644
--- a/src/fauxton/app/modules/documents/resources.js
+++ b/src/fauxton/app/modules/documents/resources.js
@@ -44,6 +44,12 @@ function(app, FauxtonAPI) {
return this.database ? this.database : this.collection.database;
},
+ validate: function(attrs, options) {
+ if (this.id && this.id !== attrs._id && this.get('_rev') ) {
+ return "Cannot change a documents id.";
+ }
+ },
+
docType: function() {
return this.id.match(/^_design/) ? "design doc" : "doc";
},
http://git-wip-us.apache.org/repos/asf/couchdb/blob/faa65cd5/src/fauxton/app/modules/documents/views.js
----------------------------------------------------------------------
diff --git a/src/fauxton/app/modules/documents/views.js b/src/fauxton/app/modules/documents/views.js
index 09ef2b5..de19386 100644
--- a/src/fauxton/app/modules/documents/views.js
+++ b/src/fauxton/app/modules/documents/views.js
@@ -633,6 +633,7 @@ function(app, FauxtonAPI, Components, Documents, pouchdb, Codemirror, JSHint, re
event.preventDefault();
this.duplicateModal.showModal();
},
+
updateValues: function() {
var notification;
if (this.model.changedAttributes()) {
@@ -676,6 +677,7 @@ function(app, FauxtonAPI, Components, Documents, pouchdb, Codemirror, JSHint, re
this.getDocFromEditor();
notification = FauxtonAPI.addNotification({msg: "Saving document."});
+ console.log('save',this.model);
this.model.save().then(function () {
FauxtonAPI.navigate('/database/' + that.database.id + '/' + that.model.id);
@@ -684,9 +686,17 @@ function(app, FauxtonAPI, Components, Documents, pouchdb, Codemirror, JSHint, re
notification = FauxtonAPI.addNotification({
msg: "Save failed: " + responseText,
type: "error",
- clear: true
+ clear: true,
+ selector: "#doc .errors-container"
});
});
+ } else if(this.model.validationError && this.model.validationError === 'Cannot change a documents id.') {
+ notification = FauxtonAPI.addNotification({
+ msg: "Cannot save: " + 'Cannot change a documents _id, try Duplicate doc instead!',
+ type: "error",
+ selector: "#doc .errors-container"
+ });
+ delete this.model.validationError;
} else {
notification = FauxtonAPI.addNotification({
msg: "Please fix the JSON errors and try again.",
@@ -702,8 +712,10 @@ function(app, FauxtonAPI, Components, Documents, pouchdb, Codemirror, JSHint, re
}
json = JSON.parse(this.editor.getValue());
- this.model.clear({silent:true});
- this.model.set(json);
+ this.model.set(json, {validate: true});
+ if (this.model.validationError) {
+ return false;
+ }
return this.model;
},