3.9 CTP2 release (Framework & Generator)

Overview

The 3.9 update for the Platform products is being rolled out.

Today, the CTP 2 version has become available for Generator and Framework. This version contains all planned features for the 3.9 release.

CTP means Community Technology Preview, and with this version you can preview the new features for the platform products and give us your feedback on it.

Compared to the CTP 1 version, lots of small improvements have been implemented; see the release notes below for more information.

Important: If you want to use a 3.9 Framework version you must generate your application with a 3.9 Generator as well.

The CTP version is not intended to be used in production systems; the 3.9 can be considered to be used for production systems when the RC version is released (and should be used when the stable version is released).

Please give us your feedback in the form of SRs on found bugs, usability and available documentation (or where more is needed) or leave a comment below. If you experience any problems rolling out your (non-production) application, we can also get in touch directly through your primary contact.

Where to get the new versions:

Generator: use use generator_3_9_ctp in deployment
Framework: deploy your application after generating with the 3.9-CTP generator and use the embedded Framework (or a 3.9-NB framework, should they become available)

You may select platform version “3.8 Architect + 3.9-CTP Generator” in Deployment to generate and install with 3.9-CTP2 while still integrating with Architect 3.8.

Release notes

Changes since latest 3.9 CTP release (C12635)

UI improvements

PI38366 - Change Novulo tab order using drag and drop

Tabs in a Novulo application can now be reordered using drag and drop.

PI38363 - Context menu on tabs to close multiple other tabs

It is now possible to close multiple tabs from the context-menu of a tab. For convenience, several other options have also been added: copying the title of a tab, copying a link to the tab (see the description of the product issue below), opening a new tab in a specific position, moving the tab to a different position and closing the tab.

PI38424 - Copy deep links to records to the clipboard

You can now copy a link to a page from the context menu of the tab (as shown in the image above for the previous PI), of the navigation bar and of the page itself. This link looks something like https://www.yourdomain.com/default.aspx?page=pages:load(12345,displaytypes:load(“View”),[]), which may sound a bit cryptic, but you can use it yourself or share it with others to later navigate directly to the same page.

PI48591 - Visual indication of row just viewed in grids

After returning to a grid from a details page, the grid row corresponding to the just viewed details page is focused (indicated by a dotted line around the row), serving as a visual cue to help you to find back the place where you just came from. It also allows you to continue navigating the grid relative to the just viewed row with the arrow keys on the keyboard.
image → level up → image

PI48584 - Allow user to influence used navigation for column clicks

In most situations the user can override how a page is opened by pressing certain keys when clicking on a link: “alt” for dialogs, “shift” for full-page, “ctrl” for tab in background, and “ctrl + shift” for tab in foreground. Now this also works for “column clicks” (cells in grids with blue text).
image → ctrl + click → image

PI42914 - When a record that was expected to be locked isn’t locked any more, give a user-friendly message + allow user to continue

Situations when a record is expected to be locked, but that lock is missing, are now handled better:

  • A warning is shown on top of the page when the page is loaded, when the user tries to change a value, and when the user tries to commit the record.
  • Changing a value or committing a record now explicitly checks that the record is locked, and a clear error message is shown if it isn’t.
  • The “cancel” button no longer gives an error when a lock is missing.

Note for developers: Calling an UnlockRecordAction with a record that is not “locked” no longer gives an error. In practice, this should not change anything, but theoretically a process could have been implemented so that it relies on this behavior. Also, during development, when you have a bug, this might return in a different error being shown, or an error being shown at a different time.

PI38375 - Consistent error handling with grid query errors (timeouts)

Errors during the loading of grid (most commonly timeouts) are now handled better. For any such error, it is now always possible to undo any change to the default settings (including the search query and the current filter), hopefully preventing the error from happening. During this process, the user is in full control of which settings are undone, so he can target the culprit (e.g. clearing the search when that causes the problem, but not lose any other settings along the way).

Additionally, some other related improvements have been made. E.g. the phrasing of the error messages is improved, the error messages are better updated when the grid settings are changed, and the layout of the error messages is improved.

PI48589 - Gracefully handle user clicking on a file link for which the file is missing on the file system

When trying to download a file that no longer exists, the user now gets a regular error message, and he can continue to navigate in the application normally. (previously, the user would be stuck and would have to reload the application)

PI42809 - Consistent behavior for selecting field content on focus

When navigating to a numeric field using the tab-key, the entire contents of the field is now initially selected (just as is done for text fields).
image → tab → image

PI48598 - Show NULL-value description of dropdown fields in columns of a grid

Grids now show the same text for an enumeration with the value NULL as is shown on the details page (which can be configured in the Architect). Additionally, it is now possible to search in this column for these rows by using (a part of) this text.

PI38385 - Do not interpret ‘empty’ and ‘null’ as operators in space separated search expression

When a search query in a grid contained the word ‘empty’ or ‘null’, it was interpreted as “only show the rows for which this column is empty/null”, even when the search query contained other words as well. Now it is only interpreted this way if ‘empty’ or ‘null’ is the only word in the search term.

PI38384 - Allow increasing the number of visible rows in full size grids to 100 on high resolution screens

On high resolution screens (or on regular screens with a very low zoom level) it is now possible to change the page size of a grid to 100 rows.
image

Changes related to rights management

PI51625 - In rights profiles, allow navigation from grid to details page

When you select a grid on a rights profile page, it is now possible to navigate directly to the corresponding details page. This is especially useful for grids where the details page is in a very different place in the tree than the grid (as is common for grids in domain-specific subsystems with details pages in the application maintenance subsystem).

Additionally, it is now also possible to navigate from the details page to the data source and back.

PI38433 – Functions that shown the number of users with a given rights profile

Two functions have been added that show the number of users with a given rights profile: one that counts all users, and one that counts only the active users.

PI40358 - When committing right settings to database fails, revert cache to original value

When a change you make to a rights setting on the rights profiles page fails to save to the database for whatever reason (e.g. because you are working in a “shadow application” where rights changes are disallowed), the change is now reverted both in the interface and in the cache.

PI51572 - On rights profiles, show nice names for page_ok buttons and for tile processes

On the rights profiles page an untranslated name was sometimes shown for ok-button processes. This has been fixed. Also processes for tiles were shown, but changing the corresponding settings has no effect (tiles have a separate entry where you can manage their rights). These processes aren’t shown anymore.

Bug fixes

PI42252 - Sorting does not work when a column is added to a grid twice

When the same column was added twice to a grid, sorting on that column didn’t work anymore. This has been fixed.

PI50037 - Don’t register empty translations for field names that have no translation

When a field isn’t translated in a certain language, an empty translation was registered, resulting in a line with only white space in the columns manager of a grid. The empty translation is no longer registered, and therefore the translation of the default language (usually English) is now shown in that situation.

PI48597 - Show null-value for enumerations for which user has no rights

When a user did not have rights to see an enumeration field, grids would display the first option of that enumeration for all rows. This is no longer the case.

PI48588 - Toolbar menu looks weird when user does not have rights for logout button

When a user did not have rights for the logout button, the layout looked weird (another button then looked like the logout button). This has been fixed.

PI48167 - Not all combinations of showmessage in combination with loadpage work correctly

In some cases when a message was outputted at the same time as when a page was loaded, the message would not be visible to the user (for example in an on-page-loading process of a page that was loaded from the start screen). This has been fixed.

PI46585 - In the datahandler, when combining results from multiple queries, values sometimes appear in the “wrong” place

Sub results were sometimes combined incorrectly for expressions containing nested subqueries in the output (rarely used in practice). This has been fixed.

Changes for developers

PI19521 - Log process errors and exception

When during the evaluation of a process either an exception is thrown or an action returns success = false, an event is fired containing a detailed description of the situation. Soon a plugin will be developed that writes these events to the application log.

This will allow developers to more easily investigate problems (they have an easy way to obtain a lot of information when they encounter a problem during development and they are much less dependent on the information given to them from end users for problems in production) and for application managers to keep an eye on the number and the type of problems that occur for a production application.

PI38437 - Automatic context in expression debugger

Opening the expression debugger now automatically sets the value of the “context” field to the expressions corresponding to the context of the page that you were viewing when you opened the expression debugger.

Additionally, you can now directly open an expression from the page analytics in the expression debugger.

Changes for application managers

PI48596 - Make Metro Tile Counters run in read uncommitted

Expressions for tiles can now be evaluated in read uncommitted mode by adding the following line to the appsettings in the web.config:

<add key=“tile.selectwithreaduncommitted” value=“true”/>

PI19668 - Generate integrated mode compatible web.config

The web.config generated by the generator is now integrated mode compatible. Deployment will soon be adjusted accordingly.

PI47925 - Generate ASP.NET 4 compatible web.config

It is now possible to generate an ASP.NET 4 compatible web.config. Deployment will soon be adjusted to be able to make full use of this feature.

PI51062 - Retrieve unique license for demo/trial applications

Demo applications now get their own license, which is automatically set by the generator.

Note: The preferred way to set the license serial, is with the “serial” appsetting in web.config, which is also the way the generator sets it. When the appsetting does not exist, the “serial.framework” appsetting is used as fallback.

Changes for plugin developers

PI48671 - Assembly bindings / binding redirects in web.config from data.xml

This change allows plugin developers to specify that a different version of an assembly should be used than the default version included with the framework. See documentation on “AssemblyRedirect” in Explanation of the data.xml for details on how to use this.

7 Likes