summaryrefslogtreecommitdiffstats
path: root/install
diff options
context:
space:
mode:
Diffstat (limited to 'install')
-rw-r--r--install/ui/dialog.js3
-rw-r--r--install/ui/ipa.js48
2 files changed, 45 insertions, 6 deletions
diff --git a/install/ui/dialog.js b/install/ui/dialog.js
index 28c71ad54..324eb9b93 100644
--- a/install/ui/dialog.js
+++ b/install/ui/dialog.js
@@ -66,6 +66,8 @@ IPA.dialog = function(spec) {
that.title = spec.title;
that.width = spec.width || 500;
that.height = spec.height;
+ that.close_on_escape = spec.close_on_escape !== undefined ?
+ spec.close_on_escape : true;
that.widgets = IPA.widget_container();
that.fields = IPA.field_container({ container: that });
@@ -156,6 +158,7 @@ IPA.dialog = function(spec) {
that.container.dialog({
title: that.title,
modal: true,
+ closeOnEscape: that.close_on_escape,
width: that.width,
minWidth: that.width,
height: that.height,
diff --git a/install/ui/ipa.js b/install/ui/ipa.js
index b5a7486d5..34174c81a 100644
--- a/install/ui/ipa.js
+++ b/install/ui/ipa.js
@@ -489,6 +489,7 @@ IPA.command = function(spec) {
xhr: xhr,
text_status: text_status,
error_thrown: error_thrown,
+ close_on_escape: false,
command: that
});
@@ -1353,10 +1354,19 @@ IPA.unauthorized_dialog = function(spec) {
}).appendTo(that.krb_message_contatiner);
text = IPA.get_message('login.form_auth', "form-based authentication");
- $('<a/>', {
+ that.form_auth_link = $('<a/>', {
text: text,
- style: 'cursor:pointer;',
- click: that.show_form
+ href: '#',
+ click: function() {
+ that.show_form();
+ return false;
+ },
+ keydown: function(event) {
+ if (event.keyCode === 13) { //enter
+ that.show_form();
+ return false;
+ }
+ }
}).appendTo(fb_title);
fb_title.append('.');
@@ -1368,7 +1378,8 @@ IPA.unauthorized_dialog = function(spec) {
that.form = $('<div>', {
'class': 'auth-dialog',
- style: 'display: none;'
+ style: 'display: none;',
+ keyup: that.on_form_keyup
}).appendTo(that.container);
var text = IPA.get_message('login.login', "Login");
@@ -1421,20 +1432,45 @@ IPA.unauthorized_dialog = function(spec) {
});
};
+ that.open = function() {
+ that.dialog_open();
+ that.form_auth_link.focus();
+ };
+
+ that.on_form_keyup = function(event) {
+
+ if (that.switching) {
+ that.switching = false;
+ return;
+ }
+
+ if (event.keyCode === 13) { // enter
+ that.on_login();
+ event.preventDefault();
+ } else if (event.keyCode === 27) { // escape
+ that.on_back();
+ event.preventDefault();
+ }
+ };
+
that.show_form = function() {
+ that.switching = true;
+
that.krb_message_contatiner.css('display', 'none');
that.form.css('display', 'block');
-
that.display_buttons(['login', 'back']);
+
+ var user_field = that.fields.get_field('username');
+ user_field.widget.focus_input();
};
that.on_back = function() {
that.krb_message_contatiner.css('display', 'block');
that.form.css('display', 'none');
-
that.display_buttons(['retry']);
+ that.form_auth_link.focus();
};
that.on_login = function() {