Here is the Spanish translation of the provided HTML, with the `lang` attribute set to `es`, the language switcher marking ES as active, and the title updated with `[ES]`. ```html
DataTransferPageRest.ktAnotaciones: PostConstruct, Valid, GetMapping, RequestBody, PathVariable, Autowired, return, RequestMapping, RestController, PostMapping, RequestParam
Clases: DataTransferPageRest
Super-tipo(s): AbstractDynamicPageRest
Funciones (7): postConstruct, downloadAll, getForm, watchFields, isLoggedInUserObserver, hasEditAccess, convertData
Propiedades (25): attachmentsService, attachmentsServicesRest, dataTransferAreaPagesRest, dataTransferAreaDao, groupService, pair, dbObj, dto, id, pair, dbObj, dto, layout, attachmentsFieldset, fieldSet, id, userWantsToOserveArea, loggedInUser, dbDto, dbObj, newObservers, user, dbObj, dto, accessGroupUsers
Importaciones: 30 paquetes
Paquete: org.projectforge.plugins.datatransfer.rest
package org.projectforge.plugins.datatransfer.rest
import org.projectforge.business.group.service.GroupService
import org.projectforge.business.user.service.UserService
import org.projectforge.common.NumberOfBytes
import org.projectforge.framework.jcr.AttachmentsService
import org.projectforge.framework.persistence.user.api.ThreadLocalUserContext
import org.projectforge.framework.persistence.user.entities.PFUserDO
import org.projectforge.framework.utils.NumberHelper
import org.projectforge.menu.MenuItem
import org.projectforge.menu.MenuItemTargetType
import org.projectforge.model.rest.RestPaths
import org.projectforge.plugins.datatransfer.DataTransferAreaDO
import org.projectforge.plugins.datatransfer.DataTransferAreaDao
import org.projectforge.plugins.datatransfer.DataTransferPlugin
import org.projectforge.plugins.datatransfer.DataTransferUtils
import org.projectforge.rest.AttachmentsServicesRest
import org.projectforge.rest.config.Rest
import org.projectforge.rest.core.AbstractDynamicPageRest
import org.projectforge.rest.core.PagesResolver
import org.projectforge.rest.core.RestResolver
import org.projectforge.rest.dto.FormLayoutData
import org.projectforge.rest.dto.PostData
import org.projectforge.rest.dto.User
import org.projectforge.ui.*
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.*
import jakarta.annotation.PostConstruct
import jakarta.servlet.http.HttpServletRequest
import jakarta.servlet.http.HttpServletResponse
import jakarta.validation.Valid
/**
* Página del área de transferencia de datos con lista de archivos adjuntos (incluyendo carga/descarga y edición).
*/
@RestController
@RequestMapping("${Rest.URL}/datatransferfiles")
class DataTransferPageRest : AbstractDynamicPageRest() {
@Autowired
private lateinit var attachmentsService: AttachmentsService
@Autowired
private lateinit var attachmentsServicesRest: AttachmentsServicesRest
@Autowired
private lateinit var dataTransferAreaPagesRest: DataTransferAreaPagesRest
@Autowired
private lateinit var dataTransferAreaDao: DataTransferAreaDao
@Autowired
private lateinit var groupService: GroupService
@PostConstruct
private fun postConstruct() {
attachmentsServicesRest.register(
dataTransferAreaPagesRest.category,
DataTransferAttachmentsActionListener(attachmentsService, dataTransferAreaDao)
)
}
@GetMapping("downloadAll/{id}")
fun downloadAll(
@PathVariable("id", required = true) id: Long,
response: HttpServletResponse
) {
val pair = convertData(id)
val dbObj = pair.first
val dto = pair.second
DataTransferRestUtils.multiDownload(
response,
attachmentsService,
dataTransferAreaPagesRest.attachmentsAccessChecker,
dbObj,
dto.areaName,
jcrPath = dataTransferAreaPagesRest.jcrPath!!,
id,
dto.attachments,
byUser = ThreadLocalUserContext.loggedInUser
)
}
@GetMapping("dynamic")
fun getForm(request: HttpServletRequest, @RequestParam("id") idString: String?): FormLayoutData {
var id = NumberHelper.parseLong(idString)
if (id == -1L) {
// se solicita la bandeja personal del usuario conectado:
id = dataTransferAreaDao.ensurePersonalBox(ThreadLocalUserContext.loggedInUserId!!)?.id
}
id ?: throw IllegalAccessException("El parámetro id no es un entero o no se encontró ninguna bandeja personal.")
val pair = convertData(id)
val dbObj = pair.first
val dto = pair.second
val layout = UILayout("plugins.datatransfer.title.heading")
val attachmentsFieldset = UIFieldset(title = "'${dto.areaName}")
attachmentsFieldset.add(
UIAttachmentList(
DataTransferPlugin.ID,
id,
showExpiryInfo = true,
maxSizeInKB = DataTransferAreaDao.getMaxUploadFileSizeKB(dbObj)
)
)
if ((dto.attachmentsSize ?: 0) in 1..NumberOfBytes.GIGA_BYTES) {
// Descargar todo no para archivos adjuntos con un tamaño total superior a 1 GB.
attachmentsFieldset.add(
UIButton.createDownloadButton(
id = "downloadAll",
title = "plugins.datatransfer.button.downloadAll",
tooltip = "plugins.datatransfer.button.downloadAll.info",
responseAction = ResponseAction(
RestResolver.getRestUrl(
this.javaClass,
"downloadAll/$id"
), targetType = TargetType.DOWNLOAD
),
default = true
)
// ... (truncado, total 344 líneas)
868d6abb7 2025 -> 2026 63081666f Encabezados de archivos fuente: 2024 -> 2025. 4942c854d Trabajo de migración en curso... 1b50060c3 BaseDao: renombrado: get -> find, save -> insert, getList -> select, load -> select 2a8ea2076 Trabajo de migración en curso... BaseDao refactorizado (aún no terminado) métodos internos* renombrados.