X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/5913c54d19b8f6775633176032161d49f9b2f1aa..11135898543370ecf4ffa95dbea14cba4c33f57c:/src/redakcja/static/js/wiki/loader.js diff --git a/src/redakcja/static/js/wiki/loader.js b/src/redakcja/static/js/wiki/loader.js index 1223992b..7ea9b407 100644 --- a/src/redakcja/static/js/wiki/loader.js +++ b/src/redakcja/static/js/wiki/loader.js @@ -7,98 +7,88 @@ if (!window.console) { var DEFAULT_PERSPECTIVE = "#VisualPerspective"; -$(function() -{ - var tabs = $('ol#tabs li'); - var gallery = null; - CurrentDocument = new $.wikiapi.WikiDocument("document-meta"); +$(function() { + var tabs = $('ol#tabs li'); + var gallery = null; + var MIN_SIDEBAR_WIDTH = 50, + DEFAULT_SIDEBAR_WIDTH = 480; - $.blockUI.defaults.baseZ = 10000; + CurrentDocument = new $.wikiapi.WikiDocument("document-meta"); - function initialize() - { + $.blockUI.defaults.baseZ = 10000; + + function initialize() { var splitter = $('#splitter'), - editors = $('#editor .editor'), - vsplitbar = $('.vsplitbar'), + vsplitbar = $('#vsplitbar'), sidebar = $('#sidebar'), dragLayer = $('#drag-layer'), vsplitbarWidth = vsplitbar.outerWidth(), isHolding = false; - // Moves panes so that left border of the vsplitbar lands x pixels from the left border of the splitter - function setSplitbarAt(x) { - var right = splitterWidth - x; - editors.each(function() { - this.style.right = right + 'px'; - }); - vsplitbar[0].style.right = sidebar[0].style.width = (right - vsplitbarWidth) + 'px'; + function setSidebarWidth(x) { + if (x < MIN_SIDEBAR_WIDTH) { + x = 0; + vsplitbar.removeClass('active'); + } else { + vsplitbar.addClass('active'); + } + $.wiki.state.perspectives.ScanGalleryPerspective.width = x; + sidebar[0].style.width = x + 'px'; }; - $(document).keydown(function(event) { - console.log("Received key:", event); - }); - - /* The save button */ + /* The save button */ $('#save-button').click(function(event){ event.preventDefault(); - $.wiki.showDialog('#save_dialog'); + $.wiki.showDialog('#save_dialog'); }); - $('.editor').hide(); + $('.editor').hide(); - /* - * TABS - */ - $('.tabs li').live('click', function(event, callback) { + /* + * TABS + */ + $(document).on('click', '.tabs li', function(event, callback) { event.preventDefault(); - $.wiki.switchToTab(this); + $.wiki.switchToTab(this); }); - $('#tabs li > .tabclose').live('click', function(event, callback) { - var $tab = $(this).parent(); + $(document).on('click', '#tabs li .tabclose', function(event, callback) { + var $tab = $(this).parent().parent(); - if($tab.is('.active')) - $.wiki.switchToTab(DEFAULT_PERSPECTIVE); + if($('a', $tab).is('.active')) + $.wiki.switchToTab(DEFAULT_PERSPECTIVE); - var p = $.wiki.perspectiveForTab($tab); - p.destroy(); + var p = $.wiki.perspectiveForTab($tab); + p.destroy(); - return false; + return false; }); - $(window).resize(function(){ - $('iframe').height($(window).height() - $('#tabs').outerHeight() - $('#source-editor .toolbar').outerHeight()); splitterWidth = splitter.width(); }); $(window).resize(); - - vsplitbar.toggle( - function() { - $.wiki.state.perspectives.ScanGalleryPerspective.show = true; - setSplitbarAt(splitterWidth - (480 + vsplitbarWidth)); - $('.vsplitbar').addClass('active'); - $(window).resize(); - $.wiki.perspectiveForTab('#tabs-right .active').onEnter(); - }, - function() { - var active_right = $.wiki.perspectiveForTab('#tabs-right .active'); - $.wiki.state.perspectives.ScanGalleryPerspective.show = false; - $(".vsplitbar-title").html("↑ " + active_right.vsplitbar + " ↑"); - setSplitbarAt(splitterWidth - vsplitbarWidth); - $('.vsplitbar').removeClass('active'); - $(window).resize(); - active_right.onExit(); - } - ); - + $.wiki.perspectiveForTab($('#tabs-right .active').parent()).onEnter(); + + vsplitbar.on('click', function() { + var $this = $(this); + if ($this.hasClass('active')) { + $.wiki.state.perspectives.ScanGalleryPerspective.lastWidth = sidebar.width(); + setSidebarWidth(0); + } else { + setSidebarWidth($.wiki.state.perspectives.ScanGalleryPerspective.lastWidth); + } + }); /* Splitbar dragging support */ vsplitbar .mousedown(function(e) { e.preventDefault(); isHolding = true; + if (sidebar.width() > MIN_SIDEBAR_WIDTH) { + $.wiki.state.perspectives.ScanGalleryPerspective.lastWidth = sidebar.width(); + } }) .mousemove(function(e) { if(isHolding) { @@ -106,84 +96,75 @@ $(function() } }); dragLayer.mousemove(function(e) { - setSplitbarAt(e.clientX - vsplitbarWidth/2); + setSidebarWidth(splitterWidth - e.clientX - vsplitbarWidth / 2); }); $('body').mouseup(function(e) { dragLayer.hide(); isHolding = false; }); + setSidebarWidth($.wiki.state.perspectives.ScanGalleryPerspective.width); - if($.wiki.state.perspectives.ScanGalleryPerspective.show){ - $('.vsplitbar').trigger('click'); - $(".vsplitbar-title").html("↓ GALERIA ↓"); - } else { - $(".vsplitbar-title").html("↑ GALERIA ↑"); - } window.onbeforeunload = function(e) { if($.wiki.isDirty()) { - e.returnValue = "Na stronie mogą być nie zapisane zmiany."; - return "Na stronie mogą być nie zapisane zmiany."; - }; + e.returnValue = "Na stronie mogą być nie zapisane zmiany."; + return "Na stronie mogą być nie zapisane zmiany."; + }; }; - console.log("Fetching document's text"); + $('body').mousemove(function(e) { + CurrentDocument.active = true; + }); + $('body').keydown(function(e) { + CurrentDocument.active = true; + }); - $(document).bind('wlapi_document_changed', function(event, doc) { - try { - $('#document-revision').text(doc.revision); - } catch(e) { - console.log("Failed handler", e); - } - }); + console.log("Fetching document's text"); + + $(document).bind('wlapi_document_changed', function(event, doc) { + try { + $('#document-revision').text(doc.revision); + } catch(e) { + console.log("Failed handler", e); + } + }); - CurrentDocument.fetch({ - success: function(){ - console.log("Fetch success"); - $('#loading-overlay').fadeOut(); - var active_tab = document.location.hash || DEFAULT_PERSPECTIVE; + CurrentDocument.fetch({ + success: function(){ + console.log("Fetch success"); + $('#loading-overlay').fadeOut(); + var active_tab = document.location.hash || DEFAULT_PERSPECTIVE; - if(active_tab == "#ScanGalleryPerspective") - active_tab = DEFAULT_PERSPECTIVE; + if(active_tab == "#ScanGalleryPerspective") + active_tab = DEFAULT_PERSPECTIVE; - console.log("Initial tab is:", active_tab) - $.wiki.switchToTab(active_tab); + console.log("Initial tab is:", active_tab) + $.wiki.switchToTab(active_tab); - /* every 5 minutes check for a newer version */ + /* every minute check for a newer version */ var revTimer = setInterval(function() { - CurrentDocument.checkRevision({outdated: function(){ - $('#header').addClass('out-of-date'); - clearInterval(revTimer); - }}); - }, 300000); - }, - failure: function() { - $('#loading-overlay').fadeOut(); - alert("FAILURE"); - } - }); + CurrentDocument.checkRevision({outdated: function(){ + $('#header').addClass('out-of-date'); + clearInterval(revTimer); + }}); + }, 60 * 1000); + }, + failure: function() { + $('#loading-overlay').fadeOut(); + alert("FAILURE"); + } + }); }; /* end of initialize() */ - /* Load configuration */ - $.wiki.loadConfig(); - - var initAll = function(a, f) { - if (a.length == 0) return f(); - - $.wiki.initTab({ - tab: a.pop(), - doc: CurrentDocument, - callback: function(){ - initAll(a, f); - } - }); - }; - + /* Load configuration */ + $.wiki.loadConfig(); - /* - * Initialize all perspectives - */ - initAll( $.makeArray($('.tabs li')), initialize); - console.log(location.hash); + /* + * Initialize all perspectives + */ + $('.tabs li').each((i, e) => { + $.wiki.initTab({tab: e, doc: CurrentDocument}); + }); + initialize(); });