mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-27 01:02:42 +01:00
Add "allow null" and username hinting to the Passphrase credential control
Summary: Ref T4122. - For Diffusion, we need "allow null" (permits selection of "No Credential") for anonymous HTTP repositories. - For Diffusion, we can make things a little easier to configure by prefilling the username. Test Plan: Used UIExample form. These featuers are used in a future revision. Reviewers: btrahan Reviewed By: btrahan CC: aran Maniphest Tasks: T4122 Differential Revision: https://secure.phabricator.com/D7624
This commit is contained in:
parent
7c3cb5948c
commit
572567b85d
4 changed files with 48 additions and 7 deletions
|
@ -1982,7 +1982,7 @@ celerity_register_resource_map(array(
|
|||
),
|
||||
'javelin-behavior-passphrase-credential-control' =>
|
||||
array(
|
||||
'uri' => '/res/e606ad52/rsrc/js/application/passphrase/phame-credential-control.js',
|
||||
'uri' => '/res/70823662/rsrc/js/application/passphrase/phame-credential-control.js',
|
||||
'type' => 'js',
|
||||
'requires' =>
|
||||
array(
|
||||
|
@ -1991,6 +1991,7 @@ celerity_register_resource_map(array(
|
|||
2 => 'javelin-stratcom',
|
||||
3 => 'javelin-workflow',
|
||||
4 => 'javelin-util',
|
||||
5 => 'javelin-uri',
|
||||
),
|
||||
'disk' => '/rsrc/js/application/passphrase/phame-credential-control.js',
|
||||
),
|
||||
|
|
|
@ -45,6 +45,9 @@ final class PassphraseCredentialEditController extends PassphraseController {
|
|||
->setProvidesType($type->getProvidesType());
|
||||
|
||||
$is_new = true;
|
||||
|
||||
// Prefill username if provided.
|
||||
$credential->setUsername($request->getStr('username'));
|
||||
}
|
||||
|
||||
$errors = array();
|
||||
|
|
|
@ -4,6 +4,18 @@ final class PassphraseCredentialControl extends AphrontFormControl {
|
|||
|
||||
private $options;
|
||||
private $credentialType;
|
||||
private $defaultUsername;
|
||||
private $allowNull;
|
||||
|
||||
public function setAllowNull($allow_null) {
|
||||
$this->allowNull = $allow_null;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setDefaultUsername($default_username) {
|
||||
$this->defaultUsername = $default_username;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setCredentialType($credential_type) {
|
||||
$this->credentialType = $credential_type;
|
||||
|
@ -35,9 +47,13 @@ final class PassphraseCredentialControl extends AphrontFormControl {
|
|||
}
|
||||
|
||||
$disabled = $this->getDisabled();
|
||||
if (!$options_map) {
|
||||
$options_map[''] = pht('(No Existing Credentials)');
|
||||
$disabled = true;
|
||||
if ($this->allowNull) {
|
||||
$options_map = array('' => pht('(No Credentials)')) + $options_map;
|
||||
} else {
|
||||
if (!$options_map) {
|
||||
$options_map[''] = pht('(No Existing Credentials)');
|
||||
$disabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
Javelin::initBehavior('passphrase-credential-control');
|
||||
|
@ -68,6 +84,8 @@ final class PassphraseCredentialControl extends AphrontFormControl {
|
|||
'sigil' => 'passphrase-credential-control',
|
||||
'meta' => array(
|
||||
'type' => $this->getCredentialType(),
|
||||
'username' => $this->defaultUsername,
|
||||
'allowNull' => $this->allowNull,
|
||||
),
|
||||
),
|
||||
array(
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
* javelin-stratcom
|
||||
* javelin-workflow
|
||||
* javelin-util
|
||||
* javelin-uri
|
||||
* @javelin
|
||||
*/
|
||||
|
||||
JX.behavior('passphrase-credential-control', function(config) {
|
||||
|
@ -16,7 +18,11 @@ JX.behavior('passphrase-credential-control', function(config) {
|
|||
var control = e.getNode('passphrase-credential-control');
|
||||
var data = e.getNodeData('passphrase-credential-control');
|
||||
|
||||
new JX.Workflow('/passphrase/edit/?type=' + data.type)
|
||||
var uri = JX.$U('/passphrase/edit/');
|
||||
uri.setQueryParam('type', data.type);
|
||||
uri.setQueryParam('username', data.username);
|
||||
|
||||
new JX.Workflow(uri)
|
||||
.setHandler(JX.bind(null, onadd, control))
|
||||
.start();
|
||||
|
||||
|
@ -26,16 +32,29 @@ JX.behavior('passphrase-credential-control', function(config) {
|
|||
function onadd(control, response) {
|
||||
var select = JX.DOM.find(control, 'select', 'passphrase-credential-select');
|
||||
|
||||
var data = JX.Stratcom.getData(control);
|
||||
|
||||
// If this allows the user to select "No Credential" (`allowNull`),
|
||||
// put the new credential in the menu below the "No Credential" option.
|
||||
|
||||
// Otherwise, remove the "(No Existing Credentials)" if it exists and
|
||||
// put the new credential at the top.
|
||||
|
||||
var target = 0;
|
||||
for (var ii = 0; ii < select.options.length; ii++) {
|
||||
if (!select.options[ii].value) {
|
||||
select.remove(ii);
|
||||
if (!data.allowNull) {
|
||||
select.remove(ii);
|
||||
} else {
|
||||
target = ii + 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
select.add(
|
||||
JX.$N('option', {value: response.phid}, response.name),
|
||||
select.options[0] || null);
|
||||
select.options[target] || null);
|
||||
|
||||
select.value = response.phid;
|
||||
select.disabled = null;
|
||||
|
|
Loading…
Reference in a new issue