diff --git a/src/core/course/course.module.ts b/src/core/course/course.module.ts index 1c74f500a..6aec264d9 100644 --- a/src/core/course/course.module.ts +++ b/src/core/course/course.module.ts @@ -18,6 +18,7 @@ import { CoreCourseHelperProvider } from './providers/helper'; import { CoreCourseFormatDelegate } from './providers/format-delegate'; import { CoreCourseModuleDelegate } from './providers/module-delegate'; import { CoreCourseModulePrefetchDelegate } from './providers/module-prefetch-delegate'; +import { CoreCourseOptionsDelegate } from './providers/options-delegate'; import { CoreCourseFormatDefaultHandler } from './providers/default-format'; import { CoreCourseFormatSingleActivityModule } from './formats/singleactivity/singleactivity.module'; import { CoreCourseFormatSocialModule } from './formats/social/social.module'; @@ -38,6 +39,7 @@ import { CoreCourseFormatWeeksModule } from './formats/weeks/weeks.module'; CoreCourseFormatDelegate, CoreCourseModuleDelegate, CoreCourseModulePrefetchDelegate, + CoreCourseOptionsDelegate, CoreCourseFormatDefaultHandler ], exports: [] diff --git a/src/core/course/pages/section/section.ts b/src/core/course/pages/section/section.ts index b8fb69a58..27c0c2aa3 100644 --- a/src/core/course/pages/section/section.ts +++ b/src/core/course/pages/section/section.ts @@ -22,7 +22,7 @@ import { CoreTextUtilsProvider } from '../../../../providers/utils/text'; import { CoreCourseProvider } from '../../providers/course'; import { CoreCourseHelperProvider } from '../../providers/helper'; import { CoreCourseFormatDelegate } from '../../providers/format-delegate'; -import { CoreCoursesDelegate, CoreCoursesHandlerToDisplay } from '../../../courses/providers/delegate'; +import { CoreCourseOptionsDelegate, CoreCourseOptionsHandlerToDisplay } from '../../providers/options-delegate'; import { CoreCoursesProvider } from '../../../courses/providers/courses'; /** @@ -41,7 +41,7 @@ export class CoreCourseSectionPage implements OnDestroy { sections: any[]; sectionId: number; sectionNumber: number; - courseHandlers: CoreCoursesHandlerToDisplay[]; + courseHandlers: CoreCourseOptionsHandlerToDisplay[]; dataLoaded: boolean; downloadEnabled: boolean; downloadEnabledIcon: string = 'square-outline'; // Disabled by default. @@ -54,7 +54,7 @@ export class CoreCourseSectionPage implements OnDestroy { protected isDestroyed = false; constructor(private navParams: NavParams, private courseProvider: CoreCourseProvider, private domUtils: CoreDomUtilsProvider, - private courseFormatDelegate: CoreCourseFormatDelegate, private coursesDelegate: CoreCoursesDelegate, + private courseFormatDelegate: CoreCourseFormatDelegate, private courseOptionsDelegate: CoreCourseOptionsDelegate, private translate: TranslateService, private courseHelper: CoreCourseHelperProvider, eventsProvider: CoreEventsProvider, private textUtils: CoreTextUtilsProvider, private coursesProvider: CoreCoursesProvider, sitesProvider: CoreSitesProvider, private navCtrl: NavController) { @@ -166,7 +166,7 @@ export class CoreCourseSectionPage implements OnDestroy { })); // Load the course handlers. - promises.push(this.coursesDelegate.getHandlersToDisplay(this.course, refresh, false).then((handlers) => { + promises.push(this.courseOptionsDelegate.getHandlersToDisplay(this.course, refresh, false).then((handlers) => { this.courseHandlers = handlers; })); diff --git a/src/core/course/providers/course.ts b/src/core/course/providers/course.ts index 5aced5a1a..f26cfb569 100644 --- a/src/core/course/providers/course.ts +++ b/src/core/course/providers/course.ts @@ -28,6 +28,9 @@ import { CoreConstants } from '../../constants'; @Injectable() export class CoreCourseProvider { public static ALL_SECTIONS_ID = -1; + public static ACCESS_GUEST = 'courses_access_guest'; + public static ACCESS_DEFAULT = 'courses_access_default'; + protected ROOT_CACHE_KEY = 'mmCourse:'; // Variables for database. diff --git a/src/core/course/providers/helper.ts b/src/core/course/providers/helper.ts index fbd6ad427..e8315122c 100644 --- a/src/core/course/providers/helper.ts +++ b/src/core/course/providers/helper.ts @@ -21,7 +21,7 @@ import { CoreDomUtilsProvider } from '../../../providers/utils/dom'; import { CoreTextUtilsProvider } from '../../../providers/utils/text'; import { CoreTimeUtilsProvider } from '../../../providers/utils/time'; import { CoreUtilsProvider } from '../../../providers/utils/utils'; -import { CoreCoursesDelegate, CoreCoursesHandlerToDisplay } from '../../courses/providers/delegate'; +import { CoreCourseOptionsDelegate, CoreCourseOptionsHandlerToDisplay } from './options-delegate'; import { CoreSiteHomeProvider } from '../../sitehome/providers/sitehome'; import { CoreCourseProvider } from './course'; import { CoreCourseModuleDelegate } from './module-delegate'; @@ -113,8 +113,8 @@ export class CoreCourseHelperProvider { private moduleDelegate: CoreCourseModuleDelegate, private prefetchDelegate: CoreCourseModulePrefetchDelegate, private filepoolProvider: CoreFilepoolProvider, private sitesProvider: CoreSitesProvider, private textUtils: CoreTextUtilsProvider, private timeUtils: CoreTimeUtilsProvider, - private utils: CoreUtilsProvider, private translate: TranslateService, private coursesDelegate: CoreCoursesDelegate, - private loginHelper: CoreLoginHelperProvider, private siteHomeProvider: CoreSiteHomeProvider) {} + private utils: CoreUtilsProvider, private translate: TranslateService, private loginHelper: CoreLoginHelperProvider, + private courseOptionsDelegate: CoreCourseOptionsDelegate, private siteHomeProvider: CoreSiteHomeProvider) {} /** * This function treats every module on the sections provided to load the handler data, treat completion @@ -242,11 +242,11 @@ export class CoreCourseHelperProvider { * @param {any} iconData An object where to store the course icon. It will be stored with the name "prefetchCourseIcon". * @param {any} course Course to prefetch. * @param {any[]} [sections] List of course sections. - * @param {CoreCoursesHandlerToDisplay[]} courseHandlers List of course handlers. + * @param {CoreCourseOptionsHandlerToDisplay[]} courseHandlers List of course handlers. * @return {Promise} Promise resolved with true when the download finishes, resolved with false if user doesn't * confirm, rejected if an error occurs. */ - confirmAndPrefetchCourse(iconData: any, course: any, sections?: any[], courseHandlers?: CoreCoursesHandlerToDisplay[]) + confirmAndPrefetchCourse(iconData: any, course: any, sections?: any[], courseHandlers?: CoreCourseOptionsHandlerToDisplay[]) : Promise { let initialIcon = iconData.prefetchCourseIcon, promise, @@ -268,10 +268,10 @@ export class CoreCourseHelperProvider { if (courseHandlers) { promise = Promise.resolve(courseHandlers); } else { - promise = this.coursesDelegate.getHandlersToDisplay(course); + promise = this.courseOptionsDelegate.getHandlersToDisplay(course); } - return promise.then((handlers: CoreCoursesHandlerToDisplay[]) => { + return promise.then((handlers: CoreCourseOptionsHandlerToDisplay[]) => { // Now we have all the data, download the course. return this.prefetchCourse(course, sections, handlers, siteId); }).then(() => { @@ -315,7 +315,7 @@ export class CoreCourseHelperProvider { subPromises.push(this.courseProvider.getSections(course.id, false, true).then((courseSections) => { sections = courseSections; })); - subPromises.push(this.coursesDelegate.getHandlersToDisplay(course).then((cHandlers) => { + subPromises.push(this.courseOptionsDelegate.getHandlersToDisplay(course).then((cHandlers) => { handlers = cHandlers; })); @@ -662,11 +662,12 @@ export class CoreCourseHelperProvider { * * @param {any} course The course to prefetch. * @param {any[]} sections List of course sections. - * @param {CoreCoursesHandlerToDisplay[]} courseHandlers List of course handlers. + * @param {CoreCourseOptionsHandlerToDisplay[]} courseHandlers List of course options handlers. * @param {string} [siteId] Site ID. If not defined, current site. * @return {Promise} Promise resolved when the download finishes. */ - prefetchCourse(course: any, sections: any[], courseHandlers: CoreCoursesHandlerToDisplay[], siteId?: string) : Promise { + prefetchCourse(course: any, sections: any[], courseHandlers: CoreCourseOptionsHandlerToDisplay[], siteId?: string) + : Promise { siteId = siteId || this.sitesProvider.getCurrentSiteId(); if (this.courseDwnPromises[siteId] && this.courseDwnPromises[siteId][course.id]) { diff --git a/src/core/courses/providers/delegate.ts b/src/core/course/providers/options-delegate.ts similarity index 90% rename from src/core/courses/providers/delegate.ts rename to src/core/course/providers/options-delegate.ts index dd1c85667..191eb26d0 100644 --- a/src/core/courses/providers/delegate.ts +++ b/src/core/course/providers/options-delegate.ts @@ -18,12 +18,13 @@ import { CoreEventsProvider } from '../../../providers/events'; import { CoreLoggerProvider } from '../../../providers/logger'; import { CoreSitesProvider } from '../../../providers/sites'; import { CoreUtilsProvider, PromiseDefer } from '../../../providers/utils/utils'; -import { CoreCoursesProvider } from './courses'; +import { CoreCoursesProvider } from '../../courses/providers/courses'; +import { CoreCourseProvider } from './course'; /** - * Interface that all courses handlers must implement. + * Interface that all course options handlers must implement. */ -export interface CoreCoursesHandler extends CoreDelegateHandler { +export interface CoreCourseOptionsHandler extends CoreDelegateHandler { /** * The highest priority is displayed first. * @type {number} @@ -57,9 +58,9 @@ export interface CoreCoursesHandler extends CoreDelegateHandler { * Returns the data needed to render the handler. * * @param {number} courseId The course ID. - * @return {CoreCoursesHandlerData} Data. + * @return {CoreCourseOptionsHandlerData} Data. */ - getDisplayData?(courseId: number): CoreCoursesHandlerData; + getDisplayData?(courseId: number): CoreCourseOptionsHandlerData; /** * Should invalidate the data to determine if the handler is enabled for a certain course. @@ -83,7 +84,7 @@ export interface CoreCoursesHandler extends CoreDelegateHandler { /** * Data needed to render a course handler. It's returned by the handler. */ -export interface CoreCoursesHandlerData { +export interface CoreCourseOptionsHandlerData { /** * Title to display for the handler. * @type {string} @@ -113,12 +114,12 @@ export interface CoreCoursesHandlerData { /** * Data returned by the delegate for each handler. */ -export interface CoreCoursesHandlerToDisplay { +export interface CoreCourseOptionsHandlerToDisplay { /** * Data to display. - * @type {CoreCoursesHandlerData} + * @type {CoreCourseOptionsHandlerData} */ - data: CoreCoursesHandlerData; + data: CoreCourseOptionsHandlerData; /** * The highest priority is displayed first. @@ -136,17 +137,17 @@ export interface CoreCoursesHandlerToDisplay { } /** - * Service to interact with plugins to be shown in each course. + * Service to interact with plugins to be shown in each course (participants, learning plans, ...). */ @Injectable() -export class CoreCoursesDelegate extends CoreDelegate { - protected handlers: { [s: string]: CoreCoursesHandler } = {}; // All registered handlers. - protected enabledHandlers: { [s: string]: CoreCoursesHandler } = {}; // Handlers enabled for the current site. +export class CoreCourseOptionsDelegate extends CoreDelegate { + protected handlers: { [s: string]: CoreCourseOptionsHandler } = {}; // All registered handlers. + protected enabledHandlers: { [s: string]: CoreCourseOptionsHandler } = {}; // Handlers enabled for the current site. protected loaded: { [courseId: number]: boolean } = {}; protected lastUpdateHandlersForCoursesStart: any = {}; protected coursesHandlers: { [courseId: number]: { - access?: any, navOptions?: any, admOptions?: any, deferred?: PromiseDefer, enabledHandlers?: CoreCoursesHandler[] + access?: any, navOptions?: any, admOptions?: any, deferred?: PromiseDefer, enabledHandlers?: CoreCourseOptionsHandler[] } } = {}; @@ -154,7 +155,7 @@ export class CoreCoursesDelegate extends CoreDelegate { constructor(loggerProvider: CoreLoggerProvider, protected sitesProvider: CoreSitesProvider, private utils: CoreUtilsProvider, protected eventsProvider: CoreEventsProvider, private coursesProvider: CoreCoursesProvider) { - super('CoreMainMenuDelegate', loggerProvider, sitesProvider, eventsProvider); + super('CoreCourseOptionsDelegate', loggerProvider, sitesProvider, eventsProvider); eventsProvider.on(CoreEventsProvider.LOGOUT, () => { this.clearCoursesHandlers(); @@ -172,7 +173,7 @@ export class CoreCoursesDelegate extends CoreDelegate { } /** - * Clear all courses handlers. + * Clear all course options handlers. * * @param {number} [courseId] The course ID. If not defined, all handlers will be cleared. */ @@ -200,7 +201,7 @@ export class CoreCoursesDelegate extends CoreDelegate { // Invalidate course enabled data for the handlers that are enabled at site level. if (courseId) { // Invalidate only options for this course. - promises.push(this.coursesProvider.invalidateCoursesOptions([courseId])); + promises.push(this.coursesProvider.invalidateCoursesAdminAndNavOptions([courseId])); promises.push(this.invalidateCourseHandlers(courseId)); } else { // Invalidate all options. @@ -225,10 +226,10 @@ export class CoreCoursesDelegate extends CoreDelegate { * @param {any} accessData Access type and data. Default, guest, ... * @param {any} [navOptions] Course navigation options for current user. See CoreCoursesProvider.getUserNavigationOptions. * @param {any} [admOptions] Course admin options for current user. See CoreCoursesProvider.getUserAdministrationOptions. - * @return {Promise} Promise resolved with array of handlers. + * @return {Promise} Promise resolved with array of handlers. */ protected getHandlersForAccess(courseId: number, refresh: boolean, accessData: any, navOptions?: any, - admOptions?: any): Promise { + admOptions?: any): Promise { // If the handlers aren't loaded, do not refresh. if (!this.loaded[courseId]) { @@ -260,14 +261,14 @@ export class CoreCoursesDelegate extends CoreDelegate { * @param {boolean} [isGuest] Whether it's guest. * @param {any} [navOptions] Course navigation options for current user. See CoreCoursesProvider.getUserNavigationOptions. * @param {any} [admOptions] Course admin options for current user. See CoreCoursesProvider.getUserAdministrationOptions. - * @return {Promise} Promise resolved with array of handlers. + * @return {Promise} Promise resolved with array of handlers. */ getHandlersToDisplay(course: any, refresh?: boolean, isGuest?: boolean, navOptions?: any, admOptions?: any): - Promise { + Promise { course.id = parseInt(course.id, 10); let accessData = { - type: isGuest ? CoreCoursesProvider.ACCESS_GUEST : CoreCoursesProvider.ACCESS_DEFAULT + type: isGuest ? CoreCourseProvider.ACCESS_GUEST : CoreCourseProvider.ACCESS_DEFAULT }; if (navOptions) { @@ -281,7 +282,7 @@ export class CoreCoursesDelegate extends CoreDelegate { // Call getHandlersForAccess to make sure the handlers have been loaded. return this.getHandlersForAccess(course.id, refresh, accessData, course.navOptions, course.admOptions); }).then(() => { - let handlersToDisplay: CoreCoursesHandlerToDisplay[] = [], + let handlersToDisplay: CoreCourseOptionsHandlerToDisplay[] = [], promises = [], promise; @@ -342,7 +343,7 @@ export class CoreCoursesDelegate extends CoreDelegate { hasHandlersForDefault(courseId: number, refresh?: boolean, navOptions?: any, admOptions?: any): Promise { // Default access. let accessData = { - type: CoreCoursesProvider.ACCESS_DEFAULT + type: CoreCourseProvider.ACCESS_DEFAULT }; return this.getHandlersForAccess(courseId, refresh, accessData, navOptions, admOptions).then((handlers) => { return !!(handlers && handlers.length); @@ -361,7 +362,7 @@ export class CoreCoursesDelegate extends CoreDelegate { hasHandlersForGuest(courseId: number, refresh?: boolean, navOptions?: any, admOptions?: any): Promise { // Guest access. var accessData = { - type: CoreCoursesProvider.ACCESS_GUEST + type: CoreCourseProvider.ACCESS_GUEST }; return this.getHandlersForAccess(courseId, refresh, accessData, navOptions, admOptions).then((handlers) => { return !!(handlers && handlers.length); @@ -416,7 +417,7 @@ export class CoreCoursesDelegate extends CoreDelegate { */ protected loadCourseOptions(course: any, refresh?: boolean): Promise { if (typeof course.navOptions == 'undefined' || typeof course.admOptions == 'undefined' || refresh) { - return this.coursesProvider.getCoursesOptions([course.id]).then((options) => { + return this.coursesProvider.getCoursesAdminAndNavOptions([course.id]).then((options) => { course.navOptions = options.navOptions[course.id]; course.admOptions = options.admOptions[course.id]; }); @@ -425,7 +426,12 @@ export class CoreCoursesDelegate extends CoreDelegate { } } - updateData(siteId?: string) { + /** + * Update handlers for each course. + * + * @param {string} [siteId] Site ID. + */ + updateData(siteId?: string): void { if (this.sitesProvider.getCurrentSiteId() === siteId) { // Update handlers for all courses. for (let courseId in this.coursesHandlers) { @@ -458,7 +464,7 @@ export class CoreCoursesDelegate extends CoreDelegate { // Checks if the handler is enabled for the user. promises.push(Promise.resolve(handler.isEnabledForCourse(courseId, accessData, navOptions, admOptions)) - .then(function(enabled) { + .then((enabled) => { if (enabled) { enabledForCourse.push(handler); } else { diff --git a/src/core/courses/courses.module.ts b/src/core/courses/courses.module.ts index cd603bae5..2fde4b912 100644 --- a/src/core/courses/courses.module.ts +++ b/src/core/courses/courses.module.ts @@ -16,7 +16,6 @@ import { NgModule } from '@angular/core'; import { CoreCoursesProvider } from './providers/courses'; import { CoreCoursesMainMenuHandler } from './providers/mainmenu-handler'; import { CoreCoursesMyOverviewProvider } from './providers/my-overview'; -import { CoreCoursesDelegate } from './providers/delegate'; import { CoreCoursesCourseLinkHandler } from './providers/course-link-handler'; import { CoreCoursesIndexLinkHandler } from './providers/courses-index-link-handler'; import { CoreCoursesMyOverviewLinkHandler } from './providers/my-overview-link-handler'; @@ -31,7 +30,6 @@ import { CoreContentLinksDelegate } from '../contentlinks/providers/delegate'; CoreCoursesProvider, CoreCoursesMainMenuHandler, CoreCoursesMyOverviewProvider, - CoreCoursesDelegate, CoreCoursesCourseLinkHandler, CoreCoursesIndexLinkHandler, CoreCoursesMyOverviewLinkHandler diff --git a/src/core/courses/pages/course-preview/course-preview.ts b/src/core/courses/pages/course-preview/course-preview.ts index 2f99a0282..24d275fac 100644 --- a/src/core/courses/pages/course-preview/course-preview.ts +++ b/src/core/courses/pages/course-preview/course-preview.ts @@ -21,7 +21,7 @@ import { CoreSitesProvider } from '../../../../providers/sites'; import { CoreDomUtilsProvider } from '../../../../providers/utils/dom'; import { CoreTextUtilsProvider } from '../../../../providers/utils/text'; import { CoreCoursesProvider } from '../../providers/courses'; -import { CoreCoursesDelegate } from '../../providers/delegate'; +import { CoreCourseOptionsDelegate } from '../../../course/providers/options-delegate'; import { CoreCourseProvider } from '../../../course/providers/course'; import { CoreCourseHelperProvider } from '../../../course/providers/helper'; @@ -65,7 +65,7 @@ export class CoreCoursesCoursePreviewPage implements OnDestroy { private domUtils: CoreDomUtilsProvider, private textUtils: CoreTextUtilsProvider, appProvider: CoreAppProvider, private coursesProvider: CoreCoursesProvider, private platform: Platform, private modalCtrl: ModalController, private translate: TranslateService, private eventsProvider: CoreEventsProvider, - private coursesDelegate: CoreCoursesDelegate, private courseHelper: CoreCourseHelperProvider, + private courseOptionsDelegate: CoreCourseOptionsDelegate, private courseHelper: CoreCourseHelperProvider, private courseProvider: CoreCourseProvider) { this.course = navParams.get('course'); this.isMobile = appProvider.isMobile(); @@ -228,7 +228,7 @@ export class CoreCoursesCoursePreviewPage implements OnDestroy { * @param {boolean} guest Whether it's guest access. */ protected loadCourseHandlers(refresh: boolean, guest: boolean) : Promise { - return this.coursesDelegate.getHandlersToDisplay(this.course, refresh, guest, true).then((handlers) => { + return this.courseOptionsDelegate.getHandlersToDisplay(this.course, refresh, guest, true).then((handlers) => { this.course._handlers = handlers; this.handlersShouldBeShown = true; this.handlersLoaded = true; @@ -375,7 +375,7 @@ export class CoreCoursesCoursePreviewPage implements OnDestroy { promises.push(this.coursesProvider.invalidateUserCourses()); promises.push(this.coursesProvider.invalidateCourse(this.course.id)); promises.push(this.coursesProvider.invalidateCourseEnrolmentMethods(this.course.id)); - // promises.push($mmCoursesDelegate.clearAndInvalidateCoursesOptions(course.id)); + promises.push(this.courseOptionsDelegate.clearAndInvalidateCoursesOptions(this.course.id)); if (this.guestInstanceId) { promises.push(this.coursesProvider.invalidateCourseGuestEnrolmentInfo(this.guestInstanceId)); } diff --git a/src/core/courses/pages/my-courses/my-courses.ts b/src/core/courses/pages/my-courses/my-courses.ts index 1c19435d0..4793aa8c2 100644 --- a/src/core/courses/pages/my-courses/my-courses.ts +++ b/src/core/courses/pages/my-courses/my-courses.ts @@ -19,6 +19,7 @@ import { CoreSitesProvider } from '../../../../providers/sites'; import { CoreDomUtilsProvider } from '../../../../providers/utils/dom'; import { CoreCoursesProvider } from '../../providers/courses'; import { CoreCourseHelperProvider } from '../../../course/providers/helper'; +import { CoreCourseOptionsDelegate } from '../../../course/providers/options-delegate'; /** * Page that displays the list of courses the user is enrolled in. @@ -44,7 +45,8 @@ export class CoreCoursesMyCoursesPage implements OnDestroy { constructor(private navCtrl: NavController, private coursesProvider: CoreCoursesProvider, private domUtils: CoreDomUtilsProvider, private eventsProvider: CoreEventsProvider, - private sitesProvider: CoreSitesProvider, private courseHelper: CoreCourseHelperProvider) {} + private sitesProvider: CoreSitesProvider, private courseHelper: CoreCourseHelperProvider, + private courseOptionsDelegate: CoreCourseOptionsDelegate) {} /** * View loaded. @@ -75,7 +77,7 @@ export class CoreCoursesMyCoursesPage implements OnDestroy { return course.id; }); - return this.coursesProvider.getCoursesOptions(courseIds).then((options) => { + return this.coursesProvider.getCoursesAdminAndNavOptions(courseIds).then((options) => { courses.forEach((course) => { course.navOptions = options.navOptions[course.id]; course.admOptions = options.admOptions[course.id]; @@ -100,7 +102,7 @@ export class CoreCoursesMyCoursesPage implements OnDestroy { let promises = []; promises.push(this.coursesProvider.invalidateUserCourses()); - // promises.push($mmCoursesDelegate.clearAndInvalidateCoursesOptions()); + promises.push(this.courseOptionsDelegate.clearAndInvalidateCoursesOptions()); Promise.all(promises).finally(() => { diff --git a/src/core/courses/pages/my-overview/my-overview.ts b/src/core/courses/pages/my-overview/my-overview.ts index 15231e6f7..c9752eea8 100644 --- a/src/core/courses/pages/my-overview/my-overview.ts +++ b/src/core/courses/pages/my-overview/my-overview.ts @@ -17,9 +17,9 @@ import { IonicPage, NavController } from 'ionic-angular'; import { CoreSitesProvider } from '../../../../providers/sites'; import { CoreDomUtilsProvider } from '../../../../providers/utils/dom'; import { CoreCoursesProvider } from '../../providers/courses'; -import { CoreCoursesDelegate } from '../../providers/delegate'; import { CoreCoursesMyOverviewProvider } from '../../providers/my-overview'; import { CoreCourseHelperProvider } from '../../../course/providers/helper'; +import { CoreCourseOptionsDelegate } from '../../../course/providers/options-delegate'; import { CoreSiteHomeProvider } from '../../../sitehome/providers/sitehome'; import * as moment from 'moment'; @@ -71,7 +71,7 @@ export class CoreCoursesMyOverviewPage implements OnDestroy { constructor(private navCtrl: NavController, private coursesProvider: CoreCoursesProvider, private domUtils: CoreDomUtilsProvider, private myOverviewProvider: CoreCoursesMyOverviewProvider, private courseHelper: CoreCourseHelperProvider, private sitesProvider: CoreSitesProvider, - private siteHomeProvider: CoreSiteHomeProvider, private coursesDelegate: CoreCoursesDelegate) {} + private siteHomeProvider: CoreSiteHomeProvider, private courseOptionsDelegate: CoreCourseOptionsDelegate) {} /** * View loaded. @@ -185,7 +185,7 @@ export class CoreCoursesMyOverviewPage implements OnDestroy { }); // Load course options of the course. - return this.coursesProvider.getCoursesOptions(courseIds).then((options) => { + return this.coursesProvider.getCoursesAdminAndNavOptions(courseIds).then((options) => { courses.forEach((course) => { course.navOptions = options.navOptions[course.id]; course.admOptions = options.admOptions[course.id]; @@ -239,7 +239,7 @@ export class CoreCoursesMyOverviewPage implements OnDestroy { } promises.push(this.coursesProvider.invalidateUserCourses()); - promises.push(this.coursesDelegate.clearAndInvalidateCoursesOptions()); + promises.push(this.courseOptionsDelegate.clearAndInvalidateCoursesOptions()); return Promise.all(promises).finally(() => { switch (this.tabShown) { diff --git a/src/core/courses/providers/courses.ts b/src/core/courses/providers/courses.ts index ebb15e8d8..787e38be1 100644 --- a/src/core/courses/providers/courses.ts +++ b/src/core/courses/providers/courses.ts @@ -26,8 +26,6 @@ export class CoreCoursesProvider { public static ENROL_INVALID_KEY = 'CoreCoursesEnrolInvalidKey'; public static EVENT_MY_COURSES_UPDATED = 'courses_my_courses_updated'; public static EVENT_MY_COURSES_REFRESHED = 'courses_my_courses_refreshed'; - public static ACCESS_GUEST = 'courses_access_guest'; - public static ACCESS_DEFAULT = 'courses_access_default'; protected ROOT_CACHE_KEY = 'mmCourses:'; protected logger; @@ -73,13 +71,13 @@ export class CoreCoursesProvider { } /** - * Given a list of course IDs to get course options, return the list of courseIds to use. + * Given a list of course IDs to get course admin and nav options, return the list of courseIds to use. * * @param {number[]} courseIds Course IDs. * @param {string} [siteId] Site Id. If not defined, use current site. * @return {Promise} Promise resolved with the list of course IDs. */ - protected getCourseIdsForOptions(courseIds: number[], siteId?: string) : Promise { + protected getCourseIdsForAdminAndNavOptions(courseIds: number[], siteId?: string) : Promise { return this.sitesProvider.getSite(siteId).then((site) => { const siteHomeId = site.getSiteHomeId(); @@ -364,11 +362,11 @@ export class CoreCoursesProvider { * @param {string} [siteId] Site ID. If not defined, current site. * @return {Promise<{navOptions: any, admOptions: any}>} Promise resolved with the options for each course. */ - getCoursesOptions(courseIds: number[], siteId?: string) : Promise<{navOptions: any, admOptions: any}> { + getCoursesAdminAndNavOptions(courseIds: number[], siteId?: string) : Promise<{navOptions: any, admOptions: any}> { siteId = siteId || this.sitesProvider.getCurrentSiteId(); // Get the list of courseIds to use based on the param. - return this.getCourseIdsForOptions(courseIds, siteId).then((courseIds) => { + return this.getCourseIdsForAdminAndNavOptions(courseIds, siteId).then((courseIds) => { let promises = [], navOptions, admOptions; @@ -431,7 +429,7 @@ export class CoreCoursesProvider { return site.read('core_course_get_user_administration_options', params, preSets).then((response) => { // Format returned data. - return this.formatUserOptions(response.courses); + return this.formatUserAdminOrNavOptions(response.courses); }); }); } @@ -473,7 +471,7 @@ export class CoreCoursesProvider { return site.read('core_course_get_user_navigation_options', params, preSets).then((response) => { // Format returned data. - return this.formatUserOptions(response.courses); + return this.formatUserAdminOrNavOptions(response.courses); }); }); } @@ -484,7 +482,7 @@ export class CoreCoursesProvider { * @param {any[]} courses Navigation or administration options for each course. * @return {any} Formatted options. */ - protected formatUserOptions(courses: any[]) : any { + protected formatUserAdminOrNavOptions(courses: any[]) : any { let result = {}; courses.forEach((course) => { @@ -619,10 +617,10 @@ export class CoreCoursesProvider { * @param {string} [siteId] Site ID to invalidate. If not defined, use current site. * @return {Promise} Promise resolved when the data is invalidated. */ - invalidateCoursesOptions(courseIds: number[], siteId?: string) : Promise { + invalidateCoursesAdminAndNavOptions(courseIds: number[], siteId?: string) : Promise { siteId = siteId || this.sitesProvider.getCurrentSiteId(); - return this.getCourseIdsForOptions(courseIds, siteId).then((ids) => { + return this.getCourseIdsForAdminAndNavOptions(courseIds, siteId).then((ids) => { let promises = []; promises.push(this.invalidateUserAdministrationOptionsForCourses(ids, siteId)); diff --git a/src/core/user/providers/user-delegate.ts b/src/core/user/providers/user-delegate.ts index c6769b824..d32ca5caa 100644 --- a/src/core/user/providers/user-delegate.ts +++ b/src/core/user/providers/user-delegate.ts @@ -145,7 +145,7 @@ export class CoreUserDelegate extends CoreDelegate { return course.id; }); - return this.coursesProvider.getCoursesOptions(courseIds).then((options) => { + return this.coursesProvider.getCoursesAdminAndNavOptions(courseIds).then((options) => { // For backwards compatibility we don't modify the courseId. let courseIdForOptions = courseId || this.sitesProvider.getCurrentSiteHomeId(), navOptions = options.navOptions[courseIdForOptions],