From df5d519b0af9017cb93433698470686ee3c783ee Mon Sep 17 00:00:00 2001 From: Dani Palou Date: Mon, 28 May 2018 13:36:07 +0200 Subject: [PATCH] MOBILE-2353 wiki: Allow editing offline pages --- .../mod/wiki/components/index/index.html | 2 +- src/addon/mod/wiki/pages/edit/edit.ts | 29 +++++++++++++++---- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/addon/mod/wiki/components/index/index.html b/src/addon/mod/wiki/components/index/index.html index 335b5ea75..ea3b8ab30 100644 --- a/src/addon/mod/wiki/components/index/index.html +++ b/src/addon/mod/wiki/components/index/index.html @@ -15,7 +15,7 @@ - + diff --git a/src/addon/mod/wiki/pages/edit/edit.ts b/src/addon/mod/wiki/pages/edit/edit.ts index fef89d36b..b64a0fbe5 100644 --- a/src/addon/mod/wiki/pages/edit/edit.ts +++ b/src/addon/mod/wiki/pages/edit/edit.ts @@ -25,7 +25,7 @@ import { CoreCourseProvider } from '@core/course/providers/course'; import { CoreCourseHelperProvider } from '@core/course/providers/helper'; import { AddonModWikiProvider } from '../../providers/wiki'; import { AddonModWikiOfflineProvider } from '../../providers/wiki-offline'; -import { AddonModWikiSyncProvider } from '../../providers/wiki-sync'; +import { AddonModWikiSyncProvider, AddonModWikiSyncSubwikiResult } from '../../providers/wiki-sync'; /** * Page that allows adding or editing a wiki page. @@ -182,14 +182,31 @@ export class AddonModWikiEditPage implements OnInit, OnDestroy { } }); } else { + const pageTitle = this.pageForm.controls.title.value; + // New page. Wait for sync to be over (if any). promise = this.wikiSync.waitForSync(this.blockId); - if (this.contentControl.value) { - // Check if there's already some offline data for this page. - promise = promise.then(() => { - return this.wikiOffline.getNewPage(this.pageForm.controls.title.value, this.subwikiId, this.wikiId, - this.userId, this.groupId); + if (pageTitle) { + // Title is set, it could be editing an offline page or creating a new page using an edit link. + promise = promise.then((result: AddonModWikiSyncSubwikiResult) => { + + // First of all, verify if this page was created in the current sync. + if (result) { + const page = result.created.find((page) => { + return page.title == pageTitle; + }); + + if (page && page.pageId > 0) { + // Page was created, now it exists in the site. + this.pageId = page.pageId; + + return this.fetchWikiPageData(); + } + } + + // Check if there's already some offline data for this page. + return this.wikiOffline.getNewPage(pageTitle, this.subwikiId, this.wikiId, this.userId, this.groupId); }).then((page) => { // Load offline content. this.contentControl.setValue(page.cachedcontent);