From c235e32636d1dbcae2ff1b7f3b01d930f5ee8181 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20G=C3=A4rtner?= <andreas.gaertner@mni.thm.de>
Date: Thu, 6 Oct 2016 15:53:10 +0200
Subject: [PATCH] Add methods for flashcard flip feature

---
 .../app/controller/FlashcardQuestions.js      | 49 +++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/src/main/webapp/app/controller/FlashcardQuestions.js b/src/main/webapp/app/controller/FlashcardQuestions.js
index 4777bcfe3..9284e3aa1 100644
--- a/src/main/webapp/app/controller/FlashcardQuestions.js
+++ b/src/main/webapp/app/controller/FlashcardQuestions.js
@@ -25,6 +25,8 @@ Ext.define("ARSnova.controller.FlashcardQuestions", {
 		models: ['ARSnova.model.Question']
 	},
 
+	flip: false,
+
 	listQuestions: function () {
 		var sTP = ARSnova.app.mainTabPanel.tabPanel.speakerTabPanel;
 		sTP.newQuestionPanel.setVariant('flashcard');
@@ -57,6 +59,53 @@ Ext.define("ARSnova.controller.FlashcardQuestions", {
 		ARSnova.app.questionModel.getFlashcards.apply(ARSnova.app.questionModel, arguments);
 	},
 
+	flipFlashcards: function (flip) {
+		this.flip = flip;
+		this.flipAllFlashcards(flip);
+	},
+
+	flipAllFlashcards: function (flip) {
+		var tabPanel, carousel;
+
+		if (ARSnova.app.userRole === ARSnova.app.USER_ROLE_SPEAKER) {
+			tabPanel = ARSnova.app.mainTabPanel.tabPanel.speakerTabPanel;
+			carousel = tabPanel.showcaseQuestionPanel;
+		} else {
+			tabPanel = ARSnova.app.mainTabPanel.tabPanel.userTabPanel;
+			carousel = tabPanel.userQuestionsPanel;
+		}
+
+		if (tabPanel.getActiveItem() === carousel &&
+			carousel.getMode() === 'flashcard') {
+			carousel.getInnerItems().forEach(function (flashcard) {
+				if (flashcard.questionObj.questionType === 'flashcard') {
+					flashcard.questionContainer.isFlipped = flip;
+					if (flip) {
+						flashcard.questionContainer.addCls('flipped');
+						flashcard.flashcardToggleButton.setText(
+							Messages.HIDE_FLASHCARD_ANSWER);
+
+						if (flashcard.editButtons) {
+							flashcard.editButtons.flipFlashcardsButton
+								.element.down('.iconBtnImg').replaceCls(
+								'icon-flashcard-front', 'icon-flashcard-back');
+						}
+					} else {
+						flashcard.questionContainer.removeCls('flipped');
+						flashcard.flashcardToggleButton.setText(
+							Messages.SHOW_FLASHCARD_ANSWER);
+
+						if (flashcard.editButtons) {
+							flashcard.editButtons.flipFlashcardsButton
+								.element.down('.iconBtnImg').replaceCls(
+								'icon-flashcard-back', 'icon-flashcard-front');
+						}
+					}
+				}
+			});
+		}
+	},
+
 	adHoc: function () {
 		var sTP = ARSnova.app.mainTabPanel.tabPanel.speakerTabPanel;
 		sTP.sortQuestionsPanel.setController(this);
-- 
GitLab