Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

notebook download implies save #895

Closed
wants to merge 1 commit into from

3 participants

@minrk
Owner

closes #852

Note that this should get some review, as I'm not certain it's the right way to go. This change makes download trigger a save, and the save-success callback triggers the actual download. However, at least on Chrome, the fact that opening the download url is no longer triggered directly by the click action means it can get caught by pop-up blockers.

@fperez
Owner

Yup, in fact ffox also blocks it. So I think we need to find out something else, I don't like to require people to disable their popup blockers... But I have to say, I don't know what a better solution would be.

@minrk
Owner

In that case, I don't think we can force a save on download. We have to just add a note to the tooltip, that Download/print get the most recently saved version.

If we can detect that the document has been edited since last save, then we can do this with a dialog 'Would you like to save changes before downloading?' But I don't think we have a global flag that gets set on any edit.

@fperez
Owner

Do you just want to change the tooltip and close this one? I would like to set a dirty flag on cell edit, but that's a separate job. It would be nice if the UI could reflect that dirty state also (emacs marks the status area with '**', other editors do similar things). But that's a separate request... I'm OK with closing this one and just editing the tooltip.

@ellisonbg
Owner

We do have a dirty flag that detect when a cell is run, moved, deleted. We could look at this flag. But you are right that this flag doesn't currently detect if a cell has been edited but not run. But I agree with Fernando that we can't require pop-up blockers to be disabled. I have run into this issue in numerous places in the notebook already.

@minrk
Owner

I'll close this, and just add a note to the tooltip. Probably not consider that closing the original Issue, though.

@minrk minrk closed this pull request from a commit
@minrk minrk Add tooltip to Download/Print indicating need to save first
A real fix would be to trigger a save on each of thes actions, which would address #852

closes gh-895
bbc4d01
@minrk minrk closed this in bbc4d01
@ellisonbg ellisonbg referenced this pull request from a commit
Commit has since been removed from the repository and is no longer available.
@mattvonrocketstein mattvonrocketstein referenced this pull request from a commit in mattvonrocketstein/ipython
@minrk minrk Add tooltip to Download/Print indicating need to save first
A real fix would be to trigger a save on each of thes actions, which would address #852

closes gh-895
7e95cdc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Oct 18, 2011
  1. @minrk

    notebook download implies save

    minrk authored
    closes #852
This page is out of date. Refresh to see the latest.
Showing with 13 additions and 3 deletions.
  1. +13 −3 IPython/frontend/html/notebook/static/js/panelsection.js
View
16 IPython/frontend/html/notebook/static/js/panelsection.js
@@ -106,9 +106,19 @@ var IPython = (function (IPython) {
});
this.content.find('#download_notebook').click(function () {
var format = that.content.find('#download_format').val();
- var notebook_id = IPython.save_widget.get_notebook_id();
- var url = '/notebooks/' + notebook_id + '?format=' + format;
- window.open(url,'_newtab');
+ // save on download
+ IPython.save_widget.save_notebook();
+ // hook into notebook_saved method to download on success:
+ var old_notebook_saved = IPython.save_widget.notebook_saved;
+ IPython.save_widget.notebook_saved = function() {
+ // restore and call original function:
+ IPython.save_widget.notebook_saved = old_notebook_saved;
+ IPython.save_widget.notebook_saved();
+ // now trigger download
+ var notebook_id = IPython.save_widget.get_notebook_id();
+ var url = '/notebooks/' + notebook_id + '?format=' + format;
+ window.open(url,'_newtab');
+ }
});
};
Something went wrong with that request. Please try again.