Skip to:
Content

bbPress.org

Changeset 2815


Ignore:
Timestamp:
01/18/2011 08:35:34 AM (14 years ago)
Author:
johnjamesjacoby
Message:

Introduce lost password page. Introduce user_login and user_lost_pass template parts. Introduce supporting login and smart login redirect functions. Normalize submit containers across template forms. (@todo: register, activation, and lost password pages)

Location:
branches/plugin
Files:
3 added
13 edited

Legend:

Unmodified
Added
Removed
  • branches/plugin/bbp-includes/bbp-general-functions.php

    r2810 r2815  
    996996}
    997997
     998/** Login *********************************************************************/
     999
     1000/**
     1001 * Change the login URL to /login
     1002 *
     1003 * This assumes that your login page is 'domain.com/login'
     1004 *
     1005 * @todo Make this less janky
     1006 *
     1007 * @uses apply_filters()
     1008 * @uses trailingslashit()
     1009 * @uses home_url()
     1010 * @return str
     1011 */
     1012function bbp_login_url( $url = '', $redirect_to = '' ) {
     1013    return apply_filters( 'bbp_login_url', trailingslashit( home_url( 'login' ) ) );
     1014}
     1015
     1016/**
     1017 * Change the logout URL to /login and add smart redirect
     1018 *
     1019 * This assumes that your login page is 'domain.com/login'
     1020 *
     1021 * @todo Make this less janky
     1022 *
     1023 * @uses apply_filters()
     1024 * @uses add_query_arg()
     1025 * @uses trailingslashit()
     1026 * @uses esc_url()
     1027 * @uses home_url()
     1028 * @return str
     1029 */
     1030function bbp_logout_url( $url = '', $redirect_to = '' ) {
     1031    if ( !$redirect_to = home_url( $_SERVER['REDIRECT_URL'] ) )
     1032        $redirect_to = $_SERVER['HTTP_REFERER'];
     1033
     1034    if ( empty( $redirect_to ) )
     1035        $redirect_to = home_url( $_SERVER['REQUEST_URI'] );
     1036
     1037    $url = add_query_arg( array( 'redirect_to' => esc_url( $redirect_to ) ), $url );
     1038
     1039    return apply_filters( 'bbp_logout_url', $url );
     1040}
     1041
    9981042?>
  • branches/plugin/bbp-includes/bbp-general-template.php

    r2812 r2815  
    318318
    319319/** Forms *********************************************************************/
     320
     321function bbp_wp_login_action( $args = '' ) {
     322    $defaults = array (
     323        'action'  => '',
     324        'context' => ''
     325    );
     326    $r = wp_parse_args( $args, $defaults );
     327    extract( $r );
     328
     329    if ( !empty( $action ) )
     330        $login_url = add_query_arg( array( 'action' => $action ), 'wp-login.php' );
     331    else
     332        $login_url = 'wp-login.php';
     333
     334    $login_url = site_url( $login_url, $context );
     335
     336    echo apply_filters( 'bbp_wp_login_action', $login_url, $args );
     337}
     338
     339/**
     340 * Output hidden request URI field for user forms.
     341 *
     342 * The referer link is the current Request URI from the server super global. The
     343 * input name is '_wp_http_referer', in case you wanted to check manually.
     344 *
     345 * @since bbPress (r2815)
     346 *
     347 * @uses esc_attr()
     348 * @uses home_url()
     349 * @uses apply_filters()
     350 * @param str $url Pass a URL to redirect to
     351 * @return str Hidden input to help process redirection.
     352 */
     353function bbp_redirect_to_field( $url = '' ) {
     354    // If no URL is passed, use request
     355    if ( empty( $url ) )
     356        $url = esc_url( $_SERVER['HTTP_REFERER'] );
     357
     358    $referer_field = '<input type="hidden" name="redirect_to" value="' . $url . '" />';
     359
     360    echo apply_filters( 'bbp_redirect_to_field', $referer_field );
     361}
     362
     363/**
     364 * Echo sanitized $_REQUEST value.
     365 *
     366 * Use the $input_type parameter to properly process the value. This
     367 * ensures correct sanitization of the value for the receiving input.
     368 *
     369 * @since bbPress (r2815)
     370 *
     371 * @uses bbp_get_sanitize_val()
     372 * @param str $request Name of $_REQUEST to look for
     373 * @param str $input_type Type of input the value is for
     374 */
     375function bbp_sanitize_val( $request = '', $input_type = 'text' ) {
     376    echo bbp_get_sanitize_val( $request, $input_type );
     377}
     378    /**
     379     * Return sanitized $_REQUEST value.
     380     *
     381     * Use the $input_type parameter to properly process the value. This
     382     * ensures correct sanitization of the value for the receiving input.
     383     *
     384     * @since bbPress (r2815)
     385     *
     386     * @uses esc_attr()
     387     * @uses stripslashes()
     388     * @uses apply_filters()
     389     * @param str $request Name of $_REQUEST to look for
     390     * @param str $input_type Type of input the value is for
     391     * @return str Sanitized value ready for screen display
     392     */
     393    function bbp_get_sanitize_val( $request = '', $input_type = 'text' ) {
     394
     395        // Check that requested
     396        if ( !isset( $_REQUEST[$request] ) || empty( $request ) )
     397            return false;
     398
     399        // Set request varaible
     400        $pre_ret_val = $_REQUEST[$request];
     401
     402        // Treat different kinds of fields in different ways
     403        switch ( $input_type ) {
     404            case 'text' :
     405            case 'textarea' :
     406                $retval = esc_attr( stripslashes( $pre_ret_val ) );
     407                break;
     408
     409            case 'password' :
     410            case 'select' :
     411            case 'radio' :
     412            case 'checkbox' :
     413            default :
     414                $retval = esc_attr( $pre_ret_val );
     415                break;
     416        }
     417
     418        return apply_filters( 'bbp_get_sanitize_val', $retval, $request, $input_type );
     419    }
    320420
    321421/**
     
    614714    <input type="hidden" name="user_id" id="user_id"         value="<?php bbp_displayed_user_id(); ?>" />
    615715
    616     <?php wp_referer_field(); ?>
    617 
    618716    <?php wp_nonce_field( 'update-user_' . bbp_get_displayed_user_id() );
    619717}
  • branches/plugin/bbp-includes/bbp-hooks.php

    r2806 r2815  
    253253
    254254// Canonical
    255 add_filter( 'redirect_canonical', 'bbp_redirect_canonical' );
     255add_filter( 'redirect_canonical',    'bbp_redirect_canonical' );
     256
     257// Login/Register/Lost Password
     258add_filter( 'login_redirect',        'bbp_redirect_login', 2, 3 );
     259add_filter( 'login_url',             'bbp_login_url',      2, 2 );
     260add_filter( 'logout_url',            'bbp_logout_url',     2, 2 );
    256261
    257262// Fix post author id for anonymous posts (set it back to 0) when the post status is changed
    258 add_filter( 'wp_insert_post_data', 'bbp_fix_post_author', 30, 2 );
     263add_filter( 'wp_insert_post_data',   'bbp_fix_post_author', 30, 2 );
    259264
    260265/**
  • branches/plugin/bbp-includes/bbp-user-functions.php

    r2790 r2815  
    11<?php
     2
    23/**
    34 * bbPress User Functions
     
    67 * @subpackage Functions
    78 */
     9
     10/**
     11 * Redirect back to $url when attempting to use the login page
     12 *
     13 * @since bbPress (r2815)
     14 *
     15 * @uses wp_safe_redirect()
     16 * @uses esc_url()
     17 * @param str $url
     18 * @param str $raw_url
     19 * @param obj $user
     20 */
     21function bbp_redirect_login( $url = '', $raw_url = '', $user = '' ) {
     22    if ( !empty( $url ) || !empty( $raw_url ) || is_wp_error( $user ) ) {
     23        if ( empty( $url ) && !empty( $raw_url ) )
     24            $url = $raw_url;
     25
     26        if ( $url == admin_url() )
     27            $url = home_url();
     28
     29        wp_safe_redirect( esc_url( $url ) );
     30        exit;
     31    }
     32}
    833
    934/**
     
    97122}
    98123
    99 /** START - Favorites *********************************************************/
     124/** Favorites *****************************************************************/
    100125
    101126/**
     
    359384}
    360385
    361 /** END - Favorites ***********************************************************/
    362 
    363 /** START - Subscriptions *****************************************************/
     386/** Subscriptions *************************************************************/
    364387
    365388/**
     
    632655}
    633656
    634 /** END - Subscriptions *******************************************************/
    635 
    636 /** START - Edit User *********************************************************/
     657/** Edit **********************************************************************/
    637658
    638659/**
  • branches/plugin/bbp-includes/bbp-user-template.php

    r2812 r2815  
    726726}
    727727
     728/** Login *********************************************************************/
     729
     730/**
     731 * Redirect a user back to their profile if they are already logged in.
     732 *
     733 * This should be used before get_header() is called in template files where
     734 * the user should never have access to the contents of that file.
     735 *
     736 * @since bbPress (r2815)
     737 *
     738 * @param str $url The URL to redirect to
     739 *
     740 * @uses is_user_logged_in() Check if user is logged in
     741 * @uses wp_safe_redirect() Safely redirect
     742 * @uses bbp_get_user_profile_url() Get URL of user
     743 * @uses bbp_get_current_user_id() Get current user ID
     744 */
     745function bbp_logged_in_redirect( $url = '' ) {
     746    if ( is_user_logged_in() ) {
     747        $redirect_to = !empty( $url ) ? $url : bbp_get_user_profile_url( bbp_get_current_user_id() );
     748        wp_safe_redirect( $redirect_to );
     749        exit;
     750    }
     751}
     752
     753/**
     754 * Output the required hidden fields when logging in
     755 *
     756 * @since bbPress (r2815)
     757 *
     758 * @uses wp_referer_field() Set referer
     759 * @uses wp_nonce_field() To generate hidden nonce fields
     760 */
     761function bbp_user_login_fields() {
    728762?>
     763
     764        <input type="hidden" name="action"      id="bbp_user_login" value="bbp-user-login" />
     765        <input type="hidden" name="user-cookie" value="1" />
     766
     767        <?php bbp_redirect_to_field(); ?>
     768
     769        <?php wp_nonce_field( 'bbp-user-login' );
     770}
     771
     772/** Register *********************************************************************/
     773
     774/**
     775 * Output the required hidden fields when registering
     776 *
     777 * @since bbPress (r2815)
     778 *
     779 * @uses wp_referer_field() Set referer
     780 * @uses wp_nonce_field() To generate hidden nonce fields
     781 */
     782function bbp_user_register_fields() {
     783?>
     784
     785        <input type="hidden" name="action"       id="bbp_user_register" value="bbp-user-register" />
     786        <input type="hidden" name="user-cookie" value="1" />
     787
     788        <?php wp_nonce_field( 'bbp-user-register' );
     789}
     790
     791/** Lost Password *********************************************************************/
     792
     793/**
     794 * Output the required hidden fields when user lost password
     795 *
     796 * @since bbPress (r2815)
     797 *
     798 * @uses wp_referer_field() Set referer
     799 * @uses wp_nonce_field() To generate hidden nonce fields
     800 */
     801function bbp_user_lost_pass_fields() {
     802?>
     803
     804        <input type="hidden" name="action"      id="bbp_user_lost_pass" value="bbp-user-lost-pass" />
     805        <input type="hidden" name="user-cookie" value="1" />
     806
     807        <?php wp_nonce_field( 'bbp-user-lost-pass' );
     808}
     809
     810?>
  • branches/plugin/bbp-themes/bbp-twentyten/css/bbpress.css

    r2810 r2815  
    226226}
    227227
    228 p#bbp_topic_submit_container,
    229 p#bbp_reply_submit_container {
     228div.bbp-submit-wrapper {
    230229    float: right;
    231230}
  • branches/plugin/bbp-themes/bbp-twentyten/form-bbp_merge.php

    r2810 r2815  
    6969                    </fieldset>
    7070
    71                     <p id="bbp_topic_submit_container">
     71                    <div class="bbp-submit-wrapper">
    7272                        <button type="submit" tabindex="<?php bbp_tab_index(); ?>" id="bbp_merge_topic_submit" name="bbp_merge_topic_submit"><?php _e( 'Submit', 'bbpress' ); ?></button>
    73                     </p>
     73                    </div>
    7474                </div>
    7575
  • branches/plugin/bbp-themes/bbp-twentyten/form-bbp_reply.php

    r2810 r2815  
    9494                        <?php endif; ?>
    9595
    96                         <p id="bbp_reply_submit_container">
     96                        <div class="bbp-submit-wrapper">
    9797                            <button type="submit" tabindex="<?php bbp_tab_index(); ?>" id="bbp_reply_submit" name="bbp_reply_submit"><?php _e( 'Submit', 'bbpress' ); ?></button>
    98                         </p>
     98                        </div>
    9999                    </div>
    100100
  • branches/plugin/bbp-themes/bbp-twentyten/form-bbp_split.php

    r2810 r2815  
    7979                    </fieldset>
    8080
    81                     <p id="bbp_topic_submit_container">
     81                    <div class="bbp-submit-wrapper">
    8282                        <button type="submit" tabindex="<?php bbp_tab_index(); ?>" id="bbp_merge_topic_submit" name="bbp_merge_topic_submit"><?php _e( 'Submit', 'bbpress' ); ?></button>
    83                     </p>
     83                    </div>
    8484                </div>
    8585
  • branches/plugin/bbp-themes/bbp-twentyten/form-bbp_topic.php

    r2810 r2815  
    129129                        <?php endif; ?>
    130130
    131                         <p id="bbp_topic_submit_container">
     131                        <div class="bbp-submit-wrapper">
    132132                            <button type="submit" tabindex="<?php bbp_tab_index(); ?>" id="bbp_topic_submit" name="bbp_topic_submit"><?php _e( 'Submit', 'bbpress' ); ?></button>
    133                         </p>
     133                        </div>
    134134                    </div>
    135135
  • branches/plugin/bbp-themes/bbp-twentyten/form-bbp_user_register.php

    r2814 r2815  
    99
    1010?>
     11
     12    <form method="post" action="<?php bbp_wp_login_action( array( 'action' => 'register', 'context' => 'login_post' ) ); ?>" class="bbp-login-form">
     13        <fieldset>
     14            <legend><?php _e( 'Register', 'bbpress' ); ?></legend>
     15
     16            <?php do_action( 'bbp_template_notices' ); ?>
     17
     18            <div class="bbp-username">
     19                <label for="user_login"><?php _e( 'Username', 'bbpress' ); ?>: </label>
     20                <input type="text" name="log" value="<?php bbp_sanitize_val( 'user_login' ); ?>" size="20" id="user_login" tabindex="<?php bbp_tab_index(); ?>" />
     21            </div>
     22
     23            <div class="bbp-email">
     24                <label for="user_email"><?php _e( 'Email Address', 'bbpress' ); ?>: </label>
     25                <input type="text" name="user_email" value="<?php bbp_sanitize_val( 'user_email' ); ?>" size="20" id="user_email" tabindex="<?php bbp_tab_index(); ?>" />
     26            </div>
     27
     28            <div class="bbp-submit-wrapper">
     29
     30                <?php do_action( 'register_form' ); ?>
     31
     32                <button type="submit" name="user-submit" tabindex="<?php bbp_tab_index(); ?>" class="user-submit"><?php _e( 'Register', 'bbpress' ); ?></button>
     33
     34                <?php bbp_user_register_fields(); ?>
     35
     36            </div>
     37        </fieldset>
     38    </form>
  • branches/plugin/bbp-themes/bbp-twentyten/page-bbp_login.php

    r2810 r2815  
    88 */
    99
    10 ?>
     10// No logged in users
     11bbp_logged_in_redirect();
    1112
    12 <?php get_header(); ?>
     13// Begin Template
     14get_header(); ?>
    1315
    1416        <div id="container">
     
    2527                            <?php the_content(); ?>
    2628
    27                             <?php if ( !is_user_logged_in() ) : ?>
     29                            <?php //if ( !is_user_logged_in() ) : ?>
    2830
    29                                 <fieldset>
    30                                     <legend><?php _e( 'Login', 'bbpress' ); ?></legend>
     31                            <?php get_template_part( 'form', 'bbp_user_login' ); ?>
    3132
    32                                     <?php do_action( 'bbp_template_notices' ); ?>
     33                            <?php //else : ?>
    3334
    34                                     <?php wp_login_form( array( 'redirect' => $_SERVER['HTTP_REFERER'] ) ); ?>
    35 
    36                                 </fieldset>
    37                            
    38                             <?php else : ?>
    39 
    40 
    41 
    42                             <?php endif; ?>
     35                            <?php //endif; ?>
    4336
    4437                        </div>
  • branches/plugin/bbp-themes/bbp-twentyten/page-bbp_register.php

    r2813 r2815  
    88 */
    99
    10 ?>
     10// No logged in users
     11bbp_logged_in_redirect();
    1112
    12 <?php get_header(); ?>
     13// Begin Template
     14get_header(); ?>
    1315
    1416        <div id="container">
     
    2527                            <?php the_content(); ?>
    2628
    27                             <?php if ( !is_user_logged_in() ) : ?>
    28 
    29                                 <?php get_template_part( 'form', 'bbp_user_register' ); ?>
    30 
    31                             <?php else : ?>
    32 
    33                                 <p><?php _e( 'You&#8217;re already logged in, why do you need to register?', 'bbpress' ); ?></p>
    34 
    35                             <?php endif; ?>
     29                            <?php get_template_part( 'form', 'bbp_user_register' ); ?>
    3630
    3731                        </div>
Note: See TracChangeset for help on using the changeset viewer.