From c0cdb1320db227bc37a033b927797f5f874d15fb Mon Sep 17 00:00:00 2001 From: Dani Palou Date: Tue, 1 Jun 2021 10:50:49 +0200 Subject: [PATCH 1/5] MOBILE-3320 home: Fix wrong tab selected when change main tab --- src/core/features/courses/courses.module.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/core/features/courses/courses.module.ts b/src/core/features/courses/courses.module.ts index 611ca2132..6ca5284b4 100644 --- a/src/core/features/courses/courses.module.ts +++ b/src/core/features/courses/courses.module.ts @@ -38,11 +38,6 @@ export const CORE_COURSES_SERVICES: Type[] = [ ]; const mainMenuHomeChildrenRoutes: Routes = [ - { - path: '', - pathMatch: 'full', - redirectTo: CoreDashboardHomeHandlerService.PAGE_NAME, - }, { path: CoreDashboardHomeHandlerService.PAGE_NAME, loadChildren: () => import('./pages/dashboard/dashboard.module').then(m => m.CoreCoursesDashboardPageModule), From 450a392b421145409765f75046f3cf071fc65919 Mon Sep 17 00:00:00 2001 From: Dani Palou Date: Tue, 1 Jun 2021 11:32:02 +0200 Subject: [PATCH 2/5] MOBILE-3320 siteplugins: Remove unneeded commented code --- src/core/features/siteplugins/services/siteplugins.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/core/features/siteplugins/services/siteplugins.ts b/src/core/features/siteplugins/services/siteplugins.ts index f4903cb16..bc7a572b5 100644 --- a/src/core/features/siteplugins/services/siteplugins.ts +++ b/src/core/features/siteplugins/services/siteplugins.ts @@ -77,9 +77,6 @@ export class CoreSitePluginsProvider { const lang = await CoreLang.getCurrentLanguage(); - // Clone the object so the original one isn't modified. - // const argsToSend = CoreUtils.clone(args); - const defaultArgs: CoreSitePluginsDefaultArgs = { userid: args.userid ?? site?.getUserId(), appid: CoreConstants.CONFIG.app_id, From a57297b09a180877d7ea1c49823e6673a16347db Mon Sep 17 00:00:00 2001 From: Dani Palou Date: Tue, 1 Jun 2021 14:11:02 +0200 Subject: [PATCH 3/5] MOBILE-3320 format-text: Temporary fix to improve height calculation --- src/core/directives/format-text.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/directives/format-text.ts b/src/core/directives/format-text.ts index 5709b6b16..f67985298 100644 --- a/src/core/directives/format-text.ts +++ b/src/core/directives/format-text.ts @@ -377,6 +377,7 @@ export class CoreFormatTextDirective implements OnChanges { // Calculate the height now. this.calculateHeight(); + setTimeout(() => this.calculateHeight(), 200); // Try again, sometimes the first calculation is wrong. // Add magnifying glasses to images. this.addMagnifyingGlasses(); @@ -388,6 +389,7 @@ export class CoreFormatTextDirective implements OnChanges { if (data.loaded && CoreDomUtils.closest(this.element.parentElement, '#' + data.uniqueId)) { // The format-text is inside the loading, re-calculate the height. this.calculateHeight(); + setTimeout(() => this.calculateHeight(), 200); } }); } From 5a528381b29b5c5290cf1b14ce8ec111f394e03b Mon Sep 17 00:00:00 2001 From: Dani Palou Date: Wed, 2 Jun 2021 08:21:18 +0200 Subject: [PATCH 4/5] MOBILE-3320 calendar: Fix calendar list page navigation --- src/addons/calendar/calendar-lazy.module.ts | 2 +- src/addons/calendar/pages/day/day.page.ts | 7 +- .../pages/edit-event/edit-event.page.ts | 2 +- src/addons/calendar/pages/event/event.page.ts | 2 +- src/addons/calendar/pages/index/index.page.ts | 6 +- src/addons/calendar/pages/list/list.html | 140 +++++++++--------- src/addons/calendar/pages/list/list.page.ts | 77 +--------- .../mod/glossary/components/index/index.ts | 2 +- 8 files changed, 85 insertions(+), 153 deletions(-) diff --git a/src/addons/calendar/calendar-lazy.module.ts b/src/addons/calendar/calendar-lazy.module.ts index 941f0449d..1a925fbef 100644 --- a/src/addons/calendar/calendar-lazy.module.ts +++ b/src/addons/calendar/calendar-lazy.module.ts @@ -18,7 +18,7 @@ import { Route, RouterModule, ROUTES, Routes } from '@angular/router'; import { buildTabMainRoutes } from '@features/mainmenu/mainmenu-tab-routing.module'; export const AddonCalendarEditRoute: Route = { - path: 'edit', + path: 'edit/:eventId', loadChildren: () => import('@/addons/calendar/pages/edit-event/edit-event.module').then(m => m.AddonCalendarEditEventPageModule), }; diff --git a/src/addons/calendar/pages/day/day.page.ts b/src/addons/calendar/pages/day/day.page.ts index 32cbbca8a..2d26cf281 100644 --- a/src/addons/calendar/pages/day/day.page.ts +++ b/src/addons/calendar/pages/day/day.page.ts @@ -553,10 +553,9 @@ export class AddonCalendarDayPage implements OnInit, OnDestroy { openEdit(eventId?: number): void { const params: Params = {}; - if (eventId) { - params.eventId = eventId; - } else { + if (!eventId) { // It's a new event, set the time. + eventId = 0; params.timestamp = moment().year(this.year).month(this.month - 1).date(this.day).unix() * 1000; } @@ -564,7 +563,7 @@ export class AddonCalendarDayPage implements OnInit, OnDestroy { params.courseId = this.filter.courseId; } - CoreNavigator.navigateToSitePath('/calendar/edit', { params }); + CoreNavigator.navigateToSitePath(`/calendar/edit/${eventId}`, { params }); } /** diff --git a/src/addons/calendar/pages/edit-event/edit-event.page.ts b/src/addons/calendar/pages/edit-event/edit-event.page.ts index 3b9fb9db5..616c65e37 100644 --- a/src/addons/calendar/pages/edit-event/edit-event.page.ts +++ b/src/addons/calendar/pages/edit-event/edit-event.page.ts @@ -132,7 +132,7 @@ export class AddonCalendarEditEventPage implements OnInit, OnDestroy, CanLeave { * Component being initialized. */ ngOnInit(): void { - this.eventId = CoreNavigator.getRouteNumberParam('eventId'); + this.eventId = CoreNavigator.getRouteNumberParam('eventId') || undefined; this.courseId = CoreNavigator.getRouteNumberParam('courseId') || 0; this.title = this.eventId ? 'addon.calendar.editevent' : 'addon.calendar.newevent'; diff --git a/src/addons/calendar/pages/event/event.page.ts b/src/addons/calendar/pages/event/event.page.ts index 789668de7..61b53c219 100644 --- a/src/addons/calendar/pages/event/event.page.ts +++ b/src/addons/calendar/pages/event/event.page.ts @@ -424,7 +424,7 @@ export class AddonCalendarEventPage implements OnInit, OnDestroy { * Open the page to edit the event. */ openEdit(): void { - CoreNavigator.navigateToSitePath('/calendar/edit', { params: { eventId: this.eventId } }); + CoreNavigator.navigateToSitePath(`/calendar/edit/${this.eventId}`); } /** diff --git a/src/addons/calendar/pages/index/index.page.ts b/src/addons/calendar/pages/index/index.page.ts index a3329f19a..7e4f1eeb2 100644 --- a/src/addons/calendar/pages/index/index.page.ts +++ b/src/addons/calendar/pages/index/index.page.ts @@ -351,15 +351,13 @@ export class AddonCalendarIndexPage implements OnInit, OnDestroy { */ openEdit(eventId?: number): void { const params: Params = {}; + eventId = eventId || 0; - if (eventId) { - params.eventId = eventId; - } if (this.filter.courseId) { params.courseId = this.filter.courseId; } - CoreNavigator.navigateToSitePath('/calendar/edit', { params }); + CoreNavigator.navigateToSitePath(`/calendar/edit/${eventId}`, { params }); } /** diff --git a/src/addons/calendar/pages/list/list.html b/src/addons/calendar/pages/list/list.html index b90389929..e26cfe323 100644 --- a/src/addons/calendar/pages/list/list.html +++ b/src/addons/calendar/pages/list/list.html @@ -20,78 +20,76 @@ - - - - - - - - - - {{ 'core.hasdatatosync' | translate:{$a: 'addon.calendar.calendar' | translate} }} + + + + + + + + + {{ 'core.hasdatatosync' | translate:{$a: 'addon.calendar.calendar' | translate} }} + + + + + + + + + +

{{ event.timestart * 1000 | coreFormatDate: "strftimedayshort" }}

+
+ + + + +

+ + + {{ 'addon.calendar.type' + event.formattedType | translate }} + {{ event.iconTitle }} + + + +

+

+ {{ event.timestart * 1000 | coreFormatDate: "strftimetime" }} + + - {{ (event.timestart + event.timeduration) * 1000 | coreFormatDate: "strftimetime" }} + + + - {{ (event.timestart + event.timeduration) * 1000 | coreFormatDate: "strftimedatetimeshort" }} + +

+
+ + + {{ 'core.notsent' | translate }} + + + + {{ 'core.deletedoffline' | translate }} +
-
+ + - - + + +
- - - -

{{ event.timestart * 1000 | coreFormatDate: "strftimedayshort" }}

-
- - - - -

- - - {{ 'addon.calendar.type' + event.formattedType | translate }} - {{ event.iconTitle }} - - - -

-

- {{ event.timestart * 1000 | coreFormatDate: "strftimetime" }} - - - {{ (event.timestart + event.timeduration) * 1000 | coreFormatDate: "strftimetime" }} - - - - {{ (event.timestart + event.timeduration) * 1000 | coreFormatDate: "strftimedatetimeshort" }} - -

-
- - - {{ 'core.notsent' | translate }} - - - - {{ 'core.deletedoffline' | translate }} - -
-
-
- - - - - - - - - - - -
+ + + + + +
diff --git a/src/addons/calendar/pages/list/list.page.ts b/src/addons/calendar/pages/list/list.page.ts index cb1b76c32..33d00b3c8 100644 --- a/src/addons/calendar/pages/list/list.page.ts +++ b/src/addons/calendar/pages/list/list.page.ts @@ -29,7 +29,6 @@ import { CoreSites } from '@services/sites'; import { CoreLocalNotifications } from '@services/local-notifications'; import { CoreEventObserver, CoreEvents } from '@singletons/events'; import { CoreApp } from '@services/app'; -import { CoreSplitViewComponent } from '@components/split-view/split-view'; import moment from 'moment'; import { CoreConstants } from '@/core/constants'; import { AddonCalendarFilterPopoverComponent } from '../../components/filter/filter'; @@ -51,7 +50,6 @@ import { CoreNavigator } from '@services/navigator'; export class AddonCalendarListPage implements OnInit, OnDestroy { @ViewChild(IonContent) content?: IonContent; - @ViewChild(CoreSplitViewComponent) splitviewCtrl?: CoreSplitViewComponent; protected initialTime = 0; protected daysLoaded = 0; @@ -117,26 +115,12 @@ export class AddonCalendarListPage implements OnInit, OnDestroy { this.newEventObserver = CoreEvents.on(AddonCalendarProvider.NEW_EVENT_EVENT, (data) => { if (data && data.eventId) { this.eventsLoaded = false; - this.refreshEvents(true, false).finally(() => { - - // In tablet mode try to open the event (only if it's an online event). - if (this.splitviewCtrl?.outletActivated && data.eventId > 0) { - this.gotoEvent(data.eventId); - } else if (this.splitviewCtrl?.outletActivated) { - // Discussion added, clear details page. - this.emptySplitView(); - } - }); + this.refreshEvents(true, false); } }, this.currentSiteId); // Listen for new event discarded event. When it does, reload the data. this.discardedObserver = CoreEvents.on(AddonCalendarProvider.NEW_EVENT_DISCARDED_EVENT, () => { - if (this.splitviewCtrl?.outletActivated) { - // Discussion added, clear details page. - this.emptySplitView(); - } - this.eventsLoaded = false; this.refreshEvents(true, false); }, this.currentSiteId); @@ -150,15 +134,9 @@ export class AddonCalendarListPage implements OnInit, OnDestroy { }, this.currentSiteId); // Refresh data if calendar events are synchronized automatically. - this.syncObserver = CoreEvents.on(AddonCalendarSyncProvider.AUTO_SYNCED, (data) => { + this.syncObserver = CoreEvents.on(AddonCalendarSyncProvider.AUTO_SYNCED, () => { this.eventsLoaded = false; this.refreshEvents(); - - if (this.splitviewCtrl?.outletActivated && - this.eventId && data && data.deleted && data.deleted.indexOf(this.eventId) != -1) { - // Current selected event was deleted. Clear details. - this.emptySplitView(); - } }, this.currentSiteId); // Refresh data if calendar events are synchronized manually but not by this page. @@ -167,12 +145,6 @@ export class AddonCalendarListPage implements OnInit, OnDestroy { this.eventsLoaded = false; this.refreshEvents(); } - - if (this.splitviewCtrl?.outletActivated && - this.eventId && data && data.deleted && data.deleted.indexOf(this.eventId) != -1) { - // Current selected event was deleted. Clear details. - this.emptySplitView(); - } }, this.currentSiteId); // Update the list when an event is deleted. @@ -185,11 +157,7 @@ export class AddonCalendarListPage implements OnInit, OnDestroy { this.deletedEvents.push(data.eventId); this.hasOffline = true; } else { - // Event deleted, clear the details if needed and refresh the view. - if (this.splitviewCtrl?.outletActivated) { - this.emptySplitView(); - } - + // Event deleted, refresh the view. this.eventsLoaded = false; this.refreshEvents(); } @@ -248,27 +216,6 @@ export class AddonCalendarListPage implements OnInit, OnDestroy { this.syncIcon = CoreConstants.ICON_LOADING; await this.fetchData(false, true, false); - - if (!this.eventId && this.splitviewCtrl?.outletActivated && this.events.length > 0) { - // Take first online event and load it. If no online event, load the first offline. - if (this.onlineEvents[0]) { - this.gotoEvent(this.onlineEvents[0].id); - } else { - this.gotoEvent(this.offlineEvents[0].id); - } - } - } - - /** - * Convenience function to clear detail view of the split view. - */ - protected emptySplitView(): void { - // Empty details. - const splitViewLoaded = CoreNavigator.isCurrentPathInTablet('**/calendar/list/event') || - CoreNavigator.isCurrentPathInTablet('**/calendar/list/edit'); - if (splitViewLoaded) { - CoreNavigator.navigate('../'); - } } /** @@ -633,20 +580,15 @@ export class AddonCalendarListPage implements OnInit, OnDestroy { */ openEdit(eventId?: number): void { this.eventId = undefined; + eventId = eventId || 0; const params: Params = {}; - if (eventId) { - params.eventId = eventId; - } if (this.filter.courseId) { params.courseId = this.filter.courseId; } - const splitViewLoaded = CoreNavigator.isCurrentPathInTablet('**/calendar/list/event') || - CoreNavigator.isCurrentPathInTablet('**/calendar/list/edit'); - const path = (splitViewLoaded ? '../' : '') + 'edit'; - CoreNavigator.navigate(path, { params }); + CoreNavigator.navigateToSitePath(`calendar/edit/${eventId}`, { params }); } /** @@ -664,16 +606,11 @@ export class AddonCalendarListPage implements OnInit, OnDestroy { gotoEvent(eventId: number): void { this.eventId = eventId; - if (eventId < 0) { + if (eventId <= 0) { // It's an offline event, go to the edit page. this.openEdit(eventId); } else { - const splitViewLoaded = CoreNavigator.isCurrentPathInTablet('**/calendar/list/event') || - CoreNavigator.isCurrentPathInTablet('**/calendar/list/edit'); - const path = (splitViewLoaded ? '../' : '') + 'event'; - CoreNavigator.navigate(path, { params: { - id: eventId, - } }); + CoreNavigator.navigateToSitePath(`/calendar/event/${eventId}`); } } diff --git a/src/addons/mod/glossary/components/index/index.ts b/src/addons/mod/glossary/components/index/index.ts index 3059ca6b8..03be8f63b 100644 --- a/src/addons/mod/glossary/components/index/index.ts +++ b/src/addons/mod/glossary/components/index/index.ts @@ -512,7 +512,7 @@ type NewEntryForm = { newEntry: true }; /** * Type of items that can be held by the entries manager. */ - type EntryItem = AddonModGlossaryEntry | AddonModGlossaryOfflineEntry | NewEntryForm; +type EntryItem = AddonModGlossaryEntry | AddonModGlossaryOfflineEntry | NewEntryForm; /** * Entries manager. From cab43925a5ab59ffcafdbe8e0de22302cbadb46b Mon Sep 17 00:00:00 2001 From: Dani Palou Date: Wed, 2 Jun 2021 09:48:56 +0200 Subject: [PATCH 5/5] MOBILE-3320 scorm: Fix SCORM disappearing after changing tab --- src/addons/mod/scorm/pages/player/player.ts | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/addons/mod/scorm/pages/player/player.ts b/src/addons/mod/scorm/pages/player/player.ts index 382e06674..982808f42 100644 --- a/src/addons/mod/scorm/pages/player/player.ts +++ b/src/addons/mod/scorm/pages/player/player.ts @@ -362,16 +362,6 @@ export class AddonModScormPlayerPage implements OnInit, OnDestroy { } } - /** - * Page will leave. - */ - ionViewWillLeave(): void { - CoreEvents.trigger(CoreEvents.ACTIVITY_DATA_SENT, { module: 'scorm' }); - - // Empty src when leaving the state so unload event is triggered in the iframe. - this.src = ''; - } - /** * Load a SCO. * @@ -547,6 +537,10 @@ export class AddonModScormPlayerPage implements OnInit, OnDestroy { * Component being destroyed. */ ngOnDestroy(): void { + // Empty src when leaving the state so unload event is triggered in the iframe. + this.src = ''; + CoreEvents.trigger(CoreEvents.ACTIVITY_DATA_SENT, { module: 'scorm' }); + // Stop listening for events. this.tocObserver?.off(); this.launchNextObserver?.off();