From: Ben Sherratt Date: Sat, 4 Jul 2026 17:49:59 +0000 (+0100) Subject: Added page ordering X-Git-Url: https://git.bts.cx/cx.git/commitdiff_plain/2c13f7538d3e22d07bbdf3d8aec3e16d8c156986?ds=inline Added page ordering --- diff --git a/cx/cx.php b/cx/cx.php index 2881ba5..e4285ee 100644 --- a/cx/cx.php +++ b/cx/cx.php @@ -110,6 +110,7 @@ function cx_route($path) { $template_variables['post_data'] = ''; $template_variables['post_is_page'] = false; $template_variables['post_is_draft'] = true; + $template_variables['post_nav_index'] = ''; $template_class = 'admin'; $template = 'post'; @@ -123,6 +124,7 @@ function cx_route($path) { $template_variables['post_data'] = $post->data; $template_variables['post_is_page'] = $post->is_page; $template_variables['post_is_draft'] = $post->is_draft; + $template_variables['post_nav_index'] = $post->nav_index; $template_class = 'admin'; $template = 'post'; @@ -134,13 +136,14 @@ function cx_route($path) { if (isset($date) == false) $date = null; $is_page = cx_form_input_sanitized('post_is_page') == 'page'; $is_draft = cx_form_input_sanitized('post_is_draft') == 'draft'; + $nav_index = cx_form_input_sanitized('post_nav_index'); $data = cx_form_input_sanitized_allowing_html('post_data'); if (isset($_GET['id']) == false or $_GET['id'] == 0) { - cx_posts_add_post(1, $title, $slug, $date, $is_page, $is_draft, $data); + cx_posts_add_post(1, $title, $slug, $date, $is_page, $is_draft, $nav_index, $data); } else { $id = $_GET['id']; - cx_posts_update_post($id, $title, $slug, $date, $is_page, $is_draft, $data); + cx_posts_update_post($id, $title, $slug, $date, $is_page, $is_draft, $nav_index, $data); } cx_http_redirect(cx_url_admin('/')); diff --git a/cx/lib/posts.php b/cx/lib/posts.php index e46aa28..9fb4e35 100644 --- a/cx/lib/posts.php +++ b/cx/lib/posts.php @@ -21,6 +21,7 @@ class Post { public $date; public $is_page; public $is_draft; + public $nav_index; public $data; public $html_content; public $html_excerpt; @@ -32,6 +33,7 @@ class Post { $this->date = $dict['post_date']; $this->is_page = $dict['post_is_page']; $this->is_draft = $dict['post_is_draft']; + $this->nav_index = $dict['post_navigation_index']; $this->data = $dict['post_data']; $this->html_content = cx_markdown_generate_html($this->data); $this->html_excerpt = null; @@ -73,7 +75,7 @@ function cx_post_make_slug($title) { return $slug; } -function cx_posts_add_post($site_id, $title, $slug, $date, $page, $draft, $data) { +function cx_posts_add_post($site_id, $title, $slug, $date, $page, $draft, $nav_index, $data) { $creation_time = $update_time = time(); if ($slug == null) { @@ -92,14 +94,15 @@ function cx_posts_add_post($site_id, $title, $slug, $date, $page, $draft, $data) post_date, post_is_page, post_is_draft, + post_navigation_index, post_title, post_data, post_data_version) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?);'; - cx_db_exec($sql, $site_id, $creation_time, $update_time, $slug, $date, $page, $draft, $title, $data, 1); + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);'; + cx_db_exec($sql, $site_id, $creation_time, $update_time, $slug, $date, $page, $draft, $nav_index, $title, $data, 1); } -function cx_posts_update_post($post_id, $title, $slug, $date, $page, $draft, $data) { +function cx_posts_update_post($post_id, $title, $slug, $date, $page, $draft, $nav_index, $data) { $update_time = time(); if ($slug == null) { @@ -116,11 +119,12 @@ function cx_posts_update_post($post_id, $title, $slug, $date, $page, $draft, $da post_date = ?, post_is_page = ?, post_is_draft = ?, + post_navigation_index = ?, post_title = ?, post_data = ? WHERE post_id == ?;'; //LIMIT 1;'; - cx_db_exec($sql, $update_time, $slug, $date, $page, $draft, $title, $data, $post_id); + cx_db_exec($sql, $update_time, $slug, $date, $page, $draft, $nav_index, $title, $data, $post_id); } function cx_posts_delete_post($post_id) { @@ -137,6 +141,7 @@ function cx_posts_get(int $limit = 0, int $offset = 0, bool $include_drafts = fa post_date, post_is_page, post_is_draft, + post_navigation_index, post_title, post_data FROM posts @@ -191,6 +196,7 @@ function cx_posts_find_post($post_id) { post_date, post_is_page, post_is_draft, + post_navigation_index, post_title, post_data FROM posts @@ -237,23 +243,28 @@ function cx_posts_find_page_id($post_slug) { return null; } -function cx_pages_get(bool $include_drafts = false) { +function cx_pages_get(bool $navigation_only = true, bool $include_drafts = false) { $sql = 'SELECT post_id, post_slug, post_date, post_is_page, post_is_draft, + post_navigation_index, post_title, post_data FROM posts WHERE post_is_page == TRUE'; + if ($navigation_only) { + $sql .= ' AND post_navigation_index != ""'; + } + if ($include_drafts == false) { $sql .= ' AND post_is_draft == FALSE'; } - $sql .= ' ORDER BY post_date ASC'; + $sql .= ' ORDER BY post_navigation_index ASC, post_date DESC'; $sql .= ';'; @@ -273,6 +284,7 @@ cx_setup_register(1, function() { post_date INTEGER, post_is_page BOOLEAN, post_is_draft BOOLEAN, + post_navigation_index INTEGER, post_title STRING, post_data BLOB, post_data_version INTEGER, diff --git a/cx/templates/admin/pages/main.php b/cx/templates/admin/pages/main.php index c0da49a..14ea9c4 100644 --- a/cx/templates/admin/pages/main.php +++ b/cx/templates/admin/pages/main.php @@ -13,7 +13,7 @@

Pages

- + diff --git a/cx/templates/admin/pages/post.php b/cx/templates/admin/pages/post.php index fb670f0..4eff110 100644 --- a/cx/templates/admin/pages/post.php +++ b/cx/templates/admin/pages/post.php @@ -7,6 +7,7 @@

date: ">

page: >

draft: >

+

nav index:

title ?> Edit