Incompatible changes deprecated

Release 2.0.0

With the 2.0.0 release, this package has been upgraded to work with the latest 8.0.0 App Suite Core UI. Additionally, almost every occurence of "ad" or "ads" has been replaced with display. The following list contains an overview of the most notable changed:

Code upddated to ES Modules

Since the App Suite core code has been updated to use native ES modules, every code that is loaded via manifests has to be provided as ES modules. It is recommended to create the modules with vite. You can find an example project here.

Renaming of settings

Every setting that has been in the form io.ox/ads//setting has been moved to io.ox/display//setting in order to prevent ad-blocker detection.

Additionally, the setting io.ox/ads//ad_cookies is now io.ox/display//displayCookies.

Renaming of extension points

Every extension point that has been of the form io.ox/ads/pointName has been renamed to io.ox/display/pointName. Additionally, the main extension point (formerly io.ox/ads) is now called io.ox/display.

Renaming of adspaces

All adspaces are now just referred as spaces in the code. Moreover, all the names of the form io.ox/asd/adspace were renamed to io.ox/display/adspace.

Renaming of capability

The capability to enable/disable OX Display has been renamed from ads to display.

Extensions of spaces need to be registered before default

Due to some changes in the order of code loading, you need to make sure that the extension points for spaces have an additional parameter before: default. Example:

ext.point('the/spaces/name').extend({
    before: 'default', // This makes sure this extensions is run before code is attached to the dom
    cleanup (baton) { /* do some cleanup */ },
    draw (baton) { /* append baton.data.html to the spaces element, do other stuff */ },
    reload (baton) { /* trigger a reload of the banner */ }
    defaults (baton) { /* add default values to baton.data, like for sizes or size mappings */ }
})

New manifest namespaces

Before the change to native ES modules, a manifest could have a namespace named after a file (e.g. io.ox/display/register). Those namespaces do not exists anymore. Instead there now is a dedicated namespace io.ox/display. A plugin can export a named function fetchConfig -> Promise<Array> that exposes custom configuration:

export function fetchConfig () {
  return fetch('api/display/config')
}

Release 1.4.2

Removal of io.ox/ads/mailBackground and io.ox/ads/portalBackground ad spaces

Those ad spaces have been removed in favour of the new wallpaper "align" config options which has been available since a while.

Renaming of io.ox/ads/driveFolder to io.ox/ads/folder ad space

The driveFolder ad space has been renamed to folder, which reflects the new and more general use-case that is now supported.

Release 1.4.1

Removed io.ox/ads/skyscraperLeft extension point

This has been removed in favour of a new option of the io.ox/ads/skyscraper extension point. To migrate to the new API, rename all io.ox/ads/skyscraperLeft space configurations and add "placement": "left" attribute to it.

Release 1.3.0

Removed some filters from the default implementation

Filters that can easily be implemented in the middleware, have been removed from frontend code. Those attributes are not used to filter the list of active ads any longer:

  • capabilities
  • active

In order to add custom support this, use the io.ox/ads extension point and implement a custom filter method.

ext.point('io.ox/ads').extend({
    filter: function (baton) {
        baton.activeAds = baton.activeAds.filter(function(conf) {
            return conf.active && capabilities.has(conf.capabilities);
        });
    }
});