MOBILE-3657 workshop: Add siteplugins support
parent
8a5ea5e76f
commit
cb835f7031
|
@ -0,0 +1,70 @@
|
|||
// (C) Copyright 2015 Moodle Pty Ltd.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import { AddonWorkshopAssessmentStrategyHandler } from '@addons/mod/workshop/services/assessment-strategy-delegate';
|
||||
import { AddonModWorkshopGetAssessmentFormFieldsParsedData } from '@addons/mod/workshop/services/workshop';
|
||||
import { Type } from '@angular/core';
|
||||
import {
|
||||
CoreSitePluginsWorkshopAssessmentStrategyComponent,
|
||||
} from '@features/siteplugins/components/workshop-assessment-strategy/workshop-assessment-strategy';
|
||||
import { CoreFormFields } from '@singletons/form';
|
||||
import { CoreSitePluginsBaseHandler } from './base-handler';
|
||||
|
||||
/**
|
||||
* Handler to display a workshop assessment strategy site plugin.
|
||||
*/
|
||||
export class CoreSitePluginsWorkshopAssessmentStrategyHandler
|
||||
extends CoreSitePluginsBaseHandler
|
||||
implements AddonWorkshopAssessmentStrategyHandler {
|
||||
|
||||
constructor(public name: string, public strategyName: string) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
getComponent(): Type<unknown> {
|
||||
return CoreSitePluginsWorkshopAssessmentStrategyComponent;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
async getOriginalValues(): Promise<AddonModWorkshopGetAssessmentFormFieldsParsedData[]> {
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
hasDataChanged(): boolean {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
async isEnabled(): Promise<boolean> {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
async prepareAssessmentData(): Promise<CoreFormFields> {
|
||||
return {};
|
||||
}
|
||||
|
||||
}
|
|
@ -25,8 +25,7 @@ import { CoreSitePluginsQuestionBehaviourComponent } from './question-behaviour/
|
|||
import { CoreSitePluginsQuizAccessRuleComponent } from './quiz-access-rule/quiz-access-rule';
|
||||
import { CoreSitePluginsAssignFeedbackComponent } from './assign-feedback/assign-feedback';
|
||||
import { CoreSitePluginsAssignSubmissionComponent } from './assign-submission/assign-submission';
|
||||
// @todo
|
||||
// import { CoreSitePluginsWorkshopAssessmentStrategyComponent } from './workshop-assessment-strategy/workshop-assessment-strategy';
|
||||
import { CoreSitePluginsWorkshopAssessmentStrategyComponent } from './workshop-assessment-strategy/workshop-assessment-strategy';
|
||||
import { CoreSitePluginsBlockComponent } from './block/block';
|
||||
import { CoreSitePluginsOnlyTitleBlockComponent } from './only-title-block/only-title-block';
|
||||
|
||||
|
@ -43,7 +42,7 @@ import { CoreSitePluginsOnlyTitleBlockComponent } from './only-title-block/only-
|
|||
CoreSitePluginsQuizAccessRuleComponent,
|
||||
CoreSitePluginsAssignFeedbackComponent,
|
||||
CoreSitePluginsAssignSubmissionComponent,
|
||||
// @todo CoreSitePluginsWorkshopAssessmentStrategyComponent,
|
||||
CoreSitePluginsWorkshopAssessmentStrategyComponent,
|
||||
],
|
||||
imports: [
|
||||
CoreSharedModule,
|
||||
|
@ -61,7 +60,7 @@ import { CoreSitePluginsOnlyTitleBlockComponent } from './only-title-block/only-
|
|||
CoreSitePluginsQuizAccessRuleComponent,
|
||||
CoreSitePluginsAssignFeedbackComponent,
|
||||
CoreSitePluginsAssignSubmissionComponent,
|
||||
// @todo CoreSitePluginsWorkshopAssessmentStrategyComponent,
|
||||
CoreSitePluginsWorkshopAssessmentStrategyComponent,
|
||||
],
|
||||
})
|
||||
export class CoreSitePluginsComponentsModule {}
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
<core-compile-html [text]="content" [jsData]="jsData" (created)="componentCreated($event)"></core-compile-html>
|
|
@ -0,0 +1,54 @@
|
|||
// (C) Copyright 2015 Moodle Pty Ltd.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import { AddonWorkshopAssessmentStrategyDelegate } from '@addons/mod/workshop/services/assessment-strategy-delegate';
|
||||
import { AddonModWorkshopGetAssessmentFormFieldsParsedData } from '@addons/mod/workshop/services/workshop';
|
||||
import { AddonModWorkshopSubmissionAssessmentWithFormData } from '@addons/mod/workshop/services/workshop-helper';
|
||||
import { Component, OnInit, Input } from '@angular/core';
|
||||
import { CoreSitePluginsCompileInitComponent } from '@features/siteplugins/classes/compile-init-component';
|
||||
|
||||
/**
|
||||
* Component that displays a workshop assessment strategy plugin created using a site plugin.
|
||||
*/
|
||||
@Component({
|
||||
selector: 'core-siteplugins-workshop-assessment-strategy',
|
||||
templateUrl: 'core-siteplugins-workshop-assessment-strategy.html',
|
||||
})
|
||||
export class CoreSitePluginsWorkshopAssessmentStrategyComponent extends CoreSitePluginsCompileInitComponent implements OnInit {
|
||||
|
||||
@Input() workshopId!: number;
|
||||
@Input() assessment!: AddonModWorkshopSubmissionAssessmentWithFormData;
|
||||
@Input() edit!: boolean;
|
||||
@Input() selectedValues!: AddonModWorkshopGetAssessmentFormFieldsParsedData[];
|
||||
@Input() fieldErrors!: Record<string, string>;
|
||||
@Input() strategy!: string;
|
||||
@Input() moduleId!: number;
|
||||
@Input() courseId?: number;
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
ngOnInit(): void {
|
||||
// Pass the input and output data to the component.
|
||||
this.jsData.workshopId = this.workshopId;
|
||||
this.jsData.assessment = this.assessment;
|
||||
this.jsData.edit = this.edit;
|
||||
this.jsData.selectedValues = this.selectedValues;
|
||||
this.jsData.fieldErrors = this.fieldErrors;
|
||||
this.jsData.strategy = this.strategy;
|
||||
|
||||
this.getHandlerData(AddonWorkshopAssessmentStrategyDelegate.getHandlerName(this.strategy));
|
||||
}
|
||||
|
||||
}
|
|
@ -79,6 +79,8 @@ import {
|
|||
import { makeSingleton } from '@singletons';
|
||||
import { CoreMainMenuHomeDelegate } from '@features/mainmenu/services/home-delegate';
|
||||
import { CoreSitePluginsMainMenuHomeHandler } from '../classes/handlers/main-menu-home-handler';
|
||||
import { AddonWorkshopAssessmentStrategyDelegate } from '@addons/mod/workshop/services/assessment-strategy-delegate';
|
||||
import { CoreSitePluginsWorkshopAssessmentStrategyHandler } from '../classes/handlers/workshop-assessment-strategy-handler';
|
||||
|
||||
const HANDLER_DISABLED = 'core_site_plugins_helper_handler_disabled';
|
||||
|
||||
|
@ -1094,27 +1096,23 @@ export class CoreSitePluginsHelperProvider {
|
|||
* @param handlerName Name of the handler in the plugin.
|
||||
* @param handlerSchema Data about the handler.
|
||||
* @return Promise resolved with a string to identify the handler.
|
||||
* @todo
|
||||
*/
|
||||
protected registerWorkshopAssessmentStrategyHandler(
|
||||
plugin: CoreSitePluginsPlugin, // eslint-disable-line @typescript-eslint/no-unused-vars
|
||||
handlerName: string, // eslint-disable-line @typescript-eslint/no-unused-vars
|
||||
handlerSchema: CoreSitePluginsHandlerCommonData, // eslint-disable-line @typescript-eslint/no-unused-vars
|
||||
plugin: CoreSitePluginsPlugin,
|
||||
handlerName: string,
|
||||
handlerSchema: CoreSitePluginsHandlerCommonData,
|
||||
): Promise<string | undefined> {
|
||||
// @todo
|
||||
return Promise.resolve('');
|
||||
return this.registerComponentInitHandler(
|
||||
plugin,
|
||||
handlerName,
|
||||
handlerSchema,
|
||||
AddonWorkshopAssessmentStrategyDelegate.instance,
|
||||
(uniqueName) => {
|
||||
const strategyName = (handlerSchema.moodlecomponent || plugin.component).replace('workshopform_', '');
|
||||
|
||||
// return this.registerComponentInitHandler(
|
||||
// plugin,
|
||||
// handlerName,
|
||||
// handlerSchema,
|
||||
// this.workshopAssessmentStrategyDelegate,
|
||||
// (uniqueName, result) => {
|
||||
// const strategyName = (handlerSchema.moodlecomponent || plugin.component).replace('workshopform_', '');
|
||||
|
||||
// return new CoreSitePluginsWorkshopAssessmentStrategyHandler(uniqueName, strategyName);
|
||||
// },
|
||||
// );
|
||||
return new CoreSitePluginsWorkshopAssessmentStrategyHandler(uniqueName, strategyName);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue