Community issueshttps://lab.civicrm.org/groups/community/-/issues2022-10-29T21:00:20Zhttps://lab.civicrm.org/community/community-engagement/-/issues/24Meta - recognizing community engagement2022-10-29T21:00:20ZbgmMeta - recognizing community engagementVery random notes from discussions at the Manchester 2022 sprint, in no particular order. Feel free to add more.
- [ ] infra/gitlab#43 When someone opens an issue on Gitlab for the first time, add a "new-contributor" label (apparently D...Very random notes from discussions at the Manchester 2022 sprint, in no particular order. Feel free to add more.
- [ ] infra/gitlab#43 When someone opens an issue on Gitlab for the first time, add a "new-contributor" label (apparently Drupal are working with Gitlab about this? but it will take a while, and adding a label is simple)
- [ ] infra/gitlab#43 Post "new-contributor" alerts in a mattermost channel, where people interested could follow and help engaging with the request
- [ ] Contributor listing on the website (there is already an issue for this somewhere, we were waiting after SearchKit, but that's now usable for our requirements)
- [ ] (very old problem) people willing to be pinged on certain topics
- Joe uses email filters for subscribing to specific labels?
- Justin mentioned it would be nice to have a ping in new issues, after 2 weeks if no engagement, to try to keep it alive and moving forward (and that ping could ping more people based on tags or keywords)
What we already do (please complete this list):
- Jaap does Gitlab issue triage, and tries to be more attentive to first-time contributors
- Eileen, Seamus and DaveD keep a very close eye on Github pull-requests, and often spend a lot of time helping with the "other 50%" required for a PR to be merged.
- Developer trainings at in-person events
- Monthly release blog posts mention who contributed code and commented on PRs.
- Monthly release blog posts mention new extensions (still a form of recognition)
- Dev-digest will try to bring some attention to specific issues that need wider feedbackhttps://lab.civicrm.org/community/community-engagement/-/issues/232022 Manchester developer training2022-09-30T18:15:42Zeileen2022 Manchester developer trainingManchester training runs from 6-7 Oct & this gitlab is for planning and preparation around it. [The signup form is here](https://civicrm.org/civicrm/event/info?reset=1&id=1674)
# Capacity / signups
As of writing we have
Capacity ?
Cap...Manchester training runs from 6-7 Oct & this gitlab is for planning and preparation around it. [The signup form is here](https://civicrm.org/civicrm/event/info?reset=1&id=1674)
# Capacity / signups
As of writing we have
Capacity ?
Capacity on the event page : 12 (I just increased it to 12 but maybe 14)
Catering ordered for : 10
Trainers: 4 (Matt, Aiden, Tim, Eileen)
Signups: 10
Paid 6
Not yet paid 4
Per the image we can probably increase the number of spaces to 14 fairly comfortably & I propose we do that. We should also determine if all the not-yet-paid are serious (two have been in touch and are known to us - the last two are new to our database and may not be genuine sign-ups). (I just enabled waitlist functionality on it in the course of writing this)
![image](/uploads/1a5ace18cee35aa4947032c965bd4e0e/image.png)
# Preparation
Generally when we run sprints getting a functional development environment running is challenging for some people, although we know that at least three people will already have them. Our goal is that people are prepared for the spring by having either
- a functional local developer environment with CiviCRM & preferably civix and buildkit already installed or
- virtual box installed and we will provide a USB stick with an image on it
Our preference is for the former but in the case of the latter it seems the image/s we bring will depend somewhat on the devices people bring - so we need to gather that information. In order to do that I (Eileen) will send a pre-spring email to attendees.
# Agenda (rough)
### Day one -
**Morning**
Introductions
Key concepts: APIs, Hooks, Extensions, Entities, Pages, Forms [xml, DAO, BAO, Managed Entities, Settings ?], CMS/UF (**Matt**)
Setting up dev-env / Civi / buildkit
**Afternoon**
Admin UI - show how it works with the packaged search, exporting, searches show debug (**Aidan**)
Rest of the day structured around creating `CiviGoat` (or another extension) with basic features - with an entity, Page, settings, search kit,
Civix - create first extension
API - explorer etc
Unit tests
Creating entities / accessing them via search kit/ form builder
Creating settings
Big E / ts()
### Day two
**Morning**
Debugging live sites. ConfigAndLog, Query logging
PR process & giving code back
**Afternoon**
Flexible to adjust to what we did and didn't cover
# Pre-sprint survey form:
https://docs.google.com/forms/d/e/1FAIpQLSf8xoYweZfXW7wM4jSmI9ezbWdKv4_1fr-QfhBKaJwf9IFnqQ/viewform?usp=sf_link
# Pre-sprit email text
Hello,
Thank you for signing up to the [CiviCRM developer training](https://civicrm.org/civicrm/event/info?id=1674&reset=1) - we look forward to seeing you.
The training will start at 9am on October 6th, 2022 and you will need to bring a laptop to work on while there. You will need to have a working development environment, including Civix and preferably Buildkit. If you do not already have one, then we need you to either connect with us on [chat](https://chat.civicrm.org/civicrm/channels/sprint) to get one set up, or install [VirtualBox](https://www.virtualbox.org/) (which will make it easy for us to set up your development environment for you after you arrive).
To help us prepare please fill in [this google form](https://docs.google.com/forms/d/1uNFEJaN5kS6vHd53flvl_Mfz-7JNE4Z_wdgMi4v8tdc/edit) with details about your experience and your development environment.
If you have not paid please do so to secure your place as places are limited.
In open source manner we are tracking our preparations for the training in gitlab - see https://lab.civicrm.org/community/community-engagement/-/issues/23
**Assignments / Action Items:**
Tim: Update VirtualBox. Get USB keys.
Matt: Key concepts plan
Aidan: Admin UI plan
Eileen: Send surveyhttps://lab.civicrm.org/community/sustainability/-/issues/23Proposal: a Payment Pointer for CiviCRM to collect passive Web Monetization i...2022-03-16T22:22:45ZnicolProposal: a Payment Pointer for CiviCRM to collect passive Web Monetization incomeFor over a year I've been exploring [Web Monetization](https://webmonetization.org/docs/getting-started), which is a newish protocol to stream money from user's browsers to the websites they visit. It's a [W3C community draft](https://we...For over a year I've been exploring [Web Monetization](https://webmonetization.org/docs/getting-started), which is a newish protocol to stream money from user's browsers to the websites they visit. It's a [W3C community draft](https://webmonetization.org/specification) and currently is only in use by Coil.com, which has $5/month subscriptions and pays out at $0.36/hour. It works by adding a meta tag into the receiving website with a '[payment pointer](https://paymentpointers.org/)' and a browser plugin on the paying user agent side that streams to payment pointers it finds. (Disclaimer: I've been funded in the past by their grant foundation Grant for the Web for [this project](https://civicrm.org/blog/nicol/using-civicrm-manage-payouts-multiple-parties), but am not being paid to write this - I just like the idea of passive microdonations to fund the open web as your browse).
For this year's Mozilla Festival, which finishes today, Coil has run [an experiment](https://community.webmonetization.org/grantfortheweb/join-in-the-grand-mozfest-web-monetization-experiment-3jm5) where every attendee gets 6 months free subscription plus $10 to give in tips to any site they visit. As a result [I've pulled together and shared all the videos](https://community.webmonetization.org/nicol/open-video-to-help-filmmakers-and-civicrm-at-mozfest-2022-58ha) I've made over the years around CiviCRM, added a Payment Pointer and have started to collect money with 100% of anything raised given to CiviCRM LLC (tho in reality so far it's <$5).
This issue is to check a few things:
- [ ] that there's no community pushback against me doing this with the videos (ie our do-ocracy depends on people knowing what's being done!)
- [ ] to invite anyone else to add `<meta name="monetization" content="$ilp.uphold.com/3FY2pBy6RFxF">` to their website header - anything streamed to this address goes into a CiviCRM specific account which will be given to the LLC as soon as it passes $10.
- [ ] adding this wallet address to the [public list of Social Benefit Payment Pointers](https://community.webmonetization.org/grantfortheweb/non-profit-payment-pointers-2890) to encourage others to start collecting money for CiviCRM on their website. The list at present include orgs like archive.org and Mozilla Foundation.
- [ ] to propose adding this to the header tags of civicrm.org (and docs/lab/chat) so it
- [ ] to propose CiviCRM has it's own payment pointer instead of using one I control. This third point is more about good governance.. as it may only be a few dollars a month in income at most for now, it may not be worth Josh's time to setup for now.
## FAQ: Can Web Monetization breach privacy?
Privacy is [central to the design](https://webmonetization.org/docs/explainer/) of the protocol. Payment streams are anonymous so the identity of who streamed the money isn't available to the recipient. Frustratingly this also means if you add a pointer to your website you won't know which web page the money came from, as this could potentially be traced back to an IP address or user-agent - and as a user you can't see a list of websites you've donated to unless you install an [extra browser plugin](https://chrome.google.com/webstore/detail/paytrackr/pcfbnmieeijeahdbbjefgkcbkfnccpei?hl=en).
## FAQ: Is this a blockchain?
No, not according to Coil.com or WebMonetization.org.
However, there are only two places to get a Payment Pointer at present: Uphold and Gatehub, and both of these are used for currency exchange, including cryptocurrency. So if you visit either site to get your own Payment Pointer it does feel crypto-ish.
In adition Web Monetizaiton is based on [Interledger](https://interledger.org/), which is a new payment processing protocol which aims to lower/remove payment processsing fees especially in countries not covered by Paypal/Stripe. This also isn't a blockchain, but it _was_ funded by [Ripple](https://ripple.com/) which _is_ a digital currency using a blockchain, but is what's known as a permissioned blockchain, which have been around since 1990. With permissioned blockchains, there's no mining and only a small group of trusted people can process transactions, so it's more like a federated database, and the [energy use is relatively small](https://xrpl.org/carbon-calculator.html) (higher than credit cards but lower than cash). _Permissionless_ blockchains arrived with Bitcoin in 2008 and have the huge energy & resource footprint because of mining and vast effort to try and limit a permissionless structure being corrupted/attacked (Cory Doctorow [wrote a good thread](https://twitter.com/doctorow/status/1493288014193307656) about the difference). Anyway, the project doesn't use Ripple, or any blockchain, it's just _funded by Ripple_. Wanted to be clear on that because there's quite a lot of concerns and hype around cryptocurrencies.https://lab.civicrm.org/community/region/melbourne-meetups/-/issues/31CiviCrm Upgrade error2022-11-18T10:21:01ZmarkdevarajCiviCrm Upgrade errorhi,
I was looking to upgrade my current version of CiviCrm 5.28.3 to 5.36.0 and was getting the following error - see attached files too which has a screen shot and a copy of the log file.
The upgrade fails at upgrade to 5.31.alpha1
|...hi,
I was looking to upgrade my current version of CiviCrm 5.28.3 to 5.36.0 and was getting the following error - see attached files too which has a screen shot and a copy of the log file.
The upgrade fails at upgrade to 5.31.alpha1
| Error Field | Error Value |
|-------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Type | DB_Error |
| Code | -1 |
| Message | DB Error: unknown error |
| Mode | 16 |
| UserInfo | ALTER TABLE civicrm_group CHANGE `title` `title` varchar(255) DEFAULT NULL COMMENT 'Name of Group.' [nativecode=1071 ** Specified key was too long; max key length is 767 bytes] |
| DebugInfo | ALTER TABLE civicrm_group CHANGE `title` `title` varchar(255) DEFAULT NULL COMMENT 'Name of Group.' [nativecode=1071 ** Specified key was too long; max key length is 767 bytes] |
Does anyone know how to fix this?
cheers
mark
![Screen_Shot_2021-06-04_at_2.10.42_pm](/uploads/c1dea707294f13740cdc40afdb1fc3be/Screen_Shot_2021-06-04_at_2.10.42_pm.png)
![Screen_Shot_2021-06-04_at_2.14.21_pm](/uploads/735e517da4871c7028ac386ae514f7a5/Screen_Shot_2021-06-04_at_2.14.21_pm.png)https://lab.civicrm.org/community/gsoc/-/issues/10Integrate Spoke Peer-to-Peer Texting2021-04-11T02:23:07ZashaIntegrate Spoke Peer-to-Peer TextingI would like to contribute for 'Integrate Spoke Peer-to-Peer Texting' project for this summer. In my understanding, we have to create an extension to integrate CiviCRM with Spoke. The org's contacts and their tags( eg: Volunteer) shoul...I would like to contribute for 'Integrate Spoke Peer-to-Peer Texting' project for this summer. In my understanding, we have to create an extension to integrate CiviCRM with Spoke. The org's contacts and their tags( eg: Volunteer) should be synchronize with Spoke. Can i know what does it mean by question and answer? does that mean the peer-to-peer texting?https://lab.civicrm.org/community/sustainability/-/issues/22Support the removal of Richard Stallman from Free Software Foundation (FSF) l...2021-04-15T17:45:11ZJoe McLaughlinSupport the removal of Richard Stallman from Free Software Foundation (FSF) leadership positions, and support the resignation of FSF board membersCiviCRM as an organization should support the call for Richard Stallman, AKA 'RMS', to be removed from leadership positions at the Free Software Foundation, and should support the resignation of the FSF board members.
There is a large ...CiviCRM as an organization should support the call for Richard Stallman, AKA 'RMS', to be removed from leadership positions at the Free Software Foundation, and should support the resignation of the FSF board members.
There is a large and growing number of former FSF staffers, former FSF board members, individuals involved in free software and free software organizations supporting the call. See https://rms-open-letter.github.io/ .https://lab.civicrm.org/community/gsoc/-/issues/9Contribution to the project: "Mailing list functionality"2021-03-30T18:19:55ZMAVIN-07Contribution to the project: "Mailing list functionality"Hi,
I am an undergraduate and wish to start contributing to CiviCRM. I found one of the listed projects very appealing i.e. **"Mailing list functionality"**. Can anyone please guide me, how to proceed with it?Hi,
I am an undergraduate and wish to start contributing to CiviCRM. I found one of the listed projects very appealing i.e. **"Mailing list functionality"**. Can anyone please guide me, how to proceed with it?https://lab.civicrm.org/community/community-engagement/-/issues/21Establish quaterly community calls2022-01-18T14:06:25Zjoshjosh@civicrm.orgEstablish quaterly community callsThe Community Council and the Core Team are working together to create quarterly community calls. This issue will be used to define various details associated with the calls, for example:
- dates, timezones
- agenda, format
- advanced c...The Community Council and the Core Team are working together to create quarterly community calls. This issue will be used to define various details associated with the calls, for example:
- dates, timezones
- agenda, format
- advanced communications, results, minutes, etc.
- registration on c.o or other or not at all
- system requirements, recordings
Adding @tricia.gbinigiejoshjosh@civicrm.orgjoshjosh@civicrm.org2021-03-27https://lab.civicrm.org/community/feature-request/-/issues/29Add "About" page to simplify AGPL Section 13 compliance2021-02-18T21:01:17ZtottenAdd "About" page to simplify AGPL Section 13 compliance# Background
1. CiviCRM is published under AGPLv3.
2. Most CiviCRM extensions are also published AGPLv3.
3. It is common in our community for people to deploy, fork, patch, etc. code from others. (Witness: open-source in action!)
4. ...# Background
1. CiviCRM is published under AGPLv3.
2. Most CiviCRM extensions are also published AGPLv3.
3. It is common in our community for people to deploy, fork, patch, etc. code from others. (Witness: open-source in action!)
4. Under AGPLv3 Section 13, if you make a modified/derivative work, then there is an obligation to provide download links to your users.
5. CiviCRM Core has a standard download link in the footer -- but you can't do that for everything, and I've never noticed an extension providing download links to non-admins, and most people who use patches aren't going to edit code to tweak that notification.
6. There is no general/standard practice in how to address Section 13.
# Proposal
The footer should include a Legal/About. Add a built-in core page `civicrm/about` which:
* (a) summarizes CiviCRM's mission+model
* (b) summarizes the works being used for this deployment - authorship/copyright/publication URLs
* (c) optionally links to any site(s) where modifications are published (e.g. "All modified works are published at https://github.com/myorg")
Parts (a) and (b) can be standard/no-effort/out-of-the-box.
Part (c) would be unnecessary and blank for stock deployments. If you are an active implementer/developer in the habit of patching things, it can be a bit onerous to identify every patch in-app. But it should be easy to add your Github/Gitlab org-link. If someone suggests that you are out-of-compliance on Section 13, then this becomes an easy fix.
# Comments
(1) When I was an implementer, we used a patch similar to this on our Civi deployments. It actually went a bit further and allowed you download a live zip file of the civicrm tree (to ensure that we were meeting the obligation while keeping our project-management stuff private). However, I suspect many folks would have technical questions (e.g. "persuade me about performance/security/usability of a live zip on every Civi deployment"). Many folks already publish their forks on Github/Gitlab - so that feels like the path of least resistance.
(2) Item (b) would actually go beyond what's required. However, I think it's nice for our community to over-communicate credits.https://lab.civicrm.org/community/region/melbourne-meetups/-/issues/28Errors in ConfigAndLog 21 Nov 20202020-11-26T22:21:32ZmarkdevarajErrors in ConfigAndLog 21 Nov 2020Hello all,
I'm wondering if anyone has seen these errors and how to resolve them.
[Errors_ConfigAndLog_Nov_21_2020.docx](/uploads/a3c3853539544dad2d8c4b9ea3297ce9/Errors_ConfigAndLog_Nov_21_2020.docx)
My environment
Wordpress 5.5.3...Hello all,
I'm wondering if anyone has seen these errors and how to resolve them.
[Errors_ConfigAndLog_Nov_21_2020.docx](/uploads/a3c3853539544dad2d8c4b9ea3297ce9/Errors_ConfigAndLog_Nov_21_2020.docx)
My environment
Wordpress 5.5.3
Civicrm 5.28.3
Mosaico 2.5.1597918155
We do have intermittent problems with saving working mosaico newsletters/templates
Thanks in Advancehttps://lab.civicrm.org/community/feature-request/-/issues/28CiviMail: "Blast addresses"2021-04-20T20:13:57ZtottenCiviMail: "Blast addresses"__Context__:
You're a CiviMail backend user, and you want to send a casual message to a group of contacts. But you're too lazy to login every time you want to send a message.
__One-Time Setup__:
* In CiviCRM, go to "Administer => Civ...__Context__:
You're a CiviMail backend user, and you want to send a casual message to a group of contacts. But you're too lazy to login every time you want to send a message.
__One-Time Setup__:
* In CiviCRM, go to "Administer => CiviMail => Blast Addresses".
* Create a "New Blast Address". Choose a list of include/exclude groups. Choose some other standard CiviMail options (like header/footer). The output is a unique address `blast.1234.abcd@example.org`
* In your personal email address book, add a contact for `blast.1234.abcd@example.org`
__Regular Usage__:
Send email `blast.1234.abcd@example.org`. CiviMail's IMAP scanner picks it up and immediately schedules a mailing.
__Considerations__:
* If your personal email gets hacked, then someone can blast on your behalf.
* If you have someone who you trust composing content -- but not managing contacts -- then you could give them a blast address. Don't need think about ACLs/etc.https://lab.civicrm.org/community/region/melbourne-meetups/-/issues/26Server migration2020-09-21T08:17:35Zdavid.hohmServer migrationHello,
sorry for what is probably a ridiculous question.
Our wordpress site was migrated to a new server by our host, the domain is unchanged. Now several of the CIVICRM features are not working anymore. Such as payment processing for e...Hello,
sorry for what is probably a ridiculous question.
Our wordpress site was migrated to a new server by our host, the domain is unchanged. Now several of the CIVICRM features are not working anymore. Such as payment processing for example or signing up to our newsletter. One of the issues for example is our stripe webhook failing as it now can't reach https://example.org.au/?page=CiviCRM&q=civicrm/payment/ipn/3. When I try to go to the live links for contribution pages, it just shows: "Do not delete this page. Page content is generated by CiviCRM."
I've cleared the cache and reset the paths and looked at the civicrm.settings.php files but couldn't find a place where I had to link to a new IP address. I've also looked for a guide on the CiviCRM page but was unable to find clear instructions on what to do.
If someone can point me in the right direction it would be super appreciated, thank you for the help
cheers, Davidhttps://lab.civicrm.org/community/feature-request/-/issues/26Multi-lingual for multinational/global-scale2022-06-11T16:02:17ZtottenMulti-lingual for multinational/global-scale(This issue is not a singular problem with a singular fix. Think of it more as a long-term epic or general problem statement - it may entail several different approahces, issues, extensions, patches, phases, or experiments. My hope is to...(This issue is not a singular problem with a singular fix. Think of it more as a long-term epic or general problem statement - it may entail several different approahces, issues, extensions, patches, phases, or experiments. My hope is to capture some discussion from sprints+calls over the years, esp points from @ayduns @BjoernE @bgm @eileen @ejegg etal)
# Background
Internationalization (i18n) is the process of adapting a software system to support different languages and locales. For some organizations, their i18n needs are met by flagging one language for the entire system (e.g. an English organization uses the English language; a French organization uses the French language).
Other organizations require a more advanced form of i18n called *multilingual* -- this means that one organization offers its business-programs (eg events, conferences, newsletters, donation pages) in multiple languages *concurrently*. There are a few contexts in which multilingual makes sense:
* The organization targets a single region with multiple endemic languages. For example, in Canada, you may have an organization serving significant populations of French and English speakers. Similarly in Belgium (Flemish/French), southwestern US (English/Spanish), Switzerland (Swiss German/Swiss French/Swiss Italian), and so on. As a rule-of-thumb, few locales would have more than 3 endemic languages.
* The organization targets a large number of countries with diverse languages. For example, a pan-European organization might have 8 languages, and a global organization might have 30 languages.
When adapting business software to a multilingual organization, one might take an informal approach or a formal approach, by which I mean:
* __Informal translation (duplicates)__: The software remains effectively unchanged. If the user needs more languages, then he simply adds more records. Thus, if the user wants to make a bilingual newsletter, then he actually makes two distinct `Mailing`s (one per language). For a bilingual fundraising campaign, he makes two `ContributionPage`s. (*This requires less upfront technical work, but it also requires on-going training. Fine-tuning workflows+reports may be tricky.*)
* __Informal translation (in-line)__: As above, the software remains effectively unchanged. If the user needs more languages, then he just does everything in-situ. Thus, a bilingual newsletter has one "Subject" with two languages (`Subject: Hello world / Bonjour tout le monde`). (*This again requires less upfront technical work, but it's progressively uglier as you add each new language. Fine-tuning workflows+reports may still be tricky.*)
* __Formal translation__: The software is updated to allow translation of different records. Thus, a bilingual newsletter is one `Mailing` with two different `Subject`s. A bilingual fundraising campaign is one `ContributionPage` with two descriptions. (*This requires more upfront technical work, but it allows more tuning of the workflows and reports.*)
There is some documentation about CiviCRM and i18n, eg
* https://docs.civicrm.org/user/en/latest/the-civicrm-community/localising-civicrm/
* https://docs.civicrm.org/dev/en/latest/translation/
# Problem/Goal (General)
In its default/basic mode, CiviCRM supports *single language* (which can also be used for *informal translation*). Additionally, the Civi administrator can enable *formal* multilingual. The formal mode is well suited to some organizations and challenging for others.
The next section will summarize some specific technical issues, and the needs obviously vary case-by-case, but (broadly speaking) I found it helpful to consider two types of multilingual organizations:
* __(Loosely) Bilingual orgs__: For regional organizations supporting 2-3 endemic languages (loosely - "bilingual" orgs), Civi's formal multilingual is "pretty good"; it's often "optimal"; and (even at its worst) it is at least "acceptable".
* __(Loosely) Multinational orgs__: For far-flung organizations supporting 8+ languages (loosely - "multinational" or "global" or "pan-continental"), the design is... less optimal.
# Problems (More specific)
* __MySQL Columns__: For every language, Civi's MySQL schema replicates ~100 DB columns in ~25 tables. (For 8 languages, that would be a total ~800 columns.) This can max-out some hard limits in MySQL.
* __Roles__: For an organization supporting 1-3 endemic languages, there are many staff who speak each of the languages, and (e.g.) it's realistic to say that the event-manager role is *responsible* for translating the event-description. However, with 10+ languages, it is not realistic -- so you may create more specialized roles that don't exist in a unilingual/bilingual organization. For example, one person may set the initial terms of the `ContributionPage`, and 9 other people translate the description. More nuanced roles mean you also need to think about:
* __Workflows__: If your role is "Italian translator", then you don't want to manually fish through all the `Event`s and `ContributionPage`s to see which ones need translation. The workflow should draw attention to the things that need you.
* __Permissions__: If your role is "Italian translator", then you certainly need permission to edit the Italian "Description" of an `Event`... but maybe you shouldn't have permission to change the registration-deadlines, the price-structure, or the Spanish translation.
* __Negotiation/Fallback/Sparsity__: With a larger number of languages, it takes a lot of labor to fill every translatable field on every record in every locale in a timely way. There will be gaps in the translation matrix -- whether purposeful ("it's not worthwhile to translate this one between en_US and en_CA") or incidental ("the translator hasn't gotten to this yet"). With sparser translations, the fallback/language-negotiation becomes more important. (Ex: If `en_US` is missing, then fallback to `en_CA` or or `en_GB`. If `fr_CA` is missing, then fallback to `fr_FR`.)
* __Entities/Fields__: The multilingual translation support is targeted at specific entities+fields. However, the value of formally translating any specific entity or field may be assessed differently. Consider two opposing examples:
* __ContributionPage__: For a regional organization with bilingual constituents, you might commit to formally translating every `ContributionPage`. In a global organization with different countries, you might find that each country has so many differences (language, pricing, taxes, etc) that you prefer to create new `ContributionPage` for each.... so you never use *formal* translation of `ContributionPage`s. (*Or, if we're really exacting, you might have one `ContributionPage` for each country... but within bilingual countries, you'd want different translations of the page!*)
* __MessageTemplate__: For a regional organization with bilingual constituents, you may decide it's preferable to send bilingual notifications (ie send a receipt with both English+French text), so you don't need *formal* translation of `MessageTemplate`s. However, in a global organization, it's crazy to put 10 languages into 1 receipt -- instead, you should formally distinguish the translations for each language.
Considerations
----------------------
For purposes of this issue, I would say that support is "complete" when it is possible (by a mix of extensions/patches) to configure the MySQL schema/roles/workflows/permissions/fallbacks/entities/fields in a way that satisfies (a) a regional/bilingual organization and (b) an multinational/global organization.
However, this still leaves considerable room for interpretation/variation. Ask yourself: is it true that multilingual users fall in two distinct buckets (bilingual vs multinational)? Or are those idealized extremes, with most organizations taking some place in between?
* If it is truly two categories, then you might address this by implementing two separate subsystems:
* The existing "bilingual" subsystem provides permissions/workflows/entities that are suitable for bilingual orgs.
* A new "multinational/global" subsystem provides permissions/workflows/entities for multinational orgs.
* If there are many shades of grey, then you might address this by giving more subtlty to each aspect, eg
* The data-storage layer might use localized columns, or a dedicated string table, or something else. (Perhaps you can swap the data-storage while keeping the rest.)
* Different modules might provide different workflows/UIs - so one module allows editing translations in-situ (per-entity), while another another module provides more centralized translations (per-language). (Perhaps these different workflows/UIs can used separately - or perhaps they can coexist giving alternate access to the same data.)
* The list of localized entities/fields might be configurable.
* The process of configuring l10n/i18n might be softened - instead of a system-level flag (configuring translation for everything), it could be more case-by-case/opportunistic -- where you can optionally "attach" n-ary translations to any given field.https://lab.civicrm.org/community/region/melbourne-meetups/-/issues/23Conditional statements with CiviMail templates2020-05-04T01:28:38Zrenz56c.oConditional statements with CiviMail templatesThis is something basic that I should know how to do by now but don't!
has anyone else got a conditional statement in their civimail templates that replaces Dear contact.first_name with another value if there is no first name for that c...This is something basic that I should know how to do by now but don't!
has anyone else got a conditional statement in their civimail templates that replaces Dear contact.first_name with another value if there is no first name for that contact?
Something along the lines of:
{if $contact.first_name}
Hi {$contact.first_name},
{else}
Hi there,
Next question can you insert such code into Mosaico templates?
Thanks if anyone in the group might know,
Renaee.https://lab.civicrm.org/community/marketing-automation/-/issues/1What is the CiviCRM's Marketing Automation Strategy? CiviMail, Mosaico, Mauti...2023-06-26T14:43:44ZSimon ParkerWhat is the CiviCRM's Marketing Automation Strategy? CiviMail, Mosaico, Mautic, Forms, Landing Pages etcCopied over from my StackExchange post:
This is more of a discussion point rather than a question, and I'm interested to get peoples views on topic. It's brief as I don't want to make it unreadable and please excuse the rushed ramblings...Copied over from my StackExchange post:
This is more of a discussion point rather than a question, and I'm interested to get peoples views on topic. It's brief as I don't want to make it unreadable and please excuse the rushed ramblings and stream of consciousness.
I've been blogging bits and bobs along our journey with CiviCRM and WordPress and I've been drafting something on how one could approach marketing automation with CiviCRM. It's an area I've worked on extensively within the private sector and I've been attempting to deliver a mature solution for the Charity that I Chair where we are running CiviCRM.
Marketing Automation is a broad term that can include many different activities, but I'm focusing on email marketing automation as this has the highest conversion rates in modern digital marketing.
I classify email marketing automation as the following activities that are 'software-enabled':
* Building marketing campaigns that can be delivered across multiple 'channels' (but primarily email).
* Lead generation, segmentation and tracking
* Landing Page creation with form integration to collect lead details
* Drap & Drop email design for different types of emails inc but not limited to newsletters, announcements, product launch, transactional etc
* Create automated workflows, triggers and email sending
* Hosting of downloadable assets such as eBooks, Whitepapers
* Creation of a marketing funnel/sales pipeline that links up with some kind of 'sales process'
I'm hoping someone can correct me if I'm wrong, but there doesn't seem to be a 'community standard' way to approach this for Civi. It can be solved in a number of different ways, all with tradeoffs:
**Solutions that are CiviCRM native or extension based**:
**CiviMail**: Standard email functionality
**Mosaico**: Email template builder
**Chassé and/or CiviRules**: Email journey workflow builder
**CiviCRM profiles/Drupal Webforms/Caldera forms**: Collection of lead data
My personal experience has been that although these tools work well as single-point solutions (eg Mosaico works fantastically for email template design), building a functional marketing automation flow with different components working with each requires development and a reasonable financial investment. For example:
1. Create a landing page with a working form in WP with Caldera Forms and register all the 'lead' details in CiviCRM as part of one's marketing funnel
2. This triggers an asset an eBook download hosted on cloud storage such as Google Drive
3. Then trigger a 5-part email welcome series workflow using Chassê and account for the different scenarios of the user/lead downloading it (eg are they already an existing member or donor)
4. Trying to visualise and report and account for potential errors on those different stages
**3rd party apps with integrations**:
**MailChimp**: Handles pretty much all marketing automation needs and has group syncing functionality with a CiviCRM extension but as your email list grows, so does your cost.
**3rd party apps without integrations**:
**Mautic**: Handles pretty much all complex marketing automation needs with a good UI. It's free and open-source with an established dev community and is owned by Acquia (who also own Drupal). Mautic does have weak points most notably it lacks the ease of use template builder that Mosaico and MailChimp have.
Mautic does seem like an obvious strong partner for CiviCRM, and a google search shows that at one point an integration did exist? It doesn't look like it does anymore.
Is anyone using Mautic with CiviCRM?
This definitely isn't an exhaustive list, just what I've come across so far. I'd love for anyone to jump in and tell me what other options I've missed and maybe would consider partnering with me to produce a 'how-to guide' on the different approaches.
In the wider market, depending on the price point, there seems to be either all integrated solutions for the enterprise that wrap the CRM and Marketing Automation together (Salesforce Marketing Cloud, Dynamics 365 or tools like Hubspot) or in midmarket business, cheaper independent point solution tools have API integrations eg Mailchimp(marketing automation) integrates with PipeDrive(CRM).
You could say CiviCRM is following a similar vein with both native and integrated solutions but I'd like to pose a few questions of whether there should be a greater community focus on a strategy for these tools and rather than going off in different development directions...
The two functions CRM and Marketing Automation should be part of any organisations digital strategy and I think this should be part of The Community Council conversations, and would ultimately add to the CiviCRM value proposition and increase adoption of new customers.
* Should there be such a focus on point solutions that work well independently, but are costly for organisations that begin to have more mature marketing requirements?
* Could there be a 'roadmap' or 'matrix' that exists that helps end users decide on which marketing solution to use based on their requirements?
* Should there at least be a greater focus on an MIH for Mautic integration? or at least an initial assessment through what is achievable maybe via GSoC?
* Should there be an investment into more general extensibility like Zapier or Piesync?
This is one persons perspective so I'm interested to hear how others feel and their experience.
Thanks!https://lab.civicrm.org/community/region/melbourne-meetups/-/issues/22CiviMail setting to use Google's smtp servers - this is not an issue but info...2020-03-30T02:42:20ZmarkdevarajCiviMail setting to use Google's smtp servers - this is not an issue but info if you are having issues with google smtpHello All
This is not an issue but info for others if you are having problems setting up CiviMail to send mail thru Google SMTP service.
We use a Gsuite account for our mail. We setup 3x email accounts on Gsuite to catch the bounce, a...Hello All
This is not an issue but info for others if you are having problems setting up CiviMail to send mail thru Google SMTP service.
We use a Gsuite account for our mail. We setup 3x email accounts on Gsuite to catch the bounce, an email account to send from and email to activity account.
After much trial and error and reading all the posts on CivMail to Google issues, the setting that worked for us is as follows:-
SMTP Server: ssl://smtp.gmail.com
SMTP Port: 465
Authentication : Yes
SMTP Username : xxxxx@melbournecameraclub.org.au
SMTP Password :xxxxxxx
we send under 500 emails weekly from a Civi mailing list.
Settings - for CiviMail
Mailer Batch limit = 100
Mailer throttle Time =1000000 (micro secs)
Mailer Job size =0
Mailer Cron Job limit =0
very separator = .
Enable custom reply to =no
Cron was setup to execute job.execute every 5 mins (*/5 * * * * etc)
Cron was setup to execute fetch bounces on the hour (0 * * * * etc)
We sent 460 emails in just under 25mins as mail was sent in 100 email batches every 5 mins. Speed of email delivery is not important for us as it is just a weekly newsletter.
Bounces was recorded in Civi reports correctly.
I hope that this helps someone.https://lab.civicrm.org/community/region/melbourne-meetups/-/issues/21Nextgen Gallery plugin on WP stops Civicrm Scheduled jobs from running2020-03-27T03:46:38ZmarkdevarajNextgen Gallery plugin on WP stops Civicrm Scheduled jobs from runningWe are running Civicrm 5.14.1 on Wordpress(WP) and have encountered that the latest Update of NextGen Gallery (v3.3.0) stops Civicrm Scheduled jobs from running. We were running NextGen Gallery without any issues until the latest upgrade...We are running Civicrm 5.14.1 on Wordpress(WP) and have encountered that the latest Update of NextGen Gallery (v3.3.0) stops Civicrm Scheduled jobs from running. We were running NextGen Gallery without any issues until the latest upgrade to v3.3.0.
Once we deactivated this plugin Civicrm Scheduled jobs started working again.
Has anyone else encountered this issue? Any suggested solutions?https://lab.civicrm.org/community/covid-19/-/issues/1Create CiviCRM Spark template site for Community/Mutual aid requirements.2020-03-26T23:09:16ZnicolCreate CiviCRM Spark template site for Community/Mutual aid requirements.Please ping @nicol if you would like admin access to the Spark instance to look at any of this.
# Required
* [x] 1. Profile form for volunteer registration
* [x] 2. Profile list to display volunteers
* [x] 3. Profile map to display...Please ping @nicol if you would like admin access to the Spark instance to look at any of this.
# Required
* [x] 1. Profile form for volunteer registration
* [x] 2. Profile list to display volunteers
* [x] 3. Profile map to display volunteers
* [ ] 4. GDPR/privacy compliant
* [x] 5. Help Wanted form for request registration (should this be an activity, repeating contact field, Case, sopemthing else?)
* [ ] 6. Profile list and profile map to display help wanted
* [ ] 7. SMS - integration for mass SMS
* [ ] 8. some kind of ACL to volunteers/requestees who can ammend their details – and admins, who view and contact everyone
# Desired
* [ ] 9. CiviTutorial - to talk thru key tasks, ie adding Twilio details, or Google geocode API key, importing contact data from Google Sheets.
* [ ] 10. A simnple dashboard on first login pointing admins to the most useful things (CiviMail, import, volunteer signup, etc)
* [ ] 11. SMS Conversation / Dialogue flow? In case confident admins want to try and use it?
* [ ] 12. Better styling of Map markers & poopups (for 3. and 6.)
* [ ] 13. CiviCase?
# Also
* [ ] 12. Multingual support (Spark is multilingual, but how to translate custom field / profile names?)
* [ ] 13. Public landing/info page
* [ ] 14. Small number of test users
* [ ] 15. Input from privacy/accessibility/legal experts - CiviCRM LLC obvs cannot be liable for how users use the system, but how to make this clear and encourage best-practice?https://lab.civicrm.org/community/region/melbourne-meetups/-/issues/20Pausing autorenewal memberships2020-03-27T03:31:42Zdavid.hohmPausing autorenewal memberships
with the current covid-19 situations and mandatory closures, we are investigating ways to 'pause' autorenewals. The idea being that members who have paid for part of this month's memberships will get the remaining days of the month for...
with the current covid-19 situations and mandatory closures, we are investigating ways to 'pause' autorenewals. The idea being that members who have paid for part of this month's memberships will get the remaining days of the month for free when we reopen our facility.
What is the best way to achieve this? We use Stripe as the payment processor and monthly autorenewals.
thanks for the all the help we have gotten from this great community here.https://lab.civicrm.org/community/feature-request/-/issues/25Enriched Deletion2020-03-18T20:08:55ZtottenEnriched Deletion> You might call this a "minority opinion" - I imagine few would take (on first glance) come to the same approach. However, I want to get it on paper because I think it's a deeper solution - and the issue may recur.
# Background / Conte...> You might call this a "minority opinion" - I imagine few would take (on first glance) come to the same approach. However, I want to get it on paper because I think it's a deeper solution - and the issue may recur.
# Background / Context
CiviCRM is a *database application* which tracks *related data*. For example, an `Activity` may be related to a `Case` and three `Contact`s. This creates the question of *referential integrity*. For example, if one of those three `Contact`s is deleted, then the *relation* (aka "foreign key" or "reference") between the `Activity` and the deleted `Contact` becomes nonsensical, and you must do something to make the data sensible again.
CiviCRM builds on top of MySQL, and MySQL provides one mechanism to deal with this: `ON DELETE`. When declaring the schema for `Activity` and `Contact`, you can set a rule to resolve this nonsensical situation by either (a) putting a blank (`null`) value into the reference or (b) deleting the record which has the invalid reference. This process can be thought of as s *cascading* or *propagating*. (Conceptually, the deletion of `Contact` could trigger the deletion of an `Activity` which could trigger the deletion of a custom dataset for that activity).
CiviCRM also builds on top of PHP. It has hooks and events, which leads to another mechanism: by subscribing to some event (e.g. `hook_civicrm_pre`), you can take some action before or after deletion. This mechanism can also provide the *cascading* or *propagating* effect. Compared to MySQL, this empowers a developer to define more nuanced cascading rules.
# Basic Concept
The basic concept of "Enriched Deletion" (*for want of a better name*) can be seen by comparing these two screens. First, we have a normal confirmation dialog that you might show to user before deleting an important record:
![Screen_Shot_2020-03-17_at_8.25.22_PM](/uploads/1b3e288f2cdef33843ed1170d2ec0967/Screen_Shot_2020-03-17_at_8.25.22_PM.png)
With enriched deletion, the user (or *agent*; more about the expanded view in a moment) has visibility and discretion into the consequences of the deletion:
![Screen_Shot_2020-03-17_at_8.25.34_PM](/uploads/630070c9e524b11eb4274e8cbf155a15/Screen_Shot_2020-03-17_at_8.25.34_PM.png)
They have the ability to *see* what data is affected by their action -- and to *decide* what the impact will be.
# Expanded Concept
The *cascade policy* is what you in see the table above -- a list of relations and the rules about how to handle each stale reference (delete the record, set to null, block deletion/raise an error, etc).
The *default cascade policy* is, well, the default. It is determined programmatically. It is mediated via event/hook, and the site administrator can make overrides/customizations.
A screen such as the above is a thin wrapper around an API. All standard API entities would support two actions:
* `delete`: This API performs the deletion. In absence of suitable instruction, it obeys the *default cascade policy*. If the agent has suitable permission (eg `manage rich deletion` -- *for want of a better name*), and if the API call specifies some `cascade` option, then the inputs will take precedence over the defaults.
* `deletePreview` (*for want of a better name*): This API reports about the related entities that would be deleted - and the cascade options that are valid for them. (If the user permission `manage rich deletion`, then all options are valid. If they lack permission, then options are locked-in to the *default cascade policy*.)
# Rationale
Rare is the user who clicks "Delete" while thinking, "Please, I hope the next screen is more complicated!" So why would you add this extra panel to the "Delete" action?
Regardless of this Gitlab filing, *some* cascade policy already exists. It must exist. The question is its form, content, comprehension, maintenance. Who can influence it?
* In the early/original CiviCRM, the cascade policy is specified via `xml/schema/**.xml` (e.g. `xml/schema/Contribute/Contribution.xml` specifies that the `contact_id` relation has a policy of `<onDelete>CASCADE</onDelete>`).
* In CiviCRM with hooks/events, a third-party developer can potentially use `hook_civicrm_pre` to refine the cascade policy. It is not certain if this is actually done or if the interface works well for the purpose, but the basic idea is there.
However, there is no *visibility* into this behavior for a user. Whatever the cascade policy is, there will be elements which feel a bit grey or uncertain. Users will be in the dark about this - they won't even think about the extended implications of a delete until *after* it matters. The existence of extensions heightens the mystery - a user isn't in a position to know what extensions are, and an admin isn't in a position to say how each extension does (or does not) adjust the policy.
CiviCRM is a modular, multi-organization, "customizable/off-the-shelf" system. Consequently, it is difficult to make one set of judgments for grey area things -- especially when there's an open-set of customizations for each site. Even if you do understand the policy, programmatically customizing the policy is an expensive proposition.
The basic concept of "Enriched Deletion" is to formalize the cascade policy in a way that realistically allows+reconciles influence from (a) developers, (b) site admins, and (c) backend users.
# Alternatives
* Hard-code one cascade policy
* Use "on-delete" hooks to allow programmers to customize policies
* Never delete anything - all deletions should be reversible.
* __Comment__: I'm not sure this changes the basic issue about the *sensibility* of the data - for example, suppose a user "deletes" a contact who has a case. Does that case remain visible? Do its activities in reporting about case-activities? Whether the deletion mechanism is hard or soft, there is still some kind of policy/effect on the case and activities ascribed to the contact.