@syncfusion/ej2-filemanager 20.1.47 → 20.1.52-10459
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +20 -3
- package/README.md +54 -43
- package/dist/ej2-filemanager.min.js +1 -0
- package/dist/ej2-filemanager.umd.min.js +1 -10
- package/dist/ej2-filemanager.umd.min.js.map +1 -1
- package/dist/es6/ej2-filemanager.es2015.js +2353 -659
- package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
- package/dist/es6/ej2-filemanager.es5.js +2422 -709
- package/dist/es6/ej2-filemanager.es5.js.map +1 -1
- package/dist/global/ej2-filemanager.min.js +1 -10
- package/dist/global/ej2-filemanager.min.js.map +1 -1
- package/dist/global/index.d.ts +0 -9
- package/helpers/e2e/filemanagerHelper.js +183 -166
- package/package.json +71 -71
- package/src/file-manager/actions/breadcrumb-bar.js +1 -5
- package/src/file-manager/actions/index.d.ts +1 -0
- package/src/file-manager/actions/index.js +1 -0
- package/src/file-manager/actions/toolbar.d.ts +1 -0
- package/src/file-manager/actions/toolbar.js +129 -17
- package/src/file-manager/actions/virtualization.d.ts +93 -0
- package/src/file-manager/actions/virtualization.js +279 -0
- package/src/file-manager/base/file-manager-model.d.ts +154 -28
- package/src/file-manager/base/file-manager.d.ts +176 -27
- package/src/file-manager/base/file-manager.js +244 -28
- package/src/file-manager/base/interface.d.ts +329 -3
- package/src/file-manager/base/interface.js +0 -1
- package/src/file-manager/common/operations.d.ts +7 -0
- package/src/file-manager/common/operations.js +830 -185
- package/src/file-manager/common/utility.d.ts +46 -3
- package/src/file-manager/common/utility.js +249 -73
- package/src/file-manager/index.d.ts +1 -0
- package/src/file-manager/index.js +1 -0
- package/src/file-manager/layout/details-view.d.ts +10 -0
- package/src/file-manager/layout/details-view.js +203 -94
- package/src/file-manager/layout/large-icons-view.d.ts +4 -2
- package/src/file-manager/layout/large-icons-view.js +122 -73
- package/src/file-manager/layout/navigation-pane.d.ts +2 -0
- package/src/file-manager/layout/navigation-pane.js +97 -73
- package/src/file-manager/models/column-model.d.ts +23 -5
- package/src/file-manager/models/column.d.ts +21 -2
- package/src/file-manager/models/column.js +6 -0
- package/src/file-manager/models/default-locale.js +0 -1
- package/src/file-manager/models/details-view-settings-model.d.ts +1 -1
- package/src/file-manager/models/details-view-settings.js +8 -3
- package/src/file-manager/models/search-settings.d.ts +5 -0
- package/src/file-manager/models/toolbar-settings-model.d.ts +177 -2
- package/src/file-manager/models/toolbar-settings.d.ts +157 -2
- package/src/file-manager/models/toolbar-settings.js +64 -2
- package/src/file-manager/models/upload-settings-model.d.ts +13 -0
- package/src/file-manager/models/upload-settings.d.ts +12 -0
- package/src/file-manager/models/upload-settings.js +3 -0
- package/src/file-manager/pop-up/context-menu.d.ts +2 -1
- package/src/file-manager/pop-up/context-menu.js +111 -36
- package/src/file-manager/pop-up/dialog.d.ts +1 -2
- package/src/file-manager/pop-up/dialog.js +19 -40
- package/src/global.js +1 -1
- package/styles/bootstrap-dark-lite.css +1058 -0
- package/styles/bootstrap-dark-lite.scss +16 -0
- package/styles/bootstrap-dark.css +371 -665
- package/styles/bootstrap-dark.scss +17 -1
- package/styles/bootstrap-lite.css +1040 -0
- package/styles/bootstrap-lite.scss +16 -0
- package/styles/bootstrap.css +353 -644
- package/styles/bootstrap.scss +17 -1
- package/styles/bootstrap4-lite.css +1068 -0
- package/styles/bootstrap4-lite.scss +16 -0
- package/styles/bootstrap4.css +381 -680
- package/styles/bootstrap4.scss +17 -1
- package/styles/bootstrap5-dark-lite.css +1078 -0
- package/styles/bootstrap5-dark-lite.scss +16 -0
- package/styles/bootstrap5-dark.css +376 -694
- package/styles/bootstrap5-dark.scss +17 -1
- package/styles/bootstrap5-lite.css +1078 -0
- package/styles/bootstrap5-lite.scss +16 -0
- package/styles/bootstrap5.3-lite.css +1035 -0
- package/styles/bootstrap5.3-lite.scss +16 -0
- package/styles/bootstrap5.3.css +1603 -0
- package/styles/bootstrap5.3.scss +17 -0
- package/styles/bootstrap5.css +376 -694
- package/styles/bootstrap5.scss +17 -1
- package/styles/fabric-dark-lite.css +1039 -0
- package/styles/fabric-dark-lite.scss +16 -0
- package/styles/fabric-dark.css +358 -642
- package/styles/fabric-dark.scss +17 -1
- package/styles/fabric-lite.css +1039 -0
- package/styles/fabric-lite.scss +16 -0
- package/styles/fabric.css +357 -641
- package/styles/fabric.scss +17 -1
- package/styles/file-manager/_all.scss +1 -1
- package/styles/file-manager/_bds-definition.scss +236 -0
- package/styles/file-manager/_bigger.scss +758 -0
- package/styles/file-manager/_bootstrap-dark-definition.scss +6 -2
- package/styles/file-manager/_bootstrap-definition.scss +6 -2
- package/styles/file-manager/_bootstrap4-definition.scss +6 -2
- package/styles/file-manager/_bootstrap5-definition.scss +20 -15
- package/styles/file-manager/_bootstrap5.3-definition.scss +242 -0
- package/styles/file-manager/_fabric-dark-definition.scss +6 -2
- package/styles/file-manager/_fabric-definition.scss +6 -2
- package/styles/file-manager/_fluent-definition.scss +20 -16
- package/styles/file-manager/_fluent2-definition.scss +255 -0
- package/styles/file-manager/_fusionnew-definition.scss +241 -0
- package/styles/file-manager/_highcontrast-definition.scss +6 -2
- package/styles/file-manager/_highcontrast-light-definition.scss +6 -2
- package/styles/file-manager/_layout.scss +367 -921
- package/styles/file-manager/_material-dark-definition.scss +7 -2
- package/styles/file-manager/_material-definition.scss +7 -2
- package/styles/file-manager/_material3-dark-definition.scss +1 -0
- package/styles/file-manager/_material3-definition.scss +235 -0
- package/styles/file-manager/_tailwind-definition.scss +20 -16
- package/styles/file-manager/_theme.scss +126 -102
- package/styles/file-manager/bootstrap-dark.css +371 -665
- package/styles/file-manager/bootstrap-dark.scss +2 -1
- package/styles/file-manager/bootstrap.css +353 -644
- package/styles/file-manager/bootstrap.scss +2 -1
- package/styles/file-manager/bootstrap4.css +381 -680
- package/styles/file-manager/bootstrap4.scss +2 -1
- package/styles/file-manager/bootstrap5-dark.css +376 -694
- package/styles/file-manager/bootstrap5-dark.scss +2 -1
- package/styles/file-manager/bootstrap5.3.css +1603 -0
- package/styles/file-manager/bootstrap5.3.scss +17 -0
- package/styles/file-manager/bootstrap5.css +376 -694
- package/styles/file-manager/bootstrap5.scss +2 -1
- package/styles/file-manager/fabric-dark.css +358 -642
- package/styles/file-manager/fabric-dark.scss +2 -1
- package/styles/file-manager/fabric.css +357 -641
- package/styles/file-manager/fabric.scss +2 -1
- package/styles/file-manager/fluent-dark.css +359 -641
- package/styles/file-manager/fluent-dark.scss +2 -1
- package/styles/file-manager/fluent.css +358 -641
- package/styles/file-manager/fluent.scss +2 -1
- package/styles/file-manager/fluent2.css +1886 -0
- package/styles/file-manager/fluent2.scss +17 -0
- package/styles/file-manager/highcontrast-light.css +354 -644
- package/styles/file-manager/highcontrast-light.scss +2 -1
- package/styles/file-manager/highcontrast.css +377 -647
- package/styles/file-manager/highcontrast.scss +2 -1
- package/styles/file-manager/icons/_bds.scss +235 -0
- package/styles/file-manager/icons/_bootstrap.scss +0 -1
- package/styles/file-manager/icons/_bootstrap4.scss +0 -1
- package/styles/file-manager/icons/_bootstrap5.3.scss +235 -0
- package/styles/file-manager/icons/_fabric-dark.scss +0 -1
- package/styles/file-manager/icons/_fabric.scss +0 -1
- package/styles/file-manager/icons/_fluent2.scss +235 -0
- package/styles/file-manager/icons/_fusionnew.scss +235 -0
- package/styles/file-manager/icons/_material3-dark.scss +1 -0
- package/styles/file-manager/icons/_material3.scss +235 -0
- package/styles/file-manager/material-dark.css +392 -671
- package/styles/file-manager/material-dark.scss +2 -1
- package/styles/file-manager/material.css +391 -654
- package/styles/file-manager/material.scss +2 -1
- package/styles/file-manager/material3-dark.css +1633 -0
- package/styles/file-manager/material3-dark.scss +18 -0
- package/styles/file-manager/material3.css +1635 -0
- package/styles/file-manager/material3.scss +18 -0
- package/styles/file-manager/tailwind-dark.css +347 -664
- package/styles/file-manager/tailwind-dark.scss +2 -1
- package/styles/file-manager/tailwind.css +347 -664
- package/styles/file-manager/tailwind.scss +2 -1
- package/styles/fluent-dark-lite.css +1037 -0
- package/styles/fluent-dark-lite.scss +16 -0
- package/styles/fluent-dark.css +359 -641
- package/styles/fluent-dark.scss +17 -1
- package/styles/fluent-lite.css +1036 -0
- package/styles/fluent-lite.scss +16 -0
- package/styles/fluent.css +358 -641
- package/styles/fluent.scss +17 -1
- package/styles/fluent2-lite.css +1272 -0
- package/styles/fluent2-lite.scss +16 -0
- package/styles/fluent2.css +1886 -0
- package/styles/fluent2.scss +17 -0
- package/styles/highcontrast-light-lite.css +1039 -0
- package/styles/highcontrast-light-lite.scss +16 -0
- package/styles/highcontrast-light.css +354 -644
- package/styles/highcontrast-light.scss +17 -1
- package/styles/highcontrast-lite.css +1059 -0
- package/styles/highcontrast-lite.scss +16 -0
- package/styles/highcontrast.css +377 -647
- package/styles/highcontrast.scss +17 -1
- package/styles/material-dark-lite.css +1092 -0
- package/styles/material-dark-lite.scss +16 -0
- package/styles/material-dark.css +392 -671
- package/styles/material-dark.scss +17 -1
- package/styles/material-lite.css +1097 -0
- package/styles/material-lite.scss +16 -0
- package/styles/material.css +391 -654
- package/styles/material.scss +17 -1
- package/styles/material3-dark-lite.css +1090 -0
- package/styles/material3-dark-lite.scss +16 -0
- package/styles/material3-dark.css +1633 -0
- package/styles/material3-dark.scss +19 -0
- package/styles/material3-lite.css +1092 -0
- package/styles/material3-lite.scss +16 -0
- package/styles/material3.css +1635 -0
- package/styles/material3.scss +19 -0
- package/styles/tailwind-dark-lite.css +1060 -0
- package/styles/tailwind-dark-lite.scss +16 -0
- package/styles/tailwind-dark.css +347 -664
- package/styles/tailwind-dark.scss +17 -1
- package/styles/tailwind-lite.css +1060 -0
- package/styles/tailwind-lite.scss +16 -0
- package/styles/tailwind.css +347 -664
- package/styles/tailwind.scss +17 -1
- package/CHANGELOG.md +0 -404
@@ -1,9 +1,11 @@
|
|
1
|
-
import { Ajax, createElement, select, extend } from '@syncfusion/ej2-base';
|
1
|
+
import { Ajax, Fetch, createElement, select, extend, Internationalization } from '@syncfusion/ej2-base';
|
2
2
|
import { isNullOrUndefined as isNOU, setValue, getValue } from '@syncfusion/ej2-base';
|
3
3
|
import * as events from '../base/constant';
|
4
4
|
import { createDialog, createExtDialog } from '../pop-up/dialog';
|
5
|
-
import { fileType, setNodeId, getLocaleText, setDateObject, doPasteUpdate,
|
6
|
-
import { generatePath } from '../common/utility';
|
5
|
+
import { fileType, setNodeId, getLocaleText, setDateObject, doPasteUpdate, getPathObject } from '../common/utility';
|
6
|
+
import { generatePath, getAccessDetails } from '../common/utility';
|
7
|
+
import { getUid } from '@syncfusion/ej2-grids';
|
8
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
7
9
|
/**
|
8
10
|
* Function to read the content from given path in File Manager.
|
9
11
|
*
|
@@ -14,14 +16,12 @@ import { generatePath } from '../common/utility';
|
|
14
16
|
* @private
|
15
17
|
*/
|
16
18
|
export function read(parent, event, path) {
|
17
|
-
// eslint-disable-next-line
|
18
19
|
var itemData = parent.itemData;
|
19
20
|
for (var i = 0; i < itemData.length; i++) {
|
20
21
|
if (isNOU(getValue('hasChild', itemData[i]))) {
|
21
22
|
setValue('hasChild', false, itemData[i]);
|
22
23
|
}
|
23
24
|
}
|
24
|
-
// eslint-disable-next-line
|
25
25
|
var data = { action: 'read', path: path, showHiddenItems: parent.showHiddenItems, data: itemData };
|
26
26
|
createAjax(parent, data, readSuccess, event);
|
27
27
|
}
|
@@ -34,7 +34,6 @@ export function read(parent, event, path) {
|
|
34
34
|
* @private
|
35
35
|
*/
|
36
36
|
export function createFolder(parent, itemName) {
|
37
|
-
// eslint-disable-next-line
|
38
37
|
var data = { action: 'create', path: parent.path, name: itemName, data: parent.itemData };
|
39
38
|
createAjax(parent, data, createSuccess, itemName);
|
40
39
|
}
|
@@ -47,11 +46,8 @@ export function createFolder(parent, itemName) {
|
|
47
46
|
* @private
|
48
47
|
*/
|
49
48
|
export function filter(parent, event) {
|
50
|
-
// eslint-disable-next-line
|
51
49
|
var data = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };
|
52
|
-
// eslint-disable-next-line
|
53
50
|
var filterData;
|
54
|
-
// eslint-disable-next-line
|
55
51
|
var filterDataVal = parent.filterData ? extend(filterData, data, parent.filterData) : data;
|
56
52
|
createAjax(parent, filterDataVal, filterSuccess, event, getValue('action', filterDataVal));
|
57
53
|
}
|
@@ -83,9 +79,8 @@ export function rename(parent, path, itemNewName) {
|
|
83
79
|
newName = fPath.replace(path, '') + itemNewName;
|
84
80
|
}
|
85
81
|
}
|
86
|
-
// eslint-disable-next-line
|
87
82
|
var data = {
|
88
|
-
action: 'rename', path: path, name: name, newName: newName, data: parent.itemData
|
83
|
+
action: 'rename', path: path, name: name, newName: newName, data: parent.itemData, showFileExtension: parent.showFileExtension
|
89
84
|
};
|
90
85
|
createAjax(parent, data, renameSuccess, path);
|
91
86
|
}
|
@@ -102,10 +97,7 @@ export function rename(parent, path, itemNewName) {
|
|
102
97
|
* @returns {void}
|
103
98
|
* @private
|
104
99
|
*/
|
105
|
-
export function paste(parent, path, names, targetPath, pasteOperation,
|
106
|
-
// eslint-disable-next-line
|
107
|
-
renameItems, actionRecords) {
|
108
|
-
// eslint-disable-next-line
|
100
|
+
export function paste(parent, path, names, targetPath, pasteOperation, renameItems, actionRecords) {
|
109
101
|
var data = {
|
110
102
|
action: pasteOperation, path: path, targetData: parent.itemData[0],
|
111
103
|
targetPath: targetPath, names: names, renameFiles: renameItems, data: actionRecords
|
@@ -124,7 +116,6 @@ renameItems, actionRecords) {
|
|
124
116
|
* @private
|
125
117
|
*/
|
126
118
|
export function Delete(parent, items, path, operation) {
|
127
|
-
// eslint-disable-next-line
|
128
119
|
var data = { action: operation, path: path, names: items, data: parent.itemData };
|
129
120
|
createAjax(parent, data, deleteSuccess, path);
|
130
121
|
}
|
@@ -140,26 +131,420 @@ export function Delete(parent, items, path, operation) {
|
|
140
131
|
* @private
|
141
132
|
*/
|
142
133
|
export function GetDetails(parent, names, path, operation) {
|
143
|
-
// eslint-disable-next-line
|
144
134
|
var data = { action: operation, path: path, names: names, data: parent.itemData };
|
145
135
|
createAjax(parent, data, detailsSuccess, path, operation);
|
146
136
|
}
|
147
137
|
/**
|
148
|
-
* Function for
|
138
|
+
* Function for getDateFormat in File Manager.
|
139
|
+
*
|
140
|
+
* @param {IFileManager} parent - specifies the parent element.
|
141
|
+
* @returns {void}
|
142
|
+
* @private
|
143
|
+
*/
|
144
|
+
function getDateFormat(parent) {
|
145
|
+
var columns = parent.detailsViewSettings.columns;
|
146
|
+
var dateFormat;
|
147
|
+
if (!columns) {
|
148
|
+
return null;
|
149
|
+
}
|
150
|
+
for (var i = 0; i < columns.length; i++) {
|
151
|
+
if (columns[i].field === '_fm_modified') {
|
152
|
+
if (!isNOU(columns[i].format)) {
|
153
|
+
dateFormat = columns[i].format.toString();
|
154
|
+
}
|
155
|
+
break;
|
156
|
+
}
|
157
|
+
}
|
158
|
+
return dateFormat;
|
159
|
+
}
|
160
|
+
/**
|
161
|
+
* Checks whether fileSystemData is enabled.
|
162
|
+
*
|
163
|
+
* @param {IFileManager} parent - specifies the parent element.
|
164
|
+
* @returns {boolean} - returns the boolean value.
|
165
|
+
*/
|
166
|
+
export function isFileSystemData(parent) {
|
167
|
+
var isFileSystemData = parent.fileSystemData.length >= 0 && isNOU(parent.ajaxSettings.url);
|
168
|
+
return isFileSystemData;
|
169
|
+
}
|
170
|
+
/**
|
171
|
+
* Function to check whether file already exist or not.
|
172
|
+
*
|
173
|
+
* @param {Record<string, any>} fileSystemData - specifies the file data.
|
174
|
+
* @param {string} name - specifies the name.
|
175
|
+
* @returns {boolean} - returns the boolean value.
|
176
|
+
* @private
|
177
|
+
*/
|
178
|
+
function isFileExists(fileSystemData, name) {
|
179
|
+
var isExists = fileSystemData.some(function (item) { return item.name === name; });
|
180
|
+
return isExists;
|
181
|
+
}
|
182
|
+
/**
|
183
|
+
* Function to find the index value of a file or folder.
|
184
|
+
*
|
185
|
+
* @param {IFileManager} parent - specifies the parent element.
|
186
|
+
* @param {number} id - specifies the id.
|
187
|
+
* @returns {number} - returns the index value.
|
188
|
+
* @private
|
189
|
+
*/
|
190
|
+
function findIndexById(parent, id) {
|
191
|
+
var index = parent.fileSystemData.findIndex(function (item) { return String(item.id) === String(id); });
|
192
|
+
return index;
|
193
|
+
}
|
194
|
+
/**
|
195
|
+
* Function to get the entire data of a file or folder using id value.
|
196
|
+
*
|
197
|
+
* @param {IFileManager} parent - specifies the parent element.
|
198
|
+
* @param {number | string} id - specifies the id.
|
199
|
+
* @returns {Object} - returns the data.
|
200
|
+
* @private
|
201
|
+
*/
|
202
|
+
function filterById(parent, id) {
|
203
|
+
var data = parent.fileSystemData.filter(function (item) { return String(item.id) === String(id); })[0];
|
204
|
+
return data;
|
205
|
+
}
|
206
|
+
/**
|
207
|
+
* Function to get the entire data of a file or folder for a parent.
|
208
|
+
*
|
209
|
+
* @param {IFileManager} parent - specifies the parent element.
|
210
|
+
* @param {number | string} parentId - specifies the parent id.
|
211
|
+
* @returns {Object[]} - returns the data.
|
212
|
+
* @private
|
213
|
+
*/
|
214
|
+
function filterByParent(parent, parentId) {
|
215
|
+
var data = parent.fileSystemData.filter(function (item) { return String(item.parentId) === String(parentId); });
|
216
|
+
return data;
|
217
|
+
}
|
218
|
+
/**
|
219
|
+
* Function to create a new copied file or folder.
|
220
|
+
*
|
221
|
+
* @param {Record<string, any>} data - specifies the file or folder data.
|
222
|
+
* @param {Record<string, any>} target - specifies the target data.
|
223
|
+
* @param {string} itemName - specifies the item name.
|
224
|
+
* @param {boolean} isCopy - specifies the copy operation.
|
225
|
+
* @returns {Record<string, Object>} - returns the data.
|
226
|
+
* @private
|
227
|
+
*/
|
228
|
+
function createNewItem(data, target, itemName, isCopy) {
|
229
|
+
var newItem = {};
|
230
|
+
//Construct the new folder details.
|
231
|
+
for (var key in data) {
|
232
|
+
if (Object.prototype.hasOwnProperty.call(data, key)) {
|
233
|
+
newItem[key] = null;
|
234
|
+
}
|
235
|
+
}
|
236
|
+
var currentDate = new Date();
|
237
|
+
var folderPath = target.id !== 0 ? target.filterPath + target.name : '\\';
|
238
|
+
Object.assign(newItem, {
|
239
|
+
dateCreated: currentDate,
|
240
|
+
dateModified: currentDate,
|
241
|
+
filterPath: folderPath,
|
242
|
+
hasChild: isCopy ? data.hasChild : false,
|
243
|
+
id: getUid(itemName === null ? data.name : itemName),
|
244
|
+
isFile: isCopy ? data.isFile : false,
|
245
|
+
name: itemName === null ? data.name : itemName,
|
246
|
+
parentId: target.id,
|
247
|
+
size: isCopy ? data.size : 0,
|
248
|
+
type: isCopy ? data.type : ''
|
249
|
+
});
|
250
|
+
return newItem;
|
251
|
+
}
|
252
|
+
/**
|
253
|
+
* Function to create an error response.
|
254
|
+
*
|
255
|
+
* @param {IFileManager} parent - specifies the parent element.
|
256
|
+
* @param {string} message - specifies the error message.
|
257
|
+
* @param {string} code - specifies the error code.
|
258
|
+
* @param {Object[]} fileName - specifies the file name.
|
259
|
+
* @returns {void}
|
260
|
+
* @private
|
261
|
+
*/
|
262
|
+
function createErrorObject(parent, message, code, fileName) {
|
263
|
+
parent.responseData = {
|
264
|
+
cwd: null,
|
265
|
+
details: null,
|
266
|
+
error: {
|
267
|
+
code: code,
|
268
|
+
message: message,
|
269
|
+
fileExists: fileName != null ? fileName : null
|
270
|
+
},
|
271
|
+
files: null
|
272
|
+
};
|
273
|
+
}
|
274
|
+
/**
|
275
|
+
* Function to trigger folder creation.
|
149
276
|
*
|
150
277
|
* @param {IFileManager} parent - specifies the parent element.
|
151
278
|
* @param {Object} data - specifies the data.
|
152
|
-
* @param {
|
153
|
-
* @
|
154
|
-
* @
|
155
|
-
|
279
|
+
* @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.
|
280
|
+
* @returns {void}
|
281
|
+
* @private
|
282
|
+
*/
|
283
|
+
function triggerFolderCreation(parent, data, eventArgs) {
|
284
|
+
var createEventArgs = {
|
285
|
+
folderName: getValue('name', data),
|
286
|
+
cancel: false,
|
287
|
+
path: getValue('path', data),
|
288
|
+
parentFolder: getValue('data', data)
|
289
|
+
};
|
290
|
+
parent.trigger('beforeFolderCreate', createEventArgs, function (args) {
|
291
|
+
if (args.cancel) {
|
292
|
+
eventArgs.cancel = true;
|
293
|
+
return;
|
294
|
+
}
|
295
|
+
if (isFileSystemData(parent)) {
|
296
|
+
if (!isFileExists(parent.fileSystemData, args.folderName)) {
|
297
|
+
var data_1 = args.parentFolder[0];
|
298
|
+
var newObject = createNewItem(data_1, data_1, args.folderName, false);
|
299
|
+
parent.fileSystemData.push(newObject);
|
300
|
+
}
|
301
|
+
else {
|
302
|
+
var message = 'A file or folder with the name ' + args.folderName + ' already exists.';
|
303
|
+
createErrorObject(parent, message, '400', null);
|
304
|
+
}
|
305
|
+
}
|
306
|
+
});
|
307
|
+
}
|
308
|
+
/**
|
309
|
+
* Function to trigger delete operation.
|
310
|
+
*
|
311
|
+
* @param {IFileManager} parent - specifies the parent element.
|
312
|
+
* @param {Object} data - specifies the data.
|
313
|
+
* @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.
|
314
|
+
* @returns {void}
|
315
|
+
* @private
|
316
|
+
*/
|
317
|
+
function triggerDeleteOperation(parent, data, eventArgs) {
|
318
|
+
var deleteEventArgs = {
|
319
|
+
cancel: false,
|
320
|
+
itemData: getValue('data', data),
|
321
|
+
path: getValue('path', data)
|
322
|
+
};
|
323
|
+
parent.trigger('beforeDelete', deleteEventArgs, function (args) {
|
324
|
+
if (args.cancel) {
|
325
|
+
eventArgs.cancel = true;
|
326
|
+
return;
|
327
|
+
}
|
328
|
+
if (isFileSystemData(parent)) {
|
329
|
+
args.itemData.forEach(function (itemData) {
|
330
|
+
var index = findIndexById(parent, itemData.id);
|
331
|
+
if (index !== -1) {
|
332
|
+
parent.fileSystemData.splice(index, 1);
|
333
|
+
}
|
334
|
+
if (!itemData.isFile) {
|
335
|
+
var subItems = parent.fileSystemData.filter(function (obj) { return obj.filterPath.includes(itemData.name); });
|
336
|
+
subItems.forEach(function (subItem) {
|
337
|
+
var index = findIndexById(parent, subItem.id);
|
338
|
+
if (index !== -1) {
|
339
|
+
parent.fileSystemData.splice(index, 1);
|
340
|
+
}
|
341
|
+
});
|
342
|
+
}
|
343
|
+
});
|
344
|
+
}
|
345
|
+
});
|
346
|
+
}
|
347
|
+
/**
|
348
|
+
* Function to trigger rename operation.
|
349
|
+
*
|
350
|
+
* @param {IFileManager} parent - specifies the parent element.
|
351
|
+
* @param {Object} data - specifies the data.
|
352
|
+
* @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.
|
353
|
+
* @returns {void}
|
354
|
+
* @private
|
355
|
+
*/
|
356
|
+
function triggerRenameOperation(parent, data, eventArgs) {
|
357
|
+
var renameEventArgs = {
|
358
|
+
cancel: false,
|
359
|
+
newName: getValue('newName', data),
|
360
|
+
itemData: getValue('data', data),
|
361
|
+
path: getValue('path', data)
|
362
|
+
};
|
363
|
+
parent.trigger('beforeRename', renameEventArgs, function (args) {
|
364
|
+
if (args.cancel) {
|
365
|
+
eventArgs.cancel = true;
|
366
|
+
return;
|
367
|
+
}
|
368
|
+
if (isFileSystemData(parent)) {
|
369
|
+
if (!isFileExists(parent.fileSystemData, args.newName)) {
|
370
|
+
var fileData = filterById(parent, args.itemData[0].id);
|
371
|
+
fileData.name = args.newName;
|
372
|
+
}
|
373
|
+
else {
|
374
|
+
var message = 'Cannot rename' + args.itemData[0].name + 'to' + args.newName + ': destination already exists.';
|
375
|
+
createErrorObject(parent, message, '400', null);
|
376
|
+
}
|
377
|
+
}
|
378
|
+
});
|
379
|
+
}
|
380
|
+
/**
|
381
|
+
* Function to trigger move or copy operation.
|
382
|
+
*
|
383
|
+
* @param {IFileManager} parent - specifies the parent element.
|
384
|
+
* @param {Object} data - specifies the data.
|
385
|
+
* @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.
|
156
386
|
* @returns {void}
|
157
387
|
* @private
|
158
388
|
*/
|
159
|
-
function
|
160
|
-
|
161
|
-
|
162
|
-
|
389
|
+
function triggerMoveOrCopyOperation(parent, data, eventArgs) {
|
390
|
+
var moveEventArgs = {
|
391
|
+
cancel: false,
|
392
|
+
itemData: getValue('data', data),
|
393
|
+
isCopy: getValue('action', data) === 'copy' ? true : false,
|
394
|
+
path: getValue('path', data),
|
395
|
+
targetData: getValue('targetData', data),
|
396
|
+
targetPath: getValue('targetPath', data)
|
397
|
+
};
|
398
|
+
parent.trigger('beforeMove', moveEventArgs, function (args) {
|
399
|
+
if (args.cancel) {
|
400
|
+
eventArgs.cancel = true;
|
401
|
+
return;
|
402
|
+
}
|
403
|
+
if (isFileSystemData(parent)) {
|
404
|
+
var message = 'File Already Exists';
|
405
|
+
var action = getValue('action', data);
|
406
|
+
var itemPermission = getAccessDetails(parent, args.itemData, action, false);
|
407
|
+
var pathPermission = getAccessDetails(parent, [args.targetData], action, true);
|
408
|
+
var file_1 = [];
|
409
|
+
parent.pasteNodes = [];
|
410
|
+
if (itemPermission === '' && pathPermission === '') {
|
411
|
+
if (args.isCopy) {
|
412
|
+
var folderSubItems_1 = filterByParent(parent, args.targetData.id);
|
413
|
+
var copiedFolders = args.itemData;
|
414
|
+
copiedFolders.forEach(function (itemData) {
|
415
|
+
if (!isFileExists(folderSubItems_1, itemData.name) || getValue('renameFiles', data).length > 0) {
|
416
|
+
if (getValue('renameFiles', data).length > 0) {
|
417
|
+
var names = itemData.name.split('.');
|
418
|
+
var name_1 = itemData.name.includes('.') ? names[0] + '(' + parent.existingFileCount + ').' + names[1] : names[0] + '(' + parent.existingFileCount + ')';
|
419
|
+
copyFolderItems(parent, itemData, args.targetData, name_1);
|
420
|
+
parent.responseData.error = null;
|
421
|
+
parent.existingFileCount++;
|
422
|
+
return;
|
423
|
+
}
|
424
|
+
copyFolderItems(parent, itemData, args.targetData, null);
|
425
|
+
}
|
426
|
+
else {
|
427
|
+
file_1.push(itemData.name);
|
428
|
+
}
|
429
|
+
});
|
430
|
+
if (file_1.length > 0) {
|
431
|
+
createErrorObject(parent, message, '400', file_1);
|
432
|
+
}
|
433
|
+
return;
|
434
|
+
}
|
435
|
+
var target = args.targetData;
|
436
|
+
var getTargetFiles = filterByParent(parent, target.id);
|
437
|
+
for (var i = 0; i < args.itemData.length; i++) {
|
438
|
+
var currItem = args.itemData[i];
|
439
|
+
if (!isFileExists(getTargetFiles, currItem.name) || getValue('renameFiles', data).length > 0) {
|
440
|
+
if (!target.hasChild) {
|
441
|
+
target.hasChild = !currItem.isFile;
|
442
|
+
}
|
443
|
+
if (!currItem.isFile) {
|
444
|
+
//Check whether the source folder include other sub folders or not.
|
445
|
+
var subItems = currItem.parentId !== 0
|
446
|
+
? filterByParent(parent, currItem.parentID) : [];
|
447
|
+
var itemData = filterById(parent, currItem.parentId);
|
448
|
+
itemData.hasChild = subItems.length > 1 ? true : false;
|
449
|
+
}
|
450
|
+
var fileData = filterById(parent, currItem.id);
|
451
|
+
if (getValue('renameFiles', data).length > 0) {
|
452
|
+
var names = currItem.name.split('.');
|
453
|
+
currItem.name = currItem.name.includes('.') ? names[0] + '(' + parent.existingFileCount + ').' + names[1] : names[0] + '(' + parent.existingFileCount + ')';
|
454
|
+
fileData.name = currItem.name;
|
455
|
+
parent.responseData.error = null;
|
456
|
+
parent.existingFileCount++;
|
457
|
+
parent.dropData = target;
|
458
|
+
parent.dropPath = args.path;
|
459
|
+
var pathArray = args.targetPath.replace(/^\/|\/$/g, '').split('/');
|
460
|
+
target = filterById(parent, pathArray[pathArray.length - 1]);
|
461
|
+
}
|
462
|
+
fileData.parentId = target.id;
|
463
|
+
fileData.filterPath = target.id === 0 ? '\\' : target.filterPath + target.name + '\\';
|
464
|
+
}
|
465
|
+
else {
|
466
|
+
file_1.push(currItem.name);
|
467
|
+
}
|
468
|
+
}
|
469
|
+
if (file_1.length > 0) {
|
470
|
+
createErrorObject(parent, message, '400', file_1);
|
471
|
+
}
|
472
|
+
}
|
473
|
+
}
|
474
|
+
});
|
475
|
+
}
|
476
|
+
/**
|
477
|
+
* Function to trigger search operation.
|
478
|
+
*
|
479
|
+
* @param {IFileManager} parent - specifies the parent element.
|
480
|
+
* @param {Object} data - specifies the data.
|
481
|
+
* @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.
|
482
|
+
* @returns {void}
|
483
|
+
* @private
|
484
|
+
*/
|
485
|
+
function triggerSearchOperation(parent, data, eventArgs) {
|
486
|
+
var searchEventArgs = {
|
487
|
+
searchResults: getValue('data', data),
|
488
|
+
cancel: false,
|
489
|
+
path: getValue('path', data),
|
490
|
+
searchText: getValue('searchString', data),
|
491
|
+
caseSensitive: getValue('caseSensitive', data),
|
492
|
+
showHiddenItems: getValue('showHiddenItems', data)
|
493
|
+
};
|
494
|
+
parent.trigger('search', searchEventArgs, function (args) {
|
495
|
+
setValue('data', args.searchResults, data);
|
496
|
+
if (args.cancel) {
|
497
|
+
eventArgs.cancel = true;
|
498
|
+
}
|
499
|
+
});
|
500
|
+
}
|
501
|
+
/**
|
502
|
+
* Function to trigger client side events.
|
503
|
+
*
|
504
|
+
* @param {IFileManager} parent - specifies the parent element.
|
505
|
+
* @param {Object} data - specifies the data.
|
506
|
+
* @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.
|
507
|
+
* @returns {void}
|
508
|
+
* @private
|
509
|
+
*/
|
510
|
+
function triggerClientEvents(parent, data, eventArgs) {
|
511
|
+
switch (getValue('action', data)) {
|
512
|
+
case 'create': {
|
513
|
+
triggerFolderCreation(parent, data, eventArgs);
|
514
|
+
break;
|
515
|
+
}
|
516
|
+
case 'delete': {
|
517
|
+
triggerDeleteOperation(parent, data, eventArgs);
|
518
|
+
break;
|
519
|
+
}
|
520
|
+
case 'rename': {
|
521
|
+
triggerRenameOperation(parent, data, eventArgs);
|
522
|
+
break;
|
523
|
+
}
|
524
|
+
case 'move':
|
525
|
+
case 'copy': {
|
526
|
+
triggerMoveOrCopyOperation(parent, data, eventArgs);
|
527
|
+
break;
|
528
|
+
}
|
529
|
+
case 'search': {
|
530
|
+
triggerSearchOperation(parent, data, eventArgs);
|
531
|
+
break;
|
532
|
+
}
|
533
|
+
}
|
534
|
+
}
|
535
|
+
/**
|
536
|
+
* Creates an AJAX request for the file manager.
|
537
|
+
*
|
538
|
+
* @param {IFileManager} parent - The parent file manager instance.
|
539
|
+
* @param {Object} data - The data object for the AJAX request.
|
540
|
+
* @param {Function} fn - The callback function to be executed after the AJAX request.
|
541
|
+
* @param {string} [event] - The event type for the AJAX request.
|
542
|
+
* @param {string} [operation] - The operation type for the AJAX request.
|
543
|
+
* @param {string} [targetPath] - The target path for the AJAX request.
|
544
|
+
* @returns {void}
|
545
|
+
* @private
|
546
|
+
*/
|
547
|
+
function createAjax(parent, data, fn, event, operation, targetPath) {
|
163
548
|
var ajaxSettings = {
|
164
549
|
url: parent.ajaxSettings.url,
|
165
550
|
type: 'POST',
|
@@ -172,9 +557,70 @@ parent, data, fn, event, operation, targetPath) {
|
|
172
557
|
beforeSend: null
|
173
558
|
};
|
174
559
|
var eventArgs = { action: getValue('action', data), ajaxSettings: ajaxSettings, cancel: false };
|
560
|
+
triggerClientEvents(parent, data, eventArgs);
|
175
561
|
parent.trigger('beforeSend', eventArgs, function (beforeSendArgs) {
|
176
562
|
if (!beforeSendArgs.cancel) {
|
177
563
|
parent.notify(events.beforeRequest, {});
|
564
|
+
if (isFileSystemData(parent)) {
|
565
|
+
var filePath = event === 'node-expand' || event === 'finalize-end' ? getValue('path', data) : parent.path;
|
566
|
+
var pathArray = filePath.replace(/^\/|\/$/g, '').split('/');
|
567
|
+
var idValue = event === 'rename-end-parent' || (event === 'path-changed' && getValue('data', data).length !== 0)
|
568
|
+
|| (event === 'paste-end' && (parent.targetModule === 'largeiconsview' || parent.targetModule === 'detailsview'))
|
569
|
+
? getValue('data', data)[0].id : pathArray[pathArray.length - 1];
|
570
|
+
var action = getValue('action', data);
|
571
|
+
var isFileOperation = (action === 'move' || action === 'rename' || action === 'copy' || action === 'delete' || action === 'search') && event !== 'rename-end';
|
572
|
+
if (action === 'read' || action === 'create' || event === 'rename-end') {
|
573
|
+
var rootId = parent.fileSystemData
|
574
|
+
.filter(function (item) { return isNOU(item.parentId); })
|
575
|
+
.length > 0
|
576
|
+
? parent.fileSystemData
|
577
|
+
.filter(function (item) { return isNOU(item.parentId); })[0].id
|
578
|
+
: 0;
|
579
|
+
parent.responseData = {
|
580
|
+
cwd: filterById(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? rootId : idValue),
|
581
|
+
details: null,
|
582
|
+
error: null,
|
583
|
+
files: filterByParent(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? rootId : idValue)
|
584
|
+
};
|
585
|
+
if (isNOU(parent.responseData.cwd)) {
|
586
|
+
var message = 'Cannot load empty data within the File Manager.';
|
587
|
+
createErrorObject(parent, message, '400', null);
|
588
|
+
}
|
589
|
+
}
|
590
|
+
else if (isFileOperation && parent.responseData.error === null) {
|
591
|
+
var itemData = action === 'search' || action === 'delete' ? getValue('data', data) : [];
|
592
|
+
if (itemData.length === 0) {
|
593
|
+
itemData = getValue('data', data).map(function (item) { return filterById(parent, item.id); });
|
594
|
+
}
|
595
|
+
parent.responseData = {
|
596
|
+
cwd: null,
|
597
|
+
details: null,
|
598
|
+
error: null,
|
599
|
+
files: itemData
|
600
|
+
};
|
601
|
+
}
|
602
|
+
else if (getValue('action', data) === 'details') {
|
603
|
+
var itemData = getValue('data', data);
|
604
|
+
var details = itemData[0];
|
605
|
+
var isMultipleFiles = itemData.length > 1;
|
606
|
+
var itemNames = itemData.map(function (item) { return item.name; });
|
607
|
+
var totalSize = isMultipleFiles ? getSize(itemData.reduce(function (accumulator, currentObject) { return accumulator + (currentObject.size || 0); }, 0)) : getSize(details.size);
|
608
|
+
var path = (parent.pathNames.includes(details.name) ? parent.pathNames.join('/') : parent.pathNames.join('/') + '/' + details.name);
|
609
|
+
parent.responseData.details = Object.assign({
|
610
|
+
location: isMultipleFiles ? null : path,
|
611
|
+
multipleFiles: isMultipleFiles,
|
612
|
+
name: itemNames.join(', '),
|
613
|
+
size: totalSize
|
614
|
+
}, isMultipleFiles ? {} : {
|
615
|
+
created: details.dateCreated,
|
616
|
+
isFile: details.isFile,
|
617
|
+
modified: details.dateModified,
|
618
|
+
permission: details.permission
|
619
|
+
});
|
620
|
+
}
|
621
|
+
performReadOperation(parent, parent.responseData, fn, data, event, operation, targetPath, beforeSendArgs);
|
622
|
+
return;
|
623
|
+
}
|
178
624
|
var ajax = new Ajax({
|
179
625
|
url: getValue('url', beforeSendArgs.ajaxSettings),
|
180
626
|
type: getValue('type', beforeSendArgs.ajaxSettings),
|
@@ -199,60 +645,7 @@ parent, data, fn, event, operation, targetPath) {
|
|
199
645
|
if (typeof (result) === 'string') {
|
200
646
|
result = JSON.parse(result);
|
201
647
|
}
|
202
|
-
parent
|
203
|
-
var id = parent.expandedId ? parent.expandedId : parent.pathId[parent.pathId.length - 1];
|
204
|
-
if (!isNOU(result.cwd) && (getValue('action', data) === 'read')) {
|
205
|
-
result.cwd.name = (parent.pathId.length === 1) ? (parent.rootAliasName || result.cwd.name) : result.cwd.name;
|
206
|
-
setValue('_fm_id', id, result.cwd);
|
207
|
-
setValue(id, result.cwd, parent.feParent);
|
208
|
-
if (!isNOU(result.files) || result.error.code === '401') {
|
209
|
-
if ((event === 'finalize-end' || event === 'initial-end') && parent.pathNames.length === 0) {
|
210
|
-
// eslint-disable-next-line
|
211
|
-
var root = getValue(parent.pathId[0], parent.feParent);
|
212
|
-
parent.pathNames[0] = getValue('name', root);
|
213
|
-
parent.hasId = !isNOU(getValue('id', root));
|
214
|
-
}
|
215
|
-
if (event === 'finalize-end') {
|
216
|
-
generatePath(parent);
|
217
|
-
}
|
218
|
-
}
|
219
|
-
}
|
220
|
-
if (!isNOU(result.files)) {
|
221
|
-
setDateObject(result.files);
|
222
|
-
for (var i = 0, len = result.files.length; i < len; i++) {
|
223
|
-
// eslint-disable-next-line
|
224
|
-
var item = result.files[i];
|
225
|
-
setValue('_fm_iconClass', fileType(item), item);
|
226
|
-
}
|
227
|
-
if (getValue('action', data) === 'read') {
|
228
|
-
setNodeId(result, id);
|
229
|
-
setValue(id, result.files, parent.feFiles);
|
230
|
-
}
|
231
|
-
}
|
232
|
-
if (!isNOU(result.details) && !isNOU(parent.rootAliasName)) {
|
233
|
-
var rootName = parent.rootAliasName || getValue('name', result.details);
|
234
|
-
var location_1 = getValue('location', result.details).replace(new RegExp('/', 'g'), '\\');
|
235
|
-
if ((getValue('path', data) === '/') || (parent.hasId && getValue('path', data).match(/[/]/g).length === 1)) {
|
236
|
-
if (getValue('names', data).length === 0) {
|
237
|
-
setValue('name', rootName, result.details);
|
238
|
-
location_1 = rootName;
|
239
|
-
}
|
240
|
-
else {
|
241
|
-
location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\')), rootName);
|
242
|
-
}
|
243
|
-
}
|
244
|
-
else {
|
245
|
-
location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\')), rootName);
|
246
|
-
}
|
247
|
-
setValue('location', location_1, result.details);
|
248
|
-
}
|
249
|
-
fn(parent, result, event, operation, targetPath);
|
250
|
-
if (!isNOU(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end')) {
|
251
|
-
parent.notify(events.searchTextChange, result);
|
252
|
-
}
|
253
|
-
if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {
|
254
|
-
getValue('onSuccess', beforeSendArgs.ajaxSettings)();
|
255
|
-
}
|
648
|
+
performReadOperation(parent, result, fn, data, event, operation, targetPath, beforeSendArgs);
|
256
649
|
},
|
257
650
|
onFailure: function () {
|
258
651
|
var result = {
|
@@ -270,6 +663,117 @@ parent, data, fn, event, operation, targetPath) {
|
|
270
663
|
}
|
271
664
|
});
|
272
665
|
}
|
666
|
+
/**
|
667
|
+
* Function to get file size.
|
668
|
+
*
|
669
|
+
* @param {number} size - specifies the size.
|
670
|
+
* @returns {string} - returns the size.
|
671
|
+
* @private
|
672
|
+
*/
|
673
|
+
function getSize(size) {
|
674
|
+
var hz;
|
675
|
+
if (size < 1024) {
|
676
|
+
hz = size + ' B';
|
677
|
+
}
|
678
|
+
else if (size < 1024 * 1024) {
|
679
|
+
hz = (size / 1024).toFixed(2) + ' KB';
|
680
|
+
}
|
681
|
+
else if (size < 1024 * 1024 * 1024) {
|
682
|
+
hz = (size / 1024 / 1024).toFixed(2) + ' MB';
|
683
|
+
}
|
684
|
+
else {
|
685
|
+
hz = (size / 1024 / 1024 / 1024).toFixed(2) + ' GB';
|
686
|
+
}
|
687
|
+
return hz;
|
688
|
+
}
|
689
|
+
/**
|
690
|
+
* Function to perform read operation.
|
691
|
+
*
|
692
|
+
* @param {IFileManager} parent - specifies the parent element.
|
693
|
+
* @param {ReadArgs} result - specifies the result.
|
694
|
+
* @param {Function} fn - specifies the function.
|
695
|
+
* @param {Object} data - specifies the data.
|
696
|
+
* @param {string} event - specifies the event.
|
697
|
+
* @param {string} operation - specifies the operation.
|
698
|
+
* @param {string} targetPath - specifies the targetPath.
|
699
|
+
* @param {BeforeSendEventArgs} beforeSendArgs - specifies the eventArgs.
|
700
|
+
* @returns {void}
|
701
|
+
* @private
|
702
|
+
*/
|
703
|
+
function performReadOperation(parent, result, fn, data, event, operation, targetPath, beforeSendArgs) {
|
704
|
+
parent.notify(events.afterRequest, { action: 'success' });
|
705
|
+
var id = parent.expandedId ? parent.expandedId : parent.pathId[parent.pathId.length - 1];
|
706
|
+
if (!isNOU(result.cwd) && (getValue('action', data) === 'read')) {
|
707
|
+
result.cwd.name = (parent.pathId.length === 1) ? (parent.rootAliasName || result.cwd.name) : result.cwd.name;
|
708
|
+
setValue('_fm_id', id, result.cwd);
|
709
|
+
setValue(id, result.cwd, parent.feParent);
|
710
|
+
if (!isNOU(result.files) || result.error.code === '401') {
|
711
|
+
if ((event === 'finalize-end' || event === 'initial-end') && parent.pathNames.length === 0) {
|
712
|
+
var root = getValue(parent.pathId[0], parent.feParent);
|
713
|
+
parent.pathNames[0] = getValue('name', root);
|
714
|
+
parent.hasId = !isNOU(getValue('id', root));
|
715
|
+
}
|
716
|
+
if (event === 'finalize-end') {
|
717
|
+
generatePath(parent);
|
718
|
+
}
|
719
|
+
}
|
720
|
+
}
|
721
|
+
var intl = new Internationalization(parent.locale);
|
722
|
+
if (!isNOU(result.files)) {
|
723
|
+
setDateObject(result.files, intl, getDateFormat(parent));
|
724
|
+
for (var i = 0, len = result.files.length; i < len; i++) {
|
725
|
+
var item = result.files[i];
|
726
|
+
setValue('_fm_iconClass', fileType(item), item);
|
727
|
+
}
|
728
|
+
if (getValue('action', data) === 'read' || isFileSystemData(parent) && getValue('action', data) === 'search') {
|
729
|
+
setNodeId(result, id);
|
730
|
+
setValue(id, result.files, parent.feFiles);
|
731
|
+
}
|
732
|
+
}
|
733
|
+
if (!isNOU(result.details) && !isNOU(parent.rootAliasName)) {
|
734
|
+
var rootName = parent.rootAliasName || getValue('name', result.details);
|
735
|
+
var location_1 = getValue('location', result.details).replace(new RegExp('/', 'g'), '\\');
|
736
|
+
if ((getValue('path', data) === '/') || (parent.hasId && getValue('path', data).match(/[/]/g).length === 1)) {
|
737
|
+
if (getValue('names', data).length === 0) {
|
738
|
+
setValue('name', rootName, result.details);
|
739
|
+
location_1 = rootName;
|
740
|
+
}
|
741
|
+
else {
|
742
|
+
location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\')), rootName);
|
743
|
+
}
|
744
|
+
}
|
745
|
+
else {
|
746
|
+
location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\')), rootName);
|
747
|
+
}
|
748
|
+
setValue('location', location_1, result.details);
|
749
|
+
}
|
750
|
+
fn(parent, result, event, operation, targetPath);
|
751
|
+
if (!isNOU(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end' || event === 'drop-path')) {
|
752
|
+
parent.notify(events.searchTextChange, result);
|
753
|
+
}
|
754
|
+
if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {
|
755
|
+
getValue('onSuccess', beforeSendArgs.ajaxSettings)();
|
756
|
+
}
|
757
|
+
}
|
758
|
+
/**
|
759
|
+
* Function to copy operation.
|
760
|
+
*
|
761
|
+
* @param {IFileManager} parent - specifies the parent element.
|
762
|
+
* @param {Object} data - specifies the data.
|
763
|
+
* @param {string} target - specifies the target.
|
764
|
+
* @param {string} itemName - specifies the item name.
|
765
|
+
* @returns {void}
|
766
|
+
* @private
|
767
|
+
*/
|
768
|
+
function copyFolderItems(parent, data, target, itemName) {
|
769
|
+
var newObject = createNewItem(data, target, itemName, true);
|
770
|
+
parent.fileSystemData.push(newObject);
|
771
|
+
parent.pasteNodes.push(newObject.id);
|
772
|
+
var copiedItems = filterByParent(parent, data.id);
|
773
|
+
for (var i = 0; i < copiedItems.length; i++) {
|
774
|
+
copyFolderItems(parent, copiedItems[i], newObject, null);
|
775
|
+
}
|
776
|
+
}
|
273
777
|
/**
|
274
778
|
* Function for trigger Ajax failure in File Manager.
|
275
779
|
*
|
@@ -283,9 +787,7 @@ parent, data, fn, event, operation, targetPath) {
|
|
283
787
|
* @returns {void}
|
284
788
|
* @private
|
285
789
|
*/
|
286
|
-
function triggerAjaxFailure(
|
287
|
-
// eslint-disable-next-line
|
288
|
-
parent, beforeSendArgs, fn, result, event, operation, targetPath) {
|
790
|
+
function triggerAjaxFailure(parent, beforeSendArgs, fn, result, event, operation, targetPath) {
|
289
791
|
parent.notify(events.afterRequest, { action: 'failure' });
|
290
792
|
fn(parent, result, event, operation, targetPath);
|
291
793
|
if (typeof getValue('onFailure', beforeSendArgs.ajaxSettings) === 'function') {
|
@@ -302,19 +804,28 @@ parent, beforeSendArgs, fn, result, event, operation, targetPath) {
|
|
302
804
|
* @private
|
303
805
|
*/
|
304
806
|
function readSuccess(parent, result, event) {
|
305
|
-
|
306
|
-
|
307
|
-
parent.notify(events.selectionChanged, {});
|
308
|
-
var args = { action: 'read', result: result };
|
309
|
-
parent.trigger('success', args);
|
310
|
-
}
|
311
|
-
else {
|
312
|
-
if (result.error.code === '401') {
|
313
|
-
result.files = [];
|
807
|
+
try {
|
808
|
+
if (!isNOU(result.files)) {
|
314
809
|
parent.notify(event, result);
|
315
810
|
parent.notify(events.selectionChanged, {});
|
811
|
+
var args = { action: 'read', result: result };
|
812
|
+
parent.trigger('success', args);
|
813
|
+
}
|
814
|
+
else {
|
815
|
+
if (!isNOU(result.error) && result.error.code === '401') {
|
816
|
+
result.files = [];
|
817
|
+
parent.notify(event, result);
|
818
|
+
parent.notify(events.selectionChanged, {});
|
819
|
+
}
|
820
|
+
onFailure(parent, result, 'read');
|
821
|
+
parent.setProperties({ path: parent.oldPath }, true);
|
822
|
+
parent.pathNames.pop();
|
316
823
|
}
|
317
|
-
|
824
|
+
}
|
825
|
+
catch (error) {
|
826
|
+
handleCatchError(parent, error, 'read');
|
827
|
+
parent.setProperties({ path: parent.oldPath }, true);
|
828
|
+
parent.pathNames.pop();
|
318
829
|
}
|
319
830
|
if (parent.isDragDrop && parent.isDropEnd) {
|
320
831
|
if (parent.droppedObjects.length !== 0) {
|
@@ -359,8 +870,14 @@ function createSuccess(parent, result, itemName) {
|
|
359
870
|
if (parent.dialogObj && parent.dialogObj.visible) {
|
360
871
|
parent.dialogObj.hide();
|
361
872
|
}
|
362
|
-
parent.createdItem = result.files[0];
|
873
|
+
parent.createdItem = isFileSystemData(parent) ? result.files[result.files.length - 1] : result.files[0];
|
363
874
|
parent.breadcrumbbarModule.searchObj.value = '';
|
875
|
+
var createEventArgs = {
|
876
|
+
folderName: itemName,
|
877
|
+
path: parent.path,
|
878
|
+
parentFolder: parent.itemData
|
879
|
+
};
|
880
|
+
parent.trigger('folderCreate', createEventArgs);
|
364
881
|
var args = { action: 'create', result: result };
|
365
882
|
parent.trigger('success', args);
|
366
883
|
parent.itemData = [getPathObject(parent)];
|
@@ -401,54 +918,73 @@ function createSuccess(parent, result, itemName) {
|
|
401
918
|
*
|
402
919
|
* @param {IFileManager} parent - specifies the parent element.
|
403
920
|
* @param {ReadArgs} result - specifies the result.
|
404
|
-
* @param {string} path - specifies the path
|
405
921
|
* @returns {void}
|
406
922
|
* @private
|
407
923
|
*/
|
408
|
-
function renameSuccess(parent, result
|
409
|
-
|
410
|
-
if (!isNOU(
|
411
|
-
parent.dialogObj
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
parent.
|
423
|
-
if (parent.
|
424
|
-
|
924
|
+
function renameSuccess(parent, result) {
|
925
|
+
try {
|
926
|
+
if (!isNOU(result.files)) {
|
927
|
+
if (!isNOU(parent.dialogObj)) {
|
928
|
+
parent.dialogObj.hide();
|
929
|
+
}
|
930
|
+
var args = { action: 'rename', result: result };
|
931
|
+
parent.trigger('success', args);
|
932
|
+
parent.renamedItem = Array.isArray(result.files) ? result.files[0] : result.files;
|
933
|
+
var renameEventArgs = {
|
934
|
+
newName: parent.renamedItem.name,
|
935
|
+
itemData: parent.renamedItem,
|
936
|
+
path: parent.path
|
937
|
+
};
|
938
|
+
parent.trigger('rename', renameEventArgs);
|
939
|
+
if (parent.activeModule === 'navigationpane') {
|
940
|
+
parent.pathId.pop();
|
941
|
+
parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];
|
942
|
+
read(parent, events.renameEndParent, getValue('filterPath', parent.renamedItem).replace(/\\/g, '/'));
|
943
|
+
parent.itemData[0] = parent.renamedItem;
|
944
|
+
if (getValue('filterPath', parent.renamedItem) === getValue('filterPath', parent.itemData[0]) && parent.pathNames.length > 1) {
|
945
|
+
parent.pathNames[parent.pathNames.length - 1] = parent.renameText;
|
946
|
+
}
|
947
|
+
read(parent, events.pathChanged, parent.path === '/' ? parent.path : getValue('filterPath', parent.renamedItem).replace(/\\/g, '/') + parent.renamedItem.name + '/');
|
948
|
+
parent.renamedItem = null;
|
425
949
|
}
|
426
950
|
else {
|
427
|
-
|
428
|
-
|
951
|
+
parent.itemData = [getPathObject(parent)];
|
952
|
+
if (parent.breadcrumbbarModule.searchObj.value !== '') {
|
953
|
+
Search(parent, events.renameEnd, parent.path, parent.searchWord, parent.showHiddenItems, !parent.searchSettings.ignoreCase);
|
429
954
|
}
|
430
955
|
else {
|
431
|
-
|
956
|
+
if (parent.isFiltered) {
|
957
|
+
filter(parent, events.renameEnd);
|
958
|
+
}
|
959
|
+
else {
|
960
|
+
read(parent, events.renameEnd, parent.path);
|
961
|
+
}
|
432
962
|
}
|
433
963
|
}
|
434
964
|
}
|
435
|
-
}
|
436
|
-
else {
|
437
|
-
if (result.error.code === '400' && parent.dialogObj && parent.dialogObj.visible) {
|
438
|
-
var ele = select('#rename', parent.dialogObj.element);
|
439
|
-
var error = getLocaleText(parent, 'Validation-Rename-Exists').replace('{0}', '"' + parent.currentItemText + '"');
|
440
|
-
error = error.replace('{1}', '"' + ele.value + '"');
|
441
|
-
ele.parentElement.nextElementSibling.innerHTML = error;
|
442
|
-
var args = { action: 'rename', error: result.error };
|
443
|
-
parent.trigger('failure', args);
|
444
|
-
}
|
445
965
|
else {
|
446
|
-
if (
|
447
|
-
parent.dialogObj.
|
966
|
+
if (result.error.code === '400' && parent.dialogObj && parent.dialogObj.visible) {
|
967
|
+
var ele = select('#rename', parent.dialogObj.element);
|
968
|
+
var error = getLocaleText(parent, 'Validation-Rename-Exists').replace('{0}', '"' + parent.currentItemText + '"');
|
969
|
+
error = error.replace('{1}', '"' + ele.value + '"');
|
970
|
+
ele.parentElement.nextElementSibling.innerHTML = error;
|
971
|
+
var args = { action: 'rename', error: result.error };
|
972
|
+
parent.trigger('failure', args);
|
973
|
+
}
|
974
|
+
else {
|
975
|
+
if (!isNOU(parent.dialogObj)) {
|
976
|
+
parent.dialogObj.hide();
|
977
|
+
}
|
978
|
+
onFailure(parent, result, 'rename');
|
448
979
|
}
|
449
|
-
onFailure(parent, result, 'rename');
|
450
980
|
}
|
451
981
|
}
|
982
|
+
catch (error) {
|
983
|
+
if (!isNOU(parent.dialogObj)) {
|
984
|
+
parent.dialogObj.hide();
|
985
|
+
}
|
986
|
+
handleCatchError(parent, error, 'rename');
|
987
|
+
}
|
452
988
|
}
|
453
989
|
/* istanbul ignore next */
|
454
990
|
/**
|
@@ -462,28 +998,41 @@ function renameSuccess(parent, result, path) {
|
|
462
998
|
* @private
|
463
999
|
*/
|
464
1000
|
function pasteSuccess(parent, result, path, operation) {
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
1001
|
+
try {
|
1002
|
+
var moveorcopyEventArgs = {
|
1003
|
+
itemData: result.files,
|
1004
|
+
isCopy: operation === 'copy' ? true : false,
|
1005
|
+
path: path,
|
1006
|
+
targetData: parent.itemData[0],
|
1007
|
+
targetPath: parent.path
|
1008
|
+
};
|
1009
|
+
parent.trigger('move', moveorcopyEventArgs);
|
1010
|
+
if (result.error && result.error.fileExists) {
|
1011
|
+
parent.fileLength = 0;
|
1012
|
+
if (!isNOU(result.files)) {
|
1013
|
+
parent.isPasteError = true;
|
1014
|
+
doPasteUpdate(parent, operation, result);
|
1015
|
+
}
|
1016
|
+
createExtDialog(parent, 'DuplicateItems', result.error.fileExists);
|
1017
|
+
if (result.error.code === '404') {
|
1018
|
+
createDialog(parent, 'Error', result);
|
1019
|
+
}
|
1020
|
+
}
|
1021
|
+
else if (!result.error && !isNOU(result.files)) {
|
1022
|
+
parent.isPasteError = false;
|
469
1023
|
doPasteUpdate(parent, operation, result);
|
470
1024
|
}
|
471
|
-
|
472
|
-
|
1025
|
+
else if (result.error && !isNOU(result.files)) {
|
1026
|
+
parent.isPasteError = true;
|
1027
|
+
doPasteUpdate(parent, operation, result);
|
473
1028
|
createDialog(parent, 'Error', result);
|
474
1029
|
}
|
1030
|
+
else {
|
1031
|
+
onFailure(parent, result, operation);
|
1032
|
+
}
|
475
1033
|
}
|
476
|
-
|
477
|
-
parent
|
478
|
-
doPasteUpdate(parent, operation, result);
|
479
|
-
}
|
480
|
-
else if (result.error && !isNOU(result.files)) {
|
481
|
-
parent.isPasteError = true;
|
482
|
-
doPasteUpdate(parent, operation, result);
|
483
|
-
createDialog(parent, 'Error', result);
|
484
|
-
}
|
485
|
-
else {
|
486
|
-
onFailure(parent, result, operation);
|
1034
|
+
catch (error) {
|
1035
|
+
handleCatchError(parent, error, operation);
|
487
1036
|
}
|
488
1037
|
}
|
489
1038
|
/**
|
@@ -496,20 +1045,30 @@ function pasteSuccess(parent, result, path, operation) {
|
|
496
1045
|
* @private
|
497
1046
|
*/
|
498
1047
|
function deleteSuccess(parent, result, path) {
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
1048
|
+
try {
|
1049
|
+
var deleteEventArgs = {
|
1050
|
+
itemData: result.files,
|
1051
|
+
path: path
|
1052
|
+
};
|
1053
|
+
parent.trigger('delete', deleteEventArgs);
|
1054
|
+
if (!isNOU(result.files)) {
|
1055
|
+
parent.setProperties({ path: path }, true);
|
1056
|
+
parent.itemData = [getPathObject(parent)];
|
1057
|
+
read(parent, events.deleteEnd, parent.path);
|
1058
|
+
if (result.error) {
|
1059
|
+
onFailure(parent, result, 'delete');
|
1060
|
+
}
|
1061
|
+
else {
|
1062
|
+
var args = { action: 'delete', result: result };
|
1063
|
+
parent.trigger('success', args);
|
1064
|
+
}
|
505
1065
|
}
|
506
1066
|
else {
|
507
|
-
|
508
|
-
parent.trigger('success', args);
|
1067
|
+
onFailure(parent, result, 'delete');
|
509
1068
|
}
|
510
1069
|
}
|
511
|
-
|
512
|
-
|
1070
|
+
catch (error) {
|
1071
|
+
handleCatchError(parent, error, 'delete');
|
513
1072
|
}
|
514
1073
|
}
|
515
1074
|
/**
|
@@ -525,13 +1084,18 @@ function deleteSuccess(parent, result, path) {
|
|
525
1084
|
function detailsSuccess(
|
526
1085
|
// eslint:disable-next-line
|
527
1086
|
parent, result, path, operation) {
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
1087
|
+
try {
|
1088
|
+
if (!isNOU(result.details)) {
|
1089
|
+
createDialog(parent, operation, null, result.details);
|
1090
|
+
var args = { action: 'details', result: result };
|
1091
|
+
parent.trigger('success', args);
|
1092
|
+
}
|
1093
|
+
else {
|
1094
|
+
onFailure(parent, result, 'details');
|
1095
|
+
}
|
532
1096
|
}
|
533
|
-
|
534
|
-
|
1097
|
+
catch (error) {
|
1098
|
+
handleCatchError(parent, error, 'details');
|
535
1099
|
}
|
536
1100
|
}
|
537
1101
|
/**
|
@@ -560,10 +1124,7 @@ function onFailure(parent, result, action) {
|
|
560
1124
|
* @returns {void}
|
561
1125
|
* @private
|
562
1126
|
*/
|
563
|
-
export function Search(
|
564
|
-
// eslint:disable-next-line
|
565
|
-
parent, event, path, searchString, showHiddenItems, caseSensitive) {
|
566
|
-
// eslint-disable-next-line
|
1127
|
+
export function Search(parent, event, path, searchString, showHiddenItems, caseSensitive) {
|
567
1128
|
var data = {
|
568
1129
|
action: 'search', path: path, searchString: searchString, showHiddenItems: showHiddenItems, caseSensitive: caseSensitive,
|
569
1130
|
data: parent.itemData
|
@@ -581,13 +1142,18 @@ parent, event, path, searchString, showHiddenItems, caseSensitive) {
|
|
581
1142
|
* @private
|
582
1143
|
*/
|
583
1144
|
function searchSuccess(parent, result, event) {
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
1145
|
+
try {
|
1146
|
+
if (!isNOU(result.files)) {
|
1147
|
+
parent.notify(event, result);
|
1148
|
+
var args = { action: 'search', result: result };
|
1149
|
+
parent.trigger('success', args);
|
1150
|
+
}
|
1151
|
+
else {
|
1152
|
+
onFailure(parent, result, 'search');
|
1153
|
+
}
|
588
1154
|
}
|
589
|
-
|
590
|
-
|
1155
|
+
catch (error) {
|
1156
|
+
handleCatchError(parent, error, 'search');
|
591
1157
|
}
|
592
1158
|
}
|
593
1159
|
/* istanbul ignore next */
|
@@ -602,23 +1168,102 @@ function searchSuccess(parent, result, event) {
|
|
602
1168
|
*/
|
603
1169
|
export function Download(parent, path, items) {
|
604
1170
|
var downloadUrl = parent.ajaxSettings.downloadUrl ? parent.ajaxSettings.downloadUrl : parent.ajaxSettings.url;
|
605
|
-
// eslint-disable-next-line
|
606
1171
|
var data = { 'action': 'download', 'path': path, 'names': items, 'data': parent.itemData };
|
607
|
-
var
|
1172
|
+
var ajaxSettings = {
|
1173
|
+
url: downloadUrl,
|
1174
|
+
type: 'POST',
|
1175
|
+
contentType: 'application/json',
|
1176
|
+
responseType: 'blob',
|
1177
|
+
data: JSON.stringify(data),
|
1178
|
+
onSuccess: null,
|
1179
|
+
onFailure: null,
|
1180
|
+
beforeSend: null
|
1181
|
+
};
|
1182
|
+
var eventArgs = { data: data, cancel: false, useFormPost: true, ajaxSettings: ajaxSettings };
|
608
1183
|
parent.trigger('beforeDownload', eventArgs, function (downloadArgs) {
|
609
1184
|
if (!downloadArgs.cancel) {
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
1185
|
+
if (downloadArgs.useFormPost) {
|
1186
|
+
var form = createElement('form', {
|
1187
|
+
id: parent.element.id + '_downloadForm',
|
1188
|
+
attrs: { action: downloadUrl, method: 'post', name: 'downloadForm', 'download': '' }
|
1189
|
+
});
|
1190
|
+
var input = createElement('input', {
|
1191
|
+
id: parent.element.id + '_hiddenForm',
|
1192
|
+
attrs: { name: 'downloadInput', value: JSON.stringify(downloadArgs.data), type: 'hidden' }
|
1193
|
+
});
|
1194
|
+
form.appendChild(input);
|
1195
|
+
parent.element.appendChild(form);
|
1196
|
+
document.forms.namedItem('downloadForm').submit();
|
1197
|
+
parent.element.removeChild(form);
|
1198
|
+
}
|
1199
|
+
else {
|
1200
|
+
try {
|
1201
|
+
var contentDisposition_1;
|
1202
|
+
var fileName_1;
|
1203
|
+
var fetch_1 = new Fetch({
|
1204
|
+
url: getValue('url', downloadArgs.ajaxSettings),
|
1205
|
+
type: getValue('type', downloadArgs.ajaxSettings),
|
1206
|
+
contentType: getValue('contentType', downloadArgs.ajaxSettings),
|
1207
|
+
responseType: getValue('responseType', downloadArgs.ajaxSettings),
|
1208
|
+
beforeSend: getValue('beforeSend', downloadArgs.ajaxSettings),
|
1209
|
+
onLoad: function (e) {
|
1210
|
+
contentDisposition_1 = e.headers.get('Content-Disposition');
|
1211
|
+
if (contentDisposition_1) {
|
1212
|
+
var filenameMatch = contentDisposition_1.match(/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/);
|
1213
|
+
var extractedFilename = filenameMatch && filenameMatch[1];
|
1214
|
+
fileName_1 = extractedFilename ? extractedFilename.replace(/['"]/g, '') : fileName_1;
|
1215
|
+
}
|
1216
|
+
else {
|
1217
|
+
fileName_1 = parent.itemData.length > 1 ? 'files.zip' : getValue('isFile', parent.itemData[0]) ? getValue('name', parent.itemData[0]) : getValue('name', parent.itemData[0]) + '.zip';
|
1218
|
+
}
|
1219
|
+
},
|
1220
|
+
onSuccess: function (e) {
|
1221
|
+
parent.trigger('success', downloadArgs);
|
1222
|
+
var blob = e;
|
1223
|
+
var blobUrl = URL.createObjectURL(blob);
|
1224
|
+
var link = document.createElement('a');
|
1225
|
+
link.href = blobUrl;
|
1226
|
+
link.download = fileName_1;
|
1227
|
+
document.body.appendChild(link);
|
1228
|
+
link.click();
|
1229
|
+
document.body.removeChild(link);
|
1230
|
+
},
|
1231
|
+
onFailure: function (e) {
|
1232
|
+
var result = {
|
1233
|
+
error: {
|
1234
|
+
code: e.status.toString(),
|
1235
|
+
message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.downloadUrl
|
1236
|
+
}
|
1237
|
+
};
|
1238
|
+
createDialog(parent, 'Error', result);
|
1239
|
+
parent.trigger('failure', downloadArgs);
|
1240
|
+
}
|
1241
|
+
});
|
1242
|
+
fetch_1.send(JSON.stringify(downloadArgs.data));
|
1243
|
+
}
|
1244
|
+
catch (error) {
|
1245
|
+
handleCatchError(parent, error, 'download');
|
1246
|
+
}
|
1247
|
+
}
|
622
1248
|
}
|
623
1249
|
});
|
624
1250
|
}
|
1251
|
+
/**
|
1252
|
+
* Function for on catch handler in File Manager.
|
1253
|
+
*
|
1254
|
+
* @param {IFileManager} parent - specifies the parent element.
|
1255
|
+
* @param {any} error - specifies the catch error.
|
1256
|
+
* @param {string} action - specifies the action.
|
1257
|
+
* @returns {void}
|
1258
|
+
* @private
|
1259
|
+
*/
|
1260
|
+
function handleCatchError(parent, error, action) {
|
1261
|
+
var errorResult = {
|
1262
|
+
files: null,
|
1263
|
+
error: {
|
1264
|
+
message: error.message,
|
1265
|
+
fileExists: null
|
1266
|
+
}
|
1267
|
+
};
|
1268
|
+
onFailure(parent, errorResult, action);
|
1269
|
+
}
|