Modfies the Contents class to return JavaScript Error objects instead of passing on the return values from $.ajax(). This has two advantages. First, it allows the content manager to parse errors and give more informative messages than the ajax response. Second, it makes the Contents interface more general, since other kinds of backends might generate client-side errors.
Adds the key contentmanager_js_source to webapp_settings that allows for specifying the content manager JavaScript source file. Also adds a NotebookManager subclass, ClientSideNotebookManager, which does minimal logic. This class is used when the JavaScript content manager doesn't use the Python notebook manager, but rather implements that logic client side, as is the case for the Google Drive based content manager.
A sample command line that uses the Google Drive content manager, and the ClientSideNotebookManager, is
ipython notebook --NotebookApp.webapp_settings="{'contentmanager_js_source': 'base/js/drive_contentmanager'}" --NotebookApp.notebook_manager_class="IPython.html.services.notebooks.clientsidenbmanager.ClientSideNotebookManager"
Modifies ContentManager.save_notebook() to use events, so that the Notebook instance can listen for success or failure events. Also moves some logic out of save_notebook()
This is required for e.g. Scala, where the mode is given as
text/x-scala, but the actual implementation is in clike mode.
This wouldn't be an issue, but IPython loads modes lazily, so
you need both mode name and MIME to resolve correct file and
configure CodeMirror.
the use of
XX.prototype = new YY();
Does trigger the constructor of YY without the nead for it. `Object.create`
does go around this limitation and target browser that are relatively Old.
Cf https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create
for more info
It might help to get rid of some logic in constructors that check wether some
options are passed in, that were causing errors on noteboko load. Typically
`if(element){ }` on Abstract `Cell` constructor.
This allow to get info on version of IPython when running remotely.
The about dialog also send a kernel info request and display the banner
which is useful for non-python kernel that don't match IPython version
instead of skipping straight to headers
avoids jQuery's crazy JSONP detection on `=.*??`,
which was triggered because it assumed the contentType was unspecified,
and thus should be guessed based on content.