SubSpace and Linchpin Theme not working properly

Problem

When using SubSpace Navigation and the Linchpin Theme Add-on the SubSpace Navigation bar is not integrated properly.

Solution 1 - Modifying the Linchpin Theme

Add the following code snippet to the Custom JS in the Advanced section of the Linchpin Theme Configuration
// START: Move Subspace Navigation Menu into Linchpin menu bar AJS.toInit(function(){ var $subspaceMenu = AJS.$("#navigationbarpro").detach(); AJS.$("#linchpin-header #sub-header").replaceWith($subspaceMenu); }); // END: Move Subspace into Linchpin menu bar
Add the following code snippet to the Custom CSS in the Advanced section of the Linchpin Theme Configuration
/* START: Move Subspace into Linchpin menu bar */ #navigationbarpro { float: left; width: 100%; } #navigationbarpro .aui-navgroup-horizontal { border-top: none; border-bottom: none; } #navigationbarpro .aui-navgroup-horizontal .aui-nav > li.folder > a { padding: 10px; } /* END: Move Subspace into Linchpin menu bar */

Solution 2 - Modifying Confluence custom HTML

Add the following script to the custom HTML section in "At end of the HEAD"
<script type="text/javascript"> jQuery(document).ready(function() { var observerOverlayHeader; var observerSidebar; var fixTheme = function() { jQuery('#navigationbarpro .aui-navgroup.aui-navgroup-horizontal').css('margin', '0px'); jQuery('#navigationbarpro .aui-navgroup-inner .aui-navgroup-secondary').prependTo('#navigationbarpro .aui-navgroup-inner'); jQuery('#navigationbarpro .aui-navgroup-inner .aui-navgroup-primary.subspaces-menu').css('clear', 'inherit'); jQuery('#navigationbarpro .aui-navgroup-inner .aui-navgroup-primary.subspaces-menu').css('float', 'none'); jQuery('#navigationbarpro .aui-navgroup-inner .aui-navgroup-primary.subspaces-menu .aui-nav').css('float', 'none'); var subspaceNavigationHeight = jQuery('#navigationbarpro').height(); var headerMessage = jQuery('#header-precursor'); if(AJS.Meta.get('page-id') === undefined) { if(AJS.Meta.get('space-key') === undefined) { jQuery('#page .PageContent').css('margin-top', subspaceNavigationHeight + 'px'); } else { jQuery('#page .ia-splitter').css('margin-top', subspaceNavigationHeight + 'px'); } } else { if(observerOverlayHeader !== undefined || observerSidebar !== undefined) { observerOverlayHeader.disconnect(); observerSidebar.disconnect(); } jQuery('#page .ia-splitter').css('margin-top', subspaceNavigationHeight + 'px'); Subspace.lastScrollTop = -1; observerOverlayHeader = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { var header = jQuery('#main-header.overlay-header'); if(header.length > 0) { var newValue = header.css('top'); var st = $(document).scrollTop(); if (st < Subspace.lastScrollTop || Subspace.lastScrollTop == -1){ setTimeout(function() { newValue = (180 + subspaceNavigationHeight) + 'px'; header.css('top', newValue); }, 20); } if (st > Subspace.lastScrollTop && Subspace.lastScrollTop != -1){ setTimeout(function() { newValue = (120 + subspaceNavigationHeight) + 'px'; header.css('top', newValue); }, 20); } Subspace.lastScrollTop = st; } }); }); observerSidebar = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { setTimeout(function() { var newHeight = 180 + subspaceNavigationHeight; if(headerMessage.length > 0 && (jQuery(window).scrollTop() < headerMessage.height())) { newHeight += headerMessage.height(); } jQuery('#page .ia-splitter .ia-fixed-sidebar').css('top', newHeight + 'px'); }, 20); }); }); var config = { attributes: true }; var target = document.querySelector('#main-header'); observerOverlayHeader.observe(target, config); target = document.querySelector('#page .ia-splitter .ia-fixed-sidebar'); observerSidebar.observe(target, config); target = document.querySelector('#main'); observerSidebar.observe(target, config); } Subspace.subspaceNavigationHeight = subspaceNavigationHeight; }; $('#navigationconfigdialog button.aui-button-primary').click(function() { setTimeout(function() { var headerMessage = jQuery('#header-precursor'); var newHeight = jQuery('#navigationbarpro').height() > Subspace.subspaceNavigationHeight ? 142 + jQuery('#navigationbarpro').height() : 180 + jQuery('#navigationbarpro').height(); if(headerMessage.length > 0 && (jQuery(window).scrollTop() < headerMessage.height())) { newHeight += headerMessage.height(); } jQuery('#page .ia-splitter .ia-fixed-sidebar').css('top', newHeight + 'px'); fixTheme(); }, 20); }); fixTheme(); }); </script>


Related Articles