jQuery(function($) { var help = null;//Onpage_Help instance //for ace demo pages, we temporarily disable fixed navbar, etc ... when help is enabled //because when an element is fixed, its highlighted help section should also become fixed! var before_enable_help = function() { $('#btn-scroll-up').css('z-index', 1000000);//bring btn-scroll-up higher , to be over our help area //save our current state of navbar, sidebar and breadcrumbs before enabling help ace.settings.saveState('navbar', 'class'); ace.settings.saveState('sidebar', 'class'); ace.settings.saveState('breadcrumbs', 'class'); //now disable fixed navbar, which automatically disabled fixes sidebar and breadcrumbs try { ace.settingFunction.navbar_fixed(null, false , false); } catch(ex) {} } var after_disable_help = function() { $('#btn-scroll-up').css('z-index', ''); //restore fixed state of navbar, sidebar, etc ace.settings.loadState('navbar', 'class'); ace.settings.loadState('sidebar', 'class'); ace.settings.loadState('breadcrumbs', 'class'); } var get_file_url = function(url, language) { //function that return the real path to a file which is being loaded return this.settings.base + '/' + url; } var get_section_url = function(section_name) { //according to a section_name such as `basics/navbar.toggle` return the file url which contains help content section_name = section_name || ''; //for example convert `basic/navbar.layout.brand` to `basic/navbar` //because 'layout.brand' section is inside `basic/navbar.html` file var url = section_name.replace(/\..*$/g, ''); var parts = url.split('/'); if(parts.length == 1) { //for example convert `changes` to `changes/index.html` if(url.length == 0) url = 'intro';//or convert `empty string` to `intro/index.html` url = url + '/index.html'; } else if(parts.length > 1) { //for example convert `basics/navbar.layout` to `basics/navbar.html` url = url + '.html'; } return this.settings.base + '/docs/sections/' + url; } var get_img_url = function(src) { return this.settings.base + '/docs/' +src; } /** var code_highlight = function(e, language) { //'this' refers to 'Onpage_Help' object invoking this function if(typeof e === 'string') { if(typeof language === 'string') { //called when a file (html,css,etc) is loaded //'e' is a piece of code //maybe highlight the syntax it according to `language` and return result } else { //called before new help content is being displayed //'e' is a string which may contain
...
code sections //which you may want to highlight the code, or for example convert them < to < and > to > //and return the result } } else if(typeof e === 'object') { //called when new help content is displayed //'e' is an html element which may have "pre" children that you can syntax-highlight } } */ function startHelp() { if(help !== null) return;//already created? help = new Onpage_Help({ 'include_all': false, 'base': ace.vars['base'] || '../..', 'file_url': get_file_url, 'section_url': get_section_url, 'img_url': get_img_url, 'before_enable': before_enable_help, 'after_disable': after_disable_help //,'code_highlight': code_highlight }) var help_container = $('#onpage-help-container'); //add a custom button to enable/disable help help_container.append('
\
\ \
\
'); $('#onpage-help-toggle-btn').on('click', function(e) { e.preventDefault(); toggleHelp(); }) //add .container class to help container div when our content is put inside a ".container" $(document).on('settings.ace.help', function(ev, event_name, fixed) { if(event_name == 'main_container_fixed') { if(fixed) help_container.addClass('container'); else help_container.removeClass('container'); } }).triggerHandler('settings.ace.help', ['main_container_fixed', $('.main-container').hasClass('container')]) //in ajax mode when a content is loaded via ajax, we may want to update help sections $(document).on('ajaxloadcomplete.ace.help', function() { help.update_sections(); }); } function toggleHelp() { help.toggle(); var toggle_btn = $('#onpage-help-toggle-btn'); toggle_btn.find('.onpage-help-toggle-text').removeClass('onpage-help-toggle-text'); toggle_btn.toggleClass('btn-grey btn-info').parent().toggleClass('active'); } $(window).on('hashchange.start_help', function(e) { if(help == null && window.location.hash == '#help') { startHelp(); //add #help tag to sidebar links to enable help when navigating to the page $(document).on('click.start_help', '.sidebar .nav-list a', function() { var href = $(this).attr('href'); if( !href.match(/\#help$/) ) $(this).attr('href', href+'#help'); }); } }).triggerHandler('hashchange.start_help'); //some buttons inside demo pages that launch a help section $(document).on('click', '.btn-display-help', function(e) { e.preventDefault(); startHelp(); if( !help.is_active() ) toggleHelp(); var section = $(this).attr('href'); help.show_section_help(section); }); });