From: Ben Sherratt Date: Mon, 8 May 2023 15:44:59 +0000 (+0100) Subject: Basic draft support X-Git-Url: https://git.bts.cx/cx.git/commitdiff_plain/74f4d033d443f0774068e377d6eeb4c2f670db9a?hp=6e68608aecb6a542b9c75a13afd5002aeb7bc0f1 Basic draft support --- diff --git a/cx/cx.php b/cx/cx.php index e1f8daf..cbe7646 100644 --- 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('/')); diff --git a/cx/lib/posts.php b/cx/lib/posts.php index d07f999..6aca72e 100644 --- a/cx/lib/posts.php +++ b/cx/lib/posts.php @@ -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, diff --git a/cx/templates/admin/main.php b/cx/templates/admin/main.php index 43f2454..799db88 100644 --- a/cx/templates/admin/main.php +++ b/cx/templates/admin/main.php @@ -2,7 +2,7 @@

Posts

diff --git a/cx/templates/admin/post.php b/cx/templates/admin/post.php index b7d380a..aa7f870 100644 --- a/cx/templates/admin/post.php +++ b/cx/templates/admin/post.php @@ -5,6 +5,7 @@

title:

slug:

date: ">

+

draft: >