@syncfusion/ej2-filemanager 20.1.52-10460 → 20.1.52-10461
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/CHANGELOG.md +412 -410
- package/README.md +69 -69
- 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 +57 -54
- package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
- package/dist/es6/ej2-filemanager.es5.js +174 -171
- 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/dist/ts/file-manager/actions/breadcrumb-bar.ts +427 -0
- package/dist/ts/file-manager/actions/toolbar.ts +498 -0
- package/dist/ts/file-manager/base/classes.ts +225 -0
- package/dist/ts/file-manager/base/constant.ts +137 -0
- package/dist/ts/file-manager/base/file-manager.ts +1659 -0
- package/dist/ts/file-manager/base/interface.ts +652 -0
- package/dist/ts/file-manager/common/operations.ts +614 -0
- package/dist/ts/file-manager/common/utility.ts +1503 -0
- package/dist/ts/file-manager/layout/details-view.ts +1837 -0
- package/dist/ts/file-manager/layout/large-icons-view.ts +1587 -0
- package/dist/ts/file-manager/layout/navigation-pane.ts +879 -0
- package/dist/ts/file-manager/models/ajax-settings.ts +39 -0
- package/dist/ts/file-manager/models/column.ts +197 -0
- package/dist/ts/file-manager/models/contextMenu-settings.ts +44 -0
- package/dist/ts/file-manager/models/default-locale.ts +102 -0
- package/dist/ts/file-manager/models/details-view-settings.ts +48 -0
- package/dist/ts/file-manager/models/navigation-pane-settings.ts +42 -0
- package/dist/ts/file-manager/models/search-settings.ts +48 -0
- package/dist/ts/file-manager/models/toolbar-settings.ts +25 -0
- package/dist/ts/file-manager/models/upload-settings.ts +51 -0
- package/dist/ts/file-manager/pop-up/context-menu.ts +614 -0
- package/dist/ts/file-manager/pop-up/dialog.ts +996 -0
- package/helpers/e2e/filemanagerHelper.js +183 -166
- package/license +9 -9
- package/package.json +72 -72
- package/src/file-manager/base/file-manager-model.d.ts +329 -329
- package/src/file-manager/base/file-manager.js +19 -19
- package/src/file-manager/models/ajax-settings-model.d.ts +21 -21
- package/src/file-manager/models/ajax-settings.js +19 -19
- package/src/file-manager/models/column-model.d.ts +98 -98
- package/src/file-manager/models/column.js +19 -19
- package/src/file-manager/models/contextMenu-settings-model.d.ts +21 -21
- package/src/file-manager/models/contextMenu-settings.js +19 -19
- package/src/file-manager/models/details-view-settings-model.d.ts +19 -19
- package/src/file-manager/models/details-view-settings.js +19 -19
- package/src/file-manager/models/navigation-pane-settings-model.d.ts +25 -25
- package/src/file-manager/models/navigation-pane-settings.js +19 -19
- package/src/file-manager/models/search-settings-model.d.ts +26 -26
- package/src/file-manager/models/search-settings.js +19 -19
- package/src/file-manager/models/toolbar-settings-model.d.ts +11 -11
- package/src/file-manager/models/toolbar-settings.js +19 -19
- package/src/file-manager/models/upload-settings-model.d.ts +31 -31
- package/src/file-manager/models/upload-settings.js +19 -19
- package/src/file-manager/pop-up/context-menu.js +3 -0
- package/styles/compatibility/bootstrap.css +1 -0
- package/styles/compatibility/bootstrap.scss +12 -0
- package/styles/compatibility/bootstrap4.css +1 -0
- package/styles/compatibility/bootstrap4.scss +12 -0
- package/styles/compatibility/fabric.css +1 -0
- package/styles/compatibility/fabric.scss +12 -0
- package/styles/compatibility/highcontrast.css +1 -0
- package/styles/compatibility/highcontrast.scss +12 -0
- package/styles/compatibility/material.css +1 -0
- package/styles/compatibility/material.scss +12 -0
- package/styles/file-manager/_all.scss +2 -2
- package/styles/file-manager/_bds-definition.scss +236 -0
- package/styles/file-manager/_bigger.scss +759 -0
- package/styles/file-manager/_bootstrap-dark-definition.scss +244 -240
- package/styles/file-manager/_bootstrap-definition.scss +245 -241
- package/styles/file-manager/_bootstrap4-definition.scss +246 -242
- package/styles/file-manager/_bootstrap5-definition.scss +242 -237
- package/styles/file-manager/_bootstrap5.3-definition.scss +242 -0
- package/styles/file-manager/_fabric-dark-definition.scss +242 -238
- package/styles/file-manager/_fabric-definition.scss +244 -240
- package/styles/file-manager/_fluent-definition.scss +249 -246
- 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 +244 -240
- package/styles/file-manager/_highcontrast-light-definition.scss +244 -240
- package/styles/file-manager/_layout.scss +1252 -1815
- package/styles/file-manager/_material-dark-definition.scss +245 -240
- package/styles/file-manager/_material-definition.scss +245 -240
- package/styles/file-manager/_material3-definition.scss +235 -0
- package/styles/file-manager/_tailwind-definition.scss +236 -232
- package/styles/file-manager/_theme.scss +418 -397
- package/styles/file-manager/icons/_bds.scss +235 -0
- package/styles/file-manager/icons/_bootstrap-dark.scss +235 -235
- package/styles/file-manager/icons/_bootstrap.scss +235 -236
- package/styles/file-manager/icons/_bootstrap4.scss +235 -236
- package/styles/file-manager/icons/_bootstrap5.3.scss +235 -0
- package/styles/file-manager/icons/_bootstrap5.scss +235 -235
- package/styles/file-manager/icons/_fabric-dark.scss +229 -230
- package/styles/file-manager/icons/_fabric.scss +229 -230
- package/styles/file-manager/icons/_fluent.scss +235 -235
- package/styles/file-manager/icons/_fluent2.scss +235 -0
- package/styles/file-manager/icons/_fusionnew.scss +235 -0
- package/styles/file-manager/icons/_highcontrast-light.scss +235 -235
- package/styles/file-manager/icons/_highcontrast.scss +229 -229
- package/styles/file-manager/icons/_material-dark.scss +235 -235
- package/styles/file-manager/icons/_material.scss +235 -235
- package/styles/file-manager/icons/_material3.scss +235 -0
- package/styles/file-manager/icons/_tailwind.scss +235 -235
- package/.eslintrc.json +0 -244
- package/styles/bootstrap-dark.css +0 -1920
- package/styles/bootstrap-dark.scss +0 -1
- package/styles/bootstrap.css +0 -1899
- package/styles/bootstrap.scss +0 -1
- package/styles/bootstrap4.css +0 -1935
- package/styles/bootstrap4.scss +0 -1
- package/styles/bootstrap5-dark.css +0 -1982
- package/styles/bootstrap5-dark.scss +0 -1
- package/styles/bootstrap5.css +0 -1982
- package/styles/bootstrap5.scss +0 -1
- package/styles/fabric-dark.css +0 -1891
- package/styles/fabric-dark.scss +0 -1
- package/styles/fabric.css +0 -1891
- package/styles/fabric.scss +0 -1
- package/styles/file-manager/_bootstrap5-dark-definition.scss +0 -1
- package/styles/file-manager/_fluent-dark-definition.scss +0 -1
- package/styles/file-manager/_tailwind-dark-definition.scss +0 -1
- package/styles/file-manager/bootstrap-dark.css +0 -1920
- package/styles/file-manager/bootstrap-dark.scss +0 -16
- package/styles/file-manager/bootstrap.css +0 -1899
- package/styles/file-manager/bootstrap.scss +0 -16
- package/styles/file-manager/bootstrap4.css +0 -1935
- package/styles/file-manager/bootstrap4.scss +0 -16
- package/styles/file-manager/bootstrap5-dark.css +0 -1982
- package/styles/file-manager/bootstrap5-dark.scss +0 -16
- package/styles/file-manager/bootstrap5.css +0 -1982
- package/styles/file-manager/bootstrap5.scss +0 -16
- package/styles/file-manager/fabric-dark.css +0 -1891
- package/styles/file-manager/fabric-dark.scss +0 -16
- package/styles/file-manager/fabric.css +0 -1891
- package/styles/file-manager/fabric.scss +0 -16
- package/styles/file-manager/fluent-dark.css +0 -1901
- package/styles/file-manager/fluent-dark.scss +0 -16
- package/styles/file-manager/fluent.css +0 -1900
- package/styles/file-manager/fluent.scss +0 -16
- package/styles/file-manager/highcontrast-light.css +0 -1897
- package/styles/file-manager/highcontrast-light.scss +0 -16
- package/styles/file-manager/highcontrast.css +0 -1897
- package/styles/file-manager/highcontrast.scss +0 -16
- package/styles/file-manager/icons/_bootstrap5-dark.scss +0 -1
- package/styles/file-manager/icons/_fluent-dark.scss +0 -1
- package/styles/file-manager/icons/_tailwind-dark.scss +0 -1
- package/styles/file-manager/material-dark.css +0 -1945
- package/styles/file-manager/material-dark.scss +0 -16
- package/styles/file-manager/material.css +0 -1932
- package/styles/file-manager/material.scss +0 -16
- package/styles/file-manager/tailwind-dark.css +0 -1969
- package/styles/file-manager/tailwind-dark.scss +0 -16
- package/styles/file-manager/tailwind.css +0 -1969
- package/styles/file-manager/tailwind.scss +0 -16
- package/styles/fluent-dark.css +0 -1901
- package/styles/fluent-dark.scss +0 -1
- package/styles/fluent.css +0 -1900
- package/styles/fluent.scss +0 -1
- package/styles/highcontrast-light.css +0 -1897
- package/styles/highcontrast-light.scss +0 -1
- package/styles/highcontrast.css +0 -1897
- package/styles/highcontrast.scss +0 -1
- package/styles/material-dark.css +0 -1945
- package/styles/material-dark.scss +0 -1
- package/styles/material.css +0 -1932
- package/styles/material.scss +0 -1
- package/styles/tailwind-dark.css +0 -1969
- package/styles/tailwind-dark.scss +0 -1
- package/styles/tailwind.css +0 -1969
- package/styles/tailwind.scss +0 -1
- package/tslint.json +0 -111
@@ -0,0 +1,614 @@
|
|
1
|
+
import { Ajax, createElement, select, extend } from '@syncfusion/ej2-base';
|
2
|
+
import { isNullOrUndefined as isNOU, setValue, getValue } from '@syncfusion/ej2-base';
|
3
|
+
import { IFileManager, ReadArgs, BeforeSendEventArgs, BeforeDownloadEventArgs } from '../base/interface';
|
4
|
+
import * as events from '../base/constant';
|
5
|
+
import { createDialog, createExtDialog } from '../pop-up/dialog';
|
6
|
+
import { FileDetails, FileDragEventArgs, FailureEventArgs, SuccessEventArgs } from '../../index';
|
7
|
+
import { fileType, setNodeId, getLocaleText, setDateObject, doPasteUpdate, getParentPath, getPathObject } from '../common/utility';
|
8
|
+
import { generatePath } from '../common/utility';
|
9
|
+
|
10
|
+
/**
|
11
|
+
* Function to read the content from given path in File Manager.
|
12
|
+
*
|
13
|
+
* @param {IFileManager} parent - specifies the parent element.
|
14
|
+
* @param {string} event - specifies the event.
|
15
|
+
* @param {string} path - specifies the path.
|
16
|
+
* @returns {void}
|
17
|
+
* @private
|
18
|
+
*/
|
19
|
+
export function read(parent: IFileManager, event: string, path: string): void {
|
20
|
+
// eslint-disable-next-line
|
21
|
+
const itemData: Object[] = parent.itemData;
|
22
|
+
for (let i: number = 0; i < itemData.length; i++) {
|
23
|
+
if (isNOU(getValue('hasChild', itemData[i]))) { setValue('hasChild', false, itemData[i]); }
|
24
|
+
}
|
25
|
+
// eslint-disable-next-line
|
26
|
+
const data: Object = { action: 'read', path: path, showHiddenItems: parent.showHiddenItems, data: itemData };
|
27
|
+
createAjax(parent, data, readSuccess, event);
|
28
|
+
}
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Function to create new folder in File Manager.
|
32
|
+
*
|
33
|
+
* @param {IFileManager} parent - specifies the parent element.
|
34
|
+
* @param {string} itemName - specifies the item name.
|
35
|
+
* @returns {void}
|
36
|
+
* @private
|
37
|
+
*/
|
38
|
+
export function createFolder(parent: IFileManager, itemName: string): void {
|
39
|
+
// eslint-disable-next-line
|
40
|
+
const data: Object = { action: 'create', path: parent.path, name: itemName, data: parent.itemData };
|
41
|
+
createAjax(parent, data, createSuccess, itemName);
|
42
|
+
}
|
43
|
+
|
44
|
+
/**
|
45
|
+
* Function to filter the files in File Manager.
|
46
|
+
*
|
47
|
+
* @param {IFileManager} parent - specifies the parent element.
|
48
|
+
* @param {string} event - specifies the event.
|
49
|
+
* @returns {void}
|
50
|
+
* @private
|
51
|
+
*/
|
52
|
+
export function filter(parent: IFileManager, event: string): void {
|
53
|
+
// eslint-disable-next-line
|
54
|
+
const data: Object = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };
|
55
|
+
// eslint-disable-next-line
|
56
|
+
let filterData: Object;
|
57
|
+
// eslint-disable-next-line
|
58
|
+
const filterDataVal: Object = parent.filterData ? extend(filterData, data, parent.filterData) : data;
|
59
|
+
createAjax(parent, filterDataVal, filterSuccess, event, getValue('action', filterDataVal));
|
60
|
+
}
|
61
|
+
|
62
|
+
/**
|
63
|
+
* Function to rename the folder/file in File Manager.
|
64
|
+
*
|
65
|
+
* @param {IFileManager} parent - specifies the parent element.
|
66
|
+
* @param {string} path - specifies the path.
|
67
|
+
* @param {string} itemNewName - specifies the item's new name.
|
68
|
+
* @returns {void}
|
69
|
+
* @private
|
70
|
+
*/
|
71
|
+
export function rename(parent: IFileManager, path: string, itemNewName: string): void {
|
72
|
+
let name: string;
|
73
|
+
let newName: string;
|
74
|
+
if (parent.breadcrumbbarModule.searchObj.element.value === '' && !parent.isFiltered) {
|
75
|
+
name = parent.currentItemText;
|
76
|
+
newName = itemNewName;
|
77
|
+
} else {
|
78
|
+
let fPath: string = parent.filterPath;
|
79
|
+
if (parent.hasId) {
|
80
|
+
name = parent.currentItemText;
|
81
|
+
newName = itemNewName;
|
82
|
+
} else {
|
83
|
+
fPath = fPath.replace(/\\/g, '/');
|
84
|
+
name = fPath.replace(path, '') + parent.currentItemText;
|
85
|
+
newName = fPath.replace(path, '') + itemNewName;
|
86
|
+
}
|
87
|
+
}
|
88
|
+
// eslint-disable-next-line
|
89
|
+
const data: Object = {
|
90
|
+
action: 'rename', path: path, name: name, newName: newName, data: parent.itemData
|
91
|
+
};
|
92
|
+
createAjax(parent, data, renameSuccess, path);
|
93
|
+
}
|
94
|
+
|
95
|
+
|
96
|
+
/**
|
97
|
+
* Function to paste file's and folder's in File Manager.
|
98
|
+
*
|
99
|
+
* @param {IFileManager} parent - specifies the parent element.
|
100
|
+
* @param {string} path - specifies the path.
|
101
|
+
* @param {string[]} names - specifies the names.
|
102
|
+
* @param {string} targetPath - specifies the target path.
|
103
|
+
* @param {string} pasteOperation - specifies the paste operation.
|
104
|
+
* @param {string[]} renameItems - specifies the rename items.
|
105
|
+
* @param {Object[]} actionRecords - specifies the action records.
|
106
|
+
* @returns {void}
|
107
|
+
* @private
|
108
|
+
*/
|
109
|
+
export function paste(
|
110
|
+
parent: IFileManager, path: string, names: string[], targetPath: string, pasteOperation: string,
|
111
|
+
// eslint-disable-next-line
|
112
|
+
renameItems?: string[], actionRecords?: Object[]): void {
|
113
|
+
// eslint-disable-next-line
|
114
|
+
const data: Object = {
|
115
|
+
action: pasteOperation, path: path, targetData: parent.itemData[0],
|
116
|
+
targetPath: targetPath, names: names, renameFiles: renameItems, data: actionRecords
|
117
|
+
};
|
118
|
+
parent.destinationPath = targetPath;
|
119
|
+
createAjax(parent, data, pasteSuccess, path, pasteOperation, targetPath);
|
120
|
+
}
|
121
|
+
|
122
|
+
/**
|
123
|
+
* Function to delete file's and folder's in File Manager.
|
124
|
+
*
|
125
|
+
* @param {IFileManager} parent - specifies the parent element.
|
126
|
+
* @param {string[]} items - specifies the items.
|
127
|
+
* @param {string} path - specifies the path.
|
128
|
+
* @param {string} operation - specifies the operation.
|
129
|
+
* @returns {void}
|
130
|
+
* @private
|
131
|
+
*/
|
132
|
+
export function Delete(parent: IFileManager, items: string[], path: string, operation: string): void {
|
133
|
+
// eslint-disable-next-line
|
134
|
+
const data: Object = { action: operation, path: path, names: items, data: parent.itemData };
|
135
|
+
createAjax(parent, data, deleteSuccess, path);
|
136
|
+
}
|
137
|
+
|
138
|
+
/* istanbul ignore next */
|
139
|
+
/**
|
140
|
+
* Function to get details of file's and folder's in File Manager.
|
141
|
+
*
|
142
|
+
* @param {IFileManager} parent - specifies the parent element.
|
143
|
+
* @param {string[]} names - specifies the names.
|
144
|
+
* @param {string} path - specifies the path.
|
145
|
+
* @param {string} operation - specifies the operation data.
|
146
|
+
* @returns {void}
|
147
|
+
* @private
|
148
|
+
*/
|
149
|
+
export function GetDetails(parent: IFileManager, names: string[], path: string, operation: string): void {
|
150
|
+
// eslint-disable-next-line
|
151
|
+
const data: Object = { action: operation, path: path, names: names, data: parent.itemData };
|
152
|
+
createAjax(parent, data, detailsSuccess, path, operation);
|
153
|
+
}
|
154
|
+
/**
|
155
|
+
* Function for createAjax in File Manager.
|
156
|
+
*
|
157
|
+
* @param {IFileManager} parent - specifies the parent element.
|
158
|
+
* @param {Object} data - specifies the data.
|
159
|
+
* @param {Function} fn - specifies the fn.
|
160
|
+
* @param {string} event - specifies the event.
|
161
|
+
* @param {string} operation - specifies the operation.
|
162
|
+
* @param {string} targetPath - specifies the target path.
|
163
|
+
* @returns {void}
|
164
|
+
* @private
|
165
|
+
*/
|
166
|
+
function createAjax(
|
167
|
+
// eslint-disable-next-line
|
168
|
+
parent: IFileManager, data: Object, fn: Function, event?: string,
|
169
|
+
operation?: string, targetPath?: string): void {
|
170
|
+
// eslint-disable-next-line
|
171
|
+
const ajaxSettings: Object = {
|
172
|
+
url: parent.ajaxSettings.url,
|
173
|
+
type: 'POST',
|
174
|
+
mode: true,
|
175
|
+
dataType: 'json',
|
176
|
+
contentType: 'application/json',
|
177
|
+
data: JSON.stringify(data),
|
178
|
+
onSuccess: null,
|
179
|
+
onFailure: null,
|
180
|
+
beforeSend: null
|
181
|
+
};
|
182
|
+
const eventArgs: BeforeSendEventArgs = { action: getValue('action', data), ajaxSettings: ajaxSettings, cancel: false };
|
183
|
+
parent.trigger('beforeSend', eventArgs, (beforeSendArgs: BeforeSendEventArgs) => {
|
184
|
+
if (!beforeSendArgs.cancel) {
|
185
|
+
parent.notify(events.beforeRequest, {});
|
186
|
+
const ajax: Ajax = new Ajax({
|
187
|
+
url: getValue('url', beforeSendArgs.ajaxSettings),
|
188
|
+
type: getValue('type', beforeSendArgs.ajaxSettings),
|
189
|
+
mode: getValue('mode', beforeSendArgs.ajaxSettings),
|
190
|
+
dataType: getValue('dataType', beforeSendArgs.ajaxSettings),
|
191
|
+
contentType: getValue('contentType', beforeSendArgs.ajaxSettings),
|
192
|
+
data: getValue('data', beforeSendArgs.ajaxSettings),
|
193
|
+
beforeSend: getValue('beforeSend', beforeSendArgs.ajaxSettings),
|
194
|
+
onSuccess: (result: ReadArgs) => {
|
195
|
+
if (isNOU(result)) {
|
196
|
+
const result: ReadArgs = {
|
197
|
+
error: {
|
198
|
+
fileExists: null,
|
199
|
+
message: getLocaleText(parent, 'Server-Error') + ' ' + parent.ajaxSettings.url,
|
200
|
+
code: '406'
|
201
|
+
},
|
202
|
+
files: null
|
203
|
+
};
|
204
|
+
triggerAjaxFailure(parent, beforeSendArgs, fn, result, event, operation, targetPath);
|
205
|
+
return;
|
206
|
+
}
|
207
|
+
if (typeof (result) === 'string') {
|
208
|
+
result = JSON.parse(result);
|
209
|
+
}
|
210
|
+
parent.notify(events.afterRequest, { action: 'success' });
|
211
|
+
const id: string = parent.expandedId ? parent.expandedId : parent.pathId[parent.pathId.length - 1];
|
212
|
+
if (!isNOU(result.cwd) && (getValue('action', data) === 'read')) {
|
213
|
+
result.cwd.name = (parent.pathId.length === 1) ? (parent.rootAliasName || result.cwd.name) : result.cwd.name;
|
214
|
+
setValue('_fm_id', id, result.cwd);
|
215
|
+
setValue(id, result.cwd, parent.feParent);
|
216
|
+
if (!isNOU(result.files) || result.error.code === '401') {
|
217
|
+
if ((event === 'finalize-end' || event === 'initial-end') && parent.pathNames.length === 0) {
|
218
|
+
// eslint-disable-next-line
|
219
|
+
const root: Object = getValue(parent.pathId[0], parent.feParent);
|
220
|
+
parent.pathNames[0] = getValue('name', root);
|
221
|
+
parent.hasId = !isNOU(getValue('id', root));
|
222
|
+
}
|
223
|
+
if (event === 'finalize-end') {
|
224
|
+
generatePath(parent);
|
225
|
+
}
|
226
|
+
}
|
227
|
+
}
|
228
|
+
if (!isNOU(result.files)) {
|
229
|
+
setDateObject(result.files);
|
230
|
+
for (let i: number = 0, len: number = result.files.length; i < len; i++) {
|
231
|
+
// eslint-disable-next-line
|
232
|
+
const item: Object = result.files[i];
|
233
|
+
setValue('_fm_iconClass', fileType(item), item);
|
234
|
+
}
|
235
|
+
if (getValue('action', data) === 'read') {
|
236
|
+
setNodeId(result, id);
|
237
|
+
setValue(id, result.files, parent.feFiles);
|
238
|
+
}
|
239
|
+
}
|
240
|
+
if (!isNOU(result.details) && !isNOU(parent.rootAliasName)) {
|
241
|
+
const rootName: string = parent.rootAliasName || getValue('name', result.details);
|
242
|
+
let location: string = getValue('location', result.details).replace(new RegExp('/', 'g'), '\\');
|
243
|
+
if ((getValue('path', data) === '/') || (parent.hasId && getValue('path', data).match(/[/]/g).length === 1)) {
|
244
|
+
if (getValue('names', data).length === 0) {
|
245
|
+
setValue('name', rootName, result.details);
|
246
|
+
location = rootName;
|
247
|
+
} else {
|
248
|
+
location = location.replace(location.substring(0, location.indexOf('\\')), rootName);
|
249
|
+
}
|
250
|
+
} else {
|
251
|
+
location = location.replace(location.substring(0, location.indexOf('\\')), rootName);
|
252
|
+
}
|
253
|
+
setValue('location', location, result.details);
|
254
|
+
}
|
255
|
+
fn(parent, result, event, operation, targetPath);
|
256
|
+
if (!isNOU(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end')) {
|
257
|
+
parent.notify(events.searchTextChange, result);
|
258
|
+
}
|
259
|
+
if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {
|
260
|
+
getValue('onSuccess', beforeSendArgs.ajaxSettings)();
|
261
|
+
}
|
262
|
+
},
|
263
|
+
onFailure: () => {
|
264
|
+
const result: ReadArgs = {
|
265
|
+
files: null,
|
266
|
+
error: {
|
267
|
+
code: '404',
|
268
|
+
message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.url,
|
269
|
+
fileExists: null
|
270
|
+
}
|
271
|
+
};
|
272
|
+
triggerAjaxFailure(parent, beforeSendArgs, fn, result, event, operation, targetPath);
|
273
|
+
}
|
274
|
+
});
|
275
|
+
ajax.send();
|
276
|
+
}
|
277
|
+
});
|
278
|
+
}
|
279
|
+
/**
|
280
|
+
* Function for trigger Ajax failure in File Manager.
|
281
|
+
*
|
282
|
+
* @param {IFileManager} parent - specifies the parent element.
|
283
|
+
* @param {BeforeSendEventArgs} beforeSendArgs - specifies the beforeSendArgs.
|
284
|
+
* @param {Function} fn - specifies the function.
|
285
|
+
* @param {ReadArgs} result - specifies the result.
|
286
|
+
* @param {string} event - specifies the event.
|
287
|
+
* @param {string} operation - specifies the operation.
|
288
|
+
* @param {string} targetPath - specifies the targetPath.
|
289
|
+
* @returns {void}
|
290
|
+
* @private
|
291
|
+
*/
|
292
|
+
function triggerAjaxFailure(
|
293
|
+
// eslint-disable-next-line
|
294
|
+
parent: IFileManager, beforeSendArgs: BeforeSendEventArgs, fn: Function,
|
295
|
+
result: ReadArgs, event?: string, operation?: string, targetPath?: string): void {
|
296
|
+
parent.notify(events.afterRequest, { action: 'failure' });
|
297
|
+
fn(parent, result, event, operation, targetPath);
|
298
|
+
if (typeof getValue('onFailure', beforeSendArgs.ajaxSettings) === 'function') {
|
299
|
+
getValue('onFailure', beforeSendArgs.ajaxSettings)();
|
300
|
+
}
|
301
|
+
}
|
302
|
+
/**
|
303
|
+
* Function for read success in File Manager.
|
304
|
+
*
|
305
|
+
* @param {IFileManager} parent - specifies the parent element.
|
306
|
+
* @param {ReadArgs} result - specifies the result.
|
307
|
+
* @param {string} event - specifies the event.
|
308
|
+
* @returns {void}
|
309
|
+
* @private
|
310
|
+
*/
|
311
|
+
function readSuccess(parent: IFileManager, result: ReadArgs, event: string): void {
|
312
|
+
if (!isNOU(result.files)) {
|
313
|
+
parent.notify(event, result);
|
314
|
+
parent.notify(events.selectionChanged, {});
|
315
|
+
const args: SuccessEventArgs = { action: 'read', result: result };
|
316
|
+
parent.trigger('success', args);
|
317
|
+
} else {
|
318
|
+
if (result.error.code === '401') {
|
319
|
+
result.files = [];
|
320
|
+
parent.notify(event, result);
|
321
|
+
parent.notify(events.selectionChanged, {});
|
322
|
+
}
|
323
|
+
onFailure(parent, result, 'read');
|
324
|
+
}
|
325
|
+
if (parent.isDragDrop && parent.isDropEnd) {
|
326
|
+
if (parent.droppedObjects.length !== 0) {
|
327
|
+
const args: FileDragEventArgs = { fileDetails: parent.droppedObjects };
|
328
|
+
parent.trigger('fileDropped', args);
|
329
|
+
}
|
330
|
+
parent.isDropEnd = parent.isDragDrop = false;
|
331
|
+
}
|
332
|
+
}
|
333
|
+
|
334
|
+
/**
|
335
|
+
* Function for filter success in File Manager.
|
336
|
+
*
|
337
|
+
* @param {IFileManager} parent - specifies the parent element.
|
338
|
+
* @param {ReadArgs} result - specifies the result.
|
339
|
+
* @param {string} event - specifies the event.
|
340
|
+
* @param {string} action - specifies the action.
|
341
|
+
* @returns {void}
|
342
|
+
* @private
|
343
|
+
*/
|
344
|
+
function filterSuccess(parent: IFileManager, result: ReadArgs, event: string, action: string): void {
|
345
|
+
if (!isNOU(result.files)) {
|
346
|
+
parent.notify(event, result);
|
347
|
+
const args: SuccessEventArgs = { action: action, result: result };
|
348
|
+
parent.trigger('success', args);
|
349
|
+
} else {
|
350
|
+
onFailure(parent, result, action);
|
351
|
+
}
|
352
|
+
}
|
353
|
+
|
354
|
+
/* istanbul ignore next */
|
355
|
+
/**
|
356
|
+
* Function for create success in File Manager.
|
357
|
+
*
|
358
|
+
* @param {IFileManager} parent - specifies the parent element.
|
359
|
+
* @param {ReadArgs} result - specifies the result.
|
360
|
+
* @param {string} itemName - specifies the item name.
|
361
|
+
* @returns {void}
|
362
|
+
* @private
|
363
|
+
*/
|
364
|
+
function createSuccess(parent: IFileManager, result: ReadArgs, itemName: string): void {
|
365
|
+
if (!isNOU(result.files)) {
|
366
|
+
if (parent.dialogObj && parent.dialogObj.visible) { parent.dialogObj.hide(); }
|
367
|
+
parent.createdItem = result.files[0];
|
368
|
+
parent.breadcrumbbarModule.searchObj.value = '';
|
369
|
+
const args: SuccessEventArgs = { action: 'create', result: result };
|
370
|
+
parent.trigger('success', args);
|
371
|
+
parent.itemData = [getPathObject(parent)];
|
372
|
+
read(parent, events.createEnd, parent.path);
|
373
|
+
} else {
|
374
|
+
if (result.error.code === '400') {
|
375
|
+
if (parent.dialogObj && parent.dialogObj.visible) {
|
376
|
+
const ele: HTMLInputElement = select('#newname', parent.dialogObj.element) as HTMLInputElement;
|
377
|
+
const error: string = getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '"' + ele.value + '"');
|
378
|
+
ele.parentElement.nextElementSibling.innerHTML = error;
|
379
|
+
} else {
|
380
|
+
const result: ReadArgs = {
|
381
|
+
files: null,
|
382
|
+
error: {
|
383
|
+
code: '400',
|
384
|
+
message: getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '"' + itemName + '"'),
|
385
|
+
fileExists: null
|
386
|
+
}
|
387
|
+
};
|
388
|
+
createDialog(parent, 'Error', result);
|
389
|
+
}
|
390
|
+
const args: FailureEventArgs = { action: 'create', error: result.error };
|
391
|
+
parent.trigger('failure', args);
|
392
|
+
} else {
|
393
|
+
if (parent.dialogObj && parent.dialogObj.visible) { parent.dialogObj.hide(); }
|
394
|
+
onFailure(parent, result, 'create');
|
395
|
+
}
|
396
|
+
}
|
397
|
+
}
|
398
|
+
|
399
|
+
/* istanbul ignore next */
|
400
|
+
/**
|
401
|
+
* Function to rename the folder/file in File Manager.
|
402
|
+
*
|
403
|
+
* @param {IFileManager} parent - specifies the parent element.
|
404
|
+
* @param {ReadArgs} result - specifies the result.
|
405
|
+
* @param {string} path - specifies the path
|
406
|
+
* @returns {void}
|
407
|
+
* @private
|
408
|
+
*/
|
409
|
+
function renameSuccess(parent: IFileManager, result: ReadArgs, path: string): void {
|
410
|
+
if (!isNOU(result.files)) {
|
411
|
+
if (!isNOU(parent.dialogObj)) { parent.dialogObj.hide(); }
|
412
|
+
const args: SuccessEventArgs = { action: 'rename', result: result };
|
413
|
+
parent.trigger('success', args);
|
414
|
+
parent.renamedItem = result.files[0];
|
415
|
+
if (parent.activeModule === 'navigationpane') {
|
416
|
+
parent.pathId.pop();
|
417
|
+
parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];
|
418
|
+
read(parent, events.renameEndParent, getParentPath(parent.path));
|
419
|
+
} else {
|
420
|
+
parent.itemData = [getPathObject(parent)];
|
421
|
+
if (parent.breadcrumbbarModule.searchObj.value !== '') {
|
422
|
+
Search(parent, events.renameEnd, parent.path, parent.searchWord, parent.showHiddenItems, !parent.searchSettings.ignoreCase);
|
423
|
+
} else {
|
424
|
+
if (parent.isFiltered) {
|
425
|
+
filter(parent, events.renameEnd);
|
426
|
+
} else {
|
427
|
+
read(parent, events.renameEnd, parent.path);
|
428
|
+
}
|
429
|
+
}
|
430
|
+
}
|
431
|
+
} else {
|
432
|
+
if (result.error.code === '400' && parent.dialogObj && parent.dialogObj.visible) {
|
433
|
+
const ele: HTMLInputElement = select('#rename', parent.dialogObj.element) as HTMLInputElement;
|
434
|
+
let error: string = getLocaleText(parent, 'Validation-Rename-Exists').replace('{0}', '"' + parent.currentItemText + '"');
|
435
|
+
error = error.replace('{1}', '"' + ele.value + '"');
|
436
|
+
ele.parentElement.nextElementSibling.innerHTML = error;
|
437
|
+
const args: FailureEventArgs = { action: 'rename', error: result.error };
|
438
|
+
parent.trigger('failure', args);
|
439
|
+
} else {
|
440
|
+
if (!isNOU(parent.dialogObj)) { parent.dialogObj.hide(); }
|
441
|
+
onFailure(parent, result, 'rename');
|
442
|
+
}
|
443
|
+
}
|
444
|
+
}
|
445
|
+
|
446
|
+
/* istanbul ignore next */
|
447
|
+
/**
|
448
|
+
* Function to create new folder in File Manager.
|
449
|
+
*
|
450
|
+
* @param {IFileManager} parent - specifies the parent element.
|
451
|
+
* @param {ReadArgs} result - specifies the result.
|
452
|
+
* @param {string} path - specifies the path.
|
453
|
+
* @param {string} operation - specifies the operation.
|
454
|
+
* @returns {void}
|
455
|
+
* @private
|
456
|
+
*/
|
457
|
+
function pasteSuccess(
|
458
|
+
parent: IFileManager, result: ReadArgs, path: string, operation: string): void {
|
459
|
+
if (result.error && result.error.fileExists) {
|
460
|
+
parent.fileLength = 0;
|
461
|
+
if (!isNOU(result.files)) {
|
462
|
+
parent.isPasteError = true;
|
463
|
+
doPasteUpdate(parent, operation, result);
|
464
|
+
}
|
465
|
+
createExtDialog(parent, 'DuplicateItems', result.error.fileExists);
|
466
|
+
if (result.error.code === '404') {
|
467
|
+
createDialog(parent, 'Error', result);
|
468
|
+
}
|
469
|
+
} else if (!result.error && !isNOU(result.files)) {
|
470
|
+
parent.isPasteError = false;
|
471
|
+
doPasteUpdate(parent, operation, result);
|
472
|
+
} else if (result.error && !isNOU(result.files)) {
|
473
|
+
parent.isPasteError = true;
|
474
|
+
doPasteUpdate(parent, operation, result);
|
475
|
+
createDialog(parent, 'Error', result);
|
476
|
+
} else {
|
477
|
+
onFailure(parent, result, operation);
|
478
|
+
}
|
479
|
+
}
|
480
|
+
|
481
|
+
/**
|
482
|
+
* Function to delete success in File Manager.
|
483
|
+
*
|
484
|
+
* @param {IFileManager} parent - specifies the parent element.
|
485
|
+
* @param {ReadArgs} result - specifies the result.
|
486
|
+
* @param {string} path - specifies the path.
|
487
|
+
* @returns {void}
|
488
|
+
* @private
|
489
|
+
*/
|
490
|
+
function deleteSuccess(parent: IFileManager, result: ReadArgs, path: string): void {
|
491
|
+
if (!isNOU(result.files)) {
|
492
|
+
parent.setProperties({ path: path }, true);
|
493
|
+
parent.itemData = [getPathObject(parent)];
|
494
|
+
read(parent, events.deleteEnd, parent.path);
|
495
|
+
if (result.error) {
|
496
|
+
onFailure(parent, result, 'delete');
|
497
|
+
} else {
|
498
|
+
const args: SuccessEventArgs = { action: 'delete', result: result };
|
499
|
+
parent.trigger('success', args);
|
500
|
+
}
|
501
|
+
} else {
|
502
|
+
onFailure(parent, result, 'delete');
|
503
|
+
}
|
504
|
+
}
|
505
|
+
/**
|
506
|
+
* Function for details success in File Manager.
|
507
|
+
*
|
508
|
+
* @param {IFileManager} parent - specifies the parent element.
|
509
|
+
* @param {ReadArgs} result - specifies the result.
|
510
|
+
* @param {string} path - specifies the path.
|
511
|
+
* @param {string} operation - specifies the operation.
|
512
|
+
* @returns {void}
|
513
|
+
* @private
|
514
|
+
*/
|
515
|
+
function detailsSuccess(
|
516
|
+
// eslint:disable-next-line
|
517
|
+
parent: IFileManager, result: ReadArgs, path: string, operation: string): void {
|
518
|
+
if (!isNOU(result.details)) {
|
519
|
+
createDialog(parent, operation, null, <FileDetails>result.details);
|
520
|
+
const args: SuccessEventArgs = { action: 'details', result: result };
|
521
|
+
parent.trigger('success', args);
|
522
|
+
} else {
|
523
|
+
onFailure(parent, result, 'details');
|
524
|
+
}
|
525
|
+
}
|
526
|
+
/**
|
527
|
+
* Function for on failure event in File Manager.
|
528
|
+
*
|
529
|
+
* @param {IFileManager} parent - specifies the parent element.
|
530
|
+
* @param {ReadArgs} result - specifies the result.
|
531
|
+
* @param {string} action - specifies the action.
|
532
|
+
* @returns {void}
|
533
|
+
* @private
|
534
|
+
*/
|
535
|
+
function onFailure(parent: IFileManager, result: ReadArgs, action: string): void {
|
536
|
+
createDialog(parent, 'Error', result);
|
537
|
+
const args: FailureEventArgs = { action: action, error: result.error };
|
538
|
+
parent.trigger('failure', args);
|
539
|
+
}
|
540
|
+
/**
|
541
|
+
* Function for search in File Manager.
|
542
|
+
*
|
543
|
+
* @param {IFileManager} parent - specifies the parent element.
|
544
|
+
* @param {string} event - specifies the event.
|
545
|
+
* @param {string} path - specifies the path.
|
546
|
+
* @param {string} searchString - specifies the search string.
|
547
|
+
* @param {boolean} showHiddenItems - specifies the hidden items.
|
548
|
+
* @param {boolean} caseSensitive - specifies the casing of search text.
|
549
|
+
* @returns {void}
|
550
|
+
* @private
|
551
|
+
*/
|
552
|
+
export function Search(
|
553
|
+
// eslint:disable-next-line
|
554
|
+
parent: IFileManager, event: string, path: string, searchString: string, showHiddenItems?: boolean, caseSensitive?: boolean): void {
|
555
|
+
// eslint-disable-next-line
|
556
|
+
const data: Object = {
|
557
|
+
action: 'search', path: path, searchString: searchString, showHiddenItems: showHiddenItems, caseSensitive: caseSensitive,
|
558
|
+
data: parent.itemData
|
559
|
+
};
|
560
|
+
createAjax(parent, data, searchSuccess, event);
|
561
|
+
}
|
562
|
+
|
563
|
+
/* istanbul ignore next */
|
564
|
+
/**
|
565
|
+
* Function for search success in File Manager.
|
566
|
+
*
|
567
|
+
* @param {IFileManager} parent - specifies the parent element.
|
568
|
+
* @param {ReadArgs} result - specifies the result.
|
569
|
+
* @param {string} event - specifies the event.
|
570
|
+
* @returns {void}
|
571
|
+
* @private
|
572
|
+
*/
|
573
|
+
function searchSuccess(parent: IFileManager, result: ReadArgs, event: string): void {
|
574
|
+
if (!isNOU(result.files)) {
|
575
|
+
parent.notify(event, result);
|
576
|
+
const args: SuccessEventArgs = { action: 'search', result: result };
|
577
|
+
parent.trigger('success', args);
|
578
|
+
} else {
|
579
|
+
onFailure(parent, result, 'search');
|
580
|
+
}
|
581
|
+
}
|
582
|
+
/* istanbul ignore next */
|
583
|
+
/**
|
584
|
+
* Function for download in File Manager.
|
585
|
+
*
|
586
|
+
* @param {IFileManager} parent - specifies the parent element.
|
587
|
+
* @param {string} path - specifies the path.
|
588
|
+
* @param {string[]} items - specifies the items.
|
589
|
+
* @returns {void}
|
590
|
+
* @private
|
591
|
+
*/
|
592
|
+
export function Download(parent: IFileManager, path: string, items: string[]): void {
|
593
|
+
const downloadUrl: string = parent.ajaxSettings.downloadUrl ? parent.ajaxSettings.downloadUrl : parent.ajaxSettings.url;
|
594
|
+
// eslint-disable-next-line
|
595
|
+
const data: Object = { 'action': 'download', 'path': path, 'names': items, 'data': parent.itemData };
|
596
|
+
const eventArgs: BeforeDownloadEventArgs = { data: data, cancel: false };
|
597
|
+
parent.trigger('beforeDownload', eventArgs, (downloadArgs: BeforeDownloadEventArgs) => {
|
598
|
+
if (!downloadArgs.cancel) {
|
599
|
+
const form: HTMLElement = createElement('form', {
|
600
|
+
id: parent.element.id + '_downloadForm',
|
601
|
+
attrs: { action: downloadUrl, method: 'post', name: 'downloadForm', 'download': '' }
|
602
|
+
});
|
603
|
+
const input: HTMLElement =
|
604
|
+
createElement('input', {
|
605
|
+
id: parent.element.id + '_hiddenForm',
|
606
|
+
attrs: { name: 'downloadInput', value: JSON.stringify(downloadArgs.data), type: 'hidden' }
|
607
|
+
});
|
608
|
+
form.appendChild(input);
|
609
|
+
parent.element.appendChild(form);
|
610
|
+
document.forms.namedItem('downloadForm').submit();
|
611
|
+
parent.element.removeChild(form);
|
612
|
+
}
|
613
|
+
});
|
614
|
+
}
|