Merge pull request #2010 from dpalou/MOBILE-3102

MOBILE-3102 core: Support disabling site plugins without exceptions
main
Juan Leyva 2019-07-26 16:38:50 +02:00 committed by GitHub
commit 1944f46fb5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 17 additions and 1 deletions

View File

@ -79,6 +79,8 @@ import { CoreSitePluginsBlockHandler } from '@core/siteplugins/classes/handlers/
*/
@Injectable()
export class CoreSitePluginsHelperProvider {
protected HANDLER_DISABLED = 'core_site_plugins_helper_handler_disabled';
protected logger;
protected courseRestrictHandlers = {};
@ -235,7 +237,9 @@ export class CoreSitePluginsHelperProvider {
}
// Create a "fake" instance to hold all the libraries.
const instance = {};
const instance = {
HANDLER_DISABLED: this.HANDLER_DISABLED
};
this.compileProvider.injectLibraries(instance);
// Add some data of the WS call result.
@ -247,6 +251,11 @@ export class CoreSitePluginsHelperProvider {
// Now execute the javascript using this instance.
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;
});
}
@ -451,6 +460,13 @@ export class CoreSitePluginsHelperProvider {
}));
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) {
// Load the styles.
this.loadStyles(plugin, handlerName, handlerSchema.styles.url, cssCode, handlerSchema.styles.version, siteId);