2013-06-12 00:28:29 +02:00
< ?
2013-06-21 17:49:05 +02:00
ini_set ( 'display_errors' , 1 );
error_reporting ( E_ALL );
2013-06-12 00:28:29 +02:00
/*
* WARNING : DO NOT EDIT THIS FILE .
* If you edit this file , you will not be able to update to new versions of
* Daux . io without overwritting your changes . Instead use the config . json file
* in the / docs folder to customize your documentation .
*
2013-06-21 17:49:05 +02:00
* Want to add a new feature ? Send me a pull request or open an issue - https :// github . com / justinwalsh / daux . io
*
2013-06-12 00:28:29 +02:00
* Learn more about what you can customize here : http :// daux . io
*/
require_once ( 'libs/markdown_extended.php' );
// Check for homepage
$path = url_path ();
if ( $path === '/' || $path === '' ) {
$homepage = true ;
} else {
$homepage = false ;
}
2013-06-21 17:49:05 +02:00
// Daux.io Functions
2013-06-12 00:28:29 +02:00
function get_options () {
$options = array (
'title' => " Documentation " ,
'tagline' => false ,
'image' => false ,
'theme' => 'blue' ,
'float' => true ,
'repo' => false ,
'twitter' => array (),
'links' => array (),
'colors' => false
);
// Load User Config
$config_file = './docs/config.json' ;
if ( file_exists ( $config_file )) {
$config = json_decode ( file_get_contents ( $config_file ), true );
$options = array_merge ( $options , $config );
}
if ( $options [ 'theme' ] !== 'custom' ) {
// Load Theme
if ( ! in_array ( $options [ 'theme' ], array ( " blue " , " navy " , " green " , " red " ))) {
echo " <strong>Daux.io Config Error:</strong><br>The theme you set is not not a valid option. Please use one of the following options: " . join ( array_keys ( $themes ), ', ' ) . ' or <a href="http://daux.io">learn more</a> about how to customize the colors.' ;
exit ;
}
} else {
if ( empty ( $options [ 'colors' ])) {
echo '<strong>Daux.io Config Error:</strong><br>You are trying to use a custom theme, but did not setup your color options in the config. <a href="http://daux.io">Learn more</a> about how to customize the colors.' ;
exit ;
}
}
2013-06-21 17:49:05 +02:00
return $options ;
}
function homepage_url ( $tree ) {
// Check for homepage
if ( isset ( $tree [ 'index' ])) {
return '/' ;
} else {
return docs_url ( $tree );
2013-06-12 00:28:29 +02:00
}
2013-06-21 17:49:05 +02:00
}
2013-06-12 00:28:29 +02:00
2013-06-21 17:49:05 +02:00
function docs_url ( $tree , $branch = false ) {
// Get next branch
if ( ! $branch ) {
$branch = current ( $tree );
}
if ( $branch [ 'type' ] === 'file' ) {
return $branch [ 'url' ];
} else if ( ! empty ( $branch [ 'tree' ])) {
return docs_url ( $branch [ 'tree' ]);
} else {
// Try next folder...
$branch = next ( $tree );
if ( $branch ) {
return docs_url ( $tree , $branch );
} else {
echo '<strong>Daux.io Config Error:</strong><br>Unable to find the first page in the /docs folder. Double check you have at least one file in the root of of the /docs folder. Also make sure you do not have any empty folders. Visit the docs to <a href="http://daux.io">learn more</a> about how the default routing works.' ;
exit ;
}
}
2013-06-12 00:28:29 +02:00
}
function load_page ( $tree ) {
$branch = find_branch ( $tree );
if ( isset ( $branch [ 'type' ]) && $branch [ 'type' ] == 'file' ) {
$html = '' ;
if ( $branch [ 'name' ] !== 'index' ) {
$html .= '<div class="page-header"><h1>' . $branch [ 'title' ] . '</h1></div>' ;
}
$html .= MarkdownExtended ( file_get_contents ( $branch [ 'path' ]));
return $html ;
} else {
return " Oh No. That page dosn't exist " ;
}
}
function find_branch ( $tree ) {
$path = url_params ();
foreach ( $path as $peice ) {
// Check for homepage
if ( empty ( $peice )) {
$peice = 'index' ;
}
if ( isset ( $tree [ $peice ])) {
if ( $tree [ $peice ][ 'type' ] == 'folder' ) {
$tree = $tree [ $peice ][ 'tree' ];
} else {
$tree = $tree [ $peice ];
}
} else {
return false ;
}
}
return $tree ;
}
function url_path () {
$url = parse_url ( $_SERVER [ 'REQUEST_URI' ]);
$url = $url [ 'path' ];
return $url ;
}
function url_params () {
$url = url_path ();
$params = explode ( '/' , trim ( $url , '/' ));
return $params ;
}
function clean_sort ( $text ) {
// Remove .md file extension
$text = str_replace ( '.md' , '' , $text );
// Remove sort placeholder
$parts = explode ( '_' , $text );
if ( isset ( $parts [ 0 ]) && is_numeric ( $parts [ 0 ])) {
unset ( $parts [ 0 ]);
}
$text = implode ( '_' , $parts );
return $text ;
}
function clean_name ( $text ) {
$text = str_replace ( '_' , ' ' , $text );
return $text ;
}
function build_nav ( $tree , $url_params = false ) {
2013-06-21 17:49:05 +02:00
// Remove Index
unset ( $tree [ 'index' ]);
2013-06-12 00:28:29 +02:00
if ( ! is_array ( $url_params )) {
$url_params = url_params ();
}
$url_path = url_path ();
$html = '<ul class="nav nav-list">' ;
foreach ( $tree as $key => $val ) {
// Active Tree Node
if ( isset ( $url_params [ 0 ]) && $url_params [ 0 ] == $val [ 'clean' ]) {
array_shift ( $url_params );
// Final Node
if ( $url_path == $val [ 'url' ]) {
$html .= '<li class="active">' ;
} else {
$html .= '<li class="open">' ;
}
} else {
$html .= '<li>' ;
}
if ( $val [ 'type' ] == 'folder' ) {
$html .= '<a href="#" class="aj-nav folder">' . $val [ 'name' ] . '</a>' ;
$html .= build_nav ( $val [ 'tree' ], $url_params );
} else {
$html .= '<a href="' . $val [ 'url' ] . '">' . $val [ 'name' ] . '</a>' ;
}
$html .= '</li>' ;
}
$html .= '</ul>' ;
return $html ;
}
function get_tree ( $path = '.' , $clean_path = '' , $title = '' ){
$tree = array ();
$ignore = array ( 'config.json' , 'cgi-bin' , '.' , '..' );
$dh = @ opendir ( $path );
$index = 0 ;
// Loop through the directory
while ( false !== ( $file = readdir ( $dh ))){
// Check that this file is not to be ignored
if ( ! in_array ( $file , $ignore )) {
$full_path = " $path / $file " ;
$clean_sort = clean_sort ( $file );
$url = $clean_path . '/' . $clean_sort ;
$clean_name = clean_name ( $clean_sort );
// Title
if ( empty ( $title )) {
$full_title = $clean_name ;
} else {
$full_title = $title . ': ' . $clean_name ;
}
if ( is_dir ( " $path / $file " )) {
// Directory
$tree [ $clean_sort ] = array (
'type' => 'folder' ,
'name' => $clean_name ,
'title' => $full_title ,
'path' => $full_path ,
'clean' => $clean_sort ,
'url' => $url ,
'tree' => get_tree ( $full_path , $url , $full_title )
);
} else {
// File
$tree [ $clean_sort ] = array (
'type' => 'file' ,
'name' => $clean_name ,
'title' => $full_title ,
'path' => $full_path ,
'clean' => $clean_sort ,
'url' => $url ,
);
}
}
$index ++ ;
}
// Close the directory handle
closedir ( $dh );
return $tree ;
}
?>