diff options
| author | hukl <contact@smyck.org> | 2009-05-07 22:51:51 +0200 |
|---|---|---|
| committer | hukl <contact@smyck.org> | 2009-05-07 22:51:51 +0200 |
| commit | 8235376ead33383a0009ce8993ab7a3502c38bb1 (patch) | |
| tree | 7d1c9a634324f66b248eea2c116acfc38bae02a3 /app/views/layouts/admin.html.erb | |
| parent | 744123da8eb36014f9acefc5f4a970d15d32924b (diff) | |
autosave only when something has actually changed. this was hard. i don't like javascript
Diffstat (limited to 'app/views/layouts/admin.html.erb')
| -rw-r--r-- | app/views/layouts/admin.html.erb | 68 |
1 files changed, 55 insertions, 13 deletions
diff --git a/app/views/layouts/admin.html.erb b/app/views/layouts/admin.html.erb index 1fb9c2b..4e0347d 100644 --- a/app/views/layouts/admin.html.erb +++ b/app/views/layouts/admin.html.erb | |||
| @@ -12,19 +12,61 @@ | |||
| 12 | <%= javascript_include_tag 'admin_interface.js' %> | 12 | <%= javascript_include_tag 'admin_interface.js' %> |
| 13 | 13 | ||
| 14 | <script type="text/javascript"> | 14 | <script type="text/javascript"> |
| 15 | tinyMCE.init({ | 15 | tinyMCE.init({ |
| 16 | theme: "advanced", | 16 | theme: "advanced", |
| 17 | mode : "specific_textareas", | 17 | mode : "specific_textareas", |
| 18 | editor_selector : "with_editor", | 18 | editor_selector : "with_editor", |
| 19 | theme_advanced_toolbar_location : "top", | 19 | theme_advanced_toolbar_location : "top", |
| 20 | theme_advanced_toolbar_align : "left", | 20 | theme_advanced_toolbar_align : "left", |
| 21 | theme_advanced_buttons1 : "bold, italic, underline, bullist, numlist, link, unlink, formatselect, code", | 21 | theme_advanced_buttons1 : "bold, italic, underline, bullist, numlist, link, unlink, formatselect, code", |
| 22 | theme_advanced_buttons2 : "", | 22 | theme_advanced_buttons2 : "", |
| 23 | theme_advanced_buttons3 : "", | 23 | theme_advanced_buttons3 : "", |
| 24 | extended_valid_elements : "aggregate[tags|limit|order_by|order_direction|partial]", | 24 | extended_valid_elements : "aggregate[tags|limit|order_by|order_direction|partial]", |
| 25 | relative_urls : false, | 25 | relative_urls : false, |
| 26 | entity_encoding : "raw" | 26 | entity_encoding : "raw", |
| 27 | }); | 27 | oninit : "setup_autosave" |
| 28 | }); | ||
| 29 | |||
| 30 | var setup_autosave = function() { | ||
| 31 | |||
| 32 | var elements = { | ||
| 33 | "title" : $('#page_title'), | ||
| 34 | "abstract" : $('#page_abstract'), | ||
| 35 | "body" : $('#page_body_ifr').contents().find('#tinymce'), | ||
| 36 | } | ||
| 37 | |||
| 38 | |||
| 39 | var page = { | ||
| 40 | "cached_title_length" : elements.title.val().length, | ||
| 41 | "cached_abstract_length" : elements.abstract.val().length, | ||
| 42 | "cached_body_length" : elements.body.html().length, | ||
| 43 | |||
| 44 | "title_has_changed" : function() { | ||
| 45 | return (elements.title.val().length != this.cached_title_length) | ||
| 46 | }, | ||
| 47 | |||
| 48 | "abstract_has_changed" : function() { | ||
| 49 | return (elements.abstract.val().length != this.cached_abstract_length) | ||
| 50 | }, | ||
| 51 | |||
| 52 | "body_has_changed" : function() { | ||
| 53 | return elements.body.html().length != this.cached_body_length | ||
| 54 | } | ||
| 55 | } | ||
| 56 | |||
| 57 | |||
| 58 | jQuery.fn.submitWithAjax = function(options) { | ||
| 59 | if (page.title_has_changed() || page.abstract_has_changed() || page.body_has_changed()) { | ||
| 60 | |||
| 61 | page.cached_title_length = elements.title.val().length; | ||
| 62 | page.cached_abstract_length = elements.abstract.val().length; | ||
| 63 | page.cached_body_length = elements.body.html().length; | ||
| 64 | |||
| 65 | $("#flash").append("<img src='/images/ajax-loader.gif' alt='' />"); | ||
| 66 | $.post(this.attr("action"), $(this).serialize(), null, "script"); | ||
| 67 | } | ||
| 68 | }; | ||
| 69 | } | ||
| 28 | </script> | 70 | </script> |
| 29 | </head> | 71 | </head> |
| 30 | 72 | ||
