Skip to content

Commit

Permalink
Addresses: support of gif and jpeg (also for carddav server). depreca…
Browse files Browse the repository at this point in the history
…ted rest stuff (StorageClient, AddressDaoRest etc. removed).
  • Loading branch information
kreinhard committed Dec 24, 2024
1 parent 3e0af0d commit 943947a
Show file tree
Hide file tree
Showing 28 changed files with 345 additions and 759 deletions.
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ plugins {

allprojects {
group = "org.projectforge"
version = "8.0" // Update version string here (nowhere else)
version = "8.1-SNAPSHOT" // Update version string here (nowhere else)

repositories {
mavenCentral()
Expand Down
10 changes: 5 additions & 5 deletions projectforge-application/src/main/resources/i18nKeys.json
Original file line number Diff line number Diff line change
Expand Up @@ -281,8 +281,8 @@
{"i18nKey":"address.heading.privateAddress","bundleName":"I18nResources","translation":"Private address","translationDE":"Privatadresse","usedInClasses":["org.projectforge.rest.AddressPagesRest","org.projectforge.rest.AddressViewPageRest","org.projectforge.web.address.AddressPageSupport"],"usedInFiles":[]},
{"i18nKey":"address.heading.privateAddress2","bundleName":"I18nResources","translation":"Private address 2","translationDE":"Privatadresse 2","usedInClasses":[],"usedInFiles":[]},
{"i18nKey":"address.heading.privateContact","bundleName":"I18nResources","translation":"Private contakt","translationDE":"Privater Kontakt","usedInClasses":[],"usedInFiles":[]},
{"i18nKey":"address.image","bundleName":"I18nResources","translation":"Image","translationDE":"Bild","usedInClasses":["org.projectforge.business.address.AddressDO","org.projectforge.rest.AddressPagesRest"],"usedInFiles":[]},
{"i18nKey":"address.image.upload.error","bundleName":"I18nResources","translation":"Couln''t upload image. Supported format is only png for now with maximum size of {0}.","translationDE":"Bild kann nicht hochgeladen werden. Bisher wird nur das Bildformat PNG unterstützt mit der Maximalgröße von {0}.","usedInClasses":["org.projectforge.rest.AddressPagesRest"],"usedInFiles":[]},
{"i18nKey":"address.image","bundleName":"I18nResources","translation":"Image","translationDE":"Bild","usedInClasses":["org.projectforge.rest.AddressPagesRest"],"usedInFiles":[]},
{"i18nKey":"address.image.upload.error","bundleName":"I18nResources","translation":"Couldn''t upload image. Supported formats are png, gif and jpeg for now with maximum size of {0}.","translationDE":"Bild kann nicht hochgeladen werden. Es werden die Bildformate PNG, GIF und JPEG mit einer Maximalgröße von {0} unterstützt.","usedInClasses":["org.projectforge.rest.AddressPagesRest"],"usedInFiles":[]},
{"i18nKey":"address.mailing","bundleName":"I18nResources","translation":"Mailing","translationDE":"Mailing","usedInClasses":["org.projectforge.business.address.AddressExport"],"usedInFiles":[]},
{"i18nKey":"address.myCurrentCallerId","bundleName":"I18nResources","translation":"Caller id","translationDE":"Anruferkennung","usedInClasses":["org.projectforge.web.address.PhoneCallForm"],"usedInFiles":[]},
{"i18nKey":"address.myCurrentCallerId.tooltip.content","bundleName":"I18nResources","translation":"This caller id is displayed to the callee.","translationDE":"Diese Anruferkennung wird dem/der Angerufenen angezeigt.","usedInClasses":["org.projectforge.web.address.PhoneCallForm"],"usedInFiles":[]},
Expand Down Expand Up @@ -1447,7 +1447,7 @@
{"i18nKey":"label.sendEMailNotification","bundleName":"I18nResources","translation":"Send an e-mail notification?","translationDE":"E-Mail-Benachrichtigung versenden?","usedInClasses":["org.projectforge.plugins.todo.ToDoEditForm","org.projectforge.web.fibu.AuftragEditForm"],"usedInFiles":[]},
{"i18nKey":"label.sendShortMessage","bundleName":"I18nResources","translation":"Send the assignee a text message?","translationDE":"SMS an Bearbeiter versenden?","usedInClasses":["org.projectforge.plugins.todo.ToDoEditForm"],"usedInFiles":[]},
{"i18nKey":"language","bundleName":"I18nResources","translation":"Language","translationDE":"Sprache","usedInClasses":["org.projectforge.framework.persistence.search.MyAnalysisConfigurer","org.projectforge.web.address.AddressPageSupport"],"usedInFiles":[]},
{"i18nKey":"lastUpdate","bundleName":"I18nResources","translation":"last modification","translationDE":"letzte Änderung","usedInClasses":["org.projectforge.business.address.AddressExport","org.projectforge.business.fibu.AuftragDO","org.projectforge.business.fibu.EingangsrechnungDO","org.projectforge.business.fibu.RechnungDO","org.projectforge.business.fibu.kost.KostZuweisungExport","org.projectforge.business.humanresources.HRPlanningDO","org.projectforge.business.teamcal.event.TeamEventDao","org.projectforge.business.teamcal.event.model.TeamEventDO","org.projectforge.business.timesheet.TimesheetDao","org.projectforge.business.timesheet.TimesheetExport","org.projectforge.framework.persistence.api.BaseDao","org.projectforge.framework.persistence.database.DatabaseService","org.projectforge.framework.persistence.database.ReindexerRegistry","org.projectforge.framework.persistence.database.ReindexerStrategy","org.projectforge.framework.persistence.entities.AbstractBaseDO","org.projectforge.framework.persistence.user.entities.UserAuthenticationsDO","org.projectforge.jcr.RepoService","org.projectforge.plugins.datatransfer.DataTransferAreaDao","org.projectforge.plugins.datatransfer.rest.DataTransferAreaPagesRest","org.projectforge.plugins.licensemanagement.LicenseListPage","org.projectforge.plugins.marketing.AddressCampaignListPage","org.projectforge.plugins.marketing.rest.AddressCampaignPagesRest","org.projectforge.plugins.memo.rest.MemoPagesRest","org.projectforge.plugins.merlin.MerlinTemplateDao","org.projectforge.plugins.skillmatrix.SkillEntryPagesRest","org.projectforge.plugins.todo.ToDoListPage","org.projectforge.rest.AddressBookPagesRest","org.projectforge.rest.AddressPagesRest","org.projectforge.rest.TeamCalPagesRest","org.projectforge.rest.importer.AbstractImportPageRest","org.projectforge.rest.my2fa.My2FASetupPageRest","org.projectforge.rest.scripting.MyScriptPagesRest","org.projectforge.rest.scripting.ScriptPagesRest","org.projectforge.security.webauthn.WebAuthnEntryDO","org.projectforge.ui.UIAgGridColumnDef","org.projectforge.ui.UIAttachmentList","org.projectforge.web.address.AddressListPage","org.projectforge.web.teamcal.admin.TeamCalListPage","org.projectforge.web.teamcal.event.TeamEventListPage","org.projectforge.web.user.UserPrefListPage"],"usedInFiles":[]},
{"i18nKey":"lastUpdate","bundleName":"I18nResources","translation":"last modification","translationDE":"letzte Änderung","usedInClasses":["org.projectforge.business.address.AddressExport","org.projectforge.business.address.AddressImageCache","org.projectforge.business.address.AddressImageDao","org.projectforge.business.fibu.AuftragDO","org.projectforge.business.fibu.EingangsrechnungDO","org.projectforge.business.fibu.RechnungDO","org.projectforge.business.fibu.kost.KostZuweisungExport","org.projectforge.business.humanresources.HRPlanningDO","org.projectforge.business.teamcal.event.TeamEventDao","org.projectforge.business.teamcal.event.model.TeamEventDO","org.projectforge.business.timesheet.TimesheetDao","org.projectforge.business.timesheet.TimesheetExport","org.projectforge.framework.persistence.api.BaseDao","org.projectforge.framework.persistence.database.DatabaseService","org.projectforge.framework.persistence.database.ReindexerRegistry","org.projectforge.framework.persistence.database.ReindexerStrategy","org.projectforge.framework.persistence.entities.AbstractBaseDO","org.projectforge.framework.persistence.user.entities.UserAuthenticationsDO","org.projectforge.jcr.RepoService","org.projectforge.plugins.datatransfer.DataTransferAreaDao","org.projectforge.plugins.datatransfer.rest.DataTransferAreaPagesRest","org.projectforge.plugins.licensemanagement.LicenseListPage","org.projectforge.plugins.marketing.AddressCampaignListPage","org.projectforge.plugins.marketing.rest.AddressCampaignPagesRest","org.projectforge.plugins.memo.rest.MemoPagesRest","org.projectforge.plugins.merlin.MerlinTemplateDao","org.projectforge.plugins.skillmatrix.SkillEntryPagesRest","org.projectforge.plugins.todo.ToDoListPage","org.projectforge.rest.AddressBookPagesRest","org.projectforge.rest.AddressPagesRest","org.projectforge.rest.TeamCalPagesRest","org.projectforge.rest.importer.AbstractImportPageRest","org.projectforge.rest.my2fa.My2FASetupPageRest","org.projectforge.rest.scripting.MyScriptPagesRest","org.projectforge.rest.scripting.ScriptPagesRest","org.projectforge.security.webauthn.WebAuthnEntryDO","org.projectforge.ui.UIAgGridColumnDef","org.projectforge.ui.UIAttachmentList","org.projectforge.web.address.AddressListPage","org.projectforge.web.teamcal.admin.TeamCalListPage","org.projectforge.web.teamcal.event.TeamEventListPage","org.projectforge.web.user.UserPrefListPage"],"usedInFiles":[]},
{"i18nKey":"ldap","bundleName":"I18nResources","translation":"LDAP","translationDE":"LDAP","usedInClasses":["org.projectforge.business.ldap.LdapConnector","org.projectforge.framework.persistence.user.entities.GroupDO","org.projectforge.rest.GroupPagesRest","org.projectforge.rest.UserPagesRest","org.projectforge.web.user.GroupEditForm"],"usedInFiles":[]},
{"i18nKey":"ldap.gidNumber","bundleName":"I18nResources","translation":"GID number","translationDE":"GID number","usedInClasses":["org.projectforge.rest.GroupPagesRest","org.projectforge.rest.UserPagesRest","org.projectforge.web.user.GroupEditForm"],"usedInFiles":[]},
{"i18nKey":"ldap.gidNumber.alreadyInUse","bundleName":"I18nResources","translation":"GID number is already assigned to another group. The next free GID number is {0}.","translationDE":"Die GID-Nummer ist bereits an eine andere Gruppe vergeben. Die nächste freie GID-Nummer lautet: {0}.","usedInClasses":["org.projectforge.rest.GroupPagesRest","org.projectforge.web.user.GroupEditForm"],"usedInFiles":[]},
Expand Down Expand Up @@ -2136,7 +2136,7 @@
{"i18nKey":"scripting.title.edit","bundleName":"I18nResources","translation":"Edit script","translationDE":"Script bearbeiten","usedInClasses":["org.projectforge.rest.scripting.ScriptExecutePageRest"],"usedInFiles":[]},
{"i18nKey":"scripting.title.heading","bundleName":"I18nResources","translation":"Scripts","translationDE":"Scripte","usedInClasses":[],"usedInFiles":[]},
{"i18nKey":"scripting.title.list","bundleName":"I18nResources","translation":"Scripts","translationDE":"Scripte","usedInClasses":[],"usedInFiles":[]},
{"i18nKey":"search","bundleName":"I18nResources","translation":"Search","translationDE":"Suchen","usedInClasses":["org.projectforge.rest.AddressDaoRest","org.projectforge.rest.AddressServicesRest","org.projectforge.rest.TimeZoneServicesRest","org.projectforge.rest.TimesheetPagesRest","org.projectforge.rest.admin.LogViewFilter","org.projectforge.rest.admin.LogViewerPageRest","org.projectforge.rest.calendar.VacationServicesRest","org.projectforge.rest.core.AbstractPagesRest","org.projectforge.rest.fibu.KontoPagesRest","org.projectforge.rest.task.TaskServicesRest","org.projectforge.ui.LayoutUtils","org.projectforge.ui.UIButton","org.projectforge.web.core.SearchForm","org.projectforge.web.registry.WebRegistry","org.projectforge.web.task.TaskTreeForm","org.projectforge.web.teamcal.integration.TeamCalCalendarForm","org.projectforge.web.wicket.AbstractListForm","org.projectforge.web.wicket.flowlayout.IconType"],"usedInFiles":[]},
{"i18nKey":"search","bundleName":"I18nResources","translation":"Search","translationDE":"Suchen","usedInClasses":["org.projectforge.rest.AddressServicesRest","org.projectforge.rest.TimeZoneServicesRest","org.projectforge.rest.TimesheetPagesRest","org.projectforge.rest.admin.LogViewFilter","org.projectforge.rest.admin.LogViewerPageRest","org.projectforge.rest.calendar.VacationServicesRest","org.projectforge.rest.core.AbstractPagesRest","org.projectforge.rest.fibu.KontoPagesRest","org.projectforge.rest.task.TaskServicesRest","org.projectforge.ui.LayoutUtils","org.projectforge.ui.UIButton","org.projectforge.web.core.SearchForm","org.projectforge.web.registry.WebRegistry","org.projectforge.web.task.TaskTreeForm","org.projectforge.web.teamcal.integration.TeamCalCalendarForm","org.projectforge.web.wicket.AbstractListForm","org.projectforge.web.wicket.flowlayout.IconType"],"usedInFiles":[]},
{"i18nKey":"search.area","bundleName":"I18nResources","translation":"Area","translationDE":"Bereich","usedInClasses":["org.projectforge.web.core.SearchForm"],"usedInFiles":[]},
{"i18nKey":"search.durationOfSearch","bundleName":"I18nResources","translation":"duration of search","translationDE":"Suchdauer","usedInClasses":[],"usedInFiles":["./projectforge-wicket/src/main/java/org/projectforge/web/core/SearchAreaPanel.html"]},
{"i18nKey":"search.error","bundleName":"I18nResources","translation":"Unfortunately an internal error occured.","translationDE":"Es trat leider ein interner Fehler auf.","usedInClasses":["org.projectforge.web.core.SearchAreaPanel","org.projectforge.web.wicket.AbstractListPage"],"usedInFiles":[]},
Expand Down Expand Up @@ -2392,7 +2392,7 @@
{"i18nKey":"timeleft.weeks.one","bundleName":"I18nResources","translation":"in a week","translationDE":"in einer Woche","usedInClasses":[],"usedInFiles":[]},
{"i18nKey":"timeleft.years","bundleName":"I18nResources","translation":"in {0} years","translationDE":"in {0} Jahren","usedInClasses":[],"usedInFiles":[]},
{"i18nKey":"timeleft.years.one","bundleName":"I18nResources","translation":"in a year","translationDE":"in einem Jahr","usedInClasses":[],"usedInFiles":[]},
{"i18nKey":"timesheet","bundleName":"I18nResources","translation":"Time-sheet","translationDE":"Zeitbericht","usedInClasses":["org.projectforge.Constants","org.projectforge.business.timesheet.TimesheetFavoritesService","org.projectforge.framework.persistence.DaoConst","org.projectforge.model.rest.RestPaths","org.projectforge.registry.Registry","org.projectforge.rest.calendar.CalendarServicesRest","org.projectforge.rest.calendar.FullCalendarEvent","org.projectforge.rest.calendar.TimesheetEventsProvider","org.projectforge.web.calendar.TimesheetEventsProvider","org.projectforge.web.timesheet.TimesheetEditPage","org.projectforge.web.timesheet.TimesheetListPage"],"usedInFiles":[]},
{"i18nKey":"timesheet","bundleName":"I18nResources","translation":"Time-sheet","translationDE":"Zeitbericht","usedInClasses":["org.projectforge.Constants","org.projectforge.business.timesheet.TimesheetFavoritesService","org.projectforge.framework.persistence.DaoConst","org.projectforge.registry.Registry","org.projectforge.rest.calendar.CalendarServicesRest","org.projectforge.rest.calendar.FullCalendarEvent","org.projectforge.rest.calendar.TimesheetEventsProvider","org.projectforge.web.calendar.TimesheetEventsProvider","org.projectforge.web.timesheet.TimesheetEditPage","org.projectforge.web.timesheet.TimesheetListPage"],"usedInFiles":[]},
{"i18nKey":"timesheet.break","bundleName":"I18nResources","translation":"Break","translationDE":"leer","usedInClasses":["org.projectforge.rest.calendar.TimesheetEventsProvider","org.projectforge.web.calendar.TimesheetEventsProvider"],"usedInFiles":[]},
{"i18nKey":"timesheet.description","bundleName":"I18nResources","translation":"Activity report","translationDE":"Tätigkeitsbericht","usedInClasses":["org.projectforge.business.humanresources.HRPlanningExport","org.projectforge.business.timesheet.TimesheetDO","org.projectforge.rest.TimesheetPagesRest","org.projectforge.web.timesheet.TimesheetEditForm","org.projectforge.web.timesheet.TimesheetEditSelectRecentDialogPanel"],"usedInFiles":[]},
{"i18nKey":"timesheet.duration","bundleName":"I18nResources","translation":"Duration","translationDE":"Dauer","usedInClasses":["org.projectforge.business.timesheet.TimesheetExport","org.projectforge.renderer.custom.MicromataFormatter","org.projectforge.rest.TimesheetPagesRest","org.projectforge.web.calendar.CalendarForm","org.projectforge.web.teamcal.event.MyWicketEvent","org.projectforge.web.timesheet.TimesheetListPage"],"usedInFiles":[]},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -272,10 +272,6 @@ open class AddressDO : DefaultBaseDO(), DisplayNameCapable {
@get:Column
open var birthday: LocalDate? = null

@PropertyInfo(i18nKey = "address.image")
@get:Column
open var image: Boolean? = null

/**
* Time stamp of last image modification (or deletion). Usefull for history of changes.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ open class AddressDao : BaseDao<AddressDO>(AddressDO::class.java) {
if (addressbookRight == null) {
addressbookRight = userRights.getRight(UserRightId.MISC_ADDRESSBOOK) as AddressbookRight
}
val addressbookList = addressbookCache.getAddressbooksForAddress(obj) ?: obj?.addressbookList
val addressbookList = addressbookCache.getAddressbooksForAddress(obj) ?: obj?.addressbookList
if (addressbookList.isNullOrEmpty()) {
return true
}
Expand Down Expand Up @@ -331,14 +331,6 @@ open class AddressDao : BaseDao<AddressDO>(AddressDO::class.java) {
}
}

override fun onUpdate(obj: AddressDO, dbObj: AddressDO) {
// Don't modify the following fields:
if (obj.getTransientAttribute("Modify image modification data") !== "true") {
obj.image = dbObj.image
obj.imageLastUpdate = dbObj.imageLastUpdate
}
}

/**
* On force deletion all personal address references has to be deleted.
* @param obj The deleted object.
Expand All @@ -363,19 +355,6 @@ open class AddressDao : BaseDao<AddressDO>(AddressDO::class.java) {
}
}

/**
* Mark the given address, so the image fields (image and imageLastUpdate) will be updated. imageLastUpdate will be
* set to now.
*
* @param address
* @param hasImage Is there an image or not?
*/
fun internalModifyImageData(address: AddressDO, hasImage: Boolean) {
address.setTransientAttribute("Modify image modification data", "true")
address.image = hasImage
address.imageLastUpdate = Date()
}

override fun onInsert(obj: AddressDO) {
// create uid if empty
if (StringUtils.isBlank(obj.uid)) {
Expand Down
Loading

0 comments on commit 943947a

Please sign in to comment.