/* global bp_activity_admin_vars, postboxes, wpAjax */ (function( $ ) { /** * Activity reply object for the activity index screen. * * @since 1.6.0 */ var activityReply = { /** * Attach event handler functions to the relevant elements. * * @since 1.6.0 */ init : function() { $(document).on( 'click', '.row-actions a.reply', activityReply.open ); $(document).on( 'click', '#bp-activities-container a.cancel', activityReply.close ); $(document).on( 'click', '#bp-activities-container a.save', activityReply.send ); // Close textarea on escape. $(document).on( 'keyup', '#bp-activities:visible', function( e ) { if ( 27 === e.which ) { activityReply.close(); } }); }, /** * Reveals the entire row when "reply" is pressed. * * @since 1.6.0 */ open : function() { // Hide the container row, and move it to the new location. var box = $( '#bp-activities-container' ).hide(); $( this ).parents( 'tr' ).after( box ); // Fade the whole row in, and set focus on the text area. box.fadeIn( '300' ); $( '#bp-activities' ).focus(); return false; }, /** * Hide and reset the entire row when "cancel", or escape, are pressed. * * @since 1.6.0 */ close : function() { // Hide the container row. $('#bp-activities-container').fadeOut( '200', function () { // Empty and unfocus the text area. $( '#bp-activities' ).val( '' ).blur(); // Remove any error message and disable the spinner. $( '#bp-replysubmit .error' ).html( '' ).hide(); $( '#bp-replysubmit .waiting' ).hide(); }); return false; }, /** * Submits "form" via AJAX back to WordPress. * * @since 1.6.0 */ send : function() { // Hide any existing error message, and show the loading spinner. $( '#bp-replysubmit .error' ).hide(); $( '#bp-replysubmit .waiting' ).show(); // Grab the nonce. var reply = {}; reply['_ajax_nonce-bp-activity-admin-reply'] = $( '#bp-activities-container input[name="_ajax_nonce-bp-activity-admin-reply"]' ).val(); // Get the rest of the data. reply.action = 'bp-activity-admin-reply'; reply.content = $( '#bp-activities' ).val(); reply.parent_id = $( '#bp-activities-container' ).prev().data( 'parent_id' ); reply.root_id = $( '#bp-activities-container' ).prev().data( 'root_id' ); // Make the AJAX call. $.ajax({ data : reply, type : 'POST', url : ajaxurl, // Callbacks. error : function( r ) { activityReply.error( r ); }, success : function( r ) { activityReply.show( r ); } }); return false; }, /** * send() error message handler. * * @since 1.6.0 */ error : function( r ) { var er = r.statusText; $('#bp-replysubmit .waiting').hide(); if ( r.responseText ) { er = r.responseText.replace( /<.[^<>]*?>/g, '' ); } if ( er ) { $('#bp-replysubmit .error').html( er ).show(); } }, /** * send() success handler. * * @since 1.6.0 */ show : function ( xml ) { var bg, id, response; // Handle any errors in the response. if ( typeof( xml ) === 'string' ) { activityReply.error( { 'responseText': xml } ); return false; } response = wpAjax.parseAjaxResponse( xml ); if ( response.errors ) { activityReply.error( { 'responseText': wpAjax.broken } ); return false; } response = response.responses[0]; // Close and reset the reply row, and add the new Activity item into the list. $('#bp-activities-container').fadeOut( '200', function () { // Empty and unfocus the text area. $( '#bp-activities' ).val( '' ).blur(); // Remove any error message and disable the spinner. $( '#bp-replysubmit .error' ).html( '' ).hide(); $( '#bp-replysubmit .waiting' ).hide(); // Insert new activity item. $( '#bp-activities-container' ).before( response.data ); // Get background colour and animate the flash. id = $( '#activity-' + response.id ); bg = id.closest( '.widefat' ).css( 'backgroundColor' ); id.animate( { 'backgroundColor': '#CEB' }, 300 ).animate( { 'backgroundColor': bg }, 300 ); }); } }; $(document).ready( function () { // Create the Activity reply object after domready event. activityReply.init(); // On the edit screen, unload the close/open toggle js for the action & content metaboxes. $( '#bp_activity_action h3, #bp_activity_content h3' ).unbind( 'click' ); // redo the post box toggles to reset the one made by comment.js in favor // of activity administration page id so that metaboxes are still collapsible // in single Activity Administration screen. if ( typeof postboxes !== 'undefined' ) { postboxes.add_postbox_toggles( bp_activity_admin_vars.page ); } }); })(jQuery);