{{ 'core.name' | translate}}
-{{ badge.name }}
+{{ badgeToShow.name }}
{{ 'addon.badges.issuername' | translate}}
-
{{ 'core.course' | translate}}
-
{{ 'core.description' | translate}}
-{{ badge.description }}
+{{ badgeToShow.description }}
{{ alignment.targetName }}
diff --git a/src/addons/badges/pages/badge-class/badge-class.ts b/src/addons/badges/pages/badge-class/badge-class.ts index 1af8131e333..e3023f439c4 100644 --- a/src/addons/badges/pages/badge-class/badge-class.ts +++ b/src/addons/badges/pages/badge-class/badge-class.ts @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -import { Component, OnInit, inject } from '@angular/core'; +import { Component, OnInit, inject, signal } from '@angular/core'; import { CorePromiseUtils } from '@singletons/promise-utils'; import { CoreNavigator } from '@services/navigator'; import { ActivatedRoute } from '@angular/router'; @@ -38,9 +38,8 @@ export default class AddonBadgesBadgeClassPage implements OnInit { protected badgeId = 0; protected logView: (badge: AddonBadgesBadgeClass) => void; - badge?: AddonBadgesBadgeClass; - badgeLoaded = false; - currentTime = 0; + readonly badge = signal- {{ 'addon.badges.awardedto' | translate: {$a: badge.recipientfullname } }} + {{ 'addon.badges.awardedto' | translate: {$a: badgeToShow.recipientfullname } }}
- {{ 'addon.badges.issuedon' | translate: {$a: (badge.dateissued * 1000 | coreFormatDate)} }} + {{ 'addon.badges.issuedon' | translate: + {$a: (badgeToShow.dateissued * 1000 | coreFormatDate)} }}
} - @if (badge.dateexpire) { - @if (currentTime < badge.dateexpire) { + @if (badgeToShow.dateexpire) { + @if (currentTime() < badgeToShow.dateexpire) {- {{ 'addon.badges.expiresin' | translate: {$a: (badge.dateexpire * 1000 | coreFormatDate)} }} + {{ 'addon.badges.expiresin' | translate: + {$a: (badgeToShow.dateexpire * 1000 | coreFormatDate)} }}
} @else {- {{ 'addon.badges.expiredin' | translate: {$a: (badge.dateexpire * 1000 | coreFormatDate)} }} + {{ 'addon.badges.expiredin' | translate: + {$a: (badgeToShow.dateexpire * 1000 | coreFormatDate)} }}
} } @@ -74,21 +78,21 @@+
-
{{ badge.description }}
+{{ badgeToShow.description }}
{{ 'addon.badges.version' | translate}}
-{{ badge.version }}
+{{ badgeToShow.version }}
{{ 'addon.badges.language' | translate}}
-{{ badge.language }}
+{{ badgeToShow.language }}
{{ 'addon.badges.imagecaption' | translate}}
-{{ badge.imagecaption }}
+{{ badgeToShow.imagecaption }}
{{ 'addon.badges.issuername' | translate}}
-{{ badge.endorsement.issuername }}
+{{ badgeToShow.endorsement.issuername }}
{{ 'addon.badges.issueremail' | translate}}
- - {{ badge.endorsement.issueremail }} + + {{ badgeToShow.endorsement.issueremail }}
{{ 'addon.badges.issuerurl' | translate}}
-{{ 'addon.badges.dateawarded' | translate}}
-{{ badge.endorsement.dateissued * 1000 | coreFormatDate }}
+{{ badgeToShow.endorsement.dateissued * 1000 | coreFormatDate }}
{{ 'addon.badges.claimid' | translate}}
-{{ 'addon.badges.claimcomment' | translate}}
-{{ badge.endorsement.claimcomment }}
+{{ badgeToShow.endorsement.claimcomment }}
{{ relatedBadge.name }}
@@ -231,14 +235,14 @@{{ alignment.targetName }}
diff --git a/src/addons/badges/pages/issued-badge/issued-badge.ts b/src/addons/badges/pages/issued-badge/issued-badge.ts index 841238b5469..2d4d5f39b77 100644 --- a/src/addons/badges/pages/issued-badge/issued-badge.ts +++ b/src/addons/badges/pages/issued-badge/issued-badge.ts @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -import { Component, OnDestroy, OnInit, inject } from '@angular/core'; +import { Component, OnDestroy, OnInit, computed, inject, signal } from '@angular/core'; import { CoreSites } from '@services/sites'; import { CoreUser } from '@features/user/services/user'; import { AddonBadges, AddonBadgesUserBadge } from '../../services/badges'; @@ -41,23 +41,31 @@ import { CoreAlerts } from '@services/overlays/alerts'; }) export default class AddonBadgesIssuedBadgePage implements OnInit, OnDestroy { + readonly courseId = CoreNavigator.getRouteNumberParam('courseId') || 0; // Use 0 for site badges. + protected readonly badgeHash = CoreNavigator.getRouteParam('badgeHash') || ''; + protected readonly userId = CoreNavigator.getRouteNumberParam('userId') || CoreSites.getRequiredCurrentSite().getUserId(); + protected route = inject(ActivatedRoute); - protected badgeHash = ''; - protected userId!: number; protected logView: (badge: AddonBadgesUserBadge) => void; - courseId = 0; - badge?: AddonBadgesUserBadge; - issuerWithMail = ''; - badges?: CoreSwipeNavigationItemsManager; - badgeLoaded = false; - currentTime = 0; + readonly badge = signal{{ badge.name }}
-{{ badge.dateissued * 1000 | coreFormatDate :'strftimedatetimeshort' }}
-{{ badge.name }}
+{{ badge.dateissued * 1000 | coreFormatDate :'strftimedatetimeshort' }}
+{{user.fullname}}
+{{userDisplay.fullname}}
{{ 'addon.coursecompletion.status' | translate }}
-{{ statusText! | translate }}
+{{ statusText() | translate }}
{{ 'addon.coursecompletion.required' | translate }}
- @if (completion.aggregation === 1) { + @if (completionDisplay.aggregation === aggregationType.ALL) {{{ 'addon.coursecompletion.criteriarequiredall' | translate }}
- } - @if (completion.aggregation === 2) { + } @else if (completionDisplay.aggregation === aggregationType.ANY) {{{ 'addon.coursecompletion.criteriarequiredany' | translate }}
}{{ user.fullname }}
- @if (currentUserId !== user.id && isOnline) { + @if (currentUserId !== user.id && isOnline()) {{{ 'addon.mod_chat.mustbeonlinetosendmessages' | translate }}
diff --git a/src/addons/mod/chat/pages/chat/chat.ts b/src/addons/mod/chat/pages/chat/chat.ts index edf196fa841..424ac83befc 100644 --- a/src/addons/mod/chat/pages/chat/chat.ts +++ b/src/addons/mod/chat/pages/chat/chat.ts @@ -20,9 +20,8 @@ import { CoreNetwork } from '@services/network'; import { CoreNavigator } from '@services/navigator'; import { CoreSites } from '@services/sites'; import { CorePromiseUtils } from '@singletons/promise-utils'; -import { NgZone, Translate } from '@singletons'; +import { Translate } from '@singletons'; import { CoreEvents } from '@singletons/events'; -import { Subscription } from 'rxjs'; import { AddonModChatUsersModalResult } from '../../components/users-modal/users-modal'; import { AddonModChat, AddonModChatUser } from '../../services/chat'; import { AddonModChatFormattedMessage, AddonModChatHelper } from '../../services/chat-helper'; @@ -58,7 +57,7 @@ export default class AddonModChatChatPage implements OnInit, OnDestroy, CanLeave messages: AddonModChatFormattedMessage[] = []; newMessage?: string; polling?: number; - isOnline: boolean; + readonly isOnline = CoreNetwork.onlineSignal(); currentUserId: number; sending = false; courseId!: number; @@ -68,7 +67,6 @@ export default class AddonModChatChatPage implements OnInit, OnDestroy, CanLeave protected sessionId?: string; protected lastTime = 0; protected oldContentHeight = 0; - protected onlineSubscription: Subscription; protected viewDestroyed = false; protected pollingRunning = false; protected users: AddonModChatUser[] = []; @@ -76,13 +74,6 @@ export default class AddonModChatChatPage implements OnInit, OnDestroy, CanLeave constructor() { this.currentUserId = CoreSites.getCurrentSiteUserId(); - this.isOnline = CoreNetwork.isOnline(); - this.onlineSubscription = CoreNetwork.onChange().subscribe(() => { - // Execute the callback in the Angular zone, so change detection doesn't stop working. - NgZone.run(() => { - this.isOnline = CoreNetwork.isOnline(); - }); - }); this.logView = CoreTime.once(() => { CoreAnalytics.logEvent({ @@ -393,7 +384,6 @@ export default class AddonModChatChatPage implements OnInit, OnDestroy, CanLeave * @inheritdoc */ ngOnDestroy(): void { - this.onlineSubscription && this.onlineSubscription.unsubscribe(); this.stopPolling(); this.viewDestroyed = true; } diff --git a/src/addons/mod/feedback/pages/form/form.html b/src/addons/mod/feedback/pages/form/form.html index aa772e8a8ee..c455e9010b4 100644 --- a/src/addons/mod/feedback/pages/form/form.html +++ b/src/addons/mod/feedback/pages/form/form.html @@ -118,11 +118,11 @@