diff --git a/scripts/langindex.json b/scripts/langindex.json
index 2d2e2f376..4553ed0ac 100644
--- a/scripts/langindex.json
+++ b/scripts/langindex.json
@@ -1979,12 +1979,10 @@
"core.minutes": "moodle",
"core.misc": "admin",
"core.mod_assign": "assign/pluginname",
- "core.mod_assignment": "assignment/pluginname",
"core.mod_book": "book/pluginname",
"core.mod_chat": "chat/pluginname",
"core.mod_choice": "choice/pluginname",
"core.mod_data": "data/pluginname",
- "core.mod_database": "data/pluginname",
"core.mod_external-tool": "lti/pluginname",
"core.mod_feedback": "feedback/pluginname",
"core.mod_file": "moodle/file",
@@ -1992,7 +1990,6 @@
"core.mod_forum": "forum/pluginname",
"core.mod_glossary": "glossary/pluginname",
"core.mod_h5pactivity": "h5pactivity/pluginname",
- "core.mod_ims": "imscp/pluginname",
"core.mod_imscp": "imscp/pluginname",
"core.mod_label": "label/pluginname",
"core.mod_lesson": "lesson/pluginname",
diff --git a/src/addons/block/timeline/components/events/events.scss b/src/addons/block/timeline/components/events/events.scss
index 8ea49fcb1..8be5516b3 100644
--- a/src/addons/block/timeline/components/events/events.scss
+++ b/src/addons/block/timeline/components/events/events.scss
@@ -19,6 +19,7 @@ h4.core-bold {
.addon-block-timeline-activity core-mod-icon {
--margin-end: 0.5rem;
+ --margin-vertical: 0;
}
.addon-block-timeline-activity-time,
diff --git a/src/addons/calendar/calendar-common.scss b/src/addons/calendar/calendar-common.scss
index 8fdaaeefe..c12303e90 100644
--- a/src/addons/calendar/calendar-common.scss
+++ b/src/addons/calendar/calendar-common.scss
@@ -6,11 +6,7 @@
> ion-icon {
color: white;
border-radius: 50%;
- padding: 6px;
- }
-
- > core-mod-icon {
- padding: 6px;
+ padding: 0.7rem;
}
&.addon-calendar-eventtype-category > ion-icon {
@@ -30,4 +26,4 @@
}
}
-}
\ No newline at end of file
+}
diff --git a/src/addons/calendar/components/calendar/addon-calendar-calendar.html b/src/addons/calendar/components/calendar/addon-calendar-calendar.html
index ca1e7dc08..9d072a910 100644
--- a/src/addons/calendar/components/calendar/addon-calendar-calendar.html
+++ b/src/addons/calendar/components/calendar/addon-calendar-calendar.html
@@ -81,13 +81,10 @@
{{ event.timestart * 1000 | coreFormatDate: timeFormat }}
-
-
{{ 'addon.calendar.type' + event.formattedType | translate }}
-
+
{{ event.iconTitle }}
diff --git a/src/addons/calendar/components/calendar/calendar.scss b/src/addons/calendar/components/calendar/calendar.scss
index 24e0c2e99..f293233fc 100644
--- a/src/addons/calendar/components/calendar/calendar.scss
+++ b/src/addons/calendar/components/calendar/calendar.scss
@@ -148,17 +148,6 @@
}
}
- core-mod-icon {
- margin-right: 1px;
- margin-left: 1px;
- --size: 16px;
- display: inline-block;
- vertical-align: bottom;
- ::ng-deep img {
- display: block;
- }
- }
-
ion-slide {
display: block;
font-size: inherit;
diff --git a/src/addons/calendar/pages/day/day.html b/src/addons/calendar/pages/day/day.html
index 01a7daceb..62939f984 100644
--- a/src/addons/calendar/pages/day/day.html
+++ b/src/addons/calendar/pages/day/day.html
@@ -68,7 +68,7 @@
(click)="gotoEvent(event.id)" [class.item-dimmed]="event.ispast"
[ngClass]="['addon-calendar-eventtype-'+event.eventtype]" button detail="true">
+ [modname]="event.modulename" [componentId]="event.instance">
diff --git a/src/addons/calendar/pages/event/event.html b/src/addons/calendar/pages/event/event.html
index 8744742c3..bcdd07a0e 100644
--- a/src/addons/calendar/pages/event/event.html
+++ b/src/addons/calendar/pages/event/event.html
@@ -1,18 +1,10 @@
-
+
-
-
-
-
- {{ 'addon.calendar.type' + event.formattedType | translate }}
- {{ event.iconTitle }}
-
@@ -47,79 +39,96 @@
-
-
-
-
- {{ 'addon.calendar.when' | translate }}
-
+
+
+
+
+
+
+
+ {{ 'addon.calendar.type' + event.formattedType | translate }}
+ {{ event.iconTitle }}
+
+
+
+
+
+
+
+
+
+ {{ 'addon.calendar.when' | translate }}
+
+
+
+ {{ 'core.deletedoffline' | translate }}
+
+
+
+
+ {{ 'addon.calendar.eventtype' | translate }}
+ {{ 'addon.calendar.type' + event.formattedType | translate }}
+
+
+
+
+ {{ 'core.course' | translate}}
+
+
+
+
+
+
+
+
+ {{ 'core.group' | translate}}
+ {{ groupName }}
+
+
+
+
+ {{ 'core.category' | translate}}
+
+
+
+
+
+
+
+
+ {{ 'core.description' | translate}}
+
+
-
-
- {{ 'core.deletedoffline' | translate }}
-
-
-
-
- {{ 'addon.calendar.eventtype' | translate }}
- {{ 'addon.calendar.type' + event.formattedType | translate }}
-
-
-
-
- {{ 'core.course' | translate}}
-
-
-
-
-
-
-
-
- {{ 'core.group' | translate}}
- {{ groupName }}
-
-
-
-
- {{ 'core.category' | translate}}
-
-
-
-
-
-
-
-
- {{ 'core.description' | translate}}
-
-
+
+
+
+
+ {{ 'core.location' | translate}}
+
+
+
-
-
-
-
-
- {{ 'core.location' | translate}}
-
-
-
-
-
-
-
-
-
-
- {{ 'addon.calendar.gotoactivity' | translate }}
-
-
-
-
-
+
+
+
+
+
+
+
+ {{ 'addon.calendar.gotoactivity' | translate }}
+
+
+
+
-
+
{{ 'addon.calendar.reminders' | translate }}
diff --git a/src/addons/calendar/pages/event/event.page.ts b/src/addons/calendar/pages/event/event.page.ts
index e335e6b78..28c5de7e9 100644
--- a/src/addons/calendar/pages/event/event.page.ts
+++ b/src/addons/calendar/pages/event/event.page.ts
@@ -46,7 +46,7 @@ import { AddonCalendarReminderTimeModalComponent } from '@addons/calendar/compon
@Component({
selector: 'page-addon-calendar-event',
templateUrl: 'event.html',
- styleUrls: ['event.scss'],
+ styleUrls: ['../../calendar-common.scss', 'event.scss'],
})
export class AddonCalendarEventPage implements OnInit, OnDestroy {
diff --git a/src/addons/calendar/pages/event/event.scss b/src/addons/calendar/pages/event/event.scss
index 5403de162..24e862cd4 100644
--- a/src/addons/calendar/pages/event/event.scss
+++ b/src/addons/calendar/pages/event/event.scss
@@ -2,9 +2,4 @@
ion-card ion-note {
font-size: 1.6rem;
}
- h1 ion-icon, h1 img, h1 core-mod-icon {
- margin-left: 10px;
- margin-right: 10px;
- display: inline-block;
- }
}
diff --git a/src/addons/messages/components/conversation-info/conversation-info.html b/src/addons/messages/components/conversation-info/conversation-info.html
index 59f120624..c72e7b344 100644
--- a/src/addons/messages/components/conversation-info/conversation-info.html
+++ b/src/addons/messages/components/conversation-info/conversation-info.html
@@ -20,7 +20,7 @@
+ onError="this.src='assets/img/group-avatar.svg'">
diff --git a/src/addons/messages/pages/discussion/discussion.html b/src/addons/messages/pages/discussion/discussion.html
index 06978fd47..2c85e5dbd 100644
--- a/src/addons/messages/pages/discussion/discussion.html
+++ b/src/addons/messages/pages/discussion/discussion.html
@@ -6,7 +6,7 @@
+ onError="this.src='assets/img/group-avatar.svg'" core-external-content role="presentation" [siteId]="siteId || null">
diff --git a/src/addons/messages/pages/group-conversations/group-conversations.html b/src/addons/messages/pages/group-conversations/group-conversations.html
index bfd14752d..5d6e5b57b 100644
--- a/src/addons/messages/pages/group-conversations/group-conversations.html
+++ b/src/addons/messages/pages/group-conversations/group-conversations.html
@@ -151,7 +151,7 @@
+ onError="this.src='assets/img/group-avatar.svg'">
diff --git a/src/addons/mod/assign/services/handlers/module.ts b/src/addons/mod/assign/services/handlers/module.ts
index 7b1395e0f..bb8f569fd 100644
--- a/src/addons/mod/assign/services/handlers/module.ts
+++ b/src/addons/mod/assign/services/handlers/module.ts
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { Injectable, Type } from '@angular/core';
import { CoreCourseModuleHandler } from '@features/course/services/module-delegate';
import { AddonModAssignIndexComponent } from '../../components/index';
@@ -44,6 +44,7 @@ export class AddonModAssignModuleHandlerService extends CoreModuleHandlerBase im
[CoreConstants.FEATURE_ADVANCED_GRADING]: true,
[CoreConstants.FEATURE_PLAGIARISM]: true,
[CoreConstants.FEATURE_COMMENT]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_ASSESSMENT,
};
/**
diff --git a/src/addons/mod/bigbluebuttonbn/services/handlers/module.ts b/src/addons/mod/bigbluebuttonbn/services/handlers/module.ts
index 3cab8b60f..ee71b6308 100644
--- a/src/addons/mod/bigbluebuttonbn/services/handlers/module.ts
+++ b/src/addons/mod/bigbluebuttonbn/services/handlers/module.ts
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { Injectable, Type } from '@angular/core';
import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler';
import { CoreCourseModuleData } from '@features/course/services/course-helper';
@@ -45,6 +45,7 @@ export class AddonModBBBModuleHandlerService extends CoreModuleHandlerBase imple
[CoreConstants.FEATURE_GRADE_OUTCOMES]: true,
[CoreConstants.FEATURE_BACKUP_MOODLE2]: true,
[CoreConstants.FEATURE_SHOW_DESCRIPTION]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_COMMUNICATION,
};
/**
diff --git a/src/addons/mod/book/services/handlers/module.ts b/src/addons/mod/book/services/handlers/module.ts
index ca5fcdd4d..322737a81 100644
--- a/src/addons/mod/book/services/handlers/module.ts
+++ b/src/addons/mod/book/services/handlers/module.ts
@@ -15,7 +15,7 @@
import { Injectable, Type } from '@angular/core';
import { AddonModBookIndexComponent } from '../../components/index';
import { AddonModBook } from '../book';
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { CoreCourseModuleHandler } from '@features/course/services/module-delegate';
import { makeSingleton } from '@singletons';
import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler';
@@ -42,6 +42,7 @@ export class AddonModBookModuleHandlerService extends CoreModuleHandlerBase impl
[CoreConstants.FEATURE_GRADE_OUTCOMES]: false,
[CoreConstants.FEATURE_BACKUP_MOODLE2]: true,
[CoreConstants.FEATURE_SHOW_DESCRIPTION]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_CONTENT,
};
/**
diff --git a/src/addons/mod/chat/services/handlers/module.ts b/src/addons/mod/chat/services/handlers/module.ts
index 16cfa87aa..c8f32227e 100644
--- a/src/addons/mod/chat/services/handlers/module.ts
+++ b/src/addons/mod/chat/services/handlers/module.ts
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { Injectable, Type } from '@angular/core';
import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler';
import { CoreCourseModuleHandler } from '@features/course/services/module-delegate';
@@ -40,6 +40,7 @@ export class AddonModChatModuleHandlerService extends CoreModuleHandlerBase impl
[CoreConstants.FEATURE_GRADE_OUTCOMES]: true,
[CoreConstants.FEATURE_BACKUP_MOODLE2]: true,
[CoreConstants.FEATURE_SHOW_DESCRIPTION]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_COMMUNICATION,
};
/**
diff --git a/src/addons/mod/choice/services/handlers/module.ts b/src/addons/mod/choice/services/handlers/module.ts
index 532204f81..70e3a3834 100644
--- a/src/addons/mod/choice/services/handlers/module.ts
+++ b/src/addons/mod/choice/services/handlers/module.ts
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { Injectable, Type } from '@angular/core';
import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler';
import { CoreCourseModuleHandler } from '@features/course/services/module-delegate';
@@ -41,6 +41,7 @@ export class AddonModChoiceModuleHandlerService extends CoreModuleHandlerBase im
[CoreConstants.FEATURE_GRADE_OUTCOMES]: false,
[CoreConstants.FEATURE_BACKUP_MOODLE2]: true,
[CoreConstants.FEATURE_SHOW_DESCRIPTION]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_COMMUNICATION,
};
/**
diff --git a/src/addons/mod/data/services/handlers/module.ts b/src/addons/mod/data/services/handlers/module.ts
index dc930ee0f..c170d8779 100644
--- a/src/addons/mod/data/services/handlers/module.ts
+++ b/src/addons/mod/data/services/handlers/module.ts
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { Injectable, Type } from '@angular/core';
import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler';
import { CoreCourseModuleHandler } from '@features/course/services/module-delegate';
@@ -43,6 +43,7 @@ export class AddonModDataModuleHandlerService extends CoreModuleHandlerBase impl
[CoreConstants.FEATURE_SHOW_DESCRIPTION]: true,
[CoreConstants.FEATURE_RATE]: true,
[CoreConstants.FEATURE_COMMENT]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_COLLABORATION,
};
/**
diff --git a/src/addons/mod/feedback/services/handlers/module.ts b/src/addons/mod/feedback/services/handlers/module.ts
index da1fedf27..68e0164fe 100644
--- a/src/addons/mod/feedback/services/handlers/module.ts
+++ b/src/addons/mod/feedback/services/handlers/module.ts
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { Injectable, Type } from '@angular/core';
import { CoreCourseModuleHandler } from '@features/course/services/module-delegate';
import { makeSingleton } from '@singletons';
@@ -41,6 +41,7 @@ export class AddonModFeedbackModuleHandlerService extends CoreModuleHandlerBase
[CoreConstants.FEATURE_GRADE_OUTCOMES]: false,
[CoreConstants.FEATURE_BACKUP_MOODLE2]: true,
[CoreConstants.FEATURE_SHOW_DESCRIPTION]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_COMMUNICATION,
};
/**
diff --git a/src/addons/mod/folder/services/handlers/module.ts b/src/addons/mod/folder/services/handlers/module.ts
index b127b468c..63dbc0df4 100644
--- a/src/addons/mod/folder/services/handlers/module.ts
+++ b/src/addons/mod/folder/services/handlers/module.ts
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { Injectable, Type } from '@angular/core';
import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler';
import { CoreCourseModuleHandler } from '@features/course/services/module-delegate';
@@ -41,6 +41,7 @@ export class AddonModFolderModuleHandlerService extends CoreModuleHandlerBase im
[CoreConstants.FEATURE_GRADE_OUTCOMES]: false,
[CoreConstants.FEATURE_BACKUP_MOODLE2]: true,
[CoreConstants.FEATURE_SHOW_DESCRIPTION]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_CONTENT,
};
/**
diff --git a/src/addons/mod/forum/services/handlers/module.ts b/src/addons/mod/forum/services/handlers/module.ts
index f4ad76e60..a750b83b6 100644
--- a/src/addons/mod/forum/services/handlers/module.ts
+++ b/src/addons/mod/forum/services/handlers/module.ts
@@ -19,7 +19,7 @@ import { CoreEvents } from '@singletons/events';
import { CoreSites } from '@services/sites';
import { CoreUtils } from '@services/utils/utils';
import { CoreCourseModuleHandler, CoreCourseModuleHandlerData } from '@features/course/services/module-delegate';
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { AddonModForumIndexComponent } from '../../components/index';
import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler';
import { CoreCourseModuleData } from '@features/course/services/course-helper';
@@ -48,6 +48,7 @@ export class AddonModForumModuleHandlerService extends CoreModuleHandlerBase imp
[CoreConstants.FEATURE_SHOW_DESCRIPTION]: true,
[CoreConstants.FEATURE_RATE]: true,
[CoreConstants.FEATURE_PLAGIARISM]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_COLLABORATION,
};
/**
diff --git a/src/addons/mod/glossary/services/handlers/module.ts b/src/addons/mod/glossary/services/handlers/module.ts
index b7eb1a0f6..a5240ab82 100644
--- a/src/addons/mod/glossary/services/handlers/module.ts
+++ b/src/addons/mod/glossary/services/handlers/module.ts
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { Injectable, Type } from '@angular/core';
import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler';
import { CoreCourseModuleHandler } from '@features/course/services/module-delegate';
@@ -43,6 +43,7 @@ export class AddonModGlossaryModuleHandlerService extends CoreModuleHandlerBase
[CoreConstants.FEATURE_SHOW_DESCRIPTION]: true,
[CoreConstants.FEATURE_RATE]: true,
[CoreConstants.FEATURE_PLAGIARISM]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_COLLABORATION,
};
/**
diff --git a/src/addons/mod/h5pactivity/services/handlers/module.ts b/src/addons/mod/h5pactivity/services/handlers/module.ts
index dfa1c7900..c6473702b 100644
--- a/src/addons/mod/h5pactivity/services/handlers/module.ts
+++ b/src/addons/mod/h5pactivity/services/handlers/module.ts
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { Injectable, Type } from '@angular/core';
import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler';
import { CoreCourseModuleHandler } from '@features/course/services/module-delegate';
@@ -42,6 +42,7 @@ export class AddonModH5PActivityModuleHandlerService extends CoreModuleHandlerBa
[CoreConstants.FEATURE_GRADE_HAS_GRADE]: true,
[CoreConstants.FEATURE_GRADE_OUTCOMES]: true,
[CoreConstants.FEATURE_BACKUP_MOODLE2]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_CONTENT,
};
/**
diff --git a/src/addons/mod/imscp/services/handlers/module.ts b/src/addons/mod/imscp/services/handlers/module.ts
index d1dea4491..369c111cc 100644
--- a/src/addons/mod/imscp/services/handlers/module.ts
+++ b/src/addons/mod/imscp/services/handlers/module.ts
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { Injectable, Type } from '@angular/core';
import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler';
import { CoreCourseModuleHandler } from '@features/course/services/module-delegate';
@@ -42,6 +42,7 @@ export class AddonModImscpModuleHandlerService extends CoreModuleHandlerBase imp
[CoreConstants.FEATURE_GRADE_OUTCOMES]: false,
[CoreConstants.FEATURE_BACKUP_MOODLE2]: true,
[CoreConstants.FEATURE_SHOW_DESCRIPTION]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_CONTENT,
};
/**
diff --git a/src/addons/mod/label/services/handlers/module.ts b/src/addons/mod/label/services/handlers/module.ts
index f7cc33d6a..ec9ce00a2 100644
--- a/src/addons/mod/label/services/handlers/module.ts
+++ b/src/addons/mod/label/services/handlers/module.ts
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { Injectable } from '@angular/core';
import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler';
import { CoreCourseModuleData } from '@features/course/services/course-helper';
@@ -40,6 +40,7 @@ export class AddonModLabelModuleHandlerService extends CoreModuleHandlerBase imp
[CoreConstants.FEATURE_BACKUP_MOODLE2]: true,
[CoreConstants.FEATURE_SHOW_DESCRIPTION]: true,
[CoreConstants.FEATURE_NO_VIEW_LINK]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_CONTENT,
};
/**
diff --git a/src/addons/mod/lesson/services/handlers/module.ts b/src/addons/mod/lesson/services/handlers/module.ts
index 7563848e7..897b65381 100644
--- a/src/addons/mod/lesson/services/handlers/module.ts
+++ b/src/addons/mod/lesson/services/handlers/module.ts
@@ -14,7 +14,7 @@
import { Injectable, Type } from '@angular/core';
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { CoreCourseModuleHandler } from '@features/course/services/module-delegate';
import { AddonModLessonIndexComponent } from '../../components/index';
import { makeSingleton } from '@singletons';
@@ -42,6 +42,7 @@ export class AddonModLessonModuleHandlerService extends CoreModuleHandlerBase im
[CoreConstants.FEATURE_GRADE_OUTCOMES]: true,
[CoreConstants.FEATURE_BACKUP_MOODLE2]: true,
[CoreConstants.FEATURE_SHOW_DESCRIPTION]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_CONTENT,
};
/**
diff --git a/src/addons/mod/lti/services/handlers/module.ts b/src/addons/mod/lti/services/handlers/module.ts
index 7dcf9b6ee..7e80a8f53 100644
--- a/src/addons/mod/lti/services/handlers/module.ts
+++ b/src/addons/mod/lti/services/handlers/module.ts
@@ -14,7 +14,7 @@
import { Injectable, Type } from '@angular/core';
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { CoreCourseModuleHandler, CoreCourseModuleHandlerData } from '@features/course/services/module-delegate';
import { CoreCourseModuleData } from '@features/course/services/course-helper';
import { makeSingleton } from '@singletons';
@@ -43,6 +43,7 @@ export class AddonModLtiModuleHandlerService extends CoreModuleHandlerBase imple
[CoreConstants.FEATURE_GRADE_OUTCOMES]: true,
[CoreConstants.FEATURE_BACKUP_MOODLE2]: true,
[CoreConstants.FEATURE_SHOW_DESCRIPTION]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_CONTENT,
};
/**
diff --git a/src/addons/mod/page/services/handlers/module.ts b/src/addons/mod/page/services/handlers/module.ts
index 688d9eabc..9870c74cf 100644
--- a/src/addons/mod/page/services/handlers/module.ts
+++ b/src/addons/mod/page/services/handlers/module.ts
@@ -15,7 +15,7 @@
import { Injectable, Type } from '@angular/core';
import { AddonModPage } from '../page';
import { CoreCourseModuleHandler } from '@features/course/services/module-delegate';
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { AddonModPageIndexComponent } from '../../components/index';
import { makeSingleton } from '@singletons';
import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler';
@@ -42,6 +42,7 @@ export class AddonModPageModuleHandlerService extends CoreModuleHandlerBase impl
[CoreConstants.FEATURE_GRADE_OUTCOMES]: false,
[CoreConstants.FEATURE_BACKUP_MOODLE2]: true,
[CoreConstants.FEATURE_SHOW_DESCRIPTION]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_CONTENT,
};
/**
diff --git a/src/addons/mod/quiz/services/handlers/module.ts b/src/addons/mod/quiz/services/handlers/module.ts
index 70cad4de5..7ca4c9022 100644
--- a/src/addons/mod/quiz/services/handlers/module.ts
+++ b/src/addons/mod/quiz/services/handlers/module.ts
@@ -14,7 +14,7 @@
import { Injectable, Type } from '@angular/core';
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { CoreCourseModuleHandler } from '@features/course/services/module-delegate';
import { AddonModQuizIndexComponent } from '../../components/index';
import { makeSingleton } from '@singletons';
@@ -44,6 +44,7 @@ export class AddonModQuizModuleHandlerService extends CoreModuleHandlerBase impl
[CoreConstants.FEATURE_SHOW_DESCRIPTION]: true,
[CoreConstants.FEATURE_CONTROLS_GRADE_VISIBILITY]: true,
[CoreConstants.FEATURE_USES_QUESTIONS]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_ASSESSMENT,
};
/**
diff --git a/src/addons/mod/resource/services/handlers/module.ts b/src/addons/mod/resource/services/handlers/module.ts
index 205173fe6..a889ac9ed 100644
--- a/src/addons/mod/resource/services/handlers/module.ts
+++ b/src/addons/mod/resource/services/handlers/module.ts
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { Injectable, Type } from '@angular/core';
import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler';
import { CoreCourse } from '@features/course/services/course';
@@ -50,6 +50,7 @@ export class AddonModResourceModuleHandlerService extends CoreModuleHandlerBase
[CoreConstants.FEATURE_GRADE_OUTCOMES]: false,
[CoreConstants.FEATURE_BACKUP_MOODLE2]: true,
[CoreConstants.FEATURE_SHOW_DESCRIPTION]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_CONTENT,
};
/**
@@ -92,9 +93,8 @@ export class AddonModResourceModuleHandlerService extends CoreModuleHandlerBase
},
}];
- this.getResourceData(module, courseId, handlerData).then((data) => {
- handlerData.icon = data.icon;
- handlerData.extraBadge = data.extra;
+ this.getResourceData(module, courseId, handlerData).then((extra) => {
+ handlerData.extraBadge = extra;
handlerData.extraBadgeColor = 'light';
return;
@@ -132,7 +132,7 @@ export class AddonModResourceModuleHandlerService extends CoreModuleHandlerBase
module: CoreCourseModuleData,
courseId: number,
handlerData: CoreCourseModuleHandlerData,
- ): Promise {
+ ): Promise {
const promises: Promise[] = [];
let options: AddonModResourceCustomData = {};
@@ -160,23 +160,15 @@ export class AddonModResourceModuleHandlerService extends CoreModuleHandlerBase
await Promise.all(promises);
- let mimetypeIcon = '';
const extra: string[] = [];
if (module.contentsinfo) {
// No need to use the list of files.
- const mimetype = module.contentsinfo.mimetypes[0];
- if (mimetype) {
- mimetypeIcon = CoreMimetypeUtils.getMimetypeIcon(mimetype);
- }
extra.push(CoreTextUtils.cleanTags(module.afterlink));
-
} else if (module.contents && module.contents[0]) {
const files = module.contents;
const file = files[0];
- mimetypeIcon = CoreMimetypeUtils.getFileIcon(file.filename || '');
-
if (options.showsize) {
const size = options.filedetails
? options.filedetails.size
@@ -219,36 +211,7 @@ export class AddonModResourceModuleHandlerService extends CoreModuleHandlerBase
}
}
- return {
- icon: await CoreCourse.getModuleIconSrc(module.modname, module.modicon, mimetypeIcon),
- extra: extra.join(' '),
- };
- }
-
- /**
- * @inheritdoc
- */
- async getIconSrc(module?: CoreCourseModuleData): Promise {
- if (!module) {
- return;
- }
- let mimetypeIcon = '';
-
- if (module.contentsinfo) {
- // No need to use the list of files.
- const mimetype = module.contentsinfo.mimetypes[0];
- if (mimetype) {
- mimetypeIcon = CoreMimetypeUtils.getMimetypeIcon(mimetype);
- }
-
- } else if (module.contents && module.contents[0]) {
- const files = module.contents;
- const file = files[0];
-
- mimetypeIcon = CoreMimetypeUtils.getFileIcon(file.filename || '');
- }
-
- return await CoreCourse.getModuleIconSrc(module.modname, module.modicon, mimetypeIcon);
+ return extra.join(' ');
}
/**
@@ -260,9 +223,3 @@ export class AddonModResourceModuleHandlerService extends CoreModuleHandlerBase
}
export const AddonModResourceModuleHandler = makeSingleton(AddonModResourceModuleHandlerService);
-
-type AddonResourceHandlerData = {
- icon: string;
- extra: string;
-}
-;
diff --git a/src/addons/mod/scorm/services/handlers/module.ts b/src/addons/mod/scorm/services/handlers/module.ts
index 7996d4921..aacc38544 100644
--- a/src/addons/mod/scorm/services/handlers/module.ts
+++ b/src/addons/mod/scorm/services/handlers/module.ts
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { Injectable, Type } from '@angular/core';
import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler';
import { CoreCourseModuleHandler } from '@features/course/services/module-delegate';
@@ -41,6 +41,7 @@ export class AddonModScormModuleHandlerService extends CoreModuleHandlerBase imp
[CoreConstants.FEATURE_GRADE_OUTCOMES]: true,
[CoreConstants.FEATURE_BACKUP_MOODLE2]: true,
[CoreConstants.FEATURE_SHOW_DESCRIPTION]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_CONTENT,
};
/**
diff --git a/src/addons/mod/survey/services/handlers/module.ts b/src/addons/mod/survey/services/handlers/module.ts
index 8ec3f3969..1faa1a25a 100644
--- a/src/addons/mod/survey/services/handlers/module.ts
+++ b/src/addons/mod/survey/services/handlers/module.ts
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { Injectable, Type } from '@angular/core';
import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler';
import { CoreCourseModuleHandler } from '@features/course/services/module-delegate';
@@ -41,6 +41,7 @@ export class AddonModSurveyModuleHandlerService extends CoreModuleHandlerBase im
[CoreConstants.FEATURE_GRADE_OUTCOMES]: false,
[CoreConstants.FEATURE_BACKUP_MOODLE2]: true,
[CoreConstants.FEATURE_SHOW_DESCRIPTION]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_COMMUNICATION,
};
/**
diff --git a/src/addons/mod/url/services/handlers/module.ts b/src/addons/mod/url/services/handlers/module.ts
index ed9e30713..8d7adc10e 100644
--- a/src/addons/mod/url/services/handlers/module.ts
+++ b/src/addons/mod/url/services/handlers/module.ts
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { Injectable, Type } from '@angular/core';
import { CoreContentLinksHelper } from '@features/contentlinks/services/contentlinks-helper';
import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler';
@@ -49,6 +49,7 @@ export class AddonModUrlModuleHandlerService extends CoreModuleHandlerBase imple
[CoreConstants.FEATURE_GRADE_OUTCOMES]: false,
[CoreConstants.FEATURE_BACKUP_MOODLE2]: true,
[CoreConstants.FEATURE_SHOW_DESCRIPTION]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_CONTENT,
};
/**
diff --git a/src/addons/mod/wiki/services/handlers/module.ts b/src/addons/mod/wiki/services/handlers/module.ts
index 33b5af3aa..3bd58ebd1 100644
--- a/src/addons/mod/wiki/services/handlers/module.ts
+++ b/src/addons/mod/wiki/services/handlers/module.ts
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { Injectable, Type } from '@angular/core';
import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler';
import { CoreCourseModuleHandler } from '@features/course/services/module-delegate';
@@ -42,6 +42,7 @@ export class AddonModWikiModuleHandlerService extends CoreModuleHandlerBase impl
[CoreConstants.FEATURE_SHOW_DESCRIPTION]: true,
[CoreConstants.FEATURE_RATE]: false,
[CoreConstants.FEATURE_COMMENT]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_COLLABORATION,
};
/**
diff --git a/src/addons/mod/workshop/services/handlers/module.ts b/src/addons/mod/workshop/services/handlers/module.ts
index 4364cc552..869c347cb 100644
--- a/src/addons/mod/workshop/services/handlers/module.ts
+++ b/src/addons/mod/workshop/services/handlers/module.ts
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import { CoreConstants } from '@/core/constants';
+import { CoreConstants, ModPurpose } from '@/core/constants';
import { Injectable, Type } from '@angular/core';
import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler';
import { CoreCourseModuleHandler } from '@features/course/services/module-delegate';
@@ -40,6 +40,7 @@ export class AddonModWorkshopModuleHandlerService extends CoreModuleHandlerBase
[CoreConstants.FEATURE_BACKUP_MOODLE2]: true,
[CoreConstants.FEATURE_SHOW_DESCRIPTION]: true,
[CoreConstants.FEATURE_PLAGIARISM]: true,
+ [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_ASSESSMENT,
};
/**
diff --git a/src/assets/img/completion/completion-auto-fail.svg b/src/assets/img/completion/completion-auto-fail.svg
index 771adf36f..68a8e5c37 100644
--- a/src/assets/img/completion/completion-auto-fail.svg
+++ b/src/assets/img/completion/completion-auto-fail.svg
@@ -1,18 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/completion/completion-auto-n-override.svg b/src/assets/img/completion/completion-auto-n-override.svg
index 6100638d0..bffccb8b8 100644
--- a/src/assets/img/completion/completion-auto-n-override.svg
+++ b/src/assets/img/completion/completion-auto-n-override.svg
@@ -1,3 +1 @@
-
-]>
\ No newline at end of file
+ height="16" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid meet" overflow="visible">
diff --git a/src/assets/img/completion/completion-auto-n.svg b/src/assets/img/completion/completion-auto-n.svg
index 6a8bc6222..fa977d2f8 100644
--- a/src/assets/img/completion/completion-auto-n.svg
+++ b/src/assets/img/completion/completion-auto-n.svg
@@ -1,15 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/completion/completion-auto-pass.svg b/src/assets/img/completion/completion-auto-pass.svg
index 44df83f15..323f4fe0e 100644
--- a/src/assets/img/completion/completion-auto-pass.svg
+++ b/src/assets/img/completion/completion-auto-pass.svg
@@ -1,17 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/completion/completion-auto-y-override.svg b/src/assets/img/completion/completion-auto-y-override.svg
index 13cf5d700..375e13266 100644
--- a/src/assets/img/completion/completion-auto-y-override.svg
+++ b/src/assets/img/completion/completion-auto-y-override.svg
@@ -1,3 +1 @@
-
-]>
\ No newline at end of file
+ height="16" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid meet" overflow="visible">
diff --git a/src/assets/img/completion/completion-auto-y.svg b/src/assets/img/completion/completion-auto-y.svg
index 14822e173..a565c8061 100644
--- a/src/assets/img/completion/completion-auto-y.svg
+++ b/src/assets/img/completion/completion-auto-y.svg
@@ -1,17 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/completion/completion-manual-n-override.svg b/src/assets/img/completion/completion-manual-n-override.svg
index cccfb99cd..9b929eafd 100644
--- a/src/assets/img/completion/completion-manual-n-override.svg
+++ b/src/assets/img/completion/completion-manual-n-override.svg
@@ -1,3 +1 @@
-
-]>
\ No newline at end of file
+ height="16" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid meet" overflow="visible">
diff --git a/src/assets/img/completion/completion-manual-n.svg b/src/assets/img/completion/completion-manual-n.svg
index f7750e25a..1503bed2e 100644
--- a/src/assets/img/completion/completion-manual-n.svg
+++ b/src/assets/img/completion/completion-manual-n.svg
@@ -1,14 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/completion/completion-manual-y-override.svg b/src/assets/img/completion/completion-manual-y-override.svg
index 69270ba3e..849e3efc9 100644
--- a/src/assets/img/completion/completion-manual-y-override.svg
+++ b/src/assets/img/completion/completion-manual-y-override.svg
@@ -1,3 +1 @@
-
-]>
\ No newline at end of file
+ height="16" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid meet" overflow="visible">
diff --git a/src/assets/img/completion/completion-manual-y.svg b/src/assets/img/completion/completion-manual-y.svg
index 3b91bdbc7..771006579 100644
--- a/src/assets/img/completion/completion-manual-y.svg
+++ b/src/assets/img/completion/completion-manual-y.svg
@@ -1,17 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/grades/agg_mean.png b/src/assets/img/grades/agg_mean.png
deleted file mode 100644
index 78c8046df..000000000
Binary files a/src/assets/img/grades/agg_mean.png and /dev/null differ
diff --git a/src/assets/img/grades/agg_mean.svg b/src/assets/img/grades/agg_mean.svg
new file mode 100644
index 000000000..ac4368d15
--- /dev/null
+++ b/src/assets/img/grades/agg_mean.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/grades/agg_sum.png b/src/assets/img/grades/agg_sum.png
deleted file mode 100644
index 7bcc0e43a..000000000
Binary files a/src/assets/img/grades/agg_sum.png and /dev/null differ
diff --git a/src/assets/img/grades/agg_sum.svg b/src/assets/img/grades/agg_sum.svg
new file mode 100644
index 000000000..9ebd5c23d
--- /dev/null
+++ b/src/assets/img/grades/agg_sum.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/group-avatar.png b/src/assets/img/group-avatar.png
deleted file mode 100644
index 2e336c95c..000000000
Binary files a/src/assets/img/group-avatar.png and /dev/null differ
diff --git a/src/assets/img/group-avatar.svg b/src/assets/img/group-avatar.svg
new file mode 100644
index 000000000..f20509e01
--- /dev/null
+++ b/src/assets/img/group-avatar.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/icons/activities.svg b/src/assets/img/icons/activities.svg
index 56243a53c..73ae35859 100644
--- a/src/assets/img/icons/activities.svg
+++ b/src/assets/img/icons/activities.svg
@@ -1,178 +1 @@
-
-
+
diff --git a/src/assets/img/icons/courses.svg b/src/assets/img/icons/courses.svg
index 7bd9cb672..3f8e18b48 100644
--- a/src/assets/img/icons/courses.svg
+++ b/src/assets/img/icons/courses.svg
@@ -1,257 +1 @@
-
-
+
diff --git a/src/assets/img/icons/empty.svg b/src/assets/img/icons/empty.svg
index a16fb7460..d13e2fd95 100644
--- a/src/assets/img/icons/empty.svg
+++ b/src/assets/img/icons/empty.svg
@@ -1,3 +1 @@
-
-]>
\ No newline at end of file
+ height="16" viewBox="0 0 16 16" preserveAspectRatio="xMinYMid meet" overflow="visible">
diff --git a/src/assets/img/icons/h5p.svg b/src/assets/img/icons/h5p.svg
index 7856f9efb..1cb7a0ccc 100644
--- a/src/assets/img/icons/h5p.svg
+++ b/src/assets/img/icons/h5p.svg
@@ -1,14 +1 @@
-
-
-
+
diff --git a/src/assets/img/mod/assign.svg b/src/assets/img/mod/assign.svg
index 41a788985..6721bd13a 100644
--- a/src/assets/img/mod/assign.svg
+++ b/src/assets/img/mod/assign.svg
@@ -1,89 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod/assignment.svg b/src/assets/img/mod/assignment.svg
deleted file mode 100644
index 41a788985..000000000
--- a/src/assets/img/mod/assignment.svg
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-]>
-
diff --git a/src/assets/img/mod/bigbluebuttonbn.svg b/src/assets/img/mod/bigbluebuttonbn.svg
index 7b92ab21b..57fcc9ecf 100644
--- a/src/assets/img/mod/bigbluebuttonbn.svg
+++ b/src/assets/img/mod/bigbluebuttonbn.svg
@@ -1,55 +1 @@
-
-
-
-
+
diff --git a/src/assets/img/mod/book.svg b/src/assets/img/mod/book.svg
index 740a35160..3c43cad61 100644
--- a/src/assets/img/mod/book.svg
+++ b/src/assets/img/mod/book.svg
@@ -1,80 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod/chat.svg b/src/assets/img/mod/chat.svg
index 9dd304b78..f6ec94d25 100644
--- a/src/assets/img/mod/chat.svg
+++ b/src/assets/img/mod/chat.svg
@@ -1,77 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod/choice.svg b/src/assets/img/mod/choice.svg
index 4d455910c..e81b8f5c5 100644
--- a/src/assets/img/mod/choice.svg
+++ b/src/assets/img/mod/choice.svg
@@ -1,46 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod/data.svg b/src/assets/img/mod/data.svg
index 954777f09..66f3a996b 100644
--- a/src/assets/img/mod/data.svg
+++ b/src/assets/img/mod/data.svg
@@ -1,87 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod/database.svg b/src/assets/img/mod/database.svg
deleted file mode 100644
index 954777f09..000000000
--- a/src/assets/img/mod/database.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-]>
-
diff --git a/src/assets/img/mod/external-tool.svg b/src/assets/img/mod/external-tool.svg
index ebbbe3084..ff362e431 100644
--- a/src/assets/img/mod/external-tool.svg
+++ b/src/assets/img/mod/external-tool.svg
@@ -1,55 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod/feedback.svg b/src/assets/img/mod/feedback.svg
index 58d0f080b..7fa5f02c5 100644
--- a/src/assets/img/mod/feedback.svg
+++ b/src/assets/img/mod/feedback.svg
@@ -1,133 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod/file.svg b/src/assets/img/mod/file.svg
deleted file mode 100644
index 2039a2ea2..000000000
--- a/src/assets/img/mod/file.svg
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
-]>
-
diff --git a/src/assets/img/mod/folder.svg b/src/assets/img/mod/folder.svg
index 6c2a9fe19..9ad8f814f 100644
--- a/src/assets/img/mod/folder.svg
+++ b/src/assets/img/mod/folder.svg
@@ -1,65 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod/forum.svg b/src/assets/img/mod/forum.svg
index aab9a8f44..c1dbbb7ee 100644
--- a/src/assets/img/mod/forum.svg
+++ b/src/assets/img/mod/forum.svg
@@ -1,71 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod/glossary.svg b/src/assets/img/mod/glossary.svg
index f330727e3..e77fa85ad 100644
--- a/src/assets/img/mod/glossary.svg
+++ b/src/assets/img/mod/glossary.svg
@@ -1,146 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod/h5pactivity.svg b/src/assets/img/mod/h5pactivity.svg
index 97fef5728..0dddac960 100644
--- a/src/assets/img/mod/h5pactivity.svg
+++ b/src/assets/img/mod/h5pactivity.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
diff --git a/src/assets/img/mod/ims.svg b/src/assets/img/mod/ims.svg
deleted file mode 100644
index 5589cd0c5..000000000
--- a/src/assets/img/mod/ims.svg
+++ /dev/null
@@ -1,156 +0,0 @@
-
-
-
-]>
-
diff --git a/src/assets/img/mod/imscp.svg b/src/assets/img/mod/imscp.svg
index 5589cd0c5..87f31fd32 100644
--- a/src/assets/img/mod/imscp.svg
+++ b/src/assets/img/mod/imscp.svg
@@ -1,156 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod/label.svg b/src/assets/img/mod/label.svg
index ac232fc58..49db2f821 100644
--- a/src/assets/img/mod/label.svg
+++ b/src/assets/img/mod/label.svg
@@ -1,94 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod/lesson.svg b/src/assets/img/mod/lesson.svg
index 0a0e5dfd5..12d1824e7 100644
--- a/src/assets/img/mod/lesson.svg
+++ b/src/assets/img/mod/lesson.svg
@@ -1,126 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod/lti.svg b/src/assets/img/mod/lti.svg
index ebbbe3084..ff362e431 100644
--- a/src/assets/img/mod/lti.svg
+++ b/src/assets/img/mod/lti.svg
@@ -1,55 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod/page.svg b/src/assets/img/mod/page.svg
index eb7cae6c8..0a202805e 100644
--- a/src/assets/img/mod/page.svg
+++ b/src/assets/img/mod/page.svg
@@ -1,112 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod/quiz.svg b/src/assets/img/mod/quiz.svg
index 90473416f..04aaadfc8 100644
--- a/src/assets/img/mod/quiz.svg
+++ b/src/assets/img/mod/quiz.svg
@@ -1,90 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod/resource.svg b/src/assets/img/mod/resource.svg
index 2039a2ea2..e123e7470 100644
--- a/src/assets/img/mod/resource.svg
+++ b/src/assets/img/mod/resource.svg
@@ -1,60 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod/scorm.svg b/src/assets/img/mod/scorm.svg
index 77891eca4..95d97e0dd 100644
--- a/src/assets/img/mod/scorm.svg
+++ b/src/assets/img/mod/scorm.svg
@@ -1,84 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod/survey.svg b/src/assets/img/mod/survey.svg
index a97fe77ef..a99aa548f 100644
--- a/src/assets/img/mod/survey.svg
+++ b/src/assets/img/mod/survey.svg
@@ -1,89 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod/url.svg b/src/assets/img/mod/url.svg
index 56bdb5541..fe096966e 100644
--- a/src/assets/img/mod/url.svg
+++ b/src/assets/img/mod/url.svg
@@ -1,485 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod/wiki.svg b/src/assets/img/mod/wiki.svg
index f3101ce19..9c4ff6281 100644
--- a/src/assets/img/mod/wiki.svg
+++ b/src/assets/img/mod/wiki.svg
@@ -1,228 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod/workshop.svg b/src/assets/img/mod/workshop.svg
index f466455a6..ed7652eb3 100644
--- a/src/assets/img/mod/workshop.svg
+++ b/src/assets/img/mod/workshop.svg
@@ -1,98 +1 @@
-
-
-
-]>
-
+
diff --git a/src/assets/img/mod_legacy/assign.svg b/src/assets/img/mod_legacy/assign.svg
new file mode 100644
index 000000000..9cfeda3d0
--- /dev/null
+++ b/src/assets/img/mod_legacy/assign.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/bigbluebuttonbn.svg b/src/assets/img/mod_legacy/bigbluebuttonbn.svg
new file mode 100644
index 000000000..91214c8d0
--- /dev/null
+++ b/src/assets/img/mod_legacy/bigbluebuttonbn.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/book.svg b/src/assets/img/mod_legacy/book.svg
new file mode 100644
index 000000000..282ceffe2
--- /dev/null
+++ b/src/assets/img/mod_legacy/book.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/chat.svg b/src/assets/img/mod_legacy/chat.svg
new file mode 100644
index 000000000..08f9062fc
--- /dev/null
+++ b/src/assets/img/mod_legacy/chat.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/choice.svg b/src/assets/img/mod_legacy/choice.svg
new file mode 100644
index 000000000..a7a500299
--- /dev/null
+++ b/src/assets/img/mod_legacy/choice.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/data.svg b/src/assets/img/mod_legacy/data.svg
new file mode 100644
index 000000000..43063536f
--- /dev/null
+++ b/src/assets/img/mod_legacy/data.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/external-tool.svg b/src/assets/img/mod_legacy/external-tool.svg
new file mode 100644
index 000000000..286a99aee
--- /dev/null
+++ b/src/assets/img/mod_legacy/external-tool.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/feedback.svg b/src/assets/img/mod_legacy/feedback.svg
new file mode 100644
index 000000000..79736bb7e
--- /dev/null
+++ b/src/assets/img/mod_legacy/feedback.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/folder.svg b/src/assets/img/mod_legacy/folder.svg
new file mode 100644
index 000000000..e6ddbc4c4
--- /dev/null
+++ b/src/assets/img/mod_legacy/folder.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/forum.svg b/src/assets/img/mod_legacy/forum.svg
new file mode 100644
index 000000000..392a8ba9d
--- /dev/null
+++ b/src/assets/img/mod_legacy/forum.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/glossary.svg b/src/assets/img/mod_legacy/glossary.svg
new file mode 100644
index 000000000..f56f9fa31
--- /dev/null
+++ b/src/assets/img/mod_legacy/glossary.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/h5pactivity.svg b/src/assets/img/mod_legacy/h5pactivity.svg
new file mode 100644
index 000000000..97fef5728
--- /dev/null
+++ b/src/assets/img/mod_legacy/h5pactivity.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/img/mod_legacy/imscp.svg b/src/assets/img/mod_legacy/imscp.svg
new file mode 100644
index 000000000..f5ccbebaf
--- /dev/null
+++ b/src/assets/img/mod_legacy/imscp.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/label.svg b/src/assets/img/mod_legacy/label.svg
new file mode 100644
index 000000000..c42c26477
--- /dev/null
+++ b/src/assets/img/mod_legacy/label.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/lesson.svg b/src/assets/img/mod_legacy/lesson.svg
new file mode 100644
index 000000000..f32d1630f
--- /dev/null
+++ b/src/assets/img/mod_legacy/lesson.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/lti.svg b/src/assets/img/mod_legacy/lti.svg
new file mode 100644
index 000000000..286a99aee
--- /dev/null
+++ b/src/assets/img/mod_legacy/lti.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/page.svg b/src/assets/img/mod_legacy/page.svg
new file mode 100644
index 000000000..2126b6897
--- /dev/null
+++ b/src/assets/img/mod_legacy/page.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/quiz.svg b/src/assets/img/mod_legacy/quiz.svg
new file mode 100644
index 000000000..d4de83074
--- /dev/null
+++ b/src/assets/img/mod_legacy/quiz.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/resource.svg b/src/assets/img/mod_legacy/resource.svg
new file mode 100644
index 000000000..3ee9bbe05
--- /dev/null
+++ b/src/assets/img/mod_legacy/resource.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/scorm.svg b/src/assets/img/mod_legacy/scorm.svg
new file mode 100644
index 000000000..4d5617e2b
--- /dev/null
+++ b/src/assets/img/mod_legacy/scorm.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/survey.svg b/src/assets/img/mod_legacy/survey.svg
new file mode 100644
index 000000000..2bbc36f81
--- /dev/null
+++ b/src/assets/img/mod_legacy/survey.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/url.svg b/src/assets/img/mod_legacy/url.svg
new file mode 100644
index 000000000..94c07d48b
--- /dev/null
+++ b/src/assets/img/mod_legacy/url.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/wiki.svg b/src/assets/img/mod_legacy/wiki.svg
new file mode 100644
index 000000000..e8c0e9f48
--- /dev/null
+++ b/src/assets/img/mod_legacy/wiki.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/img/mod_legacy/workshop.svg b/src/assets/img/mod_legacy/workshop.svg
new file mode 100644
index 000000000..570537727
--- /dev/null
+++ b/src/assets/img/mod_legacy/workshop.svg
@@ -0,0 +1 @@
+
diff --git a/src/core/components/mod-icon/mod-icon.scss b/src/core/components/mod-icon/mod-icon.scss
index e8cbb5754..7cac89699 100644
--- a/src/core/components/mod-icon/mod-icon.scss
+++ b/src/core/components/mod-icon/mod-icon.scss
@@ -1,11 +1,29 @@
+@import "~theme/globals";
+
:host {
+ display: inline-block;
--size: var(--module-icon-size);
--margin-end: 0px;
--margin-vertical: 0px;
margin-top: var(--margin-vertical);
margin-bottom: var(--margin-vertical);
- margin-right: var(--margin-end);
+ @include margin-horizontal(null, var(--margin-end));
+
+ border-radius: 4px;
+ padding: 0.7rem;
+ background-color: $gray-lighter;
+ line-height: var(--size);
+
+ @each $type, $value in $activity-icon-colors {
+ &.#{$type} {
+ background-color: var(--activity#{$type});
+ img {
+ filter: brightness(0) invert(1);
+ }
+ }
+ }
+
}
img {
@@ -13,6 +31,7 @@ img {
height: var(--size);
max-width: var(--size);
max-height: var(--size);
+ vertical-align: top;
&[alt] {
text-indent: -999999px;
@@ -23,15 +42,10 @@ img {
:host-context(ion-item) {
--margin-vertical: 12px;
- --margin-end: 32px;
+ --margin-end: 1rem;
}
:host-context(ion-card ion-item) {
--margin-vertical: 12px;
--margin-end: 12px;
}
-
-:host-context([dir=rtl]) {
- margin-right: unset;
- margin-left: var(--margin-end);
-}
\ No newline at end of file
diff --git a/src/core/components/mod-icon/mod-icon.ts b/src/core/components/mod-icon/mod-icon.ts
index c9c6b70ac..7f0262038 100644
--- a/src/core/components/mod-icon/mod-icon.ts
+++ b/src/core/components/mod-icon/mod-icon.ts
@@ -12,8 +12,11 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import { Component, Input, OnChanges, OnInit, SimpleChange } from '@angular/core';
+import { CoreConstants } from '@/core/constants';
+import { Component, ElementRef, Input, OnChanges, OnInit, SimpleChange } from '@angular/core';
import { CoreCourse } from '@features/course/services/course';
+import { CoreCourseModuleDelegate } from '@features/course/services/module-delegate';
+import { CoreSites } from '@services/sites';
const assetsPath = 'assets/img/';
const fallbackModName = 'external-tool';
@@ -38,11 +41,31 @@ export class CoreModIconComponent implements OnInit, OnChanges {
isLocalUrl = true;
linkIconWithComponent = false;
+ protected legacyIcon = true; // @deprecatedonmoodle since Moodle 3.11.
+
+ constructor(protected el: ElementRef) { }
+
/**
* @inheritdoc
*/
async ngOnInit(): Promise {
+ if (!this.modname && this.modicon) {
+ // Guess module from the icon url.
+ const matches = this.modicon.match('/theme/image.php/[^/]+/([^/]+)/[-0-9]*/');
+ this.modname = (matches && matches[1]) || '';
+ }
+
this.modNameTranslated = this.modname ? CoreCourse.translateModuleName(this.modname) || '' : '';
+ if (CoreSites.getCurrentSite()?.isVersionGreaterEqualThan('4.0')) {
+ this.legacyIcon = false;
+ const purposeClass =
+ CoreCourseModuleDelegate.supportsFeature(this.modname, CoreConstants.FEATURE_MOD_PURPOSE, '');
+
+ if (purposeClass != '') {
+ const element: HTMLElement = this.el.nativeElement;
+ element.classList.add(purposeClass);
+ }
+ }
this.setIcon();
}
@@ -82,7 +105,13 @@ export class CoreModIconComponent implements OnInit, OnChanges {
? fallbackModName
: this.modname;
- this.icon = assetsPath + moduleName + '.svg';
+ let path = assetsPath + 'mod/';
+ if (this.legacyIcon) {
+ // @deprecatedonmoodle since Moodle 3.11.
+ path = assetsPath + 'mod_legacy/';
+ }
+
+ this.icon = path + moduleName + '.svg';
}
}
diff --git a/src/core/components/split-view/split-view.ts b/src/core/components/split-view/split-view.ts
index a69cc700c..e535f731d 100644
--- a/src/core/components/split-view/split-view.ts
+++ b/src/core/components/split-view/split-view.ts
@@ -141,14 +141,12 @@ export class CoreSplitViewComponent implements AfterViewInit, OnDestroy {
* Another manual solution is to add scroll-y=false on the ion-contents outside the split view.
*/
protected disableScrollOnParent(): void {
- let outerContent = this.element.nativeElement.parentElement?.closest('ion-content');
- while (outerContent) {
+ const outerContent = this.element.nativeElement.parentElement?.closest('ion-content');
+ if (outerContent) {
if (outerContent?.getAttribute('scroll-y') != 'false' && !outerContent?.classList.contains(disabledScrollClass)) {
outerContent.classList.add(disabledScrollClass);
this.disabledScrollOuterContents.push(outerContent);
}
-
- outerContent = outerContent.parentElement?.closest('ion-content');
}
}
diff --git a/src/core/constants.ts b/src/core/constants.ts
index a4f6a7c32..2c238261b 100644
--- a/src/core/constants.ts
+++ b/src/core/constants.ts
@@ -27,6 +27,16 @@ export const enum ContextLevel {
BLOCK = 'block',
}
+export const enum ModPurpose {
+ MOD_PURPOSE_COMMUNICATION = 'communication',
+ MOD_PURPOSE_ASSESSMENT = 'assessment',
+ MOD_PURPOSE_COLLABORATION = 'collaboration',
+ MOD_PURPOSE_CONTENT = 'content',
+ MOD_PURPOSE_ADMINISTRATION = 'administration',
+ MOD_PURPOSE_INTERFACE = 'interface',
+ MOD_PURPOSE_OTHER = 'other',
+};
+
/**
* Static class to contain all the core constants.
*/
@@ -119,6 +129,7 @@ export class CoreConstants {
static readonly FEATURE_MOD_INTRO = 'mod_intro'; // True if module supports intro editor.
static readonly FEATURE_MODEDIT_DEFAULT_COMPLETION = 'modedit_default_completion'; // True if module has default completion.
static readonly FEATURE_COMMENT = 'comment';
+ static readonly FEATURE_MOD_PURPOSE = 'mod_purpose'; // Type of module.
static readonly FEATURE_RATE = 'rate';
static readonly FEATURE_BACKUP_MOODLE2 = 'backup_moodle2'; // True if module supports backup/restore of moodle2 format.
static readonly FEATURE_SHOW_DESCRIPTION = 'showdescription'; // True if module can show description on course main page.
diff --git a/src/core/directives/collapsible-header.ts b/src/core/directives/collapsible-header.ts
index 0249849c3..24ba81a03 100644
--- a/src/core/directives/collapsible-header.ts
+++ b/src/core/directives/collapsible-header.ts
@@ -44,7 +44,7 @@ export class CoreCollapsibleHeaderDirective implements OnDestroy {
protected contentSubHeadingFontSize = 0;
protected subHeadingStartDifference = 0;
- constructor(el: ElementRef) {
+ constructor(el: ElementRef) {
this.header = el.nativeElement;
this.loadingObserver = CoreEvents.on(CoreEvents.CORE_LOADING_CHANGED, async (data) => {
@@ -122,6 +122,11 @@ export class CoreCollapsibleHeaderDirective implements OnDestroy {
}
this.titleTopDifference = contentH1.getBoundingClientRect().top - headerH1.getBoundingClientRect().top;
+ if (this.titleTopDifference <= 0) {
+ this.cannotCollapse();
+
+ return;
+ }
// Split view part.
const contentAux = this.header.parentElement?.querySelector('ion-content.disable-scroll-y');
@@ -210,7 +215,9 @@ export class CoreCollapsibleHeaderDirective implements OnDestroy {
this.content.scrollEvents = true;
this.content.addEventListener('ionScroll', (e: CustomEvent): void => {
- this.onScroll(title, contentH1, contentSubHeading, e.detail);
+ if (e.target == this.content) {
+ this.onScroll(title, contentH1, contentSubHeading, e.detail);
+ }
});
}
@@ -234,6 +241,8 @@ export class CoreCollapsibleHeaderDirective implements OnDestroy {
this.header.classList.toggle('core-header-collapsed', collapsed);
title.classList.toggle('collapsible-title-collapsed', collapsed);
title.classList.toggle('collapsible-title-collapse-started', scrollDetail.scrollTop > 0);
+ title.classList.toggle('collapsible-title-collapse-nowrap', progress > 0.5);
+ title.style.setProperty('--collapse-opacity', (1 - progress) +'');
if (collapsed) {
contentH1.style.transform = 'translateX(-' + this.h1StartDifference + 'px)';
diff --git a/src/core/features/course/components/module/core-course-module.html b/src/core/features/course/components/module/core-course-module.html
index fc9db736c..8a50cf3b3 100644
--- a/src/core/features/course/components/module/core-course-module.html
+++ b/src/core/features/course/components/module/core-course-module.html
@@ -58,7 +58,7 @@
diff --git a/src/core/features/course/components/module/module.scss b/src/core/features/course/components/module/module.scss
index aaeaa86a3..2253562e5 100644
--- a/src/core/features/course/components/module/module.scss
+++ b/src/core/features/course/components/module/module.scss
@@ -31,7 +31,7 @@
}
}
- .core-module-module-info {
+ .core-course-module-info {
ion-badge {
text-align: start;
}
@@ -51,7 +51,7 @@
clear: both;
}
- .core-module-main-item + .core-module-module-info ion-label {
+ .core-module-main-item + .core-course-module-info ion-label {
margin-top: 0px;
}
@@ -59,8 +59,4 @@
--inner-border-width: 0px;
}
- .core-module-module-info ion-label {
- margin-inline-start: 50px;
- }
-
}
diff --git a/src/core/features/course/services/course.ts b/src/core/features/course/services/course.ts
index cd482f5ca..24984dfc3 100644
--- a/src/core/features/course/services/course.ts
+++ b/src/core/features/course/services/course.ts
@@ -125,9 +125,8 @@ export class CoreCourseProvider {
static readonly COMPONENT = 'CoreCourse';
readonly CORE_MODULES = [
- 'assign', 'assignment', 'book', 'chat', 'choice', 'data', 'database', 'date', 'external-tool',
- 'feedback', 'file', 'folder', 'forum', 'glossary', 'ims', 'imscp', 'label', 'lesson', 'lti', 'page', 'quiz',
- 'resource', 'scorm', 'survey', 'url', 'wiki', 'workshop', 'h5pactivity', 'bigbluebuttonbn',
+ 'assign', 'bigbluebuttonbn', 'book', 'chat', 'choice', 'data', 'feedback', 'folder', 'forum', 'glossary', 'h5pactivity',
+ 'imscp', 'label', 'lesson', 'lti', 'page', 'quiz', 'resource', 'scorm', 'survey', 'url', 'wiki', 'workshop',
];
protected logger: CoreLogger;
@@ -726,8 +725,14 @@ export class CoreCourseProvider {
moduleName = 'external-tool';
}
+ let path = 'assets/img/mod/';
+ if (!CoreSites.getCurrentSite()?.isVersionGreaterEqualThan('4.0')) {
+ // @deprecatedonmoodle since Moodle 3.11.
+ path = 'assets/img/mod_legacy/';
+ }
+
// Use default icon on core modules.
- return 'assets/img/mod/' + moduleName + '.svg';
+ return path + moduleName + '.svg';
}
/**
diff --git a/src/core/features/grades/pages/course/course.scss b/src/core/features/grades/pages/course/course.scss
index 3a004d4a6..8f3299ff6 100644
--- a/src/core/features/grades/pages/course/course.scss
+++ b/src/core/features/grades/pages/course/course.scss
@@ -87,6 +87,7 @@
}
core-mod-icon {
+ padding: 0.1rem;
--size: 16px;
}
diff --git a/src/core/features/grades/services/grades-helper.ts b/src/core/features/grades/services/grades-helper.ts
index 91af997c6..b4d26bfa2 100644
--- a/src/core/features/grades/services/grades-helper.ts
+++ b/src/core/features/grades/services/grades-helper.ts
@@ -543,11 +543,11 @@ export class CoreGradesHelperProvider {
text = text.replace('%2F', '/').replace('%2f', '/');
if (text.indexOf('/agg_mean') > -1) {
row.itemtype = 'agg_mean';
- row.image = 'assets/img/grades/agg_mean.png';
+ row.image = 'assets/img/grades/agg_mean.svg';
row.iconAlt = Translate.instant('core.grades.aggregatemean');
} else if (text.indexOf('/agg_sum') > -1) {
row.itemtype = 'agg_sum';
- row.image = 'assets/img/grades/agg_sum.png';
+ row.image = 'assets/img/grades/agg_sum.svg';
row.iconAlt = Translate.instant('core.grades.aggregatesum');
} else if (text.indexOf('/outcomes') > -1 || text.indexOf('fa-tasks') > -1) {
row.itemtype = 'outcome';
@@ -555,7 +555,7 @@ export class CoreGradesHelperProvider {
row.iconAlt = Translate.instant('core.grades.outcome');
} else if (text.indexOf('i/folder') > -1 || text.indexOf('fa-folder') > -1) {
row.itemtype = 'category';
- row.icon = 'fas-cubes';
+ row.icon = 'fas-folder';
row.iconAlt = Translate.instant('core.grades.category');
} else if (text.indexOf('/manual_item') > -1 || text.indexOf('fa-square-o') > -1) {
row.itemtype = 'manual';
diff --git a/src/core/features/mainmenu/components/user-menu-button/user-menu-button.scss b/src/core/features/mainmenu/components/user-menu-button/user-menu-button.scss
index 8695620af..85bb76e70 100644
--- a/src/core/features/mainmenu/components/user-menu-button/user-menu-button.scss
+++ b/src/core/features/mainmenu/components/user-menu-button/user-menu-button.scss
@@ -10,3 +10,8 @@ core-user-avatar {
padding: 2px !important;
border: 1px solid var(--color);
}
+
+:host-context(ion-tab-bar) core-user-avatar ::ng-deep img {
+ padding: 2px !important;
+ border: 1px solid var(--color);
+}
diff --git a/src/core/features/sitehome/pages/index/index.scss b/src/core/features/sitehome/pages/index/index.scss
new file mode 100644
index 000000000..90dc443cc
--- /dev/null
+++ b/src/core/features/sitehome/pages/index/index.scss
@@ -0,0 +1,11 @@
+@import "~theme/globals";
+
+ion-item ion-icon {
+ display: inline-block;
+ border-radius: 4px;
+ padding: 0.7rem;
+ background-color: $gray-lighter;
+ line-height: var(--size);
+ --margin-end: 1rem;
+ @include margin-horizontal(null, var(--margin-end));
+}
diff --git a/src/core/features/sitehome/pages/index/index.ts b/src/core/features/sitehome/pages/index/index.ts
index b28c7d648..b880324d4 100644
--- a/src/core/features/sitehome/pages/index/index.ts
+++ b/src/core/features/sitehome/pages/index/index.ts
@@ -36,6 +36,7 @@ import { CoreUtils } from '@services/utils/utils';
@Component({
selector: 'page-core-sitehome-index',
templateUrl: 'index.html',
+ styleUrls: ['index.scss'],
})
export class CoreSiteHomeIndexPage implements OnInit, OnDestroy {
diff --git a/src/core/lang.json b/src/core/lang.json
index 64fcba1f9..584f0d5a6 100644
--- a/src/core/lang.json
+++ b/src/core/lang.json
@@ -164,12 +164,10 @@
"minutes": "minutes",
"misc": "Miscellaneous",
"mod_assign": "Assignment",
- "mod_assignment": "Assignment 2.2 (Disabled)",
"mod_book": "Book",
"mod_chat": "Chat",
"mod_choice": "Choice",
"mod_data": "Database",
- "mod_database": "Database",
"mod_external-tool": "External tool",
"mod_feedback": "Feedback",
"mod_file": "File",
@@ -177,7 +175,6 @@
"mod_forum": "Forum",
"mod_glossary": "Glossary",
"mod_h5pactivity": "H5P",
- "mod_ims": "IMS content package",
"mod_imscp": "IMS content package",
"mod_label": "Label",
"mod_lesson": "Lesson",
diff --git a/src/theme/globals.variables.scss b/src/theme/globals.variables.scss
index 3a1dbff38..4e1d7e57a 100644
--- a/src/theme/globals.variables.scss
+++ b/src/theme/globals.variables.scss
@@ -139,5 +139,11 @@ $core-user-hide-siteinfo: $core-more-hide-siteinfo !default;
$core-user-hide-sitename: $core-more-hide-sitename !default;
$core-user-hide-siteurl: $core-more-hide-siteurl !default;
-
-
+$activity-icon-colors: (
+ administration: #5d63f6,
+ assessment: #eb66a2,
+ collaboration: #f7634d,
+ communication: #11a676,
+ content: #399be2,
+ interface: #a378ff
+) !default;
diff --git a/src/theme/theme.base.scss b/src/theme/theme.base.scss
index c045c2469..fa122a16c 100644
--- a/src/theme/theme.base.scss
+++ b/src/theme/theme.base.scss
@@ -1257,21 +1257,26 @@ ion-app.md .collapsible-title h1 {
}
.collapsible-title.collapsible-title-collapsed {
- ion-label, h1, h2, .subheading {
+ ion-label, h1, h2, ion-row, ion-col, .subheading {
opacity: 0;
}
}
.collapsible-title.collapsible-title-collapse-started {
* {
- opacity: 0;
+ opacity: var(--collapse-opacity, 0);
}
- ion-label, h1, h2, .subheading {
+
+ ion-label, h1, h2, ion-row, ion-col, .subheading {
opacity: 1;
}
+}
+
+.collapsible-title.collapsible-title-collapse-nowrap {
h1, h2, .subheading {
max-width: var(--max-width);
white-space: nowrap;
overflow: hidden;
+ text-overflow: ellipsis;
}
}
diff --git a/src/theme/theme.light.scss b/src/theme/theme.light.scss
index a4b0b935e..f4d379c0e 100644
--- a/src/theme/theme.light.scss
+++ b/src/theme/theme.light.scss
@@ -316,4 +316,9 @@
--core-dd-question-color-#{$i + 1}: #{nth($core-dd-question-colors, $i + 1)};
--core-dd-question-color-#{$i + 1}-contrast: #{get_contrast_color(nth($core-dd-question-colors, $i + 1))};
}
+
+ // Make activtity colours available for custom modules.
+ @each $type, $value in $activity-icon-colors {
+ --activity#{$type}: #{$value};
+ }
}