commit
2bec7b37f1
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -585,6 +585,7 @@ export class CoreRichTextEditorComponent implements AfterContentInit, OnDestroy
|
||||||
const currentIndex = this.toolbarSlides.getActiveIndex() || 0;
|
const currentIndex = this.toolbarSlides.getActiveIndex() || 0;
|
||||||
this.toolbarSlides.slideTo(currentIndex + this.numToolbarButtons);
|
this.toolbarSlides.slideTo(currentIndex + this.numToolbarButtons);
|
||||||
}
|
}
|
||||||
|
this.updateToolbarArrows();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -597,6 +598,7 @@ export class CoreRichTextEditorComponent implements AfterContentInit, OnDestroy
|
||||||
const currentIndex = this.toolbarSlides.getActiveIndex() || 0;
|
const currentIndex = this.toolbarSlides.getActiveIndex() || 0;
|
||||||
this.toolbarSlides.slideTo(currentIndex - this.numToolbarButtons);
|
this.toolbarSlides.slideTo(currentIndex - this.numToolbarButtons);
|
||||||
}
|
}
|
||||||
|
this.updateToolbarArrows();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -60,6 +60,7 @@ export class CoreSplitViewComponent implements OnInit, OnDestroy {
|
||||||
protected ignoreSplitChanged = false;
|
protected ignoreSplitChanged = false;
|
||||||
protected audioCaptureSubscription: Subscription;
|
protected audioCaptureSubscription: Subscription;
|
||||||
protected languageChangedSubscription: Subscription;
|
protected languageChangedSubscription: Subscription;
|
||||||
|
protected pushOngoing: boolean;
|
||||||
|
|
||||||
// Empty placeholder for the 'detail' page.
|
// Empty placeholder for the 'detail' page.
|
||||||
detailPage: any = null;
|
detailPage: any = null;
|
||||||
|
@ -185,20 +186,29 @@ export class CoreSplitViewComponent implements OnInit, OnDestroy {
|
||||||
* @param {boolean} [retrying] Whether it's retrying.
|
* @param {boolean} [retrying] Whether it's retrying.
|
||||||
*/
|
*/
|
||||||
push(page: any, params?: any, retrying?: boolean): void {
|
push(page: any, params?: any, retrying?: boolean): void {
|
||||||
if (typeof this.isEnabled == 'undefined' && !retrying) {
|
// Check there's no ongoing push.
|
||||||
// Hasn't calculated if it's enabled yet. Wait a bit and try again.
|
if (!this.pushOngoing) {
|
||||||
setTimeout(() => {
|
if (typeof this.isEnabled == 'undefined' && !retrying) {
|
||||||
this.push(page, params, true);
|
// Hasn't calculated if it's enabled yet. Wait a bit and try again.
|
||||||
}, 200);
|
setTimeout(() => {
|
||||||
} else {
|
this.push(page, params, true);
|
||||||
if (this.isEnabled) {
|
}, 200);
|
||||||
this.detailNav.setRoot(page, params);
|
|
||||||
} else {
|
} else {
|
||||||
this.loadDetailPage = {
|
this.pushOngoing = true;
|
||||||
component: page,
|
let promise;
|
||||||
data: params
|
|
||||||
};
|
if (this.isEnabled) {
|
||||||
this.masterNav.push(page, params);
|
promise = this.detailNav.setRoot(page, params);
|
||||||
|
} else {
|
||||||
|
this.loadDetailPage = {
|
||||||
|
component: page,
|
||||||
|
data: params
|
||||||
|
};
|
||||||
|
promise = this.masterNav.push(page, params);
|
||||||
|
}
|
||||||
|
promise.finally(() => {
|
||||||
|
this.pushOngoing = false;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue