jQNew(document).ready(function() { jQNew('.ui-dialog-titlebar-close').click(function() { jQNew('.ui-dialog').hide(); }); jQNew('.sidebar-page ul .li').each(function() { var $that = jQNew(this); if ($that.parent().find('ul').length > 0) { $that.prepend(''); } }); jQNew('.sidebar-page ul .li').click(function() { jQNew(this).parent().find('ul').first().slideToggle(300); }); jQNew('#toc_contents ul > li:first-child').each(function(e) { if (jQNew(this).children(':first').filter('ul').length > 0) { jQNew(this).css('list-style-type', 'none'); } }); jQNew('abbr').tooltip({ delay: { open: 500, close: 100 } }); /* http://www.kryogenix.org/code/browser/sorttable/ */ jQNew('.page table').each(function() { sorttable.makeSortable(jQNew(this).get(0)); }); // Scroll to a link smoothly smoothToPadding = jQNew('#dokuwiki__top .navbar').first().innerHeight() + 10; function smoothTo() { if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) { var target = jQNew(this.hash); target = target.length ? target : jQNew('[name=' + this.hash.slice(1) +']'); if (target.length) { jQNew('html,body').animate({ scrollTop: target.offset().top - smoothToPadding }, 200); return false; } } else { return true; } } jQNew('a').click(smoothTo); /* override footnote popups */ // kill old event jQNew('a.fn_top').unbind('mouseover', dw_page.footnoteDisplay); dw_page.insituPopup = function(target, popup_id) { // on first hover, set up and show the popover $el = jQNew(target); if (!$el.hasClass('popover-trigger')) { content = jQNew($el.attr('href')).closest('div.fn').html().replace(/((^|\s*,\s*).*?<\/sup>)+\s*/gi, '').replace(/\bid=(['"])([^"']+)\1/gi,'id="insitu__$2'); $el.popover({ 'content': content, 'toggle': 'popover', 'placement': 'bottom', 'trigger': 'hover', 'html': true, 'delay': { show: 0, hide: 1000 }, 'container': '#dokuwiki__content' }).addClass('popover-trigger').popover('show'); } }; dw_page.footnoteDisplay = function() { dw_page.insituPopup(this, 'insitu__fn'); }; // rebind new event jQNew('a.fn_top').mouseover(dw_page.footnoteDisplay); }); /* toolbar button to add a table */ function addBtnActionInsertTable($btn, props, edid) { // set up what happens when the button is clicked $btn.click(function() { // create a new element on the page. var $picker = jQNew(document.createElement('div')); $picker.addClass('modal fade'); $picker.attr('role', 'dialog') .attr('aria-hidden', 'true') .attr('aria-labelledby', 'Insert Table Modal Box') .attr('id', 'insert-table-popup') .css('position', 'absolute'); // set up the content of the element var html = ''; // the ultimate action of the new button function tableInsert($picker) { // get the size of the table var tabletext = "\n"; hrows = $picker.find('#hrows').val(); hcols = $picker.find('#hcols').val(); rows = $picker.find('#rows').val(); cols = $picker.find('#cols').val(); // make sure the table has cells if (hrows + rows < 1) { alert("You need more than 0 rows."); return false; } else if (hcols + cols < 1) { alert("You need more than 0 columns."); return false; } var i, j; // create header rows for (i = 0; i < hrows; i++) { for (j = 0; j < parseInt(hcols) + parseInt(cols); j++) { tabletext += "^ "; } tabletext += "^\n"; } // create body rows for (i = 0; i < rows; i++) { // create header columns for (j = 0; j < hcols; j++) { tabletext += "^ "; } // create body columns for (j = 0; j < cols; j++) { tabletext += "| "; } tabletext += "|\n"; } // insert the table into the page insertAtCarret(edid, tabletext + '\n'); // hide and remove the element $picker.modal('hide'); } function updatePreview() { var $table = $preview.find('table').html(''); var $markup = $picker.find('pre').text(''); var tablehtml = ''; var tabletext = ""; // make sure the table has cells if (hrows + rows < 1) { return false; } else if (hcols + cols < 1) { return false; } var i, j; // create header rows for (i = 0; i < hrows; i++) { tablehtml += ''; for (j = 0; j < parseInt(hcols) + parseInt(cols); j++) { tablehtml += ""; tabletext += "^ Header "; } tablehtml += "\n"; tabletext += "^\n"; } // create body rows for (i = 0; i < rows; i++) { tablehtml += ''; // create header columns for (j = 0; j < hcols; j++) { tablehtml += ""; tabletext += "^ Header "; } // create body columns for (j = 0; j < cols; j++) { tablehtml += ""; tabletext += "| content "; } tablehtml += "\n"; tabletext += "|\n"; } $table.html(tablehtml); $markup.text(tabletext); } // add the content to the element and insert it into the page $picker.append(html); jQNew('body').append($picker); var hrows = $picker.find('#hrows').val(); var hcols = $picker.find('#hcols').val(); var rows = $picker.find('#rows').val(); var cols = $picker.find('#cols').val(); var $preview = jQNew('.preview'); // set up the insert table action $picker.find('.btn-primary').bind('click', bind(tableInsert, $picker)); // set up handlers to show table preview $picker.find('#hrows').on('propertychange keyup input paste', function(e) { hrows = jQNew(this).val(); updatePreview(); }); $picker.find('#hcols').on('propertychange keyup input paste', function(e) { hcols = jQNew(this).val(); updatePreview(); }); $picker.find('#rows').on('propertychange keyup input paste', function(e) { rows = jQNew(this).val(); updatePreview(); }); $picker.find('#cols').on('propertychange keyup input paste', function(e) { cols = jQNew(this).val(); updatePreview(); }); updatePreview(); $picker.on('hidden.bs.modal', function() { $picker.remove(); }); // show the element as a modal window $picker.modal('show'); return $picker[0]; }); return true; } // add a new toolbar button if (window.toolbar !== undefined) { window.toolbar[window.toolbar.length] = { 'type' : 'InsertTable', // new type that links to the function 'title' : 'Insert Table', 'icon' : '../../tpl/starterbootstrap/img/table.png' }; } // hide toc initially setTimeout(function() { jQNew('#toc_contents').collapse('hide'); }, 10); function createPermalinks() { jQNew(':header').each(function() { console.log(jQNew(this)); var headerName = jQNew(this).attr('id'); if (headerName) { jQNew(this).prepend(''); } }); }; createPermalinks();