[Phpbbkb-checkins] SF.net SVN: phpbbkb: [31] root
Status: Alpha
Brought to you by:
markthedaemon
From: <so...@us...> - 2006-12-16 00:23:57
|
Revision: 31 http://svn.sourceforge.net/phpbbkb/?rev=31&view=rev Author: softphp Date: 2006-12-15 16:23:56 -0800 (Fri, 15 Dec 2006) Log Message: ----------- - Added some sorting code, and finished editing and adding categories, all needs testing of course. Modified Paths: -------------- root/admin/admin_kb.php root/templates/subSilver/admin/kb_editcat.tpl Modified: root/admin/admin_kb.php =================================================================== --- root/admin/admin_kb.php 2006-12-15 14:33:32 UTC (rev 30) +++ root/admin/admin_kb.php 2006-12-16 00:23:56 UTC (rev 31) @@ -50,7 +50,9 @@ { if(!isset($HTTP_POST_VARS['submit'])) { - $sql = "SELECT * FROM " . KB_CATEGORIES_TABLE . " WHERE cat_id = '" . $edit . "'"; + $sql = "SELECT * + FROM " . KB_CATEGORIES_TABLE . " + WHERE cat_id = '" . $edit . "'"; if(!$result = $db->sql_query($sql)) { message_die(GENERAL_ERROR, "Couldn't get category from categories table", "", __LINE__, __FILE__, $sql); @@ -62,7 +64,7 @@ ); $parent = generate_cat_parents($cat['cat_main']); - $s_hidden_fields = ""; + $s_hidden_fields = "<input type=\"hidden\" name=\"oldparent\" value=\"" . $cat['cat_main'] . "\">"; $template->assign_vars(array( 'L_HEADER' => $lang['kbadm_header_editcat'], @@ -85,7 +87,88 @@ } else { + $error_msg = ''; + if(!isset($HTTP_POST_VARS['title']) || $HTTP_POST_VARS['title'] == "") + { + $error_msg .= (!empty($error_msg)) ? '<br />' . $lang['admkb_empty_cat_title'] : $lang['admkb_empty_cat_title']; + } + + if(!isset($HTTP_POST_VARS['desc']) || $HTTP_POST_VARS['desc'] == "") + { + $error_msg .= (!empty($error_msg)) ? '<br />' . $lang['admkb_empty_cat_title'] : $lang['admkb_empty_cat_title']; + } + + if($error_msg != '') + { + $sql = "SELECT * + FROM " . KB_CATEGORIES_TABLE . " + WHERE cat_id = '" . $edit . "'"; + if(!$result = $db->sql_query($sql)) + { + message_die(GENERAL_ERROR, "Couldn't get category from categories table", "", __LINE__, __FILE__, $sql); + } + $cat = $db->sql_fetchrow($result); + + $template->set_filenames(array( + 'body' => 'admin/kb_editcat.tpl') + ); + + $parent = generate_cat_parents($cat['cat_main']); + $s_hidden_fields = "<input type=\"hidden\" name=\"oldparent\" value=\"" . $cat['cat_main'] . "\">"; + + $template->set_filenames(array( + 'reg_header' => 'error_body.tpl') + ); + + $template->assign_vars(array( + 'ERROR_MESSAGE' => $error_msg) + ); + + $template->assign_var_from_handle('ERROR_BOX', 'reg_header'); + + $template->assign_vars(array( + 'L_HEADER' => $lang['kbadm_header_editcat'], + 'L_EXPLAIN' => $lang['kbadm_explain_editcat'], + 'L_CAT_SETTINGS' => $lang['kbadm_cat_settings'], + 'L_CAT_TITLE' => $lang['kbadm_cat_title'], + 'L_CAT_DESCRIPTION' => $lang['kbadm_cat_desc'], + 'L_CAT_PARENT' => $lang['kbadm_cat_parent'], + + 'CAT_TITLE' => $cat['cat_title'], + 'CAT_DESC' => $cat['cat_desc'], + + 'S_SUBMIT_VALUE' => $lang['kbadm_editcat'], + 'S_PARENT' => $parent, + 'S_HIDDEN_FIELDS' => $s_hidden_fields, + 'S_FORUM_ACTION' => append_sid("admin_kb." . $phpEx . "?edit=" . $edit) + ); + + $template->pparse('body'); + } + else + { + $parent = isset($HTTP_POST_VARS['parent']) ? $HTTP_POST_VARS['parent'] : 0; + + $sql = "UPDATE " . KB_CATEGORIES_TABLE . " + SET cat_main = '" . $parent . "', + cat_title = '" . trim(htmlspecialchars($HTTP_POST_VARS['title'])) . "', + cat_desc = '" . trim(htmlspecialchars($HTTP_POST_VARS['desc'])) . "' + WHERE cat_id = '" . $edit . "'"; + + if(!$db->sql_query($sql)) + { + message_die(GENERAL_ERROR, "Couldn't edit category.", "", __LINE__, __FILE__, $sql); + } + + if($HTTP_POST_VARS['oldparent'] != $HTTP_POST_VARS['parent']) + { + // Parent category changed, alter the order + sort_cats("edit", $edit, 0, array(0 => $HTTP_POST_VARS['parent'], 1 => $HTTP_POST_VARS['oldparent'])); + } + + // And a message here somewhere + } } } @@ -123,13 +206,80 @@ } else { + $error_msg = ''; + if(!isset($HTTP_POST_VARS['title']) || $HTTP_POST_VARS['title'] == "") + { + $error_msg .= (!empty($error_msg)) ? '<br />' . $lang['admkb_empty_cat_title'] : $lang['admkb_empty_cat_title']; + } + + if(!isset($HTTP_POST_VARS['desc']) || $HTTP_POST_VARS['desc'] == "") + { + $error_msg .= (!empty($error_msg)) ? '<br />' . $lang['admkb_empty_cat_title'] : $lang['admkb_empty_cat_title']; + } + + if($error_msg != '') + { + $template->set_filenames(array( + 'body' => 'admin/kb_editcat.tpl') + ); + + $parent = generate_cat_parents($cat['cat_main']); + $s_hidden_fields = ""; + + $template->set_filenames(array( + 'reg_header' => 'error_body.tpl') + ); + + $template->assign_vars(array( + 'ERROR_MESSAGE' => $error_msg) + ); + + $template->assign_var_from_handle('ERROR_BOX', 'reg_header'); + + $template->assign_vars(array( + 'L_HEADER' => $lang['kbadm_header_editcat'], + 'L_EXPLAIN' => $lang['kbadm_explain_editcat'], + 'L_CAT_SETTINGS' => $lang['kbadm_cat_settings'], + 'L_CAT_TITLE' => $lang['kbadm_cat_title'], + 'L_CAT_DESCRIPTION' => $lang['kbadm_cat_desc'], + 'L_CAT_PARENT' => $lang['kbadm_cat_parent'], + + 'S_SUBMIT_VALUE' => $lang['kbadm_editcat'], + 'S_PARENT' => $parent, + 'S_HIDDEN_FIELDS' => $s_hidden_fields, + 'S_FORUM_ACTION' => append_sid("admin_kb." . $phpEx . "?edit=" . $edit) + ); + + $template->pparse('body'); + } + else + { + $parent = isset($HTTP_POST_VARS['parent']) ? $HTTP_POST_VARS['parent'] : 0; + + $sql = "INSERT INTO " . KB_CATEGORIES_TABLE . " (cat_id, cat_main, cat_title, cat_desc, cat_articles, cat_order) + VALUES ('', '" . $parent . "', '" . trim(htmlspecialchars($HTTP_POST_VARS['title'])) . "', '" . trim(htmlspecialchars($HTTP_POST_VARS['desc'])) . "', '0', '9999');"; + + if(!$db->sql_query($sql)) + { + message_die(GENERAL_ERROR, "Couldn't insert new category.", "", __LINE__, __FILE__, $sql); + } + + sort_cats("add", $db->sql_nextid(), 0, $parent); + + // And a message here somewhere + } } } if($sort != false) { + $sort = explode("|", $sort); + // ok so ?sort=id|up(1)/down(-1) + sort_cats("", $sort[0], $sort[1]); + + // And yes yet another message here } // Show categories as list @@ -199,4 +349,89 @@ return $parent; } + +function sort_cats($type = "", $id = 0, $dir = 0, $level = 0) +{ + if($type == "add") + { + $sql = "SELECT cat_id + FROM " . KB_CATEGORIES_TABLE . " + WHERE cat_main = '" . $level . "' + ORDER BY cat_order ASC"; + + if(!$result = $db->sql_query($sql)) + { + message_die(GENERAL_ERROR, "Couldn't retrieve order data from cat table.", "", __LINE__, __FILE__, $sql); + } + + $cat_number = $db->sql_numrows($result); + + $sql = "UPDATE " . KB_CATEGORIES_TABLE . " + SET cat_order = '" . $cat_number + 1 . "' + WHERE cat_id = '" . $id . "'"; + + if(!$db->sql_query($sql)) + { + message_die(GENERAL_ERROR, "Couldn't alter categories order.", "", __LINE__, __FILE__, $sql); + } + + return; + } + elseif($type == "edit") + { + // First clean up in the old level where it is gone from + $sql = "SELECT cat_id + FROM " . KB_CATEGORIES_TABLE . " + WHERE cat_main = '" . $level[1] . "' + ORDER BY cat_order ASC"; + + if(!$result = $db->sql_query($sql)) + { + message_die(GENERAL_ERROR, "Couldn't retrieve order data from cat table.", "", __LINE__, __FILE__, $sql); + } + + $sql = ""; + $i = 0; + while($old_cat = $db->sql_fetchrow($result)) + { + $i++; + $sql .= "UPDATE " . KB_CATEGORIES_TABLE . " + SET cat_order = '" . $i . "' + WHERE cat_id = '" . $old_cat['cat_id'] . "';\n"; + } + + if(!$db->sql_query($sql)) + { + message_die(GENERAL_ERROR, "Couldn't sort old level order in cat table.", "", __LINE__, __FILE__, $sql); + } + + // Ok insert it in the back of the new one :) + $sql = "SELECT cat_id + FROM " . KB_CATEGORIES_TABLE . " + WHERE cat_main = '" . $level[0] . "' + ORDER BY cat_order ASC"; + + if(!$result = $db->sql_query($sql)) + { + message_die(GENERAL_ERROR, "Couldn't retrieve order data from cat table.", "", __LINE__, __FILE__, $sql); + } + + $cat_number = $db->sql_numrows($result); + + $sql = "UPDATE " . KB_CATEGORIES_TABLE . " + SET cat_order = '" . $cat_number + 1 . "' + WHERE cat_id = '" . $id . "'"; + + if(!$db->sql_query($sql)) + { + message_die(GENERAL_ERROR, "Couldn't alter categories order.", "", __LINE__, __FILE__, $sql); + } + + return; + } + else + { + return; + } +} ?> Modified: root/templates/subSilver/admin/kb_editcat.tpl =================================================================== --- root/templates/subSilver/admin/kb_editcat.tpl 2006-12-15 14:33:32 UTC (rev 30) +++ root/templates/subSilver/admin/kb_editcat.tpl 2006-12-16 00:23:56 UTC (rev 31) @@ -3,6 +3,7 @@ <p>{L_EXPLAIN}</p> +{ERROR_BOX} <form action="{S_FORUM_ACTION}" method="post"> <table width="100%" cellpadding="4" cellspacing="1" border="0" class="forumline" align="center"> <tr> @@ -10,11 +11,11 @@ </tr> <tr> <td class="row1">{L_CAT_TITLE}</td> - <td class="row2"><input type="text" size="25" name="forumname" value="{CAT_TITLE}" class="post" /></td> + <td class="row2"><input type="text" size="25" name="title" value="{CAT_TITLE}" class="post" /></td> </tr> <tr> <td class="row1">{L_CAT_DESCRIPTION}</td> - <td class="row2"><textarea rows="5" cols="45" wrap="virtual" name="forumdesc" class="post">{DESCRIPTION}</textarea></td> + <td class="row2"><textarea rows="5" cols="45" wrap="virtual" name="desc" class="post">{DESCRIPTION}</textarea></td> </tr> <tr> <td class="row1">{L_CAT_PARENT}</td> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |