Notebook todo ============= * Style the login page consistently with the rest of the site. * Style the "Log Out" and username links in the header. * Do a review of the header design and decide what to do about save widget moving to the Notebook section of the L panel. * Show last saved time next to save widget. * Make the header logo a link to "/". * Add a better divider line between the header and the content area. - Fix spacing on notebook page. * Organize templates to use inheritance and includes. * Implement better restart logic. - Have LocalKernel monitor the hb port and always to restarts. - Have the WebSocket still monitor the hb and notify the user of restarts. * Create unrendered rst cells. * Users should be able to edit the contents of any cell in a global ACE editor. * Add JSON'd metadata to the .py format notebooks. * Implement white space between cells for insert. * Implement a notebook reload button. * Indicate visual difference between html and markdown cell. * Export should save first. * Add ability to merge and split cells. * Add Ctrl-Z for undo delete cell. * Fix horizontal overflow and scrolling of output_area. * Add per cells controls on the R side of each cell. * Users should be able to drag a .py file to a cell and have it imported into that cell. * Add reconnect logic in the javascript kernel. * Add logic for failed ajax requests. With this, investigate returning JSON data to more completely describe the HTTP error codes. * Test web services against hostile attacks. * Add optional html sanitizing. * Add timestamp to cells. ISO8601. IPython.utils.jsonutil.ISO8601. Save as submitted/started/completed/received. See http://webcloud.se/log/JavaScript-and-ISO-8601/ * Try to figure out the issue with jQuery and