Make WordPress Core


Ignore:
Timestamp:
03/26/2008 06:55:24 PM (17 years ago)
Author:
ryan
Message:

Redirect consistency when saving pages and posts.

File:
1 edited

Legend:

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

    r7438 r7527  
    66
    77wp_reset_vars(array('action'));
     8
     9function redirect_page($page_ID) {
     10    $referredby = '';
     11    if ( !empty($_POST['referredby']) )
     12        $referredby = preg_replace('|https?://[^/]+|i', '', $_POST['referredby']);
     13    $referer = preg_replace('|https?://[^/]+|i', '', wp_get_referer());
     14
     15    if ( 'post' == $_POST['originalaction'] && !empty($_POST['mode']) && 'bookmarklet' == $_POST['mode'] ) {
     16        $location = $_POST['referredby'];
     17    } elseif ( 'post' == $_POST['originalaction'] && !empty($_POST['mode']) && 'sidebar' == $_POST['mode'] ) {
     18        $location = 'sidebar.php?a=b';
     19    } elseif ( isset($_POST['save']) && ( empty($referredby) || $referredby == $referer || 'redo' != $referredby ) ) {
     20        if ( $_POST['_wp_original_http_referer'] && strpos( $_POST['_wp_original_http_referer'], '/wp-admin/post.php') === false )
     21            $location = add_query_arg( '_wp_original_http_referer', urlencode( stripslashes( $_POST['_wp_original_http_referer'] ) ), "page.php?action=edit&post=$page_ID&message=1" );
     22        else
     23            $location = "page.php?action=edit&post=$page_ID";
     24    } elseif ($_POST['addmeta']) {
     25        $location = add_query_arg( 'message', 2, wp_get_referer() );
     26        $location = explode('#', $location);
     27        $location = $location[0] . '#postcustom';
     28    } elseif ($_POST['deletemeta']) {
     29        $location = add_query_arg( 'message', 3, wp_get_referer() );
     30        $location = explode('#', $location);
     31        $location = $location[0] . '#postcustom';
     32    } elseif (!empty($referredby) && $referredby != $referer) {
     33        $location = $_POST['referredby'];
     34        if ( $_POST['referredby'] == 'redo' )
     35            $location = get_permalink( $page_ID );
     36        elseif ( false !== strpos($location, 'edit-pages.php') )
     37            $location = add_query_arg('posted', $page_ID, $location);
     38        elseif ( false !== strpos($location, 'wp-admin') )
     39            $location = "page-new.php?posted=$page_ID";
     40    } elseif ( isset($_POST['publish']) ) {
     41        $location = "page-new.php?posted=$page_ID";
     42    } elseif ($action == 'editattachment') {
     43        $location = 'attachments.php';
     44    } else {
     45        $location = "page.php?action=edit&post=$page_ID&message=4";
     46    }
     47
     48    wp_redirect($location);
     49}
    850
    951if (isset($_POST['deletepost'])) {
     
    1658    $page_ID = write_post();
    1759
    18     // Redirect.
    19     if (!empty($_POST['mode'])) {
    20     switch($_POST['mode']) {
    21         case 'bookmarklet':
    22             $location = $_POST['referredby'];
    23             break;
    24         case 'sidebar':
    25             $location = 'sidebar.php?a=b';
    26             break;
    27         default:
    28             $location = 'page-new.php';
    29             break;
    30         }
    31     } else {
    32         $location = "page-new.php?posted=$page_ID";
    33     }
     60    redirect_page($page_ID);
    3461
    35     if ( isset($_POST['save']) )
    36         $location = "page.php?action=edit&post=$page_ID";
    37 
    38     wp_redirect($location);
    3962    exit();
    4063    break;
     
    96119
    97120    $page_ID = edit_post();
    98     $page = get_post($page_ID);
    99121
    100     if ( 'post' == $_POST['originalaction'] ) {
    101         if (!empty($_POST['mode'])) {
    102         switch($_POST['mode']) {
    103             case 'bookmarklet':
    104                 $location = $_POST['referredby'];
    105                 break;
    106             case 'sidebar':
    107                 $location = 'sidebar.php?a=b';
    108                 break;
    109             default:
    110                 $location = 'page-new.php';
    111                 break;
    112             }
    113         } else {
    114             $location = "page-new.php?posted=$page_ID";
    115         }
    116 
    117         if ( isset($_POST['save']) )
    118             $location = "page.php?action=edit&post=$page_ID";
    119     } else {
    120         $referredby = '';
    121         if ( !empty($_POST['referredby']) )
    122             $referredby = preg_replace('|https?://[^/]+|i', '', $_POST['referredby']);
    123         $referer = preg_replace('|https?://[^/]+|i', '', wp_get_referer());
    124 
    125         if ( isset($_POST['save']) && ( empty($referredby) || $referredby == $referer || 'redo' != $referredby ) ) {
    126             if ( $_POST['_wp_original_http_referer'] && strpos( $_POST['_wp_original_http_referer'], '/wp-admin/post.php') === false )
    127                 $location = add_query_arg( '_wp_original_http_referer', urlencode( stripslashes( $_POST['_wp_original_http_referer'] ) ), "page.php?action=edit&post=$page_ID&message=1" );
    128             else
    129                 $location = "page.php?action=edit&post=$page_ID";
    130         } elseif ($_POST['addmeta']) {
    131             $location = add_query_arg( 'message', 2, wp_get_referer() );
    132             $location = explode('#', $location);
    133             $location = $location[0] . '#postcustom';
    134         } elseif ($_POST['deletemeta']) {
    135             $location = add_query_arg( 'message', 3, wp_get_referer() );
    136             $location = explode('#', $location);
    137             $location = $location[0] . '#postcustom';
    138         } elseif (!empty($referredby) && $referredby != $referer) {
    139             $location = $_POST['referredby'];
    140             if ( $_POST['referredby'] == 'redo' )
    141                 $location = get_permalink( $page_ID );
    142             if ( false !== strpos($location, 'edit-pages.php') )
    143                 $location = add_query_arg('posted', $page_ID, $location);
    144         } elseif ( isset($_POST['publish']) ) {
    145             $location = "page-new.php?posted=$page_ID";
    146         } elseif ($action == 'editattachment') {
    147             $location = 'attachments.php';
    148         } else {
    149             $location = 'page-new.php';
    150         }
    151     }
    152     wp_redirect($location); // Send user on their way while we keep working
     122    redirect_page($page_ID);
    153123
    154124    exit();
Note: See TracChangeset for help on using the changeset viewer.