2015-09-19 09:19:56 +00:00
< ? php
register_module ([
" name " => " Help page " ,
2016-08-21 10:59:41 +00:00
" version " => " 0.9.3 " ,
2015-09-19 09:19:56 +00:00
" author " => " Starbeamrainbowlabs " ,
2016-03-19 18:41:22 +00:00
" description " => " Adds a rather useful help page. Access through the 'help' action. This module also exposes help content added to Pepperminty Wiki's inbuilt invisible help section system. " ,
2015-09-19 09:19:56 +00:00
" id " => " page-help " ,
" code " => function () {
2015-12-21 08:45:38 +00:00
global $settings ;
2016-06-15 18:20:03 +00:00
/**
* @ api { get } ? action = help [ & dev = yes ] Get a help page
* @ apiDescription Get a customised help page . This page will be slightly different for every wiki , depending on their name , settings , and installed modules .
* @ apiName Help
* @ apiGroup Utility
* @ apiPermission Anonymous
*
* @ apiParam { string } dev Set to 'yes' to get a developer help page instead . The developer help page gives some general information about which modules and help page sections are registered , and other various ( non - sensitive ) settings .
*/
2015-12-26 12:55:19 +00:00
/*
* ██ ██ ███████ ██ ██████
* ██ ██ ██ ██ ██ ██
* ███████ █████ ██ ██████
* ██ ██ ██ ██ ██
* ██ ██ ███████ ███████ ██
*/
2015-09-19 09:19:56 +00:00
add_action ( " help " , function () {
2016-08-20 10:27:26 +00:00
global $env , $paths , $settings , $version , $help_sections , $actions ;
2015-09-19 09:19:56 +00:00
2015-12-21 14:39:56 +00:00
// Sort the help sections by key
ksort ( $help_sections , SORT_NATURAL );
2015-12-21 14:35:27 +00:00
if ( isset ( $_GET [ " dev " ]) and $_GET [ " dev " ] == " yes " )
{
$title = " Developers Help - $settings->sitename " ;
$content = " <p> $settings->sitename runs on Pepperminty Wiki, an entire wiki packed into a single file. This page contains some information that developers may find useful.</p>
< p > A full guide to developing a Pepperminty Wiki module can be found < a href = '//github.com/sbrl/Pepperminty-Wiki/blob/master/Module_API_Docs.md#module-api-documentation' > on GitHub </ a >.</ p >
2016-03-19 18:41:22 +00:00
< h3 > Registered Help Sections </ h3 >
2015-12-21 14:35:27 +00:00
< p > The following help sections are currently registered :</ p >
< table >< tr >< th > Index </ th >< th > Title </ th >< th > Length </ th ></ tr > \n " ;
2016-03-26 14:23:38 +00:00
$totalSize = 0 ;
2015-12-21 14:35:27 +00:00
foreach ( $help_sections as $index => $section )
{
2016-03-26 14:23:38 +00:00
$sectionLength = strlen ( $section [ " content " ]);
$totalSize += $sectionLength ;
$content .= " \t \t \t <tr><td> $index </td><td> " . $section [ " title " ] . " </td><td> " . human_filesize ( $sectionLength ) . " </td></tr> \n " ;
2015-12-21 14:35:27 +00:00
}
2016-03-26 14:23:38 +00:00
$content .= " \t \t \t <tr><th colspan='2' style='text-align: right;'>Total:</th><td> " . human_filesize ( $totalSize ) . " </td></tr> \n " ;
2016-03-19 18:41:22 +00:00
$content .= " \t \t </table> \n " ;
$content .= " <h3>Registered Actions</h3>
< p > The following actions are currently registered :</ p > \n " ;
$content .= " <p> " . implode ( " , " , array_keys ( get_object_vars ( $actions ))) . " </p> " ;
2016-03-26 14:23:38 +00:00
$content .= " <h3>Environment</h3> \n " ;
2016-08-20 10:27:26 +00:00
$content .= " <ul> \n " ;
$content .= " <li> $settings->sitename 's root directory is " . ( ! is_writeable ( __DIR__ ) ? " not " : " " ) . " writeable.</li> \n " ;
$content .= " <li>The page index is currently " . human_filesize ( filesize ( $paths -> pageindex )) . " in size, and took " . $env -> perfdata -> pageindex_decode_time . " ms to decode.</li> " ;
if ( module_exists ( " feature-search " ))
{
search :: measure_invindex_load_time ( $paths -> searchindex );
$content .= " <li>The search index is currently " . human_filesize ( filesize ( $paths -> searchindex )) . " in size, and took " . $env -> perfdata -> searchindex_decode_time . " ms to decode.</li> " ;
}
$content .= " <li>The id index is currently " . human_filesize ( filesize ( $paths -> idindex )) . " in size, and took " . $env -> perfdata -> idindex_decode_time . " ms to decode.</li> " ;
2016-08-20 12:50:48 +00:00
$wikiSize = 0 ;
$wikiFiles = glob_recursive ( $env -> storage_prefix . " * " );
foreach ( $wikiFiles as $filename )
{
if ( endsWith ( $filename , " .php " )) continue ; // Skip php files
$wikiSize += filesize ( $filename );
}
$content .= " <li> $settings->sitename is currently " . human_filesize ( $wikiSize ) . " in size.</li> \n " ;
$content .= " </ul> " ;
2015-12-21 14:35:27 +00:00
}
2015-12-21 14:39:56 +00:00
else
{
$title = " Help - $settings->sitename " ;
$content = " <h1> $settings->sitename Help</h1>
2015-12-21 08:45:38 +00:00
< p > Welcome to $settings -> sitename !</ p >
2016-03-19 18:28:27 +00:00
< p > $settings -> sitename is powered by Pepperminty Wiki , a complete wiki in a box you can drop into your server and expect it to just < em > work </ em >.</ p > " ;
2015-12-21 14:39:56 +00:00
2016-04-09 07:14:55 +00:00
// Todo Insert a table of contents here?
2015-12-21 14:39:56 +00:00
foreach ( $help_sections as $index => $section )
{
// Todo add a button that you can click to get a permanent link
// to this section.
2016-03-21 16:35:22 +00:00
$content .= " <h2 id=' $index ' class='help-section-header'> " . $section [ " title " ] . " </h2> \n " ;
2015-12-21 14:39:56 +00:00
$content .= $section [ " content " ] . " \n " ;
}
2015-12-21 08:45:38 +00:00
}
2015-09-19 09:19:56 +00:00
exit ( page_renderer :: render_main ( $title , $content ));
});
2015-12-21 08:45:38 +00:00
// Register a help section on general navigation
2015-12-21 14:35:27 +00:00
add_help_section ( " 5-navigation " , " Navigating " , " <p>All the navigation links can be found on the top bar, along with a search box (if your site administrator has enabled it). There is also a "More..." menu in the top right that contains some additional links that you may fine useful.</p>
2015-12-21 08:45:38 +00:00
< p > This page , along with the credits page , can be found on the bar at the bottom of every page .</ p > " );
2015-12-21 14:35:27 +00:00
add_help_section ( " 999-extra " , " Extra Information " , " <p>You can find out whch version of Pepperminty Wiki $settings->sitename is using by visiting the <a href='?action=credits'>credits</a> page.</p>
< p > Information for developers can be found on < a href = '?action=help&dev=yes' > this page </ a >.</ p > " );
2015-09-19 09:19:56 +00:00
}
]);
?>