MOBILE-2554 course: Show all sections if non is defined

main
Pau Ferrer Ocaña 2018-09-18 14:51:21 +02:00
parent 19291084d9
commit 2799bcdd5e
4 changed files with 19 additions and 31 deletions

View File

@ -47,8 +47,8 @@ export class CoreCourseFormatWeeksHandler implements CoreCourseFormatHandler {
const now = this.timeUtils.timestamp();
if (now < course.startdate || (course.enddate && now > course.enddate)) {
// Course hasn't started yet or it has ended already. Return the first section.
return sections[1];
// Course hasn't started yet or it has ended already. Return all sections.
return sections[0];
}
for (let i = 0; i < sections.length; i++) {
@ -63,8 +63,8 @@ export class CoreCourseFormatWeeksHandler implements CoreCourseFormatHandler {
}
}
// The section wasn't found, return the first section.
return sections[1];
// The section wasn't found, return all sections.
return sections[0];
}
/**

View File

@ -98,38 +98,28 @@ export class CoreCourseFormatDefaultHandler implements CoreCourseFormatHandler {
*/
getCurrentSection(course: any, sections: any[]): any | Promise<any> {
if (!this.coursesProvider.isGetCoursesByFieldAvailable()) {
// Cannot get the current section, return the first one.
if (sections[0].id != CoreCourseProvider.ALL_SECTIONS_ID) {
// Cannot get the current section, return all of them.
return sections[0];
}
return sections[1];
}
// We need the "marker" to determine the current section.
return this.coursesProvider.getCoursesByField('id', course.id).catch(() => {
// Ignore errors.
}).then((courses) => {
if (courses && courses[0]) {
if (courses && courses[0] && courses[0].marker > 0) {
// Find the marked section.
const course = courses[0];
for (let i = 0; i < sections.length; i++) {
const section = sections[i];
if (section.section == course.marker) {
return section;
}
}
}
const course = courses[0],
section = sections.find((sect) => {
return sect.section == course.marker;
});
// Marked section not found or we couldn't retrieve the marker. Return the first section.
for (let i = 0; i < sections.length; i++) {
const section = sections[i];
if (section.id != CoreCourseProvider.ALL_SECTIONS_ID) {
if (section) {
return section;
}
}
return Promise.reject(null);
// Marked section not found or we couldn't retrieve the marker. Return all sections.
return sections[0];
});
}

View File

@ -17,7 +17,6 @@ import { NavController } from 'ionic-angular';
import { CoreEventsProvider } from '@providers/events';
import { CoreLoggerProvider } from '@providers/logger';
import { CoreSitesProvider } from '@providers/sites';
import { CoreCourseProvider } from './course';
import { CoreCourseFormatDefaultHandler } from './default-format';
import { CoreDelegate, CoreDelegateHandler } from '@classes/delegate';
@ -285,14 +284,11 @@ export class CoreCourseFormatDelegate extends CoreDelegate {
* @return {Promise<any>} Promise resolved with current section.
*/
getCurrentSection(course: any, sections: any[]): Promise<any> {
// Convert the result to a Promise if it isn't.
return Promise.resolve(this.executeFunctionOnEnabled(course.format, 'getCurrentSection', [course, sections])).catch(() => {
// This function should never fail. Just return the first section.
if (sections[0].id != CoreCourseProvider.ALL_SECTIONS_ID) {
// This function should never fail. Just return all the sections.
return sections[0];
}
return sections[1];
});
}

View File

@ -390,6 +390,7 @@ export class CoreCoursesProvider {
* @param {any} [value] The value to match.
* @param {string} [siteId] Site ID. If not defined, use current site.
* @return {Promise<any[]>} Promise resolved with the courses.
* @since 3.2
*/
getCoursesByField(field?: string, value?: any, siteId?: string): Promise<any[]> {
siteId = siteId || this.sitesProvider.getCurrentSiteId();
@ -473,6 +474,7 @@ export class CoreCoursesProvider {
* Check if get courses by field WS is available.
*
* @return {boolean} Whether get courses by field is available.
* @since 3.2
*/
isGetCoursesByFieldAvailable(): boolean {
return this.sitesProvider.wsAvailableInCurrentSite('core_course_get_courses_by_field');