Drupal issueshttps://lab.civicrm.org/dev/drupal/-/issues2020-07-16T17:23:38Zhttps://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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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 @dsnopek