--- 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(''); } $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(''); } @@ -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 .= '
'.$section.'
'; - } - 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(''); } 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(''); $r->print(&Apache::loncommon::end_data_table_row());
'.&mt('Teams').'
'); @@ -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(''.&actionbox('old',$guestnum,'guest').''. &dateboxes($guestnum,$start{$guest},$end{$guest}).''.&actionbox($status,$num,$scope).''.&mt("Format for users' username:domain information:").'
sparty:msu,illini:uiuc ... etc.
'.&dateboxes($num,$start,$end).'