forked from EVOgeek/Vmeda.Online
Merge pull request #2010 from dpalou/MOBILE-3102
MOBILE-3102 core: Support disabling site plugins without exceptionsmain
commit
1944f46fb5
|
@ -79,6 +79,8 @@ import { CoreSitePluginsBlockHandler } from '@core/siteplugins/classes/handlers/
|
||||||
*/
|
*/
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class CoreSitePluginsHelperProvider {
|
export class CoreSitePluginsHelperProvider {
|
||||||
|
protected HANDLER_DISABLED = 'core_site_plugins_helper_handler_disabled';
|
||||||
|
|
||||||
protected logger;
|
protected logger;
|
||||||
protected courseRestrictHandlers = {};
|
protected courseRestrictHandlers = {};
|
||||||
|
|
||||||
|
@ -235,7 +237,9 @@ export class CoreSitePluginsHelperProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a "fake" instance to hold all the libraries.
|
// Create a "fake" instance to hold all the libraries.
|
||||||
const instance = {};
|
const instance = {
|
||||||
|
HANDLER_DISABLED: this.HANDLER_DISABLED
|
||||||
|
};
|
||||||
this.compileProvider.injectLibraries(instance);
|
this.compileProvider.injectLibraries(instance);
|
||||||
|
|
||||||
// Add some data of the WS call result.
|
// Add some data of the WS call result.
|
||||||
|
@ -247,6 +251,11 @@ export class CoreSitePluginsHelperProvider {
|
||||||
// Now execute the javascript using this instance.
|
// Now execute the javascript using this instance.
|
||||||
result.jsResult = this.compileProvider.executeJavascript(instance, result.javascript);
|
result.jsResult = this.compileProvider.executeJavascript(instance, result.javascript);
|
||||||
|
|
||||||
|
if (result.jsResult == this.HANDLER_DISABLED) {
|
||||||
|
// The "disabled" field was added in 3.8, this is a workaround for previous versions.
|
||||||
|
result.disabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -451,6 +460,13 @@ export class CoreSitePluginsHelperProvider {
|
||||||
}));
|
}));
|
||||||
|
|
||||||
return Promise.all(promises).then(() => {
|
return Promise.all(promises).then(() => {
|
||||||
|
if (result && result.disabled) {
|
||||||
|
// This handler is disabled for the current user, stop.
|
||||||
|
this.logger.warn('Handler disabled by init function', plugin, handlerSchema);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (cssCode) {
|
if (cssCode) {
|
||||||
// Load the styles.
|
// Load the styles.
|
||||||
this.loadStyles(plugin, handlerName, handlerSchema.styles.url, cssCode, handlerSchema.styles.version, siteId);
|
this.loadStyles(plugin, handlerName, handlerSchema.styles.url, cssCode, handlerSchema.styles.version, siteId);
|
||||||
|
|
Loading…
Reference in New Issue