$(function() { function onDomUpdate() { $('#sidebar a.edit-post').bindOnce('edit-post', 'click', function(e) { e.preventDefault(); var aDom = $(this); if (aDom.hasClass('inactive')) return; aDom.addClass('inactive'); var formDom = $('form.edit-post'); if (formDom.find('.tagit').length == 0) { attachTagIt($('input[name=tags]')); aDom.removeClass('inactive'); 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 aDom.removeClass('inactive'); var editUnit = formDom.parents('.unit'); var postUnit = $('.post-wrapper'); if (!$(formDom).is(':visible')) { formDom.data('original-data', formDom.serialize()); editUnit.show(); var editUnitHeight = formDom.height(); editUnit.css('height', editUnitHeight); editUnit.hide(); if (postUnit.height() < editUnitHeight) postUnit.animate({height: editUnitHeight + 'px'}, 'fast'); editUnit.slideDown('fast', function() { $(this).css('height', 'auto'); }); } else { editUnit.slideUp('fast'); var postUnitOldHeight = postUnit.height(); postUnit.height('auto'); var postUnitHeight = postUnit.height(); postUnit.height(postUnitOldHeight); if (postUnitHeight != postUnitOldHeight) postUnit.animate({height: postUnitHeight + 'px'}); if ($('.post-wrapper').height() < editUnitHeight) $('.post-wrapper').animate({height: editUnitHeight + 'px'}); return; } formDom.find('input[type=text]:visible:eq(0)').focus(); }); $('.comments.unit a.simple-action').data('callback', function() { getHtml(window.location.href).success(function(data) { $('.comments-wrapper').replaceWith($(data).find('.comments-wrapper')); $('body').trigger('dom-update'); }); }); $('#sidebar a.simple-action').data('callback', function() { getHtml(window.location.href).success(function(data) { $('#sidebar').replaceWith($(data).find('#sidebar')); $('body').trigger('dom-update'); }); }); } $('body').bind('dom-update', onDomUpdate); $('form.edit-post').submit(function(e) { e.preventDefault(); var formDom = $(this); if (formDom.hasClass('inactive')) return; formDom.addClass('inactive'); formDom.find(':input').attr('readonly', true); var url = formDom.attr('action'); var fd = new FormData(formDom[0]); var ajaxData = { url: url, data: fd, processData: false, contentType: false, success: function(data) { disableExitConfirmation(); getHtml(window.location.href).success(function(data) { $('#sidebar').replaceWith($(data).find('#sidebar')); $('#revision').replaceWith($(data).find('#revision')); $('body').trigger('dom-update'); }); formDom.parents('.unit').hide(); formDom.find(':input').attr('readonly', false); formDom.removeClass('inactive'); }, error: function(xhr) { alert(xhr.responseJSON ? xhr.responseJSON.message : 'Fatal error'); formDom.find(':input').attr('readonly', false); formDom.removeClass('inactive'); } }; postJSON(ajaxData); }); Mousetrap.bind('a', function() { var a = $('#sidebar .left a'); var url = a.attr('href'); if (typeof url !== 'undefined') { a.click(); window.location.href = url; } }, 'keyup'); Mousetrap.bind('d', function() { var a = $('#sidebar .right a'); var url = a.attr('href'); if (typeof url !== 'undefined') { a.click(); window.location.href = url; } }, 'keyup'); Mousetrap.bind('e', function() { $('a.edit-post').trigger('click'); return false; }, 'keyup'); });