mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
BUG Readonly and disabled CurrencyFields no longer always returns dollar currency sign, now respect config
This commit is contained in:
parent
d56bad7568
commit
c06cf4820e
@ -3,6 +3,7 @@
|
||||
namespace SilverStripe\Forms;
|
||||
|
||||
use SilverStripe\Core\Convert;
|
||||
use SilverStripe\ORM\FieldType\DBCurrency;
|
||||
|
||||
/**
|
||||
* Readonly version of a {@link CurrencyField}.
|
||||
@ -13,7 +14,7 @@ class CurrencyField_Disabled extends CurrencyField
|
||||
protected $disabled = true;
|
||||
|
||||
/**
|
||||
* overloaded to display the correctly formated value for this datatype
|
||||
* Overloaded to display the correctly formatted value for this data type
|
||||
*
|
||||
* @param array $properties
|
||||
* @return string
|
||||
@ -22,7 +23,8 @@ class CurrencyField_Disabled extends CurrencyField
|
||||
{
|
||||
if ($this->value) {
|
||||
$val = Convert::raw2xml($this->value);
|
||||
$val = _t('SilverStripe\\Forms\\CurrencyField.CURRENCYSYMBOL', '$') . number_format(preg_replace('/[^0-9.-]/', "", $val), 2);
|
||||
$val = DBCurrency::config()->get('currency_symbol')
|
||||
. number_format(preg_replace('/[^0-9.-]/', '', $val), 2);
|
||||
$valforInput = Convert::raw2att($val);
|
||||
} else {
|
||||
$valforInput = '';
|
||||
|
@ -3,6 +3,7 @@
|
||||
namespace SilverStripe\Forms;
|
||||
|
||||
use SilverStripe\Core\Convert;
|
||||
use SilverStripe\ORM\FieldType\DBCurrency;
|
||||
|
||||
/**
|
||||
* Readonly version of a {@link CurrencyField}.
|
||||
@ -11,19 +12,20 @@ class CurrencyField_Readonly extends ReadonlyField
|
||||
{
|
||||
|
||||
/**
|
||||
* Overloaded to display the correctly formated value for this datatype
|
||||
* Overloaded to display the correctly formatted value for this data type
|
||||
*
|
||||
* @param array $properties
|
||||
* @return string
|
||||
*/
|
||||
public function Field($properties = array())
|
||||
{
|
||||
$currencySymbol = DBCurrency::config()->get('currency_symbol');
|
||||
if ($this->value) {
|
||||
$val = Convert::raw2xml($this->value);
|
||||
$val = _t('SilverStripe\\Forms\\CurrencyField.CURRENCYSYMBOL', '$') . number_format(preg_replace('/[^0-9.-]/', "", $val), 2);
|
||||
$val = $currencySymbol . number_format(preg_replace('/[^0-9.-]/', '', $val), 2);
|
||||
$valforInput = Convert::raw2att($val);
|
||||
} else {
|
||||
$val = '<i>' . _t('SilverStripe\\Forms\\CurrencyField.CURRENCYSYMBOL', '$') . '0.00</i>';
|
||||
$val = '<i>' . $currencySymbol . '0.00</i>';
|
||||
$valforInput = '';
|
||||
}
|
||||
return "<span class=\"readonly " . $this->extraClass() . "\" id=\"" . $this->ID() . "\">$val</span>"
|
||||
|
34
tests/php/Forms/CurrencyField_DisabledTest.php
Normal file
34
tests/php/Forms/CurrencyField_DisabledTest.php
Normal file
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace SilverStripe\Forms\Tests;
|
||||
|
||||
use SilverStripe\Dev\SapphireTest;
|
||||
use SilverStripe\Forms\CurrencyField_Disabled;
|
||||
use SilverStripe\ORM\FieldType\DBCurrency;
|
||||
|
||||
class CurrencyField_DisabledTest extends SapphireTest
|
||||
{
|
||||
public function testFieldWithValue()
|
||||
{
|
||||
$field = new CurrencyField_Disabled('Test', '', '$5.00');
|
||||
$result = $field->Field();
|
||||
|
||||
$this->assertContains('<input', $result, 'An input should be rendered');
|
||||
$this->assertContains('disabled', $result, 'The input should be disabled');
|
||||
$this->assertContains('$5.00', $result, 'The value should be rendered');
|
||||
}
|
||||
|
||||
/**
|
||||
* @todo: Update the expectation when intl for currencies is implemented
|
||||
*/
|
||||
public function testFieldWithCustomisedCurrencySymbol()
|
||||
{
|
||||
DBCurrency::config()->update('currency_symbol', '€');
|
||||
$field = new CurrencyField_Disabled('Test', '', '€5.00');
|
||||
$result = $field->Field();
|
||||
|
||||
$this->assertContains('<input', $result, 'An input should be rendered');
|
||||
$this->assertContains('disabled', $result, 'The input should be disabled');
|
||||
$this->assertContains('€5.00', $result, 'The value should be rendered');
|
||||
}
|
||||
}
|
53
tests/php/Forms/CurrencyField_ReadonlyTest.php
Normal file
53
tests/php/Forms/CurrencyField_ReadonlyTest.php
Normal file
@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace SilverStripe\Forms\Tests;
|
||||
|
||||
use SilverStripe\Dev\SapphireTest;
|
||||
use SilverStripe\Forms\CurrencyField_Readonly;
|
||||
use SilverStripe\ORM\FieldType\DBCurrency;
|
||||
|
||||
class CurrencyField_ReadonlyTest extends SapphireTest
|
||||
{
|
||||
public function testPerformReadonlyTransformation()
|
||||
{
|
||||
$field = new CurrencyField_Readonly('Test', '', '$5.00');
|
||||
$result = $field->performReadonlyTransformation();
|
||||
$this->assertInstanceOf(CurrencyField_Readonly::class, $result);
|
||||
$this->assertNotSame($result, $field, 'Should return a clone of the field');
|
||||
}
|
||||
|
||||
public function testFieldWithValue()
|
||||
{
|
||||
$field = new CurrencyField_Readonly('Test', '', '$5.00');
|
||||
$result = $field->Field();
|
||||
|
||||
$this->assertContains('<input', $result, 'An input should be rendered');
|
||||
$this->assertContains('readonly', $result, 'The input should be readonly');
|
||||
$this->assertContains('$5.00', $result, 'The value should be rendered');
|
||||
}
|
||||
|
||||
public function testFieldWithOutValue()
|
||||
{
|
||||
DBCurrency::config()->update('currency_symbol', 'AUD');
|
||||
$field = new CurrencyField_Readonly('Test', '', null);
|
||||
$result = $field->Field();
|
||||
|
||||
$this->assertContains('<input', $result, 'An input should be rendered');
|
||||
$this->assertContains('readonly', $result, 'The input should be readonly');
|
||||
$this->assertContains('AUD0.00', $result, 'The value should be rendered');
|
||||
}
|
||||
|
||||
/**
|
||||
* @todo: Update the expectation when intl for currencies is implemented
|
||||
*/
|
||||
public function testFieldWithCustomisedCurrencySymbol()
|
||||
{
|
||||
DBCurrency::config()->update('currency_symbol', '€');
|
||||
$field = new CurrencyField_Readonly('Test', '', '€5.00');
|
||||
$result = $field->Field();
|
||||
|
||||
$this->assertContains('<input', $result, 'An input should be rendered');
|
||||
$this->assertContains('readonly', $result, 'The input should be readonly');
|
||||
$this->assertContains('€5.00', $result, 'The value should be rendered');
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user