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
This commit is contained in:
Chris Joe 2016-07-06 20:16:27 +12:00 committed by Daniel Hensby
parent 5ba1c477e6
commit dfe375e87e
6 changed files with 81 additions and 45 deletions

View File

@ -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 =
'<a href="#" class="toggle">'
. _t('MemberDatetimeOptionsetField.Toggle', 'Show formatting help')
. '</a>'
. '<ul class="toggle-content">'
. '<li>YYYY = ' . _t('MemberDatetimeOptionsetField.FOURDIGITYEAR', 'Four-digit year',
40, 'Help text describing what "YYYY" means in ISO date formatting') . '</li>'
. '<li>YY = ' . _t('MemberDatetimeOptionsetField.TWODIGITYEAR', 'Two-digit year',
40, 'Help text describing what "YY" means in ISO date formatting') . '</li>'
. '<li>MMMM = ' . _t('MemberDatetimeOptionsetField.FULLNAMEMONTH', 'Full name of month (e.g. June)',
40, 'Help text describing what "MMMM" means in ISO date formatting') . '</li>'
. '<li>MMM = ' . _t('MemberDatetimeOptionsetField.SHORTMONTH', 'Short name of month (e.g. Jun)',
40, 'Help text letting describing what "MMM" means in ISO date formatting') . '</li>'
. '<li>MM = ' . _t('MemberDatetimeOptionsetField.TWODIGITMONTH', 'Two-digit month (01=January, etc.)',
40, 'Help text describing what "MM" means in ISO date formatting') . '</li>'
. '<li>M = ' . _t('MemberDatetimeOptionsetField.MONTHNOLEADING', 'Month digit without leading zero',
40, 'Help text describing what "M" means in ISO date formatting') . '</li>'
. '<li>dd = ' . _t('MemberDatetimeOptionsetField.TWODIGITDAY', 'Two-digit day of month',
40, 'Help text describing what "dd" means in ISO date formatting') . '</li>'
. '<li>d = ' . _t('MemberDatetimeOptionsetField.DAYNOLEADING', 'Day of month without leading zero',
40, 'Help text describing what "d" means in ISO date formatting') . '</li>'
. '<li>hh = ' . _t('MemberDatetimeOptionsetField.TWODIGITHOUR', 'Two digits of hour (00 through 23)',
40, 'Help text describing what "hh" means in ISO date formatting') . '</li>'
. '<li>h = ' . _t('MemberDatetimeOptionsetField.HOURNOLEADING', 'Hour without leading zero',
40, 'Help text describing what "h" means in ISO date formatting') . '</li>'
. '<li>mm = ' . _t('MemberDatetimeOptionsetField.TWODIGITMINUTE',
'Two digits of minute (00 through 59)',
40, 'Help text describing what "mm" means in ISO date formatting') . '</li>'
. '<li>m = ' . _t('MemberDatetimeOptionsetField.MINUTENOLEADING', 'Minute without leading zero',
40, 'Help text describing what "m" means in ISO date formatting') . '</li>'
. '<li>ss = ' . _t('MemberDatetimeOptionsetField.TWODIGITSECOND',
'Two digits of second (00 through 59)',
40, 'Help text describing what "ss" means in ISO date formatting') . '</li>'
. '<li>s = ' . _t('MemberDatetimeOptionsetField.DIGITSDECFRACTIONSECOND',
'One or more digits representing a decimal fraction of a second',
40, 'Help text describing what "s" means in ISO date formatting') . '</li>'
. '<li>a = ' . _t('MemberDatetimeOptionsetField.AMORPM', 'AM (Ante meridiem) or PM (Post meridiem)',
40, 'Help text describing what "a" means in ISO date formatting') . '</li>'
. '</ul>';
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

View File

@ -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)'

View File

@ -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();

View File

@ -0,0 +1,21 @@
<a href="#" class="toggle">
<% _t('MemberDatetimeOptionsetField.Toggle', 'Show formatting help') %>
</a>
<ul class="toggle-content">
<li>YYYY = <% _t('MemberDatetimeOptionsetField.FOURDIGITYEAR', 'Four-digit year',
40, 'Help text describing what "YYYY" means in ISO date formatting') %></li>
<li>YY = <% _t('MemberDatetimeOptionsetField.TWODIGITYEAR', 'Two-digit year',
40, 'Help text describing what "YY" means in ISO date formatting') %></li>
<li>MMMM = <% _t('MemberDatetimeOptionsetField.FULLNAMEMONTH', 'Full name of month (e.g. June)',
40, 'Help text describing what "MMMM" means in ISO date formatting') %></li>
<li>MMM = <% _t('MemberDatetimeOptionsetField.SHORTMONTH', 'Short name of month (e.g. Jun)',
40, 'Help text letting describing what "MMM" means in ISO date formatting') %></li>
<li>MM = <% _t('MemberDatetimeOptionsetField.TWODIGITMONTH', 'Two-digit month (01=January, etc.)',
40, 'Help text describing what "MM" means in ISO date formatting') %></li>
<li>M = <% _t('MemberDatetimeOptionsetField.MONTHNOLEADING', 'Month digit without leading zero',
40, 'Help text describing what "M" means in ISO date formatting') %></li>
<li>dd = <% _t('MemberDatetimeOptionsetField.TWODIGITDAY', 'Two-digit day of month',
40, 'Help text describing what "dd" means in ISO date formatting') %></li>
<li>d = <% _t('MemberDatetimeOptionsetField.DAYNOLEADING', 'Day of month without leading zero',
40, 'Help text describing what "d" means in ISO date formatting') %></li>
</ul>

View File

@ -0,0 +1,26 @@
<a href="#" class="toggle">
<% _t('MemberDatetimeOptionsetField.Toggle', 'Show formatting help') %>
</a>
<ul class="toggle-content">
<li>HH = <% _t('MemberDatetimeOptionsetField.TWODIGITHOUR24', 'Two digits of hour, 24 hour format (00 through 23)',
40, 'Help text describing what "hh" means in ISO date formatting') %></li>
<li>H = <% _t('MemberDatetimeOptionsetField.HOURNOLEADING24', 'Hour without leading zero, 24 hour format',
40, 'Help text describing what "h" means in ISO date formatting') %></li>
<li>hh = <% _t('MemberDatetimeOptionsetField.TWODIGITHOUR', 'Two digits of hour, 12 hour format (00 through 12)',
40, 'Help text describing what "hh" means in ISO date formatting') %></li>
<li>h = <% _t('MemberDatetimeOptionsetField.HOURNOLEADING', 'Hour without leading zero, 12 hour format',
40, 'Help text describing what "h" means in ISO date formatting') %></li>
<li>mm = <% _t('MemberDatetimeOptionsetField.TWODIGITMINUTE',
'Two digits of minute (00 through 59)',
40, 'Help text describing what "mm" means in ISO date formatting') %></li>
<li>m = <% _t('MemberDatetimeOptionsetField.MINUTENOLEADING', 'Minute without leading zero',
40, 'Help text describing what "m" means in ISO date formatting') %></li>
<li>ss = <% _t('MemberDatetimeOptionsetField.TWODIGITSECOND',
'Two digits of second (00 through 59)',
40, 'Help text describing what "ss" means in ISO date formatting') %></li>
<li>s = <% _t('MemberDatetimeOptionsetField.DIGITSDECFRACTIONSECOND',
'One or more digits representing a decimal fraction of a second',
40, 'Help text describing what "s" means in ISO date formatting') %></li>
<li>a = <% _t('MemberDatetimeOptionsetField.AMORPM', 'AM (Ante meridiem) or PM (Post meridiem)',
40, 'Help text describing what "a" means in ISO date formatting') %></li>
</ul>

View File

@ -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 {