DataWeb 11.0.016/08/2024
What’s New
In this major version, we are introducing many new features, both technologically and functionally.
For a detailed overview, we refer you to the dedicated training sessions.
- New Features
- User: if the current user is a Developer, this role is also displayed in the user form
- EmailService: the FromAddress sender address is no longer required and can be centralized in AppSettings
- Newsletter: ability to upload documents to the newsletter template with direct download from the email (requires corresponding endpoint in the app)
- Managed the saving of an additional data section only if active, allowing mandatory checks on optional data sections
- SiteMap: integration of the SiteMap class to generate server-side site maps for the project
- Management of notifications on the section with display in the header, in the section selector, in the dashboard
- New inheritable method GetSectionNotificationCountAsync in Module
- Notification of the job in progress in import modules with GetSectionNotificationCountAsync
- New ReferenceId field for AppNotification to recall an expired notification
- Integration of the AppSettings, Storage, AppErrors, and AuditEvents sections into DataWeb's section structure
- The Settings sections benefit from all the features of DataWeb's native sections, such as widgets and notifications
- Customizable Private_Settings permissions on Settings sections
- AuditEvent revision
- Revision of the logging module and conversion to AuditEvent
- New method in AuditService for log retention DeleteExpiredEntriesAsync(expirationDate)
- New fields EventContext and EventValues for audit segmentation.
- Integration of AuditEventStore into CosmosDB storage with the DataWeb.Data.AzureCosmosDB package
- Authentication revision and Authorization Server integration for SSO
- Removal of authentication with BearerToken and transition to cookies with AntiForgeryToken using the BFF pattern
- Periodic renewal of the authentication cookie
- Data structure and integration of the Token and Exchange endpoints
- Certificate generation flow and integration for encryption and signing
- Integration of AuthorizationCodeFlow with PKCE for mobile and web apps
- Integration of CredentialFlow for M2M communication
- Integration of Introspection, Revocation, Pruning functions
- Integration of the IFile interface for file management on different storage
- Revision of MediaService and the entire data stream processing flow
- Introduction of FileService
- Revision of all components both in lists and forms
- Image management
- Generation of thumbnails in Webp format
- Ability to rename the file
- Integration of settings for images and documents
- Option to remove metadata in thumbnails and on ImageResult
- Option to maintain the original image format in thumbnails
- Option to set thumbnail quality
- Integration of image cropping and related management in Settings
- Integration of ImageContext for thumbnails to segment thumbnails on ImageResult
- Integration of a delegate method to perform thumbnail processing on ImageResult (e.g., watermark)
- Option to disable cropping on thumbnails on ImageResult
- ModuleList improvement
- New navigation for sections adjacent to the current one
- New Card view in lists with user-side management between Table and Card and a default value in the section Settings
- Native clipboard for moving and linking items
- Section DataField: added ListName field to display titles of values in the list and search filter
- Section DataField: management of the nested field in a structured data
- Revision of the item clone function in Clone data with replication only of active and staging versions
- Revision of the item delete function with simplified actions based on the number of relationships
- Integration of ListWidget
- Highly customizable class and component to display data and assets in lists
- General revision of widgets in lists with ListWidget and hooks ProcessValue and ProcessDeferredValueAsync
- ProcessDeferredValueAsync allows for retrieving data requiring more computation later
- New ListWidgetLabel to display Structured or customized data
- New ListWidgetImage to display images from a predefined path
- New ListWidgetCultureList to display a list of cultures given a structured CultureEditor data
- New ListWidgetCustom to customize the list content
- Improvement of ListWidgetFileRender and ListWidgetFileDownload for better performance and decoupling from Item
- Integration of ContextAction
- Complete revision of existing actions on form controls through ContextAction
- Allows inserting actions on controls and Explorer modules
- Support for ModuleList and ModuleListEdit with FilteredItems and SelectedItems contexts
- New action execution options: IsConfirmRequired, IsSaveItemBeforeProcess, IsReloadAfterProcess
- Revision of action execution flow with ActionHelper: confirmation, dialog, validation, saving, execution, data update
- Retrieve the resulting value from the action directly in the associated control without reloading the page (see translation with CultureEditor)
- Option to request data with a dialog through the DialogFormName property
- New BasicItem entity
- Management of basic entities with BasicItemService and BasicItemStore
- Change tracking
- New ModuleListEdit with customizable methods
- Management of CRUD functions with custom entities or BasicItem
- Management of creation, modification, modified fields tracking, sorting, cloning, deletion, search, and filtering
- Management of IsWrite on a single element
- Management of optional status
- Full support of permissions, DataField, ListWidget, Form, ContextAction
- Resource: status management for active, inactive, and deleted resources with soft delete
- integration in ModuleListEdit with BasicItem
- Duplication of a resource with Deleted status
- Only Active resources are retrieved in the project
- NewsletterSubscriber: integration in ModuleListEdit with BasicItem
- NewsletterSubscriber: new Deleted Status to apply the soft delete pattern to newsletter subscribers
- Template: integration in ModuleListEdit with BasicItem
- Version improvements
- Added simultaneous preview for multiple versions in different cultures
- Complete revision of version state management flow
- Added controls to better segment Global versions from culture-specific ones (cannot be active or in preview simultaneously)
- New History module
- New data fields for all items: IsVersionHistory, VersionDate
- VersionDate: used to sort History versions
- IsVersionHistory: marks a version as in history
- A History version is linked to the parent with the VersionName: 01-01
- History versions are not displayed in the version list but listed in history mode
- Each modification creates a History version if IsVersionHistory is active in the data section options
- A new History version is created only if there are modified fields and at least 10 minutes have passed since the last History version
- A maximum of 10 versions can be in history, with the oldest progressively removed
- The associated file is replicated in the History version
- A History version is not editable
- A History version can be restored to the linked version
- Upon restoration, the file is cloned to preserve the removal of the history version and the related file
- A History version can be deleted (Deleted status)
- New TextEditor control
- Integration of the new editor with dedicated Webpack package
- Integration of standard plugins
- Content display for desktop, tablet, smartphone, and full screen
- Drag'n drop and paste for images with auto-generation of the related item in the images section
- Image and document selection palette with drag'n drop and selection
- Template selection palette with drag'n drop and selection
- Custom ImageSize plugin to set the image size based on the resolutions defined in the app
- Custom ImageSizePreset plugin to quickly and visually set the four most common sizes
- Custom ResizeMode plugin to set the image ratio between Crop and Fix
- Custom plugin to manage additional image resolutions for smartphones and tablets
- Retrieve the style list in the editor from a dedicated DataWeb list
- Option in the control creation to load a stylesheet dedicated to the editor
- TextEditorClassic for backward compatibility on existing content
- Editor management with selective loading based on TextEditor or TextEditorClassic
- Translate module
- Activation of the XTRA Translator service
- Integration of the new NuGet package DataWeb.Localization.AzureTranslator
- Integration in Control of the customizable method ProcessOnTranslateAsync to process the value during translation
- Added IsLocalization property for form controls
- Translation management for the Slug control
- Translation management for the TextEditor control with link support
- Translation management for multiple versions simultaneously
- Automatic translation in CultureEditor without reloading the form
- Management of TranslationRule to bind certain translation values with custom store https://learn.microsoft.com/en-us/azure/ai-services/translator/dynamic-dictionary
- System dialogs
- New module for managing modal dialogs both in lists and details
- Translation dialog for the version with source version selection
- Add new version dialog with culture selection and automatic translation
- Version Management Dialog with translate, set status, add localizations actions
- ResourceAnalyzer
- Source code audit to identify unused or missing resources
- New DataWeb endpoint with AppKey access to retrieve all resource information
- Unused resources Csv report
- Missing resources Csv report
- Ability to set analysis options from AppSettings or command line
- Csv generation with https://joshclose.github.io/CsvHelper/
- Structure
- Set VoidId (-1) for the new SectionPart, allowing recognition of an unsaved SectionPart
- Technology
- Async Cancellation Token: integration at all levels of the request cancellation token
- Email address validation replaced from RegEx to EmailAddress, manual validation with: var emailChecker = new System.ComponentModel.DataAnnotations.EmailAddressAttribute()
- Integration of TimeProvider https://blog.nimblepros.com/blogs/finally-an-abstraction-for-time-in-net/
- Security and stability: update of server-side NuGet packages
- Security and stability: update of client-side NPM packages
- Performance
- Analysis and improvement of SQL Server table indexes
- Caching file retrieval for images with await newsRepo.GetImageCachedAsync(code, this.GetCulture())
- AppSettings: cache saving of settings for quick retrieval
- Added [DisableHotlinking] filter to prevent hot linking strategies for assets
- Marking of non-inheritable classes with the sealed keyword https://www.meziantou.net/performance-benefits-of-sealed-class.htm
- Integration of FrozenDictionary for resources https://www.winfxitalia.com/script/643/Ottimizzare-Performance-Collection-Classi-FrozenSet-FrozenDictionary.aspx
- Development
- NewsletterEvent: refactoring of newsletter events and update of DataDeliver
- Form: integration of the "controls" property on the control for cross-component updates (see FileRender)
- Localization: management of DataWeb's native culture through HTTPContext.Items and removal of CultureInfo in Localizer (see culture en-CZ)
- Pagination: integration of PaginationHelper.GetPaginationInfo() for retrieving pagination information
- TypeScript Common: integration of UrlHelper for retrieving a value in the url parameters with UrlHelper.getUrlParamValue
- Debug: query tracing in the console during Debug
- DevOps: integration of DevOps migrations to the new version
- DevOps: optimization of the migration process with inline data
- DevOps: progress console tracing
- DevOps: re-indexing of positions given a section (see AvionTourism.com)
- TemplateApp: update of TemplateApp to the new patterns
- Fixes
- Bugfix: version selection in the list sometimes didn't work because the click event was only on the text and not on the entire button
- Bugfix: on slow connections, it could happen that child item data was saved on the parent, added nav check in moduledata
- Bugfix: Redirect with set period didn't work due to incorrect check
- General tuning and bugfix