MOBILE-2333 siteplugins: Use lang at plugin level and fix {$a}
This commit is contained in:
		
							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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user