Praca, praca

Took 5 hours 39 minutes
This commit is contained in:
Krzysztof 'KrzysiekSiemv' Smaga
2023-05-14 23:21:51 +02:00
parent 36302fbaf1
commit 1bb536cd12
22 changed files with 502 additions and 52 deletions
+14 -7
View File
@@ -10,22 +10,19 @@
const BLOG_TITLE = "Kwiatowy Blog";
// Opis bloga
const BLOG_DESC = "sdf";
const BLOG_DESC = "ef";
// Autor bloga/Nazwa wyświetlana dla głównego administratora bloga
const BLOG_AUTHOR = "Krzysiek Smaga";
// Tagi bloga
const BLOG_TAGS = "nowy, pierwszy, super";
const BLOG_TAGS = "kwiaty, rośliny";
// Domena bloga
const BLOG_DOMAIN = "http://localhost";
// Ikona bloga (format .PNG)
const BLOG_ICON = "{BLOG_ICON}";
// Nazwa pliku strony głównej
const BLOG_INDEX = "{BLOG_INDEX}";
const BLOG_ICON = "";
/*
* KONFIGURACJA BAZY DANYCH
@@ -43,6 +40,16 @@
// Baza danych dla bloga
const DB_NAME = "blog";
/*
* KONFIGURACJA NARZĘDZIA SERWEROWEGO
*/
// Port, który ma używać PHP dla serwera publicznego
const PUB_PORT = "8085";
// Port, który ma używać PHP dla serwera deweloperskiego
const DEV_PORT = "8086";
/*
* KONFIGURACJA KONTA ADMINISTRATORA
*/
@@ -51,7 +58,7 @@
const ADMIN_USER = "admin";
// Adres mailowy kontaktowy do głównego administratora bloga
const ADMIN_EMAIL = "admin@blog.pl";
const ADMIN_EMAIL = "krzysiek-smaga@outlook.com";
// Hasło dla głównego administratora bloga
const ADMIN_PASS = "root";
+18 -1
View File
@@ -12,7 +12,7 @@
<p>Jestem Twoim przyszłym blogiem! :D</p>
<p>Ale zanim do tego dojdzie, skonfiguruj mnie. Przeprowadzę Cię przez proces konfiguracji mnie, dzięki któremu będę żył! Nie potrzeba poświęcać mi dużo czasu. Wystarczy dosłownie maks 5 minut.</p>
<hr>
<form method="POST" action="index.php">
<form method="POST" action="index.php" enctype="multipart/form-data">
<label class="form-label" for="BLOG_AUTHOR">Jak się nazywasz mój twórco?</label>
<input class="form-control mb-3" type="text" name="BLOG_AUTHOR" placeholder="Jan Kowalski" required/>
<div id="config-blog">
@@ -27,6 +27,8 @@
<input class="form-control mb-3" type="text" name="BLOG_TAGS" placeholder="kwiaty, rośliny, drzewa" required/>
<label class="form-label" for="BLOG_DOMAIN">Domena bloga:</label>
<input class="form-control mb-3" type="text" name="BLOG_DOMAIN" placeholder="https://kwiatowyblog.pl" />
<label class="form-label" for="BLOG_ICON">Ikona bloga:</label>
<input class="form-control mb-3" type="file" name="BLOG_ICON" accept="image/png" />
</div>
<div id="config-db">
<hr>
@@ -49,6 +51,21 @@
<button class="btn btn-primary mb-3" type="button" id="testConn">Testuj połączenie</button>
<p id="connStatus"></p>
</div>
<div id="config-dev">
<hr>
<h3>Konfiguracja narzędziowego</h3>
<p>Jeżeli chcesz korzystać z korzyści, jakie dają wbudowane narzędzia tego silnika, możesz ustawić pod siebie to, co chcesz. </p>
<div class="row">
<div class="col">
<label class="form-label" for="PUB_PORT">Nazwa użytkownika:</label>
<input class="form-control mb-3" type="number" name="PUB_PORT" min="1" max="65535" placeholder="8080" value="8080" required>
</div>
<div class="col">
<label class="form-label" for="DEV_PORT">Hasło:</label>
<input class="form-control mb-3" type="number" name="DEV_PORT" min="1" max="65535" placeholder="8081" value="8081" required />
</div>
</div>
</div>
<div id="config-admin">
<hr>
<h3>Administrator bloga</h3>
+1 -2
View File
@@ -16,8 +16,7 @@
header("location: be_panel.php");
else
header("location: index.php");
} else
header("location: index.php");
}
?>
<!DOCTYPE html>
<html lang="pl">
+42 -1
View File
@@ -1,5 +1,33 @@
<?php
require "_config.php";
require "vendor/blog-engine/php/Authentication/AuthController.php";
use BlogEngine\Authentication\AuthController;
$auth = new AuthController();
$conn = $auth->Connection();
if(!isset($_COOKIE['uToken_BE']))
header("location: be_login.php");
$site = ($_POST['site'] ?? "home");
$elements = array();
$dashboard_tabs_dir = "vendor/blog-engine/php/Dashboard/Tabs";
$dashboard_tabs = scandir($dashboard_tabs_dir);
foreach ($dashboard_tabs as $dashboard_tab){
if(str_contains($dashboard_tab, ".php")) {
$file = "$dashboard_tabs_dir/$dashboard_tab";
$name = fgets(fopen($file, 'r'));
$name = substr($name, strlen("<!-- "), strlen($name) - (strlen("<!-- ") + strlen(" -->")));
$filename = basename($file, ".php");
array_push($elements, [
"Nazwa" => $name,
"Plik" => $filename
]);
}
}
?>
<!DOCTYPE html>
<html lang="pl">
@@ -10,6 +38,19 @@
<script src="vendor/blog-engine/blog.js" defer></script>
</head>
<body>
<div class="container">
<h1 class="mt-3">Zarządzanie <?php echo BLOG_TITLE ?></h1>
<form method="POST" action="be_panel.php">
<ul class="nav nav-tabs mb-5">
<?php
foreach ($elements as $element){
$active = ($site == $element['Plik']?" active":"");
echo "<li class='nav-item'><button class='nav-link$active' name='site' value='{$element['Plik']}'>{$element['Nazwa']}</button></li>";
}
?>
</ul>
</form>
<?php include "$dashboard_tabs_dir/$site.php"; ?>
</div>
</body>
</html>
+66
View File
@@ -0,0 +1,66 @@
<?php
require "../_config.php";
require "../vendor/blog-engine/php/Authentication/AuthController.php";
use BlogEngine\Authentication\AuthController;
$auth = new AuthController();
$conn = $auth->Connection();
$post = null;
if(isset($_POST['edit'])){
$get_post = "SELECT name, title, content, status, comments, added_at, updated_at FROM posts WHERE id_post = {$_POST['edit']}";
$res_post = mysqli_fetch_row(mysqli_query($conn, $get_post));
$post = [
"Nazwa" => $res_post[0],
"Tytuł" => $res_post[1],
"Treść" => $res_post[2],
"Status" => $res_post[3],
"Komentarze" => $res_post[4],
"Dodano" => $res_post[5],
"Zaktualizowano" => $res_post[6]
];
}
?>
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8" />
<title>Panel <?php echo BLOG_TITLE ?></title>
<link rel="stylesheet" href="../vendor/blog-engine/blog.css" />
<script src="../vendor/blog-engine/blog.js" defer></script>
</head>
<body>
<div class="container pt-3">
<h2 class="mb-5">Dodawanie posta</h2>
<form method="POST" action="be_post.php">
<div class="row mb-3">
<div class="col-md-8 d-grid">
<div class="form-floating">
<input type="text" class="form-control" id="title" name="title" placeholder="Tytuł posta" <?php if($post != null) echo "value='{$post['Tytuł']}'" ?>>
<label for="title">Tytuł posta</label>
</div>
</div>
<div class="col-md-4 d-grid">
<button type="submit" class="btn btn-lg btn-success" name="add">Dodaj posta</button>
</div>
</div>
<div class="row">
<button type="button" id="bold_button" onclick="insertAtCursor(document.getElementById('editor'), '****', true)">Bold</button>
<button type="button" id="bold_button" onclick="insertAtCursor(document.getElementById('editor'), '**', true)">Italic</button>
<button type="button" id="bold_button" onclick="insertAtCursor(document.getElementById('editor'), '#######', true)">Header</button>
</div>
<div class="row">
<div class="col-md-8">
<div class="card p-3" contenteditable="true" id="editor" style="min-height: 100vh">
<?php if($post != null) echo $post['Treść'] ?>
</div>
</div>
<div class="col-md-4">
</div>
</div>
</form>
</div>
</body>
</html>
+156 -23
View File
@@ -1,8 +1,11 @@
<?php
if(file_exists("_config.php")) {
require "vendor/blog-engine/php/Dictionary.php";
}
class CompileIt{
public \BlogEngine\Dictionary $dictionary;
public function __construct(public $src = __DIR__ . "/src/", public $htmls = [], public $csss = [], public $jss = [], public $version = 0){
public function __construct(public $src = __DIR__ . "/src/", public $htmls = [], public $csss = [], public $jss = [], public float $version = 0){
if(file_exists("_config.php"))
$this->dictionary = new BlogEngine\Dictionary();
// POBIERANIE ZAWARTOŚCI FOLDERU src
@@ -11,28 +14,77 @@
$this->csss = scandir($src . "css");
$this->jss = scandir($src . "js");
//$this->version =
$this->version = floatval(file_get_contents("version"));
}
public function main() : void{
$this->checkFolders();
$this->compileFiles();
echo "Done";
public function main($argv, $argc) : void{
if($argc > 1){
switch($argv[1]){
case "compile":
if($argv[2] != null)
switch($argv[2]) {
case "dev":
echo "
==========================
= KOMPILOWANIE DO 'dev'
==========================
";
$this->versionUp("dev");
$this->addCustoms("dev");
$this->checkFolders("dev");
$this->compileFiles("dev");
break;
default:
echo "
==========================
= KOMPILOWANIE DO 'pub'
==========================
";
$this->versionUp("pub");
$this->addCustoms("pub");
$this->checkFolders("public");
$this->compileFiles("public");
break;
}
else {
echo "
==========================
= KOMPILOWANIE DO 'pub'
==========================
";
$this->versionUp("pub");
$this->addCustoms("pub");
$this->checkFolders("public");
$this->compileFiles("public");
}
break;
case "start-server":
if($argv[2] != null)
$this->runServer($argv[2]);
else
$this->runServer("pub");
break;
case "help":
$this->help();
break;
}
} else {
echo "Brak parametru rozruchowego. Wpisz help, aby zobaczyć listę dostępnych komend. \n";
}
}
/*
* SPRAWDZANIE CZY SĄ FOLDERY css I js
*/
function checkFolders() : void{
if(!file_exists("public/css"))
mkdir("public/css");
function checkFolders($folder) : void{
if(!file_exists("$folder/css"))
mkdir("$folder/css");
if(!file_exists("public/js"))
mkdir("public/js");
if(!file_exists("$folder/js"))
mkdir("$folder/js");
}
function compileFiles() : void{
function compileFiles($folder) : void{
// KOPIOWANIE PLIKÓW HTML DO PUBLICZNEGO FOLDERU
foreach ($this->htmls as $html) {
$file = $this->src . "views/" . $html;
@@ -40,25 +92,26 @@
$name = basename($file);
$site = file_get_contents($file);
foreach (array_keys($this->dictionary->page_tags) as $page_tag) {
echo $page_tag;
if ($page_tag == "{CSS}") {
$this->dictionary->page_tags[$page_tag] .= "<link rel='stylesheet' href='vendor/blog-engine/blog.css' />";
for ($j = 2; $j < count($this->csss); $j++)
$this->dictionary->page_tags[$page_tag] .= "\n <link rel='stylesheet' href='public/css/{$this->csss[$j]}' />";
$this->dictionary->page_tags[$page_tag] .= "\n <link rel='stylesheet' href='$folder/css/{$this->csss[$j]}?v{$this->version}' />";
}
if ($page_tag == "{JS}") {
$this->dictionary->page_tags[$page_tag] .= "<script src='vendor/blog-engine/blog.js'></script>";
for ($j = 2; $j < count($this->jss); $j++)
$this->dictionary->page_tags[$page_tag] .= "\n <script src='public/js/{$this->jss[$j]}'></script>";
$this->dictionary->page_tags[$page_tag] .= "\n <script src='$folder/js/{$this->jss[$j]}?v{$this->version}'></script>";
}
$site = str_replace($page_tag, $this->dictionary->page_tags[$page_tag], $site);
}
$site_file = fopen("public/" . $name, "w");
$site = str_replace("<body>", "<body>\n<?php include \$topbar; ?>", $site);
$site_file = fopen("$folder/" . $name, "w");
fwrite($site_file, $site);
fclose($site_file);
echo "* Plik '$html' przetworzono do folderu '$folder'!\n";
}
}
@@ -69,9 +122,11 @@
$name = basename($file);;
$style = file_get_contents($file);
$style_file = fopen("public/css/" . $name, "w");
$style_file = fopen("$folder/css/" . $name, "w");
fwrite($style_file, $style);
fclose($style_file);
echo "* Plik '$css' przetworzono do folderu '$folder'!\n";
}
}
@@ -82,13 +137,91 @@
$name = basename($file);
$script = file_get_contents($file);
$script_file = fopen("public/js/" . $name, "w");
$script_file = fopen("$folder/js/" . $name, "w");
fwrite($script_file, $script);
fclose($script_file);
}
echo "* Plik '$js' przetworzono do folderu '$folder'!\n";
}
}
}
public function versionUp($type) : void{
switch($type){
case "pub":
$this->version++;
break;
case "dev":
$this->version += 0.1;
break;
}
$verfile = fopen("version", "w+");
fwrite($verfile, $this->version);
fclose($verfile);
}
public function addCustoms($type) : void {
$json = json_decode(file_get_contents("custom.json"), true);
switch($type){
case "dev":
foreach ($json["dev"]["css"] as $css){
$this->dictionary->page_tags["{CSS}"] .= "\n <link rel='stylesheet' href='$css' />";
echo "* Dodano '$css' do styli w '$type'!\n";
}
foreach ($json["dev"]["js"] as $js){
$this->dictionary->page_tags["{JS}"] .= "\n <script src='$js'></script>";
echo "* Dodano '$js' do skryptów w '$type'!\n";
}
break;
case "pub":
foreach ($json["pub"]["css"] as $css){
$this->dictionary->page_tags["{CSS}"] .= "\n <link rel='stylesheet' href='$css' />";
echo "* Dodano '$css' do styli w '$type'!\n";
}
foreach ($json["pub"]["js"] as $js){
$this->dictionary->page_tags["{JS}"] .= "\n <script src='$js'></script>";
echo "* Dodano '$js' do skryptów w '$type'!\n";
}
break;
}
}
public function runServer($type) : void{
if(file_exists("_config.php")){
$port = match ($type) {
"dev" => DEV_PORT,
default => PUB_PORT,
};
} else
$port = 14071;
echo "
=========================================
Uruchamianie serwera na adresie:
* http://127.0.0.1:$port *
Aby zatrzymać serwer, naciśnij Ctrl+C
=========================================
";
exec("php -S 127.0.0.1:$port -t " . __DIR__);
}
public function help() : void {
echo "
===============================
= BLOG ENGINE v0.1
= Krzysztof KrzysiekSiemv Smaga 2023
===============================
Dostępne komendy dla narzędzia:
* start-server [pub/dev] - uruchom serwer dla projektu. Opcja 'dev' specjalna dla programisty, opcja 'pub' dla każdego użytkownika. Domyślnie 'pub'
* help - wyświetl listę komend
* compile [pub/dev] - skompiluj projekt strony z folderu 'src'. Opcja 'dev' specjalna dla programisty, opcja 'pub' dla każdego użytkownika. Domyślnie 'pub'
";
}
}
$exec = new CompileIt();
$exec->main();
$exec->main($argv, $argc);
+21
View File
@@ -0,0 +1,21 @@
{
"_comment": "Tutaj możesz dodawać linki do swoich styli zewnętrznych, bądź skryptów, które chcesz użyć na swoim blogu.",
"dev": {
"css": [
"vendor/blog-engine/blog.css",
"https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css"
],
"js": [
"vendor/blog-engine/blog.js",
"https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js"
]
},
"pub": {
"css": [
"vendor/blog-engine/blog.css"
],
"js": [
"vendor/blog-engine/blog.js"
]
}
}
View File
+25
View File
@@ -0,0 +1,25 @@
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<title>Witaj świecie! - Kwiatowy Blog</title>
<link rel='stylesheet' href='vendor/blog-engine/blog.css' />
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css' />
<link rel='stylesheet' href='dev/css/style.css?v2' />
<meta name="author" content="Krzysiek Smaga">
<meta name="keywords" content="kwiaty, rośliny">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<?php include $topbar; ?>
<h1>Kwiatowy Blog</h1>
<p>ef</p>
<a href="be_login.php">Zaloguj się do panelu</a>
</body>
<script src='vendor/blog-engine/blog.js'></script>
<script src='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js'></script>
<script src='dev/js/script.js?v2'></script>
</html>
View File
+24 -2
View File
@@ -25,10 +25,22 @@
else
$ssl = 0;
if(isset($_FILES['BLOG_ICON'])){
if(strtolower(pathinfo(basename($_FILES['BLOG_ICON']['name']),PATHINFO_EXTENSION)) == "png") {
if (move_uploaded_file($_FILES['BLOG_ICON']['tmp_name'], "resources/favicon.png")) {
$file = "resources/favicon.png";
}
$file = "";
}
$file = "";
} else
$file = "";
// Wczytywanie danych do tablicy
$data = [
"BLOG_TITLE" => $_POST['BLOG_TITLE'], "BLOG_DESC" => $_POST['BLOG_DESC'], "BLOG_AUTHOR" => $_POST['BLOG_AUTHOR'], "BLOG_TAGS" => $_POST['BLOG_TAGS'], "BLOG_DOMAIN" => $_POST['BLOG_DOMAIN'],
"BLOG_TITLE" => $_POST['BLOG_TITLE'], "BLOG_DESC" => $_POST['BLOG_DESC'], "BLOG_AUTHOR" => $_POST['BLOG_AUTHOR'], "BLOG_TAGS" => $_POST['BLOG_TAGS'], "BLOG_DOMAIN" => $_POST['BLOG_DOMAIN'], "BLOG_ICON" => $file,
"DB_HOST" => $_POST['DB_HOST'], "DB_USER" => $_POST['DB_USER'], "DB_PASS" => $_POST['DB_PASS'], "DB_NAME" => $_POST['DB_NAME'],
"PUB_PORT" => $_POST['PUB_PORT'], "DEV_PORT" => $_POST['DEV_PORT'],
"ADMIN_USER" => $_POST['ADMIN_USER'], "ADMIN_EMAIL" => $_POST['ADMIN_EMAIL'], "ADMIN_PASS" => $_POST['ADMIN_PASS'],
"MAIL_NAME" => $_POST['MAIL_NAME'], "MAIL_PASS" => $_POST['MAIL_PASS'], "MAIL_SRV" => $_POST['MAIL_SRV'], "MAIL_PORT" => $_POST['MAIL_PORT'], "MAIL_SSL" => $ssl
];
@@ -58,10 +70,20 @@
}
if(file_exists("_config.php")){
$topbar = "";
if($_SERVER['SERVER_PORT'] == DEV_PORT) {
if(isset($_SESSION['uToken_BE'])){
if($auth->CheckRole($_SESSION['uToken_BE']) == "administrator")
include "vendor/blog-engine/php/Sites/Views/be-topbar.php";
$topbar = "vendor/blog-engine/php/Sites/Views/be-topbar.php";
}
require "dev/index.html";
} else if($_SERVER['SERVER_PORT'] == PUB_PORT) {
if(isset($_SESSION['uToken_BE'])){
if($auth->CheckRole($_SESSION['uToken_BE']) == "administrator")
$topbar = "vendor/blog-engine/php/Sites/Views/be-topbar.php";
}
require "public/index.html";
} else
echo "<h1>Uruchom ponownie serwer</h1>";
} else
require "be_firstrun.php";
+7 -4
View File
@@ -3,16 +3,19 @@
<head>
<meta charset="UTF-8">
<title>Witaj świecie! - Kwiatowy Blog</title>
<link rel='stylesheet' href='vendor/blog-engine/blog.css' />
<link rel='stylesheet' href='public/css/style.css' />
<link rel='stylesheet' href='public/css/style.css?v1' />
<meta name="author" content="Krzysiek Smaga">
<meta name="keywords" content="nowy, pierwszy, super">
<meta name="keywords" content="kwiaty, rośliny">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<h1>Kwiatowy Blog</h1>
<p>sdf</p>
<p>ef</p>
</body>
<script src='vendor/blog-engine/blog.js'></script>
<script src='public/js/script.js'></script>
<script src='public/js/script.js?v1'></script>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

+2
View File
@@ -4,6 +4,7 @@
<meta charset="UTF-8">
<title>Witaj świecie! - {TITLE}</title>
{CSS}
{FAVICON}
<meta name="author" content="{AUTHOR}">
<meta name="keywords" content="{KEYWORDS}">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
@@ -11,6 +12,7 @@
<body>
<h1>{TITLE}</h1>
<p>{DESCRIPTION}</p>
<a href="be_login.php">Zaloguj się do panelu</a>
</body>
{JS}
</html>
+22 -1
View File
@@ -1,4 +1,7 @@
import * as bootstrap from "../twbs/bootstrap/dist/js/bootstrap.min.js";
(async() => {
const bootstrap = await import("../twbs/bootstrap/dist/js/bootstrap.min.js");
});
if(document.getElementById("testConn"))
document.getElementById("testConn").addEventListener("click", () => testConnection());
@@ -17,3 +20,21 @@ function testConnection(){
xmlhttp.open("GET", "_checkdbconn.php?s=" + server + "&u=" + user + "&p=" + pass + "&d=" + name, true);
xmlhttp.send();
}
function insertAtCursor(field, text, mark) {
let sel = window.getSelection().getRangeAt(0);
if(sel != null){
let startPos = sel.startOffset;
let endPos = sel.endOffset;
if(mark === true){
let start_tag = text.substring(0, (text.length % 2 === 0 ? Math.ceil(text.length / 2) : Math.ceil(text.length / 2) - 1));
let end_tag = text.substring((text.length % 2 === 0 ? Math.ceil(text.length / 2) : Math.ceil(text.length / 2) - 1), text.length);
field.innerHTML = field.innerHTML.substring(0, startPos) + start_tag + field.innerHTML.substring(startPos, endPos) + end_tag + field.innerHTML.substring(endPos, field.innerHTML.length);
} else {
field.innerHTML = field.innerHTML.substring(0, startPos) + text + field.innerHTML.substring(startPos, endPos) + "<br>" + field.innerHTML.substring(endPos, field.innerHTML.length);
}
} else
field.innerHTML += text;
}
+6 -1
View File
@@ -1,6 +1,11 @@
<?php
namespace BlogEngine\Authentication {
require "vendor/blog-engine/php/Database/DatabaseController.php";
$file = "vendor/blog-engine/php/Database/DatabaseController.php";
if(file_exists($file))
require $file;
else
require "../$file";
use BlogEngine\Database\DatabaseController;
class AuthController extends DatabaseController{
+16
View File
@@ -0,0 +1,16 @@
<!-- Podsumowanie -->
<?php
?>
<div class="row">
<div class="col card me-2">
<div class="card-body">
<h3>Ostatnie komentarze</h3>
</div>
</div>
<div class="col card ms-2">
<div class="card-body">
<h3>Statystyki z 24 godzin</h3>
</div>
</div>
</div>
+64
View File
@@ -0,0 +1,64 @@
<!-- Posty -->
<?php
$posts = array();
// Pobierz posty
$get_posts_query = "SELECT * FROM posts";
$get_posts_res = mysqli_query($conn, $get_posts_query);
while($row = mysqli_fetch_assoc($get_posts_res)){
array_push($posts, [
"ID" => $row['id_post'],
"Nazwa" => $row['name'],
"Tytuł" => $row['title'],
"Treść" => $row['content'],
"Wyswietlenia" => $row['views'],
"Dodano" => $row['added_at']
]);
}
?>
<button type="button" name="add_post" class="btn btn-success" onclick="location.href='blog_panel/be_post.php';">Dodaj nowy post</button>
<table class="table table-stripped">
<thead>
<tr>
<th>ID</th>
<th>Tytuł</th>
<th>Zawartość</th>
<th>Wyświetlenia</th>
<th>Dodano</th>
<th>Akcja</th>
</tr>
</thead>
<tbody>
<?php
foreach ($posts as $post){
if(strlen($post['Treść']) > 256){
$post['Treść'] = substr($post['Treść'], 0, 253) . "...";
}
echo "
<tr>
<th>{$post['Nazwa']}</th>
<td>{$post['Tytuł']}</td>
<td>{$post['Treść']}</td>
<td>{$post['Wyswietlenia']}</td>
<td>{$post['Dodano']}</td>
<td>
<div class='d-flex'>
<form method='POST' action='blog_panel/be_post.php'>
<button class='btn btn-primary ms-2' type='submit' name='edit' value='{$post['ID']}'>Edytuj</button>
</form>
<form method='POST' action='be_panel.php'>
<div class='d-flex'>
<button class='btn btn-primary ms-2' type='submit' name='see' value='{$post['ID']}'>Zobacz</button>
<button class='btn btn-danger ms-2' type='submit' name='delete' value='{$post['ID']}'>Usuń</button>
</div>
</form>
</div>
</td>
</tr>
";
}
?>
</tbody>
</table>
+1
View File
@@ -5,6 +5,7 @@ namespace BlogEngine {
public $page_tags = [
"{POSTS}" => "",
"{LINKS}" => "",
"{FAVICON}" => (BLOG_ICON != ""?"<link rel='icon' type='image/png' href='" . BLOG_ICON . "' sizes='any'>":""),
"{KEYWORDS}" => BLOG_TAGS,
"{TITLE}" => BLOG_TITLE,
"{AUTHOR}" => BLOG_AUTHOR,
+1 -1
View File
@@ -15,7 +15,7 @@
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item"><a class="nav-link" href="#">Wejdź do panelu</a></li>
<li class="nav-item"><a class="nav-link" href="be_panel.php">Wejdź do panelu</a></li>
<li class="nav-item"><a class="nav-link" href="#">Dodaj nowy wpis</a></li>
<li class="nav-item"><a class="nav-link" href="#">Moderuj komentarze</a></li>
<li class="nav-item"><a class="nav-link" href="#">Zobacz statystyki</a></li>
+10 -3
View File
@@ -24,9 +24,6 @@
// Ikona bloga (format .PNG)
const BLOG_ICON = "{BLOG_ICON}";
// Nazwa pliku strony głównej
const BLOG_INDEX = "{BLOG_INDEX}";
/*
* KONFIGURACJA BAZY DANYCH
*/
@@ -43,6 +40,16 @@
// Baza danych dla bloga
const DB_NAME = "{DB_NAME}";
/*
* KONFIGURACJA NARZĘDZIA SERWEROWEGO
*/
// Port, który ma używać PHP dla serwera publicznego
const PUB_PORT = "{PUB_PORT}";
// Port, który ma używać PHP dla serwera deweloperskiego
const DEV_PORT = "{DEV_PORT}";
/*
* KONFIGURACJA KONTA ADMINISTRATORA
*/
+1 -1
View File
@@ -1 +1 @@
1.0
2