TopLogic - the automated application engine
  • Releases
  • Dokumentation
  • Github
  • Discord
  1. Home
  2. Releases
  3. TL_7.2.0_01
  4. #25095

7.2.0_01
TopLogic Release

2020-09-01

Enhancement

Major
#24864
Create TLEnumeration in module tree
#25147
Provide layout for model-based search in base
Detail
#24403
Rewriter to remove old data from DOStorage during migration
#24948
Upgrade ACE Editor to version 1.4.10
#25096
Comparator for Named
#25103
Change OptionProvider to OptionModel
#25112
Common superclass for TLAnnotation with string value
#25124
Display of the sorting in the list administration
#25129
Configure model filter on ModelService
#25131
Moving various ResourceProviders from element to tl
#25155
Name mapping for Named
#25159
Remove ModelSpec.Null as option for the model
#25170
Clear and uniform display of error messages

Bugfix

Major
#25095
Error when configuring views in-app
#25117
Log ERROR because of license in newly installed application
#25118
Invalid component reference in meetingDialog
#25121
New application: BoxLayoutTag$ConfigService module not started
Detail
#24851
DefaultFormFieldControlProvider always hard sets the ButtonRenderer
#24870
Attributes tab in Model Editor also visible for modules
#24886
Wrong disabled icon for detail dialog opener in sidebar theme
#24907
Incorrect "matching parentesis" markup in TL script editor
#24908
Double (ugly) error messages german/english in Expert search
#24911
Context help in TL script editor not case-insensitive
#24955
Invisible icons / texts in Dezenzt theme
#25092
I18N In-app development issues
#25093
Usability problems with in-app development
#25114
Form editor does not adapt to the theme?
#25115
Design mode button no longer red after tab addition
#25119
404 Error "favicon.ico"
#25120
Dependency problem in new application
#25128
Errors in the log when starting a new application
#25148
Missing translation "is empty" "is not empty"
#25154
Missing serialization of configuration properties in DisplayStrategy.IGNORE
#25158
Remove own component as option for model source
#25161
Target Label requires MainLayout when loading configuration
#25168
Delete unused FormEditorApplyHandler
#25169
TL script: CCE when comparing integer and double
#25172
Repair surface defects
#25176
Model editor not enabled by default in new app
#25178
Error icon overlaps dialog opener in grids in decent theme
#25187
Forms in dialogs predominantly non-reactive
Nice to have
#25181
Search icon in decent theme not centered when selected
Bugfix (User-visible)

Major

#25095

Error when configuring views in-app

FollowUpInAppDevelopmentLayoutEditor
  • If I reconfigure a dialog afterwards and use the red "X" at the very top right to remove the entire form, I cannot log in to the application afterwards.
    • The "X" for the entire form should probably never be displayed. Neither when editing nor when creating. Neither for dialogs nor for other views.
    • It must not happen that the customer can no longer log into his application and the only solution is "throw everything away". No matter by what error it comes to that. Even if this does not affect the root account but only one of many accounts: If he has laboriously configured his application for weeks, and then the only solution to fix the login is "throw away the work of the last weeks", he will not shop with us anymore.
  • When I click on "reset layout configuration", a warning comes up in the log: Dropped dangling DBContext: DBContext[person:1] M 1 N 0 R 0 Here is the abbreviated allocation stack trace:
[...] at com.top_logic.knowledge.wrap.AbstractWrapper.setReference(AbstractWrapper.java:904) at com.top_logic.mig.html.layout.PersistentTemplateLayoutWrapper.setPerson(PersistentTemplateLayoutWrapper.java:55) at com.top_logic.mig.html.layout.LayoutStorage.internalReleaseLayouts(LayoutStorage.java:805) at com.top_logic.mig.html.layout.LayoutStorage.releasePersistentLayouts(LayoutStorage.java:781) at com.top_logic.mig.html.layout.LayoutStorage.releasePersistentLayouts(LayoutStorage.java:769) at com.top_logic.layout.editor.commands.ReleaseLayoutConfiguration.internalHandleCommand(ReleaseLayoutConfiguration.java:65) at com.top_logic.tool.boundsec.ConfirmCommandHandler.handleCommand(ConfirmCommandHandler.java:46) at com.top_logic.tool.boundsec.CommandHandlerUtil.handleCommand(CommandHandlerUtil.java:26) at com.top_logic.mig.html.layout.LayoutComponent.dispatchCommand(LayoutComponent.java:3384) at com.top_logic.mig.html.layout.CommandDispatcher.internalDispatchCommand(CommandDispatcher.java:158) at com.top_logic.mig.html.layout.CommandDispatcher.internalDispatch(CommandDispatcher.java:95) at com.top_logic.mig.html.layout.CommandDispatcher.dispatchCommand(CommandDispatcher.java:78) at com.top_logic.tool.boundsec.SuspendedResult.resume(SuspendedResult.java:58) at com.top_logic.tool.boundsec.HandlerResult$1.executeCommand(HandlerResult.java:259) at com.top_logic.layout.basic.DelegatingCommandModel.internalExecuteCommand(DelegatingCommandModel.java:51) at com.top_logic.layout.basic.AbstractCommandModel.executeCommand(AbstractCommandModel.java:45) at com.top_logic.layout.basic.CommandModelAdapter.executeCommand(CommandModelAdapter.java:47) at com.top_logic.layout.messagebox.MessageBox$ClosingCommand.executeCommand(MessageBox.java:656) [...]
  • Fixed.
  • I get a NullPointerException in the following scenario and opening the dialog fails:
  • Note: Do not log out in between.
  • Create a new tab.
  • Create a new table in it.
  • Add a dialog afterwards. So not directly when creating the table.
  • Open dialog.
  • A NullPointerException is thrown.
  • LayoutComponent.getWindow() returns null.
  • This causes LayoutComponent.getDialogSupport() to fail.
  • The component is the TableComponent.
  • ~~When I configure the main tabs, there is another tab "Permissions" in the options. If I select that, a warning is logged: > Duplicate component name com.top_logic.element/admin/security/securityStructure.xml#adminRolesView_navigationTree ...~~
  • This is because a legacy layout shares a component name with another layout. There is nothing to do about it, because the legacy layout is still included in quite a lot of applications.
  • There is now a configuration tl:LayoutEditorConfig where you can explicitly define a set of layouts that are not available to e.g. create new tabs.
  • If I specify a "command to open dialog", I have to think of an ID. This must not collide with an existing ID, otherwise there will probably be problems. But there is no constraint for this.
  • This is quite difficult to implement (I don't know how) - for relatively little benefit.
  • When I add a dialog without creating a "command to open dialog", the button to open the dialog has the icon for "missing an icon here": <?>.
  • Dialog opener is now selected by default. But if you don't specify an icon, then you don't have an icon, I guess that's normal.
  • If a user puts in an infinite loop in a TL script expression by mistake (or on purpose), is that caught somewhere via a timeout, or is the server thread then busy until the application is restarted at some point? If we don't prevent this, anyone who is allowed to customize a view can drive the server into overload: All it takes is to reload the corresponding page often enough, because the server seems to be "not responding" (because it's stuck in the infinite loop).
  • Yes - if you're clever about it, you can probably get an infinite loop to work. That's a separate ticket.
  • Releasing the layout failed with a NullPointerException. Since this was already tested by Sven that it works in principle, it is probably related to the specific layout: In the main tab bar is a new tab with a nameless table representing DemoTypes:DemoTypes.All, and a nameless form that has as model the selection of the component. I can reproduce it, report back to me if necessary.
java.lang.NullPointerException at com.top_logic.dob.identifier.ObjectKey$3.map(ObjectKey.java:91) at com.top_logic.knowledge.service.db2.expr.visit.ObjectExpressionEvaluator.visitIdentifier(ObjectExpressionEvaluator.java:235) at com.top_logic.knowledge.service.db2.expr.visit.ObjectExpressionEvaluator.visitIdentifier(ObjectExpressionEvaluator.java:1) at com.top_logic.knowledge.search.Operator.visit(Operator.java:143) at com.top_logic.knowledge.service.db2.expr.visit.AbstractExpressionEvaluator.visitUnaryOperation(AbstractExpressionEvaluator.java:203)
  • Fixed.
  • If a tab is created without a name and icon, quite a few consequential errors occur. A tl:constraint must prevent this.
  • Tab name is mandatory.
  • If F5 is pressed in a view with several single-line TL script fields, several JavaScript errors are written to the log. About one error per TL script field. Tested in Firefox.

Client-side message: Uncaught JavaScript exception (exception: 'TypeError: can't access property "layout", closestLayoutResizeElement is null', component: 'rootLayout#masterFrame' [...])
- From time to time this also happens when I want to close the dialog by pressing ESC. Then the dialog is still open. But with ESC I cannot reproduce this stably.
* Fixed.

  • When configuring for example trees, if not all TL script expressions are filled and I press "Ok", exceptions and errors occur in the log. Probably depending on the amount of filled expressions other errors. There should be constraints on the fields here.
    • Script properties are now non-nullable.
  • Adding a new tab sometimes fails with a NullPointerException. The error occurred with the tabs found on the following pages:
    • Structures > Type Demo
    • Technical Demo > LayoutFramework
    • Security examples > Security example types
    • The problem is that among other things these views have not yet been converted to typed templates. The "Add Tab" command is now only executable if the tabbar is instantiated from a typed template.
  • Dialogs can be created but not edited. Dialogs are not respected when replacing components. In addition, changes in the configuration of the dialog, e.g. its icon or name, are not applied because the DialogParent is not updated.
    • Dialogs can now be edited and replaced. The update is performed directly after command execution.
  • When creating an OpenHandler for a dialog, so far only the ID property is mandatory. A missing specification of resources causes missing resource ... Error messages in the log for the configured command. The same problem applies to configured button commands.
    • The label of the command to open a dialog is now mandatory.
  • The "default dialog opener" as button command does not work, because among other things it is not possible to select the dialog to open at all. This results in an NPE.
    • For the standard dialog opener it is now necessary to select a (global) dialog that is to be opened.
  • If one selects as ModelProvider a provider by expression for a component, this leads without further changes to this field to an error. A suitable default value, like it is used in other TLScript fields, would be a consistent solution.
    • tl:ModelProviderByExpression now has the null expression as default.
  • If you execute the commands "Design form" or "Reset form" for an in-app created form, this leads to an error if the form does not have a model.
    • Since an in-app form determines its type by its model, the in-app specific form commands can only be executable if the form has a model. The corresponding tl:ExecutabilityRule has been added.
  • If the type of a table is changed afterwards. The options and selection of columns must also be adjusted.
    • When changing the type of the table, the selection in the fields for the properties of the column configuration is kept. In declarative forms I don't know how to solve this problem "cleanly". A listener on the property that reacts to changes of the type can therefore not be registered. Instead there is now a constraint which checks if the selected columns are valid for the given type when the component configuration is completed.

Test

  • /com.top_logic.demo/src/test/com/top_logic/demo/scripted/layout/TestDialogCreation.script.xml
  • /com.top_logic.demo/src/test/com/top_logic/demo/scripted/layout/TestDialogEdit.script.xml
  • /com.top_logic.demo/src/test/com/top_logic/demo/scripted/layout/TestButtonCreationByExpression.script.xml
  • /com.top_logic.demo/src/test/com/top_logic/demo/scripted/layout/TestButtonCreationForExistingDialog.script.xml
  • Get Started
  • Github
  • Discord
  • Das Unternehmen hinter TopLogic
  • Softwareentwicklung heute
  • Kontakt

© Copyright – Business Operation Systems GmbH

  • top-logic.com
  • Nutzungsbedingungen
  • Impressum
  • Rechtlicher Hinweis
  • Datenschutz
  • DE
  • Login