shortcut now takes ?visitor=1 to edit visitor prefs from dashboard

This commit is contained in:
Doug Bell 2011-05-05 15:51:25 -05:00
parent 848570712e
commit 475a885146
2 changed files with 21 additions and 9 deletions

View file

@ -216,7 +216,6 @@ sub canManage {
}
#-------------------------------------------------------------------
=head2 discernUserId
This utility method is used to determine if the user should be shown the view of the
@ -225,8 +224,8 @@ Shortcut that the Visitor would see, or their own.
=cut
sub discernUserId {
my $self = shift;
return ($self->canManage && $self->session->isAdminOn) ? '1' : $self->session->user->userId;
my $self = shift;
return ($self->canManage && $self->session->form->get('visitor')) ? '1' : $self->session->user->userId;
}
#-------------------------------------------------------------------
@ -481,7 +480,7 @@ admin mode is on.
sub _overridesCacheTag {
my $self = shift;
#cache by userId, assetId of this shortcut, and whether adminMode is on or not.
return join "", "shortcutOverrides", $self->getId, $self->session->user->userId, $self->session->isAdminOn;
return join "", "shortcutOverrides", $self->getId, $self->session->user->userId;
}
#-------------------------------------------------------------------
@ -995,13 +994,18 @@ sub www_getUserPrefsForm {
action => $self->getUrl,
extras => 'onsubmit="submitForm(this,\''.$self->getId.'\',\''.$self->getUrl.'\');return false;"',
);
my $allowedToSave = ( ! $session->isAdminOn && $self->getParent->canPersonalize )
|| ( $session->isAdminOn && $session->user->isInGroup($session->setting->get('groupIdAdminUser')) );
# Admins are allowed to edit visitor's preferences
my $editingVisitor = $session->form->get('visitor') eq 1;
my $allowedToSave = ( ! $editingVisitor && $self->getParent->canPersonalize )
|| ( $editingVisitor && $session->user->isInGroup($session->setting->get('groupIdAdminUser')) );
if ($allowedToSave) {
$f->addField( "hidden",
name => 'func',
value => 'saveUserPrefs'
);
if ( $editingVisitor ) {
$f->addField( "hidden", name => 'visitor', value => 1 );
}
}
my $u = WebGUI::User->new($session, $self->discernUserId);
FIELD: foreach my $fieldId (@fielden) {
@ -1093,13 +1097,14 @@ the form would allow someone who is not a User Admin to alter Visitor's profile.
sub www_saveUserPrefs {
my $self = shift;
my $session = $self->session;
my $editingVisitor = $session->form->get('visitor') eq 1;
return '' unless $self->getParent->canPersonalize
|| ( $session->isAdminOn && $session->user->isInGroup($session->setting->get('groupIdAdminUser')) );
|| ( $editingVisitor && $session->user->isInGroup($session->setting->get('groupIdAdminUser')) );
my @fellowFields = $self->getPrefFieldsToShow;
my %data = ();
$self->uncacheOverrides;
my $i18n = WebGUI::International->new($session);
my $u = WebGUI::User->new($session, $self->discernUserId);
my $u = $editingVisitor ? WebGUI::User->new( $session, '1' ) : $session->user;
foreach my $fieldId ($session->form->param) {
my $field = WebGUI::ProfileField->new($session,$fieldId);
next unless $field;

View file

@ -52,6 +52,14 @@ $mech->submit_form_ok( {
} );
is( $mech->session->user->get('alias'), "myself", "alias gets set" );
# Admin is allowed to edit visitor's prefs
$mech->get_ok( $shortcut->getUrl( 'func=getUserPrefsForm;visitor=1' ) );
$mech->submit_form_ok( {
fields => { alias => "visitor" },
} );
isnt( $mech->session->user->get('alias'), "visitor", "admin alias doesn't get set" );
is( WebGUI::User->new( $mech->session, '1' )->get('alias'), 'visitor', 'visitors alias set' );
#----------------------------------------------------------------------------
# editOverrides
@ -62,7 +70,6 @@ $mech->session->user({ userId => 3 });
# Make sure edit form has a link to edit the override
$mech->get_ok( $shortcut->getUrl( 'func=edit' ) );
diag( $mech->content );
$mech->follow_link_ok(
{ url_regex => qr/func=editOverride;fieldName=title/ },
"Follow the link to edit the override",