Added md editor, corrected articles/admin.php

This commit is contained in:
Samuel Ortion 2021-04-06 11:31:46 +02:00
parent 353db5a8cb
commit 6dbee3d585
7 changed files with 174 additions and 46 deletions

View File

@ -73,7 +73,7 @@ function listArticles() {
$results = array(); $results = array();
$data = Article::getList(); $data = Article::getList();
// print_r($data); // print_r($data);
$results['articles'][] = $data[0]; $results['articles'] = $data;
// $results['totalRows'] = $data['totalRows']; // $results['totalRows'] = $data['totalRows'];
$results['pageTitle'] = "All Articles"; $results['pageTitle'] = "All Articles";
if (isset($_GET['error'])) { if (isset($_GET['error'])) {

View File

@ -1,3 +1,27 @@
<?php
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Articles | Chiro - Canto</title>
<link rel="stylesheet" type="text/css" href="/styles/style.css">
</head>
<?php
include("$root/analytics/matomo.php");
?>
<body>
<?php include("$root/menu.php");?>
<?php include("$root/header.php");?>
<section>
<h2>All Articles</h2> <h2>All Articles</h2>
<?php if (isset($results['error'])) { ?> <?php if (isset($results['error'])) { ?>
<div class="error"><?php echo $results['error'] ?></div> <div class="error"><?php echo $results['error'] ?></div>
@ -10,7 +34,7 @@ if (isset($results['status'])) {?>
<th>Publication Date</th> <th>Publication Date</th>
<th>Article</th> <th>Article</th>
</tr> </tr>
<?php foreach($results as $article) { ?> <?php foreach($results['articles'] as $article) { ?>
<tr> <tr>
<td><?php echo date('j M Y', $article->publication_date)?></td> <td><?php echo date('j M Y', $article->publication_date)?></td>
<td> <td>
@ -21,3 +45,9 @@ if (isset($results['status'])) {?>
</table> </table>
<p><a href="admin.php?action=new">New article</a></p> <p><a href="admin.php?action=new">New article</a></p>
<p><a href="./">Return to Homepage</a></p> <p><a href="./">Return to Homepage</a></p>
</section>
<?php include("$root/footer.php");?>
</body>
<script src="/scripts/script.js"></script>
</html>

View File

@ -0,0 +1,70 @@
-- phpMyAdmin SQL Dump
-- version 5.1.0
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Generation Time: Apr 05, 2021 at 01:45 PM
-- Server version: 10.5.9-MariaDB
-- PHP Version: 7.4.17RC1
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `chirocanto`
--
-- --------------------------------------------------------
--
-- Table structure for table `articles`
--
CREATE TABLE `articles` (
`id` int(11) NOT NULL,
`created_on` datetime NOT NULL,
`modified_on` datetime NOT NULL,
`article_by` int(8) NOT NULL,
`title` varchar(125) COLLATE utf8mb4_unicode_ci NOT NULL,
`summary` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL,
`content` text COLLATE utf8mb4_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Dumping data for table `articles`
--
INSERT INTO `articles` (`id`, `created_on`, `modified_on`, `article_by`, `title`, `summary`, `content`) VALUES
(3, '2021-04-05 02:00:00', '1970-01-01 01:33:41', 9, 'First article of Chiro - Canto', 'What is Chiro-Canto ? Here is an attempt to make this point clearer...', '## What is Chiro-Canto\r\n\r\nChiro-Canto is a new website that forms an alternative to [xeno-canto.org](xeno-canto.org), adapted for Chiroptera taxon.\r\n\r\n## Who is behind Chiro-Canto\r\n\r\nChiro-Canto is developped by Samuel ORTION, a juvenile *Geekus biologicus*.\r\nIf you want to participate to its development, do not hesitate to fork and edit the git repository.\r\n\r\n## Source code and license\r\n\r\nChiro-Canto is available under the GNU Affero GPL v3 license at [https://forge.ortion.xyz/Chiro-Canto/chiro-canto](https://forge.ortion.xyz/Chiro-Canto/chiro-canto)\r\n\r\n## Who can use Chiro-Canto\r\n\r\nChiro-Canto is open to every one.\r\n\r\n## What is the purpose of Chiro-Canto\r\n\r\nChiro-Canto, as an alternative of Xeno-Canto, aims to offer a set of tools that proposes a support on acoustic identification through its forum and sound sharing plateform.\r\n\r\n');
--
-- Indexes for dumped tables
--
--
-- Indexes for table `articles`
--
ALTER TABLE `articles`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `articles`
--
ALTER TABLE `articles`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View File

@ -20,13 +20,23 @@ function select() {
// let bold_button = document.getElementById('bold').addEventListener('click', function() { // let bold_button = document.getElementById('bold').addEventListener('click', function() {
function bold() { function bold() {
let selection = select(); // let selection = select();
if (selection == "") { // if (selection == "") {
alert("Please select text to bold."); // alert("Please select text to bold.");
// }
// else {
// document.getElementById('reply').innerHTML.replace(selection, `**${selection}**`);
// }
if (window.getSelection) {
var sel = window.getSelection();
if (sel.rangeCount) {
var range = sel.getRangeAt(0).cloneRange();
range.surroundContents(document.createTextNode('**'));
sel.removeAllRanges();
sel.addRange(range);
} }
else {
document.getElementById('reply').innerHTML.replace(selection, `**${selection}**`);
} }
} }
@ -58,3 +68,14 @@ url_button.addEventListener('click', function() {
// sel.removeAllRanges(); // sel.removeAllRanges();
// sel.addRange(range); // sel.addRange(range);
// } // }
function surroundSelection(element) {
if (window.getSelection) {
var sel = window.getSelection();
if (sel.rangeCount) {
var range = sel.getRangeAt(0).cloneRange();
range.surroundContents(element);
sel.removeAllRanges();
sel.addRange(range);
}
}
}

View File

@ -45,7 +45,7 @@ if (isset($_POST['submit']))
{ {
$_SESSION['error_msg'] .= "You did not enter your reply. \n"; $_SESSION['error_msg'] .= "You did not enter your reply. \n";
} }
if (isset($_POST['reply'])) if (isset($_POST['reply']) and $_POST['reply'] != "")
{ {
$reply_content = $_POST['reply']; $reply_content = $_POST['reply'];
} else } else
@ -64,8 +64,6 @@ if (isset($_POST['submit']))
if ($_SESSION['error_msg'] == "") if ($_SESSION['error_msg'] == "")
{ {
send_reply($reply_content, $topic_id, $_SESSION['username']); send_reply($reply_content, $topic_id, $_SESSION['username']);
header('Location: '."/forum/topics/?topic$topic_id");
} else {
header('Location: '."/auth/login/");
} }
header('Location: '."/forum/topics/?topic=$topic_id");
?> ?>

View File

@ -34,6 +34,8 @@ if (isset($_GET['topic'])){
try { try {
$rows = $req->fetchAll(PDO::FETCH_ASSOC); $rows = $req->fetchAll(PDO::FETCH_ASSOC);
?> ?>
<link rel="stylesheet" href="https://unpkg.com/easymde/dist/easymde.min.css">
<script src="https://unpkg.com/easymde/dist/easymde.min.js"></script>
<h3><?=$subject?></h3> <h3><?=$subject?></h3>
<table id="replies"> <table id="replies">
<thead> <thead>
@ -59,9 +61,9 @@ if (isset($_GET['topic'])){
} }
?> ?>
<tr> <tr>
<td><?="$firstname $lastname<br> ($username)"?></td> <td class="author"><?="<span class='name'>$firstname $lastname</span><br> <span class='username'>($username)</span>"?></td>
<td><?=$Parsedown->text($row['reply_content'])?></td> <td class="reply"><?=$Parsedown->text($row['reply_content'])?></td>
<td><?=$row['reply_date']?></td> <td class="date"><?=$row['reply_date']?></td>
</tr> </tr>
<?php <?php
} }
@ -70,10 +72,10 @@ if (isset($_GET['topic'])){
</table> </table>
<br> <br>
<h2>Your Reply</h2> <h2>Your Reply</h2>
<!--
<div class="container column"> <div class="container column">
<div class="container items row"> <div class="container items row">
<button id="bold" title="bold" onmousedown="bold()"><b>B</b></button> <button id="bold" title="bold" onclick="bold()"><b>B</b></button>
<button id="italic" title="italic"><i>I</i></button> <button id="italic" title="italic"><i>I</i></button>
<button id="underline" title="underline"><u>U</u></button> <button id="underline" title="underline"><u>U</u></button>
<button id="crossed" title="crossed"><s>s</s></button> <button id="crossed" title="crossed"><s>s</s></button>
@ -85,10 +87,13 @@ if (isset($_GET['topic'])){
<button id="cite" title="cite"><img src="/media/icons/cite.svg" alt="cite"></button> <button id="cite" title="cite"><img src="/media/icons/cite.svg" alt="cite"></button>
<button id="image" title="image"><img src="/media/icons/dslr.png" alt="image"></button> <button id="image" title="image"><img src="/media/icons/dslr.png" alt="image"></button>
</div> </div>
</div> </div> -->
<form action="sendreply.php" method="post"> <form action="sendreply.php" method="post">
<input type="hidden" name="topic_id" value="<?=$topic_id?>"> <input type="hidden" name="topic_id" value="<?=$topic_id?>">
<textarea name="reply" id="reply" cols="30" rows="10" placeholder="Enter your reply (support Markdown).."></textarea> <textarea name="reply" id="reply" cols="30" rows="10" placeholder="Enter your reply (support Markdown).."></textarea>
<script>
var easyMDE = new EasyMDE({showIcons: ['strikethrough', 'code', 'table', 'redo', 'heading', 'undo', 'heading-bigger', 'heading-smaller', 'heading-1', 'heading-2', 'heading-3', 'clean-block', 'horizontal-rule']});
</script>
<input type="submit" name="submit" value="submit"> <input type="submit" name="submit" value="submit">
<input type="reset" name="reset" value="reset"> <input type="reset" name="reset" value="reset">
</form> </form>
@ -105,7 +110,7 @@ if (isset($_GET['topic'])){
} catch (Exception $e) } catch (Exception $e)
{ {
die("Error : ".$e->getMessage()); die("Error : ".$e->getMessage());
echo "Can fetch topic data.\n"; echo "Can't fetch topic data.\n";
} }
} }
else { else {

View File

@ -319,3 +319,7 @@ form#url-form {
border-radius: 5px; border-radius: 5px;
border: 1px solid #ccc; border: 1px solid #ccc;
} }
table#replies td {
background-color: white;
}