--- loncom/interface/portfolio.pm 2006/06/22 13:27:13 1.108
+++ loncom/interface/portfolio.pm 2006/06/22 15:33:35 1.109
@@ -539,8 +539,9 @@ sub update_access {
}
my $current_permissions = &Apache::lonnet::get_portfile_permissions($udom,
$uname);
- my %access_controls = &Apache::lonnet::get_access_controls(
- $current_permissions,$group,$file_name);
+ my %access_controls =
+ &Apache::lonnet::get_access_controls($current_permissions,
+ $group,$file_name);
if ($totalprocessed) {
if ($outcome eq 'ok') {
my $updated_controls = $access_controls{$file_name};
@@ -573,8 +574,7 @@ sub update_access {
if ($chg eq 'activate') {
$newkey =~ s/^(\d+)/$$translation{$1}/;
}
- my %content = &Apache::lonnet::parse_access_controls(
- $$updated_controls{$newkey});
+ my $content = $$updated_controls{$newkey};
if ($chg eq 'delete') {
$showstart = &mt('Deleted');
$showend = $showstart;
@@ -589,7 +589,7 @@ sub update_access {
$r->print('
'.&mt($scope));
if (($scope eq 'course') || ($scope eq 'group')) {
if ($chg ne 'delete') {
- my $cid = $content{'domain'}.'_'.$content{'number'};
+ my $cid = $content->{'domain'}.'_'.$content->{'number'};
my %course_description = &Apache::lonnet::coursedescription($cid);
$r->print(' ('.$course_description{'description'}.')');
}
@@ -598,7 +598,7 @@ sub update_access {
' '.&mt('End: ').$showend.' | ');
if ($chg ne 'delete') {
if ($scope eq 'guest') {
- $r->print(&mt('Password').': '.$content{'password'});
+ $r->print(&mt('Password').': '.$content->{'password'});
} elsif ($scope eq 'course' || $scope eq 'group') {
$r->print('');
@@ -611,7 +611,7 @@ sub update_access {
$r->print(''.&mt('Teams').' | ');
}
$r->print(' ');
- foreach my $id (sort(keys(%{$content{'roles'}}))) {
+ foreach my $id (sort(keys(%{$content->{'roles'}}))) {
$r->print('');
foreach my $item ('role','access','section','group') {
$r->print('');
@@ -619,7 +619,7 @@ sub update_access {
my $ucscope = $scope;
$ucscope =~ s/^(\w)/uc($1)/;
my $role_output;
- foreach my $role (@{$content{'roles'}{$id}{$item}}) {
+ foreach my $role (@{$content->{'roles'}{$id}{$item}}) {
if ($role eq 'all') {
$role_output .= $role.',';
} elsif ($role =~ /^cr/) {
@@ -631,7 +631,7 @@ sub update_access {
$role_output =~ s/,$//;
$r->print($role_output);
} else {
- $r->print(join(',',@{$content{'roles'}{$id}{$item}}));
+ $r->print(join(',',@{$content->{'roles'}{$id}{$item}}));
}
$r->print(' | ');
}
@@ -639,9 +639,9 @@ sub update_access {
$r->print(&Apache::loncommon::end_data_table_row());
$r->print(&Apache::loncommon::end_data_table());
} elsif ($scope eq 'domains') {
- $r->print(&mt('Domains: ').join(',',@{$content{'dom'}}));
+ $r->print(&mt('Domains: ').join(',',@{$content->{'dom'}}));
} elsif ($scope eq 'users') {
- my $curr_user_list = &sort_users($content{'users'});
+ my $curr_user_list = &sort_users($content->{'users'});
$r->print(&mt('Users: ').$curr_user_list);
} else {
$r->print(' ');
@@ -701,95 +701,73 @@ sub update_access {
sub build_access_record {
my ($num,$scope,$start,$end,$chg) = @_;
- my $record = ''.$start.''.
- $end.'';
- if ($scope eq 'guest') {
- $record .= ''.$env{'form.password'}.'';
+ my $record = {
+ type => $scope,
+ time => {
+ start => $start,
+ end => $end
+ },
+ };
+
+ if ($scope eq 'guest') {
+ $record->{'password'} = $env{'form.password'};
} elsif (($scope eq 'course') || ($scope eq 'group')) {
- $record .= ''.$env{'form.crsdom_'.$num}.''.
- $env{'form.crsnum_'.$num}.'';
+ $record->{'domain'} = $env{'form.crsdom_'.$num};
+ $record->{'number'} = $env{'form.crsnum_'.$num};
my @role_ids;
- my @delete_role_ids;
- if (exists($env{'form.delete_role_'.$num})) {
- @delete_role_ids = &Apache::loncommon::get_env_multiple('form.delete_role_'.$num);
- }
- if (exists($env{'form.preserve_role_'.$num})) {
- my @preserves = &Apache::loncommon::get_env_multiple('form.preserve_role_'.$num);
- if (@delete_role_ids > 0) {
- foreach my $id (@preserves) {
- if (grep/^\Q$id\E$/,@delete_role_ids) {
- next;
- }
- push(@role_ids,$id);
- }
- } else {
- push(@role_ids,@preserves);
- }
- }
- my $next_id = '';
- if (exists($env{'form.add_role_'.$num})) {
- $next_id = $env{'form.add_role_'.$num};
- if ($next_id) {
- push(@role_ids,$next_id);
- }
- }
+ my @delete_role_ids =
+ &Apache::loncommon::get_env_multiple('form.delete_role_'.$num);
+ my @preserves =
+ &Apache::loncommon::get_env_multiple('form.preserve_role_'.$num);
+ if (@delete_role_ids) {
+ foreach my $id (@preserves) {
+ if (grep {$_ = $id} (@delete_role_ids)) {
+ next;
+ }
+ push(@role_ids,$id);
+ }
+ } else {
+ push(@role_ids,@preserves);
+ }
+
+ my $next_id = $env{'form.add_role_'.$num};
+ if ($next_id) {
+ push(@role_ids,$next_id);
+ }
+
foreach my $id (@role_ids) {
my (@roles,@accesses,@sections,@groups);
if (($id == $next_id) && ($chg eq 'update')) {
- @roles = split(/,/,$env{'form.role_'.$num.'_'.$next_id});
+ @roles = split(/,/,$env{'form.role_'.$num.'_'.$next_id});
@accesses = split(/,/,$env{'form.access_'.$num.'_'.$next_id});
@sections = split(/,/,$env{'form.section_'.$num.'_'.$next_id});
- @groups = split(/,/,$env{'form.group_'.$num.'_'.$next_id});
+ @groups = split(/,/,$env{'form.group_'.$num.'_'.$next_id});
} else {
@roles = &Apache::loncommon::get_env_multiple('form.role_'.$num.'_'.$id);
@accesses = &Apache::loncommon::get_env_multiple('form.access_'.$num.'_'.$id);
@sections = &Apache::loncommon::get_env_multiple('form.section_'.$num.'_'.$id);
@groups = &Apache::loncommon::get_env_multiple('form.group_'.$num.'_'.$id);
}
- $record .= '';
- foreach my $role (@roles) {
- $record .= ''.$role.'';
- }
- foreach my $access (@accesses) {
- $record .= ''.$access.'';
- }
- foreach my $section (@sections) {
- $record .= '';
- }
- foreach my $group (@groups) {
- $record .= ''.$group.'';
- }
- $record .= '';
+ $record->{'roles'}{$id}{'role'} = \@roles;
+ $record->{'roles'}{$id}{'access'} = \@accesses;
+ $record->{'roles'}{$id}{'section'} = \@sections;
+ $record->{'roles'}{$id}{'group'} = \@groups;
}
} elsif ($scope eq 'domains') {
my @doms = &Apache::loncommon::get_env_multiple('form.dom_'.$num);
- foreach my $dom (@doms) {
- if ($dom ne '') {
- $record .= ''.$dom.'';
- }
- }
+ $record->{'dom'} = \@doms;
} elsif ($scope eq 'users') {
my $userlist = $env{'form.users_'.$num};
- $userlist =~ s/[\r\n\f]+//g;
- $userlist =~ s/\s+//g;
- my @users = split/,/,$userlist;
- my %userhash;
- my @unique_users;
- foreach my $user (@users) {
- if (!exists($userhash{$user})) {
- $userhash{$user} = 1;
- push(@unique_users,$user);
- }
- }
- $record .= '';
- foreach my $user (@unique_users) {
+ $userlist =~ s/\s+//sg;
+ my %userhash = map { ($_,1) } (split(/,/,$userlist));
+ foreach my $user (keys(%userhash)) {
my ($uname,$udom) = split(/:/,$user);
- $record .= ''.$uname.''.$udom.
- '';
- }
- $record .= '';
+ push(@{$record->{'users'}}, {
+ 'uname' => $uname,
+ 'udom' => $udom
+ });
+ }
}
- $record .= '';
return $record;
}
@@ -806,12 +784,11 @@ sub get_dates_from_form {
}
sub sort_users {
- my ($users_hash) = @_;
- my @curr_users;
- foreach my $user (keys(%{$users_hash})) {
- $curr_users[$$users_hash{$user}] = $user;
- }
- my $curr_user_list = join(",\n",@curr_users);
+ my ($users) = @_;
+ my @curr_users = map {
+ $_->{'uname'}.':'.$_->{'udom'}
+ } (@{$users});
+ my $curr_user_list = join(",\n",sort(@curr_users));
return $curr_user_list;
}
@@ -876,9 +853,7 @@ sub access_setting_table {
$r->print(&Apache::loncommon::start_data_table_row());
my $passwd;
if ($guest) {
- my %content = &Apache::lonnet::parse_access_controls(
- $$access_controls{$guest});
- $passwd = $content{'password'};
+ $passwd = $$access_controls{$guest}{'password'};
$r->print(''.&actionbox('old',$guestnum,'guest').' | '.
&dateboxes($guestnum,$start{$guest},$end{$guest}).' | ');
} else {
@@ -994,9 +969,7 @@ sub course_row {
my %content;
my $defdom = $env{'user.domain'};
if ($status eq 'old') {
- %content = &Apache::lonnet::parse_access_controls(
- $$access_controls{$item});
- $defdom = $content{'domain'};
+ $defdom = $$access_controls{$item}{'domain'};
}
$r->print(&Apache::loncommon::coursebrowser_javascript($defdom));
$r->print(qq|
@@ -1091,11 +1064,10 @@ sub domains_row {
' ';
$r->print(&Apache::loncommon::start_data_table_row());
if ($status eq 'old') {
- my %content = &Apache::lonnet::parse_access_controls(
- $$access_controls{$item});
- my @curr_doms = @{$content{'dom'}};
- foreach my $dom (@{$all_doms}) {
- if ((@{$content{'dom'}} > 0) && (grep(/^\Q$dom\E$/,@{$content{'dom'}}))) {
+ my $content = $$access_controls{$item};
+ foreach my $dom (@{$all_doms}) {
+ if ((@{$content->{'dom'}} > 0)
+ && (grep(/^\Q$dom\E$/,@{$content->{'dom'}}))) {
$dom_select .= '';
} else {
@@ -1120,9 +1092,8 @@ sub users_row {
'users');
my $curr_user_list;
if ($status eq 'old') {
- my %content = &Apache::lonnet::parse_access_controls(
- $$access_controls{$item});
- $curr_user_list = &sort_users($content{'users'});
+ my $content = $$access_controls{$item};
+ $curr_user_list = &sort_users($content->{'users'});
}
$r->print(''.&actionbox($status,$num,$scope).' | '.&mt("Format for users' username:domain information:").' sparty:msu,illini:uiuc ... etc.
| '.&dateboxes($num,$start,$end).' | ');
$r->print(&Apache::loncommon::end_data_table_row());
|