From 120228346380e987ba770f4d798554a136d0c913 Mon Sep 17 00:00:00 2001 From: Dani Palou Date: Mon, 8 Sep 2025 12:42:42 +0200 Subject: [PATCH 1/5] [docs] app: Document new policy for constants used in templates --- .../policies/codingstyle-moodleapp.md | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/general/development/policies/codingstyle-moodleapp.md b/general/development/policies/codingstyle-moodleapp.md index f37d5cd0b5..aa011bed44 100644 --- a/general/development/policies/codingstyle-moodleapp.md +++ b/general/development/policies/codingstyle-moodleapp.md @@ -431,6 +431,33 @@ export class MyService { +If a constant needs to be used in a component template, it should be declared in the component without "static" because static properties cannot be used in templates. Please notice that the naming convention for non static properties is camelCase. + + + +```ts +export class MyComponent { + + protected readonly myConstant = '...'; + +} +``` + + + + + +```ts + +export class MyService { + + protected readonly MY_CONSTANT = '...'; + +} +``` + + + ## Angular ### Avoid calling methods in templates From 2d0b37ffbeb07824e969b30fdc6780a954f673b1 Mon Sep 17 00:00:00 2001 From: Dani Palou Date: Mon, 8 Sep 2025 12:53:59 +0200 Subject: [PATCH 2/5] [docs] app: Document policy for signals --- .../policies/codingstyle-moodleapp.md | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/general/development/policies/codingstyle-moodleapp.md b/general/development/policies/codingstyle-moodleapp.md index aa011bed44..9f98c13008 100644 --- a/general/development/policies/codingstyle-moodleapp.md +++ b/general/development/policies/codingstyle-moodleapp.md @@ -458,6 +458,39 @@ export class MyService { +### Angular Signals + +All signals in class properties must be defined as readonly properties to avoid overriding the whole signal by mistake. This includes input signals, computed signals, etc. + + + +```ts +export class MyComponent { + + protected readonly myInput = input('...'); + protected readonly mySignal = signal('...'); + protected readonly myComputed = computed(() => ...); + +} +``` + + + + + +```ts + +export class MyComponent { + + protected myInput = input('...'); + protected mySignal = signal('...'); + protected myComputed = computed(() => ...); + +} +``` + + + ## Angular ### Avoid calling methods in templates From 9604054200c7de143d1b9df05a3446f7960f3489 Mon Sep 17 00:00:00 2001 From: Dani Palou Date: Mon, 22 Sep 2025 14:45:06 +0200 Subject: [PATCH 3/5] [docs] app: Document new displayinusermenu option --- .../app/development/plugins-development-guide/api-reference.md | 1 + 1 file changed, 1 insertion(+) diff --git a/general/app/development/plugins-development-guide/api-reference.md b/general/app/development/plugins-development-guide/api-reference.md index ecd633c108..71b6e2b2a8 100644 --- a/general/app/development/plugins-development-guide/api-reference.md +++ b/general/app/development/plugins-development-guide/api-reference.md @@ -247,6 +247,7 @@ Add new option in the user profile page. | `type` | `'listitem'` | Visual representation of the option, accepted values are `listitem` and `button`.

Before 4.4, the accepted values were `newpage` and `communication` (`newpage` was the default). | | `priority` | `0` | Priority of the handler, higher priority options are displayed first. | | `ptrenabled` | `true` | Whether to enable the PTR (pull-to-refresh) gesture in the page. | +| `displayinusermenu` | - | Whether to display the option in the user menu (the menu displayed when the user clicks his own avatar at the top-right or top-left). Accepted values are:
  • `no`: don't display the option in user menu.
  • `yes`: display the option in user menu. It will also be displayed in user profiles (like course participants) depending on the restrictions.
  • `only`: display the option only in user menu and never in user profiles.
If not set, the option will be displayed in the user menu depending on the restricted courses and users.

Only available in 5.1+. | ### CoreCourseFormatDelegate From 40b8c5e4ca043a547d20d585cfe5f6b14dfc530e Mon Sep 17 00:00:00 2001 From: Dani Palou Date: Tue, 23 Sep 2025 12:12:29 +0200 Subject: [PATCH 4/5] [docs] app: Fix class name in signals example --- general/development/policies/codingstyle-moodleapp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/general/development/policies/codingstyle-moodleapp.md b/general/development/policies/codingstyle-moodleapp.md index 9f98c13008..9d9cda96ab 100644 --- a/general/development/policies/codingstyle-moodleapp.md +++ b/general/development/policies/codingstyle-moodleapp.md @@ -449,7 +449,7 @@ export class MyComponent { ```ts -export class MyService { +export class MyComponent { protected readonly MY_CONSTANT = '...'; From 655273b4b9df9bee5b49ac5d69339f6ae7ffc80a Mon Sep 17 00:00:00 2001 From: Juan Leyva Date: Thu, 25 Sep 2025 11:22:25 +0000 Subject: [PATCH 5/5] [docs] Accessibility mobile app VPAT --- general/development/policies/accessibility.md | 6 +++++- general/development/policies/codingstyle-moodleapp.md | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/general/development/policies/accessibility.md b/general/development/policies/accessibility.md index 90d819448b..ca9a92f8e3 100644 --- a/general/development/policies/accessibility.md +++ b/general/development/policies/accessibility.md @@ -41,7 +41,7 @@ The table below provides a history of the accessibility audits performed on the #### Moodle App -The Moodle App was accredited to meet [WCAG 2.1 Level AA conformance](https://www.webkeyit.com/accessibility-services/accessibility-accreditations/moodle-mobile-app) on 9 May 2023. See [MOBILE-4182](https://moodle.atlassian.net/browse/MOBILE-4182) for more details. +The Moodle App has been accredited to meet WCAG 2.2 Level AA conformance on 7 April 2025. See [MOBILE-4595](https://moodle.atlassian.net/browse/MOBILE-4595) for more details. #### Moodle Workplace @@ -93,6 +93,10 @@ An overview of Moodle LMS' conformance with the [WCAG 2.1](https://www.w3.org/TR An overview of Moodle Workplace's conformance with the [WCAG 2.1](https://www.w3.org/TR/WCAG21/) guidelines can be found in our [accessibility conformance report](https://docs.moodle.org/en/Moodle_Workplace_VPAT#WCAG_2.x_report). +#### Moodle App + +An overview of Moodle App's conformance with the [WCAG 2.2](https://www.w3.org/TR/WCAG22/) guidelines can be found in the [Moodle App accessibility conformance report](https://docs.moodle.org/en/Moodle_app_VPAT#WCAG_2.x_report). + diff --git a/general/development/policies/codingstyle-moodleapp.md b/general/development/policies/codingstyle-moodleapp.md index 9d9cda96ab..5645578381 100644 --- a/general/development/policies/codingstyle-moodleapp.md +++ b/general/development/policies/codingstyle-moodleapp.md @@ -431,7 +431,7 @@ export class MyService { -If a constant needs to be used in a component template, it should be declared in the component without "static" because static properties cannot be used in templates. Please notice that the naming convention for non static properties is camelCase. +If a constant needs to be used in a component template, it should be declared in the component without "static" because static properties cannot be used in templates. Please notice that the naming convention for non-static properties is camelCase.