Here is the HTML translated into French, with the language set to `fr` and the FR link marked as active. The title includes `[FR]`. ```html
DataTransferPageRest.ktAnnotations : PostConstruct, Valid, GetMapping, RequestBody, PathVariable, Autowired, return, RequestMapping, RestController, PostMapping, RequestParam
Classes : DataTransferPageRest
Supertype(s) : AbstractDynamicPageRest
Fonctions (7) : postConstruct, downloadAll, getForm, watchFields, isLoggedInUserObserver, hasEditAccess, convertData
Propriétés (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
Importations : 30 paquets
Paquet : 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
/**
* Page de la zone de transfert de données avec la liste des pièces jointes (incluant téléchargement et édition).
*/
@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) {
// la boîte personnelle de l'utilisateur connecté est demandée :
id = dataTransferAreaDao.ensurePersonalBox(ThreadLocalUserContext.loggedInUserId!!)?.id
}
id ?: throw IllegalAccessException("Le paramètre id n'est pas un entier ou aucune boîte personnelle trouvée.")
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) {
// Téléchargement de tout sauf pour les pièces jointes d'une taille totale supérieure à 1 Go.
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
)
// ... (tronqué, total 344 lignes)
868d6abb7 2025 -> 2026 63081666f En-têtes des fichiers source : 2024 -> 2025. 4942c854d Travaux de migration en cours... 1b50060c3 BaseDao : renommé : get -> find, save -> insert, getList -> select, load -> select 2a8ea2076 Travaux de migration en cours... BaseDao refactorisé (pas encore terminé) méthodes internes* renommées.