diff --git a/src/addons/filter/multilang/services/handlers/multilang.ts b/src/addons/filter/multilang/services/handlers/multilang.ts index de308f819..b5b68ab1f 100644 --- a/src/addons/filter/multilang/services/handlers/multilang.ts +++ b/src/addons/filter/multilang/services/handlers/multilang.ts @@ -21,7 +21,7 @@ import { CoreSite } from '@classes/site'; import { makeSingleton } from '@singletons'; /** - * Handler to support the Multilang filter. + * Handler to support the Multilang filter in core. */ @Injectable({ providedIn: 'root' }) export class AddonFilterMultilangHandlerService extends CoreFilterDefaultHandler { diff --git a/src/addons/filter/multilang2/services/handlers/multilang2.ts b/src/addons/filter/multilang2/services/handlers/multilang2.ts index 1060b9f6d..003b2786a 100644 --- a/src/addons/filter/multilang2/services/handlers/multilang2.ts +++ b/src/addons/filter/multilang2/services/handlers/multilang2.ts @@ -19,7 +19,9 @@ import { CoreFilterDefaultHandler } from '@features/filter/services/handlers/def import { makeSingleton } from '@singletons'; /** - * Handler to support the Multilang filter. + * Handler to support the multilang2 community filter. + * + * @see https://moodle.org/plugins/filter_multilang2 */ @Injectable({ providedIn: 'root' }) export class AddonFilterMultilang2HandlerService extends CoreFilterDefaultHandler { diff --git a/src/core/features/user/components/user-profile-field/user-profile-field.ts b/src/core/features/user/components/user-profile-field/user-profile-field.ts index 441b36d6c..50ab485e7 100644 --- a/src/core/features/user/components/user-profile-field/user-profile-field.ts +++ b/src/core/features/user/components/user-profile-field/user-profile-field.ts @@ -12,11 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -import { AddonFilterMultilangHandler } from '@addons/filter/multilang/services/handlers/multilang'; -import { AddonFilterMultilang2Handler } from '@addons/filter/multilang2/services/handlers/multilang2'; import { Component, Input, OnInit, Type } from '@angular/core'; import { FormGroup } from '@angular/forms'; - +import { CoreLang } from '@services/lang'; import { AuthEmailSignupProfileField } from '@features/login/services/login-helper'; import { CoreUserProfileField } from '@features/user/services/user'; import { CoreUserProfileFieldDelegate } from '@features/user/services/user-profile-field-delegate'; @@ -54,8 +52,7 @@ export class CoreUserProfileFieldComponent implements OnInit { this.componentClass = await CoreUserProfileFieldDelegate.getComponent(this.field, this.signup); if ('param1' in this.field && this.field.param1) { - this.field.param1 = await AddonFilterMultilangHandler.filter( this.field.param1); - this.field.param1 = await AddonFilterMultilang2Handler.filter( this.field.param1); + this.field.param1 = await CoreLang.filterMultilang( this.field.param1); } this.data.field = this.field; diff --git a/src/core/services/lang.ts b/src/core/services/lang.ts index c6763637c..66a2f7a0c 100644 --- a/src/core/services/lang.ts +++ b/src/core/services/lang.ts @@ -24,6 +24,8 @@ import { makeSingleton, Translate, Http } from '@singletons'; import moment from 'moment-timezone'; import { CoreSite } from '../classes/site'; import { CorePlatform } from '@services/platform'; +import { AddonFilterMultilangHandler } from '@addons/filter/multilang/services/handlers/multilang'; +import { AddonFilterMultilang2Handler } from '@addons/filter/multilang2/services/handlers/multilang2'; /* * Service to handle language features, like changing the current language. @@ -516,6 +518,18 @@ export class CoreLangProvider { return > await observable.toPromise(); } + /** + * Filter a multilang string. + * + * @param text Multilang string. + * @returns Filtered string. + */ + async filterMultilang(text: string): Promise { + return Promise.resolve(text) + .then(text => AddonFilterMultilangHandler.filter(text)) + .then(text => AddonFilterMultilang2Handler.filter(text)); + } + /** * Unload custom or site plugin strings, removing them from the translations table. * diff --git a/src/core/services/utils/dom.ts b/src/core/services/utils/dom.ts index 30602240e..83eb3c62c 100644 --- a/src/core/services/utils/dom.ts +++ b/src/core/services/utils/dom.ts @@ -46,7 +46,6 @@ import { CoreViewerImageComponent } from '@features/viewer/components/image/imag import { CoreFormFields, CoreForms } from '../../singletons/form'; import { CoreModalLateralTransitionEnter, CoreModalLateralTransitionLeave } from '@classes/modal-lateral-transition'; import { CoreZoomLevel } from '@features/settings/services/settings-helper'; -import { AddonFilterMultilangHandler } from '@addons/filter/multilang/services/handlers/multilang'; import { CoreSites } from '@services/sites'; import { NavigationStart } from '@angular/router'; import { filter } from 'rxjs/operators'; @@ -58,8 +57,8 @@ import { CoreSiteError } from '@classes/errors/siteerror'; import { CoreUserSupport } from '@features/user/services/support'; import { CoreErrorInfoComponent } from '@components/error-info/error-info'; import { CorePlatform } from '@services/platform'; -import { AddonFilterMultilang2Handler } from '@addons/filter/multilang2/services/handlers/multilang2'; import { CoreCancellablePromise } from '@classes/cancellable-promise'; +import { CoreLang } from '@services/lang'; /* * "Utils" service with helper functions for UI, DOM elements and HTML code. @@ -1171,8 +1170,7 @@ export class CoreDomUtilsProvider { if (hasHTMLTags && !CoreSites.getCurrentSite()?.isVersionGreaterEqualThan('3.7')) { // Treat multilang. - options.message = await AddonFilterMultilangHandler.filter( options.message); - options.message = await AddonFilterMultilang2Handler.filter( options.message); + options.message = await CoreLang.filterMultilang( options.message); } const alertId = Md5.hashAsciiStr((options.header || '') + '#' + (options.message || ''));