X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=admin_pages.php;h=829f3a51a8ba49205cb5681746e5876e8cdd0ee5;hb=c469d2530ad9684e56742d38f5817cb08ad98eef;hp=cb2ecbe8684270fcc7ea03904e4a93598e4dea5b;hpb=059569fef59006c2ab9af689c582fc3e9b0d7e6e;p=wfpl-cms.git diff --git a/admin_pages.php b/admin_pages.php index cb2ecbe..829f3a5 100644 --- a/admin_pages.php +++ b/admin_pages.php @@ -5,8 +5,8 @@ define('ADMIN_PAGES_DB_FIELDS', 'title,filename,navbar,nav_title,content,description,keywords'); -require_once('code/wfpl/format.php'); -require_once('code/wfpl/email.php'); +require_once('inc/wfpl/format.php'); +require_once('inc/wfpl/email.php'); function format_cms_filename($str) { $str = format_filename($str); @@ -17,100 +17,93 @@ function format_cms_filename($str) { function admin_pages_get_fields() { $data = array(); - $data['title'] = format_oneline($_REQUEST['title']); - $data['filename'] = format_cms_filename($_REQUEST['filename']); - $data['navbar'] = format_oneline($_REQUEST['navbar'], 'navbar'); - $data['nav_title'] = format_oneline($_REQUEST['nav_title']); - $data['content'] = format_unix($_REQUEST['content']); - $data['description'] = format_unix($_REQUEST['description']); - $data['keywords'] = format_unix($_REQUEST['keywords']); + + $data['title'] = format_oneline(_REQUEST_cut('title')); + $data['filename'] = format_cms_filename(_REQUEST_cut('filename')); + $data['navbar'] = format_options(_REQUEST_cut('navbar'), 'navbar'); + $data['nav_title'] = format_oneline(_REQUEST_cut('nav_title')); + $data['content'] = format_unix(_REQUEST_cut('content')); + $data['description'] = format_unix(_REQUEST_cut('description')); + $data['keywords'] = format_unix(_REQUEST_cut('keywords')); return $data; } -# You may pass a "where clause" for the db query. -function admin_pages_display_listing($where = 'order by concat(nav_title,title)') { - $rows = db_get_assocs('cms_pages', 'id,filename,coalesce(nullif(nav_title,\'\'), title) as title', $where); - if($rows == false || count($rows) == 0) { - tem_set('listings', array('empty_listing' => true)); - return; - } - - # make sure there's something clickable - foreach($rows as &$row) { - if($row['filename'] == '') { - $row['filename'] = '-- offline --'; - } - if($row['title'] == '') { - $row['title'] = '-- untitled --'; - } - } - tem_set('listings', array( - 'populated_listing' => true, - 'rows' => $rows)); - return true; -} - function admin_pages_main() { if(!logged_in_as_admin()) { $_REQUEST['url'] = this_url(); return 'admin_login'; } - tem_set('this_host', this_host()); + $id = _REQUEST_cut('edit_id'); + if($id) { + return admin_pages_main_form($id); + } - if(isset($_REQUEST['admin_pages_id'])) { - return admin_pages_display_main(); - } else { - return admin_pages_edit_main(); + $id = _REQUEST_cut('admin_pages_delete_id'); + if($id) { + return admin_pages_main_delete($id); + } + + if(_REQUEST_cut('new')) { + return admin_pages_main_form(); + } + + if(_REQUEST_cut('list')) { + return admin_pages_main_listing(); } + + $id = _REQUEST_cut('id'); + if($id) { + return admin_pages_main_display($id); + } + + if(isset($_POST['title'])) { + return admin_pages_main_form(); + } + + # default action: + return admin_pages_main_listing(); } # admin-only access to view pages with no filename -function admin_pages_display_main() { - $id = format_int($_REQUEST['admin_pages_id']); - unset($_REQUEST['admin_pages_id']); - if(!$id) { - message('Error: Broken link'); - return './admin_pages'; - } +function admin_pages_main_display($id) { cms_display_content($GLOBALS['wfpl_main_template'], 'where id=%i', $id); } -function admin_pages_edit_main() { - $edit_id = format_int($_REQUEST['admin_pages_edit_id']); - unset($_REQUEST['admin_pages_edit_id']); - if($edit_id) { - # add hidden field for database id of row we're editing - tem_set('admin_pages_edit_id', $edit_id); - tem_set('editing', 'show'); - tem_set('edit_msg', 'show'); - } - - $delete_id = format_int($_REQUEST['admin_pages_delete_id']); - unset($_REQUEST['admin_pages_delete_id']); - if($delete_id) { - db_delete('cms_pages', 'where id=%i', $delete_id); - message('Page deleted.'); +function admin_pages_main_delete($id) { + db_delete('cms_pages', 'where id=%i', $id); + message('Page deleted.'); + return './admin_pages'; +} - return './admin_pages'; +function admin_pages_get_images() { + $images = db_get_assocs('cms_images', 'image,name,caption,sizes', 'order by name, caption, image'); + $id = 0; + foreach($images as &$image) { + $image['id'] = '' . $id; + $id += 1; } + return $images; +} - if(!$edit_id) { - if(!isset($_REQUEST['admin_pages_new']) && !isset($_REQUEST['title'])) { - admin_pages_display_listing(); - return; - } +function admin_pages_main_listing() { + $listing_rows = db_get_assocs('cms_pages', 'id,filename,coalesce(nullif(nav_title,\'\'), title) as title', 'order by concat(nav_title,title)'); + tem_set('listings', $listing_rows); +} - tem_set('new_msg', 'show'); +function admin_pages_main_form($id = false) { + if($id) { + tem_set('id', $id); } + $navbar_options = array(array('ignored', 'Not at all'), array('0', 'First')); $rows = db_get_rows('cms_pages', 'id,coalesce(nullif(nav_title,\'\'), title) as title,navbar', 'where navbar != 0 order by navbar'); if($rows) for($i = 0; $i < count($rows); ++$i) { list($other_id, $other_title, $other_ord) = $rows[$i]; - if($other_id != $edit_id) { # don't display ourselves + if($other_id != $id) { # don't display ourselves $navbar_options[] = array($i + 1, "After \"$other_title\""); } } @@ -121,16 +114,16 @@ function admin_pages_edit_main() { # We'll save anything (no required fields) - $data['navbar'] = db_reposition('cms_pages', $edit_id, $data['navbar'], 'navbar', 'page'); + $data['navbar'] = db_reposition('cms_pages', $id, $data['navbar'], 'navbar', 'page'); if($data['navbar'] && $data['filename'] == '') { message('This page was removed from the navigation column because it does not have a filename. (Pages without filenames are visible only to admins.)'); $data['navbar'] = 0; } - if($edit_id) { - db_update_assoc('cms_pages', $data, 'where id=%i', $edit_id); - $id = $edit_id; + if($id) { + db_update_assoc('cms_pages', $data, 'where id=%i', $id); + $id = $id; message('Page updated.'); } else { db_insert_assoc('cms_pages', $data); @@ -140,22 +133,22 @@ function admin_pages_edit_main() { if($data['filename']) { return "./$data[filename]"; } else { - return "./admin_pages?admin_pages_id=$id"; + return "./admin_pages?id=$id"; } - } elseif($edit_id) { + } elseif($id) { # we've recieved an edit id, but no data. So we grab the values to be edited from the database - $data = db_get_assoc('cms_pages', ADMIN_PAGES_DB_FIELDS, 'where id=%i', $edit_id); + $data = db_get_assoc('cms_pages', ADMIN_PAGES_DB_FIELDS, 'where id=%i', $id); if($data['navbar']) { $data['navbar'] = db_count('cms_pages', 'where navbar!=0 && navbar<%i', $data['navbar']); } else { $data['navbar'] = 'ignored'; } } else { - # form not submitted, you can set default values like so: - #$data = array('title' => 'Yes'); + # form not submitted, set default values: $data = array('filename' => format_cms_filename($_REQUEST['new_filename'])); } + tem_set('wfpl_images', admin_pages_get_images()); tem_set('form', $data); - tem_set('extra_headers', 'show'); + tem_set('$head'); # wysiwyg init goes in }