mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-18 19:40:55 +01:00
Add a numeric input control for TOTP codes
Summary: Fixes T11365. I tested these variants: - `<input type="number" />` - `<input type="text" pattern="\d*" />` Of these, this one (using `pattern`) appears to have the best behavior: it shows the correct keyboard on iOS mobile and does nothing on desktops. Using `type="number"` causes unwanted sub-controls to appear in desktop Safari, and a numbers + symbols keyboard to appear on iOS (presumably so users can type "." and "-" and maybe ","). Test Plan: Tested variants in desktop browsers and iOS simulator, see here and T11365 for discussion. Reviewers: chad Reviewed By: chad Maniphest Tasks: T11365 Differential Revision: https://secure.phabricator.com/D16323
This commit is contained in:
parent
b6bf0f6a3b
commit
020df6f5cb
3 changed files with 25 additions and 1 deletions
|
@ -1626,6 +1626,7 @@ phutil_register_library_map(array(
|
|||
'PHUIFormIconSetControl' => 'view/form/control/PHUIFormIconSetControl.php',
|
||||
'PHUIFormInsetView' => 'view/form/PHUIFormInsetView.php',
|
||||
'PHUIFormLayoutView' => 'view/form/PHUIFormLayoutView.php',
|
||||
'PHUIFormNumberControl' => 'view/form/control/PHUIFormNumberControl.php',
|
||||
'PHUIHandleListView' => 'applications/phid/view/PHUIHandleListView.php',
|
||||
'PHUIHandleTagListView' => 'applications/phid/view/PHUIHandleTagListView.php',
|
||||
'PHUIHandleView' => 'applications/phid/view/PHUIHandleView.php',
|
||||
|
@ -6185,6 +6186,7 @@ phutil_register_library_map(array(
|
|||
'PHUIFormIconSetControl' => 'AphrontFormControl',
|
||||
'PHUIFormInsetView' => 'AphrontView',
|
||||
'PHUIFormLayoutView' => 'AphrontView',
|
||||
'PHUIFormNumberControl' => 'AphrontFormControl',
|
||||
'PHUIHandleListView' => 'AphrontTagView',
|
||||
'PHUIHandleTagListView' => 'AphrontTagView',
|
||||
'PHUIHandleView' => 'AphrontView',
|
||||
|
|
|
@ -132,7 +132,7 @@ final class PhabricatorTOTPAuthFactor extends PhabricatorAuthFactor {
|
|||
'the authenticator correctly:'));
|
||||
|
||||
$form->appendChild(
|
||||
id(new AphrontFormTextControl())
|
||||
id(new PHUIFormNumberControl())
|
||||
->setLabel(pht('TOTP Code'))
|
||||
->setName('totpcode')
|
||||
->setValue($code)
|
||||
|
|
22
src/view/form/control/PHUIFormNumberControl.php
Normal file
22
src/view/form/control/PHUIFormNumberControl.php
Normal file
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
|
||||
final class PHUIFormNumberControl extends AphrontFormControl {
|
||||
|
||||
protected function getCustomControlClass() {
|
||||
return 'phui-form-number';
|
||||
}
|
||||
|
||||
protected function renderInput() {
|
||||
return javelin_tag(
|
||||
'input',
|
||||
array(
|
||||
'type' => 'text',
|
||||
'pattern' => '\d*',
|
||||
'name' => $this->getName(),
|
||||
'value' => $this->getValue(),
|
||||
'disabled' => $this->getDisabled() ? 'disabled' : null,
|
||||
'id' => $this->getID(),
|
||||
));
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue