MOBILE-2267 forum: Add open in browser link to posts

main
Pau Ferrer Ocaña 2019-11-22 11:52:21 +01:00
parent 470abc056b
commit 6219947374
6 changed files with 33 additions and 8 deletions

View File

@ -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);

View File

@ -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>

View File

@ -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();

View File

@ -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);
});
});
}

View File

@ -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.
*

View File

@ -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;
}