Diff for /loncom/interface/lonmsgdisplay.pm between versions 1.35.2.2 and 1.35.2.3

version 1.35.2.2, 2006/06/30 02:06:15 version 1.35.2.3, 2006/07/19 10:20:11
Line 290  sub discourse { Line 290  sub discourse {
     return $result;      return $result;
 }  }
   
   sub disgroup {
       my ($cdom,$cnum,$group,$viewgrps,$editgrps) = @_;
       my $result;
       #  Needs to be in a course
       if (!($env{'request.course.fn'})) {
           $result = &mt('Error: you must have a course role selected to be able to send a broadcast message to a group in the course.');
           return $result;
       }
       if ($cdom eq '' || $cnum eq '') {
           $result = &mt('Error: could not determine domain or number of course');
           return $result;
       }
       my ($memberinfo,$numitems) =
                    &Apache::longroup::group_memberlist($cdom,$cnum,$group,{},[]);
       my @statustypes = ('active');
       if ($viewgrps || $editgrps) {
           push(@statustypes,('future','previous'));
       }
       if (keys(%{$memberinfo}) == 0) {
           $result = &mt('As this group has no members, there are no '.
                         'recipients to select.');
           return $result;
       } else {
           $result = &mt('Select message recipients from the group members listed below.<br />');  
           my %Sortby = (
                            active   => {},
                            previous => {},
                            future   => {},
                        );
           my %lt = &Apache::lonlocal::texthash(
                                        'name'     => 'Name',
                                        'usnm'     => 'Username',
                                        'doma'     => 'Domain',
                                        'active'   => 'Active Members',
                                        'previous' => 'Former Members',
                                        'future'   => 'Future Members',
                                       );
           foreach my $user (sort(keys(%{$memberinfo}))) {
               my $status = $$memberinfo{$user}{status};
               if ($env{'form.'.$status.'.sortby'} eq 'fullname') {
                   push(@{$Sortby{$status}{$$memberinfo{$user}{fullname}}},$user);
               } elsif ($env{'form.'.$status.'.sortby'} eq 'username') {
                   push(@{$Sortby{$status}{$$memberinfo{$user}{uname}}},$user);
               } elsif ($env{'form.'.$status.'.sortby'} eq 'domain') {
                   push(@{$Sortby{$status}{$$memberinfo{$user}{udom}}},$user);
               } else {
                   push(@{$Sortby{$status}{$$memberinfo{$user}{fullname}}},$user);
               }
           }
           $result .= &group_check_uncheck();
           $result .= '<table border="0" cellspacing="8" cellpadding="2">'.
                      '<tr>';
           foreach my $status (@statustypes)  {
               if (ref($numitems) eq 'HASH') {
                   if ((defined($$numitems{$status})) && ($$numitems{$status})) {
                       $result.='<td align="top">'.
                                '<fieldset><legend><b>'.$lt{$status}.
                                '</b></legend><nobr>'.
                                '<input type="button" value="check all" '.
                                'onclick="javascript:toggleAll('."'".$status."','check'".')" />'.
                                '&nbsp;&nbsp;'.
                                '<input type="button" value="uncheck all" '.
                                'onclick="javascript:toggleAll('."'".$status."','uncheck'".')" />'.
                                '</nobr></fieldset><br />'.
                                &Apache::loncommon::start_data_table().
                                &Apache::loncommon::start_data_table_header_row();
                       $result .= "<th><a href=\"javascript:changeSort('fullname')\">".
                       "$lt{'name'}</a></th>".
                       "<th><a href=\"javascript:changeSort('username')\">".
                       "$lt{'usnm'}</a></th>".
                       "<th><a href=\"javascript:changeSort('domain')\">".
                       "$lt{'doma'}</a></th>".
                       &Apache::loncommon::end_data_table_header_row();
                       foreach my $key (sort(keys(%{$Sortby{$status}}))) {
                           foreach my $user (@{$Sortby{$status}{$key}}) {
                               $result .=
                                   &Apache::loncommon::start_data_table_row().
                                   '<td><input type="checkbox" '.
                                   'name="selectedusers_forminput" value="'.
                                   $user.':'.$status.'" />'.
                                   $$memberinfo{$user}{'fullname'}.'</td>'.
                                   '<td>'.$$memberinfo{$user}{'uname'}.'</td>'.
                                   '<td>'.$$memberinfo{$user}{'udom'}.'</td>'.
                                   &Apache::loncommon::end_data_table_row();
                           }
                       }
                       $result .= &Apache::loncommon::end_data_table();
                   }
               }
               $result .= '</td><td>&nbsp;&nbsp;</td>';
           }
           $result .= '</tr></table>';
       }
       return $result;
   }
   
   sub group_check_uncheck {
       my $output = qq|
   <script type="text/javascript">
   function toggleAll(caller,action) {
       var pattern = new RegExp(":"+caller+"\$");
       if (typeof(document.compemail.selectedusers_forminput.length)=="undefined") {
           if (document.compemail.selectedusers_forminput.value.match(pattern)) {
               if (action == 'check') {
                   document.groupmail.selectedusers_forminput.checked = true;
               } else {
                   document.groupmail.selectedusers_forminput.checked = false;
               }
           }
       } else {
           for (var i=0; i<document.compemail.selectedusers_forminput.length; i++) {
               if (document.compemail.selectedusers_forminput[i].value.match(pattern)) {
                   if (action == 'check') {
                       document.compemail.selectedusers_forminput[i].checked = true;
                   } else {
                       document.compemail.selectedusers_forminput[i].checked = false;
                   }
               }
           }
       }
   }
   </script>
       |;
   }
   
   sub groupmail_header {
       my ($action,$group,$cdom,$cnum) = @_;
       my ($description,$refarg);
       if (!$cdom || !$cnum) {
           $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
           $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
       }
       if (exists($env{'form.ref'})) {
           $refarg = 'ref='.$env{'form.ref'};
       }
       if (!$group) {
           $group = $env{'form.group'};
       }
       if ($group eq '') {
           return  '';
       } else {
           my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum,$group);
           if (defined($curr_groups{$group})) {
               my %groupinfo =
                       &Apache::longroup::get_group_settings($curr_groups{$group});
               $description = &unescape($groupinfo{'description'});
           }
       }
       &Apache::lonhtmlcommon::clear_breadcrumbs();
       if ($refarg) {
           &Apache::lonhtmlcommon::add_breadcrumb
               ({href=>"/adm/coursegroups",
                 text=>"Groups",
                 title=>"View course groups"});
       }
       &Apache::lonhtmlcommon::add_breadcrumb
           ({href=>"/adm/$cdom/$cnum/$group/smppg?$refarg",
             text=>"Group: $description",
             title=>"Go to group's home page"},
            {href=>"/adm/email?compose=group&amp;group=".
                   "$env{'form.group'}&amp;$refarg",
             text=>"Send a Message in a Group",
             title=>"Compose Group Email Message"},);
       if ($action eq 'sending') {
               &Apache::lonhtmlcommon::add_breadcrumb
                            ({text=>"Messages being sent.",
                              title=>"Messages sent"},);
       }
       my $groupheader = &Apache::loncommon::start_page('Group Email');
       $groupheader .= &Apache::lonhtmlcommon::breadcrumbs
                   ('Group - '.$env{'form.group'}.' Email');
       return $groupheader;
   }
   
   sub groupmail_sent {
       my ($group,$cdom,$cnum) = @_;
       my $refarg;
       if (exists($env{'form.ref'})) {
           $refarg = 'ref='.$env{'form.ref'};
       }
       my $output .= '<br /><br /><a href="/adm/email?compose=group&amp;group='.
                     $group.'&amp;'.$refarg.'">'.
                     &mt('Send another group email').'</a>'.'&nbsp;&nbsp;&nbsp;'.
                     '<a href="/adm/'.$cdom.'/'.$cnum.'/'.$group.'/smppg?'.
                     $refarg.'">'. &mt('Return to group page').'</a>';
       return $output;
   }
   
 # ==================================================== Display Critical Message  # ==================================================== Display Critical Message
   
 sub discrit {  sub discrit {
Line 320  $content{'sendername'}.':'. Line 508  $content{'sendername'}.':'.
     # Check to see if there were any messages.      # Check to see if there were any messages.
     if ($result eq '') {      if ($result eq '') {
         $result = "<h2>".&mt('You have no critical messages.')."</h2>".          $result = "<h2>".&mt('You have no critical messages.')."</h2>".
     '<a href="/adm/roles">'.&mt('Select a course or group').'</a><br />'.      '<a href="/adm/roles">'.&mt('Select a course').'</a><br />'.
             '<a href="/adm/email">'.&mt('Communicate').'</a>';              '<a href="/adm/email">'.&mt('Communicate').'</a>';
     } else {      } else {
         $r->print($header);          $r->print($header);
Line 709  ENDDISHEADER Line 897  ENDDISHEADER
 sub compout {  sub compout {
     my ($r,$forwarding,$replying,$broadcast,$replycrit,$folder,$dismode)=@_;      my ($r,$forwarding,$replying,$broadcast,$replycrit,$folder,$dismode)=@_;
     my $suffix=&Apache::lonmsg::foldersuffix($folder);      my $suffix=&Apache::lonmsg::foldersuffix($folder);
       my ($cdom,$cnum,$group,$refarg);
     if ($broadcast eq 'individual') {      if (exists($env{'form.group'})) {
           $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
           $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
           $group = $env{'form.group'};
           my $action = 'composing';
           $r->print(&groupmail_header($action,$group,$cdom,$cnum));
       } elsif ($broadcast eq 'individual') {
  &printheader($r,'/adm/email?compose=individual',   &printheader($r,'/adm/email?compose=individual',
      'Send a Message');       'Send a Message');
     } elsif ($broadcast) {      } elsif ($broadcast) {
Line 802  sub compout { Line 996  sub compout {
  }   }
     }      }
     my $citation=&displayresource(%content);      my $citation=&displayresource(%content);
       my ($can_grp_broadcast,$viewgrps,$editgrps);
     if ($env{'form.recdom'}) { $defdom=$env{'form.recdom'}; }      if ($env{'form.recdom'}) { $defdom=$env{'form.recdom'}; }
     if ($env{'form.text'}) { $dismsg=$env{'form.text'}; }      if ($env{'form.text'}) { $dismsg=$env{'form.text'}; }
     if ($env{'form.subject'}) { $dissub=$env{'form.subject'}; }      if ($env{'form.subject'}) { $dissub=$env{'form.subject'}; }
     $r->print(      $r->print(
                 '<form action="/adm/email"  name="compemail" method="post"'.                  '<form action="/adm/email"  name="compemail" method="post"'.
                 ' enctype="multipart/form-data">'."\n".                  ' enctype="multipart/form-data">'."\n".
                 '<input type="hidden" name="sendmail" value="on" />'."\n".                  '<input type="hidden" name="sendmail" value="on" />'."\n");
                 '<table>');      if ($broadcast eq 'group' && $env{'form.group'} ne '') {
     unless (($broadcast eq 'group') || ($broadcast eq 'upload')) {          $can_grp_broadcast = 
                   &Apache::lonnet::allowed('sgb',$env{'request.course.id'}.'/'.
                                            $group);
           $viewgrps = 
                  &Apache::lonnet::allowed('vcg',$env{'request.course.id'}.
                  ($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''));
           $editgrps = 
                  &Apache::lonnet::allowed('mdg',$env{'request.course.id'}.
                  ($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''));
           if ($viewgrps || $editgrps || $can_grp_broadcast) {
               $r->print(&disgroup($cdom,$cnum,$group,$viewgrps,$editgrps));
           }
       }
       $r->print('<table>');
       if (($broadcast eq 'group') && ($group ne '') && 
           (!$can_grp_broadcast && !$viewgrps && !$editgrps)) {
           print STDERR "$broadcast AND $env{'form.group'} AND $can_grp_broadcast\n";
           $r->print(&recipient_input_row($cdom,%lt));
       } 
       if (($broadcast ne 'group') && ($broadcast ne 'upload')) {
  if ($replying) {   if ($replying) {
     $r->print('<tr><td colspan="2">'.&mt('Replying to').' '.      $r->print('<tr><td colspan="2">'.&mt('Replying to').' '.
       &Apache::loncommon::aboutmewrapper(        &Apache::loncommon::aboutmewrapper(
Line 821  sub compout { Line 1035  sub compout {
       '<input type="hidden" name="recdomain" value="'.$content{'senderdomain'}.'" />'.        '<input type="hidden" name="recdomain" value="'.$content{'senderdomain'}.'" />'.
       '</td></tr>');        '</td></tr>');
  } else {   } else {
     my $domform = &Apache::loncommon::select_dom_form($defdom,'recdomain');              $r->print(&recipient_input_row($defdom,%lt));
     my $selectlink=&Apache::loncommon::selectstudent_link  
     ('compemail','recuname','recdomain');  
     $r->print(<<"ENDREC");  
 <tr><td>$lt{'us'}:</td><td><input type="text" size="12" name="recuname" value="$env{'form.recname'}" /></td><td rowspan="2">$selectlink</td></tr>  
 <tr><td>$lt{'do'}:</td>  
 <td>$domform</td></tr>  
 ENDREC  
         }          }
     }      }
     my $latexHelp = Apache::loncommon::helpLatexCheatsheet();      my $latexHelp = Apache::loncommon::helpLatexCheatsheet();
Line 850  $disbase Line 1057  $disbase
 <input type="submit" name="cancel" value="$lt{'ca'}" /><hr />  <input type="submit" name="cancel" value="$lt{'ca'}" /><hr />
 $citation  $citation
 ENDCOMP  ENDCOMP
           if (exists($env{'form.ref'})) {
               $r->print('<input type="hidden" name="ref" value="'.
                         $env{'form.ref'}.'" />');
           }
           if (exists($env{'form.group'})) {
               $r->print('<input type="hidden" name="group" value="'.
                         $env{'form.group'}.'" />');
           }
     } else { # $broadcast is 'upload'      } else { # $broadcast is 'upload'
  $r->print(<<ENDUPLOAD);   $r->print(<<ENDUPLOAD);
 <input type="hidden" name="sendmode" value="upload" />  <input type="hidden" name="sendmode" value="upload" />
Line 879  $dispcrit Line 1094  $dispcrit
 ENDUPLOAD  ENDUPLOAD
     }      }
     if ($broadcast eq 'group') {      if ($broadcast eq 'group') {
        &discourse($r);         if ($group eq '') {
        my $studentsel = &discourse();             my $studentsel = &discourse();
        $r->print($studentsel);             $r->print($studentsel);
          }
     }      }
     if ($env{'form.displayedcrit'}) {      if ($env{'form.displayedcrit'}) {
  $r->print('<input type="hidden" name="displayedcrit" value="true" />');   $r->print('<input type="hidden" name="displayedcrit" value="true" />');
Line 893  ENDUPLOAD Line 1109  ENDUPLOAD
   
 # ---------------------------------------------------- Display all face to face  # ---------------------------------------------------- Display all face to face
   
   sub recipient_input_row {
       my ($dom,%lt) = @_;
       my $domform = &Apache::loncommon::select_dom_form($dom,'recdomain');
       my $selectlink=
         &Apache::loncommon::selectstudent_link('compemail','recuname',
                                                'recdomain');
       my $output = <<"ENDREC";
   <tr><td>$lt{'us'}:</td><td><input type="text" size="12" name="recuname" value="$env{'form.recname'}" /></td><td rowspan="2">$selectlink</td></tr>
   <tr><td>$lt{'do'}:</td>
   <td>$domform</td></tr>
   ENDREC
       return $output;
   }
   
 sub retrieve_instructor_comments {  sub retrieve_instructor_comments {
     my ($user,$domain)=@_;      my ($user,$domain)=@_;
     my $target=$env{'form.grade_target'};      my $target=$env{'form.grade_target'};
Line 1565  sub header { Line 1795  sub header {
  $extra .= "<base href=\"http://$ENV{'SERVER_NAME'}/$baseurl\" />";   $extra .= "<base href=\"http://$ENV{'SERVER_NAME'}/$baseurl\" />";
     }      }
     $r->print(&Apache::loncommon::start_page('Communication and Messages',      $r->print(&Apache::loncommon::start_page('Communication and Messages',
      $extra));    $extra));
     $r->print(&Apache::lonhtmlcommon::breadcrumbs      $r->print(&Apache::lonhtmlcommon::breadcrumbs
       (($title?$title:'Communication and Messages')));        (($title?$title:'Communication and Messages')));
   
 }  }
   
 # ---------------------------------------------------------------- Print header  # ---------------------------------------------------------------- Print header
Line 1624  sub sendoffmail { Line 1853  sub sendoffmail {
     my $sendstatus='';      my $sendstatus='';
     my %specialmsg_status;      my %specialmsg_status;
     my $numspecial = 0;      my $numspecial = 0;
       my ($cdom,$cnum,$group);
       if (exists($env{'form.group'})) {
           $group = $env{'form.group'};
       }
       if (exists($env{'request.course.id'})) {
           $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
           $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
       }
     if ($env{'form.send'}) {      if ($env{'form.send'}) {
  &printheader($r,'','Messages being sent.');          if ($group eq '') {
       &printheader($r,'','Messages being sent.');
           } else {
               $r->print(&groupmail_header('sending',$group));
           }
  $r->rflush();   $r->rflush();
  my %content=();   my %content=();
  undef %content;   undef %content;
Line 1645  sub sendoffmail { Line 1886  sub sendoffmail {
  }   }
   
  my @to =   my @to =
     &Apache::loncommon::get_env_multiple('form.selectedusers.forminput');      &Apache::loncommon::get_env_multiple('form.selectedusers_forminput');
  my $mode = $env{'form.sendmode'};   my $mode = $env{'form.sendmode'};
   
  my %toaddr;   my %toaddr;
Line 1750  sub sendoffmail { Line 1991  sub sendoffmail {
                 $subj_prefix = 'Broadcast.';                  $subj_prefix = 'Broadcast.';
             }              }
             my ($specialmsgid,$specialresult);              my ($specialmsgid,$specialresult);
             my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};  
             my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};  
             my $course_str = &escape('['.$cnum.':'.$cdom.']');              my $course_str = &escape('['.$cnum.':'.$cdom.']');
   
             if ($numspecial) {              if ($numspecial) {
Line 1807  sub sendoffmail { Line 2046  sub sendoffmail {
  $r->print('<br /><span class="LC_success">'.&mt('Completed.').'</span>');   $r->print('<br /><span class="LC_success">'.&mt('Completed.').'</span>');
  if ($env{'form.displayedcrit'}) {   if ($env{'form.displayedcrit'}) {
     &discrit($r);      &discrit($r);
           }
           if ($group ne '') {
               $r->print(&groupmail_sent($group,$cdom,$cnum)); 
  } else {   } else {
     &Apache::loncommunicate::menu($r);      &Apache::loncommunicate::menu($r);
  }   }
Line 1833  sub handler { Line 2075  sub handler {
         ['display','replyto','forward','markread','markdel','markunread',          ['display','replyto','forward','markread','markdel','markunread',
          'sendreply','compose','sendmail','critical','recname','recdom',           'sendreply','compose','sendmail','critical','recname','recdom',
          'recordftf','sortedby','block','folder','startdis','interdis',           'recordftf','sortedby','block','folder','startdis','interdis',
  'showcommentbaseurl','dismode','group','subject','text']);   'showcommentbaseurl','dismode','group','subject','text','ref']);
     $sqs='&sortedby='.$env{'form.sortedby'};      $sqs='&sortedby='.$env{'form.sortedby'};
   
 # ------------------------------------------------------ They checked for email  # ------------------------------------------------------ They checked for email
Line 2001  sub handler { Line 2243  sub handler {
  &sendoffmail($r,$folder);   &sendoffmail($r,$folder);
  if ($env{'form.storebasecomment'}) {   if ($env{'form.storebasecomment'}) {
     &storecomment($r);      &storecomment($r);
  }          }
  if (($env{'form.rsspost'}) && ($env{'request.course.id'})) {   if (($env{'form.rsspost'}) && ($env{'request.course.id'})) {
     &Apache::lonrss::addentry($env{'course.'.$env{'request.course.id'}.'.num'},          &Apache::lonrss::addentry($env{'course.'.$env{'request.course.id'}.'.num'},
       $env{'course.'.$env{'request.course.id'}.'.domain'},        $env{'course.'.$env{'request.course.id'}.'.domain'},
       'Course_Announcements',        'Course_Announcements',
       $env{'form.subject'},        $env{'form.subject'},
       $env{'form.message'},'/adm/communicate','public');        $env{'form.message'},'/adm/communicate','public');
  }   }
  if (!$env{'form.displayedcrit'}) {   if ((!exists($env{'form.group'})) && (!$env{'form.displayedcrit'})) {
     &disall($r,($folder?$folder:$dismode));      &disall($r,($folder?$folder:$dismode));
  }   }
     } elsif ($env{'form.newfolder'}) {      } elsif ($env{'form.newfolder'}) {
Line 2039  sub handler { Line 2281  sub handler {
   
 __END__  __END__
   
   
   
   
   
   
   

Removed from v.1.35.2.2  
changed lines
  Added in v.1.35.2.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>