okfn/ckan — pull request #115 by domoritz (2012-08-28 19:31:24+00:00)
Title: Fake pull request for "New way of handling previews"

This is a fake pull request to show the proposed changes explained in my email "New way of handling previews".

=======
David had the idea to put the preview for resources and especially recline into an iframe which would avoid problems with interfering css and js. While doing this I noticed that there is a lot of code in application.js that decides how to embed the preview into the page. However, this can also easily be done on the server. I think that it would make sense because this way we only have to load what is really necessary instead of the whole preview js/ css stuff.

Do give you an idea, here is a possible mapping for previews:
- html -> show in an iframe
- sth for recline -> show recline in an iframe that resizes to the right height
- image -> embed directly with a max-height and max-width
- txt -> embed directly or show in an iframe

Notice one problem with embedding text directly! You would have to fetch it before the request can return. However, we could write a small script that does that on the client.

What I did to show what our idea looks like:
- created a new page which only displays the preview
- put an iframe where the preview used to be
- added some code to package.py to get the appropriate resource url
- updated recline to the latest version without further changes to the css or js

The only thing that is not fully working is the embed button. It is not possible to yet to save the recline state object to the embed url.

You can have a look at the changes on https://github.com/domoritz/ckan/commits/2888-datapreview-iframe.
Please keep in mind that the changes are only there to show my idea. But if you like it I can redo it on the demo branch.

Let me know what you think. I've probably missed something important and would be glad to improve the solution.