silverstripe-framework/src/Forms/CurrencyField_Readonly.php
Jonathon Menz 5a5ba1e5c0 Fix: negative values in read only currency field
Don’t strip out ‘-‘ character as this makes negative values appear to be positive (Fixes #8126)
2018-06-01 12:59:02 -07:00

41 lines
1.2 KiB
PHP

<?php
namespace SilverStripe\Forms;
use SilverStripe\Core\Convert;
/**
* Readonly version of a {@link CurrencyField}.
*/
class CurrencyField_Readonly extends ReadonlyField
{
/**
* Overloaded to display the correctly formated value for this datatype
*
* @param array $properties
* @return string
*/
public function Field($properties = array())
{
if ($this->value) {
$val = Convert::raw2xml($this->value);
$val = _t('SilverStripe\\Forms\\CurrencyField.CURRENCYSYMBOL', '$') . number_format(preg_replace('/[^0-9.-]/', "", $val), 2);
$valforInput = Convert::raw2att($val);
} else {
$val = '<i>' . _t('SilverStripe\\Forms\\CurrencyField.CURRENCYSYMBOL', '$') . '0.00</i>';
$valforInput = '';
}
return "<span class=\"readonly " . $this->extraClass() . "\" id=\"" . $this->ID() . "\">$val</span>"
. "<input type=\"hidden\" name=\"" . $this->name . "\" value=\"" . $valforInput . "\" />";
}
/**
* This already is a readonly field.
*/
public function performReadonlyTransformation()
{
return clone $this;
}
}