commit
21e6b789f0
|
@ -19,7 +19,6 @@ import { CoreCourseComponentsModule } from '@features/course/components/componen
|
||||||
import { AddonModQuizConnectionErrorComponent } from './connection-error/connection-error';
|
import { AddonModQuizConnectionErrorComponent } from './connection-error/connection-error';
|
||||||
import { AddonModQuizIndexComponent } from './index/index';
|
import { AddonModQuizIndexComponent } from './index/index';
|
||||||
import { AddonModQuizNavigationModalComponent } from './navigation-modal/navigation-modal';
|
import { AddonModQuizNavigationModalComponent } from './navigation-modal/navigation-modal';
|
||||||
import { AddonModQuizPreflightModalComponent } from './preflight-modal/preflight-modal';
|
|
||||||
import { AddonModQuizAttemptInfoComponent } from './attempt-info/attempt-info';
|
import { AddonModQuizAttemptInfoComponent } from './attempt-info/attempt-info';
|
||||||
import { AddonModQuizAttemptStateComponent } from './attempt-state/attempt-state';
|
import { AddonModQuizAttemptStateComponent } from './attempt-state/attempt-state';
|
||||||
import { AddonModQuizQuestionCardComponent } from './question-card/question-card';
|
import { AddonModQuizQuestionCardComponent } from './question-card/question-card';
|
||||||
|
@ -31,7 +30,6 @@ import { AddonModQuizQuestionCardComponent } from './question-card/question-card
|
||||||
AddonModQuizIndexComponent,
|
AddonModQuizIndexComponent,
|
||||||
AddonModQuizConnectionErrorComponent,
|
AddonModQuizConnectionErrorComponent,
|
||||||
AddonModQuizNavigationModalComponent,
|
AddonModQuizNavigationModalComponent,
|
||||||
AddonModQuizPreflightModalComponent,
|
|
||||||
AddonModQuizQuestionCardComponent,
|
AddonModQuizQuestionCardComponent,
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
|
@ -44,7 +42,6 @@ import { AddonModQuizQuestionCardComponent } from './question-card/question-card
|
||||||
AddonModQuizIndexComponent,
|
AddonModQuizIndexComponent,
|
||||||
AddonModQuizConnectionErrorComponent,
|
AddonModQuizConnectionErrorComponent,
|
||||||
AddonModQuizNavigationModalComponent,
|
AddonModQuizNavigationModalComponent,
|
||||||
AddonModQuizPreflightModalComponent,
|
|
||||||
AddonModQuizQuestionCardComponent,
|
AddonModQuizQuestionCardComponent,
|
||||||
|
|
||||||
],
|
],
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
// (C) Copyright 2015 Moodle Pty Ltd.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
|
||||||
|
import { CoreSharedModule } from '@/core/shared.module';
|
||||||
|
import { CoreCourseComponentsModule } from '@features/course/components/components.module';
|
||||||
|
import { AddonModQuizPreflightModalComponent } from './preflight-modal.component';
|
||||||
|
|
||||||
|
export { AddonModQuizPreflightModalComponent };
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
declarations: [
|
||||||
|
AddonModQuizPreflightModalComponent,
|
||||||
|
],
|
||||||
|
imports: [
|
||||||
|
CoreSharedModule,
|
||||||
|
CoreCourseComponentsModule,
|
||||||
|
],
|
||||||
|
exports: [
|
||||||
|
AddonModQuizPreflightModalComponent,
|
||||||
|
|
||||||
|
],
|
||||||
|
})
|
||||||
|
export class AddonModQuizPreflightModalComponentModule {}
|
|
@ -22,7 +22,6 @@ import { CoreSites, CoreSitesReadingStrategy } from '@services/sites';
|
||||||
import { CoreDomUtils } from '@services/utils/dom';
|
import { CoreDomUtils } from '@services/utils/dom';
|
||||||
import { CoreUtils } from '@services/utils/utils';
|
import { CoreUtils } from '@services/utils/utils';
|
||||||
import { makeSingleton, Translate } from '@singletons';
|
import { makeSingleton, Translate } from '@singletons';
|
||||||
import { AddonModQuizPreflightModalComponent } from '../components/preflight-modal/preflight-modal';
|
|
||||||
import { AddonModQuizAccessRuleDelegate } from './access-rules-delegate';
|
import { AddonModQuizAccessRuleDelegate } from './access-rules-delegate';
|
||||||
import { AddonModQuizModuleHandlerService } from './handlers/module';
|
import { AddonModQuizModuleHandlerService } from './handlers/module';
|
||||||
import {
|
import {
|
||||||
|
@ -269,6 +268,9 @@ export class AddonModQuizHelperProvider {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const { AddonModQuizPreflightModalComponent } =
|
||||||
|
await import('@addons/mod/quiz/components/preflight-modal/preflight-modal.module');
|
||||||
|
|
||||||
// Create and show the modal.
|
// Create and show the modal.
|
||||||
const modalData = await CoreDomUtils.openModal<Record<string, string>>({
|
const modalData = await CoreDomUtils.openModal<Record<string, string>>({
|
||||||
component: AddonModQuizPreflightModalComponent,
|
component: AddonModQuizPreflightModalComponent,
|
||||||
|
|
|
@ -19,6 +19,7 @@ import { CoreEventObserver } from '@singletons/events';
|
||||||
import { CoreLogger } from '@singletons/logger';
|
import { CoreLogger } from '@singletons/logger';
|
||||||
import { AddonQtypeDdMarkerQuestionData } from '../component/ddmarker';
|
import { AddonQtypeDdMarkerQuestionData } from '../component/ddmarker';
|
||||||
import { AddonQtypeDdMarkerGraphicsApi } from './graphics_api';
|
import { AddonQtypeDdMarkerGraphicsApi } from './graphics_api';
|
||||||
|
import { CoreUtils } from '@services/utils/utils';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class to make a question of ddmarker type work.
|
* Class to make a question of ddmarker type work.
|
||||||
|
@ -692,17 +693,21 @@ export class AddonQtypeDdMarkerQuestion {
|
||||||
bgImg.src = this.imgSrc;
|
bgImg.src = this.imgSrc;
|
||||||
}
|
}
|
||||||
|
|
||||||
const imgLoaded = (): void => {
|
const imgLoaded = async (): Promise<void> => {
|
||||||
bgImg.removeEventListener('load', imgLoaded);
|
bgImg.removeEventListener('load', imgLoaded);
|
||||||
|
|
||||||
this.makeImageDropable();
|
this.makeImageDropable();
|
||||||
|
|
||||||
setTimeout(() => {
|
|
||||||
this.redrawDragsAndDrops();
|
|
||||||
});
|
|
||||||
|
|
||||||
this.afterImageLoadDone = true;
|
this.afterImageLoadDone = true;
|
||||||
this.question.loaded = true;
|
this.question.loaded = true;
|
||||||
|
|
||||||
|
// Wait for image to be visible, otherwise the calculated positions are wrong.
|
||||||
|
const visiblePromise = CoreDom.waitToBeVisible(bgImg);
|
||||||
|
|
||||||
|
await CoreUtils.ignoreErrors(CoreUtils.timeoutPromise(visiblePromise, 500));
|
||||||
|
visiblePromise.cancel(); // In case of timeout, cancel the promise.
|
||||||
|
|
||||||
|
this.redrawDragsAndDrops();
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!bgImg.src || (bgImg.complete && bgImg.naturalWidth)) {
|
if (!bgImg.src || (bgImg.complete && bgImg.naturalWidth)) {
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
<core-user-avatar *ngIf="(alwaysShow || isMainScreen) && siteInfo" [site]="siteInfo" class="core-bar-button-image clickable"
|
<core-user-avatar *ngIf="(alwaysShow || (isMainScreen && menuPage?.tabsPlacement === 'bottom')) && siteInfo" [site]="siteInfo"
|
||||||
[linkProfile]="false" (ariaButtonClick)="openUserMenu($event)" [userTour]="userTour"
|
class="core-bar-button-image clickable" [linkProfile]="false" (ariaButtonClick)="openUserMenu($event)" [userTour]="userTour"
|
||||||
[attr.aria-label]="'core.user.useraccount' | translate" />
|
[attr.aria-label]="'core.user.useraccount' | translate" />
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
:host-context(ion-tabs.placement-side ion-toolbar) {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
:host core-user-avatar {
|
:host core-user-avatar {
|
||||||
--userpicture-padding: 6px !important;
|
--userpicture-padding: 6px !important;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
import { Component, Input, OnInit } from '@angular/core';
|
import { Component, Input, OnInit, Optional } from '@angular/core';
|
||||||
import { CoreSiteInfo } from '@classes/sites/unauthenticated-site';
|
import { CoreSiteInfo } from '@classes/sites/unauthenticated-site';
|
||||||
import { CoreUserTourDirectiveOptions } from '@directives/user-tour';
|
import { CoreUserTourDirectiveOptions } from '@directives/user-tour';
|
||||||
import { CoreUserToursAlignment, CoreUserToursSide } from '@features/usertours/services/user-tours';
|
import { CoreUserToursAlignment, CoreUserToursSide } from '@features/usertours/services/user-tours';
|
||||||
|
@ -22,6 +22,7 @@ import { CoreSites } from '@services/sites';
|
||||||
import { CoreDomUtils } from '@services/utils/dom';
|
import { CoreDomUtils } from '@services/utils/dom';
|
||||||
import { CoreMainMenuUserMenuTourComponent } from '../user-menu-tour/user-menu-tour';
|
import { CoreMainMenuUserMenuTourComponent } from '../user-menu-tour/user-menu-tour';
|
||||||
import { CoreMainMenuUserMenuComponent } from '../user-menu/user-menu';
|
import { CoreMainMenuUserMenuComponent } from '../user-menu/user-menu';
|
||||||
|
import { CoreMainMenuPage } from '@features/mainmenu/pages/menu/menu';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Component to display an avatar on the header to open user menu.
|
* Component to display an avatar on the header to open user menu.
|
||||||
|
@ -45,10 +46,8 @@ export class CoreMainMenuUserButtonComponent implements OnInit {
|
||||||
side: CoreScreen.isMobile ? CoreUserToursSide.Start : CoreUserToursSide.End,
|
side: CoreScreen.isMobile ? CoreUserToursSide.Start : CoreUserToursSide.End,
|
||||||
};
|
};
|
||||||
|
|
||||||
constructor(protected routerOutlet: IonRouterOutlet) {
|
constructor(protected routerOutlet: IonRouterOutlet, @Optional() protected menuPage: CoreMainMenuPage | null) {
|
||||||
const currentSite = CoreSites.getRequiredCurrentSite();
|
this.siteInfo = CoreSites.getCurrentSite()?.getInfo();
|
||||||
|
|
||||||
this.siteInfo = currentSite.getInfo();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue