MOBILE-3109 mod: Add return types to resources
parent
7fc1c96b03
commit
334b28bda2
|
@ -121,7 +121,7 @@ export class AddonModBookIndexComponent extends CoreCourseModuleMainResourceComp
|
|||
// Try to get the book data.
|
||||
promises.push(this.bookProvider.getBook(this.courseId, this.module.id).then((book) => {
|
||||
this.dataRetrieved.emit(book);
|
||||
this.description = book.intro || this.description;
|
||||
this.description = book.intro;
|
||||
}).catch(() => {
|
||||
// Ignore errors since this WS isn't available in some Moodle versions.
|
||||
}));
|
||||
|
|
|
@ -25,38 +25,7 @@ import { CoreCourseProvider } from '@core/course/providers/course';
|
|||
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
|
||||
import { CoreSite } from '@classes/site';
|
||||
import { CoreTagItem } from '@core/tag/providers/tag';
|
||||
|
||||
/**
|
||||
* A book chapter inside the toc list.
|
||||
*/
|
||||
export interface AddonModBookTocChapter {
|
||||
/**
|
||||
* ID to identify the chapter.
|
||||
*/
|
||||
id: string;
|
||||
|
||||
/**
|
||||
* Chapter's title.
|
||||
*/
|
||||
title: string;
|
||||
|
||||
/**
|
||||
* The chapter's level.
|
||||
*/
|
||||
level: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Map of book contents. For each chapter it has its index URL and the list of paths of the files the chapter has. Each path
|
||||
* is identified by the relative path in the book, and the value is the URL of the file.
|
||||
*/
|
||||
export type AddonModBookContentsMap = {
|
||||
[chapter: string]: {
|
||||
indexUrl?: string,
|
||||
paths: {[path: string]: string},
|
||||
tags?: CoreTagItem[]
|
||||
}
|
||||
};
|
||||
import { CoreWSExternalWarning, CoreWSExternalFile } from '@providers/ws';
|
||||
|
||||
/**
|
||||
* Service that provides some features for books.
|
||||
|
@ -83,7 +52,7 @@ export class AddonModBookProvider {
|
|||
* @param siteId Site ID. If not defined, current site.
|
||||
* @return Promise resolved when the book is retrieved.
|
||||
*/
|
||||
getBook(courseId: number, cmId: number, siteId?: string): Promise<any> {
|
||||
getBook(courseId: number, cmId: number, siteId?: string): Promise<AddonModBookBook> {
|
||||
return this.getBookByField(courseId, 'coursemodule', cmId, siteId);
|
||||
}
|
||||
|
||||
|
@ -96,7 +65,7 @@ export class AddonModBookProvider {
|
|||
* @param siteId Site ID. If not defined, current site.
|
||||
* @return Promise resolved when the book is retrieved.
|
||||
*/
|
||||
protected getBookByField(courseId: number, key: string, value: any, siteId?: string): Promise<any> {
|
||||
protected getBookByField(courseId: number, key: string, value: any, siteId?: string): Promise<AddonModBookBook> {
|
||||
return this.sitesProvider.getSite(siteId).then((site) => {
|
||||
const params = {
|
||||
courseids: [courseId]
|
||||
|
@ -106,7 +75,9 @@ export class AddonModBookProvider {
|
|||
updateFrequency: CoreSite.FREQUENCY_RARELY
|
||||
};
|
||||
|
||||
return site.read('mod_book_get_books_by_courses', params, preSets).then((response) => {
|
||||
return site.read('mod_book_get_books_by_courses', params, preSets)
|
||||
.then((response: AddonModBookGetBooksByCoursesResult): any => {
|
||||
|
||||
// Search the book.
|
||||
if (response && response.books) {
|
||||
for (const i in response.books) {
|
||||
|
@ -401,3 +372,66 @@ export class AddonModBookProvider {
|
|||
{chapterid: chapterId}, siteId);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A book chapter inside the toc list.
|
||||
*/
|
||||
export type AddonModBookTocChapter = {
|
||||
/**
|
||||
* ID to identify the chapter.
|
||||
*/
|
||||
id: string;
|
||||
|
||||
/**
|
||||
* Chapter's title.
|
||||
*/
|
||||
title: string;
|
||||
|
||||
/**
|
||||
* The chapter's level.
|
||||
*/
|
||||
level: number;
|
||||
};
|
||||
|
||||
/**
|
||||
* Map of book contents. For each chapter it has its index URL and the list of paths of the files the chapter has. Each path
|
||||
* is identified by the relative path in the book, and the value is the URL of the file.
|
||||
*/
|
||||
export type AddonModBookContentsMap = {
|
||||
[chapter: string]: {
|
||||
indexUrl?: string,
|
||||
paths: {[path: string]: string},
|
||||
tags?: CoreTagItem[]
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Book returned by mod_book_get_books_by_courses.
|
||||
*/
|
||||
export type AddonModBookBook = {
|
||||
id: number; // Book id.
|
||||
coursemodule: number; // Course module id.
|
||||
course: number; // Course id.
|
||||
name: string; // Book name.
|
||||
intro: string; // The Book intro.
|
||||
introformat: number; // Intro format (1 = HTML, 0 = MOODLE, 2 = PLAIN or 4 = MARKDOWN).
|
||||
introfiles?: CoreWSExternalFile[]; // @since 3.2.
|
||||
numbering: number; // Book numbering configuration.
|
||||
navstyle: number; // Book navigation style configuration.
|
||||
customtitles: number; // Book custom titles type.
|
||||
revision?: number; // Book revision.
|
||||
timecreated?: number; // Time of creation.
|
||||
timemodified?: number; // Time of last modification.
|
||||
section?: number; // Course section id.
|
||||
visible?: boolean; // Visible.
|
||||
groupmode?: number; // Group mode.
|
||||
groupingid?: number; // Group id.
|
||||
};
|
||||
|
||||
/**
|
||||
* Result of WS mod_book_get_books_by_courses.
|
||||
*/
|
||||
export type AddonModBookGetBooksByCoursesResult = {
|
||||
books: AddonModBookBook[];
|
||||
warnings?: CoreWSExternalWarning[];
|
||||
};
|
||||
|
|
|
@ -34,6 +34,7 @@ export class AddonModFolderIndexComponent extends CoreCourseModuleMainResourceCo
|
|||
component = AddonModFolderProvider.COMPONENT;
|
||||
canGetFolder: boolean;
|
||||
contents: any;
|
||||
moduleContents: any;
|
||||
|
||||
constructor(injector: Injector, private folderProvider: AddonModFolderProvider, private courseProvider: CoreCourseProvider,
|
||||
private appProvider: CoreAppProvider, private folderHelper: AddonModFolderHelperProvider) {
|
||||
|
@ -87,9 +88,9 @@ export class AddonModFolderIndexComponent extends CoreCourseModuleMainResourceCo
|
|||
|
||||
if (this.path) {
|
||||
// Subfolder.
|
||||
this.contents = module.contents;
|
||||
this.contents = this.moduleContents;
|
||||
} else {
|
||||
this.contents = this.folderHelper.formatContents(module.contents);
|
||||
this.contents = this.folderHelper.formatContents(this.moduleContents);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -105,7 +106,7 @@ export class AddonModFolderIndexComponent extends CoreCourseModuleMainResourceCo
|
|||
if (this.canGetFolder) {
|
||||
promise = this.folderProvider.getFolder(this.courseId, this.module.id).then((folder) => {
|
||||
return this.courseProvider.loadModuleContents(this.module, this.courseId).then(() => {
|
||||
folder.contents = this.module.contents;
|
||||
this.moduleContents = this.module.contents;
|
||||
|
||||
return folder;
|
||||
});
|
||||
|
@ -117,17 +118,13 @@ export class AddonModFolderIndexComponent extends CoreCourseModuleMainResourceCo
|
|||
folder.contents = this.module.contents;
|
||||
}
|
||||
this.module = folder;
|
||||
this.moduleContents = folder.contents;
|
||||
|
||||
return folder;
|
||||
});
|
||||
}
|
||||
|
||||
return promise.then((folder) => {
|
||||
if (folder) {
|
||||
this.description = folder.intro || folder.description;
|
||||
this.dataRetrieved.emit(folder);
|
||||
}
|
||||
|
||||
this.showModuleData(folder);
|
||||
|
||||
// All data obtained, now fill the context menu.
|
||||
|
|
|
@ -19,6 +19,7 @@ import { CoreUtilsProvider } from '@providers/utils/utils';
|
|||
import { CoreCourseProvider } from '@core/course/providers/course';
|
||||
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
|
||||
import { CoreSite } from '@classes/site';
|
||||
import { CoreWSExternalWarning, CoreWSExternalFile } from '@providers/ws';
|
||||
|
||||
/**
|
||||
* Service that provides some features for folder.
|
||||
|
@ -43,7 +44,7 @@ export class AddonModFolderProvider {
|
|||
* @param siteId Site ID. If not defined, current site.
|
||||
* @return Promise resolved when the book is retrieved.
|
||||
*/
|
||||
getFolder(courseId: number, cmId: number, siteId?: string): Promise<any> {
|
||||
getFolder(courseId: number, cmId: number, siteId?: string): Promise<AddonModFolderFolder> {
|
||||
return this.getFolderByKey(courseId, 'coursemodule', cmId, siteId);
|
||||
}
|
||||
|
||||
|
@ -56,7 +57,7 @@ export class AddonModFolderProvider {
|
|||
* @param siteId Site ID. If not defined, current site.
|
||||
* @return Promise resolved when the book is retrieved.
|
||||
*/
|
||||
protected getFolderByKey(courseId: number, key: string, value: any, siteId?: string): Promise<any> {
|
||||
protected getFolderByKey(courseId: number, key: string, value: any, siteId?: string): Promise<AddonModFolderFolder> {
|
||||
return this.sitesProvider.getSite(siteId).then((site) => {
|
||||
const params = {
|
||||
courseids: [courseId]
|
||||
|
@ -66,7 +67,9 @@ export class AddonModFolderProvider {
|
|||
updateFrequency: CoreSite.FREQUENCY_RARELY
|
||||
};
|
||||
|
||||
return site.read('mod_folder_get_folders_by_courses', params, preSets).then((response) => {
|
||||
return site.read('mod_folder_get_folders_by_courses', params, preSets)
|
||||
.then((response: AddonModFolderGetFoldersByCoursesResult): any => {
|
||||
|
||||
if (response && response.folders) {
|
||||
const currentFolder = response.folders.find((folder) => {
|
||||
return folder[key] == value;
|
||||
|
@ -147,3 +150,33 @@ export class AddonModFolderProvider {
|
|||
{}, siteId);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Folder returned by mod_folder_get_folders_by_courses.
|
||||
*/
|
||||
export type AddonModFolderFolder = {
|
||||
id: number; // Module id.
|
||||
coursemodule: number; // Course module id.
|
||||
course: number; // Course id.
|
||||
name: string; // Page name.
|
||||
intro: string; // Summary.
|
||||
introformat: number; // Intro format (1 = HTML, 0 = MOODLE, 2 = PLAIN or 4 = MARKDOWN).
|
||||
introfiles: CoreWSExternalFile[];
|
||||
revision: number; // Incremented when after each file changes, to avoid cache.
|
||||
timemodified: number; // Last time the folder was modified.
|
||||
display: number; // Display type of folder contents on a separate page or inline.
|
||||
showexpanded: number; // 1 = expanded, 0 = collapsed for sub-folders.
|
||||
showdownloadfolder: number; // Whether to show the download folder button.
|
||||
section: number; // Course section id.
|
||||
visible: number; // Module visibility.
|
||||
groupmode: number; // Group mode.
|
||||
groupingid: number; // Grouping id.
|
||||
};
|
||||
|
||||
/**
|
||||
* Result of WS mod_folder_get_folders_by_courses.
|
||||
*/
|
||||
export type AddonModFolderGetFoldersByCoursesResult = {
|
||||
folders: AddonModFolderFolder[];
|
||||
warnings?: CoreWSExternalWarning[];
|
||||
};
|
||||
|
|
|
@ -79,7 +79,7 @@ export class AddonModImscpIndexComponent extends CoreCourseModuleMainResourceCom
|
|||
const promises = [];
|
||||
|
||||
promises.push(this.imscpProvider.getImscp(this.courseId, this.module.id).then((imscp) => {
|
||||
this.description = imscp.intro || imscp.description;
|
||||
this.description = imscp.intro;
|
||||
this.dataRetrieved.emit(imscp);
|
||||
}));
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ import { CoreUtilsProvider } from '@providers/utils/utils';
|
|||
import { CoreCourseProvider } from '@core/course/providers/course';
|
||||
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
|
||||
import { CoreSite } from '@classes/site';
|
||||
import { CoreWSExternalWarning, CoreWSExternalFile } from '@providers/ws';
|
||||
|
||||
/**
|
||||
* Service that provides some features for IMSCP.
|
||||
|
@ -157,7 +158,7 @@ export class AddonModImscpProvider {
|
|||
* @param siteId Site ID. If not defined, current site.
|
||||
* @return Promise resolved when the imscp is retrieved.
|
||||
*/
|
||||
protected getImscpByKey(courseId: number, key: string, value: any, siteId?: string): Promise<any> {
|
||||
protected getImscpByKey(courseId: number, key: string, value: any, siteId?: string): Promise<AddonModImscpImscp> {
|
||||
return this.sitesProvider.getSite(siteId).then((site) => {
|
||||
const params = {
|
||||
courseids: [courseId]
|
||||
|
@ -167,7 +168,9 @@ export class AddonModImscpProvider {
|
|||
updateFrequency: CoreSite.FREQUENCY_RARELY
|
||||
};
|
||||
|
||||
return site.read('mod_imscp_get_imscps_by_courses', params, preSets).then((response) => {
|
||||
return site.read('mod_imscp_get_imscps_by_courses', params, preSets)
|
||||
.then((response: AddonModImscpGetImscpsByCoursesResult): any => {
|
||||
|
||||
if (response && response.imscps) {
|
||||
const currentImscp = response.imscps.find((imscp) => imscp[key] == value);
|
||||
if (currentImscp) {
|
||||
|
@ -188,7 +191,7 @@ export class AddonModImscpProvider {
|
|||
* @param siteId Site ID. If not defined, current site.
|
||||
* @return Promise resolved when the imscp is retrieved.
|
||||
*/
|
||||
getImscp(courseId: number, cmId: number, siteId?: string): Promise<any> {
|
||||
getImscp(courseId: number, cmId: number, siteId?: string): Promise<AddonModImscpImscp> {
|
||||
return this.getImscpByKey(courseId, 'coursemodule', cmId, siteId);
|
||||
}
|
||||
|
||||
|
@ -324,3 +327,32 @@ export class AddonModImscpProvider {
|
|||
siteId);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* IMSCP returned by mod_imscp_get_imscps_by_courses.
|
||||
*/
|
||||
export type AddonModImscpImscp = {
|
||||
id: number; // IMSCP id.
|
||||
coursemodule: number; // Course module id.
|
||||
course: number; // Course id.
|
||||
name: string; // Activity name.
|
||||
intro?: string; // The IMSCP intro.
|
||||
introformat?: number; // Intro format (1 = HTML, 0 = MOODLE, 2 = PLAIN or 4 = MARKDOWN).
|
||||
introfiles?: CoreWSExternalFile[]; // @since 3.2.
|
||||
revision?: number; // Revision.
|
||||
keepold?: number; // Number of old IMSCP to keep.
|
||||
structure?: string; // IMSCP structure.
|
||||
timemodified?: string; // Time of last modification.
|
||||
section?: number; // Course section id.
|
||||
visible?: boolean; // If visible.
|
||||
groupmode?: number; // Group mode.
|
||||
groupingid?: number; // Group id.
|
||||
};
|
||||
|
||||
/**
|
||||
* Result of WS mod_imscp_get_imscps_by_courses.
|
||||
*/
|
||||
export type AddonModImscpGetImscpsByCoursesResult = {
|
||||
imscps: AddonModImscpImscp[];
|
||||
warnings?: CoreWSExternalWarning[];
|
||||
};
|
||||
|
|
|
@ -17,6 +17,7 @@ import { CoreSitesProvider } from '@providers/sites';
|
|||
import { CoreUtilsProvider } from '@providers/utils/utils';
|
||||
import { CoreFilepoolProvider } from '@providers/filepool';
|
||||
import { CoreSite, CoreSiteWSPreSets } from '@classes/site';
|
||||
import { CoreWSExternalWarning, CoreWSExternalFile } from '@providers/ws';
|
||||
|
||||
/**
|
||||
* Service that provides some features for labels.
|
||||
|
@ -52,7 +53,7 @@ export class AddonModLabelProvider {
|
|||
* @return Promise resolved when the label is retrieved.
|
||||
*/
|
||||
protected getLabelByField(courseId: number, key: string, value: any, forceCache?: boolean, ignoreCache?: boolean,
|
||||
siteId?: string): Promise<any> {
|
||||
siteId?: string): Promise<AddonModLabelLabel> {
|
||||
|
||||
return this.sitesProvider.getSite(siteId).then((site) => {
|
||||
const params = {
|
||||
|
@ -70,7 +71,9 @@ export class AddonModLabelProvider {
|
|||
preSets.emergencyCache = false;
|
||||
}
|
||||
|
||||
return site.read('mod_label_get_labels_by_courses', params, preSets).then((response) => {
|
||||
return site.read('mod_label_get_labels_by_courses', params, preSets)
|
||||
.then((response: AddonModLabelGetLabelsByCoursesResult): any => {
|
||||
|
||||
if (response && response.labels) {
|
||||
const currentLabel = response.labels.find((label) => label[key] == value);
|
||||
if (currentLabel) {
|
||||
|
@ -93,7 +96,8 @@ export class AddonModLabelProvider {
|
|||
* @param siteId Site ID. If not defined, current site.
|
||||
* @return Promise resolved when the label is retrieved.
|
||||
*/
|
||||
getLabel(courseId: number, cmId: number, forceCache?: boolean, ignoreCache?: boolean, siteId?: string): Promise<any> {
|
||||
getLabel(courseId: number, cmId: number, forceCache?: boolean, ignoreCache?: boolean, siteId?: string)
|
||||
: Promise<AddonModLabelLabel> {
|
||||
return this.getLabelByField(courseId, 'coursemodule', cmId, forceCache, ignoreCache, siteId);
|
||||
}
|
||||
|
||||
|
@ -107,7 +111,8 @@ export class AddonModLabelProvider {
|
|||
* @param siteId Site ID. If not defined, current site.
|
||||
* @return Promise resolved when the label is retrieved.
|
||||
*/
|
||||
getLabelById(courseId: number, labelId: number, forceCache?: boolean, ignoreCache?: boolean, siteId?: string): Promise<any> {
|
||||
getLabelById(courseId: number, labelId: number, forceCache?: boolean, ignoreCache?: boolean, siteId?: string)
|
||||
: Promise<AddonModLabelLabel> {
|
||||
return this.getLabelByField(courseId, 'id', labelId, forceCache, ignoreCache, siteId);
|
||||
}
|
||||
|
||||
|
@ -170,3 +175,29 @@ export class AddonModLabelProvider {
|
|||
return site.wsAvailable('mod_label_get_labels_by_courses');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Label returned by mod_label_get_labels_by_courses.
|
||||
*/
|
||||
export type AddonModLabelLabel = {
|
||||
id: number; // Module id.
|
||||
coursemodule: number; // Course module id.
|
||||
course: number; // Course id.
|
||||
name: string; // Label name.
|
||||
intro: string; // Label contents.
|
||||
introformat: number; // Intro format (1 = HTML, 0 = MOODLE, 2 = PLAIN or 4 = MARKDOWN).
|
||||
introfiles: CoreWSExternalFile[];
|
||||
timemodified: number; // Last time the label was modified.
|
||||
section: number; // Course section id.
|
||||
visible: number; // Module visibility.
|
||||
groupmode: number; // Group mode.
|
||||
groupingid: number; // Grouping id.
|
||||
};
|
||||
|
||||
/**
|
||||
* Result of WS mod_label_get_labels_by_courses.
|
||||
*/
|
||||
export type AddonModLabelGetLabelsByCoursesResult = {
|
||||
labels: AddonModLabelLabel[];
|
||||
warnings?: CoreWSExternalWarning[];
|
||||
};
|
||||
|
|
|
@ -17,7 +17,7 @@ import { CoreAppProvider } from '@providers/app';
|
|||
import { CoreUtilsProvider } from '@providers/utils/utils';
|
||||
import { CoreCourseProvider } from '@core/course/providers/course';
|
||||
import { CoreCourseModuleMainResourceComponent } from '@core/course/classes/main-resource-component';
|
||||
import { AddonModPageProvider } from '../../providers/page';
|
||||
import { AddonModPageProvider, AddonModPagePage } from '../../providers/page';
|
||||
import { AddonModPageHelperProvider } from '../../providers/helper';
|
||||
import { AddonModPagePrefetchHandler } from '../../providers/prefetch-handler';
|
||||
|
||||
|
@ -34,7 +34,7 @@ export class AddonModPageIndexComponent extends CoreCourseModuleMainResourceComp
|
|||
contents: any;
|
||||
displayDescription = true;
|
||||
displayTimemodified = true;
|
||||
page: any;
|
||||
page: AddonModPagePage;
|
||||
|
||||
protected fetchContentDefaultError = 'addon.mod_page.errorwhileloadingthepage';
|
||||
|
||||
|
@ -109,8 +109,8 @@ export class AddonModPageIndexComponent extends CoreCourseModuleMainResourceComp
|
|||
this.page = page;
|
||||
|
||||
// Check if description and timemodified should be displayed.
|
||||
if (page.displayoptions) {
|
||||
const options = this.textUtils.unserialize(page.displayoptions) || {};
|
||||
if (this.page.displayoptions) {
|
||||
const options = this.textUtils.unserialize(this.page.displayoptions) || {};
|
||||
this.displayDescription = typeof options.printintro == 'undefined' ||
|
||||
this.utils.isTrueOrOne(options.printintro);
|
||||
this.displayTimemodified = typeof options.printlastmodified == 'undefined' ||
|
||||
|
|
|
@ -20,6 +20,7 @@ import { CoreCourseProvider } from '@core/course/providers/course';
|
|||
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
|
||||
import { CoreFilepoolProvider } from '@providers/filepool';
|
||||
import { CoreSite } from '@classes/site';
|
||||
import { CoreWSExternalWarning, CoreWSExternalFile } from '@providers/ws';
|
||||
|
||||
/**
|
||||
* Service that provides some features for page.
|
||||
|
@ -43,9 +44,9 @@ export class AddonModPageProvider {
|
|||
* @param courseId Course ID.
|
||||
* @param cmId Course module ID.
|
||||
* @param siteId Site ID. If not defined, current site.
|
||||
* @return Promise resolved when the book is retrieved.
|
||||
* @return Promise resolved when the page is retrieved.
|
||||
*/
|
||||
getPageData(courseId: number, cmId: number, siteId?: string): Promise<any> {
|
||||
getPageData(courseId: number, cmId: number, siteId?: string): Promise<AddonModPagePage> {
|
||||
return this.getPageByKey(courseId, 'coursemodule', cmId, siteId);
|
||||
}
|
||||
|
||||
|
@ -56,9 +57,9 @@ export class AddonModPageProvider {
|
|||
* @param key Name of the property to check.
|
||||
* @param value Value to search.
|
||||
* @param siteId Site ID. If not defined, current site.
|
||||
* @return Promise resolved when the book is retrieved.
|
||||
* @return Promise resolved when the page is retrieved.
|
||||
*/
|
||||
protected getPageByKey(courseId: number, key: string, value: any, siteId?: string): Promise<any> {
|
||||
protected getPageByKey(courseId: number, key: string, value: any, siteId?: string): Promise<AddonModPagePage> {
|
||||
return this.sitesProvider.getSite(siteId).then((site) => {
|
||||
const params = {
|
||||
courseids: [courseId]
|
||||
|
@ -68,7 +69,9 @@ export class AddonModPageProvider {
|
|||
updateFrequency: CoreSite.FREQUENCY_RARELY
|
||||
};
|
||||
|
||||
return site.read('mod_page_get_pages_by_courses', params, preSets).then((response) => {
|
||||
return site.read('mod_page_get_pages_by_courses', params, preSets)
|
||||
.then((response: AddonModPageGetPagesByCoursesResult): any => {
|
||||
|
||||
if (response && response.pages) {
|
||||
const currentPage = response.pages.find((page) => {
|
||||
return page[key] == value;
|
||||
|
@ -161,3 +164,37 @@ export class AddonModPageProvider {
|
|||
return this.logHelper.logSingle('mod_page_view_page', params, AddonModPageProvider.COMPONENT, id, name, 'page', {}, siteId);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Page returned by mod_page_get_pages_by_courses.
|
||||
*/
|
||||
export type AddonModPagePage = {
|
||||
id: number; // Module id.
|
||||
coursemodule: number; // Course module id.
|
||||
course: number; // Course id.
|
||||
name: string; // Page name.
|
||||
intro: string; // Summary.
|
||||
introformat: number; // Intro format (1 = HTML, 0 = MOODLE, 2 = PLAIN or 4 = MARKDOWN).
|
||||
introfiles: CoreWSExternalFile[];
|
||||
content: string; // Page content.
|
||||
contentformat: number; // Content format (1 = HTML, 0 = MOODLE, 2 = PLAIN or 4 = MARKDOWN).
|
||||
contentfiles: CoreWSExternalFile[];
|
||||
legacyfiles: number; // Legacy files flag.
|
||||
legacyfileslast: number; // Legacy files last control flag.
|
||||
display: number; // How to display the page.
|
||||
displayoptions: string; // Display options (width, height).
|
||||
revision: number; // Incremented when after each file changes, to avoid cache.
|
||||
timemodified: number; // Last time the page was modified.
|
||||
section: number; // Course section id.
|
||||
visible: number; // Module visibility.
|
||||
groupmode: number; // Group mode.
|
||||
groupingid: number; // Grouping id.
|
||||
};
|
||||
|
||||
/**
|
||||
* Result of WS mod_page_get_pages_by_courses.
|
||||
*/
|
||||
export type AddonModPageGetPagesByCoursesResult = {
|
||||
pages: AddonModPagePage[];
|
||||
warnings?: CoreWSExternalWarning[];
|
||||
};
|
||||
|
|
|
@ -25,6 +25,7 @@ import { CoreTextUtilsProvider } from '@providers/utils/text';
|
|||
import { CoreTimeUtilsProvider } from '@providers/utils/time';
|
||||
import { CoreCourseModulePrefetchDelegate } from '@core/course/providers/module-prefetch-delegate';
|
||||
import { CoreConstants } from '@core/constants';
|
||||
import { CoreWSExternalFile } from '@providers/ws';
|
||||
|
||||
/**
|
||||
* Handler to support resource modules.
|
||||
|
@ -146,7 +147,7 @@ export class AddonModResourceModuleHandler implements CoreCourseModuleHandler {
|
|||
*/
|
||||
protected getResourceData(module: any, courseId: number, handlerData: CoreCourseModuleHandlerData): Promise<any> {
|
||||
const promises = [];
|
||||
let infoFiles = [],
|
||||
let infoFiles: CoreWSExternalFile[] = [],
|
||||
options: any = {};
|
||||
|
||||
// Check if the button needs to be shown or not.
|
||||
|
|
|
@ -20,6 +20,7 @@ import { CoreCourseProvider } from '@core/course/providers/course';
|
|||
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
|
||||
import { CoreFilepoolProvider } from '@providers/filepool';
|
||||
import { CoreSite } from '@classes/site';
|
||||
import { CoreWSExternalWarning, CoreWSExternalFile } from '@providers/ws';
|
||||
|
||||
/**
|
||||
* Service that provides some features for resources.
|
||||
|
@ -56,7 +57,7 @@ export class AddonModResourceProvider {
|
|||
* @param siteId Site ID. If not defined, current site.
|
||||
* @return Promise resolved when the resource is retrieved.
|
||||
*/
|
||||
protected getResourceDataByKey(courseId: number, key: string, value: any, siteId?: string): Promise<any> {
|
||||
protected getResourceDataByKey(courseId: number, key: string, value: any, siteId?: string): Promise<AddonModResourceResource> {
|
||||
return this.sitesProvider.getSite(siteId).then((site) => {
|
||||
const params = {
|
||||
courseids: [courseId]
|
||||
|
@ -66,7 +67,9 @@ export class AddonModResourceProvider {
|
|||
updateFrequency: CoreSite.FREQUENCY_RARELY
|
||||
};
|
||||
|
||||
return site.read('mod_resource_get_resources_by_courses', params, preSets).then((response) => {
|
||||
return site.read('mod_resource_get_resources_by_courses', params, preSets)
|
||||
.then((response: AddonModResourceGetResourcesByCoursesResult): any => {
|
||||
|
||||
if (response && response.resources) {
|
||||
const currentResource = response.resources.find((resource) => {
|
||||
return resource[key] == value;
|
||||
|
@ -89,7 +92,7 @@ export class AddonModResourceProvider {
|
|||
* @param siteId Site ID. If not defined, current site.
|
||||
* @return Promise resolved when the resource is retrieved.
|
||||
*/
|
||||
getResourceData(courseId: number, cmId: number, siteId?: string): Promise<any> {
|
||||
getResourceData(courseId: number, cmId: number, siteId?: string): Promise<AddonModResourceResource> {
|
||||
return this.getResourceDataByKey(courseId, 'coursemodule', cmId, siteId);
|
||||
}
|
||||
|
||||
|
@ -165,3 +168,37 @@ export class AddonModResourceProvider {
|
|||
'resource', {}, siteId);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Resource returned by mod_resource_get_resources_by_courses.
|
||||
*/
|
||||
export type AddonModResourceResource = {
|
||||
id: number; // Module id.
|
||||
coursemodule: number; // Course module id.
|
||||
course: number; // Course id.
|
||||
name: string; // Page name.
|
||||
intro: string; // Summary.
|
||||
introformat: number; // Intro format (1 = HTML, 0 = MOODLE, 2 = PLAIN or 4 = MARKDOWN).
|
||||
introfiles: CoreWSExternalFile[];
|
||||
contentfiles: CoreWSExternalFile[];
|
||||
tobemigrated: number; // Whether this resource was migrated.
|
||||
legacyfiles: number; // Legacy files flag.
|
||||
legacyfileslast: number; // Legacy files last control flag.
|
||||
display: number; // How to display the resource.
|
||||
displayoptions: string; // Display options (width, height).
|
||||
filterfiles: number; // If filters should be applied to the resource content.
|
||||
revision: number; // Incremented when after each file changes, to avoid cache.
|
||||
timemodified: number; // Last time the resource was modified.
|
||||
section: number; // Course section id.
|
||||
visible: number; // Module visibility.
|
||||
groupmode: number; // Group mode.
|
||||
groupingid: number; // Grouping id.
|
||||
};
|
||||
|
||||
/**
|
||||
* Result of WS mod_resource_get_resources_by_courses.
|
||||
*/
|
||||
export type AddonModResourceGetResourcesByCoursesResult = {
|
||||
resources: AddonModResourceResource[];
|
||||
warnings?: CoreWSExternalWarning[];
|
||||
};
|
||||
|
|
|
@ -19,7 +19,7 @@ import { AddonModUrlIndexComponent } from '../components/index/index';
|
|||
import { CoreCourseModuleHandler, CoreCourseModuleHandlerData } from '@core/course/providers/module-delegate';
|
||||
import { CoreCourseProvider } from '@core/course/providers/course';
|
||||
import { CoreContentLinksHelperProvider } from '@core/contentlinks/providers/helper';
|
||||
import { AddonModUrlProvider } from './url';
|
||||
import { AddonModUrlProvider, AddonModUrlUrl } from './url';
|
||||
import { AddonModUrlHelperProvider } from './helper';
|
||||
import { CoreConstants } from '@core/constants';
|
||||
|
||||
|
@ -90,7 +90,8 @@ export class AddonModUrlModuleHandler implements CoreCourseModuleHandler {
|
|||
if (handler.urlProvider.isGetUrlWSAvailable()) {
|
||||
return handler.urlProvider.getUrl(courseId, module.id).catch(() => {
|
||||
// Ignore errors.
|
||||
}).then((url) => {
|
||||
return undefined;
|
||||
}).then((url: AddonModUrlUrl) => {
|
||||
const displayType = handler.urlProvider.getFinalDisplayType(url);
|
||||
|
||||
return displayType == CoreConstants.RESOURCELIB_DISPLAY_OPEN ||
|
||||
|
|
|
@ -21,6 +21,7 @@ import { CoreCourseProvider } from '@core/course/providers/course';
|
|||
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
|
||||
import { CoreConstants } from '@core/constants';
|
||||
import { CoreSite } from '@classes/site';
|
||||
import { CoreWSExternalWarning, CoreWSExternalFile } from '@providers/ws';
|
||||
|
||||
/**
|
||||
* Service that provides some features for urls.
|
||||
|
@ -44,7 +45,7 @@ export class AddonModUrlProvider {
|
|||
* @param url URL data.
|
||||
* @return Final display type.
|
||||
*/
|
||||
getFinalDisplayType(url: any): number {
|
||||
getFinalDisplayType(url: AddonModUrlUrl): number {
|
||||
if (!url) {
|
||||
return -1;
|
||||
}
|
||||
|
@ -109,7 +110,7 @@ export class AddonModUrlProvider {
|
|||
* @param siteId Site ID. If not defined, current site.
|
||||
* @return Promise resolved when the url is retrieved.
|
||||
*/
|
||||
protected getUrlDataByKey(courseId: number, key: string, value: any, siteId?: string): Promise<any> {
|
||||
protected getUrlDataByKey(courseId: number, key: string, value: any, siteId?: string): Promise<AddonModUrlUrl> {
|
||||
return this.sitesProvider.getSite(siteId).then((site) => {
|
||||
const params = {
|
||||
courseids: [courseId]
|
||||
|
@ -119,7 +120,9 @@ export class AddonModUrlProvider {
|
|||
updateFrequency: CoreSite.FREQUENCY_RARELY
|
||||
};
|
||||
|
||||
return site.read('mod_url_get_urls_by_courses', params, preSets).then((response) => {
|
||||
return site.read('mod_url_get_urls_by_courses', params, preSets)
|
||||
.then((response: AddonModUrlGetUrlsByCoursesResult): any => {
|
||||
|
||||
if (response && response.urls) {
|
||||
const currentUrl = response.urls.find((url) => {
|
||||
return url[key] == value;
|
||||
|
@ -142,7 +145,7 @@ export class AddonModUrlProvider {
|
|||
* @param siteId Site ID. If not defined, current site.
|
||||
* @return Promise resolved when the url is retrieved.
|
||||
*/
|
||||
getUrl(courseId: number, cmId: number, siteId?: string): Promise<any> {
|
||||
getUrl(courseId: number, cmId: number, siteId?: string): Promise<AddonModUrlUrl> {
|
||||
return this.getUrlDataByKey(courseId, 'coursemodule', cmId, siteId);
|
||||
}
|
||||
|
||||
|
@ -231,3 +234,33 @@ export class AddonModUrlProvider {
|
|||
return this.logHelper.logSingle('mod_url_view_url', params, AddonModUrlProvider.COMPONENT, id, name, 'url', {}, siteId);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* URL returnd by mod_url_get_urls_by_courses.
|
||||
*/
|
||||
export type AddonModUrlUrl = {
|
||||
id: number; // Module id.
|
||||
coursemodule: number; // Course module id.
|
||||
course: number; // Course id.
|
||||
name: string; // URL name.
|
||||
intro: string; // Summary.
|
||||
introformat: number; // Intro format (1 = HTML, 0 = MOODLE, 2 = PLAIN or 4 = MARKDOWN).
|
||||
introfiles: CoreWSExternalFile[];
|
||||
externalurl: string; // External URL.
|
||||
display: number; // How to display the url.
|
||||
displayoptions: string; // Display options (width, height).
|
||||
parameters: string; // Parameters to append to the URL.
|
||||
timemodified: number; // Last time the url was modified.
|
||||
section: number; // Course section id.
|
||||
visible: number; // Module visibility.
|
||||
groupmode: number; // Group mode.
|
||||
groupingid: number; // Grouping id.
|
||||
};
|
||||
|
||||
/**
|
||||
* Result of WS mod_url_get_urls_by_courses.
|
||||
*/
|
||||
export type AddonModUrlGetUrlsByCoursesResult = {
|
||||
urls: AddonModUrlUrl[];
|
||||
warnings?: CoreWSExternalWarning[];
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue