Skip to content
Snippets Groups Projects
Commit 3deb79cb authored by Marcin Grabias's avatar Marcin Grabias
Browse files

Issue #3516718: Add membership request support

parent 7348f586
No related branches found
No related tags found
1 merge request!2Resolve #3516718 "Add membership request"
Pipeline #465380 failed
Showing
with 357 additions and 21 deletions
include:
################
# DrupalCI includes:
# As long as you include this, any future includes added by the Drupal Association will be accessible to your pipelines automatically.
# View these include files at https://git.drupalcode.org/project/gitlab_templates/
################
- project: $_GITLAB_TEMPLATES_REPO
ref: $_GITLAB_TEMPLATES_REF
file:
- '/includes/include.drupalci.main.yml'
- '/includes/include.drupalci.variables.yml'
- '/includes/include.drupalci.workflows.yml'
################
# Pipeline configuration variables
#
# These are the variables provided to the Run Pipeline form that a user may want to override.
#
# Docs at https://git.drupalcode.org/project/gitlab_templates/-/blob/main/includes/include.drupalci.variables.yml
################
variables:
_SHOW_ENVIRONMENT_VARIABLES: "1"
_CSPELL_WORDS: 'autocompleteclose'
SKIP_ESLINT: '1'
_TARGET_PHP: "$CORE_PHP_MIN"
DRUPAL_CORE: "$CORE_SUPPORTED"
OPT_IN_TEST_NEXT_MINOR: '1'
OPT_IN_TEST_NEXT_MAJOR: "0"
OPT_IN_TEST_MAX_PHP: "1"
......@@ -17,9 +17,13 @@
"license": "GPL-2.0-or-later",
"minimum-stability": "dev",
"require": {
"drupal/lms": "^1.0@RC",
"drupal/message": "^1.8",
"drupal/message_notify": "^1.5"
},
"require-dev": {
"drupal/lms_membership_request": "^1.0@beta"
},
"repositories": {
"drupal": {
"type": "composer",
......
......@@ -2,16 +2,18 @@ langcode: en
status: true
dependencies:
config:
- field.field.message.student_added_to_class.class
- message.template.student_added_to_class
id: message.student_added_to_class.default
- field.field.message.membership_request_approved.course
- message.template.membership_request_approved
module:
- lms_membership_request
id: message.membership_request_approved.default
targetEntityType: message
bundle: student_added_to_class
bundle: membership_request_approved
mode: default
content:
class:
course:
type: entity_reference_autocomplete
weight: 1
weight: 0
region: content
settings:
match_operator: CONTAINS
......
langcode: en
status: true
dependencies:
config:
- field.field.message.membership_request_rejected.course
- message.template.membership_request_rejected
module:
- lms_membership_request
id: message.membership_request_rejected.default
targetEntityType: message
bundle: membership_request_rejected
mode: default
content:
course:
type: entity_reference_autocomplete
weight: 0
region: content
settings:
match_operator: CONTAINS
match_limit: 10
size: 60
placeholder: ''
third_party_settings: { }
hidden: { }
langcode: en
status: true
dependencies:
config:
- field.field.message.new_membership_request.course
- field.field.message.new_membership_request.user
- message.template.new_membership_request
module:
- lms_membership_request
id: message.new_membership_request.default
targetEntityType: message
bundle: new_membership_request
mode: default
content:
course:
type: entity_reference_autocomplete
weight: 0
region: content
settings:
match_operator: CONTAINS
match_limit: 10
size: 60
placeholder: ''
third_party_settings: { }
user:
type: entity_reference_autocomplete
weight: 1
region: content
settings:
match_operator: CONTAINS
match_limit: 10
size: 60
placeholder: ''
third_party_settings: { }
hidden: { }
......@@ -2,19 +2,21 @@ langcode: en
status: true
dependencies:
config:
- field.field.message.student_added_to_class.class
- message.template.student_added_to_class
id: message.student_added_to_class.default
- field.field.message.membership_request_approved.course
- message.template.membership_request_approved
module:
- lms_membership_request
id: message.membership_request_approved.default
targetEntityType: message
bundle: student_added_to_class
bundle: membership_request_approved
mode: default
content:
class:
course:
type: entity_reference_label
label: above
settings:
link: true
third_party_settings: { }
weight: 1
weight: 0
region: content
hidden: { }
langcode: en
status: true
dependencies:
config:
- field.field.message.membership_request_rejected.course
- message.template.membership_request_rejected
module:
- lms_membership_request
id: message.membership_request_rejected.default
targetEntityType: message
bundle: membership_request_rejected
mode: default
content:
course:
type: entity_reference_label
label: above
settings:
link: true
third_party_settings: { }
weight: 0
region: content
hidden: { }
langcode: en
status: true
dependencies:
config:
- field.field.message.new_membership_request.course
- field.field.message.new_membership_request.user
- message.template.new_membership_request
module:
- lms_membership_request
id: message.new_membership_request.default
targetEntityType: message
bundle: new_membership_request
mode: default
content:
course:
type: entity_reference_label
label: above
settings:
link: true
third_party_settings: { }
weight: 0
region: content
user:
type: entity_reference_label
label: above
settings:
link: true
third_party_settings: { }
weight: 1
region: content
hidden: { }
langcode: en
status: true
dependencies:
config:
- field.storage.message.course
- group.type.lms_course
- message.template.membership_request_approved
module:
- lms_membership_request
id: message.membership_request_approved.course
field_name: course
entity_type: message
bundle: membership_request_approved
label: Course
description: ''
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings:
handler: 'default:group'
handler_settings:
target_bundles:
lms_course: lms_course
sort:
field: _none
direction: ASC
auto_create: false
auto_create_bundle: ''
field_type: entity_reference
langcode: en
status: true
dependencies:
config:
- field.storage.message.course
- group.type.lms_course
- message.template.membership_request_rejected
module:
- lms_membership_request
id: message.membership_request_rejected.course
field_name: course
entity_type: message
bundle: membership_request_rejected
label: Course
description: ''
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings:
handler: 'default:group'
handler_settings:
target_bundles:
lms_course: lms_course
sort:
field: _none
direction: ASC
auto_create: false
auto_create_bundle: ''
field_type: entity_reference
......@@ -2,15 +2,16 @@ langcode: en
status: true
dependencies:
config:
- field.storage.message.class
- group.type.lms_class
- field.storage.message.course
- group.type.lms_course
- message.template.student_added_to_class
id: message.student_added_to_class.class
field_name: class
- message.template.new_membership_request
module:
- lms_membership_request
id: message.new_membership_request.course
field_name: course
entity_type: message
bundle: student_added_to_class
label: Class
bundle: new_membership_request
label: Course
description: ''
required: false
translatable: false
......@@ -20,10 +21,10 @@ settings:
handler: 'default:group'
handler_settings:
target_bundles:
lms_class: lms_class
lms_course: lms_course
sort:
field: _none
direction: ASC
auto_create: false
auto_create_bundle: lms_class
auto_create_bundle: ''
field_type: entity_reference
langcode: en
status: true
dependencies:
config:
- field.storage.message.user
- message.template.new_membership_request
module:
- lms_membership_request
id: message.new_membership_request.user
field_name: user
entity_type: message
bundle: new_membership_request
label: User
description: ''
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings:
handler: 'default:user'
handler_settings:
target_bundles: null
sort:
field: _none
direction: ASC
auto_create: false
filter:
type: _none
include_anonymous: false
field_type: entity_reference
......@@ -3,7 +3,7 @@ status: true
dependencies: { }
template: course_evaluated
label: 'Course has been evaluated'
description: ''
description: 'Created when a course is fully evaluated by a teacher.'
text:
-
value: 'Course [message:course:entity:title] has been evaluated'
......
......@@ -3,7 +3,7 @@ status: true
dependencies: { }
template: course_needs_evaluation
label: 'Course needs evaluation'
description: ''
description: 'Created when a course containing activities that need manual evaluation is finished by a student.'
text:
-
value: 'Student [message:user:entity:display-name] needs evaluating on [message:course:entity:title].'
......
langcode: en
status: true
dependencies:
module:
- lms_membership_request
template: membership_request_approved
label: 'Membership request approved'
description: "Created when a student's membership request is approved"
text:
-
value: 'Your course access request to "[message:course:entity:title]" has been approved'
format: plain_text
-
value: 'You can now access the "[message:course:entity:title]" course.\r\n[site:base-url]/group/[message:course:target_id]'
format: plain_text
settings:
'token options':
clear: false
'token replace': true
purge_override: false
purge_methods: { }
langcode: en
status: true
dependencies: { }
template: student_added_to_class
label: 'Student has been added to a class'
description: ''
dependencies:
module:
- lms_membership_request
template: membership_request_rejected
label: 'Membership request rejected'
description: "Created when a student's membership request is rejected"
text:
-
value: 'You have been added to a class on [site:name]'
value: 'Your course access request to "[message:course:entity:title]" has been rejected'
format: plain_text
-
value: 'Your new class: [site:base-url]/group/[message:class:target_id]'
value: 'You cannot access the "[message:course:entity:title]" course.'
format: plain_text
settings:
'token options':
......
langcode: en
status: true
dependencies:
module:
- lms_membership_request
template: new_membership_request
label: 'New membership request'
description: 'Created when teacher needs to be notified that someone requested course access.'
text:
-
value: 'Course access request on [message:course:entity:title]'
format: plain_text
-
value: 'Student [message:user:entity:display-name] just requested access to [message:course:entity:title].\r\nManage course membership requests here: [site:base-url]/group/[message:course:target_id]/members-pending'
format: plain_text
settings:
'token options':
clear: false
'token replace': true
purge_override: false
purge_methods: { }
lms_messages.settings:
type: config_entity
label: 'LMS messages settinfs'
label: 'LMS messages settings'
mapping:
template_behavior:
label: 'Message template - specific behavior settings'
......
......@@ -29,9 +29,9 @@ function lms_messages_group_relationship_insert(GroupRelationshipInterface $grou
}
/**
* Implements hook_mail().
* Implements hook_ENTITY_TYPE_insert() for group_relationship.
*/
#[LegacyHook]
function lms_messages_mail(string $key, array &$message, array $params): void {
\Drupal::service(MessageHooks::class)->mail($key, $message, $params);
function lms_messages_group_relationship_update(GroupRelationshipInterface $group_relationship): void {
\Drupal::service(MessageHooks::class)->groupRelationshipUpdate($group_relationship);
}
<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="drupal-project">
<description>PHP CodeSniffer configuration for Drupal LMS.</description>
<rule ref="vendor/drupal/coder/coder_sniffer/Drupal/ruleset.xml">
<exclude name="Drupal.Commenting.FunctionComment"/>
<exclude-pattern>./src/ProxyClass/UninstallValidator/GroupRelationshipUninstallValidator</exclude-pattern>
</rule>
<rule ref="Drupal.NamingConventions.ValidVariableName.LowerCamelName">
<exclude-pattern>./src/Hook/*Hooks.php</exclude-pattern>
</rule>
<!-- https://www.drupal.org/drupalorg/docs/drupal-ci/using-coderphpcs-in-drupalci -->
<arg name="extensions" value="php,inc,module,install,info,test,profile,theme"/>
</ruleset>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment