1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-23 14:00:56 +01:00
phorge-phorge/webroot/rsrc/js/application/passphrase/phame-credential-control.js
epriestley 572567b85d 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
2013-11-22 14:35:35 -08:00

63 lines
1.6 KiB
JavaScript

/**
* @provides javelin-behavior-passphrase-credential-control
* @requires javelin-behavior
* javelin-dom
* javelin-stratcom
* javelin-workflow
* javelin-util
* javelin-uri
* @javelin
*/
JX.behavior('passphrase-credential-control', function(config) {
JX.Stratcom.listen(
'click',
'passphrase-credential-add',
function(e) {
var control = e.getNode('passphrase-credential-control');
var data = e.getNodeData('passphrase-credential-control');
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();
e.kill();
});
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) {
if (!data.allowNull) {
select.remove(ii);
} else {
target = ii + 1;
}
break;
}
}
select.add(
JX.$N('option', {value: response.phid}, response.name),
select.options[target] || null);
select.value = response.phid;
select.disabled = null;
}
});