Drupal issueshttps://lab.civicrm.org/dev/drupal/-/issues2020-07-16T17:23:38Zhttps://lab.civicrm.org/dev/drupal/-/issues/19Drupal8: Implement set UF locale/language (affects mailing tokens)2020-07-16T17:23:38ZbgmDrupal8: Implement set UF locale/language (affects mailing tokens)This is a follow-up to dev/drupal#17.
How to reproduce:
* Create a bilingual Drupal site, with the locale module, with URL-prefix language detection (example.org/fr/civicrm)
* Enable multi-lingual CiviCRM, with two languages (ex: FR/EN...This is a follow-up to dev/drupal#17.
How to reproduce:
* Create a bilingual Drupal site, with the locale module, with URL-prefix language detection (example.org/fr/civicrm)
* Enable multi-lingual CiviCRM, with two languages (ex: FR/EN)
* Send a mailing in French, with the unsubscribe URL token
Expected result: the token should link to the page in French.
Related JIRA issue for Drupal7: https://issues.civicrm.org/jira/browse/CRM-16352
cc @monish.deb @samuelsov5.15.0bgmbgmhttps://lab.civicrm.org/dev/drupal/-/issues/2Implement D8 initialization for civicrm-setup2020-07-16T17:23:36ZtottenImplement D8 initialization for civicrm-setup__Background__: When installing on Drupal 8, settings such as DSN and locale should be autodetected.
__Task__:
* Copy `plugins/init/Drupal.civi-setup.php` or `plugins/init/WordPress.civi-setup.php`
* Create `Drupal8.civi-setup.php`
* A...__Background__: When installing on Drupal 8, settings such as DSN and locale should be autodetected.
__Task__:
* Copy `plugins/init/Drupal.civi-setup.php` or `plugins/init/WordPress.civi-setup.php`
* Create `Drupal8.civi-setup.php`
* Adapt for D8. For source material on how to detect things like DSN, look at `civicrm-drupal@8.x-master` in `civicrm.install` / `drush.civicrm.inc`.D8 General AvailabilityMonish DebMonish Debhttps://lab.civicrm.org/dev/drupal/-/issues/4Use `civicrm-setup` to handle installation2020-08-07T03:28:13ZtottenUse `civicrm-setup` to handle installation**Background**: During installation, one must check system-requirements, populate database, etc. To do this, the Drupal 8 integration currently calls some functions from `install/`.
However, the functions in the `install/` folder are t...**Background**: During installation, one must check system-requirements, populate database, etc. To do this, the Drupal 8 integration currently calls some functions from `install/`.
However, the functions in the `install/` folder are too narrowly crafted -- we don't have much ability to add/change/rearrange/remove installer steps. [civicrm-setup](https://civicrm.org/blog/totten/developers-revising-the-civicrm-installer-library-cli-wordpress) aims to redress that limitation and make it easier to iterate on the installer. For any new distribution channels (like D8), we should call `civicrm-setup`.
__Tasks__:
* __(a)__ `civicrm.drush.inc`: The function `drush_civicrm_install()` must use the `civicrm-setup` API (eg `installFiles()`, `installDatabase()`).
* __(b)__ `civicrm.install`: The function `civicrm_install()` must use setup API (eg `installFiles()`, `installDatabase()`).
* __(c)__ `civicrm.install`: The function `civicrm_requirements()` should use the setup API (eg `checkRequirements`, `checkAuthorized`).D8 General Availabilityhttps://lab.civicrm.org/dev/drupal/-/issues/5Add support for Drupal 8 to cv (`Bootstrap.php` and `CmsBootstrap.php`)2020-07-16T17:23:37ZtottenAdd support for Drupal 8 to cv (`Bootstrap.php` and `CmsBootstrap.php`)D8 General Availabilitytottentottenhttps://lab.civicrm.org/dev/drupal/-/issues/6Migrate 8.x branches to separate git repo2020-07-16T17:23:37ZtottenMigrate 8.x branches to separate git repo__Background__: The `civicrm-drupal.git` repo has branches named `8.x-*`. However, these are not detectable/addressable via `composer`/`packagist`.
__Tasks__
* __(a)__: Create new repo `civicrm-drupal-8`. Migrate the `8.x-*` branches, ...__Background__: The `civicrm-drupal.git` repo has branches named `8.x-*`. However, these are not detectable/addressable via `composer`/`packagist`.
__Tasks__
* __(a)__: Create new repo `civicrm-drupal-8`. Migrate the `8.x-*` branches, but remove the `8.x-` prefix.
* __(b)__: Update release process to ensure that these are branched/tagged.D8 General Availabilityhttps://lab.civicrm.org/dev/drupal/-/issues/8Problem: How to address Bower dependencies installable via `composer`2020-07-16T17:23:37ZtottenProblem: How to address Bower dependencies installable via `composer`D8 General Availabilityhttps://lab.civicrm.org/dev/drupal/-/issues/9Problem: Easily allow 'vendor' directory not under the webroot2020-09-30T12:35:40ZtottenProblem: Easily allow 'vendor' directory not under the webrootThis is currently possible, but requires some patches and a build process.
**Here's the patches and process currently used by myDropWizard for Roundearth.io:**
*Patches:*
1. Find CKEditor relative to the resource URL: https://github.c...This is currently possible, but requires some patches and a build process.
**Here's the patches and process currently used by myDropWizard for Roundearth.io:**
*Patches:*
1. Find CKEditor relative to the resource URL: https://github.com/mydropwizard/civicrm-core/commit/9fc3877e2eb14e2829b530445c5e5491afc4bbe
2. Look for vendor directory above web root: https://github.com/mydropwizard/civicrm-core/commit/f57954392f8026d17b7f19f7c01ceeb65e703384
Both of those could probably be merged upstream?
*Process:*
1. Build process to copy web assets to `WEBROOT/libraries/civicrm` so they are web accessible. Here's the version from [roundearth's build process](https://gitlab.com/mydropwizard/roundearth-drops-8/blob/master/rebuild.sh#L74):
```
# Copy CiviCRM assets
asset_source=./vendor/civicrm/civicrm-core
asset_dest=./web/libraries/civicrm
mkdir -p $asset_dest
rsync -mr --include='*.'{html,js,css,svg,png,jpg,jpeg,ico,gif,woff,woff2,ttf,eot} --include='*/' --exclude='*' $asset_source/ $asset_dest/
rm -rf $asset_dest/tests
cp -r $asset_source/extern $asset_dest/
cp $asset_source/civicrm.config.php $asset_dest/
cat << EOF > $asset_dest/settings_location.php
<?php
define('CIVICRM_CONFDIR', '../../../sites');
EOF
```
2. Set the "Resource URL" to `[cms.root]/libraries/civicrm/`
**Getting support for this upstream:**
1. I think the patches might be good to just commit upstream? They don't seem controversial
2. The build process could be put in a PHP class in civicrm-corm which could be referred to as a script in a sites composer.json
3. We should be able to detect that we're using the vendor outside the webroot - could we somehow make the necessary "Resource URL" the default?5.5.0https://lab.civicrm.org/dev/drupal/-/issues/10Keep `civicrm-version.php` up-to-date without running GenCode on all builds2020-07-16T17:23:38ZtottenKeep `civicrm-version.php` up-to-date without running GenCode on all buildsWe aim to allow installing CiviCRM on Drupal 8 via `composer`/`git` without requiring the admin to run `GenCode`.
The file `civicrm-version.php` is generated by `GenCode`. A typical copy looks like this:
```php
<?php
/**
* Get the Civ...We aim to allow installing CiviCRM on Drupal 8 via `composer`/`git` without requiring the admin to run `GenCode`.
The file `civicrm-version.php` is generated by `GenCode`. A typical copy looks like this:
```php
<?php
/**
* Get the CiviCRM version.
*/
function civicrmVersion() {
return array(
'version' => '4.7.30',
'cms' => 'Drupal',
'revision' => '4.7.30',
);
}
```
A simple fix might be:
* Commit the file to `civicrm-core.git` (much like in #1).
* Update `tools/bin/scripts/set-version.php` to maintain this file. (That script is part of the workflow whenever setup a new release.)
There's one catch: the `cms` field varies depending on the local runtime. *However*, we may be lucky here -- in a cursory check, I only found a couple places that relied on it. ~~The task here would be to take a closer look and potentially remove this element.~~ We'd also need to resolve these stale references to `cms`:
* `civicrm.drush.inc` (in `civicrm-backdrop-1.x`, `civicrm-drupal-6.x`, `civicrm-drupal-7.x`, `civicrm-drupal-8.x`)
* Use constants or functions from Drupal/Drush/Backdrop to detect the active environment.
* `install/index.php` and `install/template.html`
* Remove or rewrite any optional sanity checks that rely on this field.
* Use `$installType` to backfill `$civicrm_version['cms']` (like the WordPress conditional does)D8 General Availabilityhttps://lab.civicrm.org/dev/drupal/-/issues/12Keep 'CRM/Core/DAO/AllCoreTables.data.php' up-to-date without running CRM_Cor...2020-07-16T17:23:38ZMonish DebKeep 'CRM/Core/DAO/AllCoreTables.data.php' up-to-date without running CRM_Core_CodeGen_Reflection on all buildsThis file is updated via `CRM_Core_CodeGen_Reflection` and uses `xml/templates/listAll.tpl` to populate all Civi table metadata in this php file - https://github.com/civicrm/civicrm-core/blob/master/CRM/Core/DAO/AllCoreTables.data.php .
...This file is updated via `CRM_Core_CodeGen_Reflection` and uses `xml/templates/listAll.tpl` to populate all Civi table metadata in this php file - https://github.com/civicrm/civicrm-core/blob/master/CRM/Core/DAO/AllCoreTables.data.php .
A simple fix might be:
* Extend plugins/installDatabase/InstallSchema.civi-setup.php to do this task
* Use `CRM_Core_CodeGen_Reflection` workflow to create/update `AllCoreTables.data.php` and notify this task before doing it via installer.Monish DebMonish Debhttps://lab.civicrm.org/dev/drupal/-/issues/13Contact Image uploaded from Drupal Webform doesn't render on Drupal View as a...2021-09-08T11:25:32ZjitendraContact Image uploaded from Drupal Webform doesn't render on Drupal View as a thumbnail.This is an extension of a fix done recently via https://github.com/civicrm/civicrm-core/pull/11681. As it only contained the fix to render the image on the contact summary page, we also have this issue on a Drupal view which needs to be ...This is an extension of a fix done recently via https://github.com/civicrm/civicrm-core/pull/11681. As it only contained the fix to render the image on the contact summary page, we also have this issue on a Drupal view which needs to be addressed. To replicate, upload an image for a contact using a webform and try to render it as a thumbnail on a Drupal view.
Also, if the filename of the image has a space in it, it fails to load on the view.5.43.0https://lab.civicrm.org/dev/drupal/-/issues/16[webform_civicrm] - edits to 'cart' display when using installments functiona...2020-07-16T17:23:38ZKarinG[webform_civicrm] - edits to 'cart' display when using installments functionalityWorking on this with CompuCorp
**Before:**
![image](/uploads/7ed8454c61bf9b3b098e7281d7e1b5ca/image.png)
Imagine this was configured as pay in 2 installments (two payments of $96/each) - how about something like this:
**After:**
![im...Working on this with CompuCorp
**Before:**
![image](/uploads/7ed8454c61bf9b3b098e7281d7e1b5ca/image.png)
Imagine this was configured as pay in 2 installments (two payments of $96/each) - how about something like this:
**After:**
![image](/uploads/73dc36a7fb0d1e6b590f77bb666f2a0e/image.png)https://lab.civicrm.org/dev/drupal/-/issues/17Drupal8: Get UF locale/language is not supported (ex: for inheritLocale)2020-07-16T17:23:38ZbgmDrupal8: Get UF locale/language is not supported (ex: for inheritLocale)The option for `inhericLocale` does not seem to be working. To reproduce:
* In Drupal, enable translation and enable a second language, set language-detection using the URL prefix.
* Create a multi-lingual site (admin > locale > languag...The option for `inhericLocale` does not seem to be working. To reproduce:
* In Drupal, enable translation and enable a second language, set language-detection using the URL prefix.
* Create a multi-lingual site (admin > locale > languages, enable multilingual, then enable a second language)
* Enable the "inherit CMS language" option.
![Capture_d_écran_de_2018-04-26_14-35-12](/uploads/6573bb26a55bffe8729724d5e9b028f7/Capture_d_écran_de_2018-04-26_14-35-12.png)
Result: no matter whether accessing CiviCRM in English or French, the site is always in the default language.5.3.0bgmbgmhttps://lab.civicrm.org/dev/drupal/-/issues/21Drupal8: CiviCRM menu does not use the correct locale2020-07-16T17:23:38ZbgmDrupal8: CiviCRM menu does not use the correct localeHow to reproduce:
* Create a bilingual Drupal site, with the locale module
* Setup CiviCRM as multilingual, bilingual, using URL prefix language detection (example.org/fr/civicrm)
Result: the menu is always in the default CiviCRM langu...How to reproduce:
* Create a bilingual Drupal site, with the locale module
* Setup CiviCRM as multilingual, bilingual, using URL prefix language detection (example.org/fr/civicrm)
Result: the menu is always in the default CiviCRM language (or default Drupal language?).
Debugging the issue, in Drupal, the menu JS would be called this way:
`https://example.org/en/civicrm/ajax/menujs/2/en_US/1/5H7zVVcT`
However in D8 it is being called without the language prefix:
`https://example.org/civicrm/ajax/menujs/2/en_US/1/5H7zVVcT`
I suspect it is related to `CRM_Utils_System::languageNegotiationURL()`, which seems to test for the `locale` module.
cc @JoeMurray @monish.deb5.16.2https://lab.civicrm.org/dev/drupal/-/issues/22Drupal8: implement views and multilingual CiviCRM2020-07-16T17:23:38ZbgmDrupal8: implement views and multilingual CiviCRMHow to reproduce:
* Create a bilingual Drupal site, with the locale module
* Setup CiviCRM as multilingual, bilingual, using URL prefix language detection (example.org/fr/civicrm)
* Create a view of CiviCRM Events, add the title field.
...How to reproduce:
* Create a bilingual Drupal site, with the locale module
* Setup CiviCRM as multilingual, bilingual, using URL prefix language detection (example.org/fr/civicrm)
* Create a view of CiviCRM Events, add the title field.
Result: fatal database error because it cannot find `civicrm_event.title` (should be `civicrm_event.title_en_US`).
This was a quickfix, incoming PR.
cc @JoeMurray @monish.deb @samuelsovbgmbgmhttps://lab.civicrm.org/dev/drupal/-/issues/23[webform_civicrm] - Webform CiviCRM module - Drupal 8 prototyping2020-10-15T16:29:06ZKarinG[webform_civicrm] - Webform CiviCRM module - Drupal 8 prototypingI sat down with Will & David this week to take a look at what D8 Webform-CiviCRM might look like. I've been playing with the Webform 5 module and really love it. We talked about handlers and element types and the pros & cons of those. I'...I sat down with Will & David this week to take a look at what D8 Webform-CiviCRM might look like. I've been playing with the Webform 5 module and really love it. We talked about handlers and element types and the pros & cons of those. I'm still learning the new system so I may revise this, but here are my thoughts so far.
In Webform-CiviCRM D7, there is a massive configuration form for the CiviCRM-related form settings. It configures the data handling and it also auto-generates webform elements and links them to their corresponding CiviCRM entity field. It looks like this:
![Webform-CiviCRM-D7](/uploads/68e92ea62fe22aaf37293c778aa5ee3a/Webform-CiviCRM-D7.png)
Note that checking a box on this form will actually insert a corresponding element into the Webform. I've always thought that was much more user-frieldly than the alternative of making the user create a new element and then go over to a "mapping" screen to link it to CiviCRM. So I'd like to keep that kind of behavior.
But playing around with the D8 interface, I think we could break this monolithic form up by entity and integrate it better with the webform admin screen. Here's my spitball proposal:
1. Create a bunch of new "container" type elements, one per supported CiviCRM entity type (Contact, Participant, Activity, etc).
2. Add a new button on the webform elements page to add these CiviCRM entity containers to the form.
3. Adding one would automatically enable our CiviCRM submission handler.
4. Editing a container would pop up a configuration form specific to that entity - it would look a lot like one of the panes on the webform-civicrm D7 admin screen above.
5. Checking a checkbox on that form would result in a new webform element being added into the container.
6. The admin user would still be free to move elements around and rename them. I don't see any reason why they wouldn't be able to move them outside of the container too. The mapping wouldn't be dependent on that.
7. The entity container itself could be styled to look like a fieldset, flexbox, div, etc.
Here's a photoshopped mockup of what that might look like. Note that in D8, popups float to the right on wide screens, so what you're seeing here would be the result of clicking the "Edit" button on the CiviCRM contact.
![Webform_Mockup_1](/uploads/b369bedbee01eb0f70cce22910c5472d/Webform_Mockup_1.png)https://lab.civicrm.org/dev/drupal/-/issues/24[webform_civicrm] - monies display properly but don't get processed when usin...2020-07-16T17:23:38ZKarinG[webform_civicrm] - monies display properly but don't get processed when using webform_calculator module to calculate e.g. participant fees![image](/uploads/c6a3f46f1ca9a57819370b9c3f4012dd/image.png)
![image](/uploads/ed87bfaed0cda7b8e3061573c4168735/image.png)
![image](/uploads/7ca2158df886d944766a86459a23be2f/image.png)
![image](/uploads/f7eb9556cd07695f72bed3f28ab4c8...![image](/uploads/c6a3f46f1ca9a57819370b9c3f4012dd/image.png)
![image](/uploads/ed87bfaed0cda7b8e3061573c4168735/image.png)
![image](/uploads/7ca2158df886d944766a86459a23be2f/image.png)
![image](/uploads/f7eb9556cd07695f72bed3f28ab4c8dd/image.png)
![image](/uploads/595a14b6ec110408df2560e23fce1673/image.png)colemanwcolemanwhttps://lab.civicrm.org/dev/drupal/-/issues/25View Relationship Type: Event to Participant Contact2020-07-16T17:23:38ZjohnffView Relationship Type: Event to Participant ContactSuccess! I have successfully added a new View Relationship type that allows you to connect a Contact to your Event, and even select it by role id.
But! Only the contact's core fields are in. Now, we can easily create another relationshi...Success! I have successfully added a new View Relationship type that allows you to connect a Contact to your Event, and even select it by role id.
But! Only the contact's core fields are in. Now, we can easily create another relationship to bring in the Contact's custom fields, but I can't see any barrier to bringing them in by default. How are custom fields connected to a table?https://lab.civicrm.org/dev/drupal/-/issues/28Drupal8: Deprecate the Views integration?2020-07-16T17:23:38ZbgmDrupal8: Deprecate the Views integration?From: https://github.com/civicrm/civicrm-drupal-8/pull/3#issuecomment-412927333
> "Just wanted to let you'll know that the latest CiviCRM Entity 8.x-3.x-dev version includes Views support....Not telling you what to do, but the "Core Vie...From: https://github.com/civicrm/civicrm-drupal-8/pull/3#issuecomment-412927333
> "Just wanted to let you'll know that the latest CiviCRM Entity 8.x-3.x-dev version includes Views support....Not telling you what to do, but the "Core Views Integration" could be handled by that module...." (@jackrabbithanna)
Since CiviCRM-D8 is not officially supported yet, now might be a good time to cut-off core views support? (although pingbacks report over 100 sites).
It's still a fair amount of work, however, to PSA and confirm that CiviCRM Entity feature-equivalent?
+/-1? cc @jackrabbithanna @dsnopek @eileen .. who else?https://lab.civicrm.org/dev/drupal/-/issues/31CiviMember Role sync is no longer syncing Pending memberships2022-10-08T12:04:06ZjitendraCiviMember Role sync is no longer syncing Pending membershipsPending membership does not sync roles even if the option is configured in the settings page.Pending membership does not sync roles even if the option is configured in the settings page.5.9jitendrajitendrahttps://lab.civicrm.org/dev/drupal/-/issues/33Implement userFrameworkFrontend Configuration for Drupal2019-11-24T05:41:04ZseamusleeImplement userFrameworkFrontend Configuration for DrupalThis is to support the concept of Separate frontend and backend themesThis is to support the concept of Separate frontend and backend themes5.16.0https://lab.civicrm.org/dev/drupal/-/issues/35Drupal8: CiviCRM checks assume a single-database installation2020-10-26T15:25:58ZJonGoldDrupal8: CiviCRM checks assume a single-database installationI typically set up CiviCRM in a separate database, with a single MySQL user granted the minimum necessary permissions to change both CMS and CRM.
Drupal8 is incorporating CiviCRM checks into Drupal - but I get the error message (with th...I typically set up CiviCRM in a separate database, with a single MySQL user granted the minimum necessary permissions to change both CMS and CRM.
Drupal8 is incorporating CiviCRM checks into Drupal - but I get the error message (with the permissions below) that I don't have permission to create triggers on my database.
What's actually happening is I don't have permission to create triggers on the Drupal database. I can create triggers on the Civi db.
Below you can see the command I ran that bypassed the issue.
Since this blocks Drupal upgrades, it feels reasonably serious to resolve. I feel a little lost in D8 though - I was looking for `hook_requirement`, which is how I'd ordinarily add a status check in D7, but couldn't find it (except in the install file).
```
mysql> show grants for myorg_test@localhost;
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for myorg_test@localhost |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'myorg_test'@'localhost' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, TRIGGER ON `myorg_test_civi`.* TO 'myorg_test'@'localhost' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON `myorg_test_drupal`.* TO 'myorg_test'@'localhost' |
| GRANT EXECUTE, ALTER ROUTINE ON FUNCTION `myorg_test_civi`.`civicrm_strip_non_numeric` TO 'myorg_test'@'localhost' |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
4 rows in set (0.00 sec)
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, TRIGGER ON `myorg_test_drupal`.* TO 'myorg_test'@'localhost';
Query OK, 0 rows affected (0.00 sec)```https://lab.civicrm.org/dev/drupal/-/issues/36Unfork zetacomponents/mail (also helps Drupal8)2019-01-08T14:53:17ZbgmUnfork zetacomponents/mail (also helps Drupal8)zetacomponents/mail was [forked](https://github.com/civicrm/zetacomponents-mail/tree/1.7-civi) in early 2017 for PHP 7 compatibility. However, the base branch has had updates since which fix the PHP issues, and also add a new features fo...zetacomponents/mail was [forked](https://github.com/civicrm/zetacomponents-mail/tree/1.7-civi) in early 2017 for PHP 7 compatibility. However, the base branch has had updates since which fix the PHP issues, and also add a new features for STARTTLS that might be interesting (and solves issues such as: https://github.com/civicrm/zetacomponents-mail/pull/2)
I encounted this issue while playing around with composer and Drupal8 from scratch:
```
$ composer create-project drupal-composer/drupal-project:8.x-dev myproject --stability dev --no-interaction
$ cd myproject
$ composer require civicrm/civicrm-core:5.7.2 --prefer-dist
./composer.json has been updated
> DrupalProject\composer\ScriptHandler::checkComposerVersion
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for civicrm/civicrm-core 5.7.2 -> satisfiable by civicrm/civicrm-core[5.7.2].
- civicrm/civicrm-core 5.7.2 requires zetacomponents/mail dev-1.7-civi -> no matching package found.
Potential causes:
- A typo in the package name
- The package is not available in a stable-enough version according to your minimum-stability setting
see <https://getcomposer.org/doc/04-schema.md#minimum-stability> for more details.
[...]
```
This can be fixed by specifying the URL of CiviCRM's fork, but eh, if we can remove it, why not?
cc @jackrabbithanna @dsnopekhttps://lab.civicrm.org/dev/drupal/-/issues/41Invalid regular expression on find_value_and_highlight2021-02-04T19:21:38ZshaneonabikeInvalid regular expression on find_value_and_highlightI came across this interesting little diddy... Basically, one of our users created an Organization as **(Université du Québec à Montréal**. Now that shouldn't be a real big issues, except that on a Webform (using Webform Civicrm) the cal...I came across this interesting little diddy... Basically, one of our users created an Organization as **(Université du Québec à Montréal**. Now that shouldn't be a real big issues, except that on a Webform (using Webform Civicrm) the callback to search for existing Organizations is throwing an exception. Mainly, because the ( introduces an extra element in the regular expression. Perhaps we need to add something that would escape these values?
`Uncaught SyntaxError: Invalid regular expression: /(?![^&;]+;)(?!<[^<>]*)((Université du Québec à Montréal)(?![^<>]*>)(?![^&;]+;)/: Unterminated group
at new RegExp (<anonymous>)
at find_value_and_highlight_term (js__9MDsutgYLjvNWbacIKdIM-_lWMx6j_FrTBlPkRjQkAU__3a9qPir6bBPCsLiwjm9jZa1_25kF908lNx0Z7bQ255s__FlKQa-km3xlDGPoIZZNvuMHu2QCQHy1fxdhBQcnM3Fs.js:662)
at Object.<anonymous> (js__9MDsutgYLjvNWbacIKdIM-_lWMx6j_FrTBlPkRjQkAU__3a9qPir6bBPCsLiwjm9jZa1_25kF908lNx0Z7bQ255s__FlKQa-km3xlDGPoIZZNvuMHu2QCQHy1fxdhBQcnM3Fs.js:684)
at Function.each (js__dU859nniAHOO3ZZ49DZUXr5Frl9T3QSa81hYdDf9Uas__1Tf7Fi7ZEi0LVYZbZYn2z46aXwifjwu_MFpx644_2lc__FlKQa-km3xlDGPoIZZNvuMHu2QCQHy1fxdhBQcnM3Fs.js:3)
at populate_dropdown (js__9MDsutgYLjvNWbacIKdIM-_lWMx6j_FrTBlPkRjQkAU__3a9qPir6bBPCsLiwjm9jZa1_25kF908lNx0Z7bQ255s__FlKQa-km3xlDGPoIZZNvuMHu2QCQHy1fxdhBQcnM3Fs.js:681)
at run_search (js__9MDsutgYLjvNWbacIKdIM-_lWMx6j_FrTBlPkRjQkAU__3a9qPir6bBPCsLiwjm9jZa1_25kF908lNx0Z7bQ255s__FlKQa-km3xlDGPoIZZNvuMHu2QCQHy1fxdhBQcnM3Fs.js:762)
at js__9MDsutgYLjvNWbacIKdIM-_lWMx6j_FrTBlPkRjQkAU__3a9qPir6bBPCsLiwjm9jZa1_25kF908lNx0Z7bQ255s__FlKQa-km3xlDGPoIZZNvuMHu2QCQHy1fxdhBQcnM3Fs.js:749
find_value_and_highlight_term @ js__9MDsutgYLjvNWbacIKdIM-_lWMx6j_FrTBlPkRjQkAU__3a9qPir6bBPCsLiwjm9jZa1_25kF908lNx0Z7bQ255s__FlKQa-km3xlDGPoIZZNvuMHu2QCQHy1fxdhBQcnM3Fs.js:662
(anonymous) @ js__9MDsutgYLjvNWbacIKdIM-_lWMx6j_FrTBlPkRjQkAU__3a9qPir6bBPCsLiwjm9jZa1_25kF908lNx0Z7bQ255s__FlKQa-km3xlDGPoIZZNvuMHu2QCQHy1fxdhBQcnM3Fs.js:684
each @ js__dU859nniAHOO3ZZ49DZUXr5Frl9T3QSa81hYdDf9Uas__1Tf7Fi7ZEi0LVYZbZYn2z46aXwifjwu_MFpx644_2lc__FlKQa-km3xlDGPoIZZNvuMHu2QCQHy1fxdhBQcnM3Fs.js:3
populate_dropdown @ js__9MDsutgYLjvNWbacIKdIM-_lWMx6j_FrTBlPkRjQkAU__3a9qPir6bBPCsLiwjm9jZa1_25kF908lNx0Z7bQ255s__FlKQa-km3xlDGPoIZZNvuMHu2QCQHy1fxdhBQcnM3Fs.js:681
run_search @ js__9MDsutgYLjvNWbacIKdIM-_lWMx6j_FrTBlPkRjQkAU__3a9qPir6bBPCsLiwjm9jZa1_25kF908lNx0Z7bQ255s__FlKQa-km3xlDGPoIZZNvuMHu2QCQHy1fxdhBQcnM3Fs.js:762
(anonymous) @ js__9MDsutgYLjvNWbacIKdIM-_lWMx6j_FrTBlPkRjQkAU__3a9qPir6bBPCsLiwjm9jZa1_25kF908lNx0Z7bQ255s__FlKQa-km3xlDGPoIZZNvuMHu2QCQHy1fxdhBQcnM3Fs.js:749
setTimeout (async)
do_search @ js__9MDsutgYLjvNWbacIKdIM-_lWMx6j_FrTBlPkRjQkAU__3a9qPir6bBPCsLiwjm9jZa1_25kF908lNx0Z7bQ255s__FlKQa-km3xlDGPoIZZNvuMHu2QCQHy1fxdhBQcnM3Fs.js:748
(anonymous) @ js__9MDsutgYLjvNWbacIKdIM-_lWMx6j_FrTBlPkRjQkAU__3a9qPir6bBPCsLiwjm9jZa1_25kF908lNx0Z7bQ255s__FlKQa-km3xlDGPoIZZNvuMHu2QCQHy1fxdhBQcnM3Fs.js:285
setTimeout (async)
(anonymous) @ js__9MDsutgYLjvNWbacIKdIM-_lWMx6j_FrTBlPkRjQkAU__3a9qPir6bBPCsLiwjm9jZa1_25kF908lNx0Z7bQ255s__FlKQa-km3xlDGPoIZZNvuMHu2QCQHy1fxdhBQcnM3Fs.js:285
dispatch @ js__dU859nniAHOO3ZZ49DZUXr5Frl9T3QSa81hYdDf9Uas__1Tf7Fi7ZEi0LVYZbZYn2z46aXwifjwu_MFpx644_2lc__FlKQa-km3xlDGPoIZZNvuMHu2QCQHy1fxdhBQcnM3Fs.js:4
v.handle @ js__dU859nniAHOO3ZZ49DZUXr5Frl9T3QSa81hYdDf9Uas__1Tf7Fi7ZEi0LVYZbZYn2z46aXwifjwu_MFpx644_2lc__FlKQa-km3xlDGPoIZZNvuMHu2QCQHy1fxdhBQcnM3Fs.js:4`https://lab.civicrm.org/dev/drupal/-/issues/43Drupal8: composer requires psr/log ~1.0.0, incompatible with psr/log 1.1.02019-01-09T02:48:58ZJonGoldDrupal8: composer requires psr/log ~1.0.0, incompatible with psr/log 1.1.0I found this issue reported on Stack Exchange: https://civicrm.stackexchange.com/q/27832/12
`civicrm-core` and `civicrm-cxn-rpc` both specify a dependency on `psr/log ~1.0.0`. `psr/log` version 1.1 came out last month, and apparently s...I found this issue reported on Stack Exchange: https://civicrm.stackexchange.com/q/27832/12
`civicrm-core` and `civicrm-cxn-rpc` both specify a dependency on `psr/log ~1.0.0`. `psr/log` version 1.1 came out last month, and apparently some Drupal-related package already requires it.
There are only three commits' difference between 1.0.2 and 1.1.0, and one is in the README. I'm not a PSR-3 expert, but my sense is that we can change our composer dependencies to support the newer version.https://lab.civicrm.org/dev/drupal/-/issues/49Clearing CiviCRM cache not regenerating the angular-modules.js2022-12-02T01:43:08ZshaneonabikeClearing CiviCRM cache not regenerating the angular-modules.js**What Happened**
I realize this //could be// an edge case, but I accidentally deleted the angular-modules.js file when installing D8 with CiviCRM.
**What did I expect**
Either that an error message on /civicrm/a/#/status indicating ho...**What Happened**
I realize this //could be// an edge case, but I accidentally deleted the angular-modules.js file when installing D8 with CiviCRM.
**What did I expect**
Either that an error message on /civicrm/a/#/status indicating how I could rebuild this file and/or when clearing the CiviCRM cache it would be regenerated.
**What I tried**
- Tried to clear the cache (nothing changed)
- Tried to run composer update (nothing changed)
- Wasn't sure where or how to run bower update in order to attempt that part
I would be happy to add additional information on the wiki as well if that helps with relation to this. I just thought that perhaps we could put some additional messages do indicate that angular is not found and therefore some parts might not work properly.https://lab.civicrm.org/dev/drupal/-/issues/52Drupal8: getUrlPath: avoid relying on the deprecated 'q' variable2020-05-27T12:49:03ZbgmDrupal8: getUrlPath: avoid relying on the deprecated 'q' variableContext: Symbiotic has an extension for theming that uses this trick to detect whether it's running in a frontend or backend form (to avoid loading our CSS on the frontend):
```
function adminimore_civicrm_config(&$config) {
$path = C...Context: Symbiotic has an extension for theming that uses this trick to detect whether it's running in a frontend or backend form (to avoid loading our CSS on the frontend):
```
function adminimore_civicrm_config(&$config) {
$path = CRM_Utils_System::getUrlPath();
$item = CRM_Core_Menu::get($path);
$resources = CRM_Core_Resources::singleton();
// if item is not known, assume it's public (e.g. wordpress shortcode)
if ($item && !CRM_Utils_Array::value('is_public', $item)) {
$resources->addStyleFile(ADMINIMORE_RESOURCE, 'css/civicrm-admin.css', 15, 'html-header');
$resources->addStyleFile(ADMINIMORE_RESOURCE, 'css/civicrm-buttons.css', 15, 'html-header');
}
$resources->addStyleFile(ADMINIMORE_RESOURCE, 'css/civicrm-menu.css', 15, 'html-header');
_adminimore_civix_civicrm_config($config);
}
```
In Drupal8, we were having weird problems where the CSS would sometimes not load. If we refreshed, it loaded, but after some time, the bug would appear again and we would stumble on a screen using the default CiviCRM CSS.
After some poking around, it seems that Drupal8 deprecated the 'q' variable, which CiviCRM is still using in `CRM_Utils_System::getUrlPath()`.
I did a quick patch to test a workaround, which so far seems to be working:
```
public static function getUrlPath() {
if (CRM_Core_Config::singleton()->userFramework == 'Drupal8') {
if (class_exists('Drupal') && \Drupal::hasContainer()) {
$path = \Drupal::service('path.current')->getPath();
// Remove '/' prefix. Ex: '/civicrm/contribute' becomes 'civicrm/contribute'.
if ($path) {
$path = substr($path, 1);
// Remove the language prefix, if present
// The URL returned by Drupal randomly includes the language prefix, sometimes not.
if (preg_match('/^\w\w\//', $path)) {
$path = substr($path, 3);
}
return $path;
}
}
}
if (isset($_GET[CRM_Core_Config::singleton()->userFrameworkURLVar])) {
return $_GET[CRM_Core_Config::singleton()->userFrameworkURLVar];
}
return NULL;
}
```
A cleaner solution might be to check if the `$config->userSystem->getUrlPath()` function exists, and if it does, call it?https://lab.civicrm.org/dev/drupal/-/issues/59deprecate civicrm_engage2021-02-02T00:49:50Zjamiedeprecate civicrm_engageI'd like to propose we begin a process of deprecating and then removing the civicrm_engage module from the civivicrm-drupal repository.
I've just posted a blog outlining replacement extensions that can now be used with some instructions...I'd like to propose we begin a process of deprecating and then removing the civicrm_engage module from the civivicrm-drupal repository.
I've just posted a blog outlining replacement extensions that can now be used with some instructions for anyone still using civicrm_engage:
https://civicrm.org/blog/jamie/civicrmengage-is-dead-long-live-civicrmengage
I'm not sure the best process to take to deprecate a drupal module. Open to suggestions or, if we have already deprecated a drupal module in the past, pointers to the documentation or code changes we made.5.18.0https://lab.civicrm.org/dev/drupal/-/issues/90SMS limit is hardcoded at 460 but should be changeable somewhere2021-02-04T19:26:45ZjasonobrownSMS limit is hardcoded at 460 but should be changeable somewhereTwillio (and probably other sms providers) allows SMS messages up to 1600 characters, but Civi has the limit hardcoded at 460. I've verified that by simply going to CRM/SMS/Provider.php and changing MAX_SMS_CHAR from 460 to 1600 the sys...Twillio (and probably other sms providers) allows SMS messages up to 1600 characters, but Civi has the limit hardcoded at 460. I've verified that by simply going to CRM/SMS/Provider.php and changing MAX_SMS_CHAR from 460 to 1600 the system now accepts (and sends) messages up to 1600 characters. It seems logical that the character limit should able to be adjusted and stored somewhere rather than set as a static value in the code. We are currently using the larger limit, and would really like to see this implemented asap so that we can stop manually updating the code each time we update civi.https://lab.civicrm.org/dev/drupal/-/issues/93Create access role for importing memberships2019-11-04T08:53:10ZedvanleeuwenCreate access role for importing membershipsAt the moment, there is an access role to import contacts, but not for memberships. The latter shows up in the menu of users who are not allowed to import contacts.
It would be better to have a separate role for this or to attach this a...At the moment, there is an access role to import contacts, but not for memberships. The latter shows up in the menu of users who are not allowed to import contacts.
It would be better to have a separate role for this or to attach this access to the contact import role.https://lab.civicrm.org/dev/drupal/-/issues/96Add user format to CiviCRM Entity2021-02-04T19:28:45ZedvanleeuwenAdd user format to CiviCRM EntityFeature request: I would like to have the following user format added to CiviCRM Entity.
In civicrm_entity.module, function _civicrm_entity_options_username_format:
` 'nick.middle.last' => t('Nick.Middle.Last'),
'nick.middlelast'...Feature request: I would like to have the following user format added to CiviCRM Entity.
In civicrm_entity.module, function _civicrm_entity_options_username_format:
` 'nick.middle.last' => t('Nick.Middle.Last'),
'nick.middlelast' => t('Nick.MiddleLast'),`
[civicrm_entity.module](/uploads/bd29a74959e50bc5fc2411891d0a94e9/civicrm_entity.module)
In civicrm_entity.module, function civicrm_entity_action_create_user:
```
case 'nick.middle.last':
if (!empty($contact['middle_name'])) {
$params['name'] = _civicrm_entity_clean_login_name(trim($contact['nick_name']) . "." . trim($contact['middle_name']) . "." . trim($contact['last_name']));
} else {
$params['name'] = _civicrm_entity_clean_login_name(trim($contact['nick_name']) . "." . trim($contact['last_name']));
}
break;
case 'nick.middlelast':
if (!empty($contact['middle_name'])) {
$params['name'] = _civicrm_entity_clean_login_name(trim($contact['nick_name']) . "." . trim($contact['middle_name']) . trim($contact['last_name']));
} else {
$params['name'] = _civicrm_entity_clean_login_name(trim($contact['nick_name']) . "." . trim($contact['last_name']));
}
break;
```
An adapted file has been attached.https://lab.civicrm.org/dev/drupal/-/issues/97Status report update for Drupal (similar to what was done for Backdrop)2020-01-29T14:53:02ZlarynStatus report update for Drupal (similar to what was done for Backdrop)I wrote a PR for Backdrop some time back and have been meaning to check if it would be desired for Drupal 7 as well -- if so I would be happy to base a MR here off of what I did there. Here's a visual of how it looks in Backdrop's Status...I wrote a PR for Backdrop some time back and have been meaning to check if it would be desired for Drupal 7 as well -- if so I would be happy to base a MR here off of what I did there. Here's a visual of how it looks in Backdrop's Status Report page (Drupal 7 status report would obviously look a little different):
![Screen_Shot_2019-12-04_at_7.10.28_PM](/uploads/0a83d103f2aec9652797d3ce71c41345/Screen_Shot_2019-12-04_at_7.10.28_PM.jpg)
Would a version of this for Drupal 7 be accepted?https://lab.civicrm.org/dev/drupal/-/issues/104Drupal8 + Plesk: User path missing from cmsRootPath()2020-01-15T06:04:53ZRar9Drupal8 + Plesk: User path missing from cmsRootPath()The cmsRootPath() is not able to get absolute path, specifically the user folder portion of the path on Plesk.
This might be caused by multisite setup, function being insufficient or permission.
To fix CRON for plesk the following nee...The cmsRootPath() is not able to get absolute path, specifically the user folder portion of the path on Plesk.
This might be caused by multisite setup, function being insufficient or permission.
To fix CRON for plesk the following needs to be changed
vendor/civicrm/civicrm-core/CRM/Utils/System/Drupal8.php at line 441:
```diff
-return $civicrm_paths['cms.root']['path'];
+return realpath($_SERVER["DOCUMENT_ROOT"]) . '/'.array_slice(explode('/', $civicrm_paths['cms.root']['path']), -1)[0];
```
The cause is that in Plesk all files and directories under a domain document root directory should belong to psacln group and to the sysuser user. Where sysuser is a user of a corresponding subscription.
CIVICRM Cron only expects a chown -R www-data|psaserv .
The way to set correct permission is a correct way to fix the issue for subdomain.
This is described in the article above in step 3. https://support.plesk.com/hc/en-us/articles/115004094934https://lab.civicrm.org/dev/drupal/-/issues/154Proposal - fix for How do I add CiviCRM Activity attachment to View2021-02-04T19:20:09ZeileenProposal - fix for How do I add CiviCRM Activity attachment to ViewI'm adding this gitlab to track https://github.com/civicrm/civicrm-drupal/pull/382 which I'm going to close as it stagnated 4 years agoI'm adding this gitlab to track https://github.com/civicrm/civicrm-drupal/pull/382 which I'm going to close as it stagnated 4 years agohttps://lab.civicrm.org/dev/drupal/-/issues/119Exception handling - 'Allowed memory size' exhasted issues2020-10-05T22:47:08ZRob_SException handling - 'Allowed memory size' exhasted issuesI'm having issues with Exception handling. I've hit a few places, where rather than getting provided with a useful error message, I am getting WSOD and then in the Apache error logs I am seeing "PHP Fatal error: Allowed memory size of x...I'm having issues with Exception handling. I've hit a few places, where rather than getting provided with a useful error message, I am getting WSOD and then in the Apache error logs I am seeing "PHP Fatal error: Allowed memory size of xxx bytes exhausted (tried to allocate xxx bytes) in Unknown on line 0".
"Unknown on line 0" isn't very helpful. One instance where I am getting this is if I want to view a contribution page, that has "Allow individuals to contribute and / or signup for membership on behalf of an organisation?" selected, but the user does not have the 'CiviCRM: profile create' permission.
It's taken me a while to narrow down the problem following a debug_backtrace() in templates/CRM/Contribute/Form/Contribution/Main.tpl.
I've tracked it as far as CRM_Core_Exception. The constructor method here is working ok, but there is another method, getErrorData() which is somehow getting called, but I cannot figure out where from. It seems to me that there must be some kind of infinite loop thing going on with one Exception class calling another. CRM_Core_Exception extends PEAR_Exception which extends Exception.
I have at least three other instances of WSOD on the site, with the same uninformative 'Allowed memory size ..' errors in the Apache log, but I haven't got as far as tracking them down to see if it is the same thing yet.
Is anyone else having problems like this? Would appreciate any thoughts.5.31.0https://lab.civicrm.org/dev/drupal/-/issues/135Use Exception handling for drush (d7) commands - specifically civicrm-upgrade-db2021-02-15T02:50:40ZeileenUse Exception handling for drush (d7) commands - specifically civicrm-upgrade-dbWhen there is a problem upgrading via drush this is how it looks
![Screen_Shot_2020-08-19_at_2.33.52_PM](/uploads/7f3a15ac5a07104926c78d77c9ff168d/Screen_Shot_2020-08-19_at_2.33.52_PM.png)
I think we should set exception handling 'some...When there is a problem upgrading via drush this is how it looks
![Screen_Shot_2020-08-19_at_2.33.52_PM](/uploads/7f3a15ac5a07104926c78d77c9ff168d/Screen_Shot_2020-08-19_at_2.33.52_PM.png)
I think we should set exception handling 'somewhere' & my current best guess as to where is
--- a/CRM/Upgrade/Headless.php
+++ b/CRM/Upgrade/Headless.php
@@ -30,6 +30,8 @@ class CRM_Upgrade_Headless {
set_time_limit(0);
}
+ // As long as the error scope is not deconstructed exceptions will be thrown.
+ $errorScope = CRM_Core_TemporaryErrorScope::useException();
$upgrade = new CRM_Upgrade_Form();https://lab.civicrm.org/dev/drupal/-/issues/178Drupal 8 - End of Life2023-05-13T18:45:09ZtottenDrupal 8 - End of LifeDrupal 8 officially went end-of-life in November 2021 (https://www.drupal.org/psa-2021-11-30). The focus of this issue is to gauge sentiment about (and identify tasks for) ending CiviCRM's Drupal 8.x support.
(_Note: This issue has no i...Drupal 8 officially went end-of-life in November 2021 (https://www.drupal.org/psa-2021-11-30). The focus of this issue is to gauge sentiment about (and identify tasks for) ending CiviCRM's Drupal 8.x support.
(_Note: This issue has no impact on CiviCRM's support for Drupal 7 or Drupal 9 -- both continue to be supported by `drupal.org` and `civicrm.org`._)
Rationale
----------
@DaveD [made the case on Github](https://github.com/civicrm/civicrm-core/pull/23302#discussion_r858700890) as follows
> * There's the 3 reasons already mentioned:
> * Has been EOL for 6 months
> * No security updates.
> * And there have been recent drupal security fixes which would have helped prompt people to move off 8 if they were still on it.
> * Civi works equally as well on 9 as on 8
> * There's support for dropping it in chat, with nobody dissenting: https://chat.civicrm.org/civicrm/pl/qh6t761dt7gsdyp78m6stbmpwo
> * Drupal 8 to 9 is _very_ different than 6 to 7. Drupal 9 is identical to drupal 8.9 except for some deprecated functions. It's not much different than if they had called it 8.10.
> * There were many blog posts about this on the internet, about how easy it would be to upgrade compared to other jumps.
> * There was plenty of awareness ahead of time in the drupal world that drupal 8 would be unsupported.
> * From May 2021 to November 2021, the only updates for drupal 8.9.x were security updates, with repeated notices that 8 was becoming EOL.
> * There was a module available that was pretty good about pointing out what if anything you needed to change.
> * There is no CIVICRM_UF=Drupal9, because it's not needed.
I would add two more items in favor of dropping D8:
* ___Drupal 10 Support___: Preserving D8 may make it harder to add D10. While most changes can be bridged to support 2 versions major (eg D8+D9 or D9+D10), it gets more complicated with 3 major versions (D8+D9+D10). We've encountered at least one issue (involving changes in Symfony Dispatcher / PSR-14) that gets prickly with 3 major versions.
* ___Pingbacks___: There are only ~30 Civi deployments still reporting Drupal 8.x. They represent <1% of Civi-Drupal deployments.
* Note: This is based on directly examining pingbacks from 2022 -- and only counting sites with multiple pingbacks (e.g. to exclude most ephemeral test-sites). The data on `stats.civicrm.org` is confusing in this regard, because Drupal 8.x and Drupal 9.x are lumped together with UF `Drupal8`. My comments are based on examining actual version-numbers and not just UF name.
Tasks
-----
There are a few tasks to do as follow-up:
* Update installation guide
* Remove Drupal 8.x from test infra
Suggested Emojis
----------------
Please do register a quick reaction on D8 EOL. Some suggested emojis:
* :rocket: - Remove Drupal 8 compatibility at the soonest convenience.
* :turtle: - Remove Drupal 8 compatibility... just not quite yet. (Keep it until 5.51 ESR).
* :shield: - Protect Drupal 8 compatibility for a longer period of time.
* :bangbang: - Extra importance modifier. (Add this if the sentiment on the first emoji is strong - eg if you will be significantly impacted by the issue.)
(Flag whichever is the soonest that you think is appropriate/acceptable.)
(Example: If you maintain a site that's been held back on D8 because of some complicated issue and cannot resolve it in the near future, then you could say ":shield: :bangbang:".)
(You may see `totten` on all emojis for a while, since I put them in as placeholders.)https://lab.civicrm.org/dev/drupal/-/issues/182Drupal 7 modules not ported to Drupal 9 yet2022-09-09T10:08:56Zluke.stewartDrupal 7 modules not ported to Drupal 9 yetCurrently there are a number of Drupal 7 modules that have not been ported to Drupal 9 as a - comes bundled with CiviCRM - code located within the CiviCRM codebase on install.
This can be seen by comparing
https://github.com/civicrm/civ...Currently there are a number of Drupal 7 modules that have not been ported to Drupal 9 as a - comes bundled with CiviCRM - code located within the CiviCRM codebase on install.
This can be seen by comparing
https://github.com/civicrm/civicrm-drupal/tree/7.x-master/modules
and
https://github.com/civicrm/civicrm-drupal-8/tree/master/modules/
Now a number of these modules it doesn't make sense to run in D9:
Views, CiviCRM OG Sync CiviCRM Engage and possibly others?
Some have a D9 module:
CiviCRM Group Roles has been set up as a stand alone project
https://www.drupal.org/project/civicrm_group_roles
CiviCRM Theme has been set up as part of the civicrm-drupal-8 codebase
CiviCRM Member Roles has been proposed as a PR to the drupal-8 repo but this has been stalled for a while now.
https://github.com/civicrm/civicrm-drupal-8/pull/66
I feel like options for modules here are now:
- A) 🍎 Set up as a stand alone project leave it to Site Builders/Maintainers as to whether to install or not.
- B) 🍌 Set up as a stand alone project but require as a dependency via composer so code gets installed when installing CiviCRM
Do we have criteria for deciding which option in general?
Do we have criteria for deciding which option should be applied in the case of CiviCRM Member Roles?
- C) 🥕 Include within the CiviCRM Drupal codebase via the civicrm/civicrm-drupal-8 project
Do we need a general criteria before deciding approach for CiviCRM Member Roles?
I think probably we would not want to use B unless we wanted something in a separate module that was required for the vast majority of installs of CiviCRM to run?
Given that there has been little appetite for CiviCRM Member Roles perhaps the approach is to split this into it's own module on the basis that most D9 sites to date are probably not using - therefore perhaps this code should not be required to be present on all CiviCRM installs.
However - we still have a lot of sites running D7 - and perhaps the sites that would use Member Roles are mainly running D7?