CiviCRM Core issueshttps://lab.civicrm.org/dev/core/-/issues2024-01-15T05:03:29Zhttps://lab.civicrm.org/dev/core/-/issues/3401Event reminder html mandatory2024-01-15T05:03:29ZStefanEvent reminder html mandatoryHello everyone,
Wordpress: 5.7.2
Civicrm: 5.37.2
When I send scheduled event reminders it says, that html is mandatory.
I wonder why that is, cause I don't have to send html mails in traditional mail sending.
For me that was an issu...Hello everyone,
Wordpress: 5.7.2
Civicrm: 5.37.2
When I send scheduled event reminders it says, that html is mandatory.
I wonder why that is, cause I don't have to send html mails in traditional mail sending.
For me that was an issue, therfore I haven't had an html editor activated and without one it was a mess for my users to send a formatted html mail.
Still I think, if there aren't serious concerns about that, just sending plain mails should be allowed.https://lab.civicrm.org/dev/core/-/issues/3396Provide wysiwyg editor for confirmation email text2024-01-14T05:03:28ZthemakProvide wysiwyg editor for confirmation email textProvide wysiwyg editor for event confirmation emails.
Issue before was that switching to wysiwyg affects previously plain text confirmation emails.
Possible solutions
- Provide the option as a toggle
- develop some sort of translator/...Provide wysiwyg editor for event confirmation emails.
Issue before was that switching to wysiwyg affects previously plain text confirmation emails.
Possible solutions
- Provide the option as a toggle
- develop some sort of translator/convertor for the plain text to wysiwyg transition and make wysiwyg default option.
For reference:
https://github.com/civicrm/civicrm-core/pull/13976
https://civicrm.stackexchange.com/questions/21255/confirmation-email-providing-a-wysiwyg-so-users-can-add-html-ified-contenthttps://lab.civicrm.org/dev/core/-/issues/3372Event reminder add more than one group2024-01-08T05:03:19ZStefanEvent reminder add more than one groupHello everyone,
so we want to heavily use events and event reminders. Then, we got the event on the website, our members get the reminders and also ppl who register get them.
Thing is, I can choose a role and additionally one group.
B...Hello everyone,
so we want to heavily use events and event reminders. Then, we got the event on the website, our members get the reminders and also ppl who register get them.
Thing is, I can choose a role and additionally one group.
But what is, if this needs to be sent to more than one group?
I then could set up multiple reminders and also - I guess - create a dynamical group which contains other groups. But both seems inpractical compared to that smooth select field when I send regular traditional mails, where I can choose multiple groups.
Wordpress: 5.7.2
Civicrm: 5.37.2https://lab.civicrm.org/dev/core/-/issues/3367"Confirm your Registration" from waitlist has poor UX2022-04-22T16:21:54ZJonGold"Confirm your Registration" from waitlist has poor UXOn the "Confirm your Registration" page (<site>/civicrm/event/confirm) you must click "Confirm my Registration", then redo your entire event registration (it pulls some of your registration data but not all of it, depending on your permi...On the "Confirm your Registration" page (<site>/civicrm/event/confirm) you must click "Confirm my Registration", then redo your entire event registration (it pulls some of your registration data but not all of it, depending on your permissions). However, on free events, this all seems a bit excessive. I propose that on free events it simply changes your status to "Registered".
I'm going to implement this in an extension now - but will PR it if the concept is approved.JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/3361View and Edit links for event participants are inconsistent and in some cases...2023-08-12T00:24:39ZlarsssandergreenView and Edit links for event participants are inconsistent and in some cases do not allow editingWhen using a price set, the View and Edit links for a participants lead to different forms depending on if the registration has an associated contribution. When there is a contribution record, the Edit link does not allow the user to edi...When using a price set, the View and Edit links for a participants lead to different forms depending on if the registration has an associated contribution. When there is a contribution record, the Edit link does not allow the user to edit the price set selections, while it is possible to edit those selection from the View link (with Change Selections). I believe this is a regression.
When there is no contribution record, you cannot edit the price set selections from the View link, but you can from the Edit link. That seems confusing for users and it would be best to make it consistent.
Here are some screenshots:
1) View with a contribution, this makes sense
![image](/uploads/52e7c3a5b96befe0a404f57850cc5bcf/image.png)
2) View without a contribution, seems like it there should be possible to change selections here as well for consistency (or else a user may think they can't edit the price set selections)
![image](/uploads/c93e10bbecf9ae053ea771becb07ac12/image.png)
3) Edit with a contribution, this should be the same as the View with a contribution, i.e. there should be a Change Selections link and the table of selections above it
![image](/uploads/95edcf86ca33d6bcdff302cee619acf8/image.png)
4) Edit without a contribution, this makes sense
![image](/uploads/12e211610125abb94b4f829bca465ebe/image.png)
I believe 3 - Edit with a contribution is a regression. I get his behaviour on dmaster, 5.37 and 5.35.2, but not on 5.24.5, where there is a Change Selections link and the table above.
Changing 2 - View without a contribution may be more complicated. What about adding an Edit Registration link, in the same place where the Change Selections link would otherwise be, that simply takes you to the edit form? As far as I can tell, trying to use Change Selections with a registration that doesn't have a contribution will result in errors. I'm not sure what would be involved in making it possible to use Change Selections in this case, but it seems like adding an edit link would be a simpler solution to keep some consistency between these two cases.https://lab.civicrm.org/dev/core/-/issues/3356Include confirm from email and name as organizer for event ics file, instead ...2022-10-03T19:42:29ZlarsssandergreenInclude confirm from email and name as organizer for event ics file, instead of event location emailCurrently, the ics file that is generated for an event (and included in email confirmations and on the confirmation page) uses the event location email as the organizer of the event, with no organizer if there is no event location email....Currently, the ics file that is generated for an event (and included in email confirmations and on the confirmation page) uses the event location email as the organizer of the event, with no organizer if there is no event location email. There is no organizer name.
I suggest using the online registration confirm from name and confirm from email for the ics file. If these aren't present, use event location email as before.
Event location email is a strange field that could be either the organizer of the event or the location of the event. Event location email is likely often not set, especially for online events. I think it makes more sense to use the online registration confirm name and email as these are where the email that contains the ics file are coming from. It's not ideal either way, but I think this is better. It's a clear improvement if there is no event location email, no change if there is no online event registration name and email, and I think often better if they both exist.
Will submit PR if supported.https://lab.civicrm.org/dev/core/-/issues/3348Event Information page, Price Set, Field Label is hidden if only 1 price opti...2022-04-22T16:21:14Zjustinfreeman (Agileware)Event Information page, Price Set, Field Label is hidden if only 1 price option is set for the field, but shown if more than 1 price option is setEvent Information page, Price Set, Field Label is hidden if only 1 price option is set for the field, but shown if more than 1 price option is set. This is counter-intuitive and problematic because the Field Label is expected to be alway...Event Information page, Price Set, Field Label is hidden if only 1 price option is set for the field, but shown if more than 1 price option is set. This is counter-intuitive and problematic because the Field Label is expected to be always shown. Not to have conditional logic which determines when it is shown. There is no guidance given in the user interface for this behaviour.
Recommend that the logic here be removed, https://github.com/civicrm/civicrm-core/blob/master/CRM/Event/Page/EventInfo.php#L132
**Price set, 2 price options - field label shown.**
Price set, field label
![chrome_Bkc47oIGbW](/uploads/1f3d6ddd3f94b30ddd15a76c168cb33e/chrome_Bkc47oIGbW.png)
Shown on the page like this
![chrome_L7m5Yd6CEY](/uploads/42810caf7891584a7e5f651b44794dd5/chrome_L7m5Yd6CEY.png)
**Price set, 1 price option - no field label shown.**
Price set, field label
![chrome_OoefRWUI9q](/uploads/b79d8c06cfd3dbea36b8e6de50feac30/chrome_OoefRWUI9q.png)
Shown on the page like this
![chrome_Vx0EOvDtDZ](/uploads/7b1739adb16783fddaefb2a76c8554da/chrome_Vx0EOvDtDZ.png)
Agileware Ref: CIVICRM-1366https://lab.civicrm.org/dev/core/-/issues/3345Selections information not visible when editing participant record from find ...2024-01-05T05:03:30ZanilSelections information not visible when editing participant record from find participants searchReproduced on https://dmaster.demo.civicrm.org on 1st March 2021 - Version 5.36.alpha1
To reproduce, register a contact for an event with a fee.
Search for this participant via a find participant search and click on edit from the searc...Reproduced on https://dmaster.demo.civicrm.org on 1st March 2021 - Version 5.36.alpha1
To reproduce, register a contact for an event with a fee.
Search for this participant via a find participant search and click on edit from the search results –
![participant_bug](/uploads/95b9fddc4f3f8f97e77274603361d8a4/participant_bug.png)
Correct info appears when you edit directly from the events tab from the contact record.
![participant_bug2](/uploads/3117ada4a296ec9badc687e951a64f7e/participant_bug2.png)https://lab.civicrm.org/dev/core/-/issues/3340Additional Memberships added via Contribution Pages overwrite existing member...2022-04-22T16:17:47ZalanpuccinelliAdditional Memberships added via Contribution Pages overwrite existing membershipsVerified on current demo install of ver 5.0
To Reproduce:
1. Create an inherited membership for an individual by assigning the membership to a related organization.
2. Create a Pending membership via a contribution page and select "Pay ...Verified on current demo install of ver 5.0
To Reproduce:
1. Create an inherited membership for an individual by assigning the membership to a related organization.
2. Create a Pending membership via a contribution page and select "Pay Later/by check"
3. Notice that Pending membership is not created for contribution page membership
4. Receive payment for the pending membership contribution. (Membership should switch to active at this point)
5. Because there is no pending membership it appears that the system will overwrite the existing inherited membership and extend the end date by whatever the new membership period is.https://lab.civicrm.org/dev/core/-/issues/3338Add 'membership start date' as an option when creating Scheduled Reminder bas...2022-04-22T16:17:42ZjitendraAdd 'membership start date' as an option when creating Scheduled Reminder based on MembershipThis is what we get as options
![image](/uploads/022c3bd1a4f8dbb12a4b6f034de33c55/image.png)
This ticket aims to add membership start date to the option list.
@eileen @totten I don't see any logical reason for not including it before....This is what we get as options
![image](/uploads/022c3bd1a4f8dbb12a4b6f034de33c55/image.png)
This ticket aims to add membership start date to the option list.
@eileen @totten I don't see any logical reason for not including it before. Have I missed something? Do you see any downsides on adding start date as an option?jitendrajitendrahttps://lab.civicrm.org/dev/core/-/issues/3334Option to update expired memberships as part of the job.process_membership2022-04-22T16:17:32ZMichael McAndrewOption to update expired memberships as part of the job.process_membershipIt looks like *expired* memberships are excluded from job.process_membership for performance reasons.
There are (edge) cases where this is problematic. For example, lets say that I increased the grace membership period from 3 to 6 month...It looks like *expired* memberships are excluded from job.process_membership for performance reasons.
There are (edge) cases where this is problematic. For example, lets say that I increased the grace membership period from 3 to 6 months. People whose membership ended 4 months ago will not have their membership status updated from expired to grace.
The other three membership statuses that are excluded from membership updates are 'Deceased', 'Pending' and 'Cancelled'.
Not sure if there is a use case for also re-calculating these but interested in people's thoughts.
Proposed solution: add an option to process normally excluded membership statuses (maybe just expired) from job.process_membership.5.29.0https://lab.civicrm.org/dev/core/-/issues/3331Back-office membership renewals don't display an on-screen notification2022-04-22T16:17:27ZJonGoldBack-office membership renewals don't display an on-screen notificationAs part of CRM-16454, the membership renewal email code was moved from `CRM_Member_Form_MembershipRenewal::submit()` to `CRM_Member_Form_MembershipRenewal::postProcess()`. However, this code no longer generates a status message because ...As part of CRM-16454, the membership renewal email code was moved from `CRM_Member_Form_MembershipRenewal::submit()` to `CRM_Member_Form_MembershipRenewal::postProcess()`. However, this code no longer generates a status message because of early returns.
Since the return values are ignored, it seems safe to ignore the early returns, which results in a status message comparable to a new membership.5.14.0https://lab.civicrm.org/dev/core/-/issues/3328Membership updates not recorded in contact log2022-04-22T16:17:17ZedvanleeuwenMembership updates not recorded in contact logI have noticed that not all changes in the membership records are registered in the contact log. See attachments.![activity](/uploads/95e4d88c1b16c40fa685032cb4b97b75/activity.png)![log](/uploads/878cd7f93d4967ae70047de240f502d7/log.png)I have noticed that not all changes in the membership records are registered in the contact log. See attachments.![activity](/uploads/95e4d88c1b16c40fa685032cb4b97b75/activity.png)![log](/uploads/878cd7f93d4967ae70047de240f502d7/log.png)https://lab.civicrm.org/dev/core/-/issues/3320Admin Membership type is displayed on Public contribution page.2022-04-22T16:17:02ZjitendraAdmin Membership type is displayed on Public contribution page.When visibility of membership type is updated to `Admin`, it is still displayed on front-end contribution pages. Steps to replicate -
- Create a membership type.
- Add it to a contribution page.
- Set visibility of the type to `Admin`.
...When visibility of membership type is updated to `Admin`, it is still displayed on front-end contribution pages. Steps to replicate -
- Create a membership type.
- Add it to a contribution page.
- Set visibility of the type to `Admin`.
- Navigate to contribution page - the membership type is still displayed on the page.jitendrajitendrahttps://lab.civicrm.org/dev/core/-/issues/3311Proposal - store metadata on membership renewal on line item2023-06-18T00:43:47ZeileenProposal - store metadata on membership renewal on line item~~UPDATE - discussion on this is converging on adding a new json field 'metdata' to the line item table, permitting data related to that line item to be stored at point of order, and used when confirming. (UPDATE - this is not really the...~~UPDATE - discussion on this is converging on adding a new json field 'metdata' to the line item table, permitting data related to that line item to be stored at point of order, and used when confirming. (UPDATE - this is not really the convergence now - proposal updated below)~~
We have a few issues open ( https://lab.civicrm.org/dev/membership/-/issues/28 , https://lab.civicrm.org/dev/core/-/issues/1402 , https://lab.civicrm.org/dev/financial/-/issues/53 ) that are to my mind blocked by us not having a data model that holds the user's intent when renewing. The focus of this gl is the data model and exposing it via the back office renewal form & doing what is needed in the apis.
**The problem**
When renewing an expired membership the back office user has a fairly blunt way of influencing the calculated dates - they can set the 'renewal date'. However, if the payment is not made in the same form submission that intent is not captured anywhere and cannot be respected when completing the transaction. Likewise the receipt text and number of renewal terms are not captured.
**The proposal data model**
1) add membership_num_terms to civicrm_line_item table.
2) add 'payment_completion_metadata' to the ~~civicrm_line_item~~ civicrm_contribution table for data that is only used in the order->payment flow. Limit what can be stored here to tested values used in that flow - likely to be the message details and effective date the renewal form uses but doesn't sotre.
~~1. New field added to civicrm_line_item called 'metadata' which stores information required to complete the membership renewal - e.g. the field might store ``json_encode(['start_date' => '2010-01-01', 'end_date' => '2020-01-01', 'membership_status_id' => 'Current', 'membership_num_terms' => 2']~~
~~- note this is the new proposal - but I'm wondering what happens if it's renewed in the meantime & then paid~~
~~- New status 'Pending renewal' used when there is a need to record the dates (is_current_member = 0, is_reserved = 1, is_admin = 1 too I think)~~
~~- When a contribution linked to a membership in 'Pending renewal' is completed the status is updated but the dates are not changed~~
~~- If a membership has 'Pending renewal' status and status_override_end_date is set then any processing of that membership after that date would result in it being reverted to previous dates and status - this information should be available in the membership_log table.~~
**Proposed form exposure**
No proposed form changes - this is just storing data already submitted in the renewal form.
~~- the logic could be used outside of existing core forms but within core I think this is something we are exposing to the back-office user doing a renewal - they already have considerable ability to edit dates. So I think this is a form layer thing not some site-wide setting.
- when renewing an expired membership the renewal form would present the user with what will happen to the start date, end date etc if payment is received on that day and offer a checkbox to specify dates - if that is checked then date fields would be exposed an on save the Pending Renewal status would be used with the selected dates.
- potentially the user can also enter the date the 'offer' is available until - ie status_override_end_date~~
**Edge cases**
1. Multiple terms
We would add an extra field membership_num_terms to the line items column
~~https://lab.civicrm.org/dev/membership/-/issues/28 throws up the edge case that more than one renewal term might be selected. Both @jptillman and I assumed that the right way to represent that would be setting qty = n and then picking that when confirming. @andrewhunt didn't think that was the right assumption https://github.com/civicrm/civicrm-core/pull/18618. If we come down on NOT setting qty then we ALSO need a way to record intent for non-expired renewals - this could be an extra membership_num_terms column on the line_item table. (I'm still inclined to my original assumption but more points of view needed).~~
2. About to expire rather than actually expired
Out of scope for now - just do what the form currently does
~~I think we would still manage this in the form ie - "the membership is due to to expire in 4 days, if payment is received after that then .... ' and present the same options as for an actually expired membership~~https://lab.civicrm.org/dev/core/-/issues/3299Make alerts accessible2022-04-22T16:04:58ZJoeMurrayMake alerts accessibleFrom Clare comes a problem statement and some brainstorming ideas:
> A problem for our low vision users is alerts, their AT software doesn't recognise them, so they miss warnings and end up adding duplicates. It would be great to have s...From Clare comes a problem statement and some brainstorming ideas:
> A problem for our low vision users is alerts, their AT software doesn't recognise them, so they miss warnings and end up adding duplicates. It would be great to have some sort of per user control for setting how alerts display, perhaps even adding audio cues.
Use alert role approach suggested at https://www.w3.org/TR/2017/NOTE-wai-aria-practices-1.1-20171214/examples/alert/index.html as this will allow audio cues to be given to users of screen readers.
Note more details at https://www.w3.org/TR/2017/NOTE-wai-aria-practices-1.1-20171214/#alert and also https://www.w3.org/TR/2017/NOTE-wai-aria-practices-1.1-20171214/#alertdialog
https://www.w3.org/TR/UNDERSTANDING-WCAG20/time-limits-no-exceptions.html indicates that there should be no time limits like quickly disappearing alerts.
As a first pass, let's implement a site wide setting to disable alerts from disappearing. We don't have a good design pattern currently for per user preferences. When we do move to per user preferences, the default should be to have alerts not disappear.justinfreeman (Agileware)justinfreeman (Agileware)https://lab.civicrm.org/dev/core/-/issues/3296Add aria-label (and label?) to form elements missing them2022-04-22T16:04:46ZJoeMurrayAdd aria-label (and label?) to form elements missing themUse accessible labels for all pages/forms following spec at https://www.w3.org/WAI/tutorials/forms/labels.
Tasks will include the following general points. Some details will change to ensure that ts() is handled properly, addField() is...Use accessible labels for all pages/forms following spec at https://www.w3.org/WAI/tutorials/forms/labels.
Tasks will include the following general points. Some details will change to ensure that ts() is handled properly, addField() is used appropriately, etc from comments below:
1. Label without control elements/text: In some pages/forms we are simply declaring labels under `<label>` tag against an element/text.
1. Remove tag when it is declared against a text as in
```
- <div class="label"><label>{ts}Contact{/ts}</label></div>
+ <div class="label">{ts}Contact{/ts}</div>
```
1. Add `aria-labelledby` attribute to tag
```
- <label>{ts}Contact{/ts}</label><input type="text" name="contact_id" id="contact_id">
+ <label aria-labelledby="contact_id">{ts}Contact{/ts}</label><input type="text" name="contact_id" id="contact_id">
```
1. Add aria-label attribute to QuickForm element when label is not declared in tpl: Say for example we are assigning a label to a QuickForm element
`$form->addElement('text', 'pledge_installments', ts('Installments'), array('size' => 3));` but not using it in tpl.
**Fix**: Add aria-label attribute to QuickForm element:
```
- $form->addElement('text', 'pledge_installments', ts('Installments'), array('size' => 3));
+ $form->addElement('text', 'pledge_installments', ts('Installments'), array('size' => 3, 'aria-label' => ts('Pledge Installments')));
```
1. Add aria-label attribute to form element via JS: A special case when after declaring this attribute didn't got added to the QuickForm element as in case of 'Credit card Expiration date' when this element got rendered in the quickform as `$form->add('date', 'credit_card_exp_date', ts('Expiration Date'), ['format' => M Y'])` and thus rendered into two select field without this attribute
**Fix**: Add `aria-label` attribute via JS instead. This might involve modifying $.fn.crmDatepicker in Common.js to add aria-labels to the autogenerated date elements it inserts.
1. Fix date fields.
Focus initially on public facing pages/forms:
1. [x] contribution page
1. [x] event registration page
1. [x] price field block
1. [x] newsletter signup
1. [x] user registration in CMS
1. [x] profile create/edit/search
1. [x] contact dashboard
1. [x] contact summary page
1. [ ] CiviReports
1. [ ] Search Forms
1. [ ] Backend registration forms
https://lab.civicrm.org/dev/core/-/issues/3293Make menu more accessible2022-04-22T16:04:20ZJoeMurrayMake menu more accessiblePreliminary tasks, many from https://lab.civicrm.org/dev/accessibility/issues/1#note_4855 below:
1. [x] Hide D7 menubar
1. [x] Fix for D8
1. [x] After getting focus into top menu, tabbing and back-tabbing revealed there was something hid...Preliminary tasks, many from https://lab.civicrm.org/dev/accessibility/issues/1#note_4855 below:
1. [x] Hide D7 menubar
1. [x] Fix for D8
1. [x] After getting focus into top menu, tabbing and back-tabbing revealed there was something hidden between Quick Search textbox and the CiviCRM icon. Opening submenus and back-tabbing revealed it was the search options for the Quick Search textbox. Please remove this from tab order.
1. [x] After getting focus into top menu, Space did not open (and when repeated, close) child menu on current item. It should act similarly to Return.
1. [x] When focus is on an item that could be selected to navigate somewhere, Return worked fine but Space did not replicate this.
1. [x] When on an open sub-submenu (eg Contributions > Accounting Batches with Open Batches with focus), using left arrow correctly moved focus to Accounting Batches, but it did not close the sub-submenu.
1. [x] When on a submenu, using left arrow should close the submenu and move focus to parent item. Instead it moved focus to menu item to left of parent item. The submenu was left open when it should have been closed.
~~1. [ ] When on a sub-submenu, escape should only close that level of menu but closes both the sub-submenu and the submenu.~~
1. [ ] "First item in menu bar should be in the tab order (tabindex=0)." (https://staff.washington.edu/tft/tests/menus/index.html). This may be a bit of work to implement in all CMSes but I think tabindex=0 for CiviCRM menu makes sense as the default on CiviCRM pages on default CMS installs. The CiviCRM Menu left item should be considered the QuickSearch. There appears to be an item for a div around the textarea and a separate way to focus on the textarea itself. The div around the textarea should be tabindex=0.
1. [ ] The cited spec is relatively silent, but other accessible menus have different implementations on the following: 1) When focus is on top menu item and its submenu is open, left and right cycle focus to left and right top menu items and shift which submenu is open to the one under the top menu focussed item. 2a) When focus is on a submenu item left closes the submenu, cycles focus to left on top menu and opens that top menu's submenu. 2b) When focus is on a submenu item without a subsubmenu, right similarly closes submenu, cycles focus right on top menu and opens that top menu item's submenu. 2c) When focus is on a submenu item with a subsubmenu, right opens the subsubmenu. Let's change behaviour 1), 2a) and 2b) to not opening new submenu. Leave 2c) as is.
~~1. [ ] When focus is not on the menu, cursor hovering over a menu item brings focus to it and opens submenu. Submenu should not open until click, return or space.~~
A user should be able to navigate the menu bar by use of the keyboard:
1. [ ] The menu bar should occupy one tab stop
1. [ ] When focused on a menu at the top level:
1. [ ] The right arrow key should move the user to the next top-level menu
1. [ ] The left arrow key should move the user to the previous top level menu
1. [ ] User focus should wrap to the beginning if the user advances past the final menu item. Likewise, if the user tries to navigate to the previous item from the first menu, focus should wrap to the last menu.
1. [ ] The down-arrow and ENTER keys should expand a child menu and focus the user on the first item
~~1. [ ] When a character is typed, the next menu item starting with that letter receives the focus, circling around to first when there are no more. If no menu item starts with the typed character, focus does not move. (deprecated by HTML 5.2 accesskey standard)~~
1. [ ] When focused on a child menu
1. [ ] The down arrow key should move the user to the next menu item
1. [ ] The up arrow key should move the user to the previous menu item
1. [ ] The right arrow key should expand a menu item with a submenu and place user focus on the first item in that submenu. If there is no submenu, then no action is taken.
1. [ ] The left arrow key should collapse a submenu and place user focus on the parent of that submenu
1. [ ] The ESC key should close the active child menu, and any submenus, and return user focus to the parent menu at the top level.
~~1. [ ] When a character is typed, the next child menu item starting with that letter receives the focus, circling around to first when there are no more. If no child menu item starts with the typed character, focus does not move. (deprecated by HTML 5.2 accesskey standard)~~
Test the menu works on default installs (ie default theme!) on
1. [x] Drupal 7
1. [x] WordPress
1. [x] Joomla
1. [x] Backdrop
1. [x] Drupal 8
(NB: deliberately ignoring support for Drupal 6.)
Test the menu works on:
1. [x] Drupal 7 site with shoreditch theme installed
1. [x] Drupal 7 site with mosaico installed, on a CiviMail mosaico page.
A more detailed functional spec is provided at http://lists.w3.org/Archives/Public/wai-xtech/2007Dec/att-0025/index.html#menu
A good implementation that might be useful for its implementation details (seeing View Source) is https://staff.washington.edu/tft/tests/menus/simplyaccessible/index.html. As there are no sub-submenus, I imagine the code implementation needs to be extended to opening sub-submenus properly.
Was https://issues.civicrm.org/jira/browse/CRM-20824
Original description from https://civicrm.stackexchange.com/questions/17735/access-for-blind-users-to-civicrm/17752#17752
The menu bar is keyboard accessible, but awkwardly. Generally I find it best to focus on the first item then TAB (as opposed to arrowing) to the top level menu the user wants to interact with before pressing ENTER to activate the pop-up menu. You will then have to locate the HTML list element containing the menu choices. Often this element appears after the menu bar, or at the bottom of the virtual document (sometimes depending on the CMS theme, sometimes depending on, seemingly, the browser’s mood). In either case, it will not appear immediately “under” the activated menu.https://lab.civicrm.org/dev/core/-/issues/3270getAddressColumns doesn't fully support prefix2022-04-22T15:53:18ZJonGoldgetAddressColumns doesn't fully support prefixThere's one place where the table name is hard coded that should be `$tableAlias`. I wrote a fix + UT.
I also realized that the way odd/even street numbers are handled causes the address table to always get joined regardless of whether...There's one place where the table name is hard coded that should be `$tableAlias`. I wrote a fix + UT.
I also realized that the way odd/even street numbers are handled causes the address table to always get joined regardless of whether it's necessary, but that's out of scope for now.5.14.0JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/3268Deprecate `getBasicContactFields` in favor of `getColumns('Contact')`2022-04-22T15:53:15ZJonGoldDeprecate `getBasicContactFields` in favor of `getColumns('Contact')`@eileen has ported some of the cleaner code for defining report specs from Extended Reports to core in the form of `getColumns()` and `getContactColumns()`. Since this appears to be the direction we're headed in, I think it makes sense ...@eileen has ported some of the cleaner code for defining report specs from Extended Reports to core in the form of `getColumns()` and `getContactColumns()`. Since this appears to be the direction we're headed in, I think it makes sense to deprecate `getBasicContactColumns()`, which does a similar job. However, `getBasicContactColumns()` adds a bunch of fields to core reports that `getContactColumns` doesn't.
My PR adds all the missing fields to `getContactColumns` (except for "Organization Name"; this seems unnecessary since it will virtually always match the display name). I also mark `getBasicContactFields()` as deprecated so future cleanup can target reports using it.5.12.0JonGoldJonGold