summaryrefslogtreecommitdiffstats
path: root/ldap/admin/src/scripts/Dialog.pm
diff options
context:
space:
mode:
Diffstat (limited to 'ldap/admin/src/scripts/Dialog.pm')
-rw-r--r--ldap/admin/src/scripts/Dialog.pm23
1 files changed, 20 insertions, 3 deletions
diff --git a/ldap/admin/src/scripts/Dialog.pm b/ldap/admin/src/scripts/Dialog.pm
index 31893e7b..71fc48a7 100644
--- a/ldap/admin/src/scripts/Dialog.pm
+++ b/ldap/admin/src/scripts/Dialog.pm
@@ -106,6 +106,21 @@ sub isDisplayed {
return $self->{type} <= $self->{"manager"}->{type};
}
+sub isEnabled {
+ my $self = shift;
+ return !defined($self->{disabled});
+}
+
+sub enable {
+ my $self = shift;
+ delete $self->{disabled};
+}
+
+sub disable {
+ my $self = shift;
+ $self->{disabled} = 1;
+}
+
# each prompt looks like this:
# [ 'resource key', is pwd, hide ]
# The resource key is the string key of the resource
@@ -135,7 +150,7 @@ sub run {
my $prompt = $prompts[$index];
my $defaultans = $self->{defaultAns}($self, $index);
my $ans;
- if ($self->isDisplayed() && !$promtpt->[2]) {
+ if ($self->isDisplayed() && !$prompt->[2]) {
$ans = $self->{manager}->showPrompt($prompt->[0], $defaultans, $prompt->[1]);
} else {
$ans = $defaultans;
@@ -155,12 +170,14 @@ sub run {
# NOTE: user cannot BACK from prompt to prompt - BACK
# always means BACK to the previous dialog
$resp = $self->{handleResp}($self, $ans, $index);
- if ($resp == $DialogManager::SAME) {
+ if (($resp == $DialogManager::SAME) or ($resp == $DialogManager::FIRST)) {
if (!$self->isDisplayed()) {
$self->{manager}->alert('dialog_use_different_type');
$resp = $DialogManager::ERR;
- } else {
+ } elsif ($resp == $DialogManager::SAME) {
$index--; # reprompt
+ } else {
+ $index = -1; # reshow first prompt on dialog
}
} elsif ($resp == $DialogManager::ERR) {
last;