{I" class:ETI"BundledAsset;FI"logical_path;TI"polyblock/polyblock.js;FI" pathname;TI"i/Applications/XAMPP/xamppfiles/htdocs/polyblock/app/assets/javascripts/polyblock/polyblock.js.coffee;FI"content_type;TI"application/javascript;TI" mtime;Tl+$íµRI" length;TiÌ$I" digest;TI"%e1e59b64ca2cd2d984a4c8158e57cc3e;FI" source;TI"Ì$(function() { var unsavedChanges; CKEDITOR.disableAutoInline = true; unsavedChanges = false; window.onbeforeunload = function() { if (unsavedChanges) { return "Are you sure you want to leave this page? Your unsaved changes will not be stored!"; } }; $(function() { return $(document).ready(function() { var blockclones, blocks, changeChecker, changeText, convertFromTextarea, convertToTextarea, currentMode, editorModeOff, editorModeOn, indicator, initialBodyPadding, previousMode, revertChanges, saveChanges, showSavedChanges, showUnsavedChanges, startListening, stopListening, verbose; blocks = $(".polyblock[contenteditable='true']"); if (!blocks.length) { return; } blockclones = {}; blocks.each(function() { var id; id = $(this).attr('id'); blockclones[id] = $(this).clone(); if (!_.contains(_.keys(CKEDITOR.instances), id)) { return CKEDITOR.inline(id, { on: { focus: function(e) { editorModeOn(); return startListening(id); }, blur: function(e) { return stopListening(); } } }); } }); verbose = true; changeChecker = null; indicator = $('.pb-change-indicator'); changeText = $('.pb-change-text'); startListening = function(which) { var buffer; stopListening(); if (verbose) { console.log("I'm listening..."); } buffer = CKEDITOR.instances[which].getData(); return changeChecker = setInterval(function() { var reading; if (verbose) { console.log("Checking for changes..."); } reading = CKEDITOR.instances[which].getData(); if (reading !== buffer && !unsavedChanges) { return showUnsavedChanges(); } else if (reading === buffer && unsavedChanges) { return showSavedChanges(); } }, 1000); }; stopListening = function() { if (changeChecker == null) { return; } if (verbose) { console.log("I'm no longer listening."); } clearInterval(changeChecker); return changeChecker = null; }; showUnsavedChanges = function() { indicator.transition({ rotate: "-30deg", color: "red" }); changeText.html("You have unsaved changes.").transition({ color: "red" }); return unsavedChanges = true; }; showSavedChanges = function() { indicator.transition({ rotate: "0deg", color: "green" }); changeText.html("All changes saved.").transition({ color: "green" }); return unsavedChanges = false; }; initialBodyPadding = $('body').css("padding-bottom"); editorModeOn = function(pb) { return $('#pb_bar').show("slide", { direction: "down" }, 250, function() { $('body').css("padding-bottom", $("#pb_bar").height() + 20); return typeof pb === "function" ? pb() : void 0; }); }; editorModeOff = function(pb) { return $('#pb_bar').hide("slide", { direction: "down" }, 250, function() { $('body').css("padding-bottom", initialBodyPadding); return typeof pb === "function" ? pb() : void 0; }); }; saveChanges = function() { var pbs; showSavedChanges(); pbs = _.object(_.map(blocks, function(b) { return $(b).data("pbid"); }), _.map(blocks, function(b) { return $(b).html(); })); return $.post("/polyblock/update", { pbs: pbs }, function(data) { return editorModeOff(function() { return alertify.success("Your changes have been saved."); }); }); }; revertChanges = function(pb) { if (!confirm("Are you sure you want to discard your changes?")) { return; } return editorModeOff(function() { blocks.each(function() { return $(this).replaceWith(blockclones[$(this).attr("id")]); }); return alertify.success("Your changes have been discarded."); }); }; currentMode = previousMode = "WYSIWYG"; convertToTextarea = function(block, content, tab) { var previous_textarea, replaceIt, tabchars, textarea, _this = this; if (content == null) { content = null; } if (tab == null) { tab = "\t"; } tabchars = tab.replace(/\\/, "").length; previous_textarea = $("textarea[data-pbid=" + (block.attr("data-pbid")) + "]"); if (content == null) { content = previous_textarea.is("*") ? previous_textarea.val() : block.html(); } textarea = $('