Skip to:
Content

BuddyPress.org

Ticket #8230: 8230.patch

File 8230.patch, 17.3 KB (added by passoniate, 2 years ago)

Patch

  • src/bp-core/js/avatar.js

     
    44
    55( function( exports, $ ) {
    66
    7         // Bail if not set
     7        // Bail if not set.
    88        if ( typeof BP_Uploader === 'undefined' ) {
    99                return;
    1010        }
     
    2525                         */
    2626                        this.removeLegacyUI();
    2727
    28                         // Init some vars
     28                        // Init some vars.
    2929                        this.views    = new Backbone.Collection();
    3030                        this.jcropapi = {};
    3131                        this.warning = null;
    3232
    33                         // Set up nav
     33                        // Set up nav.
    3434                        this.setupNav();
    3535
    36                         // Avatars are uploaded files
     36                        // Avatars are uploaded files.
    3737                        this.avatars = bp.Uploader.filesUploaded;
    3838
    3939                        // The Avatar Attachment object.
    4040                        this.Attachment = new Backbone.Model();
    4141
    42                         // Wait till the queue is reset
     42                        // Wait till the queue is reset.
    4343                        bp.Uploader.filesQueue.on( 'reset', this.cropView, this );
    4444
    4545                        /**
     
    5656                },
    5757
    5858                removeLegacyUI: function() {
    59                         // User
     59                        // User.
    6060                        if ( $( '#avatar-upload-form' ).length ) {
    6161                                $( '#avatar-upload' ).remove();
    6262                                $( '#avatar-upload-form p' ).remove();
    6363
    64                         // Group Manage
     64                        // Group Manage.
    6565                        } else if ( $( '#group-settings-form' ).length ) {
    6666                                $( '#group-settings-form p' ).each( function( i ) {
    6767                                        if ( 0 !== i ) {
     
    7373                                        $( '#delete-group-avatar-button' ).remove();
    7474                                }
    7575
    76                         // Group Create
     76                        // Group Create.
    7777                        } else if ( $( '#group-create-body' ).length ) {
    7878                                $( '.main-column p #file' ).remove();
    7979                                $( '.main-column p #upload' ).remove();
    8080
    81                         // Admin Extended Profile
     81                        // Admin Extended Profile.
    8282                        } else if ( $( '#bp_xprofile_user_admin_avatar a.bp-xprofile-avatar-user-admin' ).length ) {
    8383                                $( '#bp_xprofile_user_admin_avatar a.bp-xprofile-avatar-user-admin' ).remove();
    8484                        }
     
    8585                },
    8686
    8787                setView: function( view ) {
    88                         // Clear views
     88                        // Clear views.
    8989                        if ( ! _.isUndefined( this.views.models ) ) {
    9090                                _.each( this.views.models, function( model ) {
    9191                                        model.get( 'view' ).remove();
     
    9292                                }, this );
    9393                        }
    9494
    95                         // Reset Views
     95                        // Reset Views.
    9696                        this.views.reset();
    9797
    98                         // Reset Avatars (file uploaded)
     98                        // Reset Avatars (file uploaded).
    9999                        if ( ! _.isUndefined( this.avatars ) ) {
    100100                                this.avatars.reset();
    101101                        }
    102102
    103                         // Reset the Jcrop API
     103                        // Reset the Jcrop API.
    104104                        if ( ! _.isEmpty( this.jcropapi ) ) {
    105105                                this.jcropapi.destroy();
    106106                                this.jcropapi = {};
    107107                        }
    108108
    109                         // Load the required view
     109                        // Load the required view.
    110110                        switch ( view ) {
    111111                                case 'upload':
    112112                                        this.uploaderView();
     
    119119                },
    120120
    121121                resetViews: function() {
    122                         // Reset to the uploader view
     122                        // Reset to the uploader view.
    123123                        this.nav.trigger( 'bp-avatar-view:changed', 'upload' );
    124124
    125                         // Reset to the uploader nav
     125                        // Reset to the uploader nav.
    126126                        _.each( this.navItems.models, function( model ) {
    127127                                if ( model.id === 'upload' ) {
    128128                                        model.set( { active: 1 } );
     
    143143                                        return;
    144144                                }
    145145
    146                                 // Reset active View
     146                                // Reset active View.
    147147                                activeView = 0;
    148148
    149149                                if ( 0 === index ) {
     
    163163                        this.nav = new bp.Views.Nav( { collection: this.navItems } );
    164164                        this.nav.inject( '.bp-avatar-nav' );
    165165
    166                         // Activate the initial view (uploader)
     166                        // Activate the initial view (uploader).
    167167                        this.setView( initView );
    168168
    169                         // Listen to nav changes (it's like a do_action!)
     169                        // Listen to nav changes (it's like a do_action!).
    170170                        this.nav.on( 'bp-avatar-view:changed', _.bind( this.setView, this ) );
    171171                },
    172172
    173173                uploaderView: function() {
    174                         // Listen to the Queued uploads
     174                        // Listen to the Queued uploads.
    175175                        bp.Uploader.filesQueue.on( 'add', this.uploadProgress, this );
    176176
    177                         // Create the BuddyPress Uploader
     177                        // Create the BuddyPress Uploader.
    178178                        var uploader = new bp.Views.Uploader();
    179179
    180                         // Add it to views
     180                        // Add it to views.
    181181                        this.views.add( { id: 'upload', view: uploader } );
    182182
    183                         // Display it
     183                        // Display it.
    184184                        uploader.inject( '.bp-avatar' );
    185185                },
    186186
    187187                uploadProgress: function() {
    188                         // Create the Uploader status view
     188                        // Create the Uploader status view.
    189189                        var avatarStatus = new bp.Views.uploaderStatus( { collection: bp.Uploader.filesQueue } );
    190190
    191191                        if ( ! _.isUndefined( this.views.get( 'status' ) ) ) {
     
    194194                                this.views.add( { id: 'status', view: avatarStatus } );
    195195                        }
    196196
    197                         // Display it
     197                        // Display it.
    198198                        avatarStatus.inject( '.bp-avatar-status' );
    199199                },
    200200
     
    201201                cropView: function() {
    202202                        var status;
    203203
    204                         // Bail there was an error during the Upload
     204                        // Bail there was an error during the Upload.
    205205                        if ( _.isEmpty( this.avatars.models ) ) {
    206206                                return;
    207207                        }
    208208
    209                         // Make sure to remove the uploads status
     209                        // Make sure to remove the uploads status.
    210210                        if ( ! _.isUndefined( this.views.get( 'status' ) ) ) {
    211211                                status = this.views.get( 'status' );
    212212                                status.get( 'view' ).remove();
     
    213213                                this.views.remove( { id: 'status', view: status } );
    214214                        }
    215215
    216                         // Create the Avatars view
     216                        // Create the Avatars view.
    217217                        var avatar = new bp.Views.Avatars( { collection: this.avatars } );
    218218                        this.views.add( { id: 'crop', view: avatar } );
    219219
     
    224224                        var self = this,
    225225                                crop;
    226226
    227                         // Remove the crop view
     227                        // Remove the crop view.
    228228                        if ( ! _.isUndefined( this.views.get( 'crop' ) ) ) {
    229                                 // Remove the JCrop API
     229                                // Remove the JCrop API.
    230230                                if ( ! _.isEmpty( this.jcropapi ) ) {
    231231                                        this.jcropapi.destroy();
    232232                                        this.jcropapi = {};
     
    261261
    262262                                avatarStatus.inject( '.bp-avatar-status' );
    263263
    264                                 // Update each avatars of the page
     264                                // Update each avatars of the page.
    265265                                $( '.' + avatar.get( 'object' ) + '-' + response.item_id + '-avatar' ).each( function() {
    266266                                        $(this).prop( 'src', response.avatar );
    267267                                } );
    268268
    269                                 // Inject the Delete nav
     269                                // Inject the Delete nav.
    270270                                bp.Avatar.navItems.get( 'delete' ).set( { hide: 0 } );
    271271
    272272                                /**
     
    304304                },
    305305
    306306                deleteView:function() {
    307                         // Create the delete model
     307                        // Create the delete model.
    308308                        var delete_model = new Backbone.Model( _.pick( BP_Uploader.settings.defaults.multipart_params.bp_params,
    309309                                'object',
    310310                                'item_id',
     
    311311                                'nonces'
    312312                        ) );
    313313
    314                         // Create the delete view
     314                        // Create the delete view.
    315315                        var deleteView = new bp.Views.DeleteAvatar( { model: delete_model } );
    316316
    317                         // Add it to views
     317                        // Add it to views.
    318318                        this.views.add( { id: 'delete', view: deleteView } );
    319319
    320                         // Display it
     320                        // Display it.
    321321                        deleteView.inject( '.bp-avatar' );
    322322                },
    323323
     
    325325                        var self = this,
    326326                                deleteView;
    327327
    328                         // Remove the delete view
     328                        // Remove the delete view.
    329329                        if ( ! _.isUndefined( this.views.get( 'delete' ) ) ) {
    330330                                deleteView = this.views.get( 'delete' );
    331331                                deleteView.get( 'view' ).remove();
     
    351351
    352352                                avatarStatus.inject( '.bp-avatar-status' );
    353353
    354                                 // Update each avatars of the page
     354                                // Update each avatars of the page.
    355355                                $( '.' + model.get( 'object' ) + '-' + response.item_id + '-avatar').each( function() {
    356356                                        $( this ).prop( 'src', response.avatar );
    357357                                } );
    358358
    359                                 // Remove the Delete nav
     359                                // Remove the Delete nav.
    360360                                bp.Avatar.navItems.get( 'delete' ).set( { active: 0, hide: 1 } );
    361361
    362362                                /**
    363                                  * Reset the Attachment object
     363                                 * Reset the Attachment object.
    364364                                 *
    365365                                 * You can run extra actions once the avatar is set using:
    366366                                 * bp.Avatar.Attachment.on( 'change:url', function( data ) { your code } );
     
    410410                }
    411411        };
    412412
    413         // Main Nav view
     413        // Main Nav view.
    414414        bp.Views.Nav = bp.View.extend( {
    415415                tagName:    'ul',
    416416                className:  'avatar-nav-items',
     
    422422                initialize: function() {
    423423                        var hasAvatar = _.findWhere( this.collection.models, { id: 'delete' } );
    424424
    425                         // Display a message to inform about the delete tab
     425                        // Display a message to inform about the delete tab.
    426426                        if ( 1 !== hasAvatar.get( 'hide' ) ) {
    427427                                bp.Avatar.displayWarning( BP_Uploader.strings.has_avatar_warning );
    428428                        }
     
    434434                addNavItem: function( item ) {
    435435                        /**
    436436                         * The delete nav is not added if no avatar
    437                          * is set for the object
     437                         * is set for the object.
    438438                         */
    439439                        if ( 1 === item.get( 'hide' ) ) {
    440440                                return;
     
    455455                                        view.remove();
    456456                                }
    457457
    458                                 // Check to see if the nav is not already rendered
     458                                // Check to see if the nav is not already rendered.
    459459                                if ( item.get( 'id' ) === view.model.get( 'id' ) ) {
    460460                                        isRendered = true;
    461461                                }
    462462                        } );
    463463
    464                         // Add the Delete nav if not rendered
     464                        // Add the Delete nav if not rendered.
    465465                        if ( ! _.isBoolean( isRendered ) ) {
    466466                                this.addNavItem( item );
    467467                        }
     
    470470                toggleView: function( event ) {
    471471                        event.preventDefault();
    472472
    473                         // First make sure to remove all warnings
     473                        // First make sure to remove all warnings.
    474474                        bp.Avatar.removeWarning();
    475475
    476476                        var active = $( event.target ).data( 'nav' );
     
    486486                }
    487487        } );
    488488
    489         // Nav item view
     489        // Nav item view.
    490490        bp.Views.NavItem = bp.View.extend( {
    491491                tagName:    'li',
    492492                className:  'avatar-nav-item',
     
    510510                }
    511511        } );
    512512
    513         // Avatars view
     513        // Avatars view.
    514514        bp.Views.Avatars = bp.View.extend( {
    515515                className: 'items',
    516516
     
    519519                },
    520520
    521521                addItemView: function( item ) {
    522                         // Defaults to 150
     522                        // Defaults to 150.
    523523                        var full_d = { full_h: 150, full_w: 150 };
    524524
    525                         // Make sure to take in account bp_core_avatar_full_height or bp_core_avatar_full_width php filters
     525                        // Make sure to take in account bp_core_avatar_full_height or bp_core_avatar_full_width php filters.
    526526                        if ( ! _.isUndefined( BP_Uploader.settings.crop.full_h ) && ! _.isUndefined( BP_Uploader.settings.crop.full_w ) ) {
    527527                                full_d.full_h = BP_Uploader.settings.crop.full_h;
    528528                                full_d.full_w = BP_Uploader.settings.crop.full_w;
    529529                        }
    530530
    531                         // Set the avatar model
     531                        // Set the avatar model.
    532532                        item.set( _.extend( _.pick( BP_Uploader.settings.defaults.multipart_params.bp_params,
    533533                                'object',
    534534                                'item_id',
     
    535535                                'nonces'
    536536                        ), full_d ) );
    537537
    538                         // Add the view
     538                        // Add the view.
    539539                        this.views.add( new bp.Views.Avatar( { model: item } ) );
    540540                }
    541541        } );
    542542
    543         // Avatar view
     543        // Avatar view.
    544544        bp.Views.Avatar = bp.View.extend( {
    545545                className: 'item',
    546546                template: bp.template( 'bp-avatar-item' ),
     
    556556                                aspectRatio : 1
    557557                        } );
    558558
    559                         // Display a warning if the image is smaller than minimum advised
     559                        // Display a warning if the image is smaller than minimum advised.
    560560                        if ( false !== this.model.get( 'feedback' ) ) {
    561561                                bp.Avatar.displayWarning( this.model.get( 'feedback' ) );
    562562                        }
     
    600600                                crop_bottom = nh + crop_top;
    601601                        }
    602602
    603                         // Add the cropping interface
     603                        // Add the cropping interface.
    604604                        tocrop.Jcrop( {
    605605                                onChange: _.bind( self.showPreview, self ),
    606606                                onSelect: _.bind( self.showPreview, self ),
     
    607607                                aspectRatio: self.options.aspectRatio,
    608608                                setSelect: [ crop_left, crop_top, crop_right, crop_bottom ]
    609609                        }, function() {
    610                                 // Get the Jcrop API
     610                                // Get the Jcrop API.
    611611                                bp.Avatar.jcropapi = this;
    612612                        } );
    613613                },
     
    629629                                var rx = fw / coords.w;
    630630                                var ry = fh / coords.h;
    631631
    632                                 // Update the model
     632                                // Update the model.
    633633                                this.model.set( { x: coords.x, y: coords.y, w: coords.w, h: coords.h } );
    634634
    635635                                $( '#avatar-crop-preview' ).css( {
     
    643643                }
    644644        } );
    645645
    646         // BuddyPress Avatar Feedback view
     646        // BuddyPress Avatar Feedback view.
    647647        bp.Views.AvatarStatus = bp.View.extend( {
    648648                tagName: 'p',
    649649                className: 'updated',
  • src/bp-core/js/bp-api-request.js

     
    88window.bp = window.bp || {};
    99
    1010( function( wp, bp, $ ) {
    11     // Bail if not set
     11    // Bail if not set.
    1212    if ( typeof bpApiSettings === 'undefined' ) {
    1313        return;
    1414    }
     
    1515
    1616    bp.isRestEnabled = true;
    1717
    18     // Polyfill wp.apiRequest if WordPress < 4.9
     18    // Polyfill wp.apiRequest if WordPress < 4.9.
    1919    bp.apiRequest = function( options ) {
    2020        var bpRequest;
    2121
  • src/bp-core/js/bp-plupload.js

     
    55
    66( function( exports, $ ) {
    77
    8         // Bail if not set
     8        // Bail if not set.
    99        if ( typeof BP_Uploader === 'undefined' ) {
    1010                return;
    1111        }
     
    1717         */
    1818        _.extend( bp, _.pick( wp, 'Backbone', 'ajax', 'template' ) );
    1919
    20         // Init Models, Collections, Views and the BuddyPress Uploader
     20        // Init Models, Collections, Views and the BuddyPress Uploader.
    2121        bp.Models      = bp.Models || {};
    2222        bp.Collections = bp.Collections || {};
    2323        bp.Views       = bp.Views || {};
     
    2626        /**
    2727         * BuddyPress Uploader.
    2828         *
    29          * This is an adapted version of wp.Uploader
     29         * This is an adapted version of wp.Uploader.
    3030         */
    3131        bp.Uploader.uploader = function() {
    3232                var self = this,
     
    4747                        return;
    4848                }
    4949
    50                 // Make sure flash sends cookies (seems in IE it does without switching to urlstream mode)
     50                // Make sure flash sends cookies (seems in IE it does without switching to urlstream mode).
    5151                if ( ! isIE && 'flash' === plupload.predictRuntime( this.params.defaults ) &&
    5252                        ( ! this.params.defaults.required_features || ! this.params.defaults.required_features.hasOwnProperty( 'send_binary_string' ) ) ) {
    5353
     
    9797
    9898                } );
    9999
    100                 // See https://core.trac.wordpress.org/ticket/37039
     100                // See https://core.trac.wordpress.org/ticket/37039.
    101101                this.uploader.bind( 'postinit', function( up ) {
    102102                        up.refresh();
    103103                });
    104104
    105                 // Init BuddyPress Uploader
     105                // Init BuddyPress Uploader.
    106106                this.uploader.init();
    107107
    108108                /**
     
    109109                 * Feedback callback.
    110110                 *
    111111                 * Add a new message to the errors collection, so it's possible
    112                  * to give some feedback to the user
     112                 * to give some feedback to the user.
    113113                 *
    114114                 * @param  {string}        message
    115115                 * @param  {object}        data
     
    140140
    141141                        /**
    142142                         * In case the multiple selection is false (eg: avatar) stop the process and send
    143                          * and event containing a warning
     143                         * and event containing a warning.
    144144                         */
    145145                        if ( ! uploader.settings.multi_selection && files.length > 1 ) {
    146146                                for ( var i in files ) {
     
    181181                } );
    182182
    183183                /**
    184                  * Update each file item on progress
     184                 * Update each file item on progress.
    185185                 *
    186186                 * @event UploadProgress
    187187                 * @param {plupload.Uploader} uploader Uploader instance.
     
    225225
    226226                        file.item.set( _.extend( response.data, { uploading: false } ) );
    227227
    228                         //  Add the file to the Uploaded ones
     228                        //  Add the file to the Uploaded ones.
    229229                        bp.Uploader.filesUploaded.add( file.item );
    230230
    231231                } );
    232232
    233233                /**
    234                  * Trigger an event to inform a new upload is being processed
     234                 * Trigger an event to inform a new upload is being processed.
    235235                 *
    236                  * Mainly used to remove an eventual warning
     236                 * Mainly used to remove an eventual warning.
    237237                 *
    238238                 * @event BeforeUpload
    239239                 * @param {plupload.Uploader} uploader Uploader instance.
     
    244244                } );
    245245
    246246                /**
    247                  * Reset the filesQueue once the upload is complete
     247                 * Reset the filesQueue once the upload is complete.
    248248                 *
    249249                 * @event BeforeUpload
    250250                 * @param {plupload.Uploader} uploader Uploader instance.
     
    256256                } );
    257257
    258258                /**
    259                  * Map Plupload errors & Create a warning when plupload failed
     259                 * Map Plupload errors & Create a warning when plupload failed.
    260260                 *
    261261                 * @event Error
    262262                 * @param {plupload.Uploader} uploader Uploader instance.
     
    291291                } );
    292292        };
    293293
    294         // Create a very generic Model for files
     294        // Create a very generic Model for files.
    295295        bp.Models.File = Backbone.Model.extend( {
    296296                file: {}
    297297        } );
    298298
    299         // Add Collections to store queue, uploaded files and errors
     299        // Add Collections to store queue, uploaded files and errors.
    300300        $.extend( bp.Uploader, {
    301301                filesQueue    : new Backbone.Collection(),
    302302                filesUploaded : new Backbone.Collection(),
     
    303303                filesError    : new Backbone.Collection()
    304304        } );
    305305
    306         // Extend wp.Backbone.View with .prepare() and .inject()
     306        // Extend wp.Backbone.View with .prepare() and .inject().
    307307        bp.View = bp.Backbone.View.extend( {
    308308                inject: function( selector ) {
    309309                        this.render();
     
    320320                }
    321321        } );
    322322
    323         // BuddyPress Uploader main view
     323        // BuddyPress Uploader main view.
    324324        bp.Views.Uploader = bp.View.extend( {
    325325                className: 'bp-uploader-window',
    326326                template: bp.template( 'upload-window' ),
     
    358358                                return;
    359359                        }
    360360
    361                         // Remove all warning views
     361                        // Remove all warning views.
    362362                        _.each( this.warnings, function( view ) {
    363363                                view.remove();
    364364                        } );
    365365
    366                         // Reset Warnings
     366                        // Reset Warnings.
    367367                        this.warnings = [];
    368368                }
    369369        } );
    370370
    371         // BuddyPress Uploader warning view
     371        // BuddyPress Uploader warning view.
    372372        bp.Views.uploaderWarning = bp.View.extend( {
    373373                tagName: 'p',
    374374                className: 'warning',
     
    383383                }
    384384        } );
    385385
    386         // BuddyPress Uploader Files view
     386        // BuddyPress Uploader Files view.
    387387        bp.Views.uploaderStatus = bp.View.extend( {
    388388                className: 'files',
    389389
     
    410410                }
    411411        } );
    412412
    413         // BuddyPress Uploader File progress view
     413        // BuddyPress Uploader File progress view.
    414414        bp.Views.uploaderProgress = bp.View.extend( {
    415415                className: 'bp-uploader-progress',
    416416                template: bp.template( 'progress-window' )