Settings Search Index deprecated

App Suite provides a searchable settings interface, where every settings app is responsible to provide its own set of search terms. The settings search index is populated by concatinating the search indexes provided by each app:

[ { title: <String> // the searchable string that corresponds to a particular setting, eg. gt('Show declined appointments'). requires: <String>, // required capabilities for this settings, eg. 'edit_public_folders || read_create_shared_folders || caldav', highlight: <Selector|Callback>, // the node to highlight; either a selector, eg. '#io-ox-calendar-showdeclinedappointments' or a callback that returns the node eg container => container.find('input[name="showChatNotifications"]').closest('fieldset').find('> legend') }, ... ]

Usually, every setting control should have a corresping search term, which is the same as the setting's title/text/headline. The search term (title) needs to be translatable (via the gt() function). Each setting should have at least one search term, but can have an unlimited number of terms.

The search index can be provided at two points:

When creating the App (in register.js):

ui.createApp({ id: 'io.ox/calendar', name: 'io.ox/calendar', title: gt.pgettext('app', 'Calendar'), searchable: true, settings: () => import('@/io.ox/calendar/settings/pane.js'), settingsSearchTerms: [{ title: gt('Subscribe to shared calendars'), requires: 'edit_public_folders || read_create_shared_folders || caldav', highlight: 'button[data-action="subscribe-shared-calendars"]' }, ...], ... })

Or by using the appropriate extension point:

// Settings ext.point('io.ox/settings/pane/main').extend({ id: 'io.ox/chat', title: gt('Chat'), ref: 'io.ox/chat', index: 120, load: () => import('@/io.ox/chat/settings/pane.js'), searchTerms: [{ title: gt('Select last chat on start'), highlight: '#io-ox-chat-selectlastroom' }, ... ] ... })