]> git.bts.cx Git - cx.git/commitdiff
Basic draft support
authorBen Sherratt <redacted>
Mon, 8 May 2023 15:44:59 +0000 (16:44 +0100)
committerBen Sherratt <redacted>
Mon, 8 May 2023 15:44:59 +0000 (16:44 +0100)
cx/cx.php
cx/lib/posts.php
cx/templates/admin/main.php
cx/templates/admin/post.php

index e1f8dafd13b0e8210e4eba1a0afd0827ea2cf216..cbe76468bab4432e471107ddafcdb75c08b96be2 100644 (file)
--- a/cx/cx.php
+++ b/cx/cx.php
@@ -101,6 +101,8 @@ function cx_route($path) {
                                        $template_variables['post_slug'] = '';
                                        $template_variables['post_date'] = '';
                                        $template_variables['post_data'] = '';
+                                       $template_variables['post_is_draft'] = true;
+                                       
 
                                        $template_class = 'admin';
                                        $template = 'post';
@@ -112,6 +114,7 @@ function cx_route($path) {
                                        $template_variables['post_slug'] = $post->slug;
                                        $template_variables['post_date'] = $post->date;
                                        $template_variables['post_data'] = $post->data;
+                                       $template_variables['post_is_draft'] = $post->is_draft;
 
                                        $template_class = 'admin';
                                        $template = 'post';
@@ -121,13 +124,14 @@ function cx_route($path) {
                                        if (isset($slug) == false) $slug = null;
                                        $date = cx_form_input_sanitized_date_time('post_date');
                                        if (isset($date) == false) $date = null;
+                                       $draft = cx_form_input_sanitized('post_is_draft') == 'draft';
                                        $data = cx_form_input_sanitized('post_data');
                                        
                                        if (isset($_GET['id']) == false or $_GET['id'] == 0) {
-                                               cx_posts_add_post(1, $title, $slug, $date, $data);
+                                               cx_posts_add_post(1, $title, $slug, $date, $draft, $data);
                                        } else {
                                                $id = $_GET['id'];
-                                               cx_posts_update_post($id, $title, $slug, $date, $data);
+                                               cx_posts_update_post($id, $title, $slug, $date, $draft, $data);
                                        }
                                        
                                        cx_http_redirect(cx_url_admin('/'));
index d07f999e7ade38e004e6790e28de4059c7928000..6aca72e54ce59fa30f70836896b74e7719a0193b 100644 (file)
@@ -15,6 +15,7 @@ class Post {
        public $title;
        public $slug;
        public $date;
+       public $is_draft;
        public $data;
        public $html_content;
        public $html_excerpt;
@@ -24,6 +25,7 @@ class Post {
                $this->title = $dict['post_title'];
                $this->slug = $dict['post_slug'];
                $this->date = $dict['post_date'];
+               $this->is_draft = $dict['post_is_draft'];
                $this->data = $dict['post_data'];
                $this->html_content = mk_markdown($this->data);
                $this->html_excerpt = null;
@@ -49,7 +51,7 @@ function cx_post_make_slug($title) {
        return $slug;
 }
 
-function cx_posts_add_post($site_id, $title, $slug, $date, $data) {
+function cx_posts_add_post($site_id, $title, $slug, $date, $draft, $data) {
        $creation_time = $update_time = time();
        
        if ($slug == null) {
@@ -67,14 +69,15 @@ function cx_posts_add_post($site_id, $title, $slug, $date, $data) {
                        post_slug,
                        post_date,
                        post_is_page,
+                       post_is_draft,
                        post_title,
                        post_data,
                        post_data_version)
-               VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);';
-       cx_db_exec($sql, $site_id, $creation_time, $update_time, $slug, $date, false, $title, $data, 1);
+               VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?);';
+       cx_db_exec($sql, $site_id, $creation_time, $update_time, $slug, $date, false, $draft, $title, $data, 1);
 }
 
-function cx_posts_update_post($post_id, $title, $slug, $date, $data) {
+function cx_posts_update_post($post_id, $title, $slug, $date, $draft, $data) {
        $update_time = time();
        
        if ($slug == null) {
@@ -89,11 +92,12 @@ function cx_posts_update_post($post_id, $title, $slug, $date, $data) {
                SET post_update_time = ?,
                post_slug = ?,
                post_date = ?,
+               post_is_draft = ?,
                post_title = ?,
                post_data = ?
                WHERE post_id == ?;';
                //LIMIT 1;';
-       cx_db_exec($sql, $update_time, $slug, $date , $title, $data, $post_id);
+       cx_db_exec($sql, $update_time, $slug, $date, $draft, $title, $data, $post_id);
 }
 
 function cx_posts_delete_post($post_id) {
@@ -103,16 +107,22 @@ function cx_posts_delete_post($post_id) {
        cx_db_exec($sql, $post_id);
 }
 
-function cx_posts_get(int $limit = 0) {
+function cx_posts_get(int $limit = 0, bool $include_drafts = false) {
        $sql = 'SELECT
                post_id,
                post_slug,
                post_date,
+               post_is_draft,
                post_title,
                post_data
                FROM posts
-               WHERE post_is_page==FALSE
-               ORDER BY post_date DESC';
+               WHERE post_is_page == FALSE';
+       
+       if ($include_drafts == false) {
+               $sql .= ' AND post_is_draft == FALSE';
+       }
+
+       $sql .= ' ORDER BY post_date DESC';
        
        if ($limit > 0) {
                $sql .= ' LIMIT ' . $limit;
@@ -131,6 +141,7 @@ function cx_posts_find_post($post_id) {
                post_id,
                post_slug,
                post_date,
+               post_is_draft,
                post_title,
                post_data
                FROM posts
@@ -165,10 +176,12 @@ function cx_pages_get() {
                post_id,
                post_slug,
                post_date,
+               post_is_draft,
                post_title,
                post_data
                FROM posts
                WHERE post_is_page == TRUE
+               AND post_is_draft == FALSE
                ORDER BY post_creation_time DESC;';
 
        foreach (cx_db_query($sql) as $post) {
@@ -186,6 +199,7 @@ cx_setup_register(1, function() {
                        post_slug STRING,
                        post_date INTEGER,
                        post_is_page BOOLEAN,
+                       post_is_draft BOOLEAN,
                        post_title STRING,
                        post_data BLOB,
                        post_data_version INTEGER,
index 43f245438f5000a9e3f376dbdd18b60067dcdc47..799db8805b6846c2a547dd9df58ec02f3f0f941d 100644 (file)
@@ -2,7 +2,7 @@
 
 <h2>Posts</h2>
 <ul role="list">
-<?php foreach (cx_posts_get() as $post): ?>
+<?php foreach (cx_posts_get(include_drafts: true) as $post): ?>
 <li><a href="<?= cx_url_admin('/posts/edit?id=' . $post->id); ?>"><?= $post->title ?></a> <a href="<?= cx_url_admin('/posts/delete?id=' . $post->id); ?>">🚮</a></li>
 <?php endforeach; ?>
 </ul>
index b7d380a77950226acb9b3fedc0554508b8549f3f..aa7f870ca25dcec0922b5ff71440f6e29f41e17c 100644 (file)
@@ -5,6 +5,7 @@
 <p>title: <input name="post_title" type="text" value="<?= $post_title ?>"></p>
 <p>slug: <input name="post_slug" type="text" value="<?= $post_slug ?>"></p>
 <p>date: <input name="post_date" type="text" value="<?= $post_date ? date('Y-m-d H:i:s', $post_date) : "" ?>"></p>
+<p>draft: <input name="post_is_draft" type="checkbox" value="draft" <?= $post_is_draft ? "checked" : "" ?>></p>
 <p><textarea name="post_data"  cols="60" rows="40"><?= $post_data ?></textarea></p>
 
 <p><input type="submit" value="update"></p>