Merge remote-tracking branch 'origin/master'
[redakcja.git] / redakcja / static / js / wiki / loader.js
index f051511..1223992 100644 (file)
@@ -5,7 +5,7 @@ if (!window.console) {
     }
 }
 
     }
 }
 
-var DEFAULT_PERSPECTIVE = "#SummaryPerspective";
+var DEFAULT_PERSPECTIVE = "#VisualPerspective";
 
 $(function()
 {
 
 $(function()
 {
@@ -17,6 +17,23 @@ $(function()
 
     function initialize()
        {
 
     function initialize()
        {
+        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);
                });
                $(document).keydown(function(event) {
                        console.log("Received key:", event);
                });
@@ -33,6 +50,7 @@ $(function()
                 * TABS
                 */
         $('.tabs li').live('click', function(event, callback) {
                 * TABS
                 */
         $('.tabs li').live('click', function(event, callback) {
+            event.preventDefault();
                        $.wiki.switchToTab(this);
         });
 
                        $.wiki.switchToTab(this);
         });
 
@@ -51,40 +69,56 @@ $(function()
 
         $(window).resize(function(){
             $('iframe').height($(window).height() - $('#tabs').outerHeight() - $('#source-editor .toolbar').outerHeight());
 
         $(window).resize(function(){
             $('iframe').height($(window).height() - $('#tabs').outerHeight() - $('#source-editor .toolbar').outerHeight());
+            splitterWidth = splitter.width();
         });
 
         $(window).resize();
 
         });
 
         $(window).resize();
 
-        $('.vsplitbar').toggle(
+        vsplitbar.toggle(
                        function() {
                                $.wiki.state.perspectives.ScanGalleryPerspective.show = true;
                        function() {
                                $.wiki.state.perspectives.ScanGalleryPerspective.show = true;
-                               $('#sidebar').show();
-                               $(".vsplitbar-title").html("↓ GALLERY ↓");
-                               $('.vsplitbar').css('right', 480).addClass('active');
-                               $('#editor .editor').css('right', 510);
+                               setSplitbarAt(splitterWidth - (480 + vsplitbarWidth));
+                               $('.vsplitbar').addClass('active');
                                $(window).resize();
                                $.wiki.perspectiveForTab('#tabs-right .active').onEnter();
                        },
                        function() {
                                $(window).resize();
                                $.wiki.perspectiveForTab('#tabs-right .active').onEnter();
                        },
                        function() {
+                           var active_right = $.wiki.perspectiveForTab('#tabs-right .active');
                                $.wiki.state.perspectives.ScanGalleryPerspective.show = false;
                                $.wiki.state.perspectives.ScanGalleryPerspective.show = false;
-                               $('#sidebar').hide();
-                               $('.vsplitbar').css('right', 0).removeClass('active');
-                               if($(".vsplitbar-title").html() == "↓ SEARCH AND REPLACE ↓"){
-                                       $(".vsplitbar-title").html("↑ SEARCH AND REPLACE ↑");        
-                               } else {
-                                   $(".vsplitbar-title").html("↑ GALLERY ↑");
-                               }
-                               $('#editor .editor').css('right', 30);
+                               $(".vsplitbar-title").html("↑ " + active_right.vsplitbar + " ↑");
+                               setSplitbarAt(splitterWidth - vsplitbarWidth);
+                               $('.vsplitbar').removeClass('active');
                                $(window).resize();
                                $(window).resize();
-                               $.wiki.perspectiveForTab('#tabs-right .active').onExit();
+                               active_right.onExit();
                        }
                );
 
                        }
                );
 
+
+        /* 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');
                if($.wiki.state.perspectives.ScanGalleryPerspective.show){
             $('.vsplitbar').trigger('click');
-            $(".vsplitbar-title").html("↓ GALLERY ↓");
+            $(".vsplitbar-title").html("↓ GALERIA ↓");
         } else {
         } else {
-            $(".vsplitbar-title").html("↑ GALLERY ↑");
+            $(".vsplitbar-title").html("↑ GALERIA ↑");
         }
         window.onbeforeunload = function(e) {
             if($.wiki.isDirty()) {
         }
         window.onbeforeunload = function(e) {
             if($.wiki.isDirty()) {
@@ -114,6 +148,14 @@ $(function()
 
                                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 */
+                var revTimer = setInterval(function() {
+                        CurrentDocument.checkRevision({outdated: function(){
+                            $('#header').addClass('out-of-date');
+                            clearInterval(revTimer);
+                        }});
+                    }, 300000);
                        },
                        failure: function() {
                                $('#loading-overlay').fadeOut();
                        },
                        failure: function() {
                                $('#loading-overlay').fadeOut();