diff --git a/IPython/html/base/handlers.py b/IPython/html/base/handlers.py index c64ebd7..b78a5eb 100644 --- a/IPython/html/base/handlers.py +++ b/IPython/html/base/handlers.py @@ -136,6 +136,13 @@ class IPythonHandler(AuthenticatedHandler): @property def ws_url(self): return self.settings.get('websocket_url', '') + + @property + def contentmanager_js_source(self): + self.log.debug("Using contentmanager: %s", self.settings.get('contentmanager_js_source', + 'base/js/contentmanager')) + return self.settings.get('contentmanager_js_source', + 'base/js/contentmanager') #--------------------------------------------------------------- # Manager objects @@ -224,7 +231,8 @@ class IPythonHandler(AuthenticatedHandler): logged_in=self.logged_in, login_available=self.login_available, static_url=self.static_url, - sys_info=sys_info + sys_info=sys_info, + contentmanager_js_source=self.contentmanager_js_source, ) def get_json_body(self): diff --git a/IPython/html/services/notebooks/clientsidenbmanager.py b/IPython/html/services/notebooks/clientsidenbmanager.py new file mode 100644 index 0000000..46ff3bb --- /dev/null +++ b/IPython/html/services/notebooks/clientsidenbmanager.py @@ -0,0 +1,43 @@ +"""A notebook manager for when the logic is done client side (in JavaScript).""" + +#----------------------------------------------------------------------------- +# Copyright (C) 2011 The IPython Development Team +# +# Distributed under the terms of the BSD License. The full license is in +# the file COPYING, distributed as part of this software. +#----------------------------------------------------------------------------- + +#----------------------------------------------------------------------------- +# Imports +#----------------------------------------------------------------------------- + +from .nbmanager import NotebookManager + +from fnmatch import fnmatch +import itertools +import os + +from IPython.config.configurable import LoggingConfigurable +from IPython.nbformat import current, sign +from IPython.utils.traitlets import Instance, Unicode, List + +#----------------------------------------------------------------------------- +# Classes +#----------------------------------------------------------------------------- + +class ClientSideNotebookManager(NotebookManager): + # The notebook directory is meaningless since we are not using + # the local filesystem. + notebook_dir = '' + + def path_exists(self, path): + # Always return true, because this check is now done client side. + return True + + def is_hidden(self, path): + # Always return false, because this check is now done client side. + return False + + def notebook_exists(self, name, path=''): + # Always return true, because this check is now done client side. + return True diff --git a/IPython/html/static/notebook/js/main.js b/IPython/html/static/notebook/js/main.js index 8eb84ea..4e5ca5f 100644 --- a/IPython/html/static/notebook/js/main.js +++ b/IPython/html/static/notebook/js/main.js @@ -5,7 +5,7 @@ require([ 'base/js/namespace', 'jquery', 'notebook/js/notebook', - 'base/js/contentmanager', + 'contentmanager', 'base/js/utils', 'base/js/page', 'notebook/js/layoutmanager', diff --git a/IPython/html/static/tree/js/main.js b/IPython/html/static/tree/js/main.js index 3670fea..853eabf 100644 --- a/IPython/html/static/tree/js/main.js +++ b/IPython/html/static/tree/js/main.js @@ -7,7 +7,7 @@ require([ 'base/js/events', 'base/js/page', 'base/js/utils', - 'base/js/contentmanager', + 'contentmanager', 'tree/js/notebooklist', 'tree/js/clusterlist', 'tree/js/sessionlist', diff --git a/IPython/html/templates/page.html b/IPython/html/templates/page.html index b3c67b8..ffad396 100644 --- a/IPython/html/templates/page.html +++ b/IPython/html/templates/page.html @@ -30,6 +30,7 @@ moment: "components/moment/moment", codemirror: 'components/codemirror', termjs: "components/term.js/src/term" + contentmanager: '{{ contentmanager_js_source }}', }, shim: { underscore: {