EventHandler.fire('com.woltlab.wcf.redactor2', 'getText_' + id, parameters.data);
- if (!this._validate(parameters)) {
- // validation failed
- return;
- }
-
- EventHandler.fire('com.woltlab.wcf.redactor2', 'submit_' + id, parameters);
+ var validateResult = this._validate(parameters);
- Ajax.api(this, {
- actionName: 'save',
- parameters: parameters
- });
+ if (!(validateResult instanceof Promise)) {
+ validateResult = Promise.resolve(validateResult);
+ }
- this._hideEditor();
+ validateResult.then(function (result) {
+ if (!result) return;
+
+ EventHandler.fire('com.woltlab.wcf.redactor2', 'submit_' + id, parameters);
+
+ Ajax.api(this, {
+ actionName: 'save',
+ parameters: parameters
+ });
+
+ this._hideEditor();
+ }.bind(this));
},
/**
var data = {
api: this,
parameters: parameters,
- valid: true
+ valid: true,
+ promise: null
};
EventHandler.fire('com.woltlab.wcf.redactor2', 'validate_' + this._getEditorId(), data);
+ if (data.valid !== false && data.promise !== null) {
+ return data.promise;
+ }
+
return (data.valid !== false);
},