bp_core_add_cropper_inline_js()
Output the inline JS needed for the cropper to work on a per-page basis.
Description
Source
File: bp-core/bp-core-cssjs.php
function bp_core_add_cropper_inline_js() { /** * Filters the return value of getimagesize to determine if an image was uploaded. * * @since BuddyPress 1.1.0 * * @param array $value Array of data found by getimagesize. */ $image = apply_filters( 'bp_inline_cropper_image', getimagesize( bp_core_avatar_upload_path() . buddypress()->avatar_admin->image->dir ) ); if ( empty( $image ) ) { return; } // Get avatar full width and height. $full_height = bp_core_avatar_full_height(); $full_width = bp_core_avatar_full_width(); // Calculate Aspect Ratio. if ( !empty( $full_height ) && ( $full_width != $full_height ) ) { $aspect_ratio = $full_width / $full_height; } else { $aspect_ratio = 1; } // Default cropper coordinates. // Smaller than full-width: cropper defaults to entire image. if ( $image[0] < $full_width ) { $crop_left = 0; $crop_right = $image[0]; // Less than 2x full-width: cropper defaults to full-width. } elseif ( $image[0] < ( $full_width * 2 ) ) { $padding_w = round( ( $image[0] - $full_width ) / 2 ); $crop_left = $padding_w; $crop_right = $image[0] - $padding_w; // Larger than 2x full-width: cropper defaults to 1/2 image width. } else { $crop_left = round( $image[0] / 4 ); $crop_right = $image[0] - $crop_left; } // Smaller than full-height: cropper defaults to entire image. if ( $image[1] < $full_height ) { $crop_top = 0; $crop_bottom = $image[1]; // Less than double full-height: cropper defaults to full-height. } elseif ( $image[1] < ( $full_height * 2 ) ) { $padding_h = round( ( $image[1] - $full_height ) / 2 ); $crop_top = $padding_h; $crop_bottom = $image[1] - $padding_h; // Larger than 2x full-height: cropper defaults to 1/2 image height. } else { $crop_top = round( $image[1] / 4 ); $crop_bottom = $image[1] - $crop_top; } ?> <script> jQuery(window).load( function(){ jQuery('#avatar-to-crop').Jcrop({ onChange: showPreview, onSelect: updateCoords, aspectRatio: <?php echo (int) $aspect_ratio; ?>, setSelect: [ <?php echo (int) $crop_left; ?>, <?php echo (int) $crop_top; ?>, <?php echo (int) $crop_right; ?>, <?php echo (int) $crop_bottom; ?> ] }); }); function updateCoords(c) { jQuery('#x').val(c.x); jQuery('#y').val(c.y); jQuery('#w').val(c.w); jQuery('#h').val(c.h); } function showPreview(coords) { if ( parseInt(coords.w) > 0 ) { var fw = <?php echo (int) $full_width; ?>; var fh = <?php echo (int) $full_height; ?>; var rx = fw / coords.w; var ry = fh / coords.h; jQuery( '#avatar-crop-preview' ).css({ width: Math.round(rx * <?php echo (int) $image[0]; ?>) + 'px', height: Math.round(ry * <?php echo (int) $image[1]; ?>) + 'px', marginLeft: '-' + Math.round(rx * coords.x) + 'px', marginTop: '-' + Math.round(ry * coords.y) + 'px' }); } } </script> <?php }
Changelog
Version | Description |
---|---|
BuddyPress 1.1.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.