-var selected = $("#zipExplore directory:first ul:first");
-var selected_nameChange;
-var bullet_directory = '<i class="fas fa-folder"></i>';
-var bullet_directory_open = '<i class="fas fa-folder-open"></i>';
-var bullet_file = '<i class="far fa-file"></i>';
-var bullet_zip = '<i class="far fa-file-archive"></i>';
-var notFileName = ["\\", "/", ":", "*", "?", '"', "<", ">", "|"];
-var aCountFile = 0;
-var obj_files = new Map();
-var directories = new Map();
-var files = new Map();
+var selected = $("#zipExplore directory:first ul:first"); //기본변수
+var selected_nameChange; //폴더명 바꿀때 반응하는 라벨객체 선택변수
+var bullet_directory = '<i class="fas fa-folder"></i>'; //폰트어썸
+var bullet_directory_open = '<i class="fas fa-folder-open"></i>'; //폰트어썸
+var bullet_file = '<i class="far fa-file"></i>'; //폰트어썸
+var bullet_zip = '<i class="far fa-file-archive"></i>'; //폰트어썸
+var notFileName = ["\\", "/", ":", "*", "?", '"', "<", ">", "|"]; //파일명에 들어갈 수 없는것
+var directories = new Map(); //디렉토리 오브젝트
+var files = new Map(); //파일업로드 파일객체
+//폴더명은 비어있을 수 없습니다 알림창
function NotEmpty($elem) {
if ($elem.val() == "") {
alert(_Language["emptyDirectory"]);
}
}
+//폴더 추가
function AddFolder() {
var num = $("directory").length;
var directory =
<ul class="sort-directory sort-disabled"><li class="webzip-explore-liEmpty"> </li></ul>\
</directory>\
</li>';
+ //앞서 선택한 선택자에 폴더 라벨 추가
selected.append(directory);
-
+ //directories 객체에 폴더 오브젝트 추가
directories.put(directories.keys().length + "", "new");
-
+
+ //bullet 리셋, sort리셋
SetBulletIcon();
SetSortable();
}
+//폴더 순서 바뀌었을때 사용 (현재 사용할일 없지만 혹시 나중에 참고하게될것같아 냅둠)
function ResetDirectoryKeys($elem, dirNum) {
$elem.attr("key", dirNum);
}
-function ResetFileKeys($elem, dirNum, fileNum) {}
-
+//파일 추가
function AddFile($elem) {
+ //업로드된 파일객체 가져오기
var frontfiles = $elem.get(0).files;
+ //업로드된 파일갯수 사이즈 (다중업로드일때)
var size = $elem.get(0).files.length;
+ //전역변수 files에 새로 업로드한 파일과 같은파일이 있는지 확인한 후 있을경우 이미있는파일이라며 팅굼
if (isDuplicateFile(frontfiles)) {
alert(_Language["duplicateName"] + DuplicateFileName(frontfiles));
return false;
}
+ //업로드된 파일 수 만큼 루프
for (var i = 0; i < size; i++) {
+ //해시맵
var hash = new Map();
+ //대응되는 디렉토리
hash.put("directory", "0");
+ //파일객체
hash.put("file", frontfiles[i]);
var name = frontfiles[i].name;
var lab =
</li>\
";
selected.children("li:first").after(lab);
+ //앞서 생성한 파일객체를 전역변수 files에 추가
files.put(files.keys() == "" ? "0" : files.keys().length + "", hash);
}
+ //bullet 리셋 sort 리셋
SetBulletIcon();
SetSortable();
}
+//jquery ui sort 세팅
function SetSortable() {
$("#zipExplore ul")
.sortable({
connectWith: "ul",
placeholder: "webzip-explore-placeholder",
- items: "li:not(.sort-disabled)",
+ items: "li:not(.sort-disabled,.webzip-explore-liEmpty)",
update: function(event, ui) {
var directory_key = $(this)
.prev()
.attr("key");
- var directory_name = $(this)
- .prev()
- .text()
- .trim();
var directory_infiles = new Array();
$(this)
.children(".sort-file")
});
console.log(directory_key+","+directory_infiles);
- // if (true) {
- // console.log(
- // "directory: " + directory_name + ", file name: " + directory_infiles + ", key: " + directory_key
- // );
- // }
-
- // MoveFile(directory_key, directory_name, directory_infiles);
+ MoveFile(directory_key, directory_infiles);
}
})
.disableSelection();
}
-function MoveFile(dir_key, dir_name, file_name) {
+//sort로 인한 파일이동시
+function MoveFile(dir_key, file_name) {
for (var i = 0; i < file_name.length; i++) {
for (var o = 0; o < files.keys().length; o++) {
if (file_name[i] == files.get(o).get("file").name) {
file.put("directory", dir_key);
files.put(o, file);
- console.log(files);
}
}
}
}
+//파일 또는 폴더의 객체를 클릭했을때 css 적용과 전역변수 selected_nameChange에 객체정보 저장
function Clicked($elem) {
folder_bg_white();
$elem.css("background-color", "lightgray");
SetFileDirectoryName($elem);
}
+//폴더 혹은 파일 백그라운드 색 변경
function folder_bg_white() {
$("#zipExplore")
.find("label")
.css("background-color", "white");
}
+//왜만들었지? 안씀
function GetParentTag(elem) {
return elem
.parent()
.toLowerCase();
}
-// set bullet icon
+// set bullet icon (파일 또는 폴더의 아이콘) fontawesome
function SetBulletIcon() {
$("#zipExplore")
.find("bullet")
});
}
+//업로드시 파일 중복 검사
function isDuplicateFile(frontfiles) {
for (var i = 0; i < frontfiles.length; i++) {
for (var o = 0; o < files.keys().length; o++) {
return false;
}
+//업로드시 중복된 파일의 이름값 리턴
function DuplicateFileName(frontfiles) {
for (var i = 0; i < frontfiles.length; i++) {
for (var o = 0; o < files.keys().length; o++) {
}
}
+//폴더 열고 접기
function AddDbclickEvent($elem) {
if (
$elem
SetBulletIcon();
}
-//$("#zipExplore ul").each(function(){
-// $(this).on("sortupdate", function(event, ui){
-// console.log($(this).sortable('toArray').toString());
-// });
-//});
-
+//폴더명 변경시 대응하여 오른쪽 폴더라벨명도 변경
function SetFileDirectoryName($elem) {
$("#fileName").val($elem.text().trim());
}
+//파일명 변경시 대응하여 오른쪽 폴더라벨명도 변경
+//19.02.21 - 사용안하지만 참조되는곳이 있어 지우지않음
function ChangeFileName($elem) {
if (isErrFileName($elem.val())) {
alert(_Language["err_violationFileName"]);
}
}
+//파일명에 허용되지 않는 특수문자 들어가는지 확인
function isErrFileName(val) {
for (var i = 0; i < notFileName.length; i++) {
if (val.indexOf(notFileName[i]) != -1) {
return false;
}
+//파일명이 너무 길단다
function isTooLongFileName(val) {
if (val.length > 30) {
return true;
return false;
}
+//초기세팅(bullet, sort, 기본 zip label 세팅)
SetBulletIcon();
SetSortable();
-
directories.put(0, "example");
$("#zip_default").trigger("click");