Skip to content
Snippets Groups Projects
Commit 9b0a4617 authored by colemanw's avatar colemanw
Browse files

Merge pull request #1447 from colemanw/master

Add client-side money formatting
parents 2af30652 5ec182d9
No related branches found
No related tags found
No related merge requests found
......@@ -453,9 +453,10 @@ class CRM_Core_Resources {
}
}
// Initialize CRM.url
// Initialize CRM.url and CRM.formatMoney
$url = CRM_Utils_System::url('civicrm/example', 'placeholder', FALSE, NULL, FALSE);
$js = "CRM.url('init', '$url');";
$js = "CRM.url('init', '$url');\n";
$js .= "CRM.formatMoney('init', '" . CRM_Utils_Money::format(1234.56) . "');";
$this->addScript($js, $jsWeight++, $region);
// Add global settings
......
......@@ -879,4 +879,33 @@ CRM.validate = CRM.validate || {
$(this).toggleClass('collapsed');
});
};
/**
* Clientside currency formatting
* @param value
* @param format
* @return string
*/
var currencyTemplate;
CRM.formatMoney = function(value, format) {
var decimal, separator, sign, i, j, result;
if (value === 'init' && format) {
currencyTemplate = format;
return;
}
format = format || currencyTemplate;
result = /1(.?)234(.?)56/.exec(format);
if (result === null) {
return 'Invalid format passed to CRM.formatMoney';
}
separator = result[1];
decimal = result[2];
sign = (value < 0) ? '-' : '';
//extracting the absolute value of the integer part of the number and converting to string
i = parseInt(value = Math.abs(value).toFixed(2)) + '';
j = ((j = i.length) > 3) ? j % 3 : 0;
result = sign + (j ? i.substr(0, j) + separator : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + separator) + (2 ? decimal + Math.abs(value - i).toFixed(2).slice(2) : '');
return format.replace(/1.*234.*56/, result);
};
})(jQuery);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment