MOBILE-2267 forum: Add open in browser link to posts
This commit is contained in:
		
							parent
							
								
									470abc056b
								
							
						
					
					
						commit
						6219947374
					
				| @ -114,7 +114,7 @@ export class AddonCalendarDayPage implements OnInit, OnDestroy { | ||||
|         this.filter.courseId = navParams.get('courseId'); | ||||
|         this.filter.categoryId = navParams.get('categoryId'); | ||||
| 
 | ||||
|         this.filter.filtered = this.filter.courseId || AddonCalendarProvider.ALL_TYPES.some((name) => !this.filter[name]); | ||||
|         this.filter.filtered = !!this.filter.courseId || AddonCalendarProvider.ALL_TYPES.some((name) => !this.filter[name]); | ||||
| 
 | ||||
|         this.year = navParams.get('year') || now.getFullYear(); | ||||
|         this.month = navParams.get('month') || (now.getMonth() + 1); | ||||
|  | ||||
| @ -11,7 +11,8 @@ | ||||
|     <ion-item text-wrap (click)="dismiss()" *ngIf="wordCount"> | ||||
|         <h2>{{ 'core.numwords' | translate: {'$a': wordCount} }}</h2> | ||||
|     </ion-item> | ||||
|     <ion-item text-wrap (click)="dismiss()" *ngIf="!canEdit && !canDelete && !wordCount"> | ||||
|         <h2>{{ 'core.nooptionavailable' | translate }}</h2> | ||||
|     </ion-item> | ||||
|     <a ion-item text-wrap [href]="url" *ngIf="url" core-link capture="false"> | ||||
|         <ion-icon name="open" item-start></ion-icon> | ||||
|         <h2>{{ 'core.openinbrowser' | translate }}</h2> | ||||
|     </a> | ||||
| </core-loading> | ||||
|  | ||||
| @ -15,6 +15,8 @@ | ||||
| import { Component, OnInit } from '@angular/core'; | ||||
| import { NavParams, ViewController } from 'ionic-angular'; | ||||
| import { CoreDomUtilsProvider } from '@providers/utils/dom'; | ||||
| import { CoreSitesProvider } from '@providers/sites'; | ||||
| import { CoreSite } from '@classes/site'; | ||||
| import { AddonModForumProvider } from '../../providers/forum'; | ||||
| 
 | ||||
| /** | ||||
| @ -31,11 +33,13 @@ export class AddonForumPostOptionsMenuComponent implements OnInit { | ||||
|     canEdit = false; | ||||
|     canDelete = false; | ||||
|     loaded = false; | ||||
|     url: string; | ||||
| 
 | ||||
|     constructor(navParams: NavParams, | ||||
|             protected viewCtrl: ViewController, | ||||
|             protected domUtils: CoreDomUtilsProvider, | ||||
|             protected forumProvider: AddonModForumProvider) { | ||||
|             protected forumProvider: AddonModForumProvider, | ||||
|             protected sitesProvider: CoreSitesProvider) { | ||||
|         this.post = navParams.get('post'); | ||||
|         this.forumId = navParams.get('forumId'); | ||||
|     } | ||||
| @ -46,6 +50,9 @@ export class AddonForumPostOptionsMenuComponent implements OnInit { | ||||
|     ngOnInit(): void { | ||||
|         if (this.forumId) { | ||||
|             if (this.post.id) { | ||||
|                 const site: CoreSite = this.sitesProvider.getCurrentSite(); | ||||
|                 this.url = site.createSiteUrl('/mod/forum/discuss.php', {d: this.post.discussion}, 'p' + this.post.id); | ||||
| 
 | ||||
|                 this.forumProvider.getDiscussionPost(this.forumId, this.post.discussion, this.post.id, true).then((post) => { | ||||
|                     this.canDelete = post.capabilities.delete && this.forumProvider.isDeletePostAvailable(); | ||||
|                     this.canEdit = post.capabilities.edit && this.forumProvider.isUpdatePostAvailable(); | ||||
|  | ||||
| @ -417,9 +417,9 @@ export class AddonModForumProvider { | ||||
|             return site.read('mod_forum_get_discussion_post', params, preSets).then((response) => { | ||||
|                 if (response.post) { | ||||
|                     return response.post; | ||||
|                 } else { | ||||
|                     return Promise.reject(null); | ||||
|                 } | ||||
| 
 | ||||
|                 return Promise.reject(null); | ||||
|             }); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
| @ -1309,6 +1309,18 @@ export class CoreSite { | ||||
|         return this.urlUtils.getDocsUrl(release, page); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns a url to link an specific page on the site. | ||||
|      * | ||||
|      * @param path Path of the url to go to. | ||||
|      * @param params Object with the params to add. | ||||
|      * @param anchor Anchor text if needed. | ||||
|      * @return URL with params. | ||||
|      */ | ||||
|     createSiteUrl(path: string, params?: {[key: string]: any}, anchor?: string): string { | ||||
|         return this.urlUtils.addParamsToUrl(this.siteUrl + path, params, anchor); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Check if the local_mobile plugin is installed in the Moodle site. | ||||
|      * | ||||
|  | ||||
| @ -49,9 +49,10 @@ export class CoreUrlUtilsProvider { | ||||
|      * | ||||
|      * @param url URL to add the params to. | ||||
|      * @param params Object with the params to add. | ||||
|      * @param anchor Anchor text if needed. | ||||
|      * @return URL with params. | ||||
|      */ | ||||
|     addParamsToUrl(url: string, params: {[key: string]: any}): string { | ||||
|     addParamsToUrl(url: string, params?: {[key: string]: any}, anchor?: string): string { | ||||
|         let separator = url.indexOf('?') != -1 ? '&' : '?'; | ||||
| 
 | ||||
|         for (const key in params) { | ||||
| @ -64,6 +65,10 @@ export class CoreUrlUtilsProvider { | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         if (anchor) { | ||||
|             url += '#' + anchor; | ||||
|         } | ||||
| 
 | ||||
|         return url; | ||||
|     } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user