- fix: op=saveSettings broken

This commit is contained in:
JT Smith 2006-06-10 02:39:46 +00:00
parent edaa6c463a
commit 47e6e65dd1
6 changed files with 390 additions and 239 deletions

View file

@ -423,6 +423,28 @@ sub editUserFormSave {
#-------------------------------------------------------------------
=head2 editUserSettingsForm ( )
You need to override this method in your auth module. It needs to return a the rows in a form for the stuff you want to be configured through webgui settings.
=cut
sub editUserSettingsForm {
}
#-------------------------------------------------------------------
=head2 editUserSettingsFormSave ( )
You need to override this method in your auth module. It's the save for the editUserSettingsFormSave method.
=cut
sub editUserSettingsFormSave {
}
#-------------------------------------------------------------------
=head2 error ( [errorMsg] )
Sets or returns the error currently stored in the object

View file

@ -353,6 +353,14 @@ sub editUserSettingsForm {
return $f->printRowsOnly;
}
#-------------------------------------------------------------------
sub editUserSettingsFormSave {
my $self = shift;
my $f = $self->session->form;
my $s = $self->session->setting;
$s->set("ldapConnection", $f->process("ldapConnection","selectBox"));
}
#-------------------------------------------------------------------
sub getAccountTemplateId {
my $self = shift;

View file

@ -332,12 +332,10 @@ sub editUserSettingsForm {
my $self = shift;
my $i18n = WebGUI::International->new($self->session,'AuthWebGUI');
my $f = WebGUI::HTMLForm->new($self->session);
$f->text(
$f->integer(
-name=>"webguiPasswordLength",
-value=>$self->session->setting->get("webguiPasswordLength"),
-label=>$i18n->get(15),
-size=>5,
-maxLength=>5,
);
$f->interval(
-name=>"webguiPasswordTimeout",
@ -422,6 +420,29 @@ sub editUserSettingsForm {
return $f->printRowsOnly;
}
#-------------------------------------------------------------------
sub editUserSettingsFormSave {
my $self = shift;
my $f = $self->session->form;
my $s = $self->session->setting;
$s->set("webguiPasswordLength", $f->process("webguiPasswordLength","integer"));
$s->set("webguiPasswordTimeout", $f->process("webguiPasswordTimeout","interval"));
$s->set("webguiExpirePasswordOnCreation", $f->process("webguiExpirePasswordOnCreation","yesNo"));
$s->set("webguiSendWelcomeMessage", $f->process("webguiSendWelcomeMessage","yesNo"));
$s->set("webguiWelcomeMessage", $f->process("webguiWelcomeMessage","textarea"));
$s->set("webguiChangeUsername", $f->process("webguiChangeUsername","yesNo"));
$s->set("webguiChangePassword", $f->process("webguiChangePassword","yesNo"));
$s->set("webguiPasswordRecovery", $f->process("webguiPasswordRecovery","yesNo"));
$s->set("webguiRecoverPasswordEmail", $f->process("webguiRecoverPasswordEmail","textarea"));
$s->set("webguiValidateEmail", $f->process("webguiValidateEmail","yesNo"));
$s->set("webguiUseCaptcha", $f->process("webguiUseCaptcha","yesNo"));
$s->set("webguiAccountTemplate", $f->process("webguiAccountTemplate","template"));
$s->set("webguiCreateAccountTemplate", $f->process("webguiCreateAccountTemplate","template"));
$s->set("webguiExpiredPasswordTemplate", $f->process("webguiExpiredPasswordTemplate","template"));
$s->set("webguiLoginTemplate", $f->process("webguiLoginTemplate","template"));
$s->set("webguiPasswordRecoveryTemplate", $f->process("webguiPasswordRecoveryTemplate","template"));
}
#-------------------------------------------------------------------
sub getAccountTemplateId {
my $self = shift;

View file

@ -25,13 +25,322 @@ Package WebGUI::Operation::Settings
Operation handler for sitewide settings for content, messaging, authentication, etc.
=head1 FUNCTIONS
The following functions are available from this package.
=cut
#-------------------------------------------------------------------
=head2 definition ( )
Returns an array reference used by www_editSettings and www_editSettingsSave to process the form data.
=cut
sub definition {
my $session = shift;
my $i18n = shift;
my @fields = ();
# company info
push(@fields, {
tab=>"company",
fieldType=>"text",
name=>"companyName",
label=>$i18n->get(125),
hoverHelp=>$i18n->get('125 description'),
defaultValue=>$session->setting->get("companyName")
});
push(@fields, {
tab=>"company",
fieldType=>"text",
name=>"companyEmail",
label=>$i18n->get(126),
hoverHelp=>$i18n->get('126 description'),
defaultValue=>$session->setting->get("companyEmail")
});
push(@fields, {
tab=>"company",
fieldType=>"url",
name=>"companyURL",
label=>$i18n->get(127),
hoverHelp=>$i18n->get('127 description'),
defaultValue=>$session->setting->get("companyURL")
});
# content settings
push(@fields, {
tab=>"content",
fieldType=>"workflow",
name=>"defaultVersionTagWorkflow",
defaultValue=>$session->setting->get("defaultVersionTagWorkflow"),
type=>"WebGUI::VersionTag",
label=>$i18n->get("default version tag workflow"),
hoverHelp=>$i18n->get('default version tag workflow help')
});
my %htmlFilter = (
'none'=>$i18n->get(420),
'most'=>$i18n->get(421),
'javascript'=>$i18n->get(526),
'all'=>$i18n->get(419)
);
push(@fields, {
tab=>"content",
fieldType=>"asset",
name=>"defaultPage",
label=>$i18n->get(527),
hoverHelp=>$i18n->get('527 description'),
defaultValue=>$session->setting->get("defaultPage")
});
push(@fields, {
tab=>"content",
fieldType=>"asset",
name=>"notFoundPage",
label=>$i18n->get(141),
hoverHelp=>$i18n->get('141 description'),
defaultValue=>$session->setting->get("notFoundPage")
});
push(@fields, {
tab=>"content",
fieldType=>"text",
name=>"urlExtension",
defaultValue=>$session->setting->get("urlExtension"),
label=>$i18n->get("url extension"),
hoverHelp=>$i18n->get("url extension description"),
});
push(@fields, {
tab=>"content",
fieldType=>"integer",
name=>"maxAttachmentSize",
label=>$i18n->get(130),
hoverHelp=>$i18n->get('130 description'),
defaultValue=>$session->setting->get("maxAttachmentSize")
});
push(@fields, {
tab=>"content",
fieldType=>"integer",
name=>"maxImageSize",
label=>$i18n->get(583),
hoverHelp=>$i18n->get('583 description'),
defaultValue=>$session->setting->get("maxImageSize")
});
push(@fields, {
tab=>"content",
fieldType=>"integer",
name=>"thumbnailSize",
label=>$i18n->get(406),
hoverHelp=>$i18n->get('406 description'),
defaultValue=>$session->setting->get("thumbnailSize")
});
push(@fields, {
tab=>"content",
fieldType=>"yesNo",
name=>"metaDataEnabled",
label=>$i18n->get("Enable Metadata"),
hoverHelp=>$i18n->get("Enable Metadata description"),
defaultValue=>$session->setting->get("metaDataEnabled")
});
# user interface settings
push(@fields, {
tab=>"ui",
fieldType=>"selectBox",
name=>"richEditor",
label=>$i18n->get("default rich editor"),
hoverHelp=>$i18n->get("default rich editor description"),
defaultValue=>[$session->setting->get("richEditor")],
options=>WebGUI::Asset::RichEdit->getList($session),
defaultValue=>["PBrichedit000000000001"]
});
push(@fields, {
tab=>"ui",
fieldType=>"integer",
name=>"textBoxSize",
label=>$i18n->get(465),
hoverHelp=>$i18n->get('465 description'),
defaultValue=>$session->setting->get("textBoxSize")
});
push(@fields, {
tab=>"ui",
fieldType=>"template",
name=>"userFunctionStyleId",
label=>$i18n->get('user function style'),
hoverHelp=>$i18n->get('user function style description'),
namespace=>"style",
defaultValue=>$session->setting->get("userFunctionStyleId")
});
push(@fields, {
tab=>"ui",
fieldType=>"template",
name=>"AdminConsoleTemplate",
label=>$i18n->get('admin console template'),
hoverHelp=>$i18n->get('admin console template description'),
namespace=>"AdminConsole",
defaultValue=>$session->setting->get("AdminConsoleTemplate")
});
# messaging settings
push(@fields, {
tab=>"messaging",
fieldType=>"text",
name=>"smtpServer",
label=>$i18n->get(135),
hoverHelp=>$i18n->get('135 description'),
defaultValue=>$session->setting->get("smtpServer")
});
push(@fields, {
tab=>"messaging",
fieldType=>"textarea",
name=>"mailFooter",
label=>$i18n->get(824),
hoverHelp=>$i18n->get('824 description'),
defaultValue=>$session->setting->get("mailFooter")
});
push(@fields, {
tab=>"messaging",
fieldType=>"email",
name=>"mailReturnPath",
label=>$i18n->get("mail return path"),
hoverHelp=>$i18n->get('mail return path help'),
defaultValue=>$session->setting->get("mailReturnPath")
});
# misc
push(@fields, {
tab=>"misc",
fieldType=>"yesNo",
name=>"preventProxyCache",
label=>$i18n->get(400),
hoverHelp=>$i18n->get('400 description'),
defaultValue=>$session->setting->get("preventProxyCache")
});
push(@fields, {
tab=>"misc",
fieldType=>"text",
name=>"debugIp",
label=>$i18n->get("debug ip"),
hoverHelp=>$i18n->get("debug ip description"),
defaultValue=>$session->setting->get("debugIp")
});
push(@fields, {
tab=>"misc",
fieldType=>"yesNo",
name=>"showDebug",
label=>$i18n->get(707),
hoverHelp=>$i18n->get('707 description'),
defaultValue=>$session->setting->get("showDebug")
});
push(@fields, {
tab=>"misc",
fieldType=>"yesNo",
name=>"showPerformanceIndicators",
label=>$i18n->get('show performance indicators'),
hoverHelp=>$i18n->get('show performance indicators description'),
defaultValue=>$session->setting->get("showPerformanceIndicators")
});
push(@fields, {
tab=>"misc",
fieldType=>"selectBox",
name=>"hostToUse",
defaultValue=>[$session->setting->get("hostToUse")],
options=>{
sitename=>$i18n->get(1070),
HTTP_HOST=>$i18n->get(1071)
},
label=>$i18n->get(1069),
hoverHelp=>$i18n->get('1069 description'),
});
# user settings
push(@fields, {
tab=>"user",
fieldType=>"yesNo",
name=>"anonymousRegistration",
label=>$i18n->get(118),
hoverHelp=>$i18n->get('118 description'),
defaultValue=>$session->setting->get("anonymousRegistration")
});
push(@fields, {
tab=>"user",
fieldType=>"workflow",
none=>1,
type=>"WebGUI::User",
name=>"runOnRegistration",
label=>$i18n->get(559),
hoverHelp=>$i18n->get('559 description'),
defaultValue=>$session->setting->get("runOnRegistration")
});
push(@fields, {
tab=>"user",
fieldType=>"yesNo",
name=>"useKarma",
label=>$i18n->get(539),
hoverHelp=>$i18n->get('539 description'),
defaultValue=>$session->setting->get("useKarma")
});
push(@fields, {
tab=>"user",
fieldType=>"integer",
name=>"karmaPerLogin",
label=>$i18n->get(540),
hoverHelp=>$i18n->get('540 description'),
defaultValue=>$session->setting->get("karmaPerLogin")
});
push(@fields, {
tab=>"user",
fieldType=>"interval",
name=>"sessionTimeout",
label=>$i18n->get(142),
hoverHelp=>$i18n->get('142 description'),
defaultValue=>$session->setting->get("sessionTimeout")
});
push(@fields, {
tab=>"user",
fieldType=>"yesNo",
name=>"selfDeactivation",
label=>$i18n->get(885),
hoverHelp=>$i18n->get('885 description'),
defaultValue=>$session->setting->get("selfDeactivation")
});
push(@fields, {
tab=>"user",
fieldType=>"yesNo",
name=>"encryptLogin",
label=>$i18n->get(1006),
hoverHelp=>$i18n->get('1006 description'),
defaultValue=>$session->setting->get("encryptLogin")
});
push(@fields, {
tab=>"user",
fieldType=>"yesNo",
name=>"passiveProfilingEnabled",
label=>$i18n->get("Enable passive profiling"),
hoverHelp=>$i18n->get("Enable passive profiling description"),
defaultValue=>$session->setting->get("passiveProfilingEnabled"),
extras=>'onchange="alert(\''.$i18n->get("Illegal Warning").'\')" '
});
# auth settings
my $options;
foreach (@{$session->config->get("authMethods")}) {
$options->{$_} = $_;
}
push(@fields, {
tab=>"auth",
fieldType=>"selectBox",
name=>"authMethod",
options=>$options,
label=>$i18n->get(164),
hoverHelp=>$i18n->get('164 description'),
defaultValue=>[$session->setting->get("authMethod")],
});
return \@fields;
}
#-------------------------------------------------------------------
=head2 www_editSettings ( $session )
Display a form for sitewide settings, if the user is in group Admin (3).
=cut
#-------------------------------------------------------------------
sub www_editSettings {
my $session = shift;
return $session->privilege->adminOnly() unless ($session->user->isInGroup(3));
@ -51,229 +360,10 @@ sub www_editSettings {
$tabform->hidden({
name=>"op",
value=>"saveSettings"});
# company settings
$tabform->getTab("company")->text(
-name=>"companyName",
-label=>$i18n->get(125),
-hoverHelp=>$i18n->get('125 description'),
-value=>$session->setting->get("companyName")
);
$tabform->getTab("company")->text(
-name=>"companyEmail",
-label=>$i18n->get(126),
-hoverHelp=>$i18n->get('126 description'),
-value=>$session->setting->get("companyEmail")
);
$tabform->getTab("company")->url(
-name=>"companyURL",
-label=>$i18n->get(127),
-hoverHelp=>$i18n->get('127 description'),
-value=>$session->setting->get("companyURL")
);
# content settings
$tabform->getTab("content")->workflow(
name=>"defaultVersionTagWorkflow",
value=>$session->setting->get("defaultVersionTagWorkflow"),
type=>"WebGUI::VersionTag",
label=>$i18n->get("default version tag workflow"),
hoverHelp=>$i18n->get('default version tag workflow help')
);
my %htmlFilter = (
'none'=>$i18n->get(420),
'most'=>$i18n->get(421),
'javascript'=>$i18n->get(526),
'all'=>$i18n->get(419)
);
$tabform->getTab("content")->asset(
-name=>"defaultPage",
-label=>$i18n->get(527),
-hoverHelp=>$i18n->get('527 description'),
-value=>$session->setting->get("defaultPage")
);
$tabform->getTab("content")->asset(
-name=>"notFoundPage",
-label=>$i18n->get(141),
-hoverHelp=>$i18n->get('141 description'),
-value=>$session->setting->get("notFoundPage")
);
$tabform->getTab("content")->text(
-name=>"urlExtension",
-value=>$session->setting->get("urlExtension"),
-label=>$i18n->get("url extension"),
-hoverHelp=>$i18n->get("url extension description"),
);
$tabform->getTab("content")->integer(
-name=>"maxAttachmentSize",
-label=>$i18n->get(130),
-hoverHelp=>$i18n->get('130 description'),
-value=>$session->setting->get("maxAttachmentSize")
);
$tabform->getTab("content")->integer(
-name=>"maxImageSize",
-label=>$i18n->get(583),
-hoverHelp=>$i18n->get('583 description'),
-value=>$session->setting->get("maxImageSize")
);
$tabform->getTab("content")->integer(
-name=>"thumbnailSize",
-label=>$i18n->get(406),
-hoverHelp=>$i18n->get('406 description'),
-value=>$session->setting->get("thumbnailSize")
);
$tabform->getTab("content")->yesNo(
-name=>"metaDataEnabled",
-label=>$i18n->get("Enable Metadata"),
-hoverHelp=>$i18n->get("Enable Metadata description"),
-value=>$session->setting->get("metaDataEnabled")
);
# user interface settings
$tabform->getTab("ui")->selectBox(
-name=>"richEditor",
-label=>$i18n->get("default rich editor"),
-hoverHelp=>$i18n->get("default rich editor description"),
-value=>[$session->setting->get("richEditor")],
-options=>WebGUI::Asset::RichEdit->getList($session),
-defaultValue=>["PBrichedit000000000001"]
);
$tabform->getTab("ui")->integer(
-name=>"textBoxSize",
-label=>$i18n->get(465),
-hoverHelp=>$i18n->get('465 description'),
-value=>$session->setting->get("textBoxSize")
);
$tabform->getTab("ui")->template(
-name=>"userFunctionStyleId",
-label=>$i18n->get('user function style'),
-hoverHelp=>$i18n->get('user function style description'),
-namespace=>"style",
-value=>$session->setting->get("userFunctionStyleId")
);
$tabform->getTab("ui")->template(
-name=>"AdminConsoleTemplate",
-label=>$i18n->get('admin console template'),
-hoverHelp=>$i18n->get('admin console template description'),
-namespace=>"AdminConsole",
-value=>$session->setting->get("AdminConsoleTemplate")
);
# messaging settings
$tabform->getTab("messaging")->text(
-name=>"smtpServer",
-label=>$i18n->get(135),
-hoverHelp=>$i18n->get('135 description'),
-value=>$session->setting->get("smtpServer")
);
$tabform->getTab("messaging")->textarea(
-name=>"mailFooter",
-label=>$i18n->get(824),
-hoverHelp=>$i18n->get('824 description'),
-value=>$session->setting->get("mailFooter")
);
$tabform->getTab("messaging")->email(
-name=>"mailReturnPath",
-label=>$i18n->get("mail return path"),
-hoverHelp=>$i18n->get('mail return path help'),
-value=>$session->setting->get("mailReturnPath")
);
# misc
$tabform->getTab("misc")->yesNo(
-name=>"preventProxyCache",
-label=>$i18n->get(400),
-hoverHelp=>$i18n->get('400 description'),
-value=>$session->setting->get("preventProxyCache")
);
$tabform->getTab("misc")->text(
-name=>"debugIp",
-label=>$i18n->get("debug ip"),
-hoverHelp=>$i18n->get("debug ip description"),
-value=>$session->setting->get("debugIp")
);
$tabform->getTab("misc")->yesNo(
-name=>"showDebug",
-label=>$i18n->get(707),
-hoverHelp=>$i18n->get('707 description'),
-value=>$session->setting->get("showDebug")
);
$tabform->getTab("misc")->yesNo(
-name=>"showPerformanceIndicators",
-label=>$i18n->get('show performance indicators'),
-hoverHelp=>$i18n->get('show performance indicators description'),
-value=>$session->setting->get("showPerformanceIndicators")
);
$tabform->getTab("misc")->selectBox(
-name=>"hostToUse",
-value=>[$session->setting->get("hostToUse")],
-options=>{
sitename=>$i18n->get(1070),
HTTP_HOST=>$i18n->get(1071)
},
-label=>$i18n->get(1069),
-hoverHelp=>$i18n->get('1069 description'),
);
# user settings
$tabform->getTab("user")->yesNo(
-name=>"anonymousRegistration",
-label=>$i18n->get(118),
-hoverHelp=>$i18n->get('118 description'),
-value=>$session->setting->get("anonymousRegistration")
);
$tabform->getTab("user")->workflow(
-none=>1,
-type=>"WebGUI::User",
-name=>"runOnRegistration",
-label=>$i18n->get(559),
-hoverHelp=>$i18n->get('559 description'),
-value=>$session->setting->get("runOnRegistration")
);
$tabform->getTab("user")->yesNo(
-name=>"useKarma",
-label=>$i18n->get(539),
-hoverHelp=>$i18n->get('539 description'),
-value=>$session->setting->get("useKarma")
);
$tabform->getTab("user")->integer(
-name=>"karmaPerLogin",
-label=>$i18n->get(540),
-hoverHelp=>$i18n->get('540 description'),
-value=>$session->setting->get("karmaPerLogin")
);
$tabform->getTab("user")->interval(
-name=>"sessionTimeout",
-label=>$i18n->get(142),
-hoverHelp=>$i18n->get('142 description'),
-value=>$session->setting->get("sessionTimeout")
);
$tabform->getTab("user")->yesNo(
-name=>"selfDeactivation",
-label=>$i18n->get(885),
-hoverHelp=>$i18n->get('885 description'),
-value=>$session->setting->get("selfDeactivation")
);
$tabform->getTab("user")->yesNo(
-name=>"encryptLogin",
-label=>$i18n->get(1006),
-hoverHelp=>$i18n->get('1006 description'),
-value=>$session->setting->get("encryptLogin")
);
$tabform->getTab("user")->yesNo(
-name=>"passiveProfilingEnabled",
-label=>$i18n->get("Enable passive profiling"),
-hoverHelp=>$i18n->get("Enable passive profiling description"),
-value=>$session->setting->get("passiveProfilingEnabled"),
-extras=>'onchange="alert(\''.$i18n->get("Illegal Warning").'\')" '
);
# auth settings
my $options;
foreach (@{$session->config->get("authMethods")}) {
$options->{$_} = $_;
}
$tabform->getTab("auth")->selectBox(
-name=>"authMethod",
-options=>$options,
-label=>$i18n->get(164),
-hoverHelp=>$i18n->get('164 description'),
-value=>[$session->setting->get("authMethod")],
-extras=>"onchange=\"active=operateHidden(this.options[this.selectedIndex].value,active)\""
);
my $definitions = definition($session, $i18n);
foreach my $definition (@{$definitions}) {
$tabform->getTab($definition->{tab})->dynamicField(%{$definition});
}
foreach (@{$session->config->get("authMethods")}) {
$tabform->getTab("auth")->fieldSetStart($_);
my $authInstance = WebGUI::Operation::Auth::getInstance($session,$_,1);
@ -297,18 +387,16 @@ is in group Admin (3). Returns the user to the Edit Settings screen, www_editSe
sub www_saveSettings {
my $session = shift;
return $session->privilege->adminOnly() unless ($session->user->isInGroup(3));
my ($key, $value);
foreach $key (%{$session->form->paramsHashRef}) {
$value = $session->form->process("$key");
if ($key =~ m/(.*)_interval/) {
$value = $session->form->interval($1);
$key = $1;
} elsif ($key =~ m/_units/) {
next;
}
unless ($key eq "op") {
$session->setting->set($key,$value);
}
my $i18n = WebGUI::International->new($session, "WebGUI");
my $definitions = definition($session, $i18n);
my $setting = $session->setting;
my $form = $session->form;
foreach my $definition (@{$definitions}) {
$setting->set($definition->{name}, $form->process($definition->{name}, $definition->{fieldType}, undef, $definition));
}
foreach (@{$session->config->get("authMethods")}) {
my $authInstance = WebGUI::Operation::Auth::getInstance($session,$_,1);
$authInstance->editUserSettingsFormSave;
}
return www_editSettings($session);
}