From f03b1ee803b560e3f079bac96e8e43f709351d17 Mon Sep 17 00:00:00 2001 From: Oliver Foster Date: Thu, 6 Apr 2023 17:01:04 +0100 Subject: [PATCH] Fix: Inline feedback normalisation across course and component config (fixes #87) (#88) --- js/adapt-contrib-tutor.js | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/js/adapt-contrib-tutor.js b/js/adapt-contrib-tutor.js index 7639b65..e28195f 100644 --- a/js/adapt-contrib-tutor.js +++ b/js/adapt-contrib-tutor.js @@ -9,25 +9,28 @@ class Tutor extends Backbone.Controller { initialize() { this.listenTo(Adapt, { 'componentView:postRender': this.onComponentViewPostRender, - 'questionView:showFeedback': this.onQuestionViewShowFeedback + 'questionView:showFeedback': this.onQuestionViewShowFeedback, + 'buttonsView:postRender': this.onButtonsViewPostRender }); } onComponentViewPostRender(view) { - const model = view.model; + const { model } = view; if (!model.isTypeGroup('question')) return; - const config = model.get('_tutor'); - if (!config) return; - const type = TUTOR_TYPE(config._type?.toUpperCase()); - if (type !== TUTOR_TYPE.INLINE) return; - this.listenToOnce(Adapt, 'buttonsView:postRender', this.onButtonsViewPostRender); - if (model.get('_canShowFeedback') && model.get('_isSubmitted')) { - model.setupFeedback(); - Adapt.trigger('questionView:showFeedback', view); - } + const shouldShowFeedback = (model.get('_canShowFeedback') && model.get('_isSubmitted')); + if (!shouldShowFeedback) return; + model.setupFeedback(); + Adapt.trigger('questionView:showFeedback', view); } onButtonsViewPostRender(view) { + const { model } = view; + const config = (!model.get('_tutor') || (model.get('_tutor')?._isInherited ?? true)) + ? Adapt.course.get('_tutor') + : model.get('_tutor'); + if (!config) return; + const type = TUTOR_TYPE(config._type?.toUpperCase()); + if (type !== TUTOR_TYPE.INLINE) return; const $btnAction = view.$('.js-btn-action'); const $btnFeedback = view.$('.js-btn-feedback'); const $btnMarking = view.$('.js-btn-marking');