WordPress.org

Plugin Directory

Changeset 1261821


Ignore:
Timestamp:
10/08/15 15:54:57 (2 years ago)
Author:
ZaneMatthew
Message:

Detail: http://zanematthew.com/zm-ajax-login-register-version-2-0-2/

Updates:

  • Removed unused variables.
  • Redirect URLs are now centralized.
  • Registration fields are now required via HTML5 (they have always been checked via AJAX :)
  • The status filters (hooks) have changed – making it easier for other developers to integrate.
  • Usernames are now sanitized when applicable.
  • Scottish Gaelic translation added.
  • Dialog positioning are now filtered – this allows for the Pro version to have granular control over the dialog position via the settings.
  • Login & Register have improved UI/UX – form fields are disabled during form submission
  • Fixed a PHP Notice
  • Hebrew translation added
Location:
zm-ajax-login-register/trunk
Files:
4 added
10 edited

Legend:

Unmodified
Added
Removed
  • zm-ajax-login-register/trunk/assets/login.js

    r1242602 r1261821  
    1010 
    1111        var $this = $(this), 
    12             google_recaptcha = zMAjaxLoginRegister.recaptcha_check_login( $this ); 
     12            google_recaptcha = zMAjaxLoginRegister.recaptcha_check_login( $this ), 
     13            serialized_form = $this.serialize(), 
     14            form_fields = 'input[type="password"], input[type="text"], input[type="email"], input[type="checkbox"], input[type="submit"]', 
     15            data = { 
     16                action: 'login_submit', 
     17                security: $this.data('zm_alr_login_security') 
     18            }; 
    1319 
    14         var data = { 
    15             action: 'login_submit', 
    16             security: $this.data('zm_alr_login_security') 
    17         }; 
     20        $this.find( form_fields ).attr('disabled','disabled'); 
    1821 
    1922        $.ajax({ 
    2023            global: false, 
    21             data: "action=login_submit&" + $this.serialize() + "&security=" + $this.data('zm_alr_login_security') + "&" + google_recaptcha, 
     24            data: "action=login_submit&" + serialized_form + "&security=" + $this.data('zm_alr_login_security') + "&" + google_recaptcha, 
    2225            type: "POST", 
    2326            url: _zm_alr_settings.ajaxurl, 
     
    2528 
    2629                ajax_login_register_show_message( $this, msg ); 
     30                $this.find( form_fields ).removeAttr('disabled'); 
    2731                zMAjaxLoginRegister.reload( msg.redirect_url ); 
    2832 
  • zm-ajax-login-register/trunk/assets/register.js

    r1242602 r1261821  
    2828     * Confirms that two input fields match 
    2929     */ 
    30  
    31     function confirmPassword() { 
    32         $formButton = $( '.register_button', $form ); 
     30    $document.on('keyup change', '.user_confirm_password', function(){ 
     31        var $form = $(this).parents('form'), 
     32            $formButton = $( '.register_button', $form ); 
    3333 
    3434        if ( !$(this).val() ){ 
     
    4343                .animate({ opacity: 1 }); 
    4444        } 
    45     } 
    46  
    47     $document.on('keyup change', '.user_confirm_password', confirmPassword); 
     45    }); 
    4846 
    4947 
     
    5553 
    5654        event.preventDefault(); 
    57         var $this = $( this ); 
    5855 
     56        var $this = $( this ), 
     57            serialized_form = $this.serialize(), 
     58            form_fields = 'input[type="password"], input[type="text"], input[type="email"]', 
     59            google_recaptcha = zMAjaxLoginRegister.recaptcha_check_register(); 
     60 
     61        $this.find( form_fields ).attr('disabled','disabled'); 
    5962 
    6063        if ( $('.user_confirm_password').length ){ 
    6164            passwords_match = zMAjaxLoginRegister.confirm_password('.user_confirm_password'); 
    6265 
    63             if ( passwords_match.code == 'error' ){ 
     66            if ( passwords_match.code == 'show_notice' ){ 
    6467                ajax_login_register_show_message( $this, msg ); 
     68                $this.find( form_fields ).removeAttr('disabled'); 
    6569                zMAjaxLoginRegister.reload( msg.redirect_url ); 
    6670                return false; 
     
    6872        } 
    6973 
    70         var google_recaptcha = zMAjaxLoginRegister.recaptcha_check_register(); 
    71  
    7274        $.ajax({ 
    7375            global: false, 
    74             data: "action=setup_new_user&" + $this.serialize() + "&security=" + $this.data('zm_alr_register_security') + "&" + google_recaptcha, 
     76            data: "action=setup_new_user&" + serialized_form + "&security=" + $this.data('zm_alr_register_security') + "&" + google_recaptcha, 
    7577            dataType: 'json', 
    7678            type: "POST", 
     
    7880            success: function( msg ) { 
    7981                ajax_login_register_show_message( $this, msg ); 
     82                $this.find( form_fields ).removeAttr('disabled'); 
    8083                zMAjaxLoginRegister.reload( msg.redirect_url ); 
    8184            } 
  • zm-ajax-login-register/trunk/assets/scripts.js

    r1242602 r1261821  
    3333                "cssClass": "error-container", 
    3434                "description": _zm_alr_settings.match_error, 
    35                 "code": "error" 
     35                "code": "show_notice" 
    3636            }; 
    3737        } 
     
    167167$document.ready(function( $ ){ 
    168168 
    169  
    170169    window.ajax_login_register_show_message = function( form_obj, msg ) { 
    171170        if ( msg.code === 'success_login' || msg.code === 'success_registration' ){ 
     
    175174                .fadeIn() 
    176175                .html( msg.description ); 
    177             zMAjaxLoginRegister.reload( form_obj ); 
    178         } else if ( msg.description == '' ){ 
    179             zMAjaxLoginRegister.reload( form_obj ); 
    180         } else { 
    181             if ( msg.code === 'error' ){ 
     176        } else { 
     177            if ( msg.code === 'show_notice' ){ 
    182178                jQuery('.ajax-login-register-status-container').show(); 
    183179            } else { 
     
    268264    }); 
    269265 
     266 
    270267    $( '#ajax-login-register-dialog, #ajax-login-register-login-dialog' ).dialog( "option", "position", { 
    271         my: "center top", 
    272         at: "center top+5%", 
    273         of: 'body' 
    274     }); 
     268 
     269            my: _zm_alr_settings.dialog_position.my, 
     270            at: _zm_alr_settings.dialog_position.at, 
     271            of: _zm_alr_settings.dialog_position.of 
     272 
     273        } 
     274    ); 
     275 
    275276 
    276277    if ( _zm_alr_settings.pre_load_forms === 'zm_alr_misc_pre_load_yes' ){ 
  • zm-ajax-login-register/trunk/lib/quilt/quilt.php

    r1242602 r1261821  
    455455 
    456456        $options = $this->getOptions(); 
    457         $defaults = $this->getDefaultOptions(); 
    458457 
    459458        if ( empty( $options ) ){ 
    460459            $options = $this->getDefaultOptions(); 
    461460        } else { 
    462             $options = array_merge( $defaults, $options ); 
     461            $options = array_merge( $this->getDefaultOptions(), $options ); 
    463462        } 
    464463 
     
    616615    public function sanitizeDefault( $input=null ){ 
    617616 
    618         return esc_attr( $input ); 
     617        return esc_attr( trim( $input ) ); 
    619618 
    620619    } 
  • zm-ajax-login-register/trunk/plugin.php

    r1255224 r1261821  
    55 * Plugin URI: http://zanematthew.com/products/zm-ajax-login-register/ 
    66 * Description: Creates a simple login and register modal with an optional shortcode. 
    7  * Version: 2.0.1 
     7 * Version: 2.0.2 
    88 * Author: Zane Matthew 
    99 * Author URI: http://zanematthew.com/ 
     
    1515define( 'ZM_ALR_NAMESPACE', 'zm_alr' ); 
    1616define( 'ZM_ALR_TEXT_DOMAIN', 'ajax_login_register' ); 
    17 define( 'ZM_ALR_VERSION', '2.0.1' ); 
     17define( 'ZM_ALR_VERSION', '2.0.2' ); 
    1818define( 'ZM_ALR_PLUGIN_FILE', __FILE__ ); 
    1919 
     
    147147        'registered_text' => __( 'You are already registered', ZM_ALR_TEXT_DOMAIN ), 
    148148        'dialog_width'    => 'auto', 
    149         'dialog_height'   => 'auto' 
    150         ) ) ); 
     149        'dialog_height'   => 'auto', 
     150        'dialog_position' => array( 
     151            'my' => 'center top', 
     152            'at' => 'center top+5%', 
     153            'of' => 'body' 
     154        ) 
     155    ) ) ); 
     156 
    151157} 
    152158add_action( 'wp_enqueue_scripts', 'zm_ajax_login_register_enqueue_scripts'); 
  • zm-ajax-login-register/trunk/readme.txt

    r1255224 r1261821  
    4343* Additional features to come! 
    4444 
     45= Integrations = 
     46 
     47ZM AJAX Login Register works well with the following plugins 
     48 
     49* [Goodbye Captcha](https://wordpress.org/plugins/goodbye-captcha/) 
     50 
    4551= Translations = 
    4652 
     
    5258* Croatian via Fran 
    5359* French via [@jukd](https://twitter.com/jukd) 
     60* Hebrew via [Yehuda](http://www.atarimtr.co.il/) 
    5461* Italian via [@FilippoAceto](http://www.filippoaceto.it/) 
    5562* Polish via [Abdul](http://www.couponmachine.in) 
     
    5865* Russian (Russian) via [artbelov](https://github.com/artbelov) 
    5966* Russian (Ukraine) via Ivanka from [Coupofy](http://www.coupofy.com/) 
     67* Scottish Gaelic via Steven Kellow 
    6068* Serbian via [ogi](http://firstsiteguide.com/) 
    6169* Spanish via [dvk](http://profiles.wordpress.org/dvk/) 
  • zm-ajax-login-register/trunk/src/ALRCore/ALRHelpers.php

    r1242602 r1261821  
    2222                'description' => __('Invalid username', ZM_ALR_TEXT_DOMAIN ), 
    2323                'cssClass' => 'error-container', 
    24                 'code' => 'error' 
     24                'code' => 'show_notice' 
    2525                ), 
    2626            'invalid_username' => array( 
    2727                'description' => __( 'Invalid username', ZM_ALR_TEXT_DOMAIN ), 
    2828                'cssClass' => 'error-container', 
    29                 'code' => 'error' 
     29                'code' => 'show_notice' 
    3030                ), 
    3131            'username_does_not_exists' => array( 
    3232                'description' => __( 'Invalid username', ZM_ALR_TEXT_DOMAIN ), 
    3333                'cssClass' => 'error-container', 
    34                 'code' => 'error' 
     34                'code' => 'show_notice' 
    3535                ), 
    3636 
     
    3838                'description' => __( 'Invalid', ZM_ALR_TEXT_DOMAIN ), 
    3939                'cssClass' => 'error-container', 
    40                 'code' => 'error' 
     40                'code' => 'show_notice' 
    4141                ), 
    4242            'passwords_do_not_match' => array( 
    4343                'description' => __('Passwords do not match.', ZM_ALR_TEXT_DOMAIN ), 
    4444                'cssClass' =>'error-container', 
    45                 'code' => 'error' 
     45                'code' => 'show_notice' 
    4646                ), 
    4747 
     
    5454                'description' => __( 'Invalid Email', ZM_ALR_TEXT_DOMAIN ), 
    5555                'cssClass' => 'error-container', 
    56                 'code' => 'error' 
     56                'code' => 'show_notice' 
    5757                ), 
    5858            'email_in_use' => array( 
    5959                'description' => __( 'Invalid Email', ZM_ALR_TEXT_DOMAIN ), 
    6060                'cssClass' => 'error-container', 
    61                 'code' => 'error' 
     61                'code' => 'show_notice' 
    6262                ), 
    6363 
     
    6969            'success_registration' => array( 
    7070                'description' => __( 'Success! One moment while we log you in...', ZM_ALR_TEXT_DOMAIN ), 
    71                 'cssClass' => 'noon', 
     71                'cssClass' => 'noon success-container', 
    7272                'code' => 'success_registration' 
    7373                ) 
     
    200200    } 
    201201 
     202 
     203    /** 
     204     * Determine the redirect URL for login, and registration. 
     205     * 
     206     * @since   2.0.2 
     207     * 
     208     * @param   (string)    $user_login     The user login 
     209     * @param   (string)    $status         The status code to check against. 
     210     * @param   (string)    $prefix         The prefix used for filters 
     211     */ 
     212    public function getRedirectUrl( $user_login=null, $status=null, $prefix=null ){ 
     213 
     214        $success = array( 
     215            'success_registration', 
     216            'success_login' 
     217            ); 
     218 
     219        if ( in_array( $status, $success )){ 
     220 
     221            $current_url = empty( $_SERVER['HTTP_REFERER'] ) ? site_url( $_SERVER['REQUEST_URI'] ) : $_SERVER['HTTP_REFERER']; 
     222 
     223            $redirect_url = apply_filters( $prefix . '_redirect_url', 
     224                $current_url, 
     225                $user_login, 
     226                $status 
     227            ); 
     228 
     229        } else { 
     230 
     231            $redirect_url = null; 
     232 
     233        } 
     234 
     235        return $redirect_url; 
     236    } 
     237 
    202238} 
  • zm-ajax-login-register/trunk/src/ALRCore/ALRHtml.php

    r1255224 r1261821  
    9090                $field_classes = implode( " ", $args['classes'] ); 
    9191 
     92                if ( $args['required'] == true ){ 
     93                    $args['required'] = 'required'; 
     94                } 
     95 
    9296                $html .= '<div class="' . implode( " ", $container_classes ) . '">'; 
    9397 
     
    96100                    case 'text': 
    97101                        $html .= '<label for="' . $args['id'] . '" class="' . ZM_ALR_NAMESPACE . '_label">' . $args['title'] . '</label>'; 
    98                         $html .= '<input type="text" name="' . $args['name'] . '" id="' . $args['id'] . '" class="' . $field_classes . '" placeholder="' . $args['placeholder'] . '" ' . $args['extra'] . ' />'; 
     102                        $html .= '<input type="text" name="' . $args['name'] . '" id="' . $args['id'] . '" class="' . $field_classes . '" placeholder="' . $args['placeholder'] . '" ' . $args['extra'] . ' ' . $args['required'] . ' />'; 
    99103                        $html .= PHP_EOL; 
    100104                        break; 
     
    102106                    case 'password': 
    103107                        $html .= '<label for="' . $args['id'] . '" class="' . ZM_ALR_NAMESPACE . '_label">' . $args['title'] . '</label>'; 
    104                         $html .= '<input type="password" name="' . $args['name'] . '" id="' . $args['id'] . '" class="' . $field_classes . '" placeholder="' . $args['placeholder'] . '" ' . $args['extra'] . ' />'; 
     108                        $html .= '<input type="password" name="' . $args['name'] . '" id="' . $args['id'] . '" class="' . $field_classes . '" placeholder="' . $args['placeholder'] . '" ' . $args['extra'] . ' ' . $args['required'] . ' />'; 
    105109                        $html .= PHP_EOL; 
    106110                        break; 
     
    108112                    case 'email': 
    109113                        $html .= '<label for="' . $args['id'] . '" class="' . ZM_ALR_NAMESPACE . '_label">' . $args['title'] . '</label>'; 
    110                         $html .= '<input autocorrect="none" autocapitalize="none" type="email" name="' . $args['name'] . '" id="' . $args['id'] . '" class="' . $field_classes . '" placeholder="' . $args['placeholder'] . '" ' . $args['extra'] . ' />'; 
     114                        $html .= '<input autocorrect="none" autocapitalize="none" type="email" name="' . $args['name'] . '" id="' . $args['id'] . '" class="' . $field_classes . '" placeholder="' . $args['placeholder'] . '" ' . $args['extra'] . ' ' . $args['required'] . ' />'; 
    111115                        $html .= PHP_EOL; 
    112116                        break; 
  • zm-ajax-login-register/trunk/src/ALRCore/ALRLogin.php

    r1255224 r1261821  
    209209 
    210210        $args = apply_filters( $this->prefix . '_form_params', array( 
    211             'user_login' => sanitize_user( $_POST['zm_alr_login_user_name'] ), 
     211            'user_login' => empty( $_POST['zm_alr_login_user_name'] ) ? null : sanitize_user( $_POST['zm_alr_login_user_name'] ), 
    212212            'password' => $_POST['zm_alr_login_password'], 
    213             'remember' => empty( $_POST['remember'] ) ? false : ture 
     213            'remember' => empty( $_POST['remember'] ) ? false : true 
    214214        ) ); 
    215215 
    216         $pre_status = apply_filters( $this->prefix . '_submit_pre_status_error', $_POST ); 
     216        $status = null; 
     217        $pre_status_code = apply_filters( $this->prefix . '_submit_pre_status_error', $status ); 
    217218 
    218219        // If ANY status code is set we do not go forward 
    219         if ( isset( $pre_status['code'] ) ){ 
    220  
    221             $status = $pre_status; 
     220        if ( isset( $pre_status_code ) ){ 
     221 
     222            $status = $this->_zm_alr_helpers->status( $pre_status_code ); 
    222223 
    223224        } 
     
    282283        } 
    283284 
    284         $redirect['redirect_url'] = $this->loginRedirect( $args['user_login'], $status['code'] ); 
    285         $status = array_merge( $status, $redirect ); 
     285        $status = array_merge( $status, array( 
     286            'redirect_url' => $this->_zm_alr_helpers->getRedirectUrl( 
     287                $args['user_login'], 
     288                $status['code'], 
     289                $this->prefix 
     290            ) 
     291        ) ); 
    286292 
    287293        if ( $is_ajax ) { 
     
    316322    <?php } 
    317323 
    318  
    319     public function loginRedirect( $user_login=null, $status=null ){ 
    320  
    321         // Since this is handled via an AJAX request $wp->request is always empty 
    322         // @todo Submit to core 
    323         // global $wp; 
    324         // $current_url = trailingslashit( add_query_arg( '', '', site_url( $wp->request ) ) ); 
    325         if ( $status == 'success_login' ){ 
    326             $current_url = empty( $_SERVER['HTTP_REFERER'] ) ? site_url( $_SERVER['REQUEST_URI'] ) : $_SERVER['HTTP_REFERER']; 
    327             $redirect_url = apply_filters( $this->prefix . '_redirect_url', $current_url, $user_login, $status ); 
    328         } else { 
    329             $redirect_url = null; 
    330         } 
    331         return $redirect_url; 
    332     } 
    333  
    334324} 
  • zm-ajax-login-register/trunk/src/ALRCore/ALRRegister.php

    r1255224 r1261821  
    121121                'title' => __( 'User Name', ZM_ALR_TEXT_DOMAIN ), 
    122122                'type' => 'text', 
     123                'required' => true, 
    123124                'extra' => 'autocorrect="none" autocapitalize="none"' 
    124125                ), 
     
    126127                'title' => __( 'Email', ZM_ALR_TEXT_DOMAIN ), 
    127128                'type' => 'email', 
     129                'required' => true, 
    128130                'extra' => 'autocorrect="none" autocapitalize="none"' 
    129131                ), 
     
    131133                'title' => __( 'Password', ZM_ALR_TEXT_DOMAIN ), 
    132134                'type' => 'password', 
     135                'required' => true, 
    133136                'extra' => 'autocorrect="none" autocapitalize="none"' 
    134137                ), 
     
    209212        // Email verify needs to run "activate_user", and needs to disable createUser 
    210213        // Maybe activate user via pre status error? 
    211         $pre_status = apply_filters( $this->prefix . '_submit_pre_status_error', $status, $_POST ); 
    212  
    213         if ( isset( $pre_status['code'] ) ){ 
    214  
    215             $status = $pre_status; 
    216  
    217         } 
    218  
    219         elseif ( $valid['username']['code'] == 'error' ){ 
     214        $pre_status_code = apply_filters( $this->prefix . '_submit_pre_status_error', $status ); 
     215 
     216        if ( isset( $pre_status_code ) ){ 
     217 
     218            $status = $this->_zm_alr_helpers->status( $pre_status_code ); 
     219 
     220        } 
     221 
     222        elseif ( $valid['username']['code'] == 'show_notice' ){ 
    220223 
    221224            $status = $this->_zm_alr_helpers->status('invalid_username'); 
     
    223226        } 
    224227 
    225         elseif ( $valid['email']['code'] == 'error' ){ 
     228        elseif ( $valid['email']['code'] == 'show_notice' ){ 
    226229 
    227230            $status = $this->_zm_alr_helpers->status('invalid_username'); 
     
    232235 
    233236            $user_id = $this->_zm_alr_helpers->createUser( $user, $this->prefix ); 
    234             $status = $this->_zm_alr_helpers->status('success_registration'); 
    235             $status['id'] = $user_id; 
     237 
     238            $status = $this->_zm_alr_helpers->status( apply_filters( 
     239                $this->prefix . '_setup_new_user_status_filter', 
     240                'success_registration' ) ); 
    236241 
    237242            // Allow to void this! 
    238243            $did_signon = apply_filters( $this->prefix . '_do_signon', true ); 
    239244            if ( $did_signon === true ){ 
    240                 $this->signOn( $user ); 
     245                $this->signOn( $user, $status ); 
    241246            } 
    242247 
     
    244249 
    245250        $status = array_merge( $status, array( 
    246             'redirect_url' => $this->registerRedirect( $user['user_login'], $status['code'] ) ) 
    247         ); 
     251            'redirect_url' => $this->_zm_alr_helpers->getRedirectUrl( 
     252                $user['user_login'], 
     253                $status['code'], 
     254                $this->prefix 
     255            ) 
     256        ) ); 
    248257 
    249258        if ( $is_ajax ) { 
     
    259268 
    260269 
    261     public function signOn( $user=null ){ 
     270    /** 
     271     * This is a wrapper for the default WordPress function wp_signon that 
     272     * performs certain functions after the signon. 
     273     * 
     274     * @param   array   $user     { 
     275     *      @type   string  $user_login     The user login 
     276     *      @type   string  $user_pass      The user password 
     277     * } 
     278     * @param   array   $status   {} 
     279     * @return  void 
     280     */ 
     281    public function signOn( $user=null, $status=null ){ 
    262282 
    263283        $wp_signon = wp_signon( array( 
     
    266286            'remember' => true ), 
    267287        false ); 
    268         wp_new_user_notification( $user_id ); 
    269         do_action( $this->prefix . '_after_signon', $user_id ); 
     288 
     289        $user_obj = get_user_by( 'login', $user['user_login'] ); 
     290 
     291        wp_new_user_notification( $user_obj->ID ); 
     292        do_action( $this->prefix . '_after_signon', $user_obj->ID ); 
    270293        $status = apply_filters( $this->prefix . '_signon_status', $status, $user ); 
    271294 
     
    286309        $username = empty( $_POST['zm_alr_register_user_name'] ) ? esc_attr( $username ) : $_POST['zm_alr_register_user_name']; 
    287310 
    288         if ( validate_username( $username ) ) { 
     311        if ( empty( $username ) ) { 
     312            $msg = $this->_zm_alr_helpers->status('invalid_username'); 
     313        } elseif ( validate_username( $username ) ) { 
    289314            $user_id = username_exists( $username ); 
    290315            if ( $user_id ){ 
     
    376401    <?php } 
    377402 
    378  
    379     public function registerRedirect( $user_login=null, $status=null ){ 
    380  
    381         $current_url = empty( $_SERVER['HTTP_REFERER'] ) ? site_url( $_SERVER['REQUEST_URI'] ) : $_SERVER['HTTP_REFERER']; 
    382  
    383         $redirect_url = apply_filters( $this->prefix . '_redirect_url', $current_url, $user_login, $status ); 
    384  
    385         return $redirect_url; 
    386     } 
    387  
    388403} 
Note: See TracChangeset for help on using the changeset viewer.