<?

/*
 * 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\">&lt;&lt; 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> &nbsp;&nbsp; " . 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 />";  // &nbsp;&nbsp; ".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 '&nbsp;&nbsp;&nbsp;';
		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']) . '&amp;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 '&nbsp;';
	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();
?>