diff options
Diffstat (limited to 'mod/blog/views/default/js')
-rw-r--r-- | mod/blog/views/default/js/blog/save_draft.php | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/mod/blog/views/default/js/blog/save_draft.php b/mod/blog/views/default/js/blog/save_draft.php new file mode 100644 index 000000000..8cd07ff5d --- /dev/null +++ b/mod/blog/views/default/js/blog/save_draft.php @@ -0,0 +1,67 @@ +<?php +/** + * Save draft through ajax + * + * @package Blog + */ +?> +elgg.provide('elgg.blog'); + +/* + * Attempt to save and update the input with the guid. + */ +elgg.blog.saveDraftCallback = function(data, textStatus, XHR) { + if (textStatus == 'success' && data.success == true) { + var form = $('form[id=blog-post-edit]'); + + // update the guid input element for new posts that now have a guid + form.find('input[name=guid]').val(data.guid); + + oldDescription = form.find('textarea[name=description]').val(); + + var d = new Date(); + var mins = d.getMinutes() + ''; + if (mins.length == 1) { + mins = '0' + mins; + } + $(".blog-save-status-time").html(d.toLocaleDateString() + " @ " + d.getHours() + ":" + mins); + } else { + $(".blog-save-status-time").html(elgg.echo('error')); + } +}; + +elgg.blog.saveDraft = function() { + if (typeof(tinyMCE) != 'undefined') { + tinyMCE.triggerSave(); + } + + // only save on changed content + var form = $('form[id=blog-post-edit]'); + var description = form.find('textarea[name=description]').val(); + var title = form.find('input[name=title]').val(); + + if (!(description && title) || (description == oldDescription)) { + return false; + } + + var draftURL = elgg.config.wwwroot + "action/blog/auto_save_revision"; + var postData = form.serializeArray(); + + // force draft status + $(postData).each(function(i, e) { + if (e.name == 'status') { + e.value = 'draft'; + } + }); + + $.post(draftURL, postData, elgg.blog.saveDraftCallback, 'json'); +}; + +elgg.blog.init = function() { + // get a copy of the body to compare for auto save + oldDescription = $('form[id=blog-post-edit]').find('textarea[name=description]').val(); + + setInterval(elgg.blog.saveDraft, 60000); +}; + +elgg.register_hook_handler('init', 'system', elgg.blog.init);
\ No newline at end of file |