// Simple File List Script: ee-footer.js | Author: Mitchell Bennis | support@simplefilelist.com // Used in front-side and back-side file list display console.log('ee-footer.js Loaded'); // Upon page load completion... jQuery(document).ready(function() { console.log('eeSFL Document Ready'); window.addEventListener('touchstart', function() { eeSFL_isTouchscreen = true; }); // The File Operations Bar ----------------- jQuery('#eeSFL_FileOpsAction').val('Folder'); // Make sure this gets reset if the page is reloaded. // Get translated text items var eeSFL_NewFolderNamePlaceholder = jQuery('#eeSFL_NewFolderNamePlaceholder').text(); jQuery('#eeSFL_FileOpsActionInput').attr('placeholder', eeSFL_NewFolderNamePlaceholder); // Place this right away var eeSFL_ZipFileName = jQuery('#eeSFL_ZipFileName').text(); var eeSFL_DeleteText = jQuery('#eeSFL_DeleteText').text(); var eeSFL_DescriptionPlaceholder = jQuery('#eeSFL_DescriptionPlaceholder').html(); // Required Inputs per Action jQuery('#eeSFL_FileOpsAction').on('change', function() { if(jQuery(this).val() == 'Delete') { console.log('Deleting Files'); jQuery('#eeSFL_FileOpsActionSelect').hide(); jQuery('#eeSFL_FileOpsActionInput').show(); jQuery('#eeSFL_FileOpsActionInput').attr('name', 'eeSFL_DeletingFiles'); jQuery('#eeSFL_FileOpsActionInput').attr('value', ''); jQuery('#eeSFL_FileOpsActionInput').attr('placeholder', eeSFL_DeleteText); jQuery('#eeSFL_FileOpsActionInput').attr('disabled', 'disabled'); jQuery('#eeSFL_FileOpsActionInput').removeAttr('required'); } else if(jQuery(this).val() == 'Move') { console.log('Moving Files'); jQuery('#eeSFL_FileOpsActionInput').removeAttr('required'); jQuery('#eeSFL_FileOpsActionInput').hide(); jQuery('#eeSFL_FileOpsActionSelect').show(); } else if(jQuery(this).val() == 'Description') { console.log('Adding Description'); jQuery('#eeSFL_FileOpsActionSelect').hide(); jQuery('#eeSFL_FileOpsActionInput').show(); jQuery('#eeSFL_FileOpsActionInput').attr('name', 'eeSFL_Description'); jQuery('#eeSFL_FileOpsActionInput').attr('value', ''); jQuery('#eeSFL_FileOpsActionInput').attr('placeholder', eeSFL_DescriptionPlaceholder); jQuery('#eeSFL_FileOpsActionInput').attr('required', 'required'); jQuery('#eeSFL_FileOpsActionInput').removeAttr('disabled'); } else if(jQuery(this).val() == 'Download') { console.log('Downloading Files'); jQuery('#eeSFL_FileOpsActionSelect').hide(); jQuery('#eeSFL_FileOpsActionInput').show(); jQuery('#eeSFL_FileOpsActionInput').attr('name', 'eeSFL_ZipFileName'); jQuery('#eeSFL_FileOpsActionInput').attr('value', eeSFL_ZipFileName + '.zip'); jQuery('#eeSFL_FileOpsActionInput').attr('required', 'required'); jQuery('#eeSFL_FileOpsActionInput').removeAttr('disabled'); } else { // Create Folder jQuery('#eeSFL_FileOpsActionSelect').hide(); jQuery('#eeSFL_FileOpsActionInput').show(); jQuery('#eeSFL_FileOpsActionInput').attr('name', 'eeSFL_NewFolderName'); jQuery('#eeSFL_FileOpsActionInput').attr('value', ''); jQuery('#eeSFL_FileOpsActionInput').attr('placeholder', eeSFL_NewFolderNamePlaceholder); jQuery('#eeSFL_FileOpsActionInput').attr('required', 'required'); jQuery('#eeSFL_FileOpsActionInput').removeAttr('disabled'); } }); // Bulk Editing Checkboxes // Check / Uncheck All jQuery('#eeSFL_BulkEditAll').on('click', function() { var eeSFL_FileOpsFiles = ''; if(jQuery('#eeSFL_BulkEditAll').is(':checked')) { // console.log('Checking all ...'); jQuery('.eeSFL_BulkEditCheck').prop('checked', jQuery(this).prop('checked')); // Loop through all checkboxes jQuery('.eeSFL_BulkEditCheck').each(function () { eeSFL_FileOpsFiles += ',' + jQuery(this).val(); }); } else { // console.log('Unchecking all ...'); jQuery('.eeSFL_BulkEditCheck').removeAttr('checked'); } jQuery('#eeSFL_FileOpsFiles').val(eeSFL_FileOpsFiles); // Fill the hidden input }); // Add Files to Bulk Edit List jQuery('.eeSFL_BulkEditCheck').on('click', function() { var eeSFL_BulkFileID = jQuery(this).val(); // This checkbox var eeSFL_FileOpsFiles = jQuery('#eeSFL_FileOpsFiles').val(); // The files we're working with if(eeSFL_BulkFileID) { if(jQuery('#eeSFL_BulkEdit_' + eeSFL_BulkFileID).is(':checked') ) { console.log('Bulk Edit File ID ADD: ' + eeSFL_BulkFileID); eeSFL_FileOpsFiles = eeSFL_FileOpsFiles + ',' + eeSFL_BulkFileID; } else { console.log('Bulk Edit File ID REMOVE: ' + eeSFL_BulkFileID); eeSFL_FileOpsFiles = eeSFL_FileOpsFiles.replace(',' + eeSFL_BulkFileID, ''); // Remove this ID } } jQuery('#eeSFL_FileOpsFiles').val(eeSFL_FileOpsFiles); console.log('#eeSFL_FileOpsFiles = ' + eeSFL_FileOpsFiles); }); }); // END Ready Function // Copy File URL to Clipboard function eeSFL_CopyLinkToClipboard(eeSFL_FileURL) { var eeTemp = jQuery(''); // Create a temporary input jQuery("body").append(eeTemp); // Add it to the bottom of the page var eeTempInput = jQuery('#eeTemp'); eeTempInput.focus(); eeTempInput.select(); // Select the temp input // eeTempInput.setSelectionRange(0, 99999); /* For mobile devices <<<------------ TO DO */ document.execCommand("copy"); // Copy to clipboard eeTemp.remove(); // Remove the temp input alert(eesfl_vars['eeCopyLinkText'] + "\r\n" + eeSFL_FileURL); // Alert the user } function eeSFL_DownloadFolder(eeSFL_FolderID, eeSFL_FolderName) { var eeToday = new Date(); var eeDay = String(eeToday.getDate()).padStart(2, '0'); var eeMonth = String(eeToday.getMonth() + 1).padStart(2, '0'); //January is 0! var eeYear = eeToday.getFullYear(); jQuery('#eeSFL_FolderToDownload').val(eeSFL_FolderID); jQuery('#eeSFL_FolderDownloadZipFileName').val(eeSFL_FolderName + '_' + eeYear + '-' + eeMonth + '-' + eeDay); // Disable all the links to prevent re-clicks jQuery('#eeSFL_RowID-' + eeSFL_FolderID + ' a.eeSFL_FolderDownload').css('color', '#666'); jQuery('#eeSFL_RowID-' + eeSFL_FolderID + ' a.eeSFL_FolderDownload').text(eesfl_vars['eePleaseWaitText'] + ' ......'); jQuery('a.eeSFL_FolderDownload').removeAttr('href'); // All of them jQuery('#eeSFL_DownloadFolderForm').submit(); } function eeSFL_EditFile(eeSFL_FileID) { event.preventDefault(); // Don't follow the link if( jQuery('#eeSFL_EditFileWrap_' + eeSFL_FileID).is(':visible') ) { jQuery('#eeSFL_EditFileWrap_' + eeSFL_FileID).slideUp(); jQuery('#eeSFL_EditFile_' + eeSFL_FileID).text(eesfl_vars['eeEditText']); } else { jQuery('#eeSFL_EditFileWrap_' + eeSFL_FileID).slideDown(); jQuery('#eeSFL_EditFile_' + eeSFL_FileID).text(eesfl_vars['eeCancelText']); } } function eeSFL_EditRename(eeSFL_FileID) { var eeName1 = jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' p.eeSFL_FileLink').text(); // Current File Name var eeName2 = jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' input.eeNewFileName').val(); // New File Name if(eeName1 != eeName2) { // If no match, we rename eeSFL_FileAction(eeSFL_FileID, 'Rename'); } jQuery('#eeSFL_EditFileWrap_' + eeSFL_FileID).slideUp(); jQuery('#eeSFL_EditFile_' + eeSFL_FileID).text(eesfl_vars['eeEditText']); } function eeSFL_EditDesc(eeSFL_FileID) { var eeDesc1 = jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' span.eeSFL_SavedDesc').text(); // Current Desc var eeDesc2 = jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' input.eeSFL_NewFileDesc').val(); // New Desc if(eeDesc1 != eeDesc2) { // If no match, we update && !eeRenaming eeSFL_FileAction(eeSFL_FileID, 'UpdateDesc'); } jQuery('#eeSFL_EditFileWrap_' + eeSFL_FileID).slideUp(); jQuery('#eeSFL_EditFile_' + eeSFL_FileID).text(eesfl_vars['eeEditText']); } function eeSFL_EditDate(eeSFL_FileID) { eeSFL_FileYear = jQuery('#eeSFL_FileYear_' + eeSFL_FileID).val(); eeSFL_FileMonth = jQuery('#eeSFL_FileMonth_' + eeSFL_FileID).val(); eeSFL_FileDay = jQuery('#eeSFL_FileDay_' + eeSFL_FileID).val(); if(confirm('Set Date to ' + eeSFL_FileYear + '-' + eeSFL_FileMonth + '-' + eeSFL_FileDay + ' ?')) { eeSFL_FileAction(eeSFL_FileID, 'UpdateDate'); jQuery('#eeSFL_EditFileWrap_' + eeSFL_FileID).slideUp(); } } // Triggered when you click the Delete link function eeSFL_Delete(eeSFL_FileID) { event.preventDefault(); // Don't follow the link console.log('Deleting File ID #' + eeSFL_FileID); // Get the File Name var eeSFL_FileName = jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' .eeSFL_RealFileName').text(); console.log(eeSFL_FileName); if( confirm( eesfl_vars['eeConfirmDeleteText'] + "\r\n\r\n" + eeSFL_FileName ) ) { eeSFL_FileAction(eeSFL_FileID, 'Delete'); } } function eeSFL_SendFile(eeSFL_FileID) { event.preventDefault(); // Don't follow the link var eeFileName = jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' .eeSFL_RealFileName').text(); // Get the File Name jQuery('#eeSFL_SendTheseFilesList em').text(eeFileName); // Add it to the list view console.log( 'Sending: ' + eeFileName + ' (ID: ' + eeSFL_FileID + ')' ); jQuery('#eeSFL_SendMoreFiles input[type=checkbox]').prop("checked", false); // Uncheck all the boxes jQuery('.eeSFL_AddFileID_' + eeSFL_FileID + ' input[type=checkbox]').prop("checked", true); // Check the first file's box jQuery('#eeSFL_SendPop').fadeIn(); } // Close the Overlay function eeSFL_Send_Cancel() { event.preventDefault(); document.getElementById("eeSFL_SendFileForm").reset(); jQuery('#eeSFL_SendPop').fadeOut(); } // Open the File List function eeSFL_Send_AddMoreFiles() { event.preventDefault(); jQuery('#eeSFL_SendMoreFiles').show(); jQuery('#eeSFL_SendInfo').slideUp(); // Make room for the list in the overlay } // Cancel the File List function eeSFL_Send_AddMoreCancel() { event.preventDefault(); jQuery('eeSFL_SendMoreFiles input[type=checkbox]').prop("checked", false); // Uncheck all the boxes jQuery('.eeSFL_AddFileID_' + eeSFL_FileID + ' input[type=checkbox]').prop("checked", true); // Check the first file's box jQuery('#eeSFL_SendInfo').show(); jQuery('#eeSFL_SendMoreFiles').slideUp(); } // Approve Added Files function eeSFL_Send_AddTheseFiles() { event.preventDefault(); var eeArray = new Array; jQuery('#eeSFL_SendInfo').show(); jQuery('#eeSFL_SendMoreFiles').slideUp(); // Add each to the list display jQuery('#eeSFL_SendTheseFilesList em').text(''); // Reset jQuery('#eeSFL_SendMoreFiles input[type=checkbox]').each(function() { if( jQuery(this).is(':checked') ) { var eeFileName = decodeURIComponent( jQuery(this).val() ); // Decode if(eeSFL_SubFolder.length >= 1 ) { if( eeFileName.indexOf(eeSFL_SubFolder) === 0 ) { eeFileName = eeFileName.replace(eeSFL_SubFolder, ''); } } eeArray.push(eeFileName); } }); var eeArrayLength = eeArray.length; var eeSendingThese = ''; for(var i = 0; i < eeArrayLength; i++) { if(eeArray[i]) { eeSendingThese = eeSendingThese + eeArray[i] + ', '; } } // Strip last , eeSendingThese = eeSendingThese.substring(0, eeSendingThese.length - 2); jQuery('#eeSFL_SendTheseFilesList em').text(eeSendingThese); } // AJAX Post to File Engine function eeSFL_FileAction(eeSFL_FileID, eeSFL_Action) { event.preventDefault(); // Don't follow link console.log(eeSFL_Action + ' -> ' + eeSFL_FileID); // The File Action Engine var eeActionEngine = eesfl_vars.ajaxurl; // Current File Name var eeSFL_FileName = jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' span.eeSFL_RealFileName').text(); // AJAX -------------- // Get the Nonce var eeSFL_ActionNonce = jQuery('#eeSFL_ActionNonce').text(); if(eeSFL_Action == 'Rename') { // Get the new name var eeSFL_NewFileName = jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' input.eeNewFileName').val(); // Sanitize to match reality eeSFL_NewFileName = eeSFL_NewFileName.replace(/ /g, '-'); // Deal with spaces eeSFL_NewFileName = eeSFL_NewFileName.replace(/--/g, '-'); // Deal with double dash if(eeSFL_FileName.indexOf('.') == -1) { // It's a folder eeSFL_NewFileName = eeSFL_NewFileName.replace(/\./g, '_'); // Replace dots } else { if(eeSFL_NewFileName.indexOf('.') == -1) { // Disallow removing extension return false; } // Remove dots from name-part var eeArray = eeSFL_NewFileName.split('.'); if(eeArray.length > 2) { console.log('Problem Filename: ' + eeSFL_NewFileName); var eeExt = eeArray.pop(); var eeNewFileName = ''; for(i = 0; i < eeArray.length; i++) { eeNewFileName += eeArray[i] + '_'; } eeNewFileName = eeNewFileName.substring(0, eeNewFileName.length - 1); // Strip last dash eeSFL_NewFileName = eeNewFileName + '.' + eeExt; } } var eeFormData = { 'action': 'simplefilelistpro_edit_job', 'eeSFL_ID': eeSFL_ListID, 'eeFileName': eeSFL_FileName, 'eeSubFolder': eeSFL_SubFolder, 'eeFileAction': eeSFL_Action + '|' + eeSFL_NewFileName, 'eeSecurity': eeSFL_ActionNonce }; } else if(eeSFL_Action == 'Delete') { // Get the File Name var eeSFL_FileName = jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' .eeSFL_RealFileName').text(); var eeFormData = { 'action': 'simplefilelistpro_edit_job', 'eeSFL_ID': eeSFL_ListID, 'eeSubFolder': eeSFL_SubFolder, 'eeFileName': eeSFL_FileName, 'eeFileAction': eeSFL_Action, 'eeSecurity': eeSFL_ActionNonce }; } else if(eeSFL_Action == 'UpdateDesc') { var eeSFL_FileName = jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' span.eeSFL_RealFileName').text(); // Name var eeSFL_FileDesc = jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' input.eeSFL_NewFileDesc').val(); // Desc var eeFormData = { 'action': 'simplefilelistpro_edit_job', 'eeSFL_ID': eeSFL_ListID, 'eeFileAction': eeSFL_Action, 'eeSubFolder': eeSFL_SubFolder, 'eeFileName': eeSFL_FileName, 'eeFileDesc': eeSFL_FileDesc, 'eeSecurity': eeSFL_ActionNonce }; } else if(eeSFL_Action == 'UpdateDate') { var eeSFL_FileName = jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' span.eeSFL_RealFileName').text(); // Name var eeFormData = { 'action': 'simplefilelistpro_edit_job', 'eeSFL_ID': eeSFL_ListID, 'eeFileAction': eeSFL_Action, 'eeSubFolder': eeSFL_SubFolder, 'eeFileName': eeSFL_FileName, 'eeFileDate': eeSFL_FileYear + '-' + eeSFL_FileMonth + '-' + eeSFL_FileDay, 'eeSecurity': eeSFL_ActionNonce }; } if(eeSFL_Action && eeFormData) { console.log('Calling: ' + eeActionEngine); jQuery.post(eeActionEngine, eeFormData, function(response) { if(response == 'SUCCESS') { if(eeSFL_Action == 'Rename') { jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' .eeNewFileName').val(eeSFL_NewFileName); var eeFileNameOld = jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' span.eeSFL_RealFileName').text(); jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' span.eeSFL_RealFileName').text(eeSFL_NewFileName); // Get the current URL var eeURL_Old = jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' a.eeSFL_FileName').attr('href'); // Replace old name with new in the URL var eeURL_New = eeURL_Old.replace(eeFileNameOld, eeSFL_NewFileName); // Make a New Link var eeNewLink = ' 1 ) { eeNewLink = eeNewLink + ' target="_blank"'; } eeNewLink = eeNewLink + '>' + eeSFL_NewFileName + ''; jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' p.eeSFL_FileLink').html(eeNewLink); // Update the links jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' a.eeSFL_FileOpen').attr('href', eeURL_New); jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' a.eeSFL_FileDownload').attr('href', eeURL_New); jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' a.eeFileIcon').attr('href', eeURL_New); jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' a.eeFolderIcon').attr('href', eeURL_New); } else if (eeSFL_Action == 'Delete') { jQuery('#eeSFL_RowID-' + eeSFL_FileID).hide('slow'); } else if(eeSFL_Action == 'UpdateDesc') { jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' p.eeSFL_FileDesc').show(); jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' p.eeSFL_FileDesc').html(eeSFL_FileDesc); } else if(eeSFL_Action == 'UpdateDate') { // Update tables's date column value jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' .eeSFL_FileDate').text('(' + eeSFL_FileYear + '-' + eeSFL_FileMonth + '-' + eeSFL_FileDay + ')'); jQuery('#eeSFL_RowID-' + eeSFL_FileID + ' .eeSFL_DetailDate').text('(' + eeSFL_FileYear + '-' + eeSFL_FileMonth + '-' + eeSFL_FileDay + ')'); } } else { alert(response); } }); } }