X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/8bbef1628f527255a64f624a5508116eeccad083..29d7fc838e192b6a18dd31d81fe9ab1bc37b6cbb:/redakcja/static/js/wiki/loader.js?ds=inline diff --git a/redakcja/static/js/wiki/loader.js b/redakcja/static/js/wiki/loader.js index e2d4d2b4..1223992b 100644 --- a/redakcja/static/js/wiki/loader.js +++ b/redakcja/static/js/wiki/loader.js @@ -5,7 +5,7 @@ if (!window.console) { } } -var DEFAULT_PERSPECTIVE = "#SummaryPerspective"; +var DEFAULT_PERSPECTIVE = "#VisualPerspective"; $(function() { @@ -17,9 +17,22 @@ $(function() function initialize() { - gallery = new $.wiki.ScanGalleryPerspective({ - doc: CurrentDocument, id: "ScanGalleryPerspective" - }); + var splitter = $('#splitter'), + editors = $('#editor .editor'), + 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'; + }; $(document).keydown(function(event) { console.log("Received key:", event); @@ -36,7 +49,8 @@ $(function() /* * TABS */ - $('#tabs li').live('click', function(event, callback) { + $('.tabs li').live('click', function(event, callback) { + event.preventDefault(); $.wiki.switchToTab(this); }); @@ -55,32 +69,57 @@ $(function() $(window).resize(function(){ $('iframe').height($(window).height() - $('#tabs').outerHeight() - $('#source-editor .toolbar').outerHeight()); + splitterWidth = splitter.width(); }); $(window).resize(); - $('.vsplitbar').toggle( + vsplitbar.toggle( function() { $.wiki.state.perspectives.ScanGalleryPerspective.show = true; - $('#side-gallery').show(); - $('.vsplitbar').css('right', 480).addClass('.active'); - $('#editor .editor').css('right', 510); + setSplitbarAt(splitterWidth - (480 + vsplitbarWidth)); + $('.vsplitbar').addClass('active'); $(window).resize(); - gallery.onEnter(); + $.wiki.perspectiveForTab('#tabs-right .active').onEnter(); }, function() { + var active_right = $.wiki.perspectiveForTab('#tabs-right .active'); $.wiki.state.perspectives.ScanGalleryPerspective.show = false; - $('#side-gallery').hide(); - $('.vsplitbar').css('right', 0).removeClass('active'); - $('#editor .editor').css('right', 30); + $(".vsplitbar-title").html("↑ " + active_right.vsplitbar + " ↑"); + setSplitbarAt(splitterWidth - vsplitbarWidth); + $('.vsplitbar').removeClass('active'); $(window).resize(); - gallery.onExit(); + active_right.onExit(); } ); - if($.wiki.state.perspectives.ScanGalleryPerspective.show) - $('.vsplitbar').trigger('click'); + /* Splitbar dragging support */ + vsplitbar + .mousedown(function(e) { + e.preventDefault(); + isHolding = true; + }) + .mousemove(function(e) { + if(isHolding) { + dragLayer.show(); // We don't show it up until now so that we don't lose single click events on vsplitbar + } + }); + dragLayer.mousemove(function(e) { + setSplitbarAt(e.clientX - vsplitbarWidth/2); + }); + $('body').mouseup(function(e) { + dragLayer.hide(); + isHolding = false; + }); + + + 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."; @@ -109,6 +148,14 @@ $(function() console.log("Initial tab is:", active_tab) $.wiki.switchToTab(active_tab); + + /* every 5 minutes 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(); @@ -137,6 +184,6 @@ $(function() /* * Initialize all perspectives */ - initAll( $.makeArray($('ol#tabs li')), initialize); + initAll( $.makeArray($('.tabs li')), initialize); console.log(location.hash); });