- 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

@ -18,6 +18,7 @@
- fix: No Help link icon in Matrix edit page
- fix: Problems with In/Out Board (labeling only)
- fix: Adding HTTP Proxy
- fix: op=saveSettings broken
- fix: EMS Discount Pass Not Applied
- fix: Commerce checkout confirmation very confusing

View file

@ -7,6 +7,17 @@ upgrading from one version to the next, or even between multiple
versions. Be sure to heed the warnings contained herein as they will
save you many hours of grief.
6.99.4
--------------------------------------------------------------------
* A bug was just discovered in the WebGUI::Auth API in that it was
missing the editUserSettingsFormSave() method. If you have
built your own auth module, then you need to add this method
or your auth settings will not save. See WebGUI::Auth::WebGUI
for an example of how to do this. If you are not using custom
auth, then don't worry about this.
6.99.0
--------------------------------------------------------------------

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);
}