forked from science-ation/science-ation
225 lines
7.6 KiB
PHP
225 lines
7.6 KiB
PHP
<?
|
|
|
|
/*
|
|
* This file is part of the 'Science Fair In A Box' project
|
|
* SFIAB Website: http://www.sfiab.ca
|
|
*
|
|
* Copyright (C) 2008 James Grant <james@lightbox.org>
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public
|
|
* License as published by the Free Software Foundation, version 2.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; see the file COPYING. If not, write to
|
|
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
* Boston, MA 02111-1307, USA.
|
|
*/
|
|
?>
|
|
<?
|
|
require ('../common.inc.php');
|
|
require_once ('../user.inc.php');
|
|
user_auth_required('committee', 'admin');
|
|
|
|
// make sure storage folder exists
|
|
if (!file_exists('../data/userfiles'))
|
|
mkdir('../data/userfiles');
|
|
|
|
send_header('Website Content Manager',
|
|
array('Committee Main' => 'committee_main.php',
|
|
'Administration' => 'admin/index.php'),
|
|
'website_content_management');
|
|
|
|
?>
|
|
<div class="element"></div>
|
|
<script type="module">
|
|
import { Editor } from 'https://esm.sh/@tiptap/core'
|
|
import StarterKit from 'https://esm.sh/@tiptap/starter-kit'
|
|
|
|
new Editor({
|
|
element: document.querySelector('.element'),
|
|
extensions: [
|
|
StarterKit.configure({
|
|
heading: {
|
|
levels: [1, 2, 3],
|
|
},
|
|
}),
|
|
],
|
|
})
|
|
</script>
|
|
<?
|
|
|
|
if (get_value_from_array($_POST, 'action') == 'save') {
|
|
$err = false;
|
|
foreach ($config['languages'] AS $lang => $langname) {
|
|
$filename = stripslashes(get_value_from_array($_POST, 'filename', ''));
|
|
// $filename=ereg_replace("[^A-Za-z0-9\.\_\/]","_",$_POST['filename']);
|
|
|
|
if (substr($filename, -5) != '.html')
|
|
$filename = $filename . '.html';
|
|
|
|
$textname = "text_$lang";
|
|
$titlename = "title_$lang";
|
|
$showlogoname = "showlogo_$lang";
|
|
// get the dt here to insert with ALL the languages, we cant rely on the INSERT NOW() always inserting multiple records with the same timestamp!
|
|
$insertdt = date('Y-m-d H:i:s');
|
|
$text = stripslashes(get_value_from_array($_POST, $textname, ''));
|
|
|
|
$q = $pdo->prepare("INSERT INTO cms (filename,dt,lang,text,title,showlogo) VALUES (
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?
|
|
)");
|
|
$q->execute([$filename,$insertdt,$lang,$text,get_value_from_array($_POST, $titlename, ''),get_value_from_array($_POST, $showlogoname, '')]);
|
|
if ($pdo->errorInfo()) {
|
|
echo error(i18n('An error occurred saving %1 in %2', array($filename, $langname)));
|
|
$err = true;
|
|
}
|
|
}
|
|
if (!$err)
|
|
echo happy(i18n('%1 successfully saved', array($_POST['filename'])));
|
|
}
|
|
|
|
if (get_value_from_array($_GET, 'filename', '') || get_value_from_array($_GET, 'action', 'create')) {
|
|
echo "<a href=\"cms.php\"><< Back to file list</a><br />\n";
|
|
echo '<form method="post" action="cms.php">';
|
|
echo "<input type=\"hidden\" name=\"action\" value=\"save\">\n";
|
|
if (get_value_from_array($_GET, 'filename', ''))
|
|
echo '<input type="hidden" name="filename" value="' . htmlspecialchars($_GET['filename']) . "\">\n";
|
|
else
|
|
echo 'Choose filename to create: /web/<input type="text" name="filename" size="15">.html<hr />';
|
|
|
|
echo '<table width="100%" cellpadding="3">';
|
|
echo '<tr><td valign="top">';
|
|
foreach ($config['languages'] AS $lang => $langname) {
|
|
echo '<table class="tableview" width="100%">';
|
|
echo '<tr><th colspan="2">';
|
|
|
|
$q = $pdo->prepare("SELECT * FROM cms WHERE filename=? AND lang=? ORDER BY dt DESC LIMIT 1");
|
|
$q->execute([get_value_from_array($_GET, 'filename', ''),$lang]);
|
|
if ($r = $q->fetch(PDO::FETCH_OBJ)) {
|
|
if ($r->dt == '0000-00-00 00:00:00' || !$r->dt)
|
|
$dt = 'Never';
|
|
else
|
|
$dt = $r->dt;
|
|
echo '<b>' . htmlspecialchars($_GET['filename']) . " - $langname</b> " . i18n('Last updated') . ": $dt<br />";
|
|
if ($_GET['dt']) {
|
|
$q2 = $pdo->prepare("SELECT * FROM cms WHERE filename=? AND lang=? AND dt<=? ORDER BY dt DESC LIMIT 1");
|
|
$q2->execute([$_GET['filename'], $lang, $_GET['dt']]);
|
|
$r2 = $q2->fetch(PDO::FETCH_OBJ);
|
|
if ($r2->dt != $r->dt) {
|
|
echo "Displaying historical file. Date: $r->dt";
|
|
$r = $r2;
|
|
}
|
|
}
|
|
} else {
|
|
echo "<b>$langname</b><br />"; // ".i18n("Last updated").": $dt<br />";
|
|
}
|
|
echo "</th></tr>\n";
|
|
echo '<tr><td width="100">' . i18n('Page Title') . ":</td><td><input type=\"text\" name=\"title_$lang\" style=\"width: 99%;\" value=\"" . htmlspecialchars(get_value_property_or_default($r, 'title', '')) . "\"></td></tr>\n";
|
|
echo '<tr><td width="100">' . i18n('Show Logo') . ':</td><td>';
|
|
if (get_value_property_or_default($r, 'showlogo'))
|
|
$ch = 'checked="checked"';
|
|
else
|
|
$ch = '';
|
|
echo "<input $ch type=\"radio\" name=\"showlogo_$lang\" value=\"1\"> " . i18n('Yes');
|
|
echo ' ';
|
|
if (!get_value_property_or_default($r, 'showlogo'))
|
|
$ch = 'checked="checked"';
|
|
else
|
|
$ch = '';
|
|
echo "<input $ch type=\"radio\" name=\"showlogo_$lang\" value=\"0\"> " . i18n('No');
|
|
|
|
echo "</td></tr>\n";
|
|
echo '<tr><td colspan="2">';
|
|
require_once ('../fckeditor/fckeditor.php');
|
|
|
|
$oFCKeditor = new FCKeditor("text_$lang");
|
|
$oFCKeditor->BasePath = '../fckeditor/';
|
|
$oFCKeditor->Value = get_value_property_or_default($r, 'text');
|
|
$oFCKeditor->Width = '100%';
|
|
$oFCKeditor->Height = 400;
|
|
$oFCKeditor->Create();
|
|
|
|
echo "</td></tr></table>\n";
|
|
|
|
echo '<br />';
|
|
}
|
|
echo '</td><td width="130" valign="top">';
|
|
echo '<table class="tableview" width="130">';
|
|
|
|
if (get_value_from_array($_GET, 'historylimit', ''))
|
|
$historylimit = intval(get_value_from_array($_GET, 'historylimit', ''));
|
|
else
|
|
$historylimit = 30;
|
|
|
|
echo '<tr><th>' . i18n('File History') . "</th></tr>\n";
|
|
|
|
$q = $pdo->prepare("SELECT DISTINCT(dt) FROM cms WHERE filename=? ORDER BY dt DESC LIMIT ?");
|
|
$q->execute([get_value_from_array($_GET, 'filename', ''),$historylimit]);
|
|
$first = true;
|
|
if ($q->rowCount()) {
|
|
while ($r = $q->fetch(PDO::FETCH_OBJ)) {
|
|
if ($r->dt == $_GET['dt'])
|
|
$style = 'font-weight: bold;';
|
|
else
|
|
$style = 'font-weight: normal;';
|
|
|
|
if ($first && !$_GET['dt'])
|
|
$style = 'font-weight: bold;';
|
|
|
|
echo '<tr><td><a href="cms.php?filename=' . rawurlencode($_GET['filename']) . '&dt=' . rawurlencode($r->dt) . "\" style=\"font-size: 0.75em; $style\">$r->dt</a></td></tr>\n";
|
|
$first = false;
|
|
}
|
|
} else
|
|
echo "<tr><td><i>No History</i></td></tr>\n";
|
|
|
|
echo "</table>\n";
|
|
echo "</td></tr>\n";
|
|
|
|
echo '<tr><td colspan="2">';
|
|
echo '<table><tr><td>';
|
|
echo '<input type="submit" value="' . i18n('Save Page') . "\" />\n";
|
|
echo '</form>';
|
|
echo '</td><td>';
|
|
echo '<form method="get" action="cms.php">';
|
|
echo '<input type="submit" value="' . i18n('Cancel Changes') . "\" />\n";
|
|
echo "</form>\n";
|
|
echo "</td></tr></table>\n";
|
|
|
|
echo "</td></tr></table>\n";
|
|
} else {
|
|
echo i18n('Choose a web page filename to edit');
|
|
echo ' ';
|
|
echo '<a href="cms.php?action=create">' . i18n('or click here to create a new file') . "</a><br />\n";
|
|
|
|
echo '<table class="summarytable">';
|
|
$q = $pdo->prepare('SELECT DISTINCT(filename) AS filename FROM cms ORDER BY filename');
|
|
|
|
echo '<tr><th>' . i18n('Filename') . '</th><th>' . i18n('Last Update') . '</th></tr>';
|
|
while ($r = $q->fetch(PDO::FETCH_ASSOC)) {
|
|
echo '<tr><td><a href="cms.php?filename=' . rawurlencode($r->filename) . "\">/web/$r->filename</a></td>";
|
|
$q2 = $pdo->prepare("SELECT dt FROM cms WHERE filename=? ORDER BY dt DESC LIMIT 1");
|
|
$q->execute($r->filename);
|
|
$r2 = $q2->fetch(PDO::FETCH_OBJ);
|
|
if ($r2->dt == '0000-00-00 00:00:00')
|
|
$dt = 'Never';
|
|
else
|
|
$dt = $r2->dt;
|
|
echo "<td>$dt</td>";
|
|
echo '</tr>';
|
|
}
|
|
echo '</table>';
|
|
}
|
|
|
|
send_footer();
|
|
?>
|