AJAX for link category add and delete. Props mdawaffe. fixes #5291

git-svn-id: http://svn.automattic.com/wordpress/trunk@6299 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
ryan 2007-10-31 03:53:32 +00:00
parent 24f0b83cae
commit 1d0bf72d2f
7 changed files with 109 additions and 59 deletions

View File

@ -52,6 +52,36 @@ case 'delete-cat' :
die('1'); die('1');
else die('0'); else die('0');
break; break;
case 'delete-link-cat' :
check_ajax_referer( "delete-link-category_$id" );
if ( !current_user_can( 'manage_categories' ) )
die('-1');
$cat_name = get_term_field('name', $id, 'link_category');
// Don't delete the default cats.
if ( $id == get_option('default_link_category') ) {
$x = new WP_AJAX_Response( array(
'what' => 'link-cat',
'id' => $id,
'data' => new WP_Error( 'default-link-cat', sprintf(__("Can&#8217;t delete the <strong>%s</strong> category: this is the default one"), $cat_name) )
) );
$x->send();
}
$r = wp_delete_term($id, 'link_category');
if ( !$r )
die('0');
if ( is_wp_error($r) ) {
$x = new WP_AJAX_Response( array(
'what' => 'link-cat',
'id' => $id,
'data' => $r
) );
$x->send();
}
die('1');
break;
case 'delete-link' : case 'delete-link' :
check_ajax_referer( "delete-bookmark_$id" ); check_ajax_referer( "delete-bookmark_$id" );
if ( !current_user_can( 'manage_links' ) ) if ( !current_user_can( 'manage_links' ) )
@ -181,6 +211,32 @@ case 'add-cat' : // From Manage->Categories
) ); ) );
$x->send(); $x->send();
break; break;
case 'add-link-cat' : // From Blogroll -> Categories
check_ajax_referer( 'add-link-category' );
if ( !current_user_can( 'manage_categories' ) )
die('-1');
$r = wp_insert_term($_POST['name'], 'link_category', $_POST );
if ( is_wp_error( $r ) ) {
$x = new WP_AJAX_Response( array(
'what' => 'link-cat',
'id' => $r
) );
$x->send();
}
extract($r, EXTR_SKIP);
if ( !$link_cat = link_cat_row( $term_id ) )
die('0');
$x = new WP_Ajax_Response( array(
'what' => 'link-cat',
'id' => $term_id,
'data' => $link_cat
) );
$x->send();
break;
case 'add-comment' : case 'add-comment' :
check_ajax_referer( $action ); check_ajax_referer( $action );
if ( !current_user_can( 'edit_post', $id ) ) if ( !current_user_can( 'edit_post', $id ) )

View File

@ -4,7 +4,7 @@ require_once('admin.php');
$title = __('Categories'); $title = __('Categories');
$parent_file = 'link-manager.php'; $parent_file = 'link-manager.php';
//wp_enqueue_script( 'admin-categories' ); TODO: Fix AJAX wp_enqueue_script( 'admin-categories' );
require_once ('admin-header.php'); require_once ('admin-header.php');
$messages[1] = __('Category added.'); $messages[1] = __('Category added.');
@ -13,35 +13,8 @@ $messages[3] = __('Category updated.');
$messages[4] = __('Category not added.'); $messages[4] = __('Category not added.');
$messages[5] = __('Category not updated.'); $messages[5] = __('Category not updated.');
function link_cat_row($category) { if (isset($_GET['message'])) : ?>
global $class;
if ( current_user_can( 'manage_categories' ) ) {
$edit = "<a href='link-category.php?action=edit&amp;cat_ID=$category->term_id' class='edit'>".__( 'Edit' )."</a></td>";
$default_cat_id = (int) get_option( 'default_link_category' );
if ( $category->term_id != $default_cat_id )
$edit .= "<td><a href='" . wp_nonce_url( "link-category.php?action=delete&amp;cat_ID=$category->term_id", 'delete-link-category_' . $category->term_id ) . "' onclick=\"return deleteSomething( 'cat', $category->term_id, '" . js_escape(sprintf( __("You are about to delete the category '%s'.\nAll links that were only assigned to this category will be assigned to the '%s' category.\n'OK' to delete, 'Cancel' to stop." ), $category->name, get_term_field( 'name', $default_cat_id, 'link_category' ))) . "' );\" class='delete'>".__( 'Delete' )."</a>";
else
$edit .= "<td style='text-align:center'>".__( "Default" );
} else {
$edit = '';
}
$class = ( ( defined( 'DOING_AJAX' ) && DOING_AJAX ) || " class='alternate'" == $class ) ? '' : " class='alternate'";
$category->count = number_format_i18n( $category->count );
$count = ( $category->count > 0 ) ? "<a href='link-manager.php?cat_id=$category->term_id'>$category->count</a>" : $category->count;
return "<tr id='cat-$category->term_id'$class>
<th scope='row' style='text-align: center'>$category->term_id</th>
<td>" . ( $name_override ? $name_override : $pad . ' ' . $category->name ) . "</td>
<td>$category->description</td>
<td align='center'>$count</td>
<td>$edit</td>\n\t</tr>\n";
}
?>
<?php if (isset($_GET['message'])) : ?>
<div id="message" class="updated fade"><p><?php echo $messages[$_GET['message']]; ?></p></div> <div id="message" class="updated fade"><p><?php echo $messages[$_GET['message']]; ?></p></div>
<?php endif; ?> <?php endif; ?>
@ -61,7 +34,7 @@ function link_cat_row($category) {
<th colspan="2" style="text-align: center"><?php _e('Action') ?></th> <th colspan="2" style="text-align: center"><?php _e('Action') ?></th>
</tr> </tr>
</thead> </thead>
<tbody id="the-list"> <tbody id="the-list" class="list:link-cat">
<?php <?php
$categories = get_terms( 'link_category', 'hide_empty=0' ); $categories = get_terms( 'link_category', 'hide_empty=0' );
if ( $categories ) { if ( $categories ) {

View File

@ -9,7 +9,7 @@ if ( ! empty($cat_ID) ) {
} else { } else {
$heading = __('Add Category'); $heading = __('Add Category');
$submit_text = __('Add Category &raquo;'); $submit_text = __('Add Category &raquo;');
$form = '<form name="addcat" id="addcat" method="post" action="link-category.php">'; $form = '<form name="addcat" id="addcat" class="add:the-list:" method="post" action="link-category.php">';
$action = 'addcat'; $action = 'addcat';
$nonce_action = 'add-link-category'; $nonce_action = 'add-link-category';
do_action('add_link_category_form_pre', $category); do_action('add_link_category_form_pre', $category);

View File

@ -34,6 +34,8 @@ function cat_rows( $parent = 0, $level = 0, $categories = 0 ) {
function _cat_row( $category, $level, $name_override = false ) { function _cat_row( $category, $level, $name_override = false ) {
global $class; global $class;
$category = get_category( $category );
$pad = str_repeat( '&#8212; ', $level ); $pad = str_repeat( '&#8212; ', $level );
if ( current_user_can( 'manage_categories' ) ) { if ( current_user_can( 'manage_categories' ) ) {
$edit = "<a href='categories.php?action=edit&amp;cat_ID=$category->term_id' class='edit'>".__( 'Edit' )."</a></td>"; $edit = "<a href='categories.php?action=edit&amp;cat_ID=$category->term_id' class='edit'>".__( 'Edit' )."</a></td>";
@ -47,7 +49,7 @@ function _cat_row( $category, $level, $name_override = false ) {
} else } else
$edit = ''; $edit = '';
$class = ( ( defined( 'DOING_AJAX' ) && DOING_AJAX ) || " class='alternate'" == $class ) ? '' : " class='alternate'"; $class = " class='alternate'" == $class ? '' : " class='alternate'";
$category->count = number_format_i18n( $category->count ); $category->count = number_format_i18n( $category->count );
$posts_count = ( $category->count > 0 ) ? "<a href='edit.php?cat=$category->term_id'>$category->count</a>" : $category->count; $posts_count = ( $category->count > 0 ) ? "<a href='edit.php?cat=$category->term_id'>$category->count</a>" : $category->count;
@ -61,6 +63,41 @@ function _cat_row( $category, $level, $name_override = false ) {
return apply_filters('cat_row', $output); return apply_filters('cat_row', $output);
} }
function link_cat_row( $category ) {
global $class;
if ( !$category = get_term( $category, 'link_category' ) )
return false;
if ( is_wp_error( $category ) )
return $category;
if ( current_user_can( 'manage_categories' ) ) {
$edit = "<a href='link-category.php?action=edit&amp;cat_ID=$category->term_id' class='edit'>".__( 'Edit' )."</a></td>";
$default_cat_id = (int) get_option( 'default_link_category' );
$delete_url = wp_nonce_url( "link-category.php?action=delete&amp;cat_ID=$category->term_id", "delete-link-category_$category->term_id" );
if ( $category->term_id != $default_cat_id )
$edit .= "<td><a href='$delete_url' class='delete:the-list:link-cat-$category->term_id delete'>" . __( 'Delete' ) . "</a>";
else
$edit .= "<td style='text-align:center'>" . __( "Default" );
} else {
$edit = '';
}
$class = " class='alternate'" == $class ? '' : " class='alternate'";
$category->count = number_format_i18n( $category->count );
$count = ( $category->count > 0 ) ? "<a href='link-manager.php?cat_id=$category->term_id'>$category->count</a>" : $category->count;
$output = "<tr id='link-cat-$category->term_id'$class>
<th scope='row' style='text-align: center'>$category->term_id</th>
<td>" . ( $name_override ? $name_override : $pad . ' ' . $category->name ) . "</td>
<td>$category->description</td>
<td align='center'>$count</td>
<td>$edit</td>\n\t</tr>\n";
return apply_filters( 'link_cat_row', $output );
}
function checked( $checked, $current) { function checked( $checked, $current) {
if ( $checked == $current) if ( $checked == $current)
echo ' checked="checked"'; echo ' checked="checked"';

View File

@ -1,5 +1,7 @@
jQuery(function($) { jQuery(function($) {
var options = document.forms['addcat'].category_parent.options; var options = false
if ( document.forms['addcat'].category_parent )
options = document.forms['addcat'].category_parent.options;
var addAfter = function( r, settings ) { var addAfter = function( r, settings ) {
var name = $("<span>" + $('name', r).text() + "</span>").html(); var name = $("<span>" + $('name', r).text() + "</span>").html();
@ -14,5 +16,8 @@ jQuery(function($) {
options[o] = null; options[o] = null;
} }
var a = $('#the-list').wpList( { addAfter: addAfter, delAfter: delAfter } ); if ( options )
$('#the-list').wpList( { addAfter: addAfter, delAfter: delAfter } );
else
$('#the-list').wpList();
}); });

View File

@ -115,7 +115,7 @@ class WP_Scripts {
'add' => attribute_escape(__('Add')), 'add' => attribute_escape(__('Add')),
'how' => __('Separate multiple categories with commas.') 'how' => __('Separate multiple categories with commas.')
) ); ) );
$this->add( 'admin-categories', '/wp-admin/js/categories.js', array('wp-lists'), '20070823' ); $this->add( 'admin-categories', '/wp-admin/js/categories.js', array('wp-lists'), '20071031' );
$this->add( 'admin-custom-fields', '/wp-admin/js/custom-fields.js', array('wp-lists'), '20070823' ); $this->add( 'admin-custom-fields', '/wp-admin/js/custom-fields.js', array('wp-lists'), '20070823' );
$this->add( 'admin-comments', '/wp-admin/js/edit-comments.js', array('wp-lists'), '20070822' ); $this->add( 'admin-comments', '/wp-admin/js/edit-comments.js', array('wp-lists'), '20070822' );
$this->add( 'admin-posts', '/wp-admin/js/edit-posts.js', array('wp-lists'), '20071023' ); $this->add( 'admin-posts', '/wp-admin/js/edit-posts.js', array('wp-lists'), '20071023' );

View File

@ -118,34 +118,14 @@ if ( !defined('PLUGINDIR') )
require (ABSPATH . WPINC . '/compat.php'); require (ABSPATH . WPINC . '/compat.php');
require (ABSPATH . WPINC . '/functions.php'); require (ABSPATH . WPINC . '/functions.php');
require (ABSPATH . WPINC . '/classes.php');
require_wp_db(); require_wp_db();
// $table_prefix is deprecated as of 2.1 $prefix = $wpdb->set_prefix($table_prefix);
$wpdb->prefix = $table_prefix;
if ( preg_match('|[^a-z0-9_]|i', $wpdb->prefix) && !file_exists(ABSPATH . 'wp-content/db.php') ) if ( is_wp_error($prefix) )
wp_die("<strong>ERROR</strong>: <code>$table_prefix</code> in <code>wp-config.php</code> can only contain numbers, letters, and underscores."); wp_die("<strong>ERROR</strong>: <code>$table_prefix</code> in <code>wp-config.php</code> can only contain numbers, letters, and underscores.");
// Table names
$wpdb->posts = $wpdb->prefix . 'posts';
$wpdb->users = $wpdb->prefix . 'users';
$wpdb->categories = $wpdb->prefix . 'categories';
$wpdb->post2cat = $wpdb->prefix . 'post2cat';
$wpdb->comments = $wpdb->prefix . 'comments';
$wpdb->link2cat = $wpdb->prefix . 'link2cat';
$wpdb->links = $wpdb->prefix . 'links';
$wpdb->options = $wpdb->prefix . 'options';
$wpdb->postmeta = $wpdb->prefix . 'postmeta';
$wpdb->usermeta = $wpdb->prefix . 'usermeta';
$wpdb->terms = $wpdb->prefix . 'terms';
$wpdb->term_taxonomy = $wpdb->prefix . 'term_taxonomy';
$wpdb->term_relationships = $wpdb->prefix . 'term_relationships';
if ( defined('CUSTOM_USER_TABLE') )
$wpdb->users = CUSTOM_USER_TABLE;
if ( defined('CUSTOM_USER_META_TABLE') )
$wpdb->usermeta = CUSTOM_USER_META_TABLE;
if ( file_exists(ABSPATH . 'wp-content/object-cache.php') ) if ( file_exists(ABSPATH . 'wp-content/object-cache.php') )
require_once (ABSPATH . 'wp-content/object-cache.php'); require_once (ABSPATH . 'wp-content/object-cache.php');
else else
@ -153,7 +133,6 @@ else
wp_cache_init(); wp_cache_init();
require (ABSPATH . WPINC . '/classes.php');
require (ABSPATH . WPINC . '/plugin.php'); require (ABSPATH . WPINC . '/plugin.php');
require (ABSPATH . WPINC . '/default-filters.php'); require (ABSPATH . WPINC . '/default-filters.php');
include_once(ABSPATH . WPINC . '/streams.php'); include_once(ABSPATH . WPINC . '/streams.php');