From: Jason Woofenden Date: Thu, 13 Aug 2015 16:24:26 +0000 (-0400) Subject: /admin_pages: listing sorts, missing image doesn't bork ckeditor X-Git-Url: https://jasonwoof.com/gitweb/?p=wfpl-cms.git;a=commitdiff_plain;h=40e5acacf037bc97c69e25aeae2bfbf14f77c7ec /admin_pages: listing sorts, missing image doesn't bork ckeditor --- diff --git a/admin_pages.html b/admin_pages.html index 80c7c2d..9e80c36 100644 --- a/admin_pages.html +++ b/admin_pages.html @@ -2,7 +2,7 @@ - <!--~$title show {~-->~$host~ Admin: <!--~listings once_if {~-->Manage pages<!--~}~--><!--~form {~--><!--~id {~-->Add a new page<!--~}~--><!--~id unset {~-->Edit page "~title html~"<!--~}~--><!--~}~--><!--~}~--> + <!--~$title show {~-->~$host~ Admin: <!--~listing {~-->Manage Pages<!--~}~--><!--~form {~--><!--~id unset {~-->Add a new page<!--~}~--><!--~id {~-->Edit page "~title html~"<!--~}~--><!--~}~--><!--~}~--> +
 
@@ -318,26 +324,28 @@
Cancel
- +

~$host~ Admin Control Panel

Manage Pages

- +

[Add a new page]

- - - + + + + + - - - + + +
TitleFilename 
~title html~(untitled)FilenameTitle 
~filename html~(offline)[delete this page]
~title html~(untitled)[delete]
- +

No pages in database.

diff --git a/admin_pages.php b/admin_pages.php index 1a9b2cb..9c7f56a 100644 --- a/admin_pages.php +++ b/admin_pages.php @@ -5,9 +5,6 @@ define('ADMIN_PAGES_DB_FIELDS', 'title,filename,navbar,nav_title,content,description,keywords'); -require_once(DOCROOT . 'inc/wfpl/format.php'); -require_once(DOCROOT . 'inc/wfpl/email.php'); - function format_cms_filename($str) { $str = format_filename($str); $str = str_replace('.', '_', $str); @@ -75,22 +72,47 @@ function admin_pages_main_delete($id) { return './admin_pages'; } +# get all images from admin_images (for cms) function admin_pages_get_images() { - $images = db_get_assocs('cms_images', 'image,name,caption,sizes', 'order by name, caption, image'); - if ($images) { + $out = []; + $rows = db_get_assocs('cms_images', 'image,name,caption,sizes', 'order by name, caption, image'); + if ($rows) { $id = 0; - foreach($images as &$image) { - $image['id'] = '' . $id; + foreach($rows as &$row) { + $parts = explode(' ', $row['image'] . ' ', 7); + $out[] = [ + 'id' => '' . $id, + 'thumb' => $parts[3], + 'image' => $parts[0], + 'image_width' => (int)$parts[1], + 'image_height' => (int)$parts[2], + 'sizes' => $row['sizes'], + 'name' => $row['name'], + 'caption' => $row['caption'] + ]; $id += 1; - } - return $images; + } unset($row); } - return null; + return $out; } 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); + $data = array(); + $desc = ''; + $sort = _REQUEST_cut('sort'); + if ($sort && substr($sort, 0, 1) === '-') { + $sort = substr($sort, 1); + $desc = ' DESC '; + } else { + $data["sorting-by-$sort"] = '-'; + } + $legal_sorts = explode(',', ADMIN_PAGES_DB_FIELDS); + if (!$sort || !in_array($sort, $legal_sorts)) { + $sort = 'filename'; + } + + $data['rows'] = db_get_assocs('cms_pages', 'id,coalesce(nullif(nav_title,\'\'), title) as title,filename', "order by $sort $desc limit 1000"); + tem_set('listing', $data); } function admin_pages_main_form($id = false) { @@ -149,7 +171,7 @@ function admin_pages_main_form($id = false) { $data = array('filename' => format_cms_filename($_REQUEST['new_filename'])); } - tem_set('wfpl_images', admin_pages_get_images()); + tem_set('wfpl_images_json', json_encode(admin_pages_get_images())); tem_set('form', $data); tem_set('$head'); # wysiwyg init goes in }