Submit
Path:
~
/
/
usr
/
local
/
psa
/
admin
/
cp
/
public
/
javascript
/
app
/
file-manager
/
File Content:
explorer.js.map
{"version":3,"file":"javascript/app/file-manager/explorer.js?4309498be907644db56d","mappings":"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","sources":["webpack:///./app/file-manager/explorer/AjaxUploadRequest.js","webpack:///./app/file-manager/explorer/ErrorDialog.js","webpack:///./app/file-manager/explorer/Explorer.js","webpack:///./app/file-manager/explorer/ExtractArchive.js","webpack:///./app/file-manager/explorer/ListPopup.js","webpack:///./app/file-manager/explorer/MultipleUpload.js","webpack:///./app/file-manager/explorer/PopupForm.js","webpack:///./app/file-manager/explorer/Rename.js","webpack:///./app/file-manager/explorer/Upload.js","webpack:///./app/file-manager/explorer/UploadAdapterAjax.js","webpack:///./app/file-manager/explorer/UploadCapabilities.js","webpack:///./app/file-manager/explorer/index.js","webpack:///./app/file-manager/explorer/resizeBlocks.js","webpack:///./helpers/converter.ts"],"sourcesContent":["// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nclass AjaxUploadRequest extends Ajax.Request {\n constructor(url, options) {\n super(url, options);\n\n if (options.onProgress) {\n this.onProgress = options.onProgress;\n }\n }\n\n request(url) {\n this.transport.upload.onprogress = (...args) => this.onProgress && this.onProgress(...args);\n super.request(url);\n }\n\n setRequestHeaders() {\n // skip request headers\n }\n}\n\nexport default AjaxUploadRequest;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { render, escapeHtml } from 'jsw';\nimport ListPopup from './ListPopup';\n\nclass ErrorDialog extends ListPopup {\n _initConfiguration(config) {\n super._initConfiguration(config);\n\n this._cls = this._getConfigParam('cls', 'popup-panel');\n this._titleCls = this._getConfigParam('titleCls', 'pp-error');\n\n this._errorMessage = this._getConfigParam('errorMessage', '');\n this._message = this._getConfigParam('message', null);\n this._items = this._getConfigParam('items', []);\n }\n\n render() {\n super.render();\n\n this.setTitle(this.lmsg('errorDialogTitle'));\n\n this._addErrorMessage(this._errorMessage);\n if (this._message) {\n this.setHint1(this._message);\n }\n\n this._items.forEach(item => {\n this.addItem(item);\n });\n\n this.addRightButton(\n this.lmsg('buttonClose'),\n this.onClose.bind(this),\n true,\n true,\n );\n this.resizeList();\n }\n\n onClose() {\n this.hide();\n }\n\n addItem(item) {\n this._itemClass = ('odd' === this._itemClass) ? 'even' : 'odd';\n\n let statusClass = '';\n let statusTitle = '';\n\n switch (item.status) {\n case 'SUCCESS':\n statusClass = 'ok';\n statusTitle = this.lmsg('statusCompleted');\n break;\n case 'ERROR':\n statusClass = 'failed';\n statusTitle = this.lmsg('statusFailed');\n break;\n default:\n statusClass = 'not-started';\n statusTitle = this.lmsg('statusNotStarted');\n }\n\n const statusHtml = `<span class=\"hint-${statusClass}\">${statusTitle}</span>`;\n\n render(document.getElementById(this._itemsAreaId), (\n `<tr class=\"${this._itemClass}\">` +\n '<td class=\"first\">' +\n `<span class=\"type-${escapeHtml(item.type)}\">${escapeHtml(item.name)}</span>` +\n '</td>' +\n `<td class=\"last\">${statusHtml}</td>` +\n '</tr>'\n ));\n }\n}\n\nexport default ErrorDialog;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport debounce from 'lodash.debounce';\nimport {\n createElement as ce,\n getComponent,\n clearStatusMessages,\n addStatusMessage,\n showInternalError,\n addUrlParams,\n render,\n redirect,\n escapeAttribute,\n registerComponent,\n escapeHtml,\n messageBox,\n list,\n List,\n DropArea,\n Locale,\n UAT,\n PopupSlider,\n api,\n} from 'jsw';\nimport Cookie from 'common/cookie';\nimport resizeBlocks from './resizeBlocks';\nimport UploadCapabilities from './UploadCapabilities';\nimport MultipleUpload from './MultipleUpload';\nimport Rename from './Rename';\nimport ExtractArchive from './ExtractArchive';\nimport { getTypeIcon, FTYPE_IMAGE, FTYPE_VECTOR_IMAGE } from '../../../helpers/fileManager';\nimport { btoaUnicode } from 'helpers/converter';\n\nclass Explorer extends List {\n render() {\n if (!this._renderTarget) {\n return;\n }\n\n const oldElements = [...this._componentElement.childNodes];\n\n render(this._componentElement, `<div id=\"${this._id}-content\"></div>`);\n render(this._renderTarget, this._componentElement);\n this._componentElement = this._componentElement.querySelector(`#${this._id}-content`);\n render(this._componentElement, oldElements);\n\n if (UploadCapabilities.isAdvancedUploadSupported()) {\n this._dropArea = new DropArea({\n locale: {\n dragAndDropArea: this.lmsg('dragAndDropArea'),\n },\n onDrop: files => {\n this.showPopup(MultipleUpload, {\n files,\n ...this._uploadPopupParams,\n });\n },\n });\n this._dropArea.render();\n }\n\n this._renderTarget = null;\n setTimeout(() => super.render());\n }\n\n _addEvents() {\n super._addEvents();\n window.addEventListener('resize', resizeBlocks, false);\n this.debouncedResizeBlocks = debounce(() => resizeBlocks(), 100);\n this.contentResizeObserver = new ResizeObserver(this.debouncedResizeBlocks);\n this.contentResizeObserver.observe(document.getElementById('main'));\n }\n\n remove() {\n super.remove();\n window.removeEventListener('resize', resizeBlocks);\n this.contentResizeObserver.unobserve(document.getElementById('main'));\n this.debouncedResizeBlocks.cancel();\n }\n\n // TODO Need to rework Jsw.getComponent('fm-content') usages\n _registerComponent() {\n super._registerComponent();\n registerComponent('fm-content', this);\n }\n\n _getActionBoxElement() {\n return document.getElementById('fm-actions-box');\n }\n\n addContentTableClickHandler() {\n this._componentElement.querySelector(`#${this._tableId}`).addEventListener('click', event => {\n const dir = event.target.closest('[data-dir]');\n\n if (dir) {\n const itemDir = this.getItemByName(dir.dataset.dir);\n if (!itemDir.isUtf8) {\n event.preventDefault();\n addStatusMessage('error', this.lmsg('nonUTF8'));\n return;\n }\n\n if (itemDir.has4ByteChar) {\n event.preventDefault();\n addStatusMessage('error', this.lmsg('non4ByteChar'));\n return;\n }\n\n this.changeDirectory(dir.dataset.dir);\n return;\n }\n\n const file = event.target.closest('[data-file]');\n if (file) {\n const itemFile = this.getItemById(file.dataset.file);\n if (!itemFile.isUtf8) {\n event.preventDefault();\n addStatusMessage('error', this.lmsg('nonUTF8'));\n return;\n }\n\n if (itemFile.has4ByteChar) {\n event.preventDefault();\n addStatusMessage('error', this.lmsg('non4ByteChar'));\n return;\n }\n\n this.callDefaultItemAction(file.dataset.file);\n }\n });\n }\n\n changeDirectory(newDirectory, absolutePath) {\n this.resetSearch();\n newDirectory = absolutePath ? newDirectory : `${this._state.currentDir}/${newDirectory}`;\n this.reload(`?currentDir=${encodeURIComponent(newDirectory)}`);\n }\n\n getCurrentDir() {\n return this._state.currentDir;\n }\n\n isTrashEnabled() {\n return this._state.trashEnabled;\n }\n\n getReadonlyHint() {\n return this._state.currentDirReadonly\n ? `<div class=\"error-hint\">${this._pathbar.locale.readonlyHint}</div>`\n : '';\n }\n\n getUploadMaxFileSize() {\n return this._state.uploadMaxFileSize;\n }\n\n async showPopup(PopupClass, { id, ...options }) {\n const domainId = this._getConfigParam('domainId');\n const locale = await Locale.loadSection(`smb.controllers.file-manager.${id.replace('fm-', '')}`);\n options = {\n locale,\n id,\n attrs: { 'domain-id': domainId },\n ...options,\n };\n\n const component = getComponent(id);\n if (component && domainId === component.getAttribute('domain-id')) {\n component.reset(options);\n } else {\n new PopupClass(options);\n }\n }\n\n calculateSize(url) {\n const params = {\n url,\n skipConfirmation: true,\n toJsonPayload: true,\n };\n params.submitHandler = (url, ids) => {\n this.disable();\n\n api.post(url, ids)\n .then(response => {\n const table = this._componentElement.querySelector(`#${this._tableId}`);\n const selectedRows = table.querySelectorAll('tr.selected');\n selectedRows.forEach(selectedRow => {\n const fileNameElement = selectedRow.querySelector('td.js-file-name a span');\n if (!fileNameElement) {\n return;\n }\n const fileName = fileNameElement.firstChild.nodeValue;\n if (fileName in response.fileSizes) {\n selectedRow.querySelector('td.js-file-size').innerHTML = response.fileSizes[fileName];\n }\n });\n\n clearStatusMessages();\n response.statusMessages?.forEach(({ status, content }) => {\n addStatusMessage(status, content);\n });\n })\n .finally(() => this.enable());\n };\n this.execGroupOperation(params);\n }\n\n deleteFile(config) {\n const items = this.getSelectedItems();\n let force = false;\n this.execGroupOperation({\n subtype: messageBox.SUBTYPE_DELETE,\n needAttention: this.isTrashEnabled(),\n needAttentionText: this.getLocale().formatMessage('deleteWithForce', {\n name: `<b>${escapeHtml(items[0]?.name)}</b>`,\n count: items.length,\n }),\n needAttentionBlockSubmit: false,\n needAttentionOnChange: value => {\n force = value;\n },\n beforeSendRequest: (sendRequest, payload) => {\n payload.force = force ? 'yes' : 'no';\n sendRequest();\n },\n onSuccess: () => {\n this.enable();\n this._tree.reloadPath(this.isTrashEnabled() && !force ? '/' : this.getCurrentDir());\n },\n ...config,\n });\n }\n\n purgeFile(config) {\n this.execGroupOperation({\n subtype: messageBox.SUBTYPE_DELETE,\n onSuccess: () => {\n this.enable();\n this._tree.reloadPath(this.getCurrentDir());\n },\n ...config,\n });\n }\n\n purgeAll(config) {\n this.execGroupOperation({\n subtype: messageBox.SUBTYPE_DELETE,\n onSuccess: () => {\n this.enable();\n this._tree.reloadPath('/');\n },\n ...config,\n });\n }\n\n processReloadError({ status, message }) {\n if (status) {\n clearStatusMessages();\n addStatusMessage(status, message);\n } else {\n showInternalError('Unable to load list data.');\n }\n }\n\n _initConfiguration({ directoriesTree, itemActions, locale = Locale.getSection('smb.components.lists.contentfiles'), ...config }) {\n const createEditorAction = mode => item => {\n const props = {\n ...this.getFileParams(item.name),\n mode,\n type: item.type,\n };\n if (item.line) {\n props.line = item.line;\n }\n const params = new URLSearchParams(window.location.search);\n params.set('modals[editor]', btoaUnicode(JSON.stringify(props)));\n this._getConfigParam('navigate')(`${window.location.pathname}?${params}`);\n };\n\n super._initConfiguration({\n id: 'fm',\n locale,\n pageable: false,\n fileManagerUrl: '/smb/file-manager/',\n isDisabledItem: ({ isSystem }) => isSystem,\n itemActions: {\n ...itemActions,\n rename: item => {\n this.showPopup(Rename, {\n id: 'fm-rename',\n renderTo: 'fm-modal-dialog-box-rename',\n cls: 'popup-panel',\n handlerUrl: this.getFileManagerUrl('rename'),\n itemId: item.id,\n fileName: item.name,\n });\n },\n\n extractArchive: item => {\n this.showPopup(ExtractArchive, {\n id: 'fm-extract-archive',\n renderTo: 'fm-modal-dialog-box-extract-archive',\n cls: 'popup-panel',\n handlerUrl: this.getFileManagerUrl('extract-archive'),\n titleCls: 'pp-archive-extract',\n fileName: item.id,\n });\n },\n\n download: ({ name }) => {\n redirect(addUrlParams(this.getFileManagerUrl('download'), {\n ...this.getFileParams(name),\n }));\n },\n\n permissions: item => {\n const props = {\n ...this.getFileParams(item.name),\n isDirectory: item.isDirectory,\n icon: getTypeIcon(item),\n };\n const params = new URLSearchParams(window.location.search);\n params.set('modals[permissions]', btoaUnicode(JSON.stringify(props)));\n this._getConfigParam('navigate')(`${window.location.pathname}?${params}`);\n },\n\n imageView: item => {\n const imageItems = this._data.filter(({ type }) => type === FTYPE_IMAGE || type === FTYPE_VECTOR_IMAGE);\n const slides = imageItems.map(({ name }) => {\n const src = addUrlParams(this.getFileManagerUrl('show-image'), { file: name });\n return `<img class=\"slider__image\" src=\"${src}\" />`\n + `<div class=\"slider__content\">${escapeHtml(name)}</div>`;\n });\n\n new PopupSlider({\n title: this.lmsg('imageViewer'),\n slides,\n current: imageItems.indexOf(item),\n });\n },\n\n view: createEditorAction('show'),\n textEdit: createEditorAction('edit'),\n textCodeEditor: createEditorAction('code-editor'),\n },\n ...config,\n });\n\n this._additionalColumns = this._getConfigParam('additionalColumns', false);\n this._dataUrl = this.getFileManagerUrl('list-data');\n\n this._copyMoveTreeConfig = {\n applyTo: 'fm-modal-dialog-box-files-tree',\n data: directoriesTree,\n dataUrl: this.getFileManagerUrl('tree-data'),\n rootNodeTitle: this.lmsg('rootDirectory'),\n waitMessage: this.lmsg('waitMessage'),\n };\n\n this._uploadPopupParams = {\n id: 'fm-upload',\n renderTo: 'fm-modal-dialog-box-upload',\n cls: 'popup-panel',\n handlerUrl: this.getFileManagerUrl('upload'),\n titleCls: 'pp-upload',\n onOpenReplaceExistingFilesDialog: this._getConfigParam('onOpenReplaceExistingFilesDialog'),\n onChangeUploadProgress: this._getConfigParam('onChangeUploadProgress'),\n onCancel: this._getConfigParam('onCancelUpload'),\n onClose: this._getConfigParam('onCloseUpload'),\n };\n\n this._tree = this._getConfigParam('tree');\n }\n\n redraw() {\n super.redraw();\n\n this._getConfigParam('onListStateChange')(this._state);\n this._getConfigParam('onPathbarChange')(this._pathbar);\n\n this._tree.setDirectory(this.getCurrentDir());\n render(document.querySelector('.objects-list .objects-content-area'), this._tree, 'inner');\n if (this._dropArea && !this._state.currentDirReadonly && !this._searchValue) {\n render(document.getElementById('objects-details'), this._dropArea._componentElement);\n }\n\n resizeBlocks();\n this.addContentTableClickHandler();\n }\n\n recreate(config) {\n this._initConfiguration(config);\n this.redraw();\n }\n\n _isColumnSelectionPresent() {\n return !this._searchValue;\n }\n\n containerView() {\n const view = super.containerView();\n\n const children = view.children.splice(2);\n view.children.push(ce('.objects-content',\n ce(`#${this._id}-objects-content-area.objects-content-area`,\n children,\n ),\n ));\n\n return view;\n }\n\n _getActionBox() {\n return null;\n }\n\n callDefaultItemAction(itemId) {\n const item = this.getItemById(itemId);\n const defaultAction = item.actions.find(action => action.default) || { name: 'view' };\n\n if (defaultAction.href) {\n redirect(defaultAction.href);\n }\n\n if (this._itemActions[defaultAction.name]) {\n this._itemActions[defaultAction.name](item, defaultAction);\n }\n }\n\n disable() {\n if (!this._componentElement.querySelector('.objects-content')) {\n return;\n }\n\n this._componentElement.querySelector('.objects-content').style.display = 'none';\n\n const loadingContainer = document.getElementById(`${this._id}-loading-container`);\n if (loadingContainer) {\n loadingContainer.style.display = '';\n } else {\n render(this._componentElement, (\n `<div class=\"ajax-loading\" id=\"${this._id}-loading-container\">${this.lmsg('loadingTitle')}</div>`\n ));\n }\n\n this._getConfigParam('onDisable')();\n }\n\n enable() {\n const loadingContainer = document.getElementById(`${this._id}-loading-container`);\n if (loadingContainer) {\n loadingContainer.style.display = 'none';\n }\n\n this._componentElement.querySelector('.objects-content').style.display = '';\n\n this._getConfigParam('onEnable')();\n }\n\n _onReloadComplete() {\n super._onReloadComplete();\n resizeBlocks();\n }\n\n _addResponsiveHtml() {\n // disable rendering HTML for responsive view\n }\n\n _addPathbar() {\n // disable list pathbar\n }\n\n _getPathbarHtml() {\n return '';\n }\n\n _getColumns() {\n const columns = [];\n if (!this._searchValue) {\n columns.push({\n ...list.COLUMN_SELECTION,\n cls: 'select first',\n headerCls: 'select first',\n hideDisabled: true,\n });\n }\n\n columns.push(\n {\n header: this.lmsg('name'),\n dataIndex: 'name',\n cls: 'js-file-name fm-file-name',\n renderer(item) {\n const icon = `<i class=\"icon\"><img src=\"${getTypeIcon(item)}\"></i> `;\n const line = item.line ? `:${item.line}` : '';\n const data = item.isDirectory ? `data-dir=\"${escapeAttribute(item.name)}\"` : `data-file=\"${escapeAttribute(item.id)}\"`;\n const linkStartTag = `<a class=\"i-link fm-file-name-link\" ${data}>`;\n return `${linkStartTag}${icon}<span>${escapeHtml(item.name)}${line}</span></a>`;\n },\n sortable: !this._searchValue,\n }, {\n header: this.lmsg('changeDate'),\n dataIndex: 'modificationDate',\n cls: 'minor number',\n sortable: !this._searchValue,\n }, {\n header: this.lmsg('size'),\n dataIndex: 'formatedSize',\n cls: 't-r number js-file-size ',\n headerCls: this._additionalColumns ? '' : 'last',\n sortable: !this._searchValue,\n },\n );\n if (this._additionalColumns) {\n columns.push({\n header: this.lmsg('permissions'),\n dataIndex: 'filePerms',\n cls: 'nowrap',\n renderer(item) {\n if (this.getItemActions(item).some(action => action.name === 'permissions')) {\n return ce('a', { onclick: () => this._itemActions.permissions(item) }, item.filePerms);\n }\n return item.filePerms;\n },\n isVisible() {\n return !Cookie.get('fm-hidden-permissions-column');\n },\n sortable: !this._searchValue,\n }, {\n header: this.lmsg('user'),\n dataIndex: 'user',\n isVisible() {\n return !Cookie.get('fm-hidden-user-column');\n },\n sortable: !this._searchValue,\n }, {\n header: this.lmsg('group'),\n dataIndex: 'group',\n cls: 'last',\n headerCls: 'last',\n isVisible() {\n return !Cookie.get('fm-hidden-group-column');\n },\n sortable: !this._searchValue,\n });\n }\n columns.push(list.COLUMN_ACTIONS);\n return columns;\n }\n\n getFileManagerUrl(action) {\n return `${this._getConfigParam('fileManagerUrl')}${action}/domainId/${this._getConfigParam('domainId')}/`;\n }\n\n getRedirectActionUrl(action, { name, line }) {\n return addUrlParams(this.getFileManagerUrl(action), {\n ...this.getFileParams(name),\n line,\n });\n }\n\n getFileParams(file) {\n let currentDir = this.getCurrentDir();\n if (currentDir !== '/') {\n currentDir += '/';\n }\n\n const index = file.lastIndexOf('/');\n if (index !== -1) {\n currentDir += file.slice(0, index);\n file = file.slice(index + 1);\n }\n\n return {\n currentDir,\n file,\n };\n }\n\n onListGlobalCheckboxClick() {\n super.onListGlobalCheckboxClick();\n\n const rGlobalCheckbox = this._getActionBoxElement().querySelector('.r-actions input[type=\"checkbox\"]');\n const globalCheckbox = this._componentElement.querySelector('input[name=\"listGlobalCheckbox\"]');\n rGlobalCheckbox.checked = globalCheckbox.checked;\n }\n\n resetSearch() {\n this._handleSearchLoadingChange(false);\n this._searchValue = '';\n this._getConfigParam('onResetSearch')();\n if (this._searchRequest) {\n this._searchRequest.abort();\n this._searchRequest = null;\n }\n clearStatusMessages();\n }\n\n search(value, mode) {\n UAT.dispatchAction('FM_SEARCH', {\n mode,\n });\n\n this.resetSearch();\n this._searchValue = value;\n this._data = [];\n this.redraw();\n\n const url = addUrlParams(this.getFileManagerUrl('search-data'), {\n q: value,\n currentDir: this.getCurrentDir(),\n mode,\n });\n\n const xhr = new XMLHttpRequest();\n this._searchRequest = xhr;\n let cursor = 0;\n const data = [];\n let prevDataLength = 0;\n\n const redraw = () => {\n this.redrawPartial('after', data.length - prevDataLength);\n prevDataLength = data.length;\n };\n\n this._handleSearchLoadingChange(true);\n\n let warning;\n const process = chunk => {\n chunk.split('\\n').forEach(line => {\n try {\n const entry = JSON.parse(line);\n if (entry.id) {\n const { line: lineNumber } = entry;\n if (lineNumber) {\n entry.id += `:${lineNumber}`;\n }\n data.push(entry);\n } else if (entry.status && entry.status !== 'success' && entry.message) {\n warning = entry.message;\n }\n } catch {}\n });\n };\n\n xhr.onprogress = () => {\n const chunk = xhr.responseText.slice(cursor);\n process(chunk);\n cursor = xhr.responseText.length;\n this._data = data;\n redraw();\n };\n\n xhr.onload = () => {\n switch (xhr.status) {\n case 200:\n break;\n\n case 504:\n clearStatusMessages();\n addStatusMessage('warning', this.lmsg('searchErrorTimeout'));\n break;\n\n default:\n showInternalError(this.lmsg('searchError'));\n break;\n }\n this._handleSearchLoadingChange(false);\n if (warning) {\n clearStatusMessages();\n addStatusMessage('warning', escapeHtml(warning));\n }\n };\n\n xhr.onerror = error => {\n this._handleSearchLoadingChange(false);\n showInternalError(this.lmsg('searchError'));\n throw error;\n };\n\n xhr.open('GET', url);\n xhr.send();\n }\n\n _handleSearchLoadingChange(loading) {\n if (loading) {\n this.disable();\n } else {\n this.enable();\n }\n this._getConfigParam('onSearchLoadingChange')(loading);\n }\n}\n\nexport default Explorer;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { render, getComponent, escapeHtml, addStatusMessage, Locale, api } from 'jsw';\nimport PopupForm from './PopupForm';\n\nclass ExtractArchive extends PopupForm {\n render() {\n super.render();\n\n render(document.getElementById(this._contentAreaId), (\n `<form method=\"post\" action=\"\" enctype=\"application/x-www-form-urlencoded\" id=\"${this._id}-form\">` +\n '<div>' +\n '<div class=\"form-row\">' +\n '<div class=\"field-name\">' +\n `<label for=\"${this._id}-destination-folder\">${this.lmsg('destinationFolderHint')}</label>` +\n '</div>' +\n '<div class=\"field-value\">' +\n '<div class=\"text-value\">' +\n `<span id=\"${this._id}-destination-folder\"></span>` +\n '</div>' +\n '</div>' +\n '</div>' +\n '<div class=\"form-row\">' +\n '<div class=\"single-row\">' +\n '<div class=\"indent-box\">' +\n `<input type=\"checkbox\" class=\"checkbox\" value=\"1\" id=\"${this._id}-overwrite\"/>` +\n '<div class=\"indent-box-content\">' +\n `<label for=\"${this._id}-overwrite\">${this.lmsg('overwriteExisting')}</label>` +\n '</div>' +\n '</div>' +\n '</div>' +\n '</div>' +\n '</div>' +\n '</form>'\n ));\n\n this.initOnSubmitEvent();\n\n this.addRightButton(Locale.getSection('components.buttons').lmsg('ok'), this.onSubmit, true, true);\n this.addRightButton(Locale.getSection('components.buttons').lmsg('cancel'), this.hide, false, false);\n\n this.reset(this._config);\n }\n\n reset(options) {\n if (options.fileName) {\n this._fileName = options.fileName;\n this._selectedItems = [getComponent('fm-content').getItemById(this._fileName)];\n } else {\n this._fileName = '';\n this._selectedItems = getComponent('fm-content').getSelectedItems();\n }\n\n document.getElementById(`${this._id}-overwrite`).checked = false;\n\n this.initSelectionHint();\n\n document.getElementById(`${this._id}-destination-folder`).innerHTML = escapeHtml(getComponent('fm-content').getCurrentDir());\n\n let readonlyHint = getComponent('fm-content').getReadonlyHint();\n if (readonlyHint) {\n readonlyHint = `<span class=\"field-errors\">${readonlyHint}</span>`;\n render(document.getElementById(`${this._id}-destination-folder`), readonlyHint, 'after');\n } else {\n readonlyHint = document.getElementById(`${this._id}-destination-folder`).parentNode.querySelector('.field-errors');\n if (readonlyHint) {\n readonlyHint.parentNode.removeChild(readonlyHint);\n }\n }\n\n this._clearMessages();\n\n super.reset();\n }\n\n onSubmit() {\n this.hide();\n const overwriteExisting = document.getElementById(`${this._id}-overwrite`).checked;\n const params = {\n url: this.getHandlerUrl(`overwrite=${overwriteExisting}`),\n skipConfirmation: true,\n };\n\n if (this._fileName) {\n params.ids = this._fileName;\n\n this.onOkHandlerCreate();\n api.post(params.url, params)\n .then(result => this.onOkHandlerSuccess(result))\n .catch(e => this.onOkHandlerException(null, e))\n .finally(() => this.onOkHandlerComplete());\n } else {\n params.onSuccess = this.onGroupExtractSuccess;\n getComponent('fm-content').execGroupOperation(params);\n }\n }\n\n onGroupExtractSuccess() {\n getComponent('fm-content').enable();\n getComponent('fm-tree').reloadPath(getComponent('fm-content').getCurrentDir());\n }\n\n onOkHandlerSuccess(response) {\n this._clearMessages();\n const message = response.statusMessages[0];\n if ('info' === message.status) {\n getComponent('fm-content').reload();\n getComponent('fm-tree').reloadPath(getComponent('fm-content').getCurrentDir());\n addStatusMessage('info', message.content);\n this.hide();\n } else {\n addStatusMessage('error', message.content);\n }\n }\n}\n\nexport default ExtractArchive;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { PopupForm, render } from 'jsw';\n\nclass ListPopup extends PopupForm {\n _initConfiguration(config) {\n super._initConfiguration(config);\n this._itemsAreaId = `${this._id}-items`;\n }\n\n _addEvents() {\n super._addEvents();\n window.addEventListener('resize', this.resizeList.bind(this), false);\n }\n\n _renderContentArea() {\n render(document.getElementById(this._contentAreaId), (\n '<div class=\"list\">' +\n '<table width=\"100%\" cellspacing=\"0\">' +\n `<tbody id=\"${this._itemsAreaId}\">` +\n '</tbody>' +\n '</table>' +\n '</div>'\n ));\n }\n\n render() {\n super.render();\n this._renderContentArea();\n document.getElementById(this._actionButtonsId).classList.add('no-separator');\n }\n}\n\nexport default ListPopup;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { emptyFn, clearStatusMessages, addStatusMessage } from 'jsw';\nimport Upload from './Upload';\nimport UploadAdapterAjax from './UploadAdapterAjax';\n\nclass MultipleUpload extends Upload {\n _initConfiguration(config) {\n config.fileManagerUrl = '/smb/file-manager/';\n super._initConfiguration(config);\n this._files = this._getConfigParam('files', null);\n\n this.resetFileInputElement = this._getConfigParam('resetFileInputElement', emptyFn);\n this._fileInputId = this._getConfigParam('fileInputId');\n }\n\n render() {\n this.onSubmit();\n }\n\n reset(config) {\n if (config) {\n this._initConfiguration(config);\n }\n this._uploadCanceled = false;\n\n // Do not call super.reset() here\n this.show();\n\n this.onSubmit();\n }\n\n async onSubmit() {\n this._clearMessages();\n await this.prepareUploadQueue();\n this.startUploadQueue();\n }\n\n checkUploadQueue() {\n const result = super.checkUploadQueue();\n if (!result) {\n this.hide();\n }\n return result;\n }\n\n _clearMessages() {\n clearStatusMessages();\n }\n\n _addErrorMessage(message) {\n addStatusMessage('error', message);\n }\n\n async prepareUploadQueue() {\n this._uploadQueue = [];\n this._totalUploadedSize = 0;\n this._totalSize = 0;\n this._currentPaths = [];\n\n const files = this._files || document.getElementById(this._fileInputId).files;\n\n await Promise.all(\n [...files].map(async (fileSource, i) => {\n let file = fileSource;\n\n if (fileSource.isFile) {\n file = await this.getFile(fileSource);\n }\n\n this.addUploadQueue(i, fileSource.fullPath, file);\n }),\n );\n }\n\n addUploadQueue(numFile, fullPath, file) {\n const queueItem = {\n progressId: `upload-progress-${numFile}`,\n status: 'PENDING',\n type: 'unknown',\n loaded: null,\n };\n\n if (file.isDirectory) {\n queueItem.isDirectory = true;\n queueItem.fullPath = file.fullPath;\n queueItem.total = 0;\n queueItem.savedFileName = file.fullPath;\n queueItem.type = 'folder';\n } else {\n const fileSize = this.getFileSize(file);\n queueItem.file = file;\n queueItem.isFile = true;\n queueItem.savedFileName = file.name;\n queueItem.total = fileSize;\n queueItem.fullPath = fullPath ? fullPath.replace(file.name, '') : null;\n\n this._totalSize += fileSize;\n }\n\n this._uploadQueue.push(queueItem);\n }\n\n getFile(entryFile) {\n return new Promise(resolve => {\n entryFile.file(resolve);\n });\n }\n\n getFileSize(file) {\n return typeof file.fileSize !== 'undefined' ? file.fileSize : file.size;\n }\n\n processUploadItem(queueItem) {\n if ('PENDING' !== queueItem.status) {\n return;\n }\n this._started = true;\n this.updateUploadProgressItemStatus(queueItem, 'UPLOADING');\n this._uploadCurrent = queueItem;\n\n if (queueItem.isDirectory) {\n const domainId = this._handlerUrl.split('/').filter(item => item).pop();\n const handlerUrl = `${this._getConfigParam('fileManagerUrl')}create-directory/domainId/${domainId}/`;\n this._uploadAdapter.setHandlerUrl(handlerUrl);\n\n this._uploadAdapter.upload(null, {\n newDirectoryName: queueItem.fullPath,\n recursively: true,\n });\n } else {\n this._uploadAdapter.setHandlerUrl(this.getHandlerUrl('recursively=1', queueItem.fullPath));\n this._uploadAdapter.upload(queueItem.file);\n }\n\n throw this.breakQueueException;\n }\n\n prepareUploadAdapter() {\n if (!this._uploadAdapter) {\n const config = {\n handlerUrl: this.getHandlerUrl(),\n startUploadHandler: () => {\n if (this._scheduleStartUpload) {\n this._scheduleStartUpload = null;\n this.startNextQueueUpload();\n }\n },\n finishUploadHandler: () => {\n this.onNextQueueUploadFinished();\n },\n progressUploadHandler: event => {\n this.onProgress(event);\n },\n };\n this._uploadAdapter = new UploadAdapterAjax(config);\n } else {\n this._uploadAdapter.setHandlerUrl(this.getHandlerUrl());\n }\n }\n\n close() {\n super.close();\n if (!this._files) {\n this.resetFileInputElement();\n }\n this._files = null;\n }\n\n onProgress(e) {\n if (e.lengthComputable && this._uploadCurrent) {\n // e.loaded in Chrome and Safari contains POST request upload progress, not file upload progress, so try to normalize\n this._uploadCurrent.loaded = e.total > 0 ? Math.round(e.loaded / e.total * this._uploadCurrent.total) : 0;\n this.renderUploadProgressDialog();\n }\n }\n\n onNextQueueUploadFinished() {\n if (this._uploadCurrent) {\n if (!this._uploadCurrent.isDirectory) {\n this._uploadCurrent.loaded = this._uploadCurrent.total;\n this._totalUploadedSize += this._uploadCurrent.total;\n this.renderUploadProgressDialog();\n }\n }\n super.onNextQueueUploadFinished();\n }\n}\n\nexport default MultipleUpload;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { PopupForm as BasePopupForm, escapeHtml, addUrlParams, getComponent, Locale } from 'jsw';\n\nclass PopupForm extends BasePopupForm {\n _initConfiguration(config) {\n super._initConfiguration(config);\n\n this._handlerUrl = this._getConfigParam('handlerUrl', '');\n }\n\n getHandlerUrl(params, fileDir) {\n let currentDir = getComponent('fm-content').getCurrentDir();\n\n if (fileDir) {\n currentDir += (currentDir.charAt(0) === '/') ? `${fileDir}` : `/${fileDir}`;\n }\n currentDir = currentDir.replace('//', '/');\n\n return addUrlParams(\n this._handlerUrl,\n `currentDir=${encodeURIComponent(currentDir)}${params ? `&${params}` : ''}`,\n );\n }\n\n render() {\n super.render();\n\n this.setBoxType('form-box');\n this.setTitle(this.lmsg('title'));\n }\n\n reset() {\n this.show();\n }\n\n onSubmitEvent(event) {\n this.onSubmit();\n event.preventDefault();\n return false;\n }\n\n initOnSubmitEvent() {\n const form = document.getElementById(`${this._id}-form`);\n form._formSubmit = form.submit;\n form.submit = this.onSubmit.bind(this);\n form.addEventListener('submit', this.onSubmitEvent.bind(this));\n }\n\n disable() {\n document.getElementById(this._rightActionButtonsAreaId).querySelectorAll('.btn.action').forEach(sendButton => {\n this._okButtonTitle = sendButton.innerHTML;\n sendButton.innerHTML = (\n `<span class=\"wait\">${Locale.getSection('components.buttons').lmsg('wait')}</span>`\n );\n });\n\n document.getElementById(this._rightActionButtonsAreaId).querySelectorAll('.btn').forEach(actionButton => {\n actionButton.disabled = true;\n actionButton.classList.add('disabled');\n });\n }\n\n enable() {\n document.getElementById(this._rightActionButtonsAreaId).querySelectorAll('.btn.action').forEach(sendButton => {\n sendButton.innerHTML = this._okButtonTitle;\n });\n document.getElementById(this._rightActionButtonsAreaId).querySelectorAll('.btn').forEach(actionButton => {\n actionButton.disabled = false;\n actionButton.classList.remove('disabled');\n });\n }\n\n initSelectionHint() {\n const filesNumber = this._selectedItems.length;\n\n if (1 === filesNumber) {\n this.setHint1(this.lmsg('hintFile', { file: `<b>${escapeHtml(this._selectedItems[0].name)}</b>` }));\n } else {\n this.setHint1(this.lmsg('hintFiles', { number: filesNumber }));\n }\n }\n\n onOkHandlerException(transport, exception) {\n this._addErrorMessage(`Internal error: ${exception}`);\n }\n\n onOkHandlerCreate() {\n this.disable();\n }\n\n onOkHandlerComplete() {\n this.enable();\n }\n}\n\nexport default PopupForm;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { render, escapeHtml, getComponent, addStatusMessage, Locale, api } from 'jsw';\nimport PopupForm from './PopupForm';\n\nclass Rename extends PopupForm {\n render() {\n super.render();\n\n render(document.getElementById(this._contentAreaId), (\n `<form method=\"post\" action=\"\" enctype=\"application/x-www-form-urlencoded\" id=\"${this._id}-form\">` +\n '<div>' +\n '<div class=\"form-row\">' +\n '<div class=\"field-name\">' +\n `<label for=\"${this._id}-file-name\">${this.lmsg('fileName')}</label>` +\n '</div>' +\n '<div class=\"field-value\">' +\n `<input name=\"newFileName\" id=\"${this._id}-file-name\" value=\"\" class=\"f-middle-size input-text\" type=\"text\">` +\n '<span class=\"field-errors\" style=\"display: none;\"></span>' +\n '</div>' +\n '</div>' +\n '</div>' +\n '</form>'\n ));\n\n this.initOnSubmitEvent();\n\n this.addRightButton(Locale.getSection('components.buttons').lmsg('ok'), this.onSubmit, true, true);\n this.addRightButton(Locale.getSection('components.buttons').lmsg('cancel'), this.hide, false, false);\n\n this.reset(this._config);\n }\n\n reset(options) {\n this._itemId = options.itemId;\n this._fileName = options.fileName;\n\n this.setHint(\n this.lmsg('hint', {\n file: `<b>${escapeHtml(this._fileName)}</b>`,\n }),\n );\n\n this._clearMessages();\n\n document.getElementById(`${this._id}-file-name`).value = this._fileName;\n\n super.reset();\n\n try {\n document.getElementById(`${this._id}-file-name`).focus();\n } catch {}\n }\n\n onSubmit() {\n const fileName = document.getElementById(`${this._id}-file-name`).value;\n\n this.onOkHandlerCreate();\n api.post(this.getHandlerUrl(), {\n ids: this._itemId,\n newFileName: fileName,\n })\n .then(result => this.onOkHandlerSuccess(result))\n .catch(e => this.onOkHandlerException(null, e))\n .finally(() => this.onOkHandlerComplete());\n }\n\n onOkHandlerSuccess(response) {\n this._clearMessages();\n const message = response.statusMessages[0];\n if ('info' === message.status) {\n getComponent('fm-content').reload();\n getComponent('fm-tree').reloadPath(getComponent('fm-content').getCurrentDir());\n addStatusMessage('info', message.content);\n\n this.hide();\n } else {\n this._addErrorMessage(message.content);\n }\n }\n}\n\nexport default Rename;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport { render, getComponent, escapeHtml, clearStatusMessages, addStatusMessage, FileManager, Locale } from 'jsw';\nimport PopupForm from './PopupForm';\nimport ErrorDialog from './ErrorDialog';\n\nclass Upload extends PopupForm {\n breakQueueException = new Error('UploadQueue break');\n\n _initConfiguration(config) {\n super._initConfiguration(config);\n\n this._selectFilesDialogId = `${this._id}-select-files-dialog`;\n this._selectFilesDialogItemsAreaId = `${this._selectFilesDialogId}-items`;\n }\n\n render() {\n super.render();\n\n this.setHint(this.lmsg('hint') + getComponent('fm-content').getReadonlyHint());\n\n render(document.getElementById(this._contentAreaId), (\n `<div id=\"${this._selectFilesDialogId}\">` +\n `<div id=\"${this._selectFilesDialogItemsAreaId}\"></div>` +\n '<div class=\"form-row\">' +\n '<div class=\"single-row\">' +\n `<a href=\"#\" class=\"s-btn sb-item-add\"><i><i><i><span>${this.lmsg('addFileItem')}</span></i></i></i></a>` +\n '</div>' +\n '</div>' +\n '</div>'\n ));\n\n this.addSelectFilesItem();\n\n document.getElementById(this._selectFilesDialogId).querySelectorAll('.sb-item-add').forEach(element => {\n element.addEventListener('click', event => {\n this.onAddSelectFilesItemClick(event);\n });\n });\n\n this.addRightButton(Locale.getSection('components.buttons').lmsg('ok'), this.onSubmit, false, false);\n this.addRightButton(Locale.getSection('components.buttons').lmsg('cancel'), this.onCancel, false, false);\n }\n\n reset() {\n this._clearMessages();\n document.getElementById(this._selectFilesDialogItemsAreaId).innerHTML = '';\n this._uploadCanceled = false;\n\n super.reset();\n }\n\n onSubmit() {\n this._clearMessages();\n this.prepareUploadQueue();\n this.startUploadQueue();\n }\n\n startUploadQueue() {\n if (!this.checkUploadQueue()) {\n return;\n }\n if (this.hasExistingDirectories()) {\n return;\n }\n if (this.hasExistingFilesUploadQueue()) {\n this.hide();\n this._getConfigParam('onOpenReplaceExistingFilesDialog')({\n items: this._uploadExistingFilesQueue,\n onSkipClick: this.onSkipExistingFilesClick.bind(this),\n onReplaceClick: this.onReplaceExistingFilesClick.bind(this),\n });\n return;\n }\n this.showUploadProgressDialog();\n this.startNextQueueUpload();\n }\n\n onCancel() {\n this.hide();\n }\n\n onAddSelectFilesItemClick(event) {\n this.addSelectFilesItem();\n event.preventDefault();\n event.stopPropagation();\n }\n\n addSelectFilesItem() {\n const itemsArea = document.getElementById(this._selectFilesDialogItemsAreaId);\n const itemsCount = itemsArea.querySelectorAll('form').length;\n\n const itemId = `${this._selectFilesDialogId}-item-${itemsCount}`;\n const item = (\n `<form id=\"${itemId}\" action=\"${this.getHandlerUrl()}\" method=\"post\" enctype=\"multipart/form-data\" target=\"_uploadIFrame\">` +\n `<input name=\"forgery_protection_token\" type=\"hidden\" value=\"${document.getElementById('forgery_protection_token').content}\"/>` +\n '<div class=\"form-row\">' +\n '<input name=\"file[]\" type=\"file\"/>' +\n `${itemsCount\n ? ` <a href=\"#\" class=\"s-btn sb-item-remove\"><i><i><i><span> ${Locale.getSection('components.buttons').lmsg('remove')}</span></i></i></i></a>`\n : ''}` +\n '</div>' +\n '</form>'\n );\n\n render(itemsArea, item);\n\n if (itemsCount) {\n document.getElementById(itemId).querySelectorAll('.sb-item-remove').forEach(element => {\n element.addEventListener('click', event => {\n this.onRemoveSelectFilesItemClick(event);\n });\n });\n }\n }\n\n onRemoveSelectFilesItemClick(event) {\n const item = event.target.closest('form');\n if (item) {\n item.parentNode.removeChild(item);\n }\n event.preventDefault();\n }\n\n checkUploadQueue() {\n return this.hasFilesInUploadQueue() && this.hasNormalSizeOfFilesInUploadQueue();\n }\n\n hasFilesInUploadQueue() {\n if (0 === this._uploadQueue.length) {\n this._addErrorMessage(this.lmsg('noFilesSelectedForUpload'));\n return false;\n }\n return true;\n }\n\n hasNormalSizeOfFilesInUploadQueue() {\n const uploadMaxFileSize = getComponent('fm-content').getUploadMaxFileSize();\n if (!uploadMaxFileSize) {\n return true;\n }\n for (let i = 0; i < this._uploadQueue.length; i++) {\n if (this._uploadQueue[i].total > uploadMaxFileSize) {\n this._addErrorMessage(this.lmsg('errorFileIsLarger', {\n filename: this._uploadQueue[i].savedFileName,\n }));\n return false;\n }\n }\n return true;\n }\n\n hasExistingFilesUploadQueue() {\n this._uploadExistingFilesQueue = [];\n const currentDirectoryFiles = this.getCurrentDirectoryFiles();\n const currentDir = getComponent('fm-content').getCurrentDir();\n this._uploadQueue.forEach(queueItem => {\n let filePath = (currentDir + (queueItem.fullPath || '/')).replace(/\\/$/g, '');\n if (queueItem.isFile) {\n filePath += `/${encodeURIComponent(queueItem.savedFileName)}`;\n }\n if (0 <= currentDirectoryFiles.indexOf(filePath)) {\n this._uploadExistingFilesQueue.push(queueItem);\n }\n });\n return 0 < this._uploadExistingFilesQueue.length;\n }\n\n hasExistingDirectories() {\n this._uploadExistingFilesQueue = [];\n const currentDirectoryFiles = this.getCurrentDirectoryFiles();\n const currentDir = getComponent('fm-content').getCurrentDir();\n if (this._uploadQueue.length === 0) {\n return false;\n }\n const queueItem = this._uploadQueue[0];\n if (queueItem.fullPath) {\n let rootPath = queueItem.fullPath.replace(/^\\/|\\/$/g, '').split('/');\n if (rootPath.length === 0) {\n return false;\n }\n rootPath = `${currentDir}/${encodeURIComponent(rootPath[0])}`;\n if (0 <= currentDirectoryFiles.indexOf(rootPath)) {\n this._addErrorMessage(Locale.getSection('smb.controllers.file-manager.create-directory').lmsg('errorDirectoryExists'));\n this.hide();\n return true;\n }\n }\n\n return false;\n }\n\n getCurrentDirectoryFiles() {\n const filenames = [];\n const currentDir = getComponent('fm-content').getCurrentDir();\n document.getElementById('fm-table').querySelectorAll('tr').forEach(selectedRow => {\n const fileName = selectedRow.getAttribute('data-row-id');\n if (fileName) {\n filenames.push(`${currentDir}/${fileName.replace(/\\+/g, '%20')}`);\n }\n });\n return filenames;\n }\n\n prepareUploadQueue() {\n this._uploadQueue = [];\n const items = document.getElementById(this._selectFilesDialogItemsAreaId).querySelectorAll('form');\n items.forEach(formElement => {\n let fileName = formElement.querySelector('input[type=\"file\"]').value;\n if (!fileName) {\n return;\n }\n\n // IE saves full path to file, but we needed in file name only\n fileName = fileName.replace(/\\\\/g, '/').replace(/.*\\//, '');\n\n const queueItem = {\n formElement,\n inputId: formElement.id,\n progressId: `${formElement.id}-progress`,\n savedFileName: fileName,\n status: 'PENDING',\n type: 'unknown',\n };\n this._uploadQueue.push(queueItem);\n });\n }\n\n showUploadProgressDialog() {\n this.hide();\n this.renderUploadProgressDialog();\n }\n\n renderUploadProgressDialog() {\n let progress = -1;\n\n if (this._totalUploadedSize !== undefined) {\n progress = this._totalUploadedSize;\n\n if (this._uploadCurrent && this._uploadCurrent.loaded) {\n progress += this._uploadCurrent.loaded;\n }\n\n progress = this.getTotalUploadPercent(progress);\n }\n\n this._getConfigParam('onChangeUploadProgress')({\n status: 'running',\n items: this._uploadQueue,\n onCancel: this.onCancelUploadClick.bind(this),\n progress,\n });\n }\n\n onCancelUploadClick() {\n this._getConfigParam('onCancel')();\n this._uploadCanceled = true;\n this._uploadAdapter.cancel();\n }\n\n onSkipExistingFilesClick() {\n this._uploadExistingFilesQueue.forEach(queueItem => {\n for (let i = 0; i < this._uploadQueue.length; i++) {\n if (queueItem.savedFileName === this._uploadQueue[i].savedFileName) {\n this._uploadQueue.splice(i, 1);\n break;\n }\n }\n });\n if (!this.hasFilesInUploadQueue()) {\n this.close();\n return;\n }\n this.showUploadProgressDialog();\n this.startNextQueueUpload();\n }\n\n onReplaceExistingFilesClick() {\n this.showUploadProgressDialog();\n this.startNextQueueUpload();\n }\n\n prepareUploadAdapter() {\n if (!this._uploadAdapter) {\n const config = {\n contentAreaId: this._contentAreaId,\n handlerUrl: this.getHandlerUrl(),\n startUploadHandler: () => {\n if (this._scheduleStartUpload) {\n this._scheduleStartUpload = null;\n this.startNextQueueUpload();\n }\n },\n finishUploadHandler: this.onNextQueueUploadFinished.bind(this),\n };\n this._uploadAdapter = new FileManager.UploadAdapterIframe(config);\n }\n }\n\n startNextQueueUpload() {\n this.prepareUploadAdapter();\n\n if (!this._uploadAdapter.isReady()) {\n this._scheduleStartUpload = true;\n return;\n }\n\n if (this._uploadCurrent) {\n return;\n }\n\n if (this._uploadCanceled) {\n this.onAllQueueUploadFinished();\n return;\n }\n\n this._started = false;\n\n this.processUploadQueue();\n\n if (!this._started) {\n this.onAllQueueUploadFinished();\n return;\n }\n\n this.renderUploadProgressDialog();\n }\n\n processUploadQueue() {\n try {\n this._uploadQueue.forEach(this.processUploadItem.bind(this));\n } catch (e) {\n if (e !== this.breakQueueException) {\n throw e;\n }\n }\n }\n\n processUploadItem(queueItem) {\n if ('PENDING' !== queueItem.status) {\n return;\n }\n this._started = true;\n this.updateUploadProgressItemStatus(queueItem, 'UPLOADING');\n this._uploadCurrent = queueItem;\n queueItem.formElement.querySelectorAll('input[name=\"fileName\"]').forEach(element => {\n element.value = queueItem.savedFileName;\n });\n queueItem.formElement.submit();\n throw this.breakQueueException;\n }\n\n onNextQueueUploadFinished() {\n if (!this._uploadCurrent) {\n return;\n }\n\n const queueItem = this._uploadCurrent;\n this._uploadCurrent = null;\n\n const status = this.getNextQueueUploadResult();\n switch (status.status) {\n case 'SUCCESS':\n case 'CANCELED':\n this.updateUploadProgressItemStatus(queueItem, status.status);\n this.startNextQueueUpload();\n break;\n case 'ERROR':\n default:\n this.updateUploadProgressItemStatus(queueItem, 'ERROR');\n this.onQueueUploadFailed(status);\n break;\n }\n }\n\n getNextQueueUploadResult() {\n if (this._uploadCanceled) {\n return {\n status: 'CANCELED',\n message: '',\n };\n }\n return this._uploadAdapter.getResult();\n }\n\n onAllQueueUploadFinished() {\n getComponent('fm-content').reload();\n this.reportUploadFinished.bind(this).delay(0.5);\n }\n\n onQueueUploadFailed(status) {\n const errorItems = [];\n this._uploadQueue.forEach(item => {\n errorItems.push({\n name: item.savedFileName,\n type: item.type,\n status: item.status,\n });\n });\n\n this.close();\n\n new ErrorDialog({\n errorMessage: status.message,\n message: this.lmsg('failed'),\n locale: this.getLocale(),\n items: errorItems,\n });\n }\n\n reportUploadFinished() {\n let messageType = null;\n let message = null;\n\n clearStatusMessages();\n\n this.close();\n\n if (0 === this._uploadQueue.length) {\n return;\n }\n\n const status = this.getQueueStatus();\n\n if (this._uploadCanceled) {\n message = 'uploadCanceled';\n messageType = 'warning';\n } else if (status.completed > 0) {\n message = 'uploadFinished';\n messageType = 'info';\n } else {\n message = 'uploadFinishedNoFiles';\n messageType = 'warning';\n }\n\n addStatusMessage(messageType, this.lmsg(message, {\n total: status.total,\n pending: status.pending,\n uploading: status.uploading,\n completed: status.completed,\n failed: status.failed,\n folder: escapeHtml(getComponent('fm-content').getCurrentDir()),\n }));\n }\n\n updateUploadProgressItemStatus(queueItem, status) {\n queueItem.status = status;\n this.renderUploadProgressDialog();\n }\n\n getQueueStatus() {\n const status = {\n completed: 0,\n pending: 0,\n failed: 0,\n uploading: 0,\n canceled: 0,\n total: this._uploadQueue.length,\n };\n\n this._uploadQueue.forEach(queueItem => {\n switch (queueItem.status) {\n case 'PENDING':\n status.pending++;\n break;\n case 'UPLOADING':\n status.uploading++;\n break;\n case 'ERROR':\n status.failed++;\n break;\n case 'SUCCESS':\n status.completed++;\n break;\n case 'CANCELED':\n status.canceled++;\n break;\n }\n });\n\n return status;\n }\n\n close() {\n if (this._replaceExistingFilesDialog) {\n this._replaceExistingFilesDialog.remove();\n this._replaceExistingFilesDialog = null;\n }\n\n this._getConfigParam('onClose')();\n\n this.hide();\n }\n\n getTotalUploadPercent(totalUploaded) {\n return this._totalSize > 0 ? Math.round(totalUploaded / this._totalSize * 100) : 100;\n }\n}\n\nexport default Upload;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport AjaxUploadRequest from './AjaxUploadRequest';\n\nclass UploadAdapterAjax {\n constructor({ handlerUrl, startUploadHandler, finishUploadHandler, progressUploadHandler }) {\n this._handlerUrl = handlerUrl;\n this._startUploadHandler = startUploadHandler;\n this._finishUploadHandler = finishUploadHandler;\n this._progressUploadHandler = progressUploadHandler;\n }\n\n setHandlerUrl(handlerUrl) {\n this._handlerUrl = handlerUrl;\n }\n\n upload(file, params) {\n const formData = new FormData();\n if (file) {\n formData.append(encodeURIComponent(file.name), file);\n }\n formData.append('forgery_protection_token', document.getElementById('forgery_protection_token').content);\n if (params) {\n $H(params).each(({ key, value }) => {\n formData.append(key, value);\n });\n }\n\n this._request = new AjaxUploadRequest(\n this._handlerUrl,\n {\n method: 'post',\n postBody: formData,\n onCreate: this.onCreate,\n onSuccess: this.onSuccess,\n onFailure: this.onFailure,\n onException: this.onException,\n onProgress: this._progressUploadHandler,\n },\n );\n }\n\n createFolder(params) {\n const formData = new FormData();\n if (params) {\n $H(params).each(({ key, value }) => {\n formData.append(key, value);\n });\n }\n this._request = new AjaxUploadRequest(\n this._handlerUrl,\n {\n method: 'post',\n postBody: formData,\n onCreate: this.onCreate,\n onSuccess: this.onSuccess,\n onFailure: this.onFailure,\n onException: this.onException,\n onProgress: this._progressUploadHandler,\n },\n );\n }\n\n onCreate = () => {\n this._startUploadHandler();\n };\n\n onSuccess = ({ responseText }) => {\n try {\n this._result = JSON.parse(responseText);\n } catch {\n this._result = {\n status: 'ERROR',\n message: 'No upload response',\n };\n }\n this._finishUploadHandler();\n };\n\n onFailure = ({ statusText }) => {\n this._result = {\n status: 'ERROR',\n message: statusText,\n };\n this._finishUploadHandler();\n };\n\n onException = (transport, exception) => {\n this._result = {\n status: 'ERROR',\n message: `Internal error: ${exception}`,\n };\n this._finishUploadHandler();\n };\n\n isReady() {\n return true;\n }\n\n getResult() {\n return this._result;\n }\n\n cancel() {\n this._request.abort();\n this._finishUploadHandler();\n }\n}\n\nexport default UploadAdapterAjax;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nexport default {\n _isMultipleFileSupported: null,\n _isUploadProgressSupported: null,\n\n isAdvancedUploadSupported() {\n return this.isMultipleFileSupported() &&\n this.isFormDataSupported() &&\n this.isFileApiSupported();\n },\n\n isMultipleFileSupported() {\n if (null === this._isMultipleFileSupported) {\n const element = new Element('input', { type: 'file' });\n this._isMultipleFileSupported = 'multiple' in element;\n }\n return this._isMultipleFileSupported;\n },\n\n isFormDataSupported() {\n return typeof FormData !== 'undefined';\n },\n\n isFileApiSupported() {\n return typeof File !== 'undefined';\n },\n\n isUploadProgressSupported() {\n if (null === this._isUploadProgressSupported) {\n const transport = Ajax.getTransport();\n this._isUploadProgressSupported = transport && typeof transport.upload !== 'undefined';\n }\n return this._isUploadProgressSupported;\n },\n};\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nimport Explorer from './Explorer';\n\nexport default Explorer;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\nconst resizeBlocks = () => {\n const minBlockHeight = 200;\n\n const block = document.querySelector('.objects-management-box');\n if (!block) {\n window.removeEventListener('resize', resizeBlocks, false);\n return;\n }\n const blockLayout = Element.getLayout(block);\n\n let newBlockHeight = document.body.clientHeight -\n Element.cumulativeOffset(block)[1] -\n blockLayout.get('border-top') -\n blockLayout.get('border-bottom');\n\n const mainInnerEl = document.querySelector('.pul-layout__main-inner');\n if (mainInnerEl) {\n newBlockHeight -= parseInt(Element.getStyle(mainInnerEl, 'paddingBottom'));\n }\n\n if (document.querySelector('.pul-layout__footer')) {\n newBlockHeight -= Element.getHeight(document.querySelector('.pul-layout__footer'));\n }\n if (newBlockHeight < minBlockHeight) {\n newBlockHeight = minBlockHeight;\n }\n\n document.getElementById('objects-details').style.height = `${newBlockHeight}px`;\n document.getElementById('objects-list-content-area').style.height = `${newBlockHeight}px`;\n\n const objectContentEl = document.getElementById('objects-details').querySelector('.objects-content');\n if (objectContentEl) {\n newBlockHeight -= parseInt(Element.getStyle(objectContentEl, 'paddingTop')) || 0;\n objectContentEl.style.height = `${newBlockHeight - (Element.cumulativeOffset(objectContentEl)[1] - Element.cumulativeOffset(block)[1])}px`;\n }\n};\n\nexport default resizeBlocks;\n","// Copyright 1999-2025. WebPros International GmbH. All rights reserved.\n\n// convert a Unicode string to a string in which\n// each 16-bit unit occupies only one byte\n// https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/btoa#unicode_strings\nconst toBinary = (string: string): string => {\n const codeUnits = new Uint16Array(string.length);\n for (let i = 0; i < codeUnits.length; i++) {\n codeUnits[i] = string.charCodeAt(i);\n }\n return String.fromCharCode(...new Uint8Array(codeUnits.buffer));\n};\n\n// convert string in which each 16-bit unit\n// occupies only one byte to a Unicode string\nconst fromBinary = (binary: string): string => {\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < bytes.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return String.fromCharCode(...new Uint16Array(bytes.buffer));\n};\n\nexport const btoaUnicode = (string: string): string => btoa(toBinary(string));\n\nexport const atobUnicode = (binary: string): string => fromBinary(atob(binary));\n"],"names":["AjaxUploadRequest","Ajax","Request","constructor","url","options","super","onProgress","this","request","transport","upload","onprogress","args","setRequestHeaders","ErrorDialog","ListPopup","_initConfiguration","config","_cls","_getConfigParam","_titleCls","_errorMessage","_message","_items","render","setTitle","lmsg","_addErrorMessage","setHint1","forEach","item","addItem","addRightButton","onClose","bind","resizeList","hide","_itemClass","statusClass","statusTitle","status","statusHtml","document","getElementById","_itemsAreaId","escapeHtml","type","name","Explorer","List","_renderTarget","oldElements","_componentElement","childNodes","_id","querySelector","UploadCapabilities","isAdvancedUploadSupported","_dropArea","DropArea","locale","dragAndDropArea","onDrop","files","showPopup","MultipleUpload","_uploadPopupParams","setTimeout","_addEvents","window","addEventListener","resizeBlocks","debouncedResizeBlocks","debounce","contentResizeObserver","ResizeObserver","observe","remove","removeEventListener","unobserve","cancel","_registerComponent","registerComponent","_getActionBoxElement","addContentTableClickHandler","_tableId","event","dir","target","closest","itemDir","getItemByName","dataset","isUtf8","has4ByteChar","preventDefault","addStatusMessage","changeDirectory","file","itemFile","getItemById","callDefaultItemAction","newDirectory","absolutePath","resetSearch","_state","currentDir","reload","encodeURIComponent","getCurrentDir","isTrashEnabled","trashEnabled","getReadonlyHint","currentDirReadonly","_pathbar","readonlyHint","getUploadMaxFileSize","uploadMaxFileSize","PopupClass","id","domainId","Locale","loadSection","replace","attrs","component","getComponent","getAttribute","reset","calculateSize","params","skipConfirmation","toJsonPayload","submitHandler","ids","disable","api","post","then","response","querySelectorAll","selectedRow","fileNameElement","fileName","firstChild","nodeValue","fileSizes","innerHTML","clearStatusMessages","statusMessages","content","finally","enable","execGroupOperation","deleteFile","items","getSelectedItems","force","subtype","messageBox","SUBTYPE_DELETE","needAttention","needAttentionText","getLocale","formatMessage","count","length","needAttentionBlockSubmit","needAttentionOnChange","value","beforeSendRequest","sendRequest","payload","onSuccess","_tree","reloadPath","purgeFile","purgeAll","processReloadError","message","showInternalError","directoriesTree","itemActions","getSection","createEditorAction","mode","props","getFileParams","line","URLSearchParams","location","search","set","btoaUnicode","JSON","stringify","pathname","pageable","fileManagerUrl","isDisabledItem","isSystem","rename","Rename","renderTo","cls","handlerUrl","getFileManagerUrl","itemId","extractArchive","ExtractArchive","titleCls","download","redirect","addUrlParams","permissions","isDirectory","icon","getTypeIcon","imageView","imageItems","_data","filter","FTYPE_IMAGE","FTYPE_VECTOR_IMAGE","slides","map","PopupSlider","title","current","indexOf","view","textEdit","textCodeEditor","_additionalColumns","_dataUrl","_copyMoveTreeConfig","applyTo","data","dataUrl","rootNodeTitle","waitMessage","onOpenReplaceExistingFilesDialog","onChangeUploadProgress","onCancel","redraw","setDirectory","_searchValue","recreate","_isColumnSelectionPresent","containerView","children","splice","push","ce","_getActionBox","defaultAction","actions","find","action","default","href","_itemActions","style","display","loadingContainer","_onReloadComplete","_addResponsiveHtml","_addPathbar","_getPathbarHtml","_getColumns","columns","list","COLUMN_SELECTION","headerCls","hideDisabled","header","dataIndex","renderer","escapeAttribute","sortable","getItemActions","some","onclick","filePerms","isVisible","Cookie","get","COLUMN_ACTIONS","getRedirectActionUrl","index","lastIndexOf","slice","onListGlobalCheckboxClick","rGlobalCheckbox","globalCheckbox","checked","_handleSearchLoadingChange","_searchRequest","abort","UAT","dispatchAction","q","xhr","XMLHttpRequest","cursor","prevDataLength","redrawPartial","warning","chunk","split","entry","parse","lineNumber","process","responseText","onload","onerror","error","open","send","loading","PopupForm","_contentAreaId","initOnSubmitEvent","onSubmit","_config","_fileName","_selectedItems","initSelectionHint","parentNode","removeChild","_clearMessages","overwriteExisting","getHandlerUrl","onOkHandlerCreate","result","onOkHandlerSuccess","catch","e","onOkHandlerException","onOkHandlerComplete","onGroupExtractSuccess","_renderContentArea","_actionButtonsId","classList","add","Upload","_files","resetFileInputElement","emptyFn","_fileInputId","_uploadCanceled","show","prepareUploadQueue","startUploadQueue","checkUploadQueue","_uploadQueue","_totalUploadedSize","_totalSize","_currentPaths","Promise","all","async","fileSource","i","isFile","getFile","addUploadQueue","fullPath","numFile","queueItem","progressId","loaded","total","savedFileName","fileSize","getFileSize","entryFile","resolve","size","processUploadItem","_started","updateUploadProgressItemStatus","_uploadCurrent","_handlerUrl","pop","_uploadAdapter","setHandlerUrl","newDirectoryName","recursively","breakQueueException","prepareUploadAdapter","startUploadHandler","_scheduleStartUpload","startNextQueueUpload","finishUploadHandler","onNextQueueUploadFinished","progressUploadHandler","UploadAdapterAjax","close","lengthComputable","Math","round","renderUploadProgressDialog","BasePopupForm","fileDir","charAt","setBoxType","onSubmitEvent","form","_formSubmit","submit","_rightActionButtonsAreaId","sendButton","_okButtonTitle","actionButton","disabled","filesNumber","number","exception","_itemId","setHint","focus","newFileName","_defineProperty","Error","_selectFilesDialogId","_selectFilesDialogItemsAreaId","addSelectFilesItem","element","onAddSelectFilesItemClick","hasExistingDirectories","hasExistingFilesUploadQueue","_uploadExistingFilesQueue","onSkipClick","onSkipExistingFilesClick","onReplaceClick","onReplaceExistingFilesClick","showUploadProgressDialog","stopPropagation","itemsArea","itemsCount","onRemoveSelectFilesItemClick","hasFilesInUploadQueue","hasNormalSizeOfFilesInUploadQueue","filename","currentDirectoryFiles","getCurrentDirectoryFiles","filePath","rootPath","filenames","formElement","inputId","progress","undefined","getTotalUploadPercent","onCancelUploadClick","contentAreaId","FileManager","UploadAdapterIframe","isReady","onAllQueueUploadFinished","processUploadQueue","getNextQueueUploadResult","onQueueUploadFailed","getResult","reportUploadFinished","delay","errorItems","errorMessage","messageType","getQueueStatus","completed","pending","uploading","failed","folder","canceled","_replaceExistingFilesDialog","totalUploaded","_startUploadHandler","_result","_finishUploadHandler","statusText","_progressUploadHandler","formData","FormData","append","$H","each","key","_request","method","postBody","onCreate","onFailure","onException","createFolder","_isMultipleFileSupported","_isUploadProgressSupported","isMultipleFileSupported","isFormDataSupported","isFileApiSupported","Element","File","isUploadProgressSupported","getTransport","block","blockLayout","getLayout","newBlockHeight","body","clientHeight","cumulativeOffset","mainInnerEl","parseInt","getStyle","getHeight","height","objectContentEl","string","btoa","codeUnits","Uint16Array","charCodeAt","String","fromCharCode","Uint8Array","buffer","toBinary","atobUnicode","binary","bytes","fromBinary","atob"],"sourceRoot":""}
Submit
FILE
FOLDER
INFO
Name
Size
Permission
Action
explorer.js
37079 bytes
0644
explorer.js.map
106133 bytes
0644
file-name-popup-form.js
1086 bytes
0644
file-name-popup-form.js.map
2468 bytes
0644
N4ST4R_ID | Naxtarrr