Files
medicalalert-web-reloaded/wp/wp-content/plugins/wp-media-folder/assets/js/folder_tree.js
2024-10-29 13:49:07 -04:00

1183 lines
63 KiB
JavaScript

'use strict';
/**
* Folder tree for WP Media Folder
*/
var wpmfFoldersTreeModule = void 0;
(function ($) {
wpmfFoldersTreeModule = {
categories: [], // categories
folders_states: [], // Contains open or closed status of folders
cloudInterval: false,
/**
* Retrieve the Jquery tree view element
* of the current frame
* @return jQuery
*/
getTreeElement: function getTreeElement() {
if (wpmfFoldersModule.page_type === 'upload-grid' || wpmfFoldersModule.page_type === 'upload-list') {
return $('.upload-php .wpmf-main-tree');
} else {
return wpmfFoldersModule.getFrame().find('.wpmf-main-tree').first();
}
},
/**
* Initialize module related things
*/
initModule: function initModule($current_frame) {
// Check if this frame has already the tree view
var is_initialized = void 0;
if (wpmfFoldersModule.page_type === 'upload-list' || wpmfFoldersModule.page_type === 'upload-grid') {
is_initialized = $('.upload-php .wpmf-main-tree').length > 0;
} else {
// not show tree on 900px of screen
if ($(window).width() <= 900) {
return;
}
if ($current_frame.hasClass('hide-menu')) {
// add placeholder for search media input
$current_frame.find('#media-search-input').attr('placeholder', $current_frame.find('.media-search-input-label').text());
if ($(window).width() > 768) {
$current_frame.addClass("wpmf-treeview").removeClass("hide-menu");
}
}
is_initialized = $current_frame.find('.media-frame-menu .wpmf-main-tree').length > 0;
}
if (is_initialized) {
// Show folder tree in case it has been hidden previously
wpmfFoldersTreeModule.getTreeElement().show();
return;
}
// Import categories from wpmf main module
wpmfFoldersTreeModule.importCategories();
if (typeof wpmf.vars.hide_tree !== "undefined" && parseInt(wpmf.vars.hide_tree) === 1) {
if (wpmfFoldersModule.page_type === 'upload-list' || wpmfFoldersModule.page_type === 'upload-grid') {
if (!$('.wpmf-main-tree').length) {
if ($(window).width() < 600) {
$('<div class="wpmf-main-tree"></div>').insertBefore($('ul.attachments'));
} else {
$('<div class="wpmf-main-tree"></div>').insertBefore($('#wpbody-content'));
}
}
} else {
var $menu = $current_frame.find('.media-frame-menu .media-menu');
if (!$menu.length) {
$menu = $current_frame.find('.media-frame-menu');
$current_frame.find('.media-frame-menu-heading').hide();
}
if (!$menu.find('.wpmf-main-tree').length) {
$('<div class="wpmf-main-tree"></div>').appendTo($menu);
}
}
// Render the tree view
wpmfFoldersTreeModule.loadTreeView();
}
// Subscribe to the change folder event in main wpmf module
wpmfFoldersModule.on('changeFolder', function (folder_id) {
wpmfFoldersTreeModule.changeFolder(folder_id);
});
// Subscribe to the add folder event in main wpmf module
wpmfFoldersModule.on(['addFolder', 'deleteFolder', 'updateFolder', 'moveFolder', 'foldersSelection', 'loadmoreFolder'], function (folder) {
wpmfFoldersTreeModule.importCategories();
wpmfFoldersTreeModule.loadTreeView();
// Initialize folder tree resizing
wpmfFoldersTreeModule.initContainerResizing($current_frame);
});
// Subscribe to the move file event in main wpmf module
wpmfFoldersModule.on('moveFile', function (files_ids, folder_to_id, folder_from_id) {
// Import categories with updated count
wpmfFoldersTreeModule.importCategories();
// Reload tree view
wpmfFoldersTreeModule.loadTreeView();
wpmfFoldersTreeModule.initContainerResizing($current_frame);
});
wpmfFoldersModule.on('deleteFile', function (folder_id) {
// Update file count in main wpmf Module
wpmfFoldersModule.categories[folder_id].files_count -= 1;
// Import categories with updated count
wpmfFoldersTreeModule.importCategories();
// Reload tree view
wpmfFoldersTreeModule.loadTreeView();
wpmfFoldersTreeModule.initContainerResizing($current_frame);
});
wpmfFoldersModule.on('duplicateFile', function (folder_id) {
// Update file count in main wpmf Module
wpmfFoldersModule.categories[folder_id].files_count += 1;
// Import categories with updated count
wpmfFoldersTreeModule.importCategories();
// Reload tree view
wpmfFoldersTreeModule.loadTreeView();
wpmfFoldersTreeModule.initContainerResizing($current_frame);
});
wpmfFoldersModule.on('addRemoteVideo', function (folder_id) {
// Update file count in main wpmf Module
wpmfFoldersModule.categories[folder_id].files_count += 1;
console.log(wpmfFoldersModule.categories[folder_id].files_count);
// Import categories with updated count
wpmfFoldersTreeModule.importCategories();
// Reload tree view
wpmfFoldersTreeModule.loadTreeView();
wpmfFoldersTreeModule.initContainerResizing($current_frame);
});
// Initialize the fixed tree view position on scrolling
if (wpmf.vars.wpmf_pagenow === 'upload.php') {
wpmfFoldersTreeModule.initFixedScrolling($current_frame);
}
// Subscribe to ordering folder filter
wpmfFoldersFiltersModule.on('foldersOrderChanged', function () {
wpmfFoldersTreeModule.importCategories();
wpmfFoldersTreeModule.loadTreeView();
wpmfFoldersTreeModule.initContainerResizing($current_frame);
});
wpmfFoldersModule.on('foldersOrderChanged', function () {
wpmfFoldersTreeModule.importCategories();
wpmfFoldersTreeModule.loadTreeView();
wpmfFoldersTreeModule.initContainerResizing($current_frame);
});
wpmfFoldersModule.on('foldersCountChanged', function () {
wpmfFoldersTreeModule.loadTreeView();
wpmfFoldersTreeModule.initContainerResizing($current_frame);
});
// Subscribe to gallery editing to hide folder tree
wpmfFoldersModule.on('wpGalleryEdition', function () {
wpmfFoldersTreeModule.getTreeElement().hide();
});
},
/**
* Import categories from wpmf main module
*/
importCategories: function importCategories() {
var folders_ordered = [];
// Add each category
$(wpmfFoldersModule.categories_order).each(function () {
folders_ordered.push(wpmfFoldersModule.categories[this]);
});
var folder_order = wpmfFoldersModule.getCookie('media-order-folder' + wpmf.vars.host);
if (typeof folder_order !== "undefined") {
wpmfFoldersModule.folder_ordering = folder_order;
}
// Order the array depending on main ordering
switch (wpmfFoldersModule.folder_ordering) {
default:
case 'name-ASC':
folders_ordered = Object.values(folders_ordered).sort(function (a, b) {
if (a.id === 0) return -1; // Root folder is always first
if (b.id === 0) return 1; // Root folder is always first
return a.label.localeCompare(b.label);
});
break;
case 'name-DESC':
folders_ordered = Object.values(folders_ordered).sort(function (a, b) {
if (a.id === 0) return -1; // Root folder is always first
if (b.id === 0) return 1; // Root folder is always first
return b.label.localeCompare(a.label);
});
break;
case 'id-ASC':
folders_ordered = Object.values(folders_ordered).sort(function (a, b) {
if (a.id === 0) return -1; // Root folder is always first
if (b.id === 0) return 1; // Root folder is always first
return a.id - b.id;
});
break;
case 'id-DESC':
folders_ordered = Object.values(folders_ordered).sort(function (a, b) {
if (a.id === 0) return -1; // Root folder is always first
if (b.id === 0) return 1; // Root folder is always first
return b.id - a.id;
});
break;
case 'custom':
folders_ordered = Object.values(folders_ordered).sort(function (a, b) {
if (a.id === 0) return -1; // Root folder is always first
if (b.id === 0) return 1; // Root folder is always first
return a.order - b.order;
});
break;
}
// Reorder array based on children
var folders_ordered_deep = [];
var processed_ids = [];
var loadChildren = function loadChildren(id) {
if (processed_ids.indexOf(id) < 0) {
processed_ids.push(id);
for (var ij = 0; ij < folders_ordered.length; ij++) {
if (folders_ordered[ij].parent_id === id) {
folders_ordered_deep.push(folders_ordered[ij]);
loadChildren(folders_ordered[ij].id);
}
}
}
};
loadChildren(0);
// Finally save it to the global var
wpmfFoldersTreeModule.categories = folders_ordered_deep;
},
/**
* Render tree view inside content
*/
loadTreeView: function loadTreeView() {
if (typeof wpmf.vars.hide_tree !== "undefined" && parseInt(wpmf.vars.hide_tree) === 0) {
return;
}
// update height for folder tree when toggle menu
if (wpmf.vars.wpmf_pagenow !== 'upload.php') {
var $current_frame = wpmfFoldersTreeModule.getTreeElement().closest('.media-frame');
var $menu = $current_frame.find('.media-frame-menu');
if (!$current_frame.find('.wpmf-toggle-media-menu').length) {
$current_frame.addClass('wpmf_hide_media_menu');
$current_frame.find('.media-frame-menu-heading').append('<span class="material-icons wpmf-toggle-media-menu wpmf-toggle-down"> arrow_drop_down </span><span class="material-icons wpmf-toggle-media-menu wpmf-toggle-up"> arrow_drop_up </span>');
$current_frame.find('.wpmf-toggle-media-menu').off('click').bind('click', function () {
var h = 220;
if ($menu.find('.wpmf-all-tree').hasClass('wpmf-tree-loadmore')) {
h += 70;
}
if ($current_frame.hasClass('wpmf_hide_media_menu')) {
$current_frame.removeClass('wpmf_hide_media_menu').addClass('wpmf_show_media_menu');
var a = $menu.find(".media-menu-item").length;
$menu.find('.wpmf-all-tree').height($menu.height() - 34 * a - h);
} else {
$current_frame.removeClass('wpmf_show_media_menu').addClass('wpmf_hide_media_menu');
$menu.find('.wpmf-all-tree').height($menu.height() - h);
}
});
}
}
// render folder tree
wpmfFoldersTreeModule.getTreeElement().html(wpmfFoldersTreeModule.getRendering());
wpmfFoldersTreeModule.initContainerResizing(wpmfFoldersModule.getFrame());
$('.wpmf-loadmore-folder').unbind('click').bind('click', function () {
var count = $(this).data('count');
count += parseInt(wpmfFoldersModule.limit_folders);
if (parseInt(count) < wpmfFoldersModule.categories_order_full.length) {
wpmfFoldersModule.categories_order = wpmfFoldersModule.categories_order_full.slice(0, count);
wpmfFoldersModule.trigger('loadmoreFolder');
}
});
$('.wpmf-cancel-remove-folders-btn').unbind('click').bind('click', function (e) {
e.preventDefault();
$('.wpmf-folder-actions').toggleClass('wpmf-deactivate');
$('.wpmf-tree-actions').find('.wpmf-new-folder').removeClass('hide');
$('.wpmf-tree-checkbox').addClass('hide');
});
$('.wpmf-remove-folders-btn').unbind('click').bind('click', function (e) {
e.preventDefault();
if (!$(this).hasClass('disabled')) {
var ids = [];
$('.wpmf-tree-checkbox:checked').each(function (i, checkbox) {
var folder_id = $(checkbox).val();
ids.push(folder_id);
});
showDialog({
title: wpmf.l18n.delete_multiple_folder.replace('%d', ids.length),
negative: {
title: wpmf.l18n.cancel
},
positive: {
title: wpmf.l18n.delete,
onClick: function onClick() {
wpmfFoldersModule.deleteMultipleFolders(ids);
}
}
});
}
});
$('.wpmf-tree-checkbox').unbind('click').bind('click', function () {
if ($(this).is(':checked')) {
$(this).closest('li').find('ul .wpmf-tree-checkbox').prop('checked', true);
} else {
$(this).closest('li').find('ul .wpmf-tree-checkbox').prop('checked', false);
}
if ($('.wpmf-tree-checkbox:checked').length) {
$('.wpmf-remove-folders-btn').removeClass('disabled');
} else {
$('.wpmf-remove-folders-btn').addClass('disabled');
}
});
// load count by subfolders
if (wpmfFoldersModule.show_files_count) {
if (wpmfFoldersTreeModule.categories.length < 1000) {
wpmfFoldersTreeModule.loadCountAll();
} else {
wpmfFoldersTreeModule.getTreeElement().addClass('wpmf-many-folders');
}
}
wpmfFoldersModule.openContextMenuFolder();
var append_element = void 0;
if (wpmfFoldersModule.page_type === 'upload-list') {
append_element = '#posts-filter';
} else {
append_element = '.media-frame';
}
var folder_order = wpmfFoldersModule.getCookie('media-order-folder' + wpmf.vars.host);
var sortable = false;
if (typeof folder_order !== "undefined" && folder_order === 'custom') {
sortable = true;
}
if (sortable) {
if ($().sortable) {
wpmfFoldersTreeModule.getTreeElement().find('ul').sortable({
placeholder: 'wpmf_tree_drop_sort',
delay: 100, // Prevent dragging when only trying to click
distance: 10,
cursorAt: { top: 10, left: 10 },
revert: true,
revertDuration: 1000,
/*tolerance: "intersect",*/
helper: function helper(ui) {
var helper = '<div class="wpmf-move-element">';
helper += '<span class="mdc-list-item__start-detail"><i class="material-icons wpmf-icon-category">folder</i></span>';
helper += '<span class="mdc-list-item__text"> ' + wpmf.l18n.folder_moving_text + ' </span>';
helper += '</div>';
return helper;
},
/** Prevent firefox bug positionnement **/
start: function start(event, ui) {
wpmfFoldersTreeModule.getTreeElement().addClass('wpmf_tree_sorting');
var userAgent = navigator.userAgent.toLowerCase();
if (ui.helper !== "undefined" && userAgent.match(/firefox/)) {
ui.helper.css('position', 'absolute');
}
},
stop: function stop(event, ui) {
wpmfFoldersTreeModule.getTreeElement().removeClass('wpmf_tree_sorting');
},
beforeStop: function beforeStop(event, ui) {},
update: function update(event, ui) {
var order = '';
$(event.target).find('li').each(function (i, val) {
var id = $(val).data('id');
if (id !== 0) {
if (order !== '') {
order += ',';
}
order += '"' + i + '":' + id;
wpmfFoldersModule.categories[id].order = i;
}
});
order = '{' + order + '}';
$.ajax({
type: "POST",
url: ajaxurl,
data: {
action: "wpmf",
task: "reorderfolder",
order: order,
wpmf_nonce: wpmf.vars.wpmf_nonce
},
success: function success(res) {
wpmfFoldersModule.renderFolders();
}
});
}
}).disableSelection();
}
} else {
if ($().draggable) {
// Initialize dragping folder on tree view
wpmfFoldersTreeModule.getTreeElement().find('ul li .wpmf-item[data-id!="0"]').draggable({
revert: true,
revertDuration: 1000,
helper: function helper(ui) {
var helper = '<div class="wpmf-move-element">';
helper += '<span class="mdc-list-item__start-detail" role="presentation"><i class="material-icons wpmf-icon-category">folder</i></span>';
helper += '<span class="mdc-list-item__text"> ' + wpmf.l18n.folder_moving_text + ' </span>';
helper += '</div>';
return helper;
},
appendTo: append_element,
delay: 100, // Prevent dragging when only trying to click
distance: 10,
cursorAt: { top: 0, left: 0 },
drag: function drag() {},
start: function start(event, ui) {
// Add the original size of element
$(ui.helper).css('width', $(ui.helper.context).outerWidth() + 'px');
$(ui.helper).css('height', $(ui.helper.context).outerWidth() + 'px');
// Add some style to original elements
$(this).addClass('wpmf-dragging');
},
stop: function stop(event, ui) {
// Revert style
$(this).removeClass('wpmf-dragging');
}
});
}
}
if ($().droppable) {
// Initialize dropping folder on tree view
wpmfFoldersTreeModule.getTreeElement().find('ul li .wpmf-item-inside').droppable({
hoverClass: "wpmf-hover-folder",
tolerance: 'pointer',
over: function over(event, ui) {
$('.wpmf_tree_drop_sort').hide();
},
out: function out(event, ui) {
$('.wpmf_tree_drop_sort').show();
},
drop: function drop(event, ui) {
event.stopPropagation();
$(ui.helper).addClass('wpmf_dragout');
if ($(ui.draggable).hasClass('wpmf-folder') || $(ui.draggable).hasClass('wpmf-item')) {
// move folder with folder tree
wpmfFoldersModule.moveFolder($(ui.draggable).data('id'), $(this).data('id'));
} else {
// Transfer the event to the wpmf main module
wpmfFoldersModule.droppedAttachment($(this).data('id'));
}
}
});
}
// Initialize change keyword to search folder
wpmfFoldersTreeModule.getTreeElement().find('.searchfolder').on('click', function (e) {
wpmfFoldersTreeModule.doSearch();
});
// search with enter key
$('.wpmf_search_folder').on('keypress', function (e) {
if (e.which === 13) {
wpmfFoldersTreeModule.doSearch();
return false;
}
});
$(".wpmf_search_folder").wpmfHandleKeyboardChange(1000).change(function () {
wpmfFoldersTreeModule.doSearch();
});
// Initialize double click to folder title on tree view
wpmfFoldersTreeModule.getTreeElement().find('ul .wpmf-item[data-id]').wpmfSingleDoubleClick(function (e) {
if ($(e.target).hasClass('wpmf-arrow') || $(e.target).hasClass('wpmf-tree-checkbox')) {
return;
}
// Set cookie filter tag
var this_url = new URL(location.href);
var get_taxonomy = this_url.searchParams.get("taxonomy");
var get_term = this_url.searchParams.get("term");
var get_wpmf_tag = this_url.searchParams.get("wpmf_tag");
var wpmf_tag = 0;
if ((get_taxonomy && get_term && get_taxonomy == 'wpmf_tag') || get_wpmf_tag) {
if (get_term) {
wpmf_tag = get_term;
}
if (get_wpmf_tag) {
wpmf_tag = get_wpmf_tag;
}
wpmfFoldersModule.setCookie('wpmf_tag', wpmf_tag, 365);
}
// single click
var id = $(this).data('id');
if (parseInt(id) !== parseInt(wpmfFoldersModule.last_selected_folder)) {
if (!wpmfFoldersModule.getFrame().find('#wpmf-media-category').length) {
var bread = '';
wpmfFoldersTreeModule.changeFolder(id);
if (parseInt(id) === 0) {
bread = wpmfFoldersModule.getBreadcrumb(0);
} else {
bread = wpmfFoldersModule.getBreadcrumb(id);
}
$('.wpmf_msg_upload_folder span').html(bread);
} else {
wpmfFoldersModule.changeFolder(id);
}
}
}, function (e) {
// double click
var id = $(this).data('id');
wpmfFoldersModule.clickEditFolder(e, id);
wpmfFoldersModule.houtside();
});
wpmfFoldersTreeModule.getTreeElement().append('<div class="wpmf-all-tree scrollbar-inner"></div>');
wpmfFoldersTreeModule.getTreeElement().find('.wpmf_media_library').appendTo(wpmfFoldersTreeModule.getTreeElement().find('.wpmf-all-tree'));
if (parseInt(wpmf.vars.wpmf_addon_active) === 1) {
if (!wpmfFoldersTreeModule.getTreeElement().find('.wpmf-dropbox').length && wpmfFoldersTreeModule.getTreeElement().find('.dropbox_list').length) {
wpmfFoldersTreeModule.getTreeElement().find('.wpmf-all-tree').append('<ul class="wpmf-dropbox"></ul>');
wpmfFoldersTreeModule.getTreeElement().find('.dropbox_list').appendTo(wpmfFoldersTreeModule.getTreeElement().find('.wpmf-dropbox'));
}
if (!wpmfFoldersTreeModule.getTreeElement().find('.wpmf-google').length && wpmfFoldersTreeModule.getTreeElement().find('.google_drive_list').length) {
wpmfFoldersTreeModule.getTreeElement().find('.wpmf-all-tree').append('<ul class="wpmf-google"></ul>');
wpmfFoldersTreeModule.getTreeElement().find('.google_drive_list').appendTo(wpmfFoldersTreeModule.getTreeElement().find('.wpmf-google'));
}
if (!wpmfFoldersTreeModule.getTreeElement().find('.wpmf-onedrive').length && wpmfFoldersTreeModule.getTreeElement().find('.onedrive_list').length) {
wpmfFoldersTreeModule.getTreeElement().find('.wpmf-all-tree').append('<ul class="wpmf-onedrive"></ul>');
wpmfFoldersTreeModule.getTreeElement().find('.onedrive_list').appendTo(wpmfFoldersTreeModule.getTreeElement().find('.wpmf-onedrive'));
}
if (!wpmfFoldersTreeModule.getTreeElement().find('.wpmf-onedrive-business').length && wpmfFoldersTreeModule.getTreeElement().find('.onedrive_business_list').length) {
wpmfFoldersTreeModule.getTreeElement().find('.wpmf-all-tree').append('<ul class="wpmf-onedrive-business"></ul>');
wpmfFoldersTreeModule.getTreeElement().find('.onedrive_business_list').appendTo(wpmfFoldersTreeModule.getTreeElement().find('.wpmf-onedrive-business'));
}
if (!wpmfFoldersTreeModule.getTreeElement().find('.wpmf-nextcloud').length && wpmfFoldersTreeModule.getTreeElement().find('.nextcloud_list').length) {
wpmfFoldersTreeModule.getTreeElement().find('.wpmf-all-tree').append('<ul class="wpmf-nextcloud"></ul>');
wpmfFoldersTreeModule.getTreeElement().find('.nextcloud_list').appendTo(wpmfFoldersTreeModule.getTreeElement().find('.wpmf-nextcloud'));
}
}
// load scroll bar
if (wpmfFoldersTreeModule.getTreeElement().find('.wpmf-all-tree').is(':visible')) {
wpmfFoldersTreeModule.getTreeElement().find('.wpmf-all-tree').scrollbar();
if (wpmf.vars.wpmf_pagenow !== 'upload.php') {
var $menu1 = wpmfFoldersTreeModule.getTreeElement().closest('.media-frame').find('.media-frame-menu');
var h = 220;
if ($menu1.find('.wpmf-all-tree').hasClass('wpmf-tree-loadmore')) {
h += 70;
}
$menu1.find('.wpmf-all-tree').height($menu1.height() - h);
}
}
if (wpmfFoldersModule.categories_order_full.length > wpmfFoldersModule.limit_folders) {
$('.wpmf-all-tree').addClass('wpmf-tree-loadmore');
}
},
loadCountAll: function loadCountAll() {
wpmfFoldersTreeModule.getTreeElement().find('li').each(function (i, element) {
var id = $(element).data('id');
if (parseInt(id) !== 0) {
var countElements = $(element).find('.wpmf-item-count');
var count = 0;
$(countElements).each(function (index, countElement) {
count += parseInt($(countElement).html());
});
$(element).find('> .wpmf-item .wpmf-item-count-all').html(count);
}
});
},
/**
* Do search folder
*/
doSearch: function doSearch() {
// search on folder tree
var keyword = $('.wpmf_search_folder').val().trim().toLowerCase();
var search_folders = [];
// get folder when disable folders on right bar
var folder_search = [];
for (var folder_id in wpmfFoldersModule.categories) {
if (keyword !== '') {
keyword = keyword.trim().toLowerCase();
var folder_name = wpmfFoldersModule.categories[folder_id].lower_label;
if (folder_name.indexOf(keyword) !== -1) {
folder_search.push(folder_id);
}
}
}
search_folders = folder_search;
if (keyword !== '') {
$('.wpmf-main-tree li').addClass('folderhide').removeClass('foldershow');
$.each(search_folders, function (i, v) {
$('.wpmf-main-tree li[data-id="' + v + '"]').addClass('foldershow').removeClass('folderhide closed');
$('.wpmf-main-tree li[data-id="' + v + '"]').parents('.wpmf-main-tree li').addClass('foldershow').removeClass('folderhide closed');
});
if ($('.foldershow').length) {
$('.search_no_result_wrap').hide();
wpmfFoldersTreeModule.getTreeElement().find('.wpmf-all-tree').show();
} else {
$('.search_no_result_wrap').show();
wpmfFoldersTreeModule.getTreeElement().find('.wpmf-all-tree').hide();
}
} else {
$('.wpmf-main-tree li').removeClass('foldershow folderhide');
$('.search_no_result_wrap').hide();
wpmfFoldersTreeModule.getTreeElement().find('.wpmf-all-tree').show();
}
},
/**
* Get the html resulting tree view
* @return {string}
*/
getRendering: function getRendering() {
var ij = 0;
var content = ''; // Final tree view cwpmf-main-tree-resizeontent
// render search folder box
var search_folder = '\n <div class="wpmf-expandable-search mdl-cell--hide-phone">\n <form action="#">\n <input type="text" class="wpmf_search_folder" placeholder="' + wpmf.l18n.search_folder + '" size="1">\n </form>\n <i class="material-icons searchfolder">search</i>\n </div>\n ';
var remove_folder = '<div class="wpmf-folder-actions wpmf-deactivate">\n <a href="#" class="wpmf-folder-btn wpmf-remove-folders-btn disabled"> <span>' + wpmf.l18n.delete + '</span></a>\n <span class="wpmf-line-vertical"></span>\n <a class="wpmf-folder-btn wpmf-cancel-remove-folders-btn" href="#"><span>' + wpmf.l18n.cancel + '</span></a>\n</div>';
var search_no_result = '<div class="search_no_result_wrap">\n<svg width="70" height="70" viewBox="0 0 70 70" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path fill-rule="evenodd" clip-rule="evenodd" d="M25.1037 14.5194C22.2246 17.3996 20.3095 21.1018 19.6223 25.116C18.9351 29.1301 19.5097 33.2585 21.2669 36.9325C22.5392 39.5839 24.3918 41.915 26.6875 43.7531C26.383 45.1912 26.2363 46.6582 26.25 48.1281V48.8719C25.55 48.3906 24.85 47.9094 24.1938 47.3844L7.65625 63.4406L4.375 60.5531L21 44.4094C18.4207 41.4927 16.5876 37.9938 15.6582 34.2128C14.7287 30.4318 14.7307 26.4818 15.6638 22.7017C16.597 18.9216 18.4335 15.4245 21.0157 12.5104C23.5979 9.59633 26.8487 7.35238 30.489 5.97118C34.1294 4.58998 38.0505 4.11277 41.9158 4.58053C45.7812 5.04829 49.4753 6.44704 52.681 8.65671C55.8868 10.8664 58.5085 13.821 60.3211 17.2669C62.1336 20.7128 63.0829 24.5471 63.0875 28.4406C63.0875 29.6131 63 30.7812 62.825 31.9406C61.5687 30.7995 60.1894 29.8017 58.7125 28.9656V28.4406C58.7125 24.5468 57.5579 20.7404 55.3946 17.5027C53.2313 14.2651 50.1565 11.7417 46.5591 10.2516C42.9617 8.76145 39.0031 8.37157 35.1841 9.13123C31.3651 9.89089 27.8571 11.766 25.1037 14.5194V14.5194ZM38.4037 33.5769C40.3144 32.2859 42.4612 31.3853 44.721 30.9267C46.9808 30.4681 49.309 30.4607 51.5717 30.9047C53.8344 31.3488 55.987 32.2357 57.9058 33.5144C59.8246 34.7931 61.4718 36.4384 62.7528 38.3557C64.0337 40.2731 64.9231 42.4247 65.3698 44.6868C65.8165 46.949 65.8117 49.2772 65.3558 51.5375C64.8998 53.7978 64.0017 55.9458 62.7129 57.8579C61.4242 59.77 59.7703 61.4085 57.8463 62.6794C53.9868 65.2286 49.275 66.1462 44.7409 65.2316C40.2069 64.317 36.2193 61.6446 33.6499 57.7985C31.0804 53.9524 30.1381 49.2456 31.0289 44.7068C31.9197 40.168 34.5712 36.1664 38.4037 33.5769V33.5769ZM38.8413 57.4075C40.0603 58.6269 41.5076 59.5941 43.1005 60.254C44.6935 60.9138 46.4008 61.2533 48.125 61.2531C50.8508 61.261 53.5114 60.42 55.7375 58.8469L37.4063 40.5156C35.8331 42.7417 34.9921 45.4023 35 48.1281C35.0007 51.6088 36.384 54.9466 38.8456 57.4075H38.8413ZM40.5125 37.4137L58.8437 55.7406C60.4169 53.5145 61.2579 50.8539 61.25 48.1281C61.25 44.6471 59.8672 41.3087 57.4058 38.8473C54.9444 36.3859 51.606 35.0031 48.125 35.0031C45.3992 34.9952 42.7386 35.8362 40.5125 37.4094V37.4137Z" fill="black"/>\n</svg>\n<h4>' + wpmf.l18n.search_no_result + '</h4>\n</div>';
// get last status folder tree
var lastStatusTree = wpmfFoldersModule.getCookie('lastStatusTree_' + wpmf.vars.host);
if (lastStatusTree !== '') {
lastStatusTree = JSON.parse(lastStatusTree);
}
/**
* Recursively print list of folders
* @return {boolean}
*/
var generateList = function generateList() {
var tree_class = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
content += '<ul class="' + tree_class + '">';
while (ij < wpmfFoldersTreeModule.categories.length) {
var className = '';
// get color folder
var bgcolor = '',
odvColor = '';
if (typeof wpmf.vars.colors !== 'undefined' && typeof wpmf.vars.colors[wpmfFoldersTreeModule.categories[ij].id] !== 'undefined') {
bgcolor = 'color: ' + wpmf.vars.colors[wpmfFoldersTreeModule.categories[ij].id];
odvColor = wpmf.vars.colors[wpmfFoldersTreeModule.categories[ij].id];
} else {
bgcolor = 'color: #b2b2b2';
odvColor = '#b2b2b2';
}
var icondrive = void 0;
if (parseInt(wpmfFoldersTreeModule.categories[ij].id) === 0) {
icondrive = '<i class="wpmf-item-icon wpmf-item-icon-root"></i>';
} else {
icondrive = '<i class="material-icons wpmf-item-icon" style="' + bgcolor + '">folder</i>';
}
if (lastStatusTree.indexOf(wpmfFoldersTreeModule.categories[ij].id) !== -1 || parseInt(wpmfFoldersTreeModule.categories[ij].id) === 0) {
className += 'open ';
} else {
className += 'closed ';
}
var drive_root = false;
// get last access folder
var lastAccessFolder = wpmfFoldersModule.getCookie('lastAccessFolder_' + wpmf.vars.host);
// Select the last element which was selected in wpmf main module
if (typeof lastAccessFolder === "undefined" || typeof lastAccessFolder !== "undefined" && lastAccessFolder === '' || typeof lastAccessFolder !== "undefined" && parseInt(lastAccessFolder) === 0 || typeof wpmfFoldersModule.categories[lastAccessFolder] === "undefined") {
if (wpmfFoldersTreeModule.categories[ij].id === wpmfFoldersModule.last_selected_folder) {
className += 'selected ';
}
} else {
if (wpmfFoldersTreeModule.categories[ij].id === parseInt(lastAccessFolder)) {
className += 'selected ';
}
}
if (parseInt(wpmf.vars.wpmf_addon_active) === 1) {
if (wpmfFoldersTreeModule.categories[ij].drive_type === 'onedrive_business') {
if (parseInt(wpmfFoldersTreeModule.categories[ij].parent_id) === 0) {
drive_root = true;
className += 'onedrive_business_list wpmf_drive_tree';
className = className.replace('closed', '');
}
}
if (wpmfFoldersTreeModule.categories[ij].drive_type === 'onedrive') {
if (parseInt(wpmfFoldersTreeModule.categories[ij].parent_id) === 0) {
drive_root = true;
className += 'onedrive_list wpmf_drive_tree';
className = className.replace('closed', '');
}
}
if (wpmfFoldersTreeModule.categories[ij].drive_type === 'onedrive' || wpmfFoldersTreeModule.categories[ij].drive_type === 'onedrive_business') {
icondrive = '<svg class="tree_drive_icon_img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60.43 35.95"><defs></defs><title>icon</title><path class="cls-1" d="M39.45,36.6H55.53a5.41,5.41,0,0,0,5.15-2.77c1.75-3.14,1.41-8.69-3.72-10.35-.55-.18-.91-.27-.93-1-.13-6.16-6.1-9.95-12.23-7.73a1.21,1.21,0,0,1-1.65-.47,10,10,0,0,0-8.49-4c-5.29.2-8.84,3.31-10.08,8.57a1.9,1.9,0,0,1-1.84,1.73c-3.41.53-6.06,2.74-6.43,5.52-.77,5.7,1.55,10.47,8.49,10.51C29,36.62,34.23,36.6,39.45,36.6Z" transform="translate(-1.2 -0.66)" style="fill:#fefefe"/><path class="cls-1" d="M14.58,34c-.23-.54-.4-.93-.55-1.31-2.29-5.83-.42-11.5,6.08-13.45a2.7,2.7,0,0,0,2.06-2.13,12.4,12.4,0,0,1,11.89-8.7,11,11,0,0,1,8.49,3.83c.35.4.66,1,1.4.6a6.16,6.16,0,0,1,2.49-.57c.92-.12,1.08-.45.85-1.31-1.52-5.74-5.24-9.23-11-10.15C31.12,0,26.9,2,24,6.43a1.12,1.12,0,0,1-1.72.47,8.52,8.52,0,0,0-5.6-.59C11.73,7.41,8.76,11,8.49,16.37c0,.9-.22,1.14-1.1,1.36A7.92,7.92,0,0,0,1.22,25,8.39,8.39,0,0,0,5.6,33C8.43,34.53,11.46,33.83,14.58,34Z" transform="translate(-1.2 -0.66)" style="fill: #fefefe"/><path class="cls-2" d="M39.45,36.6c-5.22,0-10.43,0-15.65,0-6.94,0-9.26-4.81-8.49-10.51.37-2.78,3-5,6.43-5.52a1.9,1.9,0,0,0,1.84-1.73c1.24-5.26,4.79-8.37,10.08-8.57a10,10,0,0,1,8.49,4,1.21,1.21,0,0,0,1.65.47c6.13-2.22,12.1,1.57,12.23,7.73,0,.72.38.81.93,1,5.13,1.66,5.47,7.21,3.72,10.35a5.41,5.41,0,0,1-5.15,2.77Z" transform="translate(-1.2 -0.66)" style="fill: ' + odvColor + '"/><path class="cls-2" d="M14.58,34c-3.12-.2-6.15.5-9-1.07a8.39,8.39,0,0,1-4.38-8,7.92,7.92,0,0,1,6.17-7.25c.88-.22,1.06-.46,1.1-1.36.27-5.35,3.24-9,8.17-10.06a8.52,8.52,0,0,1,5.6.59A1.12,1.12,0,0,0,24,6.43C26.9,2,31.12,0,36.28.84c5.77.92,9.49,4.41,11,10.15.23.86.07,1.19-.85,1.31a6.16,6.16,0,0,0-2.49.57c-.74.44-1.05-.2-1.4-.6a11,11,0,0,0-8.49-3.83,12.4,12.4,0,0,0-11.89,8.7,2.7,2.7,0,0,1-2.06,2.13c-6.5,1.95-8.37,7.62-6.08,13.45C14.18,33.1,14.35,33.49,14.58,34Z" transform="translate(-1.2 -0.66)" style="fill: ' + odvColor + '"/></svg>';
}
if (wpmfFoldersTreeModule.categories[ij].drive_type === 'dropbox') {
if (parseInt(wpmfFoldersTreeModule.categories[ij].parent_id) === 0) {
drive_root = true;
className += 'dropbox_list wpmf_drive_tree';
className = className.replace('closed', '');
}
icondrive = '<i class="zmdi zmdi-dropbox tree_drive_icon" style="' + bgcolor + '"></i>';
}
if (wpmfFoldersTreeModule.categories[ij].drive_type === 'google_drive') {
if (parseInt(wpmfFoldersTreeModule.categories[ij].parent_id) === 0) {
drive_root = true;
className += 'google_drive_list wpmf_drive_tree';
className = className.replace('closed', '');
}
icondrive = '<i class="zmdi zmdi-google-drive tree_drive_icon" style="' + bgcolor + '"></i>';
}
if (wpmfFoldersTreeModule.categories[ij].drive_type === 'nextcloud') {
if (parseInt(wpmfFoldersTreeModule.categories[ij].parent_id) === 0) {
drive_root = true;
className += 'nextcloud_list wpmf_drive_tree';
className = className.replace('closed', '');
}
icondrive = '<svg class="tree_drive_icon_img" version="1.1" viewBox="0 0 256 128" xmlns="http://www.w3.org/2000/svg"><path d="m128 7c-25.871 0-47.817 17.485-54.713 41.209-5.9795-12.461-18.642-21.209-33.287-21.209-20.304 0-37 16.696-37 37s16.696 37 37 37c14.645 0 27.308-8.7481 33.287-21.209 6.8957 23.724 28.842 41.209 54.713 41.209s47.817-17.485 54.713-41.209c5.9795 12.461 18.642 21.209 33.287 21.209 20.304 0 37-16.696 37-37s-16.696-37-37-37c-14.645 0-27.308 8.7481-33.287 21.209-6.8957-23.724-28.842-41.209-54.713-41.209zm0 22c19.46 0 35 15.54 35 35s-15.54 35-35 35-35-15.54-35-35 15.54-35 35-35zm-88 20c8.4146 0 15 6.5854 15 15s-6.5854 15-15 15-15-6.5854-15-15 6.5854-15 15-15zm176 0c8.4146 0 15 6.5854 15 15s-6.5854 15-15 15-15-6.5854-15-15 6.5854-15 15-15z" color="#000000" fill="' + odvColor + '" style="-inkscape-stroke:none"/></svg>';
}
if (typeof wpmfFoldersTreeModule.categories[ij].drive_type === 'undefined' || wpmfFoldersTreeModule.categories[ij].drive_type === '') {
className += ' wpmf_local_tree ';
}
}
// Open li tag
content += '<li class="' + className + '" data-id="' + wpmfFoldersTreeModule.categories[ij].id + '">';
var pad = wpmfFoldersTreeModule.categories[ij].depth * 15;
if (wpmfFoldersTreeModule.categories[ij].drive_type !== '') {
pad = pad - 20;
}
content += '<div class="wpmf-item" data-id="' + wpmfFoldersTreeModule.categories[ij].id + '">';
content += '<div class="wpmf-item-inside" data-id="' + wpmfFoldersTreeModule.categories[ij].id + '" style="padding-left: ' + pad + 'px">';
var a_tag = '<a class="wpmf-text-item" data-id="' + wpmfFoldersTreeModule.categories[ij].id + '">';
if (drive_root) {
content += a_tag;
} else {
var input = '';
if (wpmfFoldersTreeModule.categories[ij].id != 0) {
input = '<input type="checkbox" class="wpmf-tree-checkbox hide" value="' + wpmfFoldersTreeModule.categories[ij].id + '">';
}
if (wpmfFoldersTreeModule.categories[ij + 1] && wpmfFoldersTreeModule.categories[ij + 1].depth > wpmfFoldersTreeModule.categories[ij].depth) {
// The next element is a sub folder
content += '<a class="wpmf-toggle-icon" onclick="wpmfFoldersTreeModule.toggle(' + wpmfFoldersTreeModule.categories[ij].id + ')"><i class="tree_arrow_right_icon wpmf-arrow"></i></a>' + input;
content += a_tag;
} else {
content += '<a class="wpmf-toggle-icon wpmf-notoggle-icon"><i class="tree_arrow_right_icon"></i></a>' + input;
content += a_tag;
}
}
// Add folder icon
content += icondrive;
// Add current category name
/*if (wpmfFoldersTreeModule.categories[ij].id === 0) {
// If this is the root folder then rename it
content += '<span class="wpmf-item-title">' + wpmf.l18n.media_folder + '</span>';
} else {*/
content += '<span class="wpmf-item-title">' + wpmfFoldersTreeModule.categories[ij].label + '</span>';
//}
content += '</a>';
if (wpmfFoldersModule.show_files_count && wpmfFoldersTreeModule.categories[ij].files_count !== undefined) {
if (wpmfFoldersTreeModule.categories[ij].id === 0) {
if (wpmf.vars.root_media_count) {
content += '<span class="wpmf-item-count">' + wpmfFoldersTreeModule.categories[ij].files_count + '</span>';
}
} else {
content += '<span class="wpmf-item-count">' + wpmfFoldersTreeModule.categories[ij].files_count + '</span>';
}
}
if (wpmfFoldersModule.show_files_count && wpmfFoldersTreeModule.categories[ij].count_all !== undefined) {
content += '<span class="wpmf-item-count-all">' + wpmfFoldersTreeModule.categories[ij].count_all + '</span>';
}
content += '</div></div>';
// This is the end of the array
if (wpmfFoldersTreeModule.categories[ij + 1] === undefined) {
// Let's close all opened tags
for (var ik = wpmfFoldersTreeModule.categories[ij].depth; ik >= 0; ik--) {
content += '</li>';
content += '</ul>';
}
// We are at the end don't continue to process array
return false;
}
if (wpmfFoldersTreeModule.categories[ij + 1].depth > wpmfFoldersTreeModule.categories[ij].depth) {
// The next element is a sub folder
// Recursively list it
ij++;
if (generateList() === false) {
// We have reached the end, let's recursively end
return false;
}
} else if (wpmfFoldersTreeModule.categories[ij + 1].depth < wpmfFoldersTreeModule.categories[ij].depth) {
// The next element don't have the same parent
// Let's close opened tags
for (var _ik = wpmfFoldersTreeModule.categories[ij].depth; _ik > wpmfFoldersTreeModule.categories[ij + 1].depth; _ik--) {
content += '</li>';
content += '</ul>';
}
// We're not at the end of the array let's continue processing it
return true;
}
// Close the current element
content += '</li>';
ij++;
}
};
// Start generation
generateList('wpmf_media_library');
var loadmore = '';
if (wpmfFoldersModule.categories_order_full.length > wpmfFoldersModule.limit_folders) {
loadmore = '<a class="wpmf-loadmore-folder" data-count="' + wpmfFoldersModule.categories_order.length + '"><span class="material-icons"> expand_more </span>' + wpmf.l18n.load_more + '</a>';
}
// Add the new folder button
content = '<div class="wpmf-tree-actions"><a class="wpmf-new-folder" onclick="wpmfFoldersModule.newFolder(wpmfFoldersModule.last_selected_folder)"><i class="material-icons">add</i>' + wpmf.l18n.create_folder + '</a>' + remove_folder + '</div>' + search_folder + content + loadmore + search_no_result;
return content;
},
/**
* Change the selected folder in tree view
* @param folder_id
*/
changeFolder: function changeFolder(folder_id) {
// Remove previous selection
wpmfFoldersTreeModule.getTreeElement().find('li').removeClass('selected');
// Select the folder
wpmfFoldersTreeModule.getTreeElement().find('li[data-id="' + folder_id + '"]').addClass('selected'). // Open parent folders
parents('.wpmf-main-tree li.closed').removeClass('closed');
},
/**
* Toggle the open / closed state of a folder
* @param folder_id
*/
toggle: function toggle(folder_id) {
// get last status folder tree
var lastStatusTree = [];
// Check is folder has closed class
if (wpmfFoldersTreeModule.getTreeElement().find('li[data-id="' + folder_id + '"]').hasClass('closed')) {
// Open the folder
wpmfFoldersTreeModule.openFolder(folder_id);
} else {
// Close the folder
wpmfFoldersTreeModule.closeFolder(folder_id);
// close all sub folder
$('li[data-id="' + folder_id + '"]').find('li').addClass('closed');
}
wpmfFoldersTreeModule.getTreeElement().find('li:not(.closed)').each(function (i, v) {
var id = $(v).data('id');
lastStatusTree.push(id);
});
// set last status folder tree
wpmfFoldersModule.setCookie("lastStatusTree_" + wpmf.vars.host, JSON.stringify(lastStatusTree), 365);
},
/**
* Open a folder to show children
*/
openFolder: function openFolder(folder_id) {
wpmfFoldersTreeModule.getTreeElement().find('li[data-id="' + folder_id + '"]').removeClass('closed');
wpmfFoldersTreeModule.folders_states[folder_id] = 'open';
},
/**
* Close a folder and hide children
*/
closeFolder: function closeFolder(folder_id) {
wpmfFoldersTreeModule.getTreeElement().find('li[data-id="' + folder_id + '"]').addClass('closed');
wpmfFoldersTreeModule.folders_states[folder_id] = 'close';
},
/**
* Initialize the fixed position when user is scrolling
* to keep the folder tree always visible
*/
initFixedScrolling: function initFixedScrolling() {
if (typeof wpmf.vars.hide_tree !== "undefined" && parseInt(wpmf.vars.hide_tree) === 0) {
return;
}
setTimeout(function () {
// Fix initial left margin in list view
if (wpmfFoldersModule.page_type === 'upload-list' || wpmfFoldersModule.page_type === 'upload-grid') {
var $tree = $('.wpmf-main-tree');
var tree_width = $tree.outerWidth() + 'px';
var $admin_bar_height = $('#wpadminbar').height();
if ($admin_bar_height > 32) {
$tree.css('top', $admin_bar_height + 'px');
}
$('#wpbody-content').css({ 'width': 'calc(100% - ' + tree_width + ')', 'margin-left': tree_width, 'opacity': 1, 'padding-left': '20px', 'box-sizing': 'border-box' });
// trigger window resize to set attachments columns
if (wpmfFoldersModule.page_type === 'upload-grid') {
$(window).trigger('resize');
}
$('.rtl #wpbody-content').css({
'margin-right': wpmfFoldersTreeModule.getTreeElement().outerWidth() + 'px',
'margin-left': 0,
'opacity': 1,
'padding-right': '20px',
'box-sizing': 'border-box'
});
$tree.css({ 'opacity': 1 });
// Remove the loader on list page
if (!$('.upload-php #posts-filter').hasClass('listview-loaded')) {
setTimeout(function () {
$('.upload-php #posts-filter').addClass('listview-loaded');
}, 200);
}
}
}, 200);
},
/**
* Initialize folder tree resizing
* @param $current_frame
*/
initContainerResizing: function initContainerResizing($current_frame) {
if (typeof wpmf.vars.hide_tree !== "undefined" && parseInt(wpmf.vars.hide_tree) === 0) {
return;
}
var is_resizing = false;
var $body = $('body');
$(window).on('resize', function () {
$('.wpmf-all-tree.scrollbar-inner').scrollbar();
});
if (wpmf.vars.wpmf_pagenow === 'upload.php' && wpmfFoldersModule.page_type) {
// Main upload.php page
var $main = $('#wpbody');
var $tree = $('.wpmf-main-tree');
var $right_min_width = 500;
var $tree_min_width = 250;
var $handle = $('<div class="wpmf-main-tree-resize"></div>').appendTo($tree);
$handle.on('mousedown', function (e) {
is_resizing = true;
$('body').css('user-select', 'none'); // prevent content selection while moving
});
var uploadPageTreeSize = wpmfFoldersModule.getCookie('upload-page-tree-size');
if (uploadPageTreeSize < $tree_min_width) uploadPageTreeSize = $tree_min_width;
if (typeof uploadPageTreeSize !== "undefined" && parseFloat(uploadPageTreeSize) > 0) {
$tree.css({ 'width': parseFloat(uploadPageTreeSize) + 'px' });
}
$(document).on('mousemove', function (e) {
// we don't want to do anything if we aren't resizing.
if (!is_resizing) return;
// Calculate tree width
var tree_width = e.clientX - $tree.offset().left;
if (tree_width < $tree_min_width) tree_width = $tree_min_width;
var right_width = $main.width() - tree_width;
if (right_width < $right_min_width) {
right_width = $right_min_width;
tree_width = $main.width() - $right_min_width;
}
$tree.css('width', tree_width + 'px');
// We have to set margin if we are in a fixed tree position or in list page
if ($('body').hasClass('rtl')) {
$('#wpbody-content').css({ 'width': right_width + 'px', 'margin-right': tree_width + 'px', 'padding-right': '20px', 'box-sizing': 'border-box' });
} else {
$('#wpbody-content').css({ 'width': right_width + 'px', 'margin-left': tree_width + 'px', 'padding-left': '20px', 'box-sizing': 'border-box' });
}
wpmfFoldersModule.setCookie('upload-page-tree-size', tree_width, 365);
}).on('mouseup', function (e) {
if (is_resizing) {
// stop resizing
is_resizing = false;
$body.css('user-select', '');
$(window).trigger('resize');
}
});
} else {
// Modal window with left menu
var _$right_min_width = 800;
var _$tree_min_width = 250;
var _$main = $('.media-modal-content:visible');
var $menu = $current_frame.find('.media-frame-menu');
var _$tree = $current_frame.find('.wpmf-main-tree');
var _$handle = $('<div class="wpmf-main-tree-resize"></div>').appendTo(_$tree);
var $right_cols = $current_frame.find('.media-frame-content, .media-frame-router, .media-frame-title, .media-frame-toolbar');
if ($menu) {
var h = 180;
if ($menu.find('.wpmf-all-tree').hasClass('wpmf-tree-loadmore')) {
h += 70;
}
if ($current_frame.hasClass('wpmf_hide_media_menu')) {
$menu.find('.wpmf-all-tree').height($menu.height() - h);
} else {
var a = $menu.find(".media-menu-item").length;
$menu.find('.wpmf-all-tree').height($menu.height() - 34 * a - h);
}
}
_$tree.css({ 'min-width': 0, 'border-right': 0 });
_$handle.on('mousedown', function (e) {
is_resizing = true;
$body.css('user-select', 'none'); // prevent content selection while moving
});
var tree_width = wpmfFoldersModule.getCookie('menu-tree-size');
if (tree_width < _$tree_min_width) tree_width = _$tree_min_width;
if (typeof tree_width !== "undefined" && parseFloat(tree_width) > 0) {
$menu.css('width', parseFloat(tree_width) + 'px');
if ($('body').hasClass('rtl')) {
$right_cols.css('right', parseFloat(tree_width) + 14 + 'px');
} else {
$right_cols.css('left', parseFloat(tree_width) + 14 + 'px');
}
}
$(document).on('mousemove', function (e) {
// we don't want to do anything if we aren't resizing.
if (!is_resizing) return;
var menu_width = e.clientX - $menu.offset().left;
if (menu_width < _$tree_min_width) menu_width = _$tree_min_width;
var right_width = _$main.width() - menu_width;
if (right_width < _$right_min_width) {
menu_width = _$main.width() - _$right_min_width;
}
$menu.css('width', menu_width + 'px');
if ($('body').hasClass('rtl')) {
$right_cols.css('right', parseFloat(menu_width) + 14 + 'px');
} else {
$right_cols.css('left', parseFloat(menu_width) + 14 + 'px');
}
wpmfFoldersModule.setCookie('menu-tree-size', menu_width, 365);
}).on('mouseup', function (e) {
if (is_resizing) {
// stop resizing
is_resizing = false;
$body.css('user-select', '');
$(window).trigger('resize');
}
});
}
}
};
// Let's initialize WPMF folder tree features
$(document).ready(function () {
if (typeof wpmfFoldersModule !== "undefined") {
if (wpmfFoldersModule.page_type === 'upload-list') {
// Don't need to wait on list page
wpmfFoldersTreeModule.initModule(wpmfFoldersModule.getFrame());
} else {
// Wait for the main wpmf module to be ready
wpmfFoldersModule.on('ready', function ($current_frame) {
setTimeout(function () {
wpmfFoldersTreeModule.initModule($current_frame);
}, 200);
});
}
}
});
})(jQuery);
// call single click or double click on folder tree
jQuery.fn.wpmfSingleDoubleClick = function (single_click_callback, double_click_callback, timeout) {
return this.each(function () {
var clicks = 0,
self = this;
jQuery(this).on('click', function (event) {
clicks++;
if (clicks === 1) {
setTimeout(function () {
if (clicks === 1) {
single_click_callback.call(self, event);
} else {
double_click_callback.call(self, event);
}
clicks = 0;
}, timeout || 300);
}
});
});
};
jQuery.fn.wpmfHandleKeyboardChange = function (nDelay) {
// Utility function to test if a keyboard event should be ignored
function shouldIgnore(event) {
var mapIgnoredKeys = {
9: true, // Tab
16: true, 17: true, 18: true, // Shift, Alt, Ctrl
37: true, 38: true, 39: true, 40: true, // Arrows
91: true, 92: true, 93: true // Windows keys
};
return mapIgnoredKeys[event.which];
}
// Utility function to fire OUR change event if the value was actually changed
function fireChange($element) {
if ($element.val() != jQuery.data($element[0], "valueLast")) {
jQuery.data($element[0], "valueLast", $element.val());
$element.trigger("change");
}
}
// The currently running timeout,
// will be accessed with closures
var timeout = 0;
// Utility function to cancel a previously set timeout
function clearPreviousTimeout() {
if (timeout) {
clearTimeout(timeout);
}
}
return this.keydown(function (event) {
if (shouldIgnore(event)) return;
// User pressed a key, stop the timeout for now
clearPreviousTimeout();
return null;
}).keyup(function (event) {
if (shouldIgnore(event)) return;
// Start a timeout to fire our event after some time of inactivity
// Eventually cancel a previously running timeout
clearPreviousTimeout();
var $self = jQuery(this);
timeout = setTimeout(function () {
fireChange($self);
}, nDelay);
}).change(function () {
// Fire a change
// Use our function instead of just firing the event
// Because we want to check if value really changed since
// our previous event.
// This is for when the browser fires the change event
// though we already fired the event because of the timeout
fireChange(jQuery(this));
});
};