From dfe375e87e8bac103a4445ce7a146374750179e1 Mon Sep 17 00:00:00 2001 From: Chris Joe Date: Wed, 6 Jul 2016 20:16:27 +1200 Subject: [PATCH] Fix MemberDatetime helper description, and shifted them to templates (#5766) * Fix MemberDatetime helper description, and shifted them to templates * added descriptionTemplate for setting the description * Unit test for description with templates --- forms/MemberDatetimeOptionsetField.php | 58 +++++-------------- lang/en.yml | 6 +- security/Member.php | 2 + ...DatetimeOptionsetField_description_date.ss | 21 +++++++ ...DatetimeOptionsetField_description_time.ss | 26 +++++++++ .../MemberDatetimeOptionsetFieldTest.php | 13 +++++ 6 files changed, 81 insertions(+), 45 deletions(-) create mode 100644 templates/forms/MemberDatetimeOptionsetField_description_date.ss create mode 100644 templates/forms/MemberDatetimeOptionsetField_description_time.ss diff --git a/forms/MemberDatetimeOptionsetField.php b/forms/MemberDatetimeOptionsetField.php index 4aa150f5b..a3d456247 100644 --- a/forms/MemberDatetimeOptionsetField.php +++ b/forms/MemberDatetimeOptionsetField.php @@ -17,6 +17,10 @@ class MemberDatetimeOptionsetField extends OptionsetField { */ private static $preview_date = '25-12-2011 17:30:00'; + private static $casting = ['Description' => 'HTMLText']; + + private $descriptionTemplate = ''; + public function Field($properties = array()) { Requirements::javascript(FRAMEWORK_ADMIN_DIR . '/client/dist/js/MemberDatetimeOptionsetField.js'); $options = array(); @@ -90,52 +94,20 @@ class MemberDatetimeOptionsetField extends OptionsetField { return 'optionset memberdatetimeoptionset'; } - /** - * @todo Put this text into a template? - */ public function getDescription() { - $output = - '' - . _t('MemberDatetimeOptionsetField.Toggle', 'Show formatting help') - . '' - . ''; - return $output; + if ($template = $this->getDescriptionTemplate()) { + return $this->renderWith($template); + } + return parent::getDescription(); } + public function getDescriptionTemplate() { + return $this->descriptionTemplate; + } + + public function setDescriptionTemplate($template) { + $this->descriptionTemplate = $template; + } public function setValue($value) { // Extract custom option from postback diff --git a/lang/en.yml b/lang/en.yml index 775375139..1151b49dd 100644 --- a/lang/en.yml +++ b/lang/en.yml @@ -500,13 +500,15 @@ en: DIGITSDECFRACTIONSECOND: 'One or more digits representing a decimal fraction of a second' FOURDIGITYEAR: 'Four-digit year' FULLNAMEMONTH: 'Full name of month (e.g. June)' - HOURNOLEADING: 'Hour without leading zero' + HOURNOLEADING: 'Hour without leading zero, 12 hour format' + HOURNOLEADING24: 'Hour without leading zero, 24 hour format' MINUTENOLEADING: 'Minute without leading zero' MONTHNOLEADING: 'Month digit without leading zero' Preview: Preview SHORTMONTH: 'Short name of month (e.g. Jun)' TWODIGITDAY: 'Two-digit day of month' - TWODIGITHOUR: 'Two digits of hour (00 through 23)' + TWODIGITHOUR: 'Two digits of hour, 12 hour format (00 through 12)' + TWODIGITHOUR24: 'Two digits of hour, 24 hour format (00 through 23)' TWODIGITMINUTE: 'Two digits of minute (00 through 59)' TWODIGITMONTH: 'Two-digit month (01=January, etc.)' TWODIGITSECOND: 'Two digits of second (00 through 59)' diff --git a/security/Member.php b/security/Member.php index fde9c1f87..dfad94a41 100644 --- a/security/Member.php +++ b/security/Member.php @@ -1475,6 +1475,7 @@ class Member extends DataObject implements TemplateGlobalProvider { ) ); $dateFormatField->setValue($self->DateFormat); + $dateFormatField->setDescriptionTemplate('MemberDatetimeOptionsetField_description_date'); $defaultTimeFormat = Zend_Locale_Format::getTimeFormat(new Zend_Locale($self->Locale)); $timeFormatMap = array( @@ -1491,6 +1492,7 @@ class Member extends DataObject implements TemplateGlobalProvider { ) ); $timeFormatField->setValue($self->TimeFormat); + $timeFormatField->setDescriptionTemplate('MemberDatetimeOptionsetField_description_time'); }); return parent::getCMSFields(); diff --git a/templates/forms/MemberDatetimeOptionsetField_description_date.ss b/templates/forms/MemberDatetimeOptionsetField_description_date.ss new file mode 100644 index 000000000..e51ea1bbc --- /dev/null +++ b/templates/forms/MemberDatetimeOptionsetField_description_date.ss @@ -0,0 +1,21 @@ + + <% _t('MemberDatetimeOptionsetField.Toggle', 'Show formatting help') %> + + diff --git a/templates/forms/MemberDatetimeOptionsetField_description_time.ss b/templates/forms/MemberDatetimeOptionsetField_description_time.ss new file mode 100644 index 000000000..35f6eb705 --- /dev/null +++ b/templates/forms/MemberDatetimeOptionsetField_description_time.ss @@ -0,0 +1,26 @@ + + <% _t('MemberDatetimeOptionsetField.Toggle', 'Show formatting help') %> + + diff --git a/tests/forms/MemberDatetimeOptionsetFieldTest.php b/tests/forms/MemberDatetimeOptionsetFieldTest.php index 4f5e0407a..1a4d9784b 100644 --- a/tests/forms/MemberDatetimeOptionsetFieldTest.php +++ b/tests/forms/MemberDatetimeOptionsetFieldTest.php @@ -102,6 +102,19 @@ class MemberDatetimeOptionsetFieldTest extends SapphireTest { $this->assertFalse($field->validate($validator)); } + public function testDescriptionTemplate() { + $field = new MemberDatetimeOptionsetField('DateFormat', 'DateFormat'); + + $this->assertEmpty($field->getDescription()); + + $field->setDescription('Test description'); + $this->assertEquals('Test description', $field->getDescription()); + + $field->setDescriptionTemplate('MemberDatetimeOptionsetField_description_time'); + $this->assertNotEmpty($field->getDescription()); + $this->assertNotEquals('Test description', $field->getDescription()); + } + } class MemberDatetimeOptionsetFieldTest_Controller extends Controller {