forked from CIT/Vmeda.Online
		
	MOBILE-3320 wiki: Fix wiki links
This commit is contained in:
		
							parent
							
								
									287496c8ec
								
							
						
					
					
						commit
						8f4ae0adc7
					
				@ -42,8 +42,8 @@ export class AddonModWikiEditPage implements OnInit, OnDestroy, CanLeave {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @ViewChild('editPageForm') formElement?: ElementRef;
 | 
					    @ViewChild('editPageForm') formElement?: ElementRef;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cmId!: number; // Course module ID.
 | 
					    cmId?: number; // Course module ID.
 | 
				
			||||||
    courseId!: number; // Course the wiki belongs to.
 | 
					    courseId?: number; // Course the wiki belongs to.
 | 
				
			||||||
    title?: string; // Title to display.
 | 
					    title?: string; // Title to display.
 | 
				
			||||||
    pageForm?: FormGroup; // The form group.
 | 
					    pageForm?: FormGroup; // The form group.
 | 
				
			||||||
    contentControl?: FormControl; // The FormControl for the page content.
 | 
					    contentControl?: FormControl; // The FormControl for the page content.
 | 
				
			||||||
@ -77,8 +77,8 @@ export class AddonModWikiEditPage implements OnInit, OnDestroy, CanLeave {
 | 
				
			|||||||
     * @inheritdoc
 | 
					     * @inheritdoc
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    async ngOnInit(): Promise<void> {
 | 
					    async ngOnInit(): Promise<void> {
 | 
				
			||||||
        this.cmId = CoreNavigator.getRouteNumberParam('cmId')!;
 | 
					        this.cmId = CoreNavigator.getRouteNumberParam('cmId') || undefined;
 | 
				
			||||||
        this.courseId = CoreNavigator.getRouteNumberParam('courseId')!;
 | 
					        this.courseId = CoreNavigator.getRouteNumberParam('courseId') || undefined;
 | 
				
			||||||
        this.subwikiId = CoreNavigator.getRouteNumberParam('subwikiId');
 | 
					        this.subwikiId = CoreNavigator.getRouteNumberParam('subwikiId');
 | 
				
			||||||
        this.wikiId = CoreNavigator.getRouteNumberParam('wikiId');
 | 
					        this.wikiId = CoreNavigator.getRouteNumberParam('wikiId');
 | 
				
			||||||
        this.pageId = CoreNavigator.getRouteNumberParam('pageId');
 | 
					        this.pageId = CoreNavigator.getRouteNumberParam('pageId');
 | 
				
			||||||
@ -162,6 +162,8 @@ export class AddonModWikiEditPage implements OnInit, OnDestroy, CanLeave {
 | 
				
			|||||||
                this.userId = pageContents.userid;
 | 
					                this.userId = pageContents.userid;
 | 
				
			||||||
                canEdit = pageContents.caneditpage;
 | 
					                canEdit = pageContents.caneditpage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                await this.fetchModuleAndCourseId();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                // Get subwiki files, needed to replace URLs for rich text editor.
 | 
					                // Get subwiki files, needed to replace URLs for rich text editor.
 | 
				
			||||||
                this.subwikiFiles = await AddonModWiki.getSubwikiFiles(this.wikiId, {
 | 
					                this.subwikiFiles = await AddonModWiki.getSubwikiFiles(this.wikiId, {
 | 
				
			||||||
                    groupId: this.groupId,
 | 
					                    groupId: this.groupId,
 | 
				
			||||||
@ -190,8 +192,10 @@ export class AddonModWikiEditPage implements OnInit, OnDestroy, CanLeave {
 | 
				
			|||||||
                this.editing = false;
 | 
					                this.editing = false;
 | 
				
			||||||
                canEdit = !!this.blockId; // If no blockId, the user cannot edit the page.
 | 
					                canEdit = !!this.blockId; // If no blockId, the user cannot edit the page.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                // Make sure we have the wiki ID.
 | 
					                await this.fetchModuleAndCourseId();
 | 
				
			||||||
                if (!this.wikiId) {
 | 
					
 | 
				
			||||||
 | 
					                // Try to get wikiId.
 | 
				
			||||||
 | 
					                if (!this.wikiId && this.cmId && this.courseId) {
 | 
				
			||||||
                    const module = await CoreCourse.getModule(this.cmId, this.courseId, undefined, true);
 | 
					                    const module = await CoreCourse.getModule(this.cmId, this.courseId, undefined, true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    this.wikiId = module.instance;
 | 
					                    this.wikiId = module.instance;
 | 
				
			||||||
@ -248,6 +252,22 @@ export class AddonModWikiEditPage implements OnInit, OnDestroy, CanLeave {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Load cmId and courseId if they aren't set.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return Promise.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    protected async fetchModuleAndCourseId(): Promise<void> {
 | 
				
			||||||
 | 
					        if (!this.wikiId || (this.cmId && this.courseId)) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        const module = await CoreCourse.getModuleBasicInfoByInstance(this.wikiId, 'wiki');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        this.cmId = module.id;
 | 
				
			||||||
 | 
					        this.courseId = module.course;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Force leaving the page, without checking for changes.
 | 
					     * Force leaving the page, without checking for changes.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 | 
				
			|||||||
@ -14,7 +14,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import { Injectable } from '@angular/core';
 | 
					import { Injectable } from '@angular/core';
 | 
				
			||||||
import { ActivatedRoute } from '@angular/router';
 | 
					import { ActivatedRoute } from '@angular/router';
 | 
				
			||||||
import { CoreError } from '@classes/errors/error';
 | 
					 | 
				
			||||||
import { CoreContentLinksHandlerBase } from '@features/contentlinks/classes/base-handler';
 | 
					import { CoreContentLinksHandlerBase } from '@features/contentlinks/classes/base-handler';
 | 
				
			||||||
import { CoreContentLinksAction } from '@features/contentlinks/services/contentlinks-delegate';
 | 
					import { CoreContentLinksAction } from '@features/contentlinks/services/contentlinks-delegate';
 | 
				
			||||||
import { CoreCourse } from '@features/course/services/course';
 | 
					import { CoreCourse } from '@features/course/services/course';
 | 
				
			||||||
@ -106,29 +105,27 @@ export class AddonModWikiCreateLinkHandlerService extends CoreContentLinksHandle
 | 
				
			|||||||
                    const route = CoreNavigator.getCurrentRoute({ pageComponent: AddonModWikiIndexPage });
 | 
					                    const route = CoreNavigator.getCurrentRoute({ pageComponent: AddonModWikiIndexPage });
 | 
				
			||||||
                    const subwikiId = parseInt(params.swid, 10);
 | 
					                    const subwikiId = parseInt(params.swid, 10);
 | 
				
			||||||
                    const wikiId = parseInt(params.wid, 10);
 | 
					                    const wikiId = parseInt(params.wid, 10);
 | 
				
			||||||
                    let moduleId: number;
 | 
					                    let path = AddonModWikiModuleHandlerService.PAGE_NAME;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    // Check if the link is inside the same wiki.
 | 
					                    // Check if the link is inside the same wiki.
 | 
				
			||||||
                    const isSameWiki = await this.currentStateIsSameWiki(route, subwikiId, siteId);
 | 
					                    const isSameWiki = await this.currentStateIsSameWiki(route, subwikiId, siteId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    if (isSameWiki) {
 | 
					                    if (isSameWiki) {
 | 
				
			||||||
                        // User is seeing the wiki, we can get the module from the wiki params.
 | 
					                        // User is seeing the wiki, we can get the module from the wiki params.
 | 
				
			||||||
                        moduleId = route!.snapshot.params.cmId;
 | 
					                        path = path + `/${route!.snapshot.params.courseId}/${route!.snapshot.params.cmId}/edit`;
 | 
				
			||||||
                        courseId = route!.snapshot.params.courseId;
 | 
					 | 
				
			||||||
                    } else if (wikiId) {
 | 
					                    } else if (wikiId) {
 | 
				
			||||||
                        // The URL specifies which wiki it belongs to. Get the module.
 | 
					                        // The URL specifies which wiki it belongs to. Get the module.
 | 
				
			||||||
                        const module = await CoreCourse.getModuleBasicInfoByInstance(wikiId, 'wiki', siteId);
 | 
					                        const module = await CoreCourse.getModuleBasicInfoByInstance(wikiId, 'wiki', siteId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        moduleId = module.id;
 | 
					                        path = path + `/${module.course}/${module.id}/edit`;
 | 
				
			||||||
                        courseId = module.course;
 | 
					 | 
				
			||||||
                    } else {
 | 
					                    } else {
 | 
				
			||||||
                        // Not enough data.
 | 
					                        // Cannot get module ID.
 | 
				
			||||||
                        throw new CoreError();
 | 
					                        path = path + `/${courseId || 0}/0/edit`;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    // Open the page.
 | 
					                    // Open the page.
 | 
				
			||||||
                    CoreNavigator.navigateToSitePath(
 | 
					                    CoreNavigator.navigateToSitePath(
 | 
				
			||||||
                        AddonModWikiModuleHandlerService.PAGE_NAME + `/${courseId}/${moduleId}/edit`,
 | 
					                        path,
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            params: {
 | 
					                            params: {
 | 
				
			||||||
                                pageTitle: params.title,
 | 
					                                pageTitle: params.title,
 | 
				
			||||||
 | 
				
			|||||||
@ -70,6 +70,7 @@ export class AddonModWikiPageOrMapLinkHandlerService extends CoreContentLinksHan
 | 
				
			|||||||
                        AddonModWikiModuleHandlerService.PAGE_NAME + `/${courseId}/${module.id}/page/${hash}`,
 | 
					                        AddonModWikiModuleHandlerService.PAGE_NAME + `/${courseId}/${module.id}/page/${hash}`,
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            params: {
 | 
					                            params: {
 | 
				
			||||||
 | 
					                                module,
 | 
				
			||||||
                                pageId: page.id,
 | 
					                                pageId: page.id,
 | 
				
			||||||
                                pageTitle: page.title,
 | 
					                                pageTitle: page.title,
 | 
				
			||||||
                                subwikiId: page.subwikiid,
 | 
					                                subwikiId: page.subwikiid,
 | 
				
			||||||
 | 
				
			|||||||
@ -1216,8 +1216,8 @@ export type AddonModWikiPageCreatedData = {
 | 
				
			|||||||
 * Data about a page that was just edited.
 | 
					 * Data about a page that was just edited.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
export type AddonModWikiEditedPageData = {
 | 
					export type AddonModWikiEditedPageData = {
 | 
				
			||||||
    cmId: number;
 | 
					    cmId?: number;
 | 
				
			||||||
    courseId: number;
 | 
					    courseId?: number;
 | 
				
			||||||
    wikiId: number;
 | 
					    wikiId: number;
 | 
				
			||||||
    pageTitle: string;
 | 
					    pageTitle: string;
 | 
				
			||||||
    subwikiId?: number;
 | 
					    subwikiId?: number;
 | 
				
			||||||
 | 
				
			|||||||
@ -1409,7 +1409,11 @@ export class CoreDomUtilsProvider {
 | 
				
			|||||||
            errorMessage = CoreTextUtils.getErrorMessageFromError(error);
 | 
					            errorMessage = CoreTextUtils.getErrorMessageFromError(error);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return this.showErrorModal(typeof errorMessage == 'string' ? error! : defaultError, needsTranslate, autocloseTime);
 | 
					        return this.showErrorModal(
 | 
				
			||||||
 | 
					            typeof errorMessage == 'string' && errorMessage ? error! : defaultError,
 | 
				
			||||||
 | 
					            needsTranslate,
 | 
				
			||||||
 | 
					            autocloseTime,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user