Development issueshttps://lab.civicrm.org/groups/dev/-/issues2021-02-24T18:47:17Zhttps://lab.civicrm.org/dev/translation/-/issues/66Should the colon of field labels be inside or outside ts()?2021-02-24T18:47:17ZcolemanwShould the colon of field labels be inside or outside ts()?I'm working on an Angular UI where labels for checkboxes do not end with a `:` (because with checkboxes, labels are on the right) but labels for text inputs end with a `:` (because with text fields, labels are on the left). In one sectio...I'm working on an Angular UI where labels for checkboxes do not end with a `:` (because with checkboxes, labels are on the right) but labels for text inputs end with a `:` (because with text fields, labels are on the left). In one section of the UI, the colon _conditionally_ appears if you check the box (because other options appear to the right).
![image](/uploads/7928c1c765f0cecb8c158e5f93b9d7cb/image.png)
As you can see in the screenshot, checking the box adds a colon to the labels "Link:" "Tooltip:" and "Rewrite:" because visually they now represent more than just the checkbox, but everything to their right as well.
Here's my question. Currently the code for these labels looks like this:
````js
{{ isChecked ? ts('Label:') : ts('Label') }}
````
This will work fine in other languages if the translation is done thoroughly, however if the two strings get translated differently (or one gets translated and the other does not) then it will cause a bizarre jump as the entire string changes!
That sounds bad, so I'm wondering if the lesser of two evils would be to only put the word inside `ts()` and conditionally add the literal `:` character. Would that be terrible in some languages?https://lab.civicrm.org/dev/core/-/issues/2417Proposal add support for latin American preferred language2023-07-02T05:03:20ZeileenProposal add support for latin American preferred languageCurrently when editing the preferred language for a contact we have these 3 spanish options
![image](/uploads/123b26710174bc10869c2cc79d2b17c2/image.png)
Our standard appears to be the IETF language tag
https://en.wikipedia.org/wiki/La...Currently when editing the preferred language for a contact we have these 3 spanish options
![image](/uploads/123b26710174bc10869c2cc79d2b17c2/image.png)
Our standard appears to be the IETF language tag
https://en.wikipedia.org/wiki/Language_code
![image](/uploads/e630095633c71b8de1194a4008452681/image.png)
However, we don't offer es-419 "Spanish appropriate for the Latin America and Caribbean region, using the UN M.49 region code"
This ommission is not just at the option value level - but at the schema level. In order to support this language variant we need to alter the schema to accept 6 rather than 5 characters for the preferred_language field
```
<field>
<name>preferred_language</name>
<title>Preferred Language</title>
<type>varchar</type>
<length>5</length>
```
@bgmhttps://lab.civicrm.org/dev/core/-/issues/2416Search kit text field 'is null' issue2021-03-18T02:14:11ZeileenSearch kit text field 'is null' issueI'm seeing an issue on search kit that we solved in civireport by treating 'is null' as 'is empty' on text fields
Basically I want to search for people with no value in my custom field 'custom field'. It's in the constituent custom data...I'm seeing an issue on search kit that we solved in civireport by treating 'is null' as 'is empty' on text fields
Basically I want to search for people with no value in my custom field 'custom field'. It's in the constituent custom data set and anyone who has had this data set edited WILL have a value on that field ('') - so I'm looking for what we call in Search Builder 'Is Empty' - because I don't have that option I choose 'is null' - but that doesn't do what I want
As an sql writer I know I could use 'LIKE '%'' but I don't think that is intuitivehttps://lab.civicrm.org/dev/core/-/issues/2415SearchKit request - aggregate without group by2024-01-01T04:53:51ZeileenSearchKit request - aggregate without group byWe hit an issue today where we wanted to do
```SELECT SUM(total_amount) FROM civicrm_contribution WHERE.....```
Search kit does not expose aggregate options with out group by exposed and my attempt to choose a pseudo-group-by (a field ...We hit an issue today where we wanted to do
```SELECT SUM(total_amount) FROM civicrm_contribution WHERE.....```
Search kit does not expose aggregate options with out group by exposed and my attempt to choose a pseudo-group-by (a field that would be the same on all records) made the theory inefficient. Obviously the requirement for a GROUP BY is purely a UI thing - not an sql thinghttps://lab.civicrm.org/dev/core/-/issues/2413Invalid ODT generated when tokens contain XML reserved symbols2023-07-16T05:03:23ZLunarInvalid ODT generated when tokens contain XML reserved symbolsOverview
----------------------------------------
The *Print/Merge* feature creates broken ODT file using an ODT template with tokens if the data contains an ampersand (&). The `&` character gets written directly to the `content.xml`, th...Overview
----------------------------------------
The *Print/Merge* feature creates broken ODT file using an ODT template with tokens if the data contains an ampersand (&). The `&` character gets written directly to the `content.xml`, therefore creating invalid XML, and therefore an invalid ODT.
Reproduction steps
----------------------------------------
1. Create a contact with `Test & Test` in *Adressee*.
1. Create an ODT template containing `{contact.addressee}`.
1. Open the *Print/Merge* activity on the previously created contact.
1. Select the previously created ODT as template.
1. Perform the merge.
Current behaviour
----------------------------------------
The resulting ODT file is broken.
Expected behaviour
----------------------------------------
A valid ODT file should be generated (eg. reserved XML symbols should be properly escaped).
Environment information
----------------------------------------
* __CiviCRM:__ 5.34.0
* __PHP:__ 7.3
* __CMS:__ Drupal 9.1Björn EndresBjörn Endreshttps://lab.civicrm.org/dev/core/-/issues/2412Allow Entities within Afform to reference each other for values2021-07-02T03:13:28ZseamusleeAllow Entities within Afform to reference each other for valuesProposal:
To allow Entities to reference each other to get the relevant values to be used by afform:
Example:
Create an Afform that has Individual Fields but also you want to create an Activity with it, Allow for the source_contact_id...Proposal:
To allow Entities to reference each other to get the relevant values to be used by afform:
Example:
Create an Afform that has Individual Fields but also you want to create an Activity with it, Allow for the source_contact_id field to be set to something like `Individual1.id` or similar which is then translated in the save process to the appropriate id
Perhaps initially this should just be limited to ID fields I'm not sure. I'm thinking that we would probably have to come up with a angular way of dynamically populating the list of known fields about the other entity and then in the Save pass through an array of created Entities but this may also need to do some work on working through the logic i.e. ensure that Individual is created before the Activity for instance
@colemanw @eileen @totten @JoeMurray5.39.0seamusleeseamusleehttps://lab.civicrm.org/dev/core/-/issues/2411On New Campaign form, placeholder text for status is weird2021-03-10T01:23:11ZDaveDOn New Campaign form, placeholder text for status is weirdIt says "- select Campaign -".
It's a minor thing but in trying to see where it's coming from, I _think_ this is supposed to come from metadata somewhere, but it's falling back to the entity title, so is likely a generic issue, except t...It says "- select Campaign -".
It's a minor thing but in trying to see where it's coming from, I _think_ this is supposed to come from metadata somewhere, but it's falling back to the entity title, so is likely a generic issue, except that it's rare that an entity's status is an optional field so you don't see it anywhere else.
So then that brings up the question of whether the status field for campaigns should be optional. What does it mean for a campaign to be status-less?
Maybe ditto for Grants, except there it's both required AND shows you the placeholder, whereas normally for required you don't have the placeholder.5.37.0https://lab.civicrm.org/dev/core/-/issues/2409User with the permission 'access my cases and activities' cannot access there...2021-02-23T09:22:26ZkainukUser with the permission 'access my cases and activities' cannot access there case if they are closed.Overview
----------------------------------------
CiviCRM defines the permission `access my cases and activities`. It's for the user that do not need access to all the cases in the system, but only the cases of clients they have a relati...Overview
----------------------------------------
CiviCRM defines the permission `access my cases and activities`. It's for the user that do not need access to all the cases in the system, but only the cases of clients they have a relationship with. However, the moment a case is closed it is not accessible any more.
Reproduction steps
----------------------------------------
1. Login as a user with only `access my cases and activities` and no `access all cases and activities`. Below is a script to create such a user. In this example, she is called Casey Coördinator'.
1. Create a new case (for example for 'Housing Support').
![casey](/uploads/554f2ceaf44808b4d8e8d80c8e4e271c/casey.png)
1. Casy is allowed to see and change this case because she has the relationship `Homeless Services Coordinator is` (1).
1. Close the case at (2). This is done by changing the status from 'Ongoing' to 'Resolved'
Current behaviour
----------------------------------------
Immediately after closing a message pops up:
![Selection_016](/uploads/a5cb1359f6bcde2cc8d479c3d5cccb80/Selection_016.png)
The user cannot access this case anymore.
On the case dashboard, the case is still shown in the list of closed cases. The manage option gives the same error.
Expected behaviour
----------------------------------------
The case must be still available for the user.
Environment information
----------------------------------------
This is tested on the dmaster version in combination with drupal. The following bash script can be used to create a role with the privileges to test.
```
drush role:create casehandler
drush role:add:perm casehandler 'access CiviCRM'
drush role:add:perm casehandler 'access CiviReport'
drush role:add:perm casehandler 'access Contact Dashboard'
drush role:add:perm casehandler 'access my cases and activities'
drush role:add:perm casehandler 'add cases'
drush role:add:perm casehandler 'add contacts'
drush role:add:perm casehandler 'edit all contacts'
drush role:add:perm casehandler 'view all contacts'
drush ucrt casey --password='welcome' --mail='casey@example.org'
drush user:add:role casehandler casey
```
Functional Discussion
---------------------------------------
My customer says this is new behaviour, seen the first time after the upgrade. I can understand that there is a need to revoke access to a case. However, a more logical way to do this would be to remove or re-assign the relationship.
Some technical details
----------------------------------------
The lack of permission `access all cases and activities` on line 53 in `CRM_Case_Page_Tab` triggers a search for user_cases. And in this search `CRM_Case_BAO_Case::getCases` the closed statuses are excluded on line 527.https://lab.civicrm.org/dev/core/-/issues/2408Search kit - filter by groups2021-07-03T00:09:20ZeileenSearch kit - filter by groupsOn testing our first search-off-the-block with search kit I had some pretty bad performance issues (it didn't load). We used to have the same issue with CiviReport until I did some performance work which basically did the following
1) c...On testing our first search-off-the-block with search kit I had some pretty bad performance issues (it didn't load). We used to have the same issue with CiviReport until I did some performance work which basically did the following
1) created a temporary table of all the contact in the filtered group/s
2) used that table as the base table ie SELECT * FROM tempTABLE as hidden_table INNER JOIN civicrm_contact a ON a.id = hidden_table.id
3) told our users to always include a group filter in any reports
I worry that our thinking about how to 'properly' solve the groups issue might be blocking us from 'a solution that works as well as our existing searches/reports' - which could have some pretty big constraints on what is permitted (ie. you can filter by membership in specific group ids but that's it - which is pretty much all that works well currently) - as long as the api signature is OK-ish we can change what is under the hood later
Note the report in question was a Lybunt but the above does pretty much apply to all our reports
@totten @colemanw @seamuslee5.39.0https://lab.civicrm.org/dev/core/-/issues/2407Search kit uses a maria-db-reserved word2021-02-22T23:05:46ZeileenSearch kit uses a maria-db-reserved wordI found that when running the count query I was getting a db error - it turned out the word 'rows' in the below query is reserved in Maria DB from 10.2.4
```
SELECT count(*) AS `c` FROM ( SELECT `a`.`id` AS `id` FROM civicrm_contact a I...I found that when running the count query I was getting a db error - it turned out the word 'rows' in the below query is reserved in Maria DB from 10.2.4
```
SELECT count(*) AS `c` FROM ( SELECT `a`.`id` AS `id` FROM civicrm_contact a INNER JOIN `civicrm_contribution` `Contact_Contribution_contact_id_01` ON `Contact_Contribution_contact_id_01`.`contact_id` = `a`.`id` AND `a`.`id` = `Contact_Contribution_contact_id_01`.`contact_id` AND
blah blah
WHERE bla blah GROUP BY `a`.`id` ) AS rows;
```
https://mariadb.com/kb/en/reserved-words/5.35.0https://lab.civicrm.org/dev/drupal/-/issues/157Drupal 9 installation errors2021-03-11T21:48:29ZsadashivDrupal 9 installation errorsAs per the documentation at https://docs.civicrm.org/installation/en/latest/drupal8/ we need a clean drupal 8 or 9 and we can do a composer install.
Steps to replicate:
1) Download composer.json and composer.lock from https://github.com...As per the documentation at https://docs.civicrm.org/installation/en/latest/drupal8/ we need a clean drupal 8 or 9 and we can do a composer install.
Steps to replicate:
1) Download composer.json and composer.lock from https://github.com/drupal/recommended-project/tree/9.1.x this gives latest drupal 9 dev and do a composer install or download and install drupal. Now we have a clean drupal 9.1 installed
2) cd /var/www/d8.example.org
3) composer config extra.enable-patching true
4) composer require civicrm/civicrm-asset-plugin:'~1.1'
5) composer require civicrm/civicrm-{core,packages,drupal-8}
Steps 2 to 5 are from the documentation.
Expected result: Civicrm packages are installed
Observed result:
````
Using version ^5.34 for civicrm/civicrm-core
Using version ^5.34 for civicrm/civicrm-packages
Using version ^5.34 for civicrm/civicrm-drupal-8
./composer.json has been updated
Running composer update civicrm/civicrm-core civicrm/civicrm-packages civicrm/civicrm-drupal-8
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Root composer.json requires civicrm/civicrm-core ^5.34 -> satisfiable by civicrm/civicrm-core[5.34.0].
- civicrm/civicrm-core 5.34.0 requires pear/validate_finance_creditcard dev-master -> found pear/validate_finance_creditcard[dev-master] but it does not match your minimum-stability.
Problem 2
- civicrm/civicrm-core 5.34.0 requires pear/validate_finance_creditcard dev-master -> found pear/validate_finance_creditcard[dev-master] but it does not match your minimum-stability.
- civicrm/civicrm-drupal-8 5.34.0 requires civicrm/civicrm-core >=5.21.0 -> satisfiable by civicrm/civicrm-core[5.34.0].
- Root composer.json requires civicrm/civicrm-drupal-8 ^5.34 -> satisfiable by civicrm/civicrm-drupal-8[5.34.0].
Installation failed, reverting ./composer.json and ./composer.lock to their original content.
`````
I think setting proper version for validate_finance_creditcard instead of dev-master in the composer.json file of civicrm should fix it, but as it is composer install I can't test this.
Environment details:
php: 7.4 (I know this is not completely supported but installation should go through)
mysql: 5.7
Operating system: Tried on Ubuntu and Centos.
composer version: 2.0.8
Am I missing something in the installation?
Thanks,
Sadashiv.https://lab.civicrm.org/dev/core/-/issues/2406Add link from afform edit screen to the form url2021-02-23T09:18:58ZeileenAdd link from afform edit screen to the form urlMinor thing - but helpful as it's confusing for people to have to copy & past the url fragmentMinor thing - but helpful as it's confusing for people to have to copy & past the url fragment5.36.0seamusleeseamusleehttps://lab.civicrm.org/dev/core/-/issues/2405More operators for search kit2023-07-13T05:03:25ZeileenMore operators for search kitCurrently searchkit supports '=' or 'LIKE '%x' but in order to start to replace some of the dashlets created by CiviReport I think more flexibility is needed - for example if I want an afform to help me find donors with a total giving **...Currently searchkit supports '=' or 'LIKE '%x' but in order to start to replace some of the dashlets created by CiviReport I think more flexibility is needed - for example if I want an afform to help me find donors with a total giving **Greater Than** x. Another example is NOT IN - as currently on the activities dashlet
@colemanw has already added date search ranges ('this.week') etc to give some flexibility.https://lab.civicrm.org/dev/core/-/issues/2404Afform permissions - open access didn't seem to work (search kit)2021-02-24T09:17:31ZeileenAfform permissions - open access didn't seem to work (search kit)I tried configuring an afform search with open access but going to the url treats it as NO access
![image](/uploads/f61b78579e271bb0b088fd10c7dae203/image.png)
![image](/uploads/fc6a010613dee1e0e5da6854bc4f29d3/image.png)
I am logged...I tried configuring an afform search with open access but going to the url treats it as NO access
![image](/uploads/f61b78579e271bb0b088fd10c7dae203/image.png)
![image](/uploads/fc6a010613dee1e0e5da6854bc4f29d3/image.png)
I am logged in as an admin user & see this when I have 'administer civicrm required
![image](/uploads/8058409fff66b60e352ad98200e0d9a7/image.png)
@totten @colemanw5.36.0https://lab.civicrm.org/dev/core/-/issues/2403Link styling with default greenwich theme is not linklike on search kit screen2021-05-18T22:07:08ZeileenLink styling with default greenwich theme is not linklike on search kit screenOn testing search kit urls I initially thought they weren't working because I was expecting them to look like links - but they didn't. I suspect we could improve that in greenwich css
@colemanw ?
demo@example.com is a link in this scre...On testing search kit urls I initially thought they weren't working because I was expecting them to look like links - but they didn't. I suspect we could improve that in greenwich css
@colemanw ?
demo@example.com is a link in this screenshot
![image](/uploads/01c71434039d308202615d308995f011/image.png)https://lab.civicrm.org/dev/core/-/issues/2402Proposed Updated Phone Types2023-07-20T05:03:21ZcolemanwProposed Updated Phone TypesMotivation/Background
---------
The phone_type option list is somewhat dated and presents options that don't always make sense to modern users. The first two options are "Phone" and "Mobile". Twenty years ago there might have been a mor...Motivation/Background
---------
The phone_type option list is somewhat dated and presents options that don't always make sense to modern users. The first two options are "Phone" and "Mobile". Twenty years ago there might have been a more obvious distinction between the two, but today they are basically synonyms. We should re-label them so that it's clear that the first option means "Landline phone" and the second option means "Phone that can receive SMS". And while we're at it, let's also change their weights since mobile phones are now more common than landlines and should be presented as the first option.
Current Options
--------------
| weight | name | label (EN) |
| ------ | ---------- | ---------- |
| 1 | Phone | Phone |
| 2 | Mobile | Mobile |
| 3 | Fax | Fax |
| 4 | Pager | Pager |
| 5 | Voicemail | Voicemail |
Proposed Options (New Installs)
----------------
_This reverses the order and relabels the first two options, while deleting the last two, as "Pager" and "Voicemail" numbers are rarely used these days (it's an option list so specialized organizations can always add them in)._
| weight | name | label (EN) |
| ------ | ---------- | ----------- |
| 1 | Mobile | Voice & SMS |
| 2 | Phone | Voice Only |
| 3 | Fax | Fax |
Proposed Upgrade
-------------------
DB upgrade would update labels and weights of the first two options. Functionality will not be impacted as the machine names remain the same. The "Pager" and "Voicemail" options will be deleted _only if they are not in use._https://lab.civicrm.org/dev/core/-/issues/2400APIv4 explorer, search kit - entity reference fields tricky if you know the id2021-02-24T21:53:21ZeileenAPIv4 explorer, search kit - entity reference fields tricky if you know the idOne of my annoyances with apiv4 explorer is now in search kit too. Quite often I know the id of the contact but not other details - in order to prevent leaking information we only pass around the id. While it makes sense in most use case...One of my annoyances with apiv4 explorer is now in search kit too. Quite often I know the id of the contact but not other details - in order to prevent leaking information we only pass around the id. While it makes sense in most use cases to use the entity reference look up that lookup is hard to use if you just know the id as you still need to enter 'something' to make it search.
![image](/uploads/8896341778d5e77cde2ea765964f7fe9/image.png)
With search kit this could impact when making the initial search and exposing in the dashlet (I would expect we will be quickly asked for some 'search by id afflets' as well as wanting entity references in other cases. I note the afflet currently renders contact id as an integer field - which is probably better than an entity reference for our current use cases but I think that we will want to be able to have more control (ie choose between an integer or entity reference field). I can see a case for making entity reference field better support entering the contact id - but I think we need to be mindful that when people are working with contact ids they are often doing data-entry type stuff that requires them to be able to enter the id & click go without many extra steps
![image](/uploads/d2f1e0c19237aea3b2622da2c7ceea68/image.png)5.36.0https://lab.civicrm.org/dev/core/-/issues/2399Add new property to Phone entity to mark a number as a mobile phone or the pr...2023-06-28T05:03:19ZhomotechsualAdd new property to Phone entity to mark a number as a mobile phone or the primary SMS number.Overview
----------------------------------------
_Currently we don't have a straightforward way to say "this is a mobile phone/cell phone number" we have the `phone_type` property but being an option group it's inherently unreliable and...Overview
----------------------------------------
_Currently we don't have a straightforward way to say "this is a mobile phone/cell phone number" we have the `phone_type` property but being an option group it's inherently unreliable and subject to change. If we were looking for a way to say "this phone number is a mobile phone - use it for sending SMS" we're kinda out of luck!_
Current behaviour
----------------------------------------
_We can try to infer whether a phone number is for a cell phone by checking for phone_type but it's unreliable and we can't reliably rely on a single ID designating a mobile phone number (or that any of them do!)_
Proposed behaviour
----------------------------------------
_An explicit property that denotes that a number is a cellphone/mobile number or alternatively a property that denotes that that number is the preferred for SMS e.g `is_smsprimary`._https://lab.civicrm.org/dev/core/-/issues/2398On mail accounts form, pressing save and test followed by save creates a dupl...2021-02-19T23:07:09ZDaveDOn mail accounts form, pressing save and test followed by save creates a duplicate accountIt's a regression in that the button itself is a recent addition and you couldn't make duplicates this way before, but it's not like something that was working is now broken, and it's easy to clean up after.
Haven't looked too close yet...It's a regression in that the button itself is a recent addition and you couldn't make duplicates this way before, but it's not like something that was working is now broken, and it's easy to clean up after.
Haven't looked too close yet but I think it's because the test button doesn't submit the form, so the form never gets an "id" set, so then when you click save after it's like a new form.5.36.0https://lab.civicrm.org/dev/financial/-/issues/166Account IIF Export Amount Format improper2021-03-01T02:27:36ZLoganBearAccount IIF Export Amount Format improperBatches created before 5.34 export simple value amounts:
```
12.00
-12.00
```
Batches after the upgrade to 5.34 adds a dollar sign to the amount:
```
$12.00
-$12.00
```
I can't get these files imported without loading them into Excel...Batches created before 5.34 export simple value amounts:
```
12.00
-12.00
```
Batches after the upgrade to 5.34 adds a dollar sign to the amount:
```
$12.00
-$12.00
```
I can't get these files imported without loading them into Excel and changing the formatting.5.35.0