version 1.487, 2006/12/05 02:55:51
|
version 1.491, 2006/12/11 21:16:32
|
Line 2850 sub findallcourses {
|
Line 2850 sub findallcourses {
|
$cnum = $cnumpart; |
$cnum = $cnumpart; |
($sec,$role) = split(/_/,$secpart); |
($sec,$role) = split(/_/,$secpart); |
$realsec = $sec; |
$realsec = $sec; |
} |
} |
$courses{$cdom.'_'.$cnum}{$sec} = $trole.'/'.$cdom.'/'.$cnum.'/'.$realsec; |
$courses{$cdom.'_'.$cnum}{$sec} = $trole.'/'.$cdom.'/'.$cnum.'/'.$realsec; |
} |
} |
} else { |
} else { |
Line 2885 sub findallcourses {
|
Line 2885 sub findallcourses {
|
|
|
sub blockcheck { |
sub blockcheck { |
my ($setters,$activity,$uname,$udom) = @_; |
my ($setters,$activity,$uname,$udom) = @_; |
# Retrieve active course roles - course coordinator, instructor, exam proctor, ta, student or custom role. |
|
|
if (!defined($udom)) { |
|
$udom = $env{'user.domain'}; |
|
} |
|
if (!defined($uname)) { |
|
$uname = $env{'user.name'}; |
|
} |
|
|
|
my ($startblock,$endblock); |
|
|
|
# If uname and udom are for a course, check for blocks in the course. |
|
|
|
if (&Apache::lonnet::is_course($udom,$uname)) { |
|
my %records = &Apache::lonnet::dump('comm_block',$udom,$uname); |
|
($startblock,$endblock)=&get_blocks($setters,$activity,$udom,$uname); |
|
return ($startblock,$endblock); |
|
} |
|
|
my %live_courses = &findallcourses(undef,$uname,$udom); |
my %live_courses = &findallcourses(undef,$uname,$udom); |
|
|
# Retrieve blocking times and identity of blocker for active courses |
# If uname is for a user, and activity is course-specific, i.e., |
# of specified user, unless user has 'evb' privilege. |
# boards, chat or groups, check for blocking in current course only. |
|
|
my $startblock = 0; |
if (($activity eq 'boards' || $activity eq 'chat' || |
my $endblock = 0; |
$activity eq 'groups') && ($env{'request.course.id'})) { |
|
foreach my $key (keys(%live_courses)) { |
|
if ($key ne $env{'request.course.id'}) { |
|
delete($live_courses{$key}); |
|
} |
|
} |
|
} |
|
|
|
my $otheruser = 0; |
|
my %own_courses; |
|
if ((($uname ne $env{'user.name'})) || ($udom ne $env{'user.domain'})) { |
|
# Resource belongs to user other than current user. |
|
$otheruser = 1; |
|
# Gather courses for current user |
|
%own_courses = |
|
&findallcourses(undef,$env{'user.name'},$env{'user.domain'}); |
|
} |
|
|
|
# Gather active course roles - course coordinator, instructor, |
|
# exam proctor, ta, student, or custom role. |
|
|
foreach my $course (keys(%live_courses)) { |
foreach my $course (keys(%live_courses)) { |
my ($cdom,$cnum); |
my ($cdom,$cnum); |
Line 2901 sub blockcheck {
|
Line 2936 sub blockcheck {
|
$cdom = $env{'course.'.$course.'.domain'}; |
$cdom = $env{'course.'.$course.'.domain'}; |
$cnum = $env{'course.'.$course.'.num'}; |
$cnum = $env{'course.'.$course.'.num'}; |
} else { |
} else { |
($cdom,$cnum) = split(/_/,$course); |
($cdom,$cnum) = split(/_/,$course); |
} |
} |
my $no_ownblock = 0; |
my $no_ownblock = 0; |
my $no_userblock = 0; |
my $no_userblock = 0; |
|
if ($otheruser) { |
|
# Check if current user has 'evb' priv for this |
|
if (defined($own_courses{$course})) { |
|
foreach my $sec (keys(%{$own_courses{$course}})) { |
|
my $checkrole = 'cm./'.$cdom.'/'.$cnum; |
|
if ($sec ne 'none') { |
|
$checkrole .= '/'.$sec; |
|
} |
|
if (&Apache::lonnet::allowed('evb',undef,undef,$checkrole)) { |
|
$no_ownblock = 1; |
|
last; |
|
} |
|
} |
|
} |
|
# if they have 'evb' priv and are currently not playing student |
|
next if (($no_ownblock) && |
|
($env{'request.role'} !~ m{^st\./$cdom/$cnum})); |
|
} |
foreach my $sec (keys(%{$live_courses{$course}})) { |
foreach my $sec (keys(%{$live_courses{$course}})) { |
my $checkrole = 'cm./'.$cdom.'/'.$cnum; |
my $checkrole = 'cm./'.$cdom.'/'.$cnum; |
if ($sec ne 'none') { |
if ($sec ne 'none') { |
$checkrole .= '/'.$sec; |
$checkrole .= '/'.$sec; |
} |
} |
if ((defined($uname) && ($uname ne $env{'user.name'})) || |
# Resource belongs to user other than current user. |
(defined($udom) && ($udom ne $env{'user.domain'}))) { |
# Assemble privs for that user, and check for 'evb' priv. |
|
if ($otheruser) { |
|
# Resource belongs to user other than current user. |
|
# Assemble privs for that user, and check for 'evb' priv. |
my ($trole,$tdom,$tnum,$tsec); |
my ($trole,$tdom,$tnum,$tsec); |
my $entry = $live_courses{$course}{$sec}; |
my $entry = $live_courses{$course}{$sec}; |
if ($entry =~ /^cr/) { |
if ($entry =~ /^cr/) { |
Line 2942 sub blockcheck {
|
Line 2998 sub blockcheck {
|
last; |
last; |
} |
} |
} |
} |
} else { |
} else { |
|
# Resource belongs to current user |
|
# Check for 'evb' priv via lonnet::allowed(). |
if (&Apache::lonnet::allowed('evb',undef,undef,$checkrole)) { |
if (&Apache::lonnet::allowed('evb',undef,undef,$checkrole)) { |
$no_ownblock = 1; |
$no_ownblock = 1; |
last; |
last; |
Line 2951 sub blockcheck {
|
Line 3009 sub blockcheck {
|
} |
} |
# if they have the evb priv and are currently not playing student |
# if they have the evb priv and are currently not playing student |
next if (($no_ownblock) && |
next if (($no_ownblock) && |
($env{'request.role'} !~ m{^st\./$cdom/$cnum})); |
($env{'request.role'} !~ m{^st\./\Q$cdom\E/\Q$cnum\E})); |
next if ($no_userblock); |
next if ($no_userblock); |
|
|
$setters->{$course} = {}; |
# Retrieve blocking times and identity of blocker for course |
$setters->{$course}{'staff'} = []; |
# of specified user, unless user has 'evb' privilege. |
$setters->{$course}{'times'} = []; |
|
my %records = &Apache::lonnet::dump('comm_block',$cdom,$cnum); |
($startblock,$endblock)=&get_blocks($setters,$activity,$cdom,$cnum); |
foreach my $record (keys(%records)) { |
} |
my ($start,$end) = ($record =~ m/^(\d+)____(\d+)$/); |
return ($startblock,$endblock); |
if ($start <= time && $end >= time) { |
} |
my ($staff_name,$staff_dom,$title,$blocks) = |
|
&parse_block_record($records{$record}); |
sub get_blocks { |
if ($blocks->{$activity} eq 'on') { |
my ($setters,$activity,$cdom,$cnum) = @_; |
push(@{$$setters{$course}{'staff'}}, [$staff_name,$staff_dom]); push(@{$$setters{$course}{'times'}}, [$start,$end]); |
my $startblock = 0; |
if ( ($startblock == 0) || ($startblock > $1) ) { |
my $endblock = 0; |
$startblock = $1; |
my $course = $cdom.'_'.$cnum; |
} |
$setters->{$course} = {}; |
if ( ($endblock == 0) || ($endblock < $2) ) { |
$setters->{$course}{'staff'} = []; |
$endblock = $2; |
$setters->{$course}{'times'} = []; |
} |
my %records = &Apache::lonnet::dump('comm_block',$cdom,$cnum); |
|
foreach my $record (keys(%records)) { |
|
my ($start,$end) = ($record =~ m/^(\d+)____(\d+)$/); |
|
if ($start <= time && $end >= time) { |
|
my ($staff_name,$staff_dom,$title,$blocks) = |
|
&parse_block_record($records{$record}); |
|
if ($blocks->{$activity} eq 'on') { |
|
push(@{$$setters{$course}{'staff'}},[$staff_name,$staff_dom]); |
|
push(@{$$setters{$course}{'times'}}, [$start,$end]); |
|
if ( ($startblock == 0) || ($startblock > $start) ) { |
|
$startblock = $start; |
|
} |
|
if ( ($endblock == 0) || ($endblock < $end) ) { |
|
$endblock = $end; |
} |
} |
} |
} |
} |
} |
Line 3020 sub build_block_table {
|
Line 3091 sub build_block_table {
|
my %courseinfo=&Apache::lonnet::coursedescription($course); |
my %courseinfo=&Apache::lonnet::coursedescription($course); |
for (my $i=0; $i<@{$$setters{$course}{staff}}; $i++) { |
for (my $i=0; $i<@{$$setters{$course}{staff}}; $i++) { |
my ($uname,$udom) = @{$$setters{$course}{staff}[$i]}; |
my ($uname,$udom) = @{$$setters{$course}{staff}[$i]}; |
my $fullname = &aboutmewrapper(&plainname($uname,$udom),$uname,$udom); |
my $fullname = &plainname($uname,$udom); |
|
if (defined($env{'user.name'}) && defined($env{'user.domain'}) |
|
&& $env{'user.name'} ne 'public' |
|
&& $env{'user.domain'} ne 'public') { |
|
$fullname = &aboutmewrapper($fullname,$uname,$udom); |
|
} |
my ($openblock,$closeblock) = @{$$setters{$course}{times}[$i]}; |
my ($openblock,$closeblock) = @{$$setters{$course}{times}[$i]}; |
$openblock = &Apache::lonlocal::locallocaltime($openblock); |
$openblock = &Apache::lonlocal::locallocaltime($openblock); |
$closeblock= &Apache::lonlocal::locallocaltime($closeblock); |
$closeblock= &Apache::lonlocal::locallocaltime($closeblock); |
$output .= &Apache::loncommon::start_data_table_row(). |
$output .= &Apache::loncommon::start_data_table_row(). |
'<td>'.$courseinfo{'description'}.'</td>'. |
'<td>'.$courseinfo{'description'}.'</td>'. |
'<td>'.$openblock.' to '.$closeblock.'</td>'. |
'<td>'.$openblock.' to '.$closeblock.'</td>'. |
'<td>'.$fullname.'.</td>'. |
'<td>'.$fullname.'</td>'. |
&Apache::loncommon::end_data_table_row(); |
&Apache::loncommon::end_data_table_row(); |
} |
} |
} |
} |
$output .= &end_data_table(); |
$output .= &end_data_table(); |
} |
} |
|
|
|
sub blocking_status { |
|
my ($activity,$uname,$udom) = @_; |
|
my %setters; |
|
my ($blocked,$output,$ownitem,$is_course); |
|
my ($startblock,$endblock)=&blockcheck(\%setters,$activity,$uname,$udom); |
|
if ($startblock && $endblock) { |
|
$blocked = 1; |
|
if (wantarray) { |
|
my $category; |
|
if ($activity eq 'boards') { |
|
$category = 'Discussion posts in this course'; |
|
} elsif ($activity eq 'blogs') { |
|
$category = 'Blogs'; |
|
} elsif ($activity eq 'port') { |
|
if (defined($uname) && defined($udom)) { |
|
if ($uname eq $env{'user.name'} && |
|
$udom eq $env{'user.domain'}) { |
|
$ownitem = 1; |
|
} |
|
} |
|
$is_course = &Apache::lonnet::is_course($udom,$uname); |
|
if ($ownitem) { |
|
$category = 'Your portfolio files'; |
|
} elsif ($is_course) { |
|
my $coursedesc; |
|
foreach my $course (keys(%setters)) { |
|
my %courseinfo = |
|
&Apache::lonnet::coursedescription($course); |
|
$coursedesc = $courseinfo{'description'}; |
|
} |
|
$category = "Group files in the course '$coursedesc'"; |
|
} else { |
|
$category = 'Portfolio files belonging to '; |
|
if ($env{'user.name'} eq 'public' && |
|
$env{'user.domain'} eq 'public') { |
|
$category .= &plainname($uname,$udom); |
|
} else { |
|
$category .= &aboutmewrapper(&plainname($uname,$udom),$uname,$udom); |
|
} |
|
} |
|
} elsif ($activity eq 'groups') { |
|
$category = 'Groups in this course'; |
|
} |
|
my $showstart = &Apache::lonlocal::locallocaltime($startblock); |
|
my $showend = &Apache::lonlocal::locallocaltime($endblock); |
|
$output = '<br />'.&mt('[_1] will be inaccessible between [_2] and [_3] because communication is being blocked.',$category,$showstart,$showend).'<br />'; |
|
if (!($activity eq 'port' && !($ownitem) && !($is_course))) { |
|
$output .= &build_block_table($startblock,$endblock,\%setters); |
|
} |
|
} |
|
} |
|
if (wantarray) { |
|
return ($blocked,$output); |
|
} else { |
|
return $blocked; |
|
} |
|
} |
|
|
############################################### |
############################################### |
|
|
=pod |
=pod |
Line 3503 sub standard_css {
|
Line 3637 sub standard_css {
|
my $mail_other = '#99BBBB'; |
my $mail_other = '#99BBBB'; |
my $mail_other_hover = '#669999'; |
my $mail_other_hover = '#669999'; |
my $table_header = '#DDDDDD'; |
my $table_header = '#DDDDDD'; |
|
my $feedback_link_bg = '#BBBBBB'; |
|
|
my $border = ($env{'browser.type'} eq 'explorer') ? '0px 2px 0px 2px' |
my $border = ($env{'browser.type'} eq 'explorer') ? '0px 2px 0px 2px' |
: '0px 3px 0px 4px'; |
: '0px 3px 0px 4px'; |
Line 4034 table.LC_descriptive_input td.LC_descrip
|
Line 4169 table.LC_descriptive_input td.LC_descrip
|
text-align: right; |
text-align: right; |
font-weight: bold; |
font-weight: bold; |
} |
} |
|
table.LC_feedback_link { |
|
background: $feedback_link_bg; |
|
} |
|
span.LC_feedback_link { |
|
background: $feedback_link_bg; |
|
font-size: larger; |
|
} |
|
|
END |
END |
} |
} |
Line 6292 sub construct_course {
|
Line 6434 sub construct_course {
|
my ($user,$domain) = split(':',$args->{'keyauth'}); |
my ($user,$domain) = split(':',$args->{'keyauth'}); |
$user = &LONCAPA::clean_username($user); |
$user = &LONCAPA::clean_username($user); |
$domain = &LONCAPA::clean_username($domain); |
$domain = &LONCAPA::clean_username($domain); |
if ($user ne '' && $domain ne ''); |
if ($user ne '' && $domain ne '') { |
$cenv{'keyauth'}=$user.':'.$domain; |
$cenv{'keyauth'}=$user.':'.$domain; |
} |
} |
} |
} |