##// END OF EJS Templates
remove notebook read-only view...
remove notebook read-only view it is largely broken, and had problematic security issues.

File last commit:

r11551:a4fefd02
r11644:961067ee
Show More
savewidget.js
156 lines | 5.2 KiB | application/javascript | JavascriptLexer
Brian E. Granger
More review changes....
r4609 //----------------------------------------------------------------------------
// Copyright (C) 2008-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.
//----------------------------------------------------------------------------
Brian E. Granger
Minors fixes and initial work on save widget....
r4369
//============================================================================
Brian E. Granger
More review changes....
r4609 // SaveWidget
Brian E. Granger
Minors fixes and initial work on save widget....
r4369 //============================================================================
var IPython = (function (IPython) {
var utils = IPython.utils;
var SaveWidget = function (selector) {
Brian E. Granger
Work on save widget, kernel status widget and notebook section.
r4372 this.selector = selector;
if (this.selector !== undefined) {
this.element = $(selector);
this.style();
Brian E. Granger
Minors fixes and initial work on save widget....
r4369 this.bind_events();
}
};
Brian E. Granger
Work on save widget, kernel status widget and notebook section.
r4372 SaveWidget.prototype.style = function () {
};
Brian E. Granger
Minors fixes and initial work on save widget....
r4369 SaveWidget.prototype.bind_events = function () {
var that = this;
Brian Granger
Improved notebook renaming....
r5859 this.element.find('span#notebook_name').click(function () {
that.rename_notebook();
Brian E. Granger
Work on save widget, kernel status widget and notebook section.
r4372 });
Brian Granger
Improved notebook renaming....
r5859 this.element.find('span#notebook_name').hover(function () {
$(this).addClass("ui-state-hover");
}, function () {
$(this).removeClass("ui-state-hover");
Brian E. Granger
Save button becomes Rename when the notebook name changes.
r4630 });
Brian Granger
Major refactoring of saving, notification....
r6047 $([IPython.events]).on('notebook_loaded.Notebook', function () {
that.update_notebook_name();
that.update_document_title();
});
$([IPython.events]).on('notebook_saved.Notebook', function () {
that.update_notebook_name();
that.update_document_title();
});
$([IPython.events]).on('notebook_save_failed.Notebook', function () {
MinRK
use dirty event to set autosaved/unsaved changes...
r10829 that.set_save_status('Autosave Failed!');
Brian Granger
Major refactoring of saving, notification....
r6047 });
MinRK
add checkpoint status to notebook header...
r10516 $([IPython.events]).on('checkpoints_listed.Notebook', function (event, data) {
MinRK
restore checkpoints in a sub-list...
r10520 that.set_last_checkpoint(data[0]);
MinRK
add checkpoint status to notebook header...
r10516 });
$([IPython.events]).on('checkpoint_created.Notebook', function (event, data) {
that.set_last_checkpoint(data);
});
MinRK
use dirty event to set autosaved/unsaved changes...
r10829 $([IPython.events]).on('set_dirty.Notebook', function (event, data) {
that.set_autosaved(data.value);
});
Felix Werner
Update document title and last_saved_name only after a successful save.
r5006 };
Brian Granger
Improved notebook renaming....
r5859 SaveWidget.prototype.rename_notebook = function () {
var that = this;
MinRK
add break between prompt and input in Rename dialog
r10956 var dialog = $('<div/>').append(
$("<p/>").addClass("rename-message")
.html('Enter a new notebook name:')
).append(
$("<br/>")
).append(
Brian Granger
More minor theme/styling changes.
r5871 $('<input/>').attr('type','text').attr('size','25')
MinRK
bootstrap dialogs
r10895 .val(IPython.notebook.get_notebook_name())
Brian Granger
Improved notebook renaming....
r5859 );
MinRK
bootstrap dialogs
r10895 IPython.dialog.modal({
Brian Granger
Improved notebook renaming....
r5859 title: "Rename Notebook",
MinRK
bootstrap dialogs
r10895 body: dialog,
Brian Granger
Improved notebook renaming....
r5859 buttons : {
MinRK
bootstrap dialogs
r10895 "Cancel": {},
"OK": {
class: "btn-primary",
click: function () {
var new_name = $(this).find('input').val();
Brian Granger
Major refactoring of saving, notification....
r6047 if (!IPython.notebook.test_notebook_name(new_name)) {
MinRK
bootstrap dialogs
r10895 $(this).find('.rename-message').html(
Brian Granger
Disallow empty notebook names.
r5955 "Invalid notebook name. Notebook names must "+
"have 1 or more characters and can contain any characters " +
Brian Granger
Make : invalid in filenames in the Notebook JS code.
r7229 "except :/\\. Please enter a new notebook name:"
Brian Granger
Improved notebook renaming....
r5859 );
Rick Lupton
Fix rename notebook - show error with invalid name...
r11551 return false;
Brian Granger
Improved notebook renaming....
r5859 } else {
Brian Granger
Major refactoring of saving, notification....
r6047 IPython.notebook.set_notebook_name(new_name);
MinRK
rename shouldn't create a checkpoint
r10519 IPython.notebook.save_notebook();
Brian Granger
Improved notebook renaming....
r5859 }
MinRK
bootstrap dialogs
r10895 }}
Brian Granger
Improved notebook renaming....
r5859 },
Brian Granger
ENTER submits the rename notebook dialog.
r7246 open : function (event, ui) {
var that = $(this);
// Upon ENTER, click the OK button.
Brian Granger
Making the input text area watch for `ENTER` in nb renames.
r7247 that.find('input[type="text"]').keydown(function (event, ui) {
Brian Granger
Using IPython.utils.keycodes in the nb rename dialog.
r7248 if (event.which === utils.keycodes.ENTER) {
MinRK
bootstrap dialogs
r10895 that.find('.btn-primary').first().click();
Brian Granger
ENTER submits the rename notebook dialog.
r7246 }
});
MinRK
bootstrap dialogs
r10895 that.find('input[type="text"]').focus();
Brian Granger
Improved notebook renaming....
r5859 }
});
}
Brian E. Granger
Adding keyboard shortcuts.
r4645
Brian Granger
Major refactoring of saving, notification....
r6047 SaveWidget.prototype.update_notebook_name = function () {
var nbname = IPython.notebook.get_notebook_name();
Brian Granger
Improved notebook renaming....
r5859 this.element.find('span#notebook_name').html(nbname);
Stefan van der Walt
Clean up javascript based on js2-mode feedback.
r5479 };
Brian E. Granger
Work on save widget, kernel status widget and notebook section.
r4372
Brian E. Granger
Minors fixes and initial work on save widget....
r4369
Brian Granger
Major refactoring of saving, notification....
r6047 SaveWidget.prototype.update_document_title = function () {
var nbname = IPython.notebook.get_notebook_name();
Brian E. Granger
Misc changes to the notebook....
r5104 document.title = nbname;
Brian E. Granger
Browser window title follows the name of the notebook.
r4549 };
Brian E. Granger
Massive work on the notebook document format....
r4484
Brian Granger
Major refactoring of saving, notification....
r6047 SaveWidget.prototype.set_save_status = function (msg) {
MinRK
add checkpoint status to notebook header...
r10516 this.element.find('span#autosave_status').html(msg);
}
SaveWidget.prototype.set_checkpoint_status = function (msg) {
this.element.find('span#checkpoint_status').html(msg);
Brian Granger
Major refactoring of saving, notification....
r6047 }
Brian E. Granger
Massive work on the notebook document format....
r4484
MinRK
add checkpoint status to notebook header...
r10516 SaveWidget.prototype.set_last_checkpoint = function (checkpoint) {
MinRK
fix set_last_checkpoint when no checkpoint...
r10532 if (!checkpoint) {
this.set_checkpoint_status("");
MinRK
add missing return...
r10547 return;
MinRK
fix set_last_checkpoint when no checkpoint...
r10532 }
MinRK
add checkpoint status to notebook header...
r10516 var d = new Date(checkpoint.last_modified);
this.set_checkpoint_status(
"Last Checkpoint: " + d.format('mmm dd HH:MM')
);
}
Brian E. Granger
Massive work on the notebook document format....
r4484
MinRK
use dirty event to set autosaved/unsaved changes...
r10829 SaveWidget.prototype.set_autosaved = function (dirty) {
if (dirty) {
this.set_save_status("(unsaved changes)");
} else {
this.set_save_status("(autosaved)");
}
Brian E. Granger
Save button becomes Rename when the notebook name changes.
r4630 };
Brian E. Granger
Minors fixes and initial work on save widget....
r4369 IPython.SaveWidget = SaveWidget;
return IPython;
}(IPython));