MOBILE-3068 quiz: Close modals when time is up
This commit is contained in:
		
							parent
							
								
									0a0d639ebf
								
							
						
					
					
						commit
						265f15f380
					
				| @ -25,6 +25,7 @@ import { CoreDomUtilsProvider } from '@providers/utils/dom'; | |||||||
| import { CoreTimeUtilsProvider } from '@providers/utils/time'; | import { CoreTimeUtilsProvider } from '@providers/utils/time'; | ||||||
| import { CoreUrlUtilsProvider } from '@providers/utils/url'; | import { CoreUrlUtilsProvider } from '@providers/utils/url'; | ||||||
| import { CoreUtilsProvider } from '@providers/utils/utils'; | import { CoreUtilsProvider } from '@providers/utils/utils'; | ||||||
|  | import { MoodleMobileApp } from '../../../../../app/app.component'; | ||||||
| import { AddonModLessonProvider } from '../../providers/lesson'; | import { AddonModLessonProvider } from '../../providers/lesson'; | ||||||
| import { AddonModLessonOfflineProvider } from '../../providers/lesson-offline'; | import { AddonModLessonOfflineProvider } from '../../providers/lesson-offline'; | ||||||
| import { AddonModLessonSyncProvider } from '../../providers/lesson-sync'; | import { AddonModLessonSyncProvider } from '../../providers/lesson-sync'; | ||||||
| @ -85,7 +86,8 @@ export class AddonModLessonPlayerPage implements OnInit, OnDestroy { | |||||||
|             protected lessonHelper: AddonModLessonHelperProvider, protected lessonSync: AddonModLessonSyncProvider, |             protected lessonHelper: AddonModLessonHelperProvider, protected lessonSync: AddonModLessonSyncProvider, | ||||||
|             protected lessonOfflineProvider: AddonModLessonOfflineProvider, protected cdr: ChangeDetectorRef, |             protected lessonOfflineProvider: AddonModLessonOfflineProvider, protected cdr: ChangeDetectorRef, | ||||||
|             modalCtrl: ModalController, protected navCtrl: NavController, protected appProvider: CoreAppProvider, |             modalCtrl: ModalController, protected navCtrl: NavController, protected appProvider: CoreAppProvider, | ||||||
|             protected utils: CoreUtilsProvider, protected urlUtils: CoreUrlUtilsProvider, protected fb: FormBuilder) { |             protected utils: CoreUtilsProvider, protected urlUtils: CoreUrlUtilsProvider, protected fb: FormBuilder, | ||||||
|  |             protected mmApp: MoodleMobileApp) { | ||||||
| 
 | 
 | ||||||
|         this.lessonId = navParams.get('lessonId'); |         this.lessonId = navParams.get('lessonId'); | ||||||
|         this.courseId = navParams.get('courseId'); |         this.courseId = navParams.get('courseId'); | ||||||
| @ -145,6 +147,13 @@ export class AddonModLessonPlayerPage implements OnInit, OnDestroy { | |||||||
|         return Promise.resolve(); |         return Promise.resolve(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      * Runs when the page is about to leave and no longer be the active page. | ||||||
|  |      */ | ||||||
|  |     ionViewWillLeave(): void { | ||||||
|  |         this.mmApp.closeModal(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      * A button was clicked. |      * A button was clicked. | ||||||
|      * |      * | ||||||
|  | |||||||
| @ -23,6 +23,7 @@ import { CoreDomUtilsProvider } from '@providers/utils/dom'; | |||||||
| import { CoreTimeUtilsProvider } from '@providers/utils/time'; | import { CoreTimeUtilsProvider } from '@providers/utils/time'; | ||||||
| import { CoreQuestionHelperProvider } from '@core/question/providers/helper'; | import { CoreQuestionHelperProvider } from '@core/question/providers/helper'; | ||||||
| import { CoreQuestionComponent } from '@core/question/components/question/question'; | import { CoreQuestionComponent } from '@core/question/components/question/question'; | ||||||
|  | import { MoodleMobileApp } from '../../../../../app/app.component'; | ||||||
| import { AddonModQuizProvider } from '../../providers/quiz'; | import { AddonModQuizProvider } from '../../providers/quiz'; | ||||||
| import { AddonModQuizSyncProvider } from '../../providers/quiz-sync'; | import { AddonModQuizSyncProvider } from '../../providers/quiz-sync'; | ||||||
| import { AddonModQuizHelperProvider } from '../../providers/helper'; | import { AddonModQuizHelperProvider } from '../../providers/helper'; | ||||||
| @ -80,7 +81,7 @@ export class AddonModQuizPlayerPage implements OnInit, OnDestroy { | |||||||
|             protected timeUtils: CoreTimeUtilsProvider, protected quizProvider: AddonModQuizProvider, |             protected timeUtils: CoreTimeUtilsProvider, protected quizProvider: AddonModQuizProvider, | ||||||
|             protected quizHelper: AddonModQuizHelperProvider, protected quizSync: AddonModQuizSyncProvider, |             protected quizHelper: AddonModQuizHelperProvider, protected quizSync: AddonModQuizSyncProvider, | ||||||
|             protected questionHelper: CoreQuestionHelperProvider, protected cdr: ChangeDetectorRef, |             protected questionHelper: CoreQuestionHelperProvider, protected cdr: ChangeDetectorRef, | ||||||
|             modalCtrl: ModalController, protected navCtrl: NavController) { |             modalCtrl: ModalController, protected navCtrl: NavController,  protected mmApp: MoodleMobileApp) { | ||||||
| 
 | 
 | ||||||
|         this.quizId = navParams.get('quizId'); |         this.quizId = navParams.get('quizId'); | ||||||
|         this.courseId = navParams.get('courseId'); |         this.courseId = navParams.get('courseId'); | ||||||
| @ -157,6 +158,13 @@ export class AddonModQuizPlayerPage implements OnInit, OnDestroy { | |||||||
|         return Promise.resolve(); |         return Promise.resolve(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      * Runs when the page is about to leave and no longer be the active page. | ||||||
|  |      */ | ||||||
|  |     ionViewWillLeave(): void { | ||||||
|  |         this.mmApp.closeModal(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      * Abort the quiz. |      * Abort the quiz. | ||||||
|      */ |      */ | ||||||
|  | |||||||
| @ -38,10 +38,10 @@ export class MoodleMobileApp implements OnInit { | |||||||
|     protected lastUrls = {}; |     protected lastUrls = {}; | ||||||
|     protected lastInAppUrl: string; |     protected lastInAppUrl: string; | ||||||
| 
 | 
 | ||||||
|     constructor(private platform: Platform, logger: CoreLoggerProvider, keyboard: Keyboard, |     constructor(private platform: Platform, logger: CoreLoggerProvider, keyboard: Keyboard, private app: IonicApp, | ||||||
|             private eventsProvider: CoreEventsProvider, private loginHelper: CoreLoginHelperProvider, private zone: NgZone, |             private eventsProvider: CoreEventsProvider, private loginHelper: CoreLoginHelperProvider, private zone: NgZone, | ||||||
|             private appProvider: CoreAppProvider, private langProvider: CoreLangProvider, private sitesProvider: CoreSitesProvider, |             private appProvider: CoreAppProvider, private langProvider: CoreLangProvider, private sitesProvider: CoreSitesProvider, | ||||||
|             private screenOrientation: ScreenOrientation, app: IonicApp, private urlSchemesProvider: CoreCustomURLSchemesProvider, |             private screenOrientation: ScreenOrientation, private urlSchemesProvider: CoreCustomURLSchemesProvider, | ||||||
|             private utils: CoreUtilsProvider, private urlUtils: CoreUrlUtilsProvider) { |             private utils: CoreUtilsProvider, private urlUtils: CoreUrlUtilsProvider) { | ||||||
|         this.logger = logger.getInstance('AppComponent'); |         this.logger = logger.getInstance('AppComponent'); | ||||||
| 
 | 
 | ||||||
| @ -68,15 +68,7 @@ export class MoodleMobileApp implements OnInit { | |||||||
| 
 | 
 | ||||||
|             // Register back button action to allow closing modals before anything else.
 |             // Register back button action to allow closing modals before anything else.
 | ||||||
|             this.appProvider.registerBackButtonAction(() => { |             this.appProvider.registerBackButtonAction(() => { | ||||||
|                 // Following function is hidden in Ionic Code, however there's no solution for that.
 |                 return this.closeModal(); | ||||||
|                 const portal = app._getActivePortal(); |  | ||||||
|                 if (portal) { |  | ||||||
|                     portal.pop(); |  | ||||||
| 
 |  | ||||||
|                     return true; |  | ||||||
|                 } |  | ||||||
| 
 |  | ||||||
|                 return false; |  | ||||||
|             }, 2000); |             }, 2000); | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
| @ -302,4 +294,21 @@ export class MoodleMobileApp implements OnInit { | |||||||
|             document.body.classList.remove(tempClass); |             document.body.classList.remove(tempClass); | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Close one modal if any. | ||||||
|  |      * | ||||||
|  |      * @return {boolean} True if one modal was present. | ||||||
|  |      */ | ||||||
|  |     closeModal(): boolean { | ||||||
|  |         // Following function is hidden in Ionic Code, however there's no solution for that.
 | ||||||
|  |         const portal = this.app._getActivePortal(); | ||||||
|  |         if (portal) { | ||||||
|  |             portal.pop(); | ||||||
|  | 
 | ||||||
|  |             return true; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user