/
DenUlupov
/
GSMnew
Обзор
Документация
Войти
/
DenUlupov
/
GSMnew
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
SelectFile.php
247 строк
9 KB
DenUlupov
update version to 251
30 июл 2025, 12:46
30 июл 2025, 12:46
2633ec9
Код
Авторство
О чём код?
<!DOCTYPE html> <html lang="ru"> <head> <script type="text/javascript" src="modules/jquery-3.7.1.min.js"></script> <script src="modules/config.js?251"></script> <link rel="stylesheet" href="css/SelectFile.css?251"> <META NAME="description" CONTENT="Внутренний портал ОАО Институт Гипростроймост"> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <base target="_parent"> <title>Новости</title> <style type="text/css"> @font-face { font-family: 'CenturyGothic'; src: url('fonts/gothic.eot'); src: url('fonts/gothic.eot?#iefix') format('embedded-opentype'), url('fonts/gothic.woff') format('woff'), url('fonts/gothic.ttf') format('truetype'), url('fonts/gothic.svg#gothic') format('svg'); font-weight: normal; font-style: normal; } </style> <link rel="stylesheet" href="/modules/pdfjs/css/main.css"> <!--buttons--> <link rel='stylesheet' type='text/css' media='screen' href='/modules/controls/buttons_gsm/buttons.css?251'> <script src='/modules/controls/buttons_gsm/buttons.js?251' type='text/javascript'></script> <!--popUp info message--> <script src="/modules/pop_info/pop_info.js?251"></script> <link rel="stylesheet" href="/modules/pop_info/pop_info.css?251"> </head> <body> <div class="mySel"> <div class="files_list_wrap"> </div> <div class="sf_button_wrapper"> <!-- <input type="file" id="butSelFile" class="sf_inputfile noselect"> --> <button class="std_button std_button_pict big_column_buttons top_controls_buttons butAddFiles" id="butAddFiles"><div class="std_button_text">Добавить файлы</div></button> </div> </div> <div class="lab_status"></div> <?php $dirPath = "'" .htmlspecialchars($_GET["path"]) . "'"; ?> <!--модуль просмотра директории--> <script src="/modules/FileSystem/getDirFiles.js?251"></script> <script src="/modules/FileSystem/filesystem.js?251"></script> <script> // это обработчик событий! // перехватываем событие insertMyData: передаем в Тини содержимое полей и запускаем iFrameCommand //все команды описаны в плагине imageuploader (папка tinymce/plugins/imageuploader/plugin.min.js) var myPath = <?php echo $dirPath ?>; const butLockProp = $('#butLockProp'); var isLocked = true; var tekWidth = $('#txtWidth').val(); var tekHeight = $('#txtHeight').val(); var auto_center = false; var auto_width = true; var form_context = 'SelectFile'; var maxWid = 0; window.addEventListener('message', function (event) { //console.log(event.data) if (event.data.mceAction ==='addMyFile'){ //get files list var files_list = []; $('.files_list_item').each(function (index, element) { files_list.push($(this).attr('data_name')); }) window.parent.postMessage({ mceAction: 'execCommand', cmd: 'iframeCommandManageFiles', value: files_list }, origin); window.parent.postMessage({ mceAction: 'close' }, origin); } }); function myGetFiles(isMultipply = true, targetOb = null) { //we need to force select file form window var input = document.createElement('input'); input.type = 'file'; input.accept = "application/pdf"; if(isMultipply) input.multiple = "multiple"; //fires when user select something but not cancel input.onchange = function(e) { var filesArray = e.target.files;//this.files; // var tar = $(this).attr('data_target'); for(var i = 0; i < filesArray.length; i++){ var element = filesArray[i]; myUploadFile(element, myPath);//, tar); } } input.click(); } function myUploadFile(element, myPath, target = null) { if (window.FormData === undefined) { alert('В вашем браузере FormData не поддерживается') } else { var formData = new FormData(); //добавим виртуальное поле file formData.append('file', element); //добавим виртуальное поле directory formData.append('directory', myPath); //во время загрузки пользователь видит это: $('.lab_status').html('подождите, идет загрузка файла ' + element.name + '...'); $.ajax({ type: "POST", url: UploadFilesURL, cache: false, contentType: false, processData: false, data: formData, dataType : 'json', async: false }).done(function(data){ if (data.error == '') { $(document).trigger('sf_file_selected',data);/*'file_selected', evnt);*/ setTimeout(() => { $('.lab_status').empty(); }, 500); } else { $('.lab_status').html('ошибка загрузки файла ' + element.name + '!'); alert(data.error); } }).fail(function (jqXHR, textStatus) { alert("ajax error:" + textStatus); alert(thrownError); }) } } //кнопка выбора файла $("#butAddFiles").on('click touchstart', function(e){ myGetFiles(); }) //когда файды загружены на сервер $(document).on('sf_file_selected', function(e, ev){ AddFileToList(ev); }) //add line function AddFileToList(file) { var line_item = ` <div class="files_list_item" data_name=`+file.name+` data_path=`+file.path+`> <div class="fl_fields fl_fields_name">` + file.name + `</div> <div class="fl_fields fl_fields_size">` + file.size + `</div> <div class="fl_fields fl_fields_change">` + file.change + `</div> <button class="std_button std_button_pict but_only_picture but_gray_border butDeleteFile"><div class="std_button_text"></div></button> </div>`; //if exist var exist_item = $('.files_list_item[data_name="' + file.name + '"]'); if (exist_item.length > 0) { $(exist_item).replaceWith(line_item); } else { $('.files_list_wrap').append(line_item); } // //save all data to $ cache // var cursor = $('.files_list_item').last(); // $.data(cursor, "data-obj", file); } function RemoveLineFromList(file) { //if exist var exist_item = $('.files_list_item[data_name="' + file + '"]'); if (exist_item.length > 0) { $(exist_item).remove(); return 1; } return 0; } //прочитать список файлов из папки новости $(document).ready(function() { $('.files_list_wrap').empty(); getDirectoryFiles(myPath); // <= modules/filesystem/getDirFiles.js }) //когда список получен - отобразить его на форме $(document).on('getDirectoryFiles_done', function(e, ev){ if (ev.col_files > 0) { for (let i = 0; i < ev.col_files; i++) { var file = { 'name': ev.name[i], 'size': ev.size[i], 'change':ev.change[i], 'path': ev.path[i] } AddFileToList(file); } } }) //deleteFile $(document).on('button_gsm_click', function(e,ev){ if ($(ev.target).is('.butDeleteFile')) { var cursor = $(ev.target).closest('.files_list_item'); var file = $(cursor).attr('data_path'); myDeleteFiles([file],form_context); // <= modules/filesystem/filesystem.js } }) //hook event delete $(document).on('file_deleted', function(e,evnt){ //если наше событие if (evnt.context == form_context) { var file_name = evnt.data.file_names[0]; if (RemoveLineFromList(file_name) == 1) myShowPop_Info("Файл<br>" + file_name + '<br>был удален.' ,'body', 1000, 'dodgerblue', 'top', '1rem'); } }) //hook dialog close $(document).on('dialog_close', function(e,ev){ console.log(ev); if (evnt.context == form_context) { console.log('dialog was closed!'); } }) </script> </body> </html>