Happens on dmaster.demo too so it's not windows or anything weird.
Click add membership type.
Click cancel. It happens if you fill it out too but this is quicker and is enough to see it.
There might be a couple things here.
One is that the message is tied partly to whether the value is numeric, which doesn't really have anything to do with the missing php extension.
The second is that for whatever reason the $amount value is being passed in as <input size="6" maxlength="14" name="minimum_fee" type="text" id="minimum_fee" class="six crm-form-text" />. I'm not sure yet what the mismatch is there.
It's kind of a regression because of the numeric part, but the form value might be old.
Edited
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items ...
Show closed items
Linked items 0
Link issues together to show that they're related.
Learn more.
Ok. If I take it out then it still seems to have the correct decimal separator if you're editing an existing one, so that's good. The currency symbol doesn't get displayed, which is ok on this form since you can't choose it anyway here, but the Field.tpl subform is generic.
So there's a possibility that there are some places expecting that these will happen automatically:
That the template will display the currency symbol.
That the template will do the replacing of the decimal separators for the form field.
I'm also seeing a variation of the false positive when you have a custom field of type money with a dropdown list and the labels include a currency symbol. If there's an existing value then when you edit it gives you the INTL message. This must be coming from somewhere else since it happens even with the Field.tpl crmMoney removed.
@DaveD I think thats ok because it will flush them out & we can work through the places where we are doing odd things - I think without the check in the format function we get a few test fails that flush some out
I got another false positive but it's not a crmMoney template issue. When you add a price field, and you're setting up a radio choice, then when you choose the membership type some ajax happens to fill out the line. That calls CRM_Member_Page_AJAX::getMemberTypeDefaults which looks up the minimum fee and passes it to CRM_Utils_Money::formatLocaleNumericRoundedForDefaultCurrency. If you have no minimum fee it's null and this triggers the missing INTL message. The default for that field is DEFAULT 0.000000000 but it allows null which is what it seems to put when you have no minimum fee. In addition this gives TypeError: Return value of CRM_Utils_Money::formatUSLocaleNumericRounded() must be of the type string, null returned in CRM_Utils_Money::formatUSLocaleNumericRounded(), but it's hidden because ajax.
justinfreeman (Agileware)changed title from False positive message about missing INTL extension on membership type form to False positive message about missing INTL PHP extension on membership type form
changed title from False positive message about missing INTL extension on membership type form to False positive message about missing INTL PHP extension on membership type form
Although this issue is mostly turned out to be about places where non-numeric values are being passed to money formatting. The popup message is a new symptom, only in master/5.37 at the moment, although the problems may date back further.
There should still be some kind of message logged somewhere if non-numeric because most of what's going to come up is form-related so test coverage is unlikely to pick it up.
Maybe this a job for trigger_error(), which will disappear as far as most users see, but will come up in tests or for anyone who is set up to make it crash for those.