From e3a726129ed31913368cb2eac1b389c4476c058f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20G=C3=A4rtner?= <andreas.gaertner@mni.thm.de> Date: Mon, 26 Sep 2016 18:47:26 +0200 Subject: [PATCH] Add flashcard feature option to addons panel and feature controller --- src/main/webapp/app/controller/Feature.js | 45 +++++++++++++------ .../webapp/app/view/diagnosis/AddOnsPanel.js | 5 ++- 2 files changed, 35 insertions(+), 15 deletions(-) diff --git a/src/main/webapp/app/controller/Feature.js b/src/main/webapp/app/controller/Feature.js index 28d62357b..a6713b1ce 100644 --- a/src/main/webapp/app/controller/Feature.js +++ b/src/main/webapp/app/controller/Feature.js @@ -146,6 +146,7 @@ Ext.define("ARSnova.controller.Feature", { jitt: this.applyJittFeature, lecture: this.applyLectureFeature, feedback: this.applyFeedbackFeature, + flashcardFeature: this.applyFlashcardsFeature, interposed: this.applyInterposedFeature, learningProgress: this.applyLearningProgressFeature, slides: this.applySlidesFeature @@ -175,6 +176,7 @@ Ext.define("ARSnova.controller.Feature", { if (!useCases.custom && !useCases.total) { features.jitt = false; features.learningProgress = false; + features.flashcardFeature = false; features.interposed = false; features.feedback = false; features.lecture = false; @@ -182,7 +184,7 @@ Ext.define("ARSnova.controller.Feature", { features.slides = false; if (useCases.flashcard) { - features.lecture = true; + features.flashcardFeature = true; } if (useCases.liveFeedback) { @@ -260,12 +262,32 @@ Ext.define("ARSnova.controller.Feature", { if (ARSnova.app.userRole === ARSnova.app.USER_ROLE_SPEAKER) { inClassPanel = tP.speakerTabPanel.inClassPanel; container = inClassPanel.inClassButtons; - this.applyButtonChange(container, inClassPanel.liveFeedbackButton, enable, 3); + this.applyButtonChange(container, inClassPanel.liveFeedbackButton, enable, 4); } else { inClassPanel = tP.userTabPanel.inClassPanel; container = inClassPanel.actionButtonPanel; - this.applyButtonChange(container, inClassPanel.voteButton, enable, 3); + this.applyButtonChange(container, inClassPanel.voteButton, enable, 4); + } + }, + + /** + * apply changes affecting the "flashcards" feature + */ + applyFlashcardsFeature: function (enable) { + var tP = ARSnova.app.mainTabPanel.tabPanel; + var inClassPanel, container, position; + + if (ARSnova.app.userRole === ARSnova.app.USER_ROLE_SPEAKER) { + inClassPanel = tP.speakerTabPanel.inClassPanel; + container = inClassPanel.inClassButtons; + position = 3; + } else { + inClassPanel = tP.userTabPanel.inClassPanel; + container = inClassPanel.inClassButtons; + position = 2; } + + this.applyButtonChange(container, inClassPanel.flashcardQuestionButton, enable, position); }, /** @@ -379,17 +401,17 @@ Ext.define("ARSnova.controller.Feature", { inClass.updateActionButtonElements(); if (features.jitt && !features.lecture) { - inClass.changeActionButtonsMode(features); tabPanel.showcaseQuestionPanel.setPreparationMode(); tabPanel.newQuestionPanel.setVariant('preparation'); + } else if (features.flashcardFeature) { + tabPanel.showcaseQuestionPanel.setFlashcardMode(); + tabPanel.newQuestionPanel.setVariant('flashcard'); } else { - inClass.changeActionButtonsMode(features); tabPanel.showcaseQuestionPanel.setLectureMode(); tabPanel.newQuestionPanel.setVariant('lecture'); } - if (features.slides) { - inClass.changeActionButtonsMode(features); - } + + inClass.changeActionButtonsMode(features); } else { // hide questionsPanel tab when session has no question features active tP.userQuestionsPanel.tab.setHidden(!hasQuestionFeatures); @@ -413,8 +435,6 @@ Ext.define("ARSnova.controller.Feature", { if (features.slides) { lectureButtonText = Messages.PRESENTATION; questionsButtonText = Messages.MY_QUESTIONS; - } else if (features.flashcard) { - lectureButtonText = Messages.FLASHCARDS; } else if (features.peerGrading) { lectureButtonText = Messages.EVALUATION_QUESTIONS; } @@ -543,15 +563,11 @@ Ext.define("ARSnova.controller.Feature", { if (features.slides && !features.lecture && !features.jitt) { panel.questionOptions.setPressedButtons([indexMap[Messages.SLIDE]]); panel.optionsToolbar.setHidden(true); - } else if (features.flashcard) { - panel.questionOptions.setPressedButtons([indexMap[Messages.FLASHCARD]]); - panel.optionsToolbar.setHidden(true); } else if (features.peerGrading) { panel.questionOptions.setPressedButtons([indexMap[Messages.EVALUATION]]); panel.optionsToolbar.setHidden(true); } else if (features.clicker) { options[indexMap[Messages.FREETEXT]].hide(); - options[indexMap[Messages.FLASHCARD]].hide(); options[indexMap[Messages.EVALUATION]].hide(); options[indexMap[Messages.SCHOOL]].hide(); options[indexMap[Messages.GRID]].hide(); @@ -559,6 +575,7 @@ Ext.define("ARSnova.controller.Feature", { } else { panel.optionsToolbar.setHidden(false); panel.questionOptions.config.showAllOptions(); + options[indexMap[Messages.FLASHCARD]].hide(); if (features.slides) { panel.questionOptions.setPressedButtons([indexMap[Messages.SLIDE]]); } diff --git a/src/main/webapp/app/view/diagnosis/AddOnsPanel.js b/src/main/webapp/app/view/diagnosis/AddOnsPanel.js index d7b310a91..26a230778 100644 --- a/src/main/webapp/app/view/diagnosis/AddOnsPanel.js +++ b/src/main/webapp/app/view/diagnosis/AddOnsPanel.js @@ -113,6 +113,9 @@ Ext.define('ARSnova.view.diagnosis.AddOnsPanel', { }, { name: 'jitt', label: Messages.PREPARATION_QUESTIONS_LONG + }, { + name: 'flashcardFeature', + label: Messages.FLASHCARDS }, { name: 'interposed', label: Messages.QUESTIONS_FROM_STUDENTS @@ -177,7 +180,7 @@ Ext.define('ARSnova.view.diagnosis.AddOnsPanel', { validateSelection: function (button) { var selection = this.getFeatureValues(); - if (!selection.lecture && !selection.interposed && !selection.jitt && !selection.feedback && !selection.slides) { + if (!selection.lecture && !selection.interposed && !selection.jitt && !selection.flashcardFeature && !selection.feedback && !selection.slides) { Ext.Msg.alert(Messages.NOTIFICATION, Messages.FEATURE_SAVE_ERROR, function () { button.enable(); }); -- GitLab