diff --git a/src/addon/calendar/pages/edit-event/edit-event.html b/src/addon/calendar/pages/edit-event/edit-event.html
index f57a84915..9d79a7e5d 100644
--- a/src/addon/calendar/pages/edit-event/edit-event.html
+++ b/src/addon/calendar/pages/edit-event/edit-event.html
@@ -1,6 +1,6 @@
-
+ {{ title | translate }}
@@ -44,7 +44,7 @@
{{ 'core.course' | translate }}
-
+ {{ course.fullname }}
@@ -54,7 +54,7 @@
{{ 'core.course' | translate }}
-
+ {{ course.fullname }}
diff --git a/src/addon/calendar/pages/edit-event/edit-event.ts b/src/addon/calendar/pages/edit-event/edit-event.ts
index 97049a034..edda98102 100644
--- a/src/addon/calendar/pages/edit-event/edit-event.ts
+++ b/src/addon/calendar/pages/edit-event/edit-event.ts
@@ -21,6 +21,7 @@ import { CoreGroupsProvider } from '@providers/groups';
import { CoreSitesProvider } from '@providers/sites';
import { CoreSyncProvider } from '@providers/sync';
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 { CoreCoursesProvider } from '@core/courses/providers/courses';
@@ -79,6 +80,7 @@ export class AddonCalendarEditEventPage implements OnInit, OnDestroy {
private navCtrl: NavController,
private translate: TranslateService,
private domUtils: CoreDomUtilsProvider,
+ private textUtils: CoreTextUtilsProvider,
private timeUtils: CoreTimeUtilsProvider,
private eventsProvider: CoreEventsProvider,
private groupsProvider: CoreGroupsProvider,
@@ -207,22 +209,7 @@ export class AddonCalendarEditEventPage implements OnInit, OnDestroy {
if (event) {
// Load the data in the form.
- this.eventForm.controls.name.setValue(event.name);
- this.eventForm.controls.timestart.setValue(this.timeUtils.toDatetimeFormat(event.timestart * 1000));
- this.eventForm.controls.eventtype.setValue(event.eventtype);
- this.eventForm.controls.categoryid.setValue(event.categoryid || '');
- this.eventForm.controls.courseid.setValue(event.courseid || '');
- this.eventForm.controls.groupcourseid.setValue(event.groupcourseid || '');
- this.eventForm.controls.groupid.setValue(event.groupid || '');
- this.eventForm.controls.description.setValue(event.description);
- this.eventForm.controls.location.setValue(event.location);
- this.eventForm.controls.duration.setValue(event.duration);
- this.eventForm.controls.timedurationuntil.setValue(
- this.timeUtils.toDatetimeFormat((event.timedurationuntil * 1000) || Date.now()));
- this.eventForm.controls.timedurationminutes.setValue(event.timedurationminutes || '');
- this.eventForm.controls.repeat.setValue(!!event.repeat);
- this.eventForm.controls.repeats.setValue(event.repeats || '1');
- this.eventForm.controls.repeateditall.setValue(event.repeateditall || 1);
+ return this.loadEventData(event, !!result[0]);
}
});
}));
@@ -251,12 +238,24 @@ export class AddonCalendarEditEventPage implements OnInit, OnDestroy {
});
}
- // Sort courses by name.
- this.courses = courses.sort((a, b) => {
- const compareA = a.fullname.toLowerCase(),
- compareB = b.fullname.toLowerCase();
+ // Format the name of the courses.
+ const subPromises = [];
+ courses.forEach((course) => {
+ subPromises.push(this.textUtils.formatText(course.fullname).then((text) => {
+ course.fullname = text;
+ }).catch(() => {
+ // Ignore errors.
+ }));
+ });
- return compareA.localeCompare(compareB);
+ return Promise.all(subPromises).then(() => {
+ // Sort courses by name.
+ this.courses = courses.sort((a, b) => {
+ const compareA = a.fullname.toLowerCase(),
+ compareB = b.fullname.toLowerCase();
+
+ return compareA.localeCompare(compareB);
+ });
});
}));
}
@@ -285,6 +284,61 @@ export class AddonCalendarEditEventPage implements OnInit, OnDestroy {
});
}
+ /**
+ * Load an event data into the form.
+ *
+ * @param {any} event Event data.
+ * @param {boolean} isOffline Whether the data is from offline or not.
+ * @return {Promise} Promise resolved when done.
+ */
+ protected loadEventData(event: any, isOffline: boolean): Promise {
+ const courseId = event.course ? event.course.id : event.courseid;
+
+ this.eventForm.controls.name.setValue(event.name);
+ this.eventForm.controls.timestart.setValue(this.timeUtils.toDatetimeFormat(event.timestart * 1000));
+ this.eventForm.controls.eventtype.setValue(event.eventtype);
+ this.eventForm.controls.categoryid.setValue(event.categoryid || '');
+ this.eventForm.controls.courseid.setValue(courseId || '');
+ this.eventForm.controls.groupcourseid.setValue(event.groupcourseid || courseId || '');
+ this.eventForm.controls.groupid.setValue(event.groupid || '');
+ this.eventForm.controls.description.setValue(event.description);
+ this.eventForm.controls.location.setValue(event.location);
+
+ if (isOffline) {
+ // It's an offline event, use the data as it is.
+ this.eventForm.controls.duration.setValue(event.duration);
+ this.eventForm.controls.timedurationuntil.setValue(
+ this.timeUtils.toDatetimeFormat((event.timedurationuntil * 1000) || Date.now()));
+ this.eventForm.controls.timedurationminutes.setValue(event.timedurationminutes || '');
+ this.eventForm.controls.repeat.setValue(!!event.repeat);
+ this.eventForm.controls.repeats.setValue(event.repeats || '1');
+ this.eventForm.controls.repeateditall.setValue(event.repeateditall || 1);
+ } else {
+ // Online event, we'll have to calculate the data.
+
+ if (event.timeduration > 0) {
+ this.eventForm.controls.duration.setValue(1);
+ this.eventForm.controls.timedurationuntil.setValue(this.timeUtils.toDatetimeFormat(
+ (event.timestart + event.timeduration) * 1000));
+ } else {
+ // No duration.
+ this.eventForm.controls.duration.setValue(0);
+ this.eventForm.controls.timedurationuntil.setValue(this.timeUtils.toDatetimeFormat());
+ }
+
+ this.eventForm.controls.timedurationminutes.setValue('');
+ this.eventForm.controls.repeat.setValue(!!event.repeatid);
+ this.eventForm.controls.repeats.setValue(event.eventcount || '1');
+ this.eventForm.controls.repeateditall.setValue(1);
+ }
+
+ if (event.eventtype == 'group' && courseId) {
+ return this.loadGroups(courseId);
+ }
+
+ return Promise.resolve();
+ }
+
/**
* Pull to refresh.
*
@@ -327,20 +381,33 @@ export class AddonCalendarEditEventPage implements OnInit, OnDestroy {
}
const modal = this.domUtils.showModalLoading();
- this.loadingGroups = true;
- this.groupsProvider.getUserGroupsInCourse(courseId).then((groups) => {
- this.groups = groups;
- this.courseGroupSet = true;
+ this.loadGroups(courseId).then(() => {
this.groupControl.setValue('');
}).catch((error) => {
this.domUtils.showErrorModalDefault(error, 'Error getting data.');
}).finally(() => {
- this.loadingGroups = false;
modal.dismiss();
});
}
+ /**
+ * Load groups of a certain course.
+ *
+ * @param {number} courseId Course ID.
+ * @return {Promise} Promise resolved when done.
+ */
+ protected loadGroups(courseId: number): Promise {
+ this.loadingGroups = true;
+
+ return this.groupsProvider.getUserGroupsInCourse(courseId).then((groups) => {
+ this.groups = groups;
+ this.courseGroupSet = true;
+ }).finally(() => {
+ this.loadingGroups = false;
+ });
+ }
+
/**
* Show or hide advanced form fields.
*/
diff --git a/src/addon/calendar/pages/event/event.html b/src/addon/calendar/pages/event/event.html
index 93e5bd285..2608581ae 100644
--- a/src/addon/calendar/pages/event/event.html
+++ b/src/addon/calendar/pages/event/event.html
@@ -40,10 +40,10 @@
{{ 'core.course' | translate}}
-
+
{{ 'core.group' | translate}}
{{ groupName }}
-
+
{{ 'core.category' | translate}}