MOBILE-2333 siteplugins: Use lang at plugin level and fix {$a}
parent
db3fb84547
commit
f209da8ec3
|
@ -167,28 +167,28 @@ export class CoreSitePluginsHelperProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given a handler's unique name, return the prefix to add to its string keys.
|
* Given an addon name, return the prefix to add to its string keys.
|
||||||
*
|
*
|
||||||
* @param {string} handlerName Handler's unique name (result of getHandlerUniqueName).
|
* @param {string} addon Name of the addon (plugin.addon).
|
||||||
* @return {string} Prefix.
|
* @return {string} Prefix.
|
||||||
*/
|
*/
|
||||||
protected getHandlerPrefixForStrings(handlerName: string): string {
|
protected getPrefixForStrings(addon: string): string {
|
||||||
if (handlerName) {
|
if (addon) {
|
||||||
return 'plugin.' + handlerName + '.';
|
return 'plugin.' + addon + '.';
|
||||||
}
|
}
|
||||||
|
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given a handler's unique name and the key of a string, return the full string key (prefixed).
|
* Given an addon name and the key of a string, return the full string key (prefixed).
|
||||||
*
|
*
|
||||||
* @param {string} handlerName Handler's unique name (result of getHandlerUniqueName).
|
* @param {string} addon Name of the addon (plugin.addon).
|
||||||
* @param {string} key The key of the string.
|
* @param {string} key The key of the string.
|
||||||
* @return {string} Full string key.
|
* @return {string} Full string key.
|
||||||
*/
|
*/
|
||||||
protected getHandlerPrefixedString(handlerName: string, key: string): string {
|
protected getPrefixedString(addon: string, key: string): string {
|
||||||
return this.getHandlerPrefixForStrings(handlerName) + key;
|
return this.getPrefixForStrings(addon) + key;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -216,21 +216,19 @@ export class CoreSitePluginsHelperProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load the lang strings for a handler.
|
* Load the lang strings for a plugin.
|
||||||
*
|
*
|
||||||
* @param {any} plugin Data of the plugin.
|
* @param {any} plugin Data of the plugin.
|
||||||
* @param {string} handlerName Name of the handler in the plugin.
|
|
||||||
* @param {any} handlerSchema Data about the handler.
|
|
||||||
*/
|
*/
|
||||||
loadHandlerLangStrings(plugin: any, handlerName: string, handlerSchema: any): void {
|
loadLangStrings(plugin: any): void {
|
||||||
if (!handlerSchema.lang) {
|
if (!plugin.parsedLang) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const lang in handlerSchema.lang) {
|
for (const lang in plugin.parsedLang) {
|
||||||
const prefix = this.getHandlerPrefixForStrings(this.sitePluginsProvider.getHandlerUniqueName(plugin, handlerName));
|
const prefix = this.getPrefixForStrings(plugin.addon);
|
||||||
|
|
||||||
this.langProvider.addSitePluginsStrings(lang, handlerSchema.lang[lang], prefix);
|
this.langProvider.addSitePluginsStrings(lang, plugin.parsedLang[lang], prefix);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -249,9 +247,15 @@ export class CoreSitePluginsHelperProvider {
|
||||||
if (!plugin.parsedHandlers) {
|
if (!plugin.parsedHandlers) {
|
||||||
plugin.parsedHandlers = JSON.parse(plugin.handlers);
|
plugin.parsedHandlers = JSON.parse(plugin.handlers);
|
||||||
}
|
}
|
||||||
|
if (!plugin.parsedLang && plugin.lang) {
|
||||||
|
plugin.parsedLang = JSON.parse(plugin.lang);
|
||||||
|
}
|
||||||
|
|
||||||
this.sitePluginsProvider.hasSitePluginsLoaded = true;
|
this.sitePluginsProvider.hasSitePluginsLoaded = true;
|
||||||
|
|
||||||
|
// Register lang strings.
|
||||||
|
this.loadLangStrings(plugin);
|
||||||
|
|
||||||
// Register all the handlers.
|
// Register all the handlers.
|
||||||
for (const name in plugin.parsedHandlers) {
|
for (const name in plugin.parsedHandlers) {
|
||||||
promises.push(this.registerHandler(plugin, name, plugin.parsedHandlers[name]));
|
promises.push(this.registerHandler(plugin, name, plugin.parsedHandlers[name]));
|
||||||
|
@ -288,7 +292,6 @@ export class CoreSitePluginsHelperProvider {
|
||||||
* @return {Promise<any>} Promise resolved when done.
|
* @return {Promise<any>} Promise resolved when done.
|
||||||
*/
|
*/
|
||||||
registerHandler(plugin: any, handlerName: string, handlerSchema: any): Promise<any> {
|
registerHandler(plugin: any, handlerName: string, handlerSchema: any): Promise<any> {
|
||||||
this.loadHandlerLangStrings(plugin, handlerName, handlerSchema);
|
|
||||||
|
|
||||||
// Wait for the bootstrap JS to be executed.
|
// Wait for the bootstrap JS to be executed.
|
||||||
return this.bootstrapHandler(plugin, handlerSchema).then((result) => {
|
return this.bootstrapHandler(plugin, handlerSchema).then((result) => {
|
||||||
|
@ -380,7 +383,7 @@ export class CoreSitePluginsHelperProvider {
|
||||||
|
|
||||||
// Create and register the handler.
|
// Create and register the handler.
|
||||||
const uniqueName = this.sitePluginsProvider.getHandlerUniqueName(plugin, handlerName),
|
const uniqueName = this.sitePluginsProvider.getHandlerUniqueName(plugin, handlerName),
|
||||||
prefixedTitle = this.getHandlerPrefixedString(uniqueName, handlerSchema.displaydata.title);
|
prefixedTitle = this.getPrefixedString(plugin.addon, handlerSchema.displaydata.title);
|
||||||
|
|
||||||
this.courseOptionsDelegate.registerHandler(new CoreSitePluginsCourseOptionHandler(uniqueName, prefixedTitle, plugin,
|
this.courseOptionsDelegate.registerHandler(new CoreSitePluginsCourseOptionHandler(uniqueName, prefixedTitle, plugin,
|
||||||
handlerSchema, bootstrapResult, this.sitePluginsProvider));
|
handlerSchema, bootstrapResult, this.sitePluginsProvider));
|
||||||
|
@ -409,7 +412,7 @@ export class CoreSitePluginsHelperProvider {
|
||||||
|
|
||||||
// Create and register the handler.
|
// Create and register the handler.
|
||||||
const uniqueName = this.sitePluginsProvider.getHandlerUniqueName(plugin, handlerName),
|
const uniqueName = this.sitePluginsProvider.getHandlerUniqueName(plugin, handlerName),
|
||||||
prefixedTitle = this.getHandlerPrefixedString(uniqueName, handlerSchema.displaydata.title);
|
prefixedTitle = this.getPrefixedString(plugin.addon, handlerSchema.displaydata.title);
|
||||||
|
|
||||||
this.mainMenuDelegate.registerHandler(
|
this.mainMenuDelegate.registerHandler(
|
||||||
new CoreSitePluginsMainMenuHandler(uniqueName, prefixedTitle, plugin, handlerSchema, bootstrapResult));
|
new CoreSitePluginsMainMenuHandler(uniqueName, prefixedTitle, plugin, handlerSchema, bootstrapResult));
|
||||||
|
@ -471,7 +474,7 @@ export class CoreSitePluginsHelperProvider {
|
||||||
|
|
||||||
// Create and register the handler.
|
// Create and register the handler.
|
||||||
const uniqueName = this.sitePluginsProvider.getHandlerUniqueName(plugin, handlerName),
|
const uniqueName = this.sitePluginsProvider.getHandlerUniqueName(plugin, handlerName),
|
||||||
prefixedTitle = this.getHandlerPrefixedString(uniqueName, handlerSchema.displaydata.title);
|
prefixedTitle = this.getPrefixedString(plugin.addon, handlerSchema.displaydata.title);
|
||||||
|
|
||||||
this.userDelegate.registerHandler(new CoreSitePluginsUserProfileHandler(uniqueName, prefixedTitle, plugin, handlerSchema,
|
this.userDelegate.registerHandler(new CoreSitePluginsUserProfileHandler(uniqueName, prefixedTitle, plugin, handlerSchema,
|
||||||
bootstrapResult, this.sitePluginsProvider));
|
bootstrapResult, this.sitePluginsProvider));
|
||||||
|
|
|
@ -63,14 +63,19 @@ export class CoreLangProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const key in strings) {
|
for (const key in strings) {
|
||||||
const prefixedKey = prefix + key,
|
const prefixedKey = prefix + key;
|
||||||
value = strings[key];
|
let value = strings[key];
|
||||||
|
|
||||||
if (this.customStrings[lang] && this.customStrings[lang][prefixedKey]) {
|
if (this.customStrings[lang] && this.customStrings[lang][prefixedKey]) {
|
||||||
// This string is overridden by a custom string, ignore it.
|
// This string is overridden by a custom string, ignore it.
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add another curly bracket to string params ({$a} -> {{$a}}).
|
||||||
|
value = value.replace(/{([^ ]+)}/gm, '{{$1}}');
|
||||||
|
// Make sure we didn't add to many brackets in some case.
|
||||||
|
value = value.replace(/{{{([^ ]+)}}}/gm, '{{$1}}');
|
||||||
|
|
||||||
if (!this.sitePluginsStrings[lang][prefixedKey]) {
|
if (!this.sitePluginsStrings[lang][prefixedKey]) {
|
||||||
// It's a new site plugin string. Store the original value.
|
// It's a new site plugin string. Store the original value.
|
||||||
this.sitePluginsStrings[lang][prefixedKey] = {
|
this.sitePluginsStrings[lang][prefixedKey] = {
|
||||||
|
|
|
@ -836,6 +836,10 @@ export class CoreUtilsProvider {
|
||||||
* @return {object} Object.
|
* @return {object} Object.
|
||||||
*/
|
*/
|
||||||
objectToKeyValueMap(objects: object[], keyName: string, valueName: string, keyPrefix?: string): object {
|
objectToKeyValueMap(objects: object[], keyName: string, valueName: string, keyPrefix?: string): object {
|
||||||
|
if (!objects) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const prefixSubstr = keyPrefix ? keyPrefix.length : 0,
|
const prefixSubstr = keyPrefix ? keyPrefix.length : 0,
|
||||||
mapped = {};
|
mapped = {};
|
||||||
objects.forEach((item) => {
|
objects.forEach((item) => {
|
||||||
|
|
Loading…
Reference in New Issue