public function _run(\Civi\Api4\Generic\Result $result) {
$this->validateValues();
-
+ global $moneyFormatLocale;
+ $separatorConfig = \CRM_Utils_Constant::value('IGNORE_SEPARATOR_CONFIG');
+ $originalValue = $moneyFormatLocale;
+
+ if ($this->getTranslationLanguage()) {
+ // Passing in translation language forces money formatting, useful when the
+ // template is previewed before being saved.
+ $moneyFormatLocale = $this->getTranslationLanguage();
+ putenv('IGNORE_SEPARATOR_CONFIG=' . 1);
+ }
$r = \CRM_Core_BAO_MessageTemplate::renderTemplate([
'model' => $this->_model,
'messageTemplate' => $this->getMessageTemplate(),
'messageTemplateId' => $this->getMessageTemplateId(),
+ 'language' => $this->getPreferredLanguage(),
]);
-
+ $moneyFormatLocale = $originalValue;
+ putenv('IGNORE_SEPARATOR_CONFIG=' . $separatorConfig);
$result[] = \CRM_Utils_Array::subset($r, ['subject', 'html', 'text']);
}
crmApi4({
examples: ['ExampleData', 'get', {
// FIXME: workflow name
+ language: $ctrl.lang,
where: [["tags", "CONTAINS", "preview"], ["name", "LIKE", "workflow/" + $ctrl.records.main.workflow_name + "/%"]],
select: ['name', 'title', 'data']
}],
format: 'example'
}]
}).then(function(resp) {
- console.log('resp',resp);
if ((!resp.examples || resp.examples.length === 0) && resp.adhoc) {
// In the future, if Preview dialog allows editing adhoc examples, then we can show the dialog. But for now, it won't work without explicit examples.
crmUiAlert({
(function(angular, $, _) {
- angular.module('crmMsgadm').controller('MsgtpluiPreviewCtrl', function($scope, crmUiHelp, crmStatus, crmApi4, crmUiAlert, $timeout, $q, dialogService) {
+ angular.module('crmMsgadm').controller('MsgtpluiPreviewCtrl', function($scope, crmUiHelp, crmStatus, crmApi4, crmUiAlert, $timeout, $q, dialogService, $location) {
var ts = $scope.ts = CRM.ts('crmMsgadm');
var hs = $scope.hs = crmUiHelp({file: 'CRM/MessageAdmin/crmMsgadm'}); // See: templates/CRM/MessageAdmin/crmMsgadm.hlp
var $ctrl = this, model = $scope.model;
+ var args = $location.search();
+ if (args.lang) {
+ $ctrl.lang = args.lang;
+ }
$ctrl.exampleId = parseInt(_.findKey(model.examples, {name: model.exampleName}));
$ctrl.revisionId = parseInt(_.findKey(model.revisions, {name: model.revisionName}));
dlgModel.refresh = function(){
return crmApi4('ExampleData', 'get', {
where: [["name", "=", model.examples[$ctrl.exampleId].name]],
+ language: $ctrl.lang,
select: ['name', 'file', 'title', 'data']
}).then(function(response){
dlgModel.title = ts('Example: %1', {1: response[0].title || response[0].name});
function requestStoredExample() {
return crmApi4('ExampleData', 'get', {
where: [["name", "=", model.examples[$ctrl.exampleId].name]],
+ language: $ctrl.lang,
select: ['data']
}).then(function(response) {
return response[0].data;
rendering.then(function(exampleData) {
var filteredData = model.filterData ? model.filterData(exampleData) : exampleData;
return crmApi4('WorkflowMessage', 'render', {
+ language: $ctrl.lang,
+ translationLanguage: $ctrl.lang,
workflow: filteredData.workflow,
values: filteredData.modelProps,
messageTemplate: model.revisions[$ctrl.revisionId].rec