From 33cb972f2d7b71d6d1abb405f349a1ee71b6825c Mon Sep 17 00:00:00 2001 From: JT Smith Date: Wed, 3 Nov 2004 20:35:15 +0000 Subject: [PATCH] more admin console stuff --- lib/WebGUI/Operation.pm | 2 - lib/WebGUI/Operation/User.pm | 221 ++++++++++++++---------------- lib/WebGUI/i18n/English/WebGUI.pm | 21 +-- 3 files changed, 113 insertions(+), 131 deletions(-) diff --git a/lib/WebGUI/Operation.pm b/lib/WebGUI/Operation.pm index 12c7e6c6c..e8bf5dd97 100644 --- a/lib/WebGUI/Operation.pm +++ b/lib/WebGUI/Operation.pm @@ -231,8 +231,6 @@ sub getOperations { 'editUserKarma' => 'WebGUI::Operation::User', 'editUserKarmaSave' => 'WebGUI::Operation::User', 'editUserGroup' => 'WebGUI::Operation::User', - 'editUserProfile' => 'WebGUI::Operation::User', - 'editUserProfileSave' => 'WebGUI::Operation::User', 'addUserToGroupSave' => 'WebGUI::Operation::User', 'deleteGrouping' => 'WebGUI::Operation::User', 'editGrouping' => 'WebGUI::Operation::User', diff --git a/lib/WebGUI/Operation/User.pm b/lib/WebGUI/Operation/User.pm index 023faf76e..ca977f01d 100644 --- a/lib/WebGUI/Operation/User.pm +++ b/lib/WebGUI/Operation/User.pm @@ -27,6 +27,7 @@ use WebGUI::Privilege; use WebGUI::Session; use WebGUI::SQL; use WebGUI::Style; +use WebGUI::TabForm; use WebGUI::URL; use WebGUI::User; use WebGUI::Utility; @@ -49,8 +50,6 @@ sub _submenu { || $session{form}{op} eq "deleteUserConfirm") { $ac->addSubmenuItem(WebGUI::URL::page("op=editUser&uid=".$session{form}{uid}), WebGUI::International::get(457)); $ac->addSubmenuItem(WebGUI::URL::page("op=editUserGroup&uid=".$session{form}{uid}), WebGUI::International::get(458)); - $ac->addSubmenuItem(WebGUI::URL::page("op=editUserProfile&uid=".$session{form}{uid}), WebGUI::International::get(459)); - $ac->addSubmenuItem(WebGUI::URL::page('op=viewProfile&uid='.$session{form}{uid}), WebGUI::International::get(752)); $ac->addSubmenuItem(WebGUI::URL::page('op=becomeUser&uid='.$session{form}{uid}), WebGUI::International::get(751)); $ac->addSubmenuItem(WebGUI::URL::page('op=deleteUser&uid='.$session{form}{uid}), WebGUI::International::get(750)); if ($session{setting}{useKarma}) { @@ -330,72 +329,131 @@ sub www_editGroupingSave { #------------------------------------------------------------------- sub www_editUser { return WebGUI::Privilege::adminOnly() unless (WebGUI::Grouping::isInGroup(3)); - my ($output, $f, $u, $cmd, $html, %status); - $u = WebGUI::User->new($session{form}{uid}); + my $i18n = WebGUI::International->new("WebGUI"); + my %tabs; + tie %tabs, 'Tie::IxHash'; + %tabs = ( + "account"=> { label=>$i18n->get("account")}, + "profile"=> { label=>$i18n->get("profile")}, + ); + my $tabform = WebGUI::TabForm->new(\%tabs); + my $u = WebGUI::User->new($session{form}{uid}); WebGUI::Style::setScript($session{config}{extrasURL}."/swapLayers.js", {language=>"JavaScript"}); - $output .= ''; - $f = WebGUI::HTMLForm->new; - $f->hidden("op","editUserSave"); - $f->hidden("uid",$session{form}{uid}); - $f->raw('  '); - $f->readOnly($session{form}{uid},WebGUI::International::get(378)); - $f->readOnly($u->karma,WebGUI::International::get(537)) if ($session{setting}{useKarma}); - $f->readOnly(epochToHuman($u->dateCreated,"%z"),WebGUI::International::get(453)); - $f->readOnly(epochToHuman($u->lastUpdated,"%z"),WebGUI::International::get(454)); - $f->text("username",WebGUI::International::get(50),$u->username); + $tabform->getTab("account")->raw(''); + $tabform->hidden({name=>"op",value=>"editUserSave"}); + $tabform->hidden({name=>"uid",value=>$session{form}{uid}}); + $tabform->getTab("account")->raw('  '); + $tabform->getTab("account")->readOnly($session{form}{uid},$i18n->get(378)); + $tabform->getTab("account")->readOnly($u->karma,$i18n->get(537)) if ($session{setting}{useKarma}); + $tabform->getTab("account")->readOnly(epochToHuman($u->dateCreated,"%z"),$i18n->get(453)); + $tabform->getTab("account")->readOnly(epochToHuman($u->lastUpdated,"%z"),$i18n->get(454)); + $tabform->getTab("account")->text("username",$i18n->get(50),$u->username); + my %status; tie %status, 'Tie::IxHash'; %status = ( - Active =>WebGUI::International::get(817), - Deactivated =>WebGUI::International::get(818), - Selfdestructed =>WebGUI::International::get(819) + Active =>$i18n->get(817), + Deactivated =>$i18n->get(818), + Selfdestructed =>$i18n->get(819) ); if ($u->userId == $session{user}{userId}) { - $f->hidden("status",$u->status); + $tabform->getTab("account")->hidden("status",$u->status); } else { - $f->select("status",\%status,WebGUI::International::get(816),[$u->status]); + $tabform->getTab("account")->select("status",\%status,$i18n->get(816),[$u->status]); } - my $options; foreach (@{$session{config}{authMethods}}) { $options->{$_} = $_; } - $f->select( - -name=>"authMethod", - -options=>$options, - -label=>WebGUI::International::get(164), - -value=>[$u->authMethod], - -extras=>"onChange=\"active=operateHidden(this.options[this.selectedIndex].value,active)\"" - ); + $tabform->getTab("account")->select( + -name=>"authMethod", + -options=>$options, + -label=>$i18n->get(164), + -value=>[$u->authMethod], + -extras=>"onChange=\"active=operateHidden(this.options[this.selectedIndex].value,active)\"" + ); my $jscript = '"; - $f->submit; - $output .= $f->print; - $output .= $jscript; - return _submenu($output,'168',"user add/edit"); + $tabform->getTab("account")->raw($jscript); + my $a = WebGUI::SQL->read("select * from userProfileField,userProfileCategory + where userProfileField.profileCategoryId=userProfileCategory.profileCategoryId + order by userProfileCategory.sequenceNumber,userProfileField.sequenceNumber"); + my $previousCategory; + while(my %data = $a->hash) { + my $category = eval $data{categoryName}; + if ($category ne $previousCategory) { + $tabform->getTab("profile")->raw(''.$category.''); + } + my $values = eval $data{dataValues}; + my $method = $data{dataType}; + my $label = eval $data{fieldLabel}; + my $default; + if ($method eq "selectList" || $method eq "checkList" || $method eq "radioList") { + my $orderedValues = {}; + tie %{$orderedValues}, 'Tie::IxHash'; + foreach my $ov (sort keys %{$values}) { + $orderedValues->{$ov} = $values->{$ov}; + } + if ($session{form}{$data{fieldName}}) { + $default = [$session{form}{$data{fieldName}}]; + } elsif (defined $u->profileField($data{fieldName}) && (defined($values->{$u->profileField($data{fieldName})}))) { + $default = [$u->profileField($data{fieldName})]; + } else { + $default = eval $data{dataDefault}; + } + $tabform->getTab("profile")->$method( + -name=>$data{fieldName}, + -options=>$orderedValues, + -label=>$label, + -value=>$default + ); + } elsif ($method) { + if ($session{form}{$data{fieldName}}) { + $default = $session{form}{$data{fieldName}}; + } elsif (defined $u->profileField($data{fieldName})) { + $default = $u->profileField($data{fieldName}); + } else { + $default = eval $data{dataDefault}; + } + $tabform->getTab("profile")->$method( + -name=>$data{fieldName}, + -label=>$label, + -value=>$default + ); + } + $previousCategory = $category; + } + $a->finish; + return _submenu($tabform->print,'168',"user add/edit"); } #------------------------------------------------------------------- sub www_editUserSave { return WebGUI::Privilege::adminOnly() unless (WebGUI::Grouping::isInGroup(3)); - my ($error, $uid, $u); - ($uid) = WebGUI::SQL->quickArray("select userId from users where username=".quote($session{form}{username})); - + my ($uid) = WebGUI::SQL->quickArray("select userId from users where username=".quote($session{form}{username})); + my $error; if ($uid == $session{form}{uid} || $uid < 1) { - $u = WebGUI::User->new($session{form}{uid}); - $u->username($session{form}{username}); - $u->authMethod($session{form}{authMethod}); - $u->status($session{form}{status}); - foreach (@{$session{config}{authMethods}}) { - my $authInstance = WebGUI::Operation::Auth::getInstance($_,$u->userId); - $authInstance->editUserFormSave; - } + my $u = WebGUI::User->new($session{form}{uid}); + $u->username($session{form}{username}); + $u->authMethod($session{form}{authMethod}); + $u->status($session{form}{status}); + foreach (@{$session{config}{authMethods}}) { + my $authInstance = WebGUI::Operation::Auth::getInstance($_,$u->userId); + $authInstance->editUserFormSave; + } + my %field; + tie %field, 'Tie::CPHash'; + my $a = WebGUI::SQL->read("select fieldName,dataType from userProfileField"); + while (%field = $a->hash) { + $u->profileField($field{fieldName},WebGUI::FormProcessor::process($field{fieldName},$field{dataType})); + } + $a->finish; } else { - $error = ''; + $error = ''; } return $error.www_editUser(); } @@ -487,81 +545,6 @@ sub www_editUserKarmaSave { return www_editUser(); } -#------------------------------------------------------------------- -sub www_editUserProfile { - return WebGUI::Privilege::adminOnly() unless (WebGUI::Grouping::isInGroup(3)); - my ($output, $f, $a, %user, %data, $method, $values, $category, $label, $default, $previousCategory); - tie %data, 'Tie::CPHash'; - $f = WebGUI::HTMLForm->new; - $f->hidden("op","editUserProfileSave"); - $f->hidden("uid",$session{form}{uid}); - %user = WebGUI::SQL->buildHash("select fieldName,fieldData from userProfileData where userId=".quote($session{form}{uid})); - $a = WebGUI::SQL->read("select * from userProfileField,userProfileCategory - where userProfileField.profileCategoryId=userProfileCategory.profileCategoryId - order by userProfileCategory.sequenceNumber,userProfileField.sequenceNumber"); - while(%data = $a->hash) { - $category = eval $data{categoryName}; - if ($category ne $previousCategory) { - $f->raw(''.$category.''); - } - $values = eval $data{dataValues}; - $method = $data{dataType}; - $label = eval $data{fieldLabel}; - if ($method eq "selectList" || $method eq "checkList" || $method eq "radioList") { - my $orderedValues = {}; - tie %{$orderedValues}, 'Tie::IxHash'; - foreach my $ov (sort keys %{$values}) { - $orderedValues->{$ov} = $values->{$ov}; - } - if ($session{form}{$data{fieldName}}) { - $default = [$session{form}{$data{fieldName}}]; - } elsif (exists $user{$data{fieldName}} && (defined($values->{$user{$data{fieldName}}}))) { - $default = [$user{$data{fieldName}}]; - } else { - $default = eval $data{dataDefault}; - } - $f->$method( - -name=>$data{fieldName}, - -options=>$orderedValues, - -label=>$label, - -value=>$default - ); - } elsif ($method) { - if ($session{form}{$data{fieldName}}) { - $default = $session{form}{$data{fieldName}}; - } elsif (exists $user{$data{fieldName}}) { - $default = $user{$data{fieldName}}; - } else { - $default = eval $data{dataDefault}; - } - $f->$method( - -name=>$data{fieldName}, - -label=>$label, - -value=>$default - ); - } - $previousCategory = $category; - } - $a->finish; - $f->submit; - $output .= $f->print; - return _submenu($output,'455',"user profile edit"); -} - -#------------------------------------------------------------------- -sub www_editUserProfileSave { - return WebGUI::Privilege::adminOnly() unless (WebGUI::Grouping::isInGroup(3)); - my ($a, %field, $u); - tie %field, 'Tie::CPHash'; - $u = WebGUI::User->new($session{form}{uid}); - $a = WebGUI::SQL->read("select fieldName,dataType from userProfileField"); - while (%field = $a->hash) { - $u->profileField($field{fieldName},WebGUI::FormProcessor::process($field{fieldName},$field{dataType})); - } - $a->finish; - return www_editUserProfile(); -} - #------------------------------------------------------------------- sub www_listUsers { return WebGUI::Privilege::adminOnly() unless (WebGUI::Grouping::isInGroup(3)); diff --git a/lib/WebGUI/i18n/English/WebGUI.pm b/lib/WebGUI/i18n/English/WebGUI.pm index 4199fa96b..7de9fdd58 100644 --- a/lib/WebGUI/i18n/English/WebGUI.pm +++ b/lib/WebGUI/i18n/English/WebGUI.pm @@ -1328,11 +1328,6 @@ How should this user be notified when they get a new WebGUI message? lastUpdated => 1031514049 }, - '752' => { - message => q|View this user's profile.|, - lastUpdated => 1036864965 - }, - '1012' => { message => q|Lock this thread?|, lastUpdated => 1060433963 @@ -5756,11 +5751,6 @@ Start typing! Or better yet, copy the snippet from some other electronic documen lastUpdated => 1031514049 }, - '459' => { - message => q|Edit this user's profile.|, - lastUpdated => 1031514049 - }, - '86' => { message => q|Are you certain you wish to delete this group? Beware that deleting a group is permanent and will remove all privileges associated with this group.|, lastUpdated => 1031514049 @@ -7251,6 +7241,17 @@ Just as the LDAP Identity Name is a label, so is the LDAP Password Name. Use thi lastUpdated => 1098327046 }, + 'account' => { + message => q|Account|, + lastUpdated => 1098327046, + context => q|Tab label for the user's account in the user manager.| + }, + + 'profile' => { + message => q|Profile|, + lastUpdated => 1098327046, + context => q|Tab label for the user's profile in the user manager.| + }, };