see http://phpdocu.sourceforge.net/ // +----------------------------------------------------------------------+ // | Author: Christian Fowler // +----------------------------------------------------------------------+ // $Id$ /** * definitions */ global $gLibertySystem; define( 'PLUGIN_GUID_DATATOC', 'datatoc' ); global $gLibertySystem; $pluginParams = [ 'tag' => 'toc', 'auto_activate' => true, 'requires_pair' => false, 'load_function' => '\data_toc', 'title' => 'Structure Table Of Contents', 'help_page' => 'DataPluginTOC', 'description' => KernelTools::tra("Display a Table Of Contents for Structures"), 'help_function' => '\data_toc_help', 'syntax' => '{toc structure_id= }', 'plugin_type' => DATA_PLUGIN, 'booticon' => '{biticon ipackage="icons" iname="view-list-text" iexplain="Structure Table of Contents"}', 'taginsert' => '{toc}', 'structure_id' => 'id of the structure to display', ]; $gLibertySystem->registerPlugin( PLUGIN_GUID_DATATOC, $pluginParams ); $gLibertySystem->registerDataTag( $pluginParams['tag'], PLUGIN_GUID_DATATOC ); /** * Help Function */ function data_toc_help() { return '' .'' .'' .'' .'' .'' .'' .'' .'' .'' .'' .'
' . KernelTools::tra( "Key" ) . '' . KernelTools::tra( "Type" ) . '' . KernelTools::tra( "Comments" ) . '
display' . KernelTools::tra( "string") . '
' . KernelTools::tra("(optional)") . '
' . KernelTools::tra( "Will display a Table Of Contents for Structures, such as Wiki-books. Works only if the page where the tag is used is a part of some structure. If the page belongs to several wiki-books, use structure_id attribute.") . '
' . KernelTools::tra("Example: ") . '{toc structure_id=8 display=full_toc}'; } /** * Load Function */ function data_toc( $pData, $pParams ) { global $gStructure, $gContent, $gBitSmarty; if( is_object( $gStructure ) && $gStructure->isValid() ) { $struct = &$gStructure; } elseif( BitBase::verifyId( $pParams['structure_id'] ) ) { $struct = new LibertyStructure( $pParams['structure_id'] ); $struct->load(); } elseif( is_object( $gContent ) ) { $structures = $gContent->getStructures(); // We take the first structure. not good, but works for now - spiderr if( !empty( $structures[0] ) ) { require_once LIBERTY_PKG_CLASS_PATH.'LibertyStructure.php'; $struct = new LibertyStructure( $structures[0]['structure_id'] ); $struct->load(); } } $repl = ' '; if( !empty( $struct) && is_object( $struct ) && $struct->isValid()) { $get_structure = BitBase::verifyId( $structure_id ) ? $structure_id : $struct->mStructureId; $tree = $struct->getSubTree( $get_structure, !empty( $pParams['display'] ) && $pParams['display'] == 'full_toc' ); $gBitSmarty->assign( "subtree", $tree ); $repl = $gBitSmarty->fetch( "bitpackage:liberty/plugins/data_toc.tpl" ); } return $repl; }