--- loncom/interface/lonmsgdisplay.pm 2006/04/25 23:12:34 1.16 +++ loncom/interface/lonmsgdisplay.pm 2006/05/01 19:37:33 1.22 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines for messaging display # -# $Id: lonmsgdisplay.pm,v 1.16 2006/04/25 23:12:34 albertel Exp $ +# $Id: lonmsgdisplay.pm,v 1.22 2006/05/01 19:37:33 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -261,13 +261,18 @@ sub movemsg { sub discourse { my $r=shift; my $classlist = &Apache::loncoursedata::get_classlist(); - my $now=time; + my ($classgroups,$studentgroups) = + &Apache::loncoursedata::get_group_memberships($classlist); my %lt=&Apache::lonlocal::texthash('cfa' => 'Check All', 'cfs' => 'Check Section/Group', 'cfn' => 'Uncheck All'); + if (defined($env{'form.group'})) { + $r->print(''."\n"); + } $r->print(< -   -  + 

ENDDISHEADER my %coursepersonnel=&Apache::lonnet::get_course_adv_roles(); - $r->print(''); - foreach my $role (sort keys %coursepersonnel) { - foreach (split(/\,/,$coursepersonnel{$role})) { - my ($puname,$pudom)=split(/\:/,$_); - $r->print(''. - ''); - } - } - $r->print('
('.$_.'),'.$role.'
'); - my $sort = sub { - my $aname=lc($classlist->{$a}[&Apache::loncoursedata::CL_FULLNAME()]); - if (!$aname) { $aname=$a; } - my $bname=lc($classlist->{$b}[&Apache::loncoursedata::CL_FULLNAME()]); - if (!$bname) { $bname=$b; } - return $aname cmp $bname; - }; - foreach my $student (sort $sort (keys(%{$classlist}))) { - my $info=$classlist->{$student}; - my ($sname,$sdom,$status,$fullname,$section) = - (@{$info}[&Apache::loncoursedata::CL_SNAME(), - &Apache::loncoursedata::CL_SDOM(), - &Apache::loncoursedata::CL_STATUS(), - &Apache::loncoursedata::CL_FULLNAME(), - &Apache::loncoursedata::CL_SECTION()]); - next if ($status ne 'Active'); - next if ($env{'request.course.sec'} && - $section ne $env{'request.course.sec'}); - my $key = 'send_to_&&&'.$section.'&&&_'.$student; - if (! defined($fullname) || $fullname eq '') { $fullname = $sname; } - $r->print(''); + $r->print(&Apache::loncommon::start_data_table()); + if (keys(%coursepersonnel) > 0) { + $r->print('

Non-students

'); + $r->print(&Apache::loncommon::start_data_table()); + $r->print(''); + foreach my $role (sort(keys(%coursepersonnel))) { + foreach my $user (split(/\,/,$coursepersonnel{$role})) { + my ($puname,$pudom)=split(/\:/,$user); + $r->print(&Apache::loncommon::start_data_table_row()); + $r->print(''. + ''); + $r->print(&Apache::loncommon::end_data_table_row()); + } + } + $r->print(&Apache::loncommon::end_data_table()); + } + if (keys(%{$classlist}) > 0) { + $r->print('

Students

'); + $r->print(&Apache::loncommon::start_data_table()); + $r->print(''); + my $sort = sub { + my $aname=lc($classlist->{$a}[&Apache::loncoursedata::CL_FULLNAME()]); + if (!$aname) { $aname=$a; } + my $bname=lc($classlist->{$b}[&Apache::loncoursedata::CL_FULLNAME()]); + if (!$bname) { $bname=$b; } + return $aname cmp $bname; + }; + foreach my $student (sort $sort (keys(%{$classlist}))) { + my $info=$classlist->{$student}; + my ($sname,$sdom,$status,$fullname,$section) = + (@{$info}[&Apache::loncoursedata::CL_SNAME(), + &Apache::loncoursedata::CL_SDOM(), + &Apache::loncoursedata::CL_STATUS(), + &Apache::loncoursedata::CL_FULLNAME(), + &Apache::loncoursedata::CL_SECTION()]); + next if ($status ne 'Active'); + next if ($env{'request.course.sec'} && + $section ne $env{'request.course.sec'}); + my @studentsgroups = + &Apache::loncoursedata::get_students_groups($student,$status, + $classgroups); + my $grouplist = join(', ',@studentsgroups); + my $key = 'send_to_&&&'.$section.'&&&_'.$student; + if (! defined($fullname) || $fullname eq '') {$fullname = $sname;} + my $checked = ''; + my $groupcount = 0; + my $groupitems; + $r->print(&Apache::loncommon::start_data_table_row()); + $r->print(''); + $r->print(&Apache::loncommon::end_data_table_row()); + } + $r->print(&Apache::loncommon::end_data_table()); } - $r->print('
'.$sname.':'.$sdom.''.$section. - '
NameUsername:DomainRole
('.$user.'),'.$role.'
NameUsername:DomainSectionGroups
'.$groupitems. + ''.$sname.':'.$sdom.''.$section. + ''.$grouplist.'
'); } # ==================================================== Display Critical Message @@ -1291,8 +1335,8 @@ sub display_blocker_status { 'modi' => 'Modify', 'canc' => 'Cancel', ); + $r->print(&Apache::loncommon::start_data_table()); $r->print(<<"END"); - @@ -1300,26 +1344,27 @@ sub display_blocker_status { END - foreach (sort keys %{$records}) { - my $iter = $parmcount%2; + foreach my $record (sort(keys(%{$records}))) { my $onchange = 'onFocus="javascript:window.document.forms['. "'blockform'].elements['modify_".$parmcount."'].". 'checked=true;"'; - my ($start,$end) = split/____/,$_; + my ($start,$end) = split(/____/,$record); my $startform = &Apache::lonhtmlcommon::date_setter('blockform','startdate_'.$parmcount,$start,$onchange); my $endform = &Apache::lonhtmlcommon::date_setter('blockform','enddate_'.$parmcount,$end,$onchange); - my ($setuname,$setudom,$title) = &parse_block_record($$records{$_}); + my ($setuname,$setudom,$title) = + &parse_block_record($$records{$record}); + $title = &HTML::Entities::encode($title,'"<>&'); my $settername = &Apache::loncommon::plainname($setuname,$setudom); + $r->print(&Apache::loncommon::start_data_table_row()); $r->print(<<"END"); - - + END - $parmcount ++; + $r->print(&Apache::loncommon::end_data_table_row()); + $parmcount++; } $r->print(<<"END");
$$ltext{'dura'} $$ltext{'setb'}$$ltext{'actn'}?
$$ltext{'star'}: $startform
$$ltext{'endd'}:  $endform
$settername
-
@@ -1358,19 +1403,23 @@ sub display_addblocker_table { ); $r->print(<<"END");

$lt{'addn'}

- +END + $r->print(&Apache::loncommon::start_data_table()); + $r->print(<<"END"); - +END + $r->print(&Apache::loncommon::start_data_table_row()); + $r->print(<<"END"); - -
$$ltext{'dura'} $$ltext{'even'} $lt{'exam'} $$ltext{'actn'}?
$$ltext{'star'}: $startform
$$ltext{'endd'}:  $endform
END + $r->print(&Apache::loncommon::end_data_table_row()); + $r->print(&Apache::loncommon::end_data_table()); return; } @@ -1388,12 +1437,9 @@ sub blockcheck { # for students. return if (!%live_courses); - &Apache::lonnet::logthis("hmm"); - &Apache::lonnet::logthis(join(" ",%live_courses)); - &Apache::lonnet::logthis(join(" ",%staff_of)); - foreach my $course (keys(%live_courses)) { - my ($cdom,$cnum) = split(/_/,$course); + my $cdom = $env{'course.'.$course.'.domain'}; + my $cnum = $env{'course.'.$course.'.num'}; # if they are a staff member and are currently not playing student next if ( $staff_of{$course} @@ -1428,31 +1474,35 @@ sub build_block_table { 'cour' => 'Course', 'dura' => 'Duration', 'blse' => 'Block set by' - ); + ); + $r->print(<<"END"); +

$lt{'cacb'}:

+END + $r->print(&Apache::loncommon::start_data_table()); $r->print(<<"END"); -
$lt{'cacb'}:

- END - foreach (keys %{$setters}) { - my %courseinfo=&Apache::lonnet::coursedescription($_); - for (my $i=0; $i<@{$$setters{$_}{staff}}; $i++) { - my ($uname,$udom) = @{$$setters{$_}{staff}[$i]}; + foreach my $course (keys(%{$setters})) { + my %courseinfo=&Apache::lonnet::coursedescription($course); + for (my $i=0; $i<@{$$setters{$course}{staff}}; $i++) { + my ($uname,$udom) = @{$$setters{$course}{staff}[$i]}; my $fullname = &Apache::loncommon::plainname($uname,$udom); - my ($openblock,$closeblock) = @{$$setters{$_}{times}[$i]}; + my ($openblock,$closeblock) = @{$$setters{$course}{times}[$i]}; $openblock = &Apache::lonlocal::locallocaltime($openblock); $closeblock= &Apache::lonlocal::locallocaltime($closeblock); - $r->print(''. + $r->print(&Apache::loncommon::start_data_table_row(). + ''. ''. ''); + ')'. + &Apache::loncommon::end_data_table_row()); } } - $r->print('
$lt{'cour'} $lt{'dura'} $lt{'blse'}
'.$courseinfo{'description'}.''.$courseinfo{'description'}.''.$openblock.' to '.$closeblock.''.$fullname.' ('.$uname.':'.$udom. - ')
'); + $r->print(&Apache::loncommon::end_data_table()); } # ----------------------------------------------------------- Display a message @@ -1604,7 +1654,7 @@ sub header { $r->print(&Apache::loncommon::start_page('Communication and Messages', $extra)); $r->print(&Apache::lonhtmlcommon::breadcrumbs - (undef,($title?$title:'Communication and Messages'))); + (($title?$title:'Communication and Messages'))); } @@ -1852,7 +1902,7 @@ sub handler { ['display','replyto','forward','markread','markdel','markunread', 'sendreply','compose','sendmail','critical','recname','recdom', 'recordftf','sortedby','block','folder','startdis','interdis', - 'showcommentbaseurl','dismode']); + 'showcommentbaseurl','dismode','group']); $sqs='&sortedby='.$env{'form.sortedby'}; # ------------------------------------------------------ They checked for email