Update of /cvsroot/php-blog/serendipity/include/admin
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13006/include/admin
Modified Files:
category.inc.php
Log Message:
- Redesign and partly rewrite category management
TODO: needs the even/uneven css class, somehow
Index: category.inc.php
===================================================================
RCS file: /cvsroot/php-blog/serendipity/include/admin/category.inc.php,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- category.inc.php 19 Nov 2004 11:05:32 -0000 1.2
+++ category.inc.php 15 Dec 2004 19:46:35 -0000 1.3
@@ -4,11 +4,9 @@
die ("Don't hack!");
}
-$cat_to_edit = (isset($_GET['serendipity']['cat']['catid']) ? (int)$_GET['serendipity']['cat']['catid'] : 0);
-$msg = '';
-
$admin_category = ($serendipity['serendipityUserlevel'] < USERLEVEL_CHIEF ? "AND (authorid = 0 OR authorid = {$serendipity['authorid']})" : '');
+/* Add a new category */
if (isset($_POST['SAVE'])) {
$name = addslashes($_POST['serendipity']['cat']['name']);
$desc = addslashes($_POST['serendipity']['cat']['description']);
@@ -16,7 +14,7 @@
$icon = addslashes($_POST['serendipity']['cat']['icon']);
$parentid = (isset($_POST['serendipity']['cat']['parent_cat']) && is_numeric($_POST['serendipity']['cat']['parent_cat'])) ? $_POST['serendipity']['cat']['parent_cat'] : 0;
- if ($cat_to_edit == 0) {
+ if ($serendipity['GET']['adminAction'] == 'new') {
if ($parentid != 0) {
// TODO: This doesn't seem to work as expected, serendipity_rebuildCategoryTree(); is still needed! Only activate this optimization function when it's really working :)
// TODO: This works if only one subcategory exists. Otherwise, the first query will return an array.
@@ -26,11 +24,15 @@
*/
}
$query = "INSERT INTO {$serendipity['dbPrefix']}category (category_name, category_description, authorid, category_icon, parentid, category_left, category_right) values ('$name', '$desc', $authorid, '$icon', $parentid, 0, 0)";
- } else {
+ serendipity_db_query($query);
+ echo '<div class="serendipityAdminMsgSuccess">'. CATEGORY_SAVED .'</div>';
+ } elseif ($serendipity['GET']['adminAction'] == 'edit') {
/* Check to make sure parent is not a child of self */
- $r = serendipity_db_query("SELECT categoryid FROM {$serendipity['dbPrefix']}category c WHERE c.categoryid={$parentid} AND c.category_left BETWEEN " . implode(' AND ', serendipity_fetchCategoryRange($cat_to_edit)));
+ $r = serendipity_db_query("SELECT categoryid FROM {$serendipity['dbPrefix']}category c WHERE c.categoryid={$parentid} AND c.category_left BETWEEN " . implode(' AND ', serendipity_fetchCategoryRange((int)$serendipity['GET']['cid'])));
if ( !is_array($r) ) {
- $query = "UPDATE {$serendipity['dbPrefix']}category SET category_name='$name', category_description='$desc', authorid=$authorid, category_icon='$icon', parentid=$parentid WHERE categoryid=$cat_to_edit $admin_category";
+ $query = "UPDATE {$serendipity['dbPrefix']}category SET category_name='$name', category_description='$desc', authorid=$authorid, category_icon='$icon', parentid=$parentid WHERE categoryid=". (int)$serendipity['GET']['cid'] ." $admin_category";
+ serendipity_db_query($query);
+ echo '<div class="serendipityAdminMsgSuccess">'. CATEGORY_SAVED .'</div>';
}
else {
$r = serendipity_db_query("SELECT category_name FROM {$serendipity['dbPrefix']}category WHERE categoryid={$parentid}");
@@ -38,17 +40,15 @@
}
}
- $r = empty($msg) ? serendipity_db_query($query) : $msg;
serendipity_rebuildCategoryTree();
- if (is_string($r)) {
- $msg = $r;
- } else {
- $msg = CATEGORY_SAVED;
- }
-} elseif (isset($_POST['REMOVE'])) {
- if ($cat_to_edit != 0) {
+ $serendipity['GET']['adminAction'] = 'view';
+}
+
+/* Delete a category */
+if ($serendipity['GET']['adminAction'] == 'doDelete') {
+ if ($serendipity['GET']['cid'] != 0) {
$remaining_cat = (int)$_POST['serendipity']['cat']['remaining_catid'];
- $category_range = implode(' AND ', serendipity_fetchCategoryRange($cat_to_edit));
+ $category_range = implode(' AND ', serendipity_fetchCategoryRange((int)$serendipity['GET']['cid']));
if (strtolower($serendipity['dbType']) == 'postgres') {
$query = "UPDATE {$serendipity['dbPrefix']}entrycat
SET categoryid={$remaining_cat} WHERE entryid IN
@@ -71,136 +71,136 @@
}
if ( serendipity_db_query($query) ) {
if ( serendipity_db_query("DELETE FROM {$serendipity['dbPrefix']}category WHERE category_left BETWEEN {$category_range} {$admin_category}") ) {
- $msg = $remaining_cat ? sprintf(CATEGORY_DELETED_ARTICLES_MOVED, $cat_to_edit, $remaining_cat) : sprintf(CATEGORY_DELETED, $cat_to_edit);
+ echo '<div class="serendipityAdminMsgSuccess">'. ($remaining_cat ? sprintf(CATEGORY_DELETED_ARTICLES_MOVED, (int)$serendipity['GET']['cid'], $remaining_cat) : sprintf(CATEGORY_DELETED,(int)$serendipity['GET']['cid'])) .'</div>';
+ $serendipity['GET']['adminAction'] = 'view';
}
}
} else {
- $msg = INVALID_CATEGORY;
+ echo '<div class="serendipityAdminMsgError">'. INVALID_CATEGORY .'</div>';
}
-
- $cat_to_edit = 0;
}
+?>
-$cats = serendipity_fetchCategories('all');
-
-$existing_cats_table = '';
-$existing_cats_dropdown = '<select name="serendipity[cat][remaining_catid]">' . "\n";
-$existing_cats_dropdown .= '<option value="0">- '. NO_CATEGORY .' -</option>' . "\n";
-if (isset($cats) && is_array($cats) && count($cats)) {
+<?php
+ if ( $serendipity['GET']['adminAction'] == 'delete' ) {
+ if ($serendipity['serendipityUserlevel'] >= USERLEVEL_CHIEF || $serendipity['authorid'] == $this_cat['authorid'] || $this_cat['authorid'] == '0') {
+?>
+ <form method="POST" name="serendipityCategory" action="?serendipity[adminModule]=category&serendipity[adminAction]=doDelete&serendipity[cid]=<?php echo $serendipity['GET']['cid'] ?>">
+ <br />
+ <?php echo CATEGORY_REMAINING ?>:
+ <select name="serendipity[cat][remaining_catid]">
+ <option value="0">- <?php echo NO_CATEGORY ?> -</option>
+<?php
+ $cats = serendipity_fetchCategories('all');
+ /* TODO, show dropdown as nested categories */
foreach ($cats as $cat_data) {
- if ($serendipity['serendipityUserlevel'] >= USERLEVEL_ADMIN || $cat_data['authorid'] == '0' || $cat_data['authorid'] == $serendipity['authorid']) {
- if ($cat_to_edit > 0 && $cat_data['categoryid'] == $cat_to_edit && !isset($this_cat)) {
- $this_cat = $cat_data;
- } elseif ($cat_to_edit > 0) {
- $existing_cats_dropdown .= '<option value="' . $cat_data['categoryid'] . '">' . htmlspecialchars($cat_data['category_name']) . '</option>' . "\n";
- }
- }
-
- $name = htmlspecialchars($cat_data['category_name']);
- $desc = htmlspecialchars($cat_data['category_description']);
- $edit_pre = '<a href="?serendipity[adminModule]=category&serendipity[cat][catid]=' . $cat_data['categoryid'] . '">';
- $edit_post = '</a>';
-
- if ($cat_data['authorid'] == '0') {
- $desc .= ' (' . ALL_AUTHORS . ')';
- } elseif ($cat_data['authorid'] != $serendipity['authorid']) {
- $desc .= ' (' . $cat_data['username'] . ')';
- $edit_pre = $edit_post = '';
+ if ($cat_data['categoryid'] != $serendipity['GET']['cid'] && ($serendipity['serendipityUserlevel'] >= USERLEVEL_ADMIN || $cat_data['authorid'] == '0' || $cat_data['authorid'] == $serendipity['authorid'])) {
+ echo '<option value="' . $cat_data['categoryid'] . '">' . htmlspecialchars($cat_data['category_name']) . '</option>' . "\n";
}
-
- $existing_cats_table .= <<<CAT
- <tr>
- <td>
- • $edit_pre $name - $desc $edit_post</a>
- </td>
- </tr>
-CAT;
}
-}
-
-$existing_cats_dropdown .= '</select>';
?>
-<div style="color: red"><?php echo $msg ; ?></div>
-
-<form method="POST" name="serendipityCategory">
-
+ </select>
+ <input type="submit" name="REMOVE" value="<?php echo GO ?>">
+ </form>
<?php
-$remove = '';
-if ($cat_to_edit == 0) {
- $desc = CREATE_NEW_CAT;
- $save = CREATE;
-} else {
- $desc = htmlspecialchars(sprintf(EDIT_THIS_CAT, $this_cat['category_name'], $this_cat['category_description']));
- $save = SAVE;
- if ($serendipity['serendipityUserlevel'] >= USERLEVEL_CHIEF || $serendipity['authorid'] == $this_cat['authorid'] || $this_cat['authorid'] == '0') {
- $remove = '<br /><br /><font size="1">' . sprintf(CATEGORY_REMAINING, $existing_cats_dropdown) .' <input type="submit" name="REMOVE" value="> "></font>';
+ }
}
-}
?>
-<?php echo $desc; ?>
-<table cellpadding="5">
+
+
+<?php if ( $serendipity['GET']['adminAction'] == 'edit' || $serendipity['GET']['adminAction'] == 'new' ) {
+ if ( $serendipity['GET']['adminAction'] == 'edit' ) {
+ $this_cat = serendipity_fetchCategoryInfo($serendipity['GET']['cid']);
+ echo '<strong>'. sprintf(EDIT_THIS_CAT, htmlspecialchars($this_cat['category_name'])) .'</strong>';
+ $save = SAVE;
+ } else {
+ echo '<strong>'. CREATE_NEW_CAT .'</strong>';
+ $save = CREATE;
+ }
+?>
+<form method="POST" name="serendipityCategory">
+<table cellpadding="5" width="100%">
<tr>
- <th><?php echo NAME; ?></th>
+ <td><?php echo NAME; ?></th>
<td><input type="text" name="serendipity[cat][name]" value="<?php echo isset($this_cat['category_name']) ? htmlspecialchars($this_cat['category_name']) : ''; ?>" /></td>
+ <td rowspan="5" align="center" valign="middle" width="200" style="border: 1px solid #ccc"><img src="<?php echo isset($this_cat['category_icon']) ? $this_cat['category_icon'] : '' ?>" id="imagepreview" <?php echo empty($this_cat['category_icon']) ? 'style="display: none' : '' ?>"></td>
</tr>
<tr>
- <th><?php echo DESCRIPTION; ?></th>
+ <td><?php echo DESCRIPTION; ?></th>
<td><input type="text" name="serendipity[cat][description]" value="<?php echo isset($this_cat['category_description']) ? htmlspecialchars($this_cat['category_description']) : ''; ?>" /></td>
</tr>
<tr>
- <th><?php echo IMAGE; ?></th>
+ <td><?php echo IMAGE; ?></th>
<td>
<script type="text/javascript" language="JavaScript" src="serendipity_editor.js"></script>
- <input type="text" id="img_icon" name="serendipity[cat][icon]" value="<?php echo isset($this_cat['category_icon']) ? htmlspecialchars($this_cat['category_icon']) : ''; ?>" />
+ <input type="text" id="img_icon" name="serendipity[cat][icon]" value="<?php echo isset($this_cat['category_icon']) ? htmlspecialchars($this_cat['category_icon']) : ''; ?>" onchange="document.getElementById('imagepreview').src = this.value; document.getElementById('imagepreview').style.display = '';" />
<input type="button" name="insImage" value="<?php echo IMAGE ; ?>" style="" onclick="window.open('serendipity_admin_image_selector.php?serendipity[htmltarget]=img_icon&serendipity[filename_only]=true', 'ImageSel', 'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1');" />
</td>
</tr>
<tr>
- <th><label for="all_authors"><?php echo ALL_AUTHORS; ?></label></th>
+ <td><label for="all_authors"><?php echo ALL_AUTHORS; ?></label></th>
<td><input id="all_authors" type="checkbox" name="serendipity[cat][all_authors]" value="true" <?php echo (isset($this_cat['authorid']) && $this_cat['authorid'] == '0') ? 'checked="checked"' : ''; ?> /></td>
</tr>
-<?php
- if (isset($cats) && is_array($cats) && count($cats)) {
-?>
<tr>
- <th><label for="parent_cat"><?php echo PARENT_CATEGORY; ?></label></th>
+ <td><label for="parent_cat"><?php echo PARENT_CATEGORY; ?></label></th>
<td>
<select id="parent_cat" name="serendipity[cat][parent_cat]">
- <option value="0"<?php if ( $cat_to_edit == 0 ) echo ' selected="selected"'; ?>>[ <?php echo NO_CATEGORY; ?> ]</option>
+ <option value="0"<?php if ( (int)$serendipity['GET']['cid'] == 0 ) echo ' selected="selected"'; ?>>[ <?php echo NO_CATEGORY; ?> ]</option>
<?php
- foreach ( $cats as $cat ) {
- if ( $cat['categoryid'] == $cat_to_edit ) {
- $parentid = $cat['parentid'];
- }
- }
+ $cats = serendipity_fetchCategories('all');
+ foreach ( $cats as $cat ) {
+ if ( $cat['categoryid'] == (int)$serendipity['GET']['cid'] ) {
+ $parentid = $cat['parentid'];
+ }
+ }
echo serendipity_generateCategoryList($cats, array($parentid), 2);
?>
</select>
</td>
</tr>
-<?php
-}
-?>
</table>
+ <div><input type="submit" name="SAVE" value="<?php echo $save; ?>"/></div>
+</form>
+<?php } ?>
-<div>
- <input type="submit" name="SAVE" value="<?php echo $save; ?>"/>
- <?php echo $remove; ?>
-</div>
-<br />
-<hr />
-<b><?php echo CLICK_CAT_TO_EDIT; ?></b>
-<div>
- <?php echo serendipity_generateCategoryList($cats, array($cat_to_edit)); ?>
- <p><a href="?serendipity[adminModule]=category&serendipity[cat][catid]=0"><?php echo CREATE_NEW_CAT; ?></a></p>
-</div>
-</form>
+
+<?php if ( $serendipity['GET']['adminAction'] == 'view' ) {
+ $cats = serendipity_fetchCategories('all');
+ if ( is_array($cats) && sizeof($cats) > 0 ) {
+ echo CATEGORY_INDEX .':';
+ } else {
+ echo '<div align="center">- '. NO_CATEGORIES .' -</div>';
+ }
+?>
+<br /><br />
+<table cellspacing="0" cellpadding="4" width="100%" border=0>
+<?php
+ $cats = serendipity_fetchCategories('all');
+ if ( is_array($cats) ) {
+ $categories = serendipity_walkRecursive($cats, 'categoryid', 'parentid', VIEWMODE_THREADED);
+ foreach ( $categories as $category ) {
+?>
+ <tr>
+ <td width="16"><a href="?serendipity[adminModule]=category&serendipity[adminAction]=edit&serendipity[cid]=<?php echo $category['categoryid'] ?>"><img src="<?php echo serendipity_getTemplateFile('admin/img/edit.png') ?>" border="0" /></a></td>
+ <td width="16"><a href="?serendipity[adminModule]=category&serendipity[adminAction]=delete&serendipity[cid]=<?php echo $category['categoryid'] ?>"><img src="<?php echo serendipity_getTemplateFile('admin/img/delete.png') ?>" border="0" /></a></td>
+ <td width="16"><?php if ( !empty($category['category_icon']) ) {?><img src="<?php echo serendipity_getTemplateFile('admin/img/thumbnail.png') ?>" alt="" /><?php } else echo ' ' ?></td>
+ <td width="300" style="padding-left: <?php echo ($category['depth']*15)+20 ?>px"><img src="<?php echo serendipity_getTemplateFile('admin/img/folder.png') ?>" style="vertical-align: bottom;"> <?php echo $category['category_name'] ?></td>
+ <td><?php echo $category['category_description'] ?></td>
+ <td align="right"><?php echo ($category['authorid'] == '0' ? ALL_AUTHORS : $category['username']); ?></td>
+ </tr>
+<?php }
+ } ?>
+ <tr>
+ <td colspan="6" align="right"><input type="button" value="<?php echo CREATE_NEW_CAT ?>" onclick="location.href='?serendipity[adminModule]=category&serendipity[adminAction]=new'"></td>
+ </tr>
+</table>
+<?php } ?>
<?php
/* vim: set sts=4 ts=4 expandtab : */
?>
|