WebHare community

4.28 released

4.28.0 - 2020-05-04

Incompatibilities and deprecations

  • @mod-system/js/compat/innertext.js is obsolete and has been removed. See https://gitlab.com/webhare/platform/issues/7
  • The implementations widgetedit (<screen implementation="p:widgetedit"> and WidgetEditScreenBase) and widgetextension
    (<tabsextension implementation="p:widgetextension"> and WidgetEditExtensionBase) have been deprecated since March 2019 and have now been removed.
    A widgetedit screen should be replaced with a tabsextension (see Editing widgets (editfragment, editscreen and editcomponent deprecated))
    and for a widget tabsextension the implementation attribute can be removed.
  • The datastore property for <p:whfsinstance> has been removed.
  • wh rewrite is now wh dev:rewrite
  • Assigning DEFAULT RECORD to a composition no longer resets all associated cells, as this was inconsistent with the behavior of
    assigning partially set records (which ignored instead of cleared missing cells). Use ResetValue to explicitly reset all cells of a composition
  • formsapi forms that want to resubmit themselves without invoking reset() on themselves first, must invoke reallowSubmission() (eg in onSubmitSuccess)
    to prevent accidental submission loops.
  • Support for storing siteprofiles in the Publisher has been removed. All siteprofiles should now be in modules and loaded through <webdesign> and/or <webfeature>s
  • GenerateBrowserScreenshot now always returns the screenshot in a screenshot cell of the return value
  • GenerateBrowserScreenshot no longer accepts a strategy parameter in the cutouts option
  • rpc.json services no longer enforce one call at a time. If you need to enforce this you’ll have to manage and await promises yourself.
  • rpc.json's rpcResolve has been deprecated. Use AbortControllers for 4.28+ code. A IE11 polyfill has been added
  • @mod-system/js/net/jsonrpc has been deprecated.

Things that are nice to know

  • WRD types now have a haspersonaldata flag, which can be set to TRUE for types that may contain sensitive user data. All types that refer to a type that has set haspersonaldata to TRUE are also considered to contain user data. The WRD_PERSON type has this flag set by default. When exporting or syncing WRD schemas you can choose to only export/sync non-personal data, all data or select which types to export/sync. Exporting and syncing WRD schemas now also logs audit events.
  • Tollium now has support for custom implementations and component parsers. See Custom implementations and component parsers for more information and examples.
  • GeneratePDF now supports setting the page margins and headers and footers
  • The new ‘Feedback’ app allows you to gather reports from WebHare backend users
  • You can now hide webdesigns/webfeatures completely if they are deprecated or test-only by setting the hidden flag in XML
  • Users with readonly access can now create archives in the Publisher (but probably only download them)
  • wh publisher:findwidgets helps you find and republish users of widgets
  • A new RPCClient has been created to replace @mod-system/js/net/jsonrpc. See https://www.webhare.dev/reference/rpc/services for the new syntax
    and a migration guide
  • A <filetype> or <foldertype> is now a source of <apply> rules implicitly applied to that type.
  • IsModuleVersionMatch and IsWebHareVersionMatch have been added to check WebHare and module semantic versions
  • A <filetype> can now set kind=virtualfile|rawfile|datafile to quickly set some of the most common fileype properties
  • A <filetype> or <foldertype> can now define members in its <members> subproperty and don’t need a separate <contenttype> then. You
    wil need to change the typedef= attribute to namespace= to allow this
  • Contenttype members can now use their type as localname: eg <member name="mytext" type="string" /> can now just be <string name="mytext" />
  • A <filetype> or <foldertype> is now a source of <apply> rules implicitly applied to that type.
  • A tollium <screen> can now set footerbuttons= to directly set up its footer node. Eg <screen footerbuttons="ok cancel">
    • The footerbuttons is also available on the screen’s frame, eg this->frame->footerbuttons := "ok cancel";
    • You can still setup a footer with a <defaultformbuttons>. The footerbuttons will then simply overwrite the buttons of all defaultformbuttons elements.
  • Setting/Resetting enabled on a composition now affects all its cells.
  • <arrayedit>s can now be toggled into a ‘view-only’ mode by setting its buttons property to view. It will request its rowedit screens to go into view mode too. (custom edit handlers should check ->InViewMode())
  • an <arrayedit> can set viewifdisabled="true" which will switch the arrayedit into view-only mode if it’s disabled.
  • A rowedit screen will now control its defaultformbuttons itself, setting it to OK/Cancel when editting and to Close when in view mode.
  • Tollium components can now have user-defined attributes that apply to any element, even builtin ones. These ‘user attributes’ must be in a
    separate namespace and defined in a XSD just like components and are available through the readonly property ‘userattributes’ on any component.
  • Tollium <checkbox> now supports ‘indeterminate’