diff --git a/IPython/html/static/texteditor/js/editor.js b/IPython/html/static/texteditor/js/editor.js
index 8f5d8e8..a373a41 100644
--- a/IPython/html/static/texteditor/js/editor.js
+++ b/IPython/html/static/texteditor/js/editor.js
@@ -21,56 +21,46 @@ function($,
this.codemirror = CodeMirror($(this.selector)[0]);
- this.save_enabled = true;
- };
-
- // TODO: Remove this once the contents API is refactored to just use paths
- Editor.prototype._split_path = function() {
- var ix = this.file_path.lastIndexOf("/");
- if (ix === -1) {
- return ['', this.file_path];
- } else {
- return [
- this.file_path.substring(0, ix),
- this.file_path.substring(ix+1)
- ];
- }
+ this.save_enabled = false;
};
Editor.prototype.load = function() {
- var split_path = this._split_path();
+ var that = this;
var cm = this.codemirror;
- this.contents.load(split_path[0], split_path[1], {
- success: function(model) {
- if (model.type === "file" && model.format === "text") {
- cm.setValue(model.content);
-
- // Find and load the highlighting mode
- var modeinfo = CodeMirror.findModeByMIME(model.mimetype);
- if (modeinfo) {
- utils.requireCodeMirrorMode(modeinfo.mode, function() {
- cm.setOption('mode', modeinfo.mode);
- });
- }
- } else {
- this.codemirror.setValue("Error! Not a text file. Saving disabled.");
- this.save_enabled = false;
+ this.contents.get(this.file_path, {type: 'file', format: 'text'})
+ .then(function(model) {
+ cm.setValue(model.content);
+
+ // Find and load the highlighting mode
+ var modeinfo = CodeMirror.findModeByMIME(model.mimetype);
+ if (modeinfo) {
+ utils.requireCodeMirrorMode(modeinfo.mode, function() {
+ cm.setOption('mode', modeinfo.mode);
+ });
}
+ that.save_enabled = true;
+ },
+ function(error) {
+ cm.setValue("Error! " + error.message +
+ "\nSaving disabled.");
+ that.save_enabled = false;
}
- });
+ );
};
Editor.prototype.save = function() {
- var split_path = this._split_path();
+ if (!this.save_enabled) {
+ console.log("Not saving, save disabled");
+ return;
+ }
var model = {
- path: split_path[0],
- name: split_path[1],
+ path: this.file_path,
type: 'file',
format: 'text',
content: this.codemirror.getValue(),
};
var that = this;
- this.contents.save(split_path[0], split_path[1], model, {
+ this.contents.save(this.file_path, model, {
success: function() {
that.events.trigger("save_succeeded.TextEditor");
}
diff --git a/IPython/html/texteditor/handlers.py b/IPython/html/texteditor/handlers.py
index 199c545..a202685 100644
--- a/IPython/html/texteditor/handlers.py
+++ b/IPython/html/texteditor/handlers.py
@@ -5,23 +5,22 @@
# Distributed under the terms of the Modified BSD License.
from tornado import web
-from ..base.handlers import IPythonHandler, file_path_regex
+from ..base.handlers import IPythonHandler, path_regex
from ..utils import url_escape
class EditorHandler(IPythonHandler):
- """Render the terminal interface."""
+ """Render the text editor interface."""
@web.authenticated
- def get(self, path, name):
+ def get(self, path):
path = path.strip('/')
- if not self.contents_manager.file_exists(name, path):
- raise web.HTTPError(404, u'File does not exist: %s/%s' % (path, name))
+ if not self.contents_manager.file_exists(path):
+ raise web.HTTPError(404, u'File does not exist: %s' % path)
- file_path = url_escape(path) + "/" + url_escape(name)
self.write(self.render_template('texteditor.html',
- file_path=file_path,
+ file_path=url_escape(path),
)
)
default_handlers = [
- (r"/texteditor%s" % file_path_regex, EditorHandler),
+ (r"/texteditor%s" % path_regex, EditorHandler),
]
\ No newline at end of file