Modifying forms deprecated
Apply different changes to the contact form via modifying its extensionpoints and extensions
Show available extension points
The edit form of the contacts app is constructed by a set of extension points. Each extension point controls a single aspect of the form. To apply modifications, the id of the point and the extension is needed. For a quick overview of the available points and extensions you can use the browser console:
// show all available extension points (across all apps)
require('io.ox/core/extensions').keys();
// you can filter down the list by using regular expression
_(require('io.ox/core/extensions').keys()).filter(function (point) {
if (/io.ox\/contacts\/edit/.test(point)) {
return point;
}
});
// show all available extensions of a known extension point
require('io.ox/core/extensions').point('io.ox/contacts/edit/personal').all();
Modify extension points
As described in Hands-on introduction extension points can be modified in multiple aspects:
// disable the display_name field
require('io.ox/core/extensions').point('io.ox/contacts/edit/personal').disable('display_name');
// reenable the display_name field
require('io.ox/core/extensions').point('io.ox/contacts/edit/personal').enable('display_name');
// replace the display_name field by "Hallo World!"
require('io.ox/core/extensions').point('io.ox/contacts/edit/personal')
.replace({
id: "display_name",
draw: function () {
this.append(
$("<div>").addClass("title").text("Hello World!")
);
}
});
// modify the index of the display_name field to bring it on top
require('io.ox/core/extensions').point('io.ox/contacts/edit/personal')
.replace({
id:"display_name",
index: 50
});
// modify the hidden status to hide the display_name field via get() as alternative way
require('io.ox/core/extensions').point('io.ox/contacts/edit/personal')
.get('display_name', function (extension) {
extension.hidden = true;
});
Extending the form validation via extension points
In addition to the default validation, another validation step can be implemented by extending the proper extension point:
// extend the validation of the display_name field
require('io.ox/core/extensions')
.point('io.ox/contacts/model/validation/display_name')
.extend({
id: 'check_for_klaus',
validate: function (value) {
if (value !== 'Klaus') {
return 'The display name has to be Klaus';
}
}
});