Files
cms-filelist/Resources/Public/JavaScript/file-list-replace-handler.js
T

14 lines
3.5 KiB
JavaScript

/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
import{html as l,nothing as h}from"lit";import{until as v}from"lit/directives/until.js";import p from"@typo3/core/event/regular-event.js";import{FileListActionEvent as y}from"@typo3/filelist/file-list-actions.js";import n from"@typo3/backend/modal.js";import f from"@typo3/core/ajax/ajax-request.js";import"@typo3/core/ajax/ajax-response.js";import u from"@typo3/backend/notification.js";import k from"@typo3/backend/viewport.js";import{FormatUtility as w}from"@typo3/backend/utility/format-utility.js";import{ThumbnailSize as _}from"@typo3/backend/element/thumbnail-element.js";import{topLevelModuleImport as $}from"@typo3/backend/utility/top-level-module-import.js";import a from"~labels/filelist.messages";import F from"~labels/core.common";import L from"~labels/core.core";import b from"~labels/filelist.mod_file_list";class q{constructor(){new p(y.replace,e=>{const t=e.detail.resources[0],m=n.advanced({title:a.get("file_replace.title",[t.name]),type:n.types.default,size:n.sizes.small,content:l`${v(this.loadEditor(t.identifier),l`<typo3-backend-spinner></typo3-backend-spinner>`)}`,buttons:[{text:F.get("cancel"),btnClass:"btn-default",name:"cancel",trigger:()=>{m.hideModal()}},{text:a.get("file_replace.button.replace"),btnClass:"btn-primary",name:"rename",trigger:()=>{m.querySelector("form")?.requestSubmit()}}],callback:function(o){new p("submit",c=>{c.preventDefault();const d=new FormData(c.target);d.set("uid",t.uid.toString()),new f(TYPO3.settings.ajaxUrls.resource_replace).post(d).then(async g=>{const s=await g.resolve();s.status.length>0&&s.status.forEach(r=>{s.success?u.success(r.title,r.message):u.error(r.title,r.message)}),k.ContentContainer.refresh(),o.hideModal()})}).delegateTo(o,"form")}})}).bindTo(document)}async loadEditor(e){const t=await(await new f(TYPO3.settings.ajaxUrls.resource_gather).withQueryArguments({identifier:e}).get()).resolve();return await $("@typo3/backend/element/datetime-element.js"),this.composeEditForm(t)}composeEditForm(e){const i=new URL(top.TYPO3.settings.Resource.thumbnailUrl,window.origin);return i.searchParams.set("identifier",e.uid.toString(10)),l`<div class=file-replace-dialog>${a.get("file_replace.intro",[e.name])}<div class=file-replace-dialog-summary>${e.hasPreview?l`<div class=file-replace-dialog-summary-thumbnail><typo3-backend-thumbnail url=${i} size=${_.large} width=96 keepaspectratio></typo3-backend-thumbnail></div>`:h}<div class=file-replace-dialog-summary-info><dl><dt>${b.get("c_name")}</dt><dd>${e.name}</dd><dt>${b.get("c_size")}</dt><dd>${w.fileSizeAsString(e.size)}</dd><dt>${L.get("labels.crdate")}</dt><dd><typo3-backend-datetime format=datetime datetime=${e.createdAt}></typo3-backend-datetime></dd></dl></div></div><form><div class=form-group><label class=form-label for=file_replace>${a.get("file_replace.new_file.label")}</label> <input id=file_replace type=file class=form-control name=replace_1></div><div class=form-check><input type=checkbox value=1 id=keepFilename name=keepFilename class=form-check-input checked> <label class=form-check-label for=keepFilename>${a.get("file_replace.keepFilename.label",[e.name])}</label></div></form></div>`}}var x=new q;export{x as default};