Merge pull request #1885 from crazyserver/MOBILE-2956
MOBILE-2956 notifications: Improve notifications info
This commit is contained in:
		
						commit
						29d7c3b633
					
				| @ -18,11 +18,16 @@ | |||||||
|             </button> |             </button> | ||||||
|         </div> |         </div> | ||||||
|         <ion-card *ngFor="let notification of notifications"> |         <ion-card *ngFor="let notification of notifications"> | ||||||
|             <ion-item> |             <ion-item text-wrap> | ||||||
|                 <ion-avatar core-user-avatar [user]="notification" item-start [profileUrl]="notification.profileimageurlfrom" [fullname]="notification.userfromfullname" [userId]="notification.useridfrom"></ion-avatar> |                 <ion-avatar *ngIf="notification.useridfrom > 0" core-user-avatar [user]="notification" item-start [profileUrl]="notification.profileimageurlfrom" [fullname]="notification.userfromfullname" [userId]="notification.useridfrom" [extraIcon]="notification.iconurl"></ion-avatar> | ||||||
|                 <h2>{{notification.userfromfullname}}</h2> |                 <img *ngIf="notification.useridfrom <= 0 && notification.iconurl" [src]="notification.iconurl" alt="" role="presentation" class="core-notification-icon" item-start> | ||||||
|                 <div item-end *ngIf="!notification.timeread"><core-icon name="fa-circle" color="primary"></core-icon></div> |                 <h2><core-format-text [text]="notification.subject"></core-format-text></h2> | ||||||
|                 <p>{{notification.timecreated | coreDateDayOrTime}}</p> |                 <p><ion-note float-end padding-left text-end> | ||||||
|  |                         {{notification.timecreated | coreDateDayOrTime}} | ||||||
|  |                         <span *ngIf="!notification.timeread"><core-icon name="fa-circle" color="primary"></core-icon></span> | ||||||
|  |                     </ion-note> | ||||||
|  |                 </p> | ||||||
|  |                 <p *ngIf="notification.userfromfullname"><core-format-text [text]="notification.userfromfullname"></core-format-text></p> | ||||||
|             </ion-item> |             </ion-item> | ||||||
|             <ion-item text-wrap> |             <ion-item text-wrap> | ||||||
|                 <p><core-format-text [text]="notification.mobiletext | coreCreateLinks"></core-format-text></p> |                 <p><core-format-text [text]="notification.mobiletext | coreCreateLinks"></core-format-text></p> | ||||||
|  | |||||||
							
								
								
									
										5
									
								
								src/addon/notifications/pages/list/list.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/addon/notifications/pages/list/list.scss
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | |||||||
|  | page-addon-notifications-list .core-notification-icon { | ||||||
|  |     width: 34px; | ||||||
|  |     height: 34px; | ||||||
|  |     margin: 10px !important; | ||||||
|  | } | ||||||
| @ -52,9 +52,12 @@ export class AddonNotificationsProvider { | |||||||
|      */ |      */ | ||||||
|     protected formatNotificationsData(notifications: any[], read?: boolean): Promise<any> { |     protected formatNotificationsData(notifications: any[], read?: boolean): Promise<any> { | ||||||
|         const promises = notifications.map((notification) => { |         const promises = notifications.map((notification) => { | ||||||
|  | 
 | ||||||
|             // Set message to show.
 |             // Set message to show.
 | ||||||
|             if (notification.contexturl && notification.contexturl.indexOf('/mod/forum/') >= 0) { |             if (notification.component && notification.component == 'mod_forum') { | ||||||
|                 notification.mobiletext = notification.smallmessage; |                 notification.mobiletext = notification.smallmessage; | ||||||
|  |             } else if (notification.component && notification.component == 'moodle' && notification.name == 'insights') { | ||||||
|  |                 notification.mobiletext = notification.fullmessagehtml; | ||||||
|             } else { |             } else { | ||||||
|                 notification.mobiletext = notification.fullmessage; |                 notification.mobiletext = notification.fullmessage; | ||||||
|             } |             } | ||||||
| @ -73,10 +76,10 @@ export class AddonNotificationsProvider { | |||||||
|             // Try to set courseid the notification belongs to.
 |             // Try to set courseid the notification belongs to.
 | ||||||
|             if (notification.customdata && notification.customdata.courseid) { |             if (notification.customdata && notification.customdata.courseid) { | ||||||
|                 notification.courseid = notification.customdata.courseid; |                 notification.courseid = notification.customdata.courseid; | ||||||
|             } else { |             } else if (!notification.courseid) { | ||||||
|                 const cid = notification.fullmessagehtml.match(/course\/view\.php\?id=([^"]*)/); |                 const cid = notification.fullmessagehtml.match(/course\/view\.php\?id=([^"]*)/); | ||||||
|                 if (cid && cid[1]) { |                 if (cid && cid[1]) { | ||||||
|                     notification.courseid = cid[1]; |                     notification.courseid = parseInt(cid[1], 10); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
| @ -84,6 +87,7 @@ export class AddonNotificationsProvider { | |||||||
|                 // Try to get the profile picture of the user.
 |                 // Try to get the profile picture of the user.
 | ||||||
|                 return this.userProvider.getProfile(notification.useridfrom, notification.courseid, true).then((user) => { |                 return this.userProvider.getProfile(notification.useridfrom, notification.courseid, true).then((user) => { | ||||||
|                     notification.profileimageurlfrom = user.profileimageurl; |                     notification.profileimageurlfrom = user.profileimageurl; | ||||||
|  |                     notification.userfromfullname = user.fullname; | ||||||
| 
 | 
 | ||||||
|                     return notification; |                     return notification; | ||||||
|                 }).catch(() => { |                 }).catch(() => { | ||||||
|  | |||||||
| @ -1,4 +1,5 @@ | |||||||
| <img *ngIf="avatarUrl" [src]="avatarUrl" [alt]="'core.pictureof' | translate:{$a: fullname}" core-external-content onError="this.src='assets/img/user-avatar.png'" role="presentation" [siteId]="siteId || null" (click)="gotoProfile($event)"> | <img *ngIf="avatarUrl" [src]="avatarUrl" [alt]="'core.pictureof' | translate:{$a: fullname}" core-external-content onError="this.src='assets/img/user-avatar.png'" role="presentation" [siteId]="siteId || null" (click)="gotoProfile($event)"> | ||||||
| <img *ngIf="!avatarUrl" src="assets/img/user-avatar.png" [alt]="'core.pictureof' | translate:{$a: fullname}" role="presentation" (click)="gotoProfile($event)"> | <img *ngIf="!avatarUrl" src="assets/img/user-avatar.png" [alt]="'core.pictureof' | translate:{$a: fullname}" role="presentation" (click)="gotoProfile($event)"> | ||||||
| <span *ngIf="checkOnline && isOnline()" class="contact-status online"></span> | <span *ngIf="checkOnline && isOnline()" class="contact-status online"></span> | ||||||
|  | <img *ngIf="extraIcon" [src]="extraIcon" alt="" role="presentation" class="core-avatar-extra-icon"> | ||||||
| <ng-content></ng-content> | <ng-content></ng-content> | ||||||
| @ -12,6 +12,16 @@ ion-avatar[core-user-avatar] { | |||||||
|             background-color: $core-online-color; |             background-color: $core-online-color; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     .core-avatar-extra-icon { | ||||||
|  |         margin: 0 !important; | ||||||
|  |         border-radius: 0 !important; | ||||||
|  |         background: none; | ||||||
|  |         position: absolute; | ||||||
|  |         @include position(null, -4px, -4px, null); | ||||||
|  |         width: 24px; | ||||||
|  |         height: 24px; | ||||||
|  |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .toolbar ion-avatar[core-user-avatar] .contact-status { | .toolbar ion-avatar[core-user-avatar] .contact-status { | ||||||
|  | |||||||
| @ -38,6 +38,7 @@ export class CoreUserAvatarComponent implements OnInit, OnChanges, OnDestroy { | |||||||
|     @Input() protected userId?: number; // If provided or found it will be used to link the image to the profile.
 |     @Input() protected userId?: number; // If provided or found it will be used to link the image to the profile.
 | ||||||
|     @Input() protected courseId?: number; |     @Input() protected courseId?: number; | ||||||
|     @Input() checkOnline = false; // If want to check and show online status.
 |     @Input() checkOnline = false; // If want to check and show online status.
 | ||||||
|  |     @Input() extraIcon?: string; // Extra icon to show near the avatar.
 | ||||||
| 
 | 
 | ||||||
|     avatarUrl?: string; |     avatarUrl?: string; | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user