From 353c6823dbbfa2ced392f8131e99709e7cdcabd4 Mon Sep 17 00:00:00 2001 From: Albert Gasset Date: Mon, 8 Jul 2019 12:19:07 +0200 Subject: [PATCH] MOBILE-2201 wiki: Tag area handler for wiki pages --- scripts/langindex.json | 1 + src/addon/mod/wiki/lang/en.json | 1 + .../mod/wiki/providers/tag-area-handler.ts | 57 +++++++++++++++++++ src/addon/mod/wiki/wiki.module.ts | 9 ++- src/assets/lang/en.json | 1 + 5 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 src/addon/mod/wiki/providers/tag-area-handler.ts diff --git a/scripts/langindex.json b/scripts/langindex.json index 2d1efd4f0..369488b84 100644 --- a/scripts/langindex.json +++ b/scripts/langindex.json @@ -843,6 +843,7 @@ "addon.mod_wiki.pageexists": "wiki", "addon.mod_wiki.pagename": "wiki", "addon.mod_wiki.subwiki": "local_moodlemobileapp", + "addon.mod_wiki.tagarea_wiki_pages": "wiki", "addon.mod_wiki.titleshouldnotbeempty": "local_moodlemobileapp", "addon.mod_wiki.viewpage": "local_moodlemobileapp", "addon.mod_wiki.wikipage": "local_moodlemobileapp", diff --git a/src/addon/mod/wiki/lang/en.json b/src/addon/mod/wiki/lang/en.json index 29ed054ce..246965b9c 100644 --- a/src/addon/mod/wiki/lang/en.json +++ b/src/addon/mod/wiki/lang/en.json @@ -14,6 +14,7 @@ "pageexists": "This page already exists.", "pagename": "Page name", "subwiki": "Sub-wiki", + "tagarea_wiki_pages": "Wiki pages", "titleshouldnotbeempty": "The title should not be empty", "viewpage": "View page", "wikipage": "Wiki page", diff --git a/src/addon/mod/wiki/providers/tag-area-handler.ts b/src/addon/mod/wiki/providers/tag-area-handler.ts new file mode 100644 index 000000000..0f3cab521 --- /dev/null +++ b/src/addon/mod/wiki/providers/tag-area-handler.ts @@ -0,0 +1,57 @@ +// (C) Copyright 2015 Martin Dougiamas +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { Injectable, Injector } from '@angular/core'; +import { CoreTagAreaHandler } from '@core/tag/providers/area-delegate'; +import { CoreTagHelperProvider } from '@core/tag/providers/helper'; +import { CoreTagFeedComponent } from '@core/tag/components/feed/feed'; + +/** + * Handler to support tags. + */ +@Injectable() +export class AddonModWikiTagAreaHandler implements CoreTagAreaHandler { + name = 'AddonModWikiTagAreaHandler'; + type = 'mod_wiki/wiki_pages'; + + constructor(private tagHelper: CoreTagHelperProvider) {} + + /** + * Whether or not the handler is enabled on a site level. + * @return {boolean|Promise} Whether or not the handler is enabled on a site level. + */ + isEnabled(): boolean | Promise { + return true; + } + + /** + * Parses the rendered content of a tag index and returns the items. + * + * @param {string} content Rendered content. + * @return {any[]|Promise} Area items (or promise resolved with the items). + */ + parseContent(content: string): any[] | Promise { + return this.tagHelper.parseFeedContent(content); + } + + /** + * Get the component to use to display items. + * + * @param {Injector} injector Injector. + * @return {any|Promise} The component (or promise resolved with component) to use, undefined if not found. + */ + getComponent(injector: Injector): any | Promise { + return CoreTagFeedComponent; + } +} diff --git a/src/addon/mod/wiki/wiki.module.ts b/src/addon/mod/wiki/wiki.module.ts index 539b962dd..6396cac74 100644 --- a/src/addon/mod/wiki/wiki.module.ts +++ b/src/addon/mod/wiki/wiki.module.ts @@ -17,6 +17,7 @@ import { CoreCronDelegate } from '@providers/cron'; import { CoreCourseModuleDelegate } from '@core/course/providers/module-delegate'; import { CoreCourseModulePrefetchDelegate } from '@core/course/providers/module-prefetch-delegate'; import { CoreContentLinksDelegate } from '@core/contentlinks/providers/delegate'; +import { CoreTagAreaDelegate } from '@core/tag/providers/area-delegate'; import { AddonModWikiComponentsModule } from './components/components.module'; import { AddonModWikiProvider } from './providers/wiki'; import { AddonModWikiOfflineProvider } from './providers/wiki-offline'; @@ -29,6 +30,7 @@ import { AddonModWikiPageOrMapLinkHandler } from './providers/page-or-map-link-h import { AddonModWikiCreateLinkHandler } from './providers/create-link-handler'; import { AddonModWikiEditLinkHandler } from './providers/edit-link-handler'; import { AddonModWikiListLinkHandler } from './providers/list-link-handler'; +import { AddonModWikiTagAreaHandler } from './providers/tag-area-handler'; import { CoreUpdateManagerProvider } from '@providers/update-manager'; // List of providers (without handlers). @@ -55,7 +57,8 @@ export const ADDON_MOD_WIKI_PROVIDERS: any[] = [ AddonModWikiPageOrMapLinkHandler, AddonModWikiCreateLinkHandler, AddonModWikiEditLinkHandler, - AddonModWikiListLinkHandler + AddonModWikiListLinkHandler, + AddonModWikiTagAreaHandler ] }) export class AddonModWikiModule { @@ -64,7 +67,8 @@ export class AddonModWikiModule { cronDelegate: CoreCronDelegate, syncHandler: AddonModWikiSyncCronHandler, linksDelegate: CoreContentLinksDelegate, indexHandler: AddonModWikiIndexLinkHandler, pageOrMapHandler: AddonModWikiPageOrMapLinkHandler, createHandler: AddonModWikiCreateLinkHandler, editHandler: AddonModWikiEditLinkHandler, - updateManager: CoreUpdateManagerProvider, listLinkHandler: AddonModWikiListLinkHandler) { + updateManager: CoreUpdateManagerProvider, listLinkHandler: AddonModWikiListLinkHandler, + tagAreaDelegate: CoreTagAreaDelegate, tagAreaHandler: AddonModWikiTagAreaHandler) { moduleDelegate.registerHandler(moduleHandler); prefetchDelegate.registerHandler(prefetchHandler); @@ -74,6 +78,7 @@ export class AddonModWikiModule { linksDelegate.registerHandler(createHandler); linksDelegate.registerHandler(editHandler); linksDelegate.registerHandler(listLinkHandler); + tagAreaDelegate.registerHandler(tagAreaHandler); // Allow migrating the tables from the old app to the new schema. updateManager.registerSiteTableMigration({ diff --git a/src/assets/lang/en.json b/src/assets/lang/en.json index 00a011891..6fc2be13d 100644 --- a/src/assets/lang/en.json +++ b/src/assets/lang/en.json @@ -843,6 +843,7 @@ "addon.mod_wiki.pageexists": "This page already exists.", "addon.mod_wiki.pagename": "Page name", "addon.mod_wiki.subwiki": "Sub-wiki", + "addon.mod_wiki.tagarea_wiki_pages": "Wiki pages", "addon.mod_wiki.titleshouldnotbeempty": "The title should not be empty", "addon.mod_wiki.viewpage": "View page", "addon.mod_wiki.wikipage": "Wiki page",