Slow vacation month where we dedicate time to cleaning up some obsolete code and visiting some tasks and projects on our endless to-do list.

New Rain Char Login page

Rain Char Login

Master Grid

Some fixes as we use this extension and a new TreeVIew mode!

Master Grid Tree View

LDS Pills component

To easily select from a set of "things".

LDS Pills Component

Layout Editor Enhancements

  • Permit the user to update displaytype and leave date fields empty option.
  • Support for Date Time fields.
  • Apply LDS to the whole screen and center the popup elements (finally!).

Layout Editor

Features and Implementor/Developer enhancements

  • eliminate bunny.js: we migrate the reports and user list view from the deprecated bunny.js to tuigrid which is our standard library for grids.
  • custom CSS for Action Widget header: cbds-actionwidget_header
  • check field metadata table for inconsistencies (explained last month) now supports GET parameter __AcceptInconsistencies that forces the changeset to pass
  • when we enter a record in create mode we can pass in initial values for the fields using the REQUEST. This is not supported in edit mode because the fields already have values. We ran into a use case where we needed to override the existing values with new ones so we added support for this by adding also the __forcevalues parameter
  • new database method run_query_list to return an array of field values
    // $adb->run_query_list(query, field)
    $list = $adb->run_query_list(
    'SELECT accounttypeid,accounttype FROM vtiger_accounttype order by accounttypeid',
    'accounttype'
  );
    // $list == ['Analyst', 'Competitor', 'Customer', ...];
  • Settings Key-Value store shorthand methods
coreBOS_Settings::get($skey, $default, $cache);
coreBOS_Settings::set($skey, $svalue);
coreBOS_Settings::del($skey);
coreBOS_Settings::delStartsWith($startswith);
coreBOS_Settings::exists($skey);
  • VTLib:Net:
    • rewind the stream to get all values
    • USER_AGENT constants
  • Business Actions now return new link ID when creating
  • get Company details now also returns the company ID
  • generic update record method now correctly supports inline editing
  • support for deleting picklist values when trying to rename. this cannot be done from the UI
  • recurring invoice support for any payment duration as long as the numeric number of days is contained in the value
  • htmlAsteriskSpanWithColor and showOperationNotPermitted utility functions
  • make Leads conversion error screen less aggressive, more like a normal error screen
  • Workflows
    • add Execute Script workflow task which permits us to execute any authorized script with any set of parameters
    • Workflow import and export through drag and drop. See the global variable below

EvolutivoFW Standard Code Formatting, Security, Optimizations, and Tests

  • EvolutivoFW Standard Formatting
  • Documentation: code and wiki.
    • function headers and help messages
    • wiki documentation keeps going
  • Refactor and Optimize code
    • SonarQube recommendations, reduce cognitive complexity, change for loops, reduce repeated strings, long lines, collapse IF
    • deprecate unused function escapeAll
    • substitute variables for their value, reduce SQL columns, reduce query_result, simplify debug message
    • change obsolete HTML font for span+style
    • eliminate redundant includes
    • join two SQL commands into one to get value
    • change variable names to avoid class property conflict
    • eliminate magic numbers
    • use showOperationNotPermitted to reduce duplicate code
  • Unit Tests: keeps getting more and more assertions. We increment the code coverage measure in one point!

Global Variables

  • Application_GoogleMap_URL: Set the Google Map URL in Leads, Contacts, and Accounts. By default it is: https://maps.google.com
  • Workflow_TiddlyWiki_link: Show a button to drag a workflow to TiddlyWiki. Identical to the business action we have for normal records and makes it easy to save workflows in a TiddlyWiki as documentation or drag-and-drop them between applications.

Others

  • Action Widgets now return LINK ID with no special characters to avoid javascript errors
  • fix the positionDivToCenter function to work correctly with elements that have a dynamic width and height
  • align blocks and round corners in Detail View
  • recover HTML support in messages
  • update action icons to LDS: Timecontrol, Leads, Inventory, ...
  • move Comments property to the base class
  • eliminate reference to obsolete uitype 26
  • export
    • add module prefix to export where variable so they don't conflict between modules
    • export datetime fields in their timezone: we export what we import
  • GenDoc: delete any existing 'order by' in foreach SQL if the user sets one, so the one set by the user takes preference
  • ModuleBuilder and Module base scripts: default database tables to UTF8MB4 and set autonumber to end with _no
  • replace Picklist values with the same value when picklist indexes are numeric
  • fix popup pagination when using custom SQL by supporting distinct raw SQL
  • render default login template if provided one doesn't exist
  • initialize vtlib module class entity ID field and column properties
  • Workflow
    • LaunchWorkflow: process the records if the condition map is not set
    • decode HTML from related fields update
    • set default aggregation glue to or if not given
  • Translations
    • translate picklist values in the module context

Insights

August Insights

August September
Sonarqube August Sonarqube September

Thanks for reading.

Previous Post