WordPress.org

Make WordPress Core

Changeset 7468


Ignore:
Timestamp:
03/22/2008 08:15:48 AM (10 years ago)
Author:
ryan
Message:

Fix custom field add/update/delete. Props mdawaffe. fixes #6343

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/admin-ajax.php

    r7376 r7468  
    9595    break;
    9696case 'delete-meta' :
    97     check_ajax_referer( 'change_meta' );
     97    check_ajax_referer( "delete-meta_$id" );
    9898    if ( !$meta = get_post_meta_by_id( $id ) )
    9999        die('0');
     
    369369    break;
    370370case 'add-meta' :
    371     check_ajax_referer( 'change_meta' );
     371    check_ajax_referer( 'add-meta' );
    372372    $c = 0;
    373373    $pid = (int) $_POST['post_id'];
    374     if ( isset($_POST['addmeta']) ) {
     374    if ( isset($_POST['metakeyselect']) ) {
    375375        if ( !current_user_can( 'edit_post', $pid ) )
    376376            die('-1');
  • trunk/wp-admin/includes/template.php

    r7427 r7468  
    746746
    747747function _list_meta_row( $entry, &$count ) {
     748    static $update_nonce = false;
     749    if ( !$update_nonce )
     750        $update_nonce = wp_create_nonce( 'add-meta' );
     751
    748752    $r = '';
    749753    ++ $count;
     
    769773    $entry['meta_value'] = attribute_escape($entry['meta_value']);
    770774    $entry['meta_id'] = (int) $entry['meta_id'];
     775
     776    $delete_nonce = wp_create_nonce( 'delete-meta_' . $entry['meta_id'] );
     777
    771778    $r .= "\n\t<tr id='meta-{$entry['meta_id']}' class='$style'>";
    772779    $r .= "\n\t\t<td valign='top'><input name='meta[{$entry['meta_id']}][key]' tabindex='6' type='text' size='20' value='{$entry['meta_key']}' /></td>";
    773780    $r .= "\n\t\t<td><textarea name='meta[{$entry['meta_id']}][value]' tabindex='6' rows='2' cols='30'>{$entry['meta_value']}</textarea></td>";
    774     $r .= "\n\t\t<td style='text-align: center;'><input name='updatemeta' type='submit' tabindex='6' value='".attribute_escape(__( 'Update' ))."' class='add:the-list:meta-{$entry['meta_id']} updatemeta' /><br />";
     781    $r .= "\n\t\t<td style='text-align: center;'><input name='updatemeta' type='submit' tabindex='6' value='".attribute_escape(__( 'Update' ))."' class='add:the-list:meta-{$entry['meta_id']}::_ajax_nonce=$update_nonce updatemeta' /><br />";
    775782    $r .= "\n\t\t<input name='deletemeta[{$entry['meta_id']}]' type='submit' ";
    776     $r .= "class='delete:the-list:meta-{$entry['meta_id']} deletemeta' tabindex='6' value='".attribute_escape(__( 'Delete' ))."' />";
     783    $r .= "class='delete:the-list:meta-{$entry['meta_id']}::_ajax_nonce=$delete_nonce deletemeta' tabindex='6' value='".attribute_escape(__( 'Delete' ))."' />";
     784    $r .= wp_nonce_field( 'change-meta', '_ajax_nonce', false, false );
    777785    $r .= "</td>\n\t</tr>";
    778786    return $r;
     
    816824        <td><textarea id="metavalue" name="metavalue" rows="3" cols="25" tabindex="8"></textarea></td>
    817825    </tr>
    818 
    819826<tr class="submit"><td colspan="3">
    820     <?php wp_nonce_field( 'change_meta', '_ajax_nonce', false ); ?>
    821     <input type="submit" id="addmetasub" name="addmeta" class="add:the-list:newmeta" tabindex="9" value="<?php _e( 'Add Custom Field' ) ?>" />
     827    <?php wp_nonce_field( 'add-meta', '_ajax_nonce', false ); ?>
     828    <input type="submit" id="addmetasub" name="addmeta" class="add:the-list:newmeta::post_id=<?php echo $GLOBALS['post_ID'] ? $GLOBALS['post_ID'] : $GLOBALS['temp_ID']; ?>" tabindex="9" value="<?php _e( 'Add Custom Field' ) ?>" />
    822829</td></tr>
    823830</table>
  • trunk/wp-admin/js/post.js

    r7394 r7468  
    158158        }
    159159        return false;
    160     });
     160
     161    });
     162
     163    // Custom Fields
     164    jQuery('#the-list').wpList( { addAfter: function( xml, s ) {
     165        if ( jQuery.isFunction( autosave_update_post_ID ) ) {
     166            autosave_update_post_ID(s.parsed.responses[0].supplemental.postid);
     167        }
     168    } });
    161169});
  • trunk/wp-includes/js/autosave.js

    r7394 r7468  
    4747
    4848// called when autosaving new post
    49 function autosave_update_post_ID(response) {
     49function autosave_saved_new(response) {
    5050    var res = autosave_saved(response); // parse the ajax response do the above
    51 
    5251    // if no errors: update post_ID from the temporary value, grab new save-nonce for that new ID
    5352    if ( res && res.responses.length && !res.errors ) {
    5453        var postID = parseInt( res.responses[0].id );
    55         if ( !isNaN(postID) && postID > 0 ) {
    56             if ( postID == parseInt(jQuery('#post_ID').val()) ) { return; } // no need to do this more than once
    57             jQuery('#post_ID').attr({name: "post_ID"});
    58             jQuery('#post_ID').val(postID);
    59             // We need new nonces
    60             jQuery.post(autosaveL10n.requestFile, {
    61                 action: "autosave-generate-nonces",
    62                 post_ID: postID,
    63                 autosavenonce: jQuery('#autosavenonce').val(),
    64                 post_type: jQuery('#post_type').val()
    65             }, function(html) {
    66                 jQuery('#_wpnonce').val(html);
    67             });
    68             jQuery('#hiddenaction').val('editpost');
    69         }
     54        autosave_update_post_ID( postID );
     55    }
     56}
     57
     58function autosave_update_post_ID( postID ) {
     59    if ( !isNaN(postID) && postID > 0 ) {
     60        if ( postID == parseInt(jQuery('#post_ID').val()) ) { return; } // no need to do this more than once
     61        jQuery('#post_ID').attr({name: "post_ID"});
     62        jQuery('#post_ID').val(postID);
     63        // We need new nonces
     64        jQuery.post(autosaveL10n.requestFile, {
     65            action: "autosave-generate-nonces",
     66            post_ID: postID,
     67            autosavenonce: jQuery('#autosavenonce').val(),
     68            post_type: jQuery('#post_type').val()
     69        }, function(html) {
     70            jQuery('#_wpnonce').val(html);
     71        });
     72        jQuery('#hiddenaction').val('editpost');
    7073    }
    7174}
     
    174177    if(parseInt(post_data["post_ID"]) < 1) {
    175178        post_data["temp_ID"] = post_data["post_ID"];
    176         var successCallback = autosave_update_post_ID; // new post
     179        var successCallback = autosave_saved_new;; // new post
    177180    } else {
    178181        var successCallback = autosave_saved; // pre-existing post
  • trunk/wp-includes/js/wp-lists.js

    r7462 r7468  
    155155            var res = wpAjax.parseAjaxResponse(r, s.response, s.element);
    156156            if ( !res || res.errors ) {
    157                 element.stop().css( 'backgroundColor', '#FF3333' ).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } );
     157                element.stop().stop().css( 'backgroundColor', '#FF3333' ).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } );
    158158                return false;
    159159            }
     
    218218            var res = wpAjax.parseAjaxResponse(r, s.response, s.element);
    219219            if ( !res || res.errors ) {
    220                 element.stop().css( 'backgroundColor', '#FF3333' )[isClass?'removeClass':'addClass'](s.dimClass).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } );
     220                element.stop().stop().css( 'backgroundColor', '#FF3333' )[isClass?'removeClass':'addClass'](s.dimClass).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } );
    221221                return false;
    222222            }
  • trunk/wp-includes/script-loader.php

    r7464 r7468  
    4848        ) );
    4949
    50         $this->add( 'autosave', '/wp-includes/js/autosave.js', array('schedule', 'wp-ajax-response'), '20080317' );
     50        $this->add( 'autosave', '/wp-includes/js/autosave.js', array('schedule', 'wp-ajax-response'), '20080322' );
    5151
    5252        $this->add( 'wp-ajax', '/wp-includes/js/wp-ajax.js', array('prototype'), '20070306');
     
    5858        ) );
    5959
    60         $this->add( 'wp-lists', '/wp-includes/js/wp-lists.js', array('wp-ajax-response'), '20080312' );
     60        $this->add( 'wp-lists', '/wp-includes/js/wp-lists.js', array('wp-ajax-response'), '20080322' );
    6161        $this->localize( 'wp-lists', 'wpListL10n', array(
    6262            'url' => get_option( 'siteurl' ) . '/wp-admin/admin-ajax.php'
     
    145145                'cancel' => __('Cancel'),
    146146            ) );
    147             $this->add( 'post', '/wp-admin/js/post.js', array('suggest', 'jquery-ui-tabs', 'wp-lists', 'postbox', 'slug'), '20080318' );
     147            $this->add( 'post', '/wp-admin/js/post.js', array('suggest', 'jquery-ui-tabs', 'wp-lists', 'postbox', 'slug'), '20080322' );
    148148            $this->localize( 'post', 'postL10n', array(
    149149                'tagsUsed' =>  __('Tags used on this post:'),
Note: See TracChangeset for help on using the changeset viewer.