Here’s a look at the improvements and features we worked on during June 2025. From import enhancements to developer utilities and UI improvements, this month brings valuable additions.

🔁 Import Widget

The Import Widget is used to make imports for a specific module without having to go through all the normal steps of the import. It is activated by using the following link and putting the module name where we want to do the import at the end.

index.php?action=ImportWidget&module=ModuleName

An import mapping should be prepared for use during the process. This mapping defines the CSV file to module field relation, like this:

<map>
  <mapname>ImportPostcards</mapname>
  <delimiter>;</delimiter>
  <workflow>1</workflow>
  <workflowid>64</workflowid>
  <duplicates>
    <handling>merge</handling>
    <fields>
      <name>usedserial</name>
    </fields>
    <skipcreate>0</skipcreate>
    <importmergecondition></importmergecondition>
    <importnonduplicatecondition>41914</importnonduplicatecondition>
  </duplicates>
</map>

Key features:

  • an upload input to load the CSV file to be imported
  • a business map selection input which can also be multiple if the multiple parameter is applied in the widget: index.php?action=ImportWidget&module=ModuleName&multiple=1. This will import the CSV file as many times as maps are selected using each one after another permitting us to import the different columns of the same CSV file into different modules in one upload
  • a section to track the last import done. The user can view and download all records that have been:
    • Created
    • Skipped
    • Overwritten
    • Merged
    • Failed

You can see the Import Widget in the next screenshot

Multi Import Support

👤 User operation enhancements

We updated the user transfer screen to use LDS and added support for displaying messages during user operations with global variables (see below):

  • Create
  • Update
  • Delete

User Operation Messages

🛠️ Features and Implementor/Developer enhancements

  • Login History is now more accurate because we update the internal log table with a logout event when we detect that the session expires.
    • users with no session=Session Expired are automatically logged out
    • indexes to optimize logout query and update null logout for performance
  • add db_charset for Unicode/emoji support (will show some examples in the next blog post). Thanks to the team at Slemernet!
  • add support in the Question module for ROLAP pivot tables Huey integration extension

🧱 EvolutivoFW Standard Code Formatting, Security, Optimizations, and Tests

  • EvolutivoFW Standard Formatting
  • Documentation: code and wiki.
  • Refactor and Optimize code
    • SonarQube recommendations.
  • Unit Tests: keeps getting more and more assertions.

⚙️ Global Variables

  • Users_Create_Message: Message to show when a user is created.
  • Users_Create_Message_Class: Class to use for the message when a user is created. Default is cb-alert-danger.
  • Users_Edit_Message: Message to show when a user is edited.
  • Users_Edit_Message_Class: Class to use for the message when a user is edited. Default is cb-alert-danger.
  • Users_Delete_Message: Message to show before a user is deleted.
  • Users_Delete_Message_Class: Class to use for the message before a user is deleted. Default is cb-alert-danger.

✨ Others

  • set Message Template preview to the LDS card background
  • alter the Tokens table to set tokensid as an AUTO_INCREMENT column
  • correct aria-label in the Users screen
  • Translations

📊 Insights

June Insights

June July
Sonarqube June Sonarqube July

Thanks for reading.

Previous Post