111 lines
3.5 KiB
PHP
111 lines
3.5 KiB
PHP
<?php
|
|
require_once('Parsedown.php');
|
|
if(file_exists('config.php')) {
|
|
require_once('config.php');
|
|
} else {
|
|
require_once('config.example.php');
|
|
}
|
|
|
|
$func = $_GET['f'];
|
|
switch($func) {
|
|
case 'build': // Build the worship.html page
|
|
buildStaticPage();
|
|
break;
|
|
default:
|
|
showAdminPage();
|
|
break;
|
|
}
|
|
|
|
function buildStaticPage() {
|
|
$pd = new Parsedown();
|
|
$title = !empty($_POST['title'])?$_POST['title']:TITLE;
|
|
$out = outputHTMLHeader($title, true);
|
|
$out .= '<pre>';
|
|
$out .= print_r($_POST, true);
|
|
$out .= '</pre>';
|
|
$out .= '======';
|
|
foreach($_POST['chosen_files'] as $file) {
|
|
if(file_exists($file)) {
|
|
$md = file_get_contents($file);
|
|
$out .= '<div class="afile">';
|
|
$out .= $pd->text($md);
|
|
$out .= "</div>";
|
|
}
|
|
}
|
|
$out .= outputHTMLFooter(true);
|
|
$outfile = !empty($_POST['outfile'])?$_POST['outfile']:DEFAULT_FILE;
|
|
file_put_contents($outfile, $out);
|
|
}
|
|
|
|
function showAdminPage() {
|
|
$out = getHTMLHeader(TITLE)
|
|
.'<form class="pure-form" action="/manager.php?f=build" method="POST">'."\n"
|
|
.' <fieldset>'."\n"
|
|
.' <div class="margin10">'."\n"
|
|
.' <label for="filename">Output File:</label>'."\n"
|
|
.' <input name="filename" value="worship.html" placeholder="File Name" />'."\n"
|
|
.' <button class="pure-button pure-button-primary" type="submit">Build</button>'."\n"
|
|
.' </div>'."\n"
|
|
.' <div class="margin10">'."\n"
|
|
.' <label for="filter">Filter</label>'."\n"
|
|
.' <input onkeyup="updateFilter(this.value);" name="filter" value="" placeholder="Filter Files" />'."\n"
|
|
.' <table>'."\n"
|
|
.' <tbody>'."\n";
|
|
foreach(glob(MD_DIR.'/*.md') as $file) {
|
|
$base = basename($file, '.md');
|
|
$out.=' <tr data-file="'.$base.'">'."\n"
|
|
.' <td>'.$base.'</td>'
|
|
.'<td><button class="pure-button pure-button-secondary" onclick="addSong('.$filename.');">Add</button></td>'."\n"
|
|
.' </tr>'."\n";
|
|
}
|
|
$out.=' </tbody>'."\n"
|
|
.' </table>'."\n"
|
|
.' </div>'."\n"
|
|
.' </fieldset>'."\n"
|
|
.'</form>'."\n"
|
|
.'<script>'."\n"
|
|
.'var tablerows = document.getElementsByTagName("tr");'."\n"
|
|
.'function updateFilter(flt) {'."\n"
|
|
.' flt = flt.toLowerCase();'."\n"
|
|
.' for(var i = 0; i < tablerows.length; i++) {'."\n"
|
|
.' if(tablerows[i].dataset.file.toLowerCase().startsWith(flt)) {'."\n"
|
|
.' tablerows[i].classList.remove("hidden");'."\n"
|
|
.' } else {'."\n"
|
|
.' tablerows[i].classList.add("hidden");'."\n"
|
|
.' }'."\n"
|
|
.' }'."\n"
|
|
.'}'."\n"
|
|
.'</script>'."\n"
|
|
.getHTMLFooter();
|
|
echo $out;
|
|
}
|
|
|
|
function getHTMLHeader($title = TITLE) {
|
|
$out = '<!DOCTYPE html>'."\n"
|
|
.'<html lang="en">'."\n"
|
|
.' <head>'."\n"
|
|
.' <title>'.$title.'</title>'."\n"
|
|
.' <link rel="stylesheet" href="https://unpkg.com/purecss@1.0.0/build/pure-min.css" integrity="sha384-nn4HPE8lTHyVtfCBi5yW9d20FjT8BJwUXyWZT9InLYax14RDjBj46LmSztkmNP9w" crossorigin="anonymous">'."\n"
|
|
.' <style type="text/css">'."\n"
|
|
.' body { margin: 20px; }'."\n"
|
|
.' td {'."\n"
|
|
.' padding-top: 2px;'."\n"
|
|
.' padding-bottom: 3px;'."\n"
|
|
.' }'."\n"
|
|
.' .margin10 {'."\n"
|
|
.' margin: 10px;'."\n"
|
|
.' }'."\n"
|
|
.' </style>'."\n"
|
|
.' </head>'."\n"
|
|
.' <body>'."\n";
|
|
return $out;
|
|
}
|
|
|
|
function getHTMLFooter() {
|
|
$out = ' </body>'."\n"
|
|
.'</html>'."\n";
|
|
return $out;
|
|
}
|
|
|
|
?>
|