MOBILE-2353 wiki: Allow editing offline pages

main
Dani Palou 2018-05-28 13:36:07 +02:00
parent 89e22c980e
commit df5d519b0a
2 changed files with 24 additions and 7 deletions

View File

@ -15,7 +15,7 @@
<core-context-menu-item *ngIf="description" [priority]="800" [content]="'core.moduleintro' | translate" (action)="expandDescription()" [iconAction]="'arrow-forward'"></core-context-menu-item>
<core-context-menu-item *ngIf="loaded && !hasOffline && isOnline && !pageIsOffline" [priority]="700" [content]="'core.refresh' | translate" (action)="doRefresh(null, $event)" [iconAction]="refreshIcon" [closeOnClick]="false"></core-context-menu-item>
<core-context-menu-item *ngIf="loaded && isOnline && (hasOffline || pageIsOffline)" [priority]="600" [content]="'core.settings.synchronizenow' | translate" (action)="doRefresh(null, $event, true)" [iconAction]="syncIcon" [closeOnClick]="false"></core-context-menu-item>
<core-context-menu-item *ngIf="canEdit && isOnline" [priority]="590" [content]="'core.edit' | translate" iconAction="create" (action)="goToEditPage()"></core-context-menu-item>
<core-context-menu-item *ngIf="canEdit && (isOnline || pageIsOffline)" [priority]="590" [content]="'core.edit' | translate" iconAction="create" (action)="goToEditPage()"></core-context-menu-item>
<core-context-menu-item *ngIf="canEdit" [priority]="580" [content]="'addon.mod_wiki.createpage' | translate" iconAction="add" (action)="goToNewPage()"></core-context-menu-item>
<core-context-menu-item *ngIf="prefetchStatusIcon" [priority]="500" [content]="prefetchText" (action)="prefetch()" [iconAction]="prefetchStatusIcon" [closeOnClick]="false"></core-context-menu-item>
<core-context-menu-item *ngIf="size" [priority]="400" [content]="size" [iconDescription]="'cube'" (action)="removeFiles()" [iconAction]="'trash'"></core-context-menu-item>

View File

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