+ return false;
+ },
+
+ update: function(message) {
+ if (this.get('state') == 'dirty') {
+ this.set('state', 'updating');
+
+ var payload = {
+ contents: this.get('data')
+ };
+ if (message) {
+ payload.message = message;
+ }
+
+ $.ajax({
+ url: this.serverURL,
+ type: 'put',
+ dataType: 'json',
+ data: payload,
+ success: this.updatingSucceeded.bind(this),
+ error: this.updatingFailed.bind(this)
+ });
+ return true;
+ }
+ return false;
+ },
+
+ updatingSucceeded: function() {
+ if (this.get('state') != 'updating') {
+ alert('erroneous state:', this.get('state'));
+ }
+ this.set('state', 'updated');
+ },
+
+ updatingFailed: function() {
+ if (this.get('state') != 'updating') {
+ alert('erroneous state:', this.get('state'));
+ }
+ this.set('state', 'dirty');