diff --git a/public_html/media/css/upload.css b/public_html/media/css/post-upload.css similarity index 100% rename from public_html/media/css/upload.css rename to public_html/media/css/post-upload.css diff --git a/public_html/media/js/comment-edit.js b/public_html/media/js/comment-edit.js index c1b00133..fc07b466 100644 --- a/public_html/media/js/comment-edit.js +++ b/public_html/media/js/comment-edit.js @@ -2,6 +2,12 @@ $(function() { function onDomUpdate() { + $('form.edit-comment textarea, form.add-comment textarea') + .bind('change keyup', function(e) + { + enableExitConfirmation(); + }); + $('form.edit-comment, form.add-comment').submit(function(e) { e.preventDefault(); @@ -41,6 +47,8 @@ $(function() } else { + disableExitConfirmation(); + formDom.find('.preview').hide(); var cb = function() { diff --git a/public_html/media/js/core.js b/public_html/media/js/core.js index aab75a5f..651eb649 100644 --- a/public_html/media/js/core.js +++ b/public_html/media/js/core.js @@ -272,3 +272,18 @@ $(function() Mousetrap.bind('d', function() { var url = $('.paginator:visible .next:not(.disabled) a').attr('href'); if (typeof url !== 'undefined') window.location.href = url; }, 'keyup'); Mousetrap.bind('p', function() { $('.post a').eq(0).focus(); return false; }, 'keyup'); }); + + + +function enableExitConfirmation() +{ + $(window).bind('beforeunload', function(e) + { + return true; + }); +} + +function disableExitConfirmation() +{ + $(window).unbind('beforeunload'); +} diff --git a/public_html/media/js/upload.js b/public_html/media/js/post-upload.js similarity index 98% rename from public_html/media/js/upload.js rename to public_html/media/js/post-upload.js index e7a3b95e..c793ed45 100644 --- a/public_html/media/js/upload.js +++ b/public_html/media/js/post-upload.js @@ -136,6 +136,7 @@ $(function() function uploadFinished() { + disableExitConfirmation(); window.location.href = $('#upload-step2').attr('data-redirect-url'); } @@ -224,6 +225,7 @@ $(function() { for (var i = 0; i < inputs.length; i ++) { + enableExitConfirmation(); var input = inputs[i]; var postDom = $('#post-template').clone(true); postDom.find('form').submit(false); diff --git a/public_html/media/js/post-view.js b/public_html/media/js/post-view.js index 3e28253e..7cd24e11 100644 --- a/public_html/media/js/post-view.js +++ b/public_html/media/js/post-view.js @@ -12,6 +12,7 @@ $(function() aDom.addClass('inactive'); var formDom = $('form.edit-post'); + formDom.data('original-data', formDom.serialize()); if (formDom.find('.tagit').length == 0) { $.getJSON('/tags?json', {filter: 'order:popularity,desc'}, function(data) @@ -23,7 +24,13 @@ $(function() tagItOptions.availableTags = tags; tagItOptions.placeholderText = $('.tags input').attr('placeholder'); $('.tags input').tagit(tagItOptions); + formDom.find('input[type=text]:visible:eq(0)').focus(); + formDom.find('textarea, input').bind('change keyup', function() + { + if (formDom.serialize() != formDom.data('original-data')) + enableExitConfirmation(); + }); }); } else @@ -89,6 +96,8 @@ $(function() { if (data['success']) { + disableExitConfirmation(); + $.get(window.location.href, function(data) { $('#sidebar').replaceWith($(data).find('#sidebar')); diff --git a/src/Controllers/PostController.php b/src/Controllers/PostController.php index a6261bf6..a2d9b45d 100644 --- a/src/Controllers/PostController.php +++ b/src/Controllers/PostController.php @@ -180,8 +180,8 @@ class PostController */ public function uploadAction() { - $this->context->stylesheets []= 'upload.css'; - $this->context->scripts []= 'upload.js'; + $this->context->stylesheets []= 'post-upload.css'; + $this->context->scripts []= 'post-upload.js'; $this->context->subTitle = 'upload'; PrivilegesHelper::confirmWithException(Privilege::UploadPost); if ($this->config->registration->needEmailForUploading)