Seditio Source
Root |
./othercms/b2evolution_7.2.3/rsc/js/src/evo_user_crop.js
/**
 * This file is used to open modal window with tool to crop profile pictures
 */


/**
 * Open modal window to crop profile picture
 *
 * @param integer User ID
 * @param integer File ID
 * @param string Tab of backoffice profile page
 * @return boolean FALSE to prevent onclick event of the link
 */
function user_crop_avatar( user_ID, file_ID, user_tab_from )
{
if( typeof( user_tab_from ) == 'undefined' )
{
user_tab_from = 'avatar';
}

var max_size = 750;
var min_size = 320;

var viewport_width = jQuery( window ).width();
var viewport_height = jQuery( window ).height();
//console.log( 'viewport', viewport_width, viewport_height );

// Set sizes for modal window:
var window_width = viewport_width;
var window_height = viewport_height;
var aspect_ratio = window_height / window_width;

// Limit window with max & min sizes:
window_height = ( window_height > max_size ) ? max_size : ( ( window_height < min_size ) ? min_size : window_height );
window_width = ( window_width > max_size ) ? max_size : ( ( window_width < min_size ) ? min_size : window_width );
//console.log( 'window', window_width, window_height );

// Set margins for normal view of wide screens:
var margin_size_width = 10;
var margin_size_height = 10;

margin_size_width = ( window_width - ( margin_size_width * 2 ) ) > min_size ? 10 : 0;
margin_size_height = ( window_height - ( margin_size_height * 2 ) ) > min_size ? 10: 0;

// Set modal size:
var modal_width = ( window_width > max_size ? max_size : window_width );
var modal_height = ( window_height > max_size ? max_size : window_height );


// Open modal window with loading animation while ajax request is executing below:
openModalWindow(
'<span id="spinner" class="loader_img loader_user_report absolute_center" title="' + evo_js_lang_loading + '"></span>',
modal_width + 'px',
modal_height + 'px',
true,
evo_js_lang_crop_profile_pic,
[ evo_js_lang_crop, 'btn-primary' ],
true );

// Get content size:
var content_wrapper = jQuery( 'div.modal-dialog div.modal-body' ).length ? jQuery( 'div.modal-dialog div.modal-body' ) : jQuery( '#overlay_page' );
var content_wrapper_padding = {
top: parseInt( content_wrapper.css( 'paddingTop' ) ),
right: parseInt( content_wrapper.css( 'paddingRight' ) ),
bottom: parseInt( content_wrapper.css( 'paddingBottom' ) ),
left: parseInt( content_wrapper.css( 'paddingLeft' ) )
};
var content_height = ( jQuery( 'div.modal-dialog div.modal-body' ).length ? parseInt( content_wrapper.css('min-height') ) : modal_height - 100 ) - ( content_wrapper_padding.top + content_wrapper_padding.bottom );
var content_width = modal_width - ( content_wrapper_padding.left + content_wrapper_padding.right );

// Initialize params for ajax request:
var ajax_data = {
'user_ID': user_ID,
'file_ID': file_ID,
'aspect_ratio' : aspect_ratio,
'content_width' : content_width,
'content_height' : content_height,
'display_mode': 'js',
'crumb_user': evo_js_crumb_user,
};

if( evo_js_is_backoffice )
{ // Ajax params for back-office:
ajax_data.ctrl = 'user';
ajax_data.user_tab = 'crop';
ajax_data.user_tab_from = user_tab_from;
}
else
{ // Ajax params for front-office:
ajax_data.blog = evo_js_blog;
ajax_data.disp = 'avatar';
ajax_data.action = 'crop';
}

// Execute ajax request to load a crop tool:
jQuery.ajax(
{
type: 'POST',
url: evo_js_user_crop_ajax_url,
data: ajax_data,
success: function( result )
{
openModalWindow(
result,
modal_width+'px',
modal_height+'px',
true,
evo_js_lang_crop_profile_pic,
[ evo_js_lang_crop, 'btn-primary' ] );
}
} );

return false;
}