]> git.bts.cx Git - cx.git/blobdiff - cx/cx.php
Added support for previewing posts when logged in
[cx.git] / cx / cx.php
index a47714b63cfe2929e0a80bb602d2789b1e01d05d..b18232b2ea63ce6862f809cb50512012098447d3 100644 (file)
--- a/cx/cx.php
+++ b/cx/cx.php
@@ -66,6 +66,13 @@ function cx_route($path) {
 
        if (count($path_components) == 0) {
                $template = 'list';
+               $template_variables['page_number'] = 0;
+       } else if (cx_template_has_content('public', $path)) {
+               cx_template_output_content('public', $path);
+               exit(0);
+       } else if (cx_template_has_content('admin', $path)) {
+               cx_template_output_content('admin', $path);
+               exit(0);
        } else if (count($path_components) >= 1 && $path_components[0] == 'feed') {
                header('Content-type: application/atom+xml;');
                $template = 'atom';
@@ -101,8 +108,9 @@ function cx_route($path) {
                                        $template_variables['post_slug'] = '';
                                        $template_variables['post_date'] = '';
                                        $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';
@@ -114,7 +122,9 @@ 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_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';
@@ -124,14 +134,16 @@ 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';
+                                       $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, $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, $draft, $data);
+                                               cx_posts_update_post($id, $title, $slug, $date, $is_page, $is_draft, $nav_index, $data);
                                        }
                                        
                                        cx_http_redirect(cx_url_admin('/'));
@@ -162,15 +174,33 @@ function cx_route($path) {
                                }
                        }
                }
-       } else if (count($path_components) >= 3) { // FIXME sometime, needs more flexibility...
-               $year = $path_components[0];
-               $month = $path_components[1];
-               $slug = $path_components[2];
+       } else if (count($path_components) >= 2 && $path_components[0] == 'page') { // FIXME sometime, needs more flexibility...
+               $page_number = $path_components[1];
+
+               $template = 'list';
+               $template_variables['page_number'] = $page_number;
+       } else {
+               if (count($path_components) >= 1) {
+                       $slug = $path_components[0];
+                       $page_id = cx_posts_find_page_id($slug, include_drafts: cx_admin_logged_in());
+                       if ($page_id) {
+                               $template = 'post';
+                               $template_variables['post_id'] = $page_id;
+                       }
+               }
 
-               $template = 'post';
-               $template_variables['post_id'] = cx_posts_find_post_id($slug);
+               if ($template == null && count($path_components) >= 3) { // FIXME sometime, needs more flexibility...
+                       $year = $path_components[0];
+                       $month = $path_components[1];
+                       $slug = $path_components[2];
+                       $post_id = cx_posts_find_article_id($slug, include_drafts: cx_admin_logged_in());
+                       if ($post_id) {
+                               $template = 'post';
+                               $template_variables['post_id'] = $post_id;
+                       }
+               }
        }
-       
+
        if ($template != null) {
                $output = cx_template_render($template_class, $template, $template_variables);
                echo($output);