<div class="" id="accordion"> <div class=""> <div class=""> <h3 class="panel-title"> About </h3> </div> <div id="about" class="doco-section"> <div class="flex-column"> <a class="nav-link" href="/help/about/about_hubzilla">About Hubzilla</a> <a class="nav-link" href="/help/about/hubzilla_project">Hubzilla project</a> <a class="nav-link" href="/help/about/about_hub">About this hub</a> </div> </div> </div> <div class=""> <div class=""> <h3 class="panel-title"> Members </h3> </div> <div id="members" class="doco-section"> <div class="flex-column"> <a class="nav-link" href="/help/member/member_guide">Guide</a> <a class="nav-link" href="/help/member/bbcode">BBcode Reference</a> <a class="nav-link" href="/help/member/member_faq">FAQ</a> </div> </div> </div> <div class="panel"> <div class=""> <h3 class="panel-title"> Administrators </h3> </div> <div id="administrators" class="doco-section"> <div class="flex-column"> <a class="nav-link" href="/help/admin/administrator_guide">Guide</a> <a class="nav-link" href="/help/admin/hub_snapshots">Hub Snapshots</a> <a class="nav-link" href="/help/database">Database Tables</a> </div> </div> </div> <div class="panel"> <div class=""> <h3 class="panel-title"> Developers </h3> </div> <div id="developers" class="doco-section"> <div class="flex-column"> <a class="nav-link" href="/help/developer/developer_guide">Guide</a> <a class="nav-link" href="/help/developer/covenant">Code of Conduct</a> <a class="nav-link" href="/help/developer/zot_protocol">Zot Protocol</a> <a class="nav-link" href="/help/developer/api_zot">Zot API</a> <a class="nav-link" href="/help/hooklist">Hooks</a> </div> </div> </div> <div class="panel"> <div class=""> <h3 class="panel-title"> Tutorials </h3> </div> <div id="tutorials" class="doco-section"> <div class="flex-column"> <a class="nav-link" href="/help/tutorials/personal_channel">Personal Channel</a> </div> </div> </div> </div> <script> toc = {}; // Generate the table of contents in the side nav menu (see view/tpl/help.tpl) $(document).ready(function () { $(".doco-section").find('a').each(function(){ var url = document.createElement('a'); url.href = window.location; var pageName = url.href.split('/').pop().split('#').shift().split('?').shift(); var linkName = $(this).attr('href').split('/').pop(); if(pageName === linkName) { var tocUl = $(this).closest('a').append('<ul>').find('ul'); tocUl.removeClass(); // Classes are automatically added to <ul> elements by something else tocUl.toc({content: "#doco-content", headings: "h3"}); tocUl.addClass('toc-content'); tocUl.attr('id', 'doco-side-toc'); } }); $(document.body).trigger("sticky_kit:recalc"); toc.contentTop = []; toc.edgeMargin = 20; // margin above the top or margin from the end of the page toc.topRange = 200; // measure from the top of the viewport to X pixels down // Set up content an array of locations $('#doco-side-toc').find('a').each(function(){ toc.contentTop.push( $( '#'+$(this).attr('href').split('#').pop() ).offset().top ); }); // adjust side menu $(window).scroll(function(){ var winTop = $(window).scrollTop(), bodyHt = $(document).height(), vpHt = $(window).height() + toc.edgeMargin; // viewport height + margin $.each( toc.contentTop, function(i,loc){ if ( ( loc > winTop - toc.edgeMargin && ( loc < winTop + toc.topRange || ( winTop + vpHt ) >= bodyHt ) ) ){ $('#doco-side-toc li') .removeClass('selected-doco-nav') .eq(i).addClass('selected-doco-nav'); if (typeof($('#doco-side-toc li').eq(i).find('a').attr('href').split('#')[1]) !== 'undefined') { window.history.pushState({}, '', location.href.split('#')[0] + '#' + $('#doco-side-toc li').eq(i).find('a').attr('href').split('#')[1]); } } }); }); // When the page loads, it does not scroll to the section specified in the URL because it // has not been constructed yet by the script. This will reload the URL if (typeof(location.href.split('#')[1]) !== 'undefined') { var p = document.createElement('a'); p.href = location.href; var portstr = ''; if(p.port !== '') { portstr = ':'+ p.port; } var newref = p.protocol + '//'+ p.hostname + portstr + p.pathname + p.hash.split('?').shift(); location.replace(newref) } }); </script>