Diff for /loncom/interface/lonpickcourse.pm between versions 1.31 and 1.46

version 1.31, 2005/10/04 00:27:22 version 1.46, 2006/05/18 01:08:50
Line 34  use Apache::loncommon; Line 34  use Apache::loncommon;
 use Apache::loncoursedata;  use Apache::loncoursedata;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::lonlocal;  use Apache::lonlocal;
   use Apache::longroup;
   
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
Line 42  sub handler { Line 43  sub handler {
     return OK if $r->header_only;      return OK if $r->header_only;
   
 # ------------------------------------------------------------ Print the screen  # ------------------------------------------------------------ Print the screen
     my $html=&Apache::lonxml::xmlbegin();  
     $r->print(<<ENDDOCUMENT);  
 $html  
 <head>  
 <title>The LearningOnline Network with CAPA</title>  
 </head>  
 ENDDOCUMENT  
 # Get parameters from query string  # Get parameters from query string
     &Apache::loncommon::get_unprocessed_cgi      &Apache::loncommon::get_unprocessed_cgi
         ($ENV{'QUERY_STRING'},['domainfilter','descriptfilter',          ($ENV{'QUERY_STRING'},['domainfilter','descriptfilter',
        'sincefilter','form','cnumelement',         'sincefilter','form','cnumelement',
        'cdomelement','cnameelement','roleelement',         'cdomelement','cnameelement','roleelement',
                                'pickedcourse','instcodefilter',                                 'pickedcourse','instcodefilter',
                                'ownerfilter','coursefilter']);                                 'ownerfilter','coursefilter','multiple']);
 # domain filter and selection  # domain filter and selection
     my $domainfilter=$env{'form.domainfilter'};      my $domainfilter=$env{'form.domainfilter'};
     $domainfilter=~s/\W//g;      $domainfilter=~s/\W//g;
Line 82  ENDDOCUMENT Line 77  ENDDOCUMENT
         unless ($coursefilter) { $coursefilter=''; }          unless ($coursefilter) { $coursefilter=''; }
         my $listcourseid=&HTML::Entities::encode($coursefilter,'<>&"');          my $listcourseid=&HTML::Entities::encode($coursefilter,'<>&"');
         $courseidtag = &mt('LON-CAPA course ID');          $courseidtag = &mt('LON-CAPA course ID');
         $courseidtag .= qq|<input type="text" name="coursefilter" size="25" value="$listcourseid" />          $courseidtag .= qq|: <input type="text" name="coursefilter" size="25" value="$listcourseid" />
         <br />          <br />
         |;          |;
     }      }
Line 102  ENDDOCUMENT Line 97  ENDDOCUMENT
                       ['-1','86400','604800','2592000','7776000',                        ['-1','86400','604800','2592000','7776000',
       '15552000','31104000']));        '15552000','31104000']));
 # if called from loncreateuser, report sections, then close  # if called from loncreateuser, report sections, then close
     my ($loaditem,$seclist);      my (%loaditem,$seclist,$groupslist);
     my $num_sections = 0;      my $num_sections = 0;
     if ($env{'form.form'} eq 'cu' && $env{'form.pickedcourse'}) {      if ($env{'form.form'} eq 'cu' && $env{'form.pickedcourse'}) {
         $loaditem = 'onLoad="setSections()"';          $loaditem{'onload'} ="setSections()";
         my ($cdom,$cnum) = split/_/,$env{'form.pickedcourse'};          my ($cdom,$cnum) = split/_/,$env{'form.pickedcourse'};
         my %sections_count = ();  
         $num_sections = &Apache::loncommon::get_sections($cdom,$cnum,\%sections_count);          my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum);
         my @sections = ();          my @sections =  (sort {$a <=> $b} keys(%sections_count));
         if ($num_sections > 0) {   $seclist = join('","',@sections);
             @sections = (sort {$a <=> $b} keys(%sections_count));  
             $seclist = join('","',@sections);          my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum);
         }   $groupslist = join(',',sort(keys(%curr_groups)));
     }      }
 # if called from rolefilter, setup for multiple course selections.  
     my $multflag = 0;  
     my $jscript;      my $jscript;
     my $title = 'Selecting a course';      my $title = 'Selecting a course';
     if ($env{'form.form'} eq 'rolefilter') {  # Setup for multiple course selections, if flag for multiples set.
         $multflag = 1;      my $multiple = $env{'form.multiple'};
       my $multelement;
       if ($multiple) {
         $title = 'Selecting course(s)';          $title = 'Selecting course(s)';
     }  
     if ($multflag) {  
         $jscript = &Apache::loncommon::check_uncheck_jscript();          $jscript = &Apache::loncommon::check_uncheck_jscript();
           $multelement = '<input type="hidden" name="multiple" value="'.$multiple.'" />';
     }      }
     $r->print(&Apache::loncommon::bodytag($title,undef,$loaditem,undef,undef,undef,undef,1));      $r->print(&Apache::loncommon::start_page($title,undef,
        {'add_entries' => \%loaditem,
         'no_nav_bar'  => 1, }));
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
        'cac' => 'Course Activity',         'cac' => 'Course Activity',
        'cde' => 'Course Description',         'cde' => 'Course Description',
        'cdo' => 'Course Domain',         'cdo' => 'Course Domain',
                                        'cin' => 'Course Institutional Code',                                         'cin' => 'Course Institutional Code',
                                        'cow' => "Course Owner's usename");                                         'cow' => "Course Owner's Username");
     my ($name_code,$name_input);      my ($name_code,$name_input);
     if (defined($env{'form.cnameelement'}) && $env{'form.cnameelement'} ne '') {      if (defined($env{'form.cnameelement'}) && $env{'form.cnameelement'} ne '') {
  $name_code = "opener.document.$env{'form.form'}.$env{'form.cnameelement'}.value=cdesc;";   $name_code = "opener.document.$env{'form.form'}.$env{'form.cnameelement'}.value=cdesc;";
Line 150  ENDDOCUMENT Line 146  ENDDOCUMENT
     my $roledom = $env{'form.roleelement'};      my $roledom = $env{'form.roleelement'};
     if ($roledom) {      if ($roledom) {
         $roleelement = '<input type="hidden" name="roleelement" value="'.$roledom.'" />';          $roleelement = '<input type="hidden" name="roleelement" value="'.$roledom.'" />';
         $submitopener = &Apache::lonroles::processpick($roledom);          $submitopener = &Apache::lonroles::processpick();
         $autosubmit = 'process_pick("'.$roledom.'")';          $autosubmit = 'process_pick("'.$roledom.'")';
     }      }
     $r->print(<<ENDSCRIPT);      $r->print(<<ENDSCRIPT);
 <script>  <script>
 function gochoose(cname,cdom,cdesc,multflag,caller) {  function gochoose(cname,cdom,cdesc,multiple,caller) {
     var openerForm = "$env{'form.form'}";      var openerForm = "$env{'form.form'}";
     courseCount = 0;      courseCount = 0;
     var courses = '';      var courses = '';
     if (multflag) {      if (multiple) {
         for (var j=0; j<document.courselist.course_id.length; j++) {   if (typeof(document.courselist.course_id.length) == 'undefined') {
             if (document.courselist.course_id[j].checked) {      // only 1 course checkbox was created
                 courses = courses + document.courselist.course_id[j].value + "&&";      if (document.courselist.course_id.checked) {
                 courseCount ++;   courses = courses + document.courselist.course_id.value + "&&";
             }   courseCount ++;
         }      }
    } else {
       for (var j=0; j<document.courselist.course_id.length; j++) {
    if (document.courselist.course_id[j].checked) {
       courses = courses + document.courselist.course_id[j].value + "&&";
       courseCount ++;
    }
       }
    } 
         opener.document.$env{'form.form'}.coursetotal.value = courseCount;          opener.document.$env{'form.form'}.coursetotal.value = courseCount;
         for (var j=0; j<opener.document.$env{'form.form'}.coursepick.length; j++) {    if (typeof(opener.document.$env{'form.form'}.coursepick.length) ==
             if (opener.document.$env{'form.form'}.coursepick[j].value == 'specific') {        'undefined') {
                 opener.document.$env{'form.form'}.coursepick[j].checked = true;      if (opener.document.$env{'form.form'}.coursepick.value == 'specific') {  
             }   opener.document.$env{'form.form'}.coursepick.checked = true;
             else {      } else {
                 opener.document.$env{'form.form'}.coursepick[j].checked = false;   opener.document.$env{'form.form'}.coursepick.checked = false;
             }      }
         }   } else {
         if (courseCount > 0) {      for (var j=0; j<opener.document.$env{'form.form'}.coursepick.length; j++) { 
             courses = courses.substr(0,courses.length-2);   if (opener.document.$env{'form.form'}.coursepick[j].value == 'specific') {  
             opener.document.$env{'form.form'}.courselist.value = courses      opener.document.$env{'form.form'}.coursepick[j].checked = true;
         }   } else {
     }      opener.document.$env{'form.form'}.coursepick[j].checked = false;
     else {   }
       }
    }
    if (courseCount > 0) {
       courses = courses.substr(0,courses.length-2);
       opener.document.$env{'form.form'}.courselist.value = courses;
    }
       } else {
         $name_code          $name_code
         opener.document.$env{'form.form'}.$env{'form.cnumelement'}.value=cname;          opener.document.$env{'form.form'}.$env{'form.cnumelement'}.value=cname;
         if (openerForm == 'cu') {          var slct=opener.document.$env{'form.form'}.$env{'form.cdomelement'};
           if (slct.options == undefined) {
             opener.document.$env{'form.form'}.$env{'form.cdomelement'}.value=cdom;              opener.document.$env{'form.form'}.$env{'form.cdomelement'}.value=cdom;
         }          }
         else {          else {
             var slct=opener.document.$env{'form.form'}.$env{'form.cdomelement'};  
             var i;              var i;
             for (i=0;i<slct.length;i++) {              for (i=0;i<slct.length;i++) {
                 if (slct.options[i].value==cdom) { slct.selectedIndex=i; }                  if (slct.options[i].value==cdom) { slct.selectedIndex=i; }
Line 206  function setSections() { Line 217  function setSections() {
         opener.document.$env{"form.form"}.currsec.multiple=false          opener.document.$env{"form.form"}.currsec.multiple=false
         opener.document.$env{"form.form"}.currsec.size=1;          opener.document.$env{"form.form"}.currsec.size=1;
         opener.document.$env{"form.form"}.currsec.options[0] = new Option('No existing sections','',false,false)          opener.document.$env{"form.form"}.currsec.options[0] = new Option('No existing sections','',false,false)
     }      } else {
     else {  
         if (numSections == 1) {          if (numSections == 1) {
             opener.document.$env{"form.form"}.currsec.multiple=false;              opener.document.$env{"form.form"}.currsec.multiple=false;
             opener.document.$env{"form.form"}.currsec.size=1;              opener.document.$env{"form.form"}.currsec.size=1;
             opener.document.$env{"form.form"}.currsec.options[0] = new Option('Select','',true,true);              opener.document.$env{"form.form"}.currsec.options[0] = new Option('Select','',true,true);
             opener.document.$env{"form.form"}.currsec.options[1] = new Option('No section','',false,false)               opener.document.$env{"form.form"}.currsec.options[1] = new Option('No section','',false,false) 
             opener.document.$env{"form.form"}.currsec.options[2] = new Option(sectionsArray[0],sectionsArray[0],false,false);              opener.document.$env{"form.form"}.currsec.options[2] = new Option(sectionsArray[0],sectionsArray[0],false,false);
         }          } else {
         else {  
             for (var i=0; i<numSections; i++) {              for (var i=0; i<numSections; i++) {
                 opener.document.$env{"form.form"}.currsec.options[i] = new Option(sectionsArray[i],sectionsArray[i],false,false)                  opener.document.$env{"form.form"}.currsec.options[i] = new Option(sectionsArray[i],sectionsArray[i],false,false)
             }              }
             opener.document.$env{"form.form"}.currsec.multiple=true              opener.document.$env{"form.form"}.currsec.multiple=true
             if (numSections < 3) {              if (numSections < 3) {
                 opener.document.$env{"form.form"}.currsec.size=numSections;                  opener.document.$env{"form.form"}.currsec.size=numSections;
             }              } else {
             else {  
                 opener.document.$env{"form.form"}.currsec.size=3;                  opener.document.$env{"form.form"}.currsec.size=3;
             }              }
             opener.document.$env{"form.form"}.currsec.options[0].selected = false              opener.document.$env{"form.form"}.currsec.options[0].selected = false
         }          }
     }      }
       opener.document.$env{"form.form"}.groups.value='$groupslist';
     self.close()      self.close()
 }  }
   
Line 241  $submitopener Line 250  $submitopener
 $name_input  $name_input
 <input type="hidden" name="form" value="$env{'form.form'}" />  <input type="hidden" name="form" value="$env{'form.form'}" />
 $roleelement  $roleelement
   $multelement
 $lt{'cac'}: $sincefilterform  $lt{'cac'}: $sincefilterform
 <br />  <br />
 $lt{'cdo'}: $domainselectform  $lt{'cdo'}: $domainselectform
Line 275  ENDSCRIPT Line 285  ENDSCRIPT
         my $numcourses = keys(%courses);          my $numcourses = keys(%courses);
  foreach my $course (keys(%courses)) {   foreach my $course (keys(%courses)) {
             my $descr;              my $descr;
             if ($courses{$course} =~ m/^([^:]*):/) {              if ($courses{$course} =~ m/^([^:]*):/i) {
                 $descr = &Apache::lonnet::unescape($1);                  $descr = &Apache::lonnet::unescape($1);
             } else {              } else {
                 $descr = &Apache::lonnet::unescape($courses{$course});                  $descr = &Apache::lonnet::unescape($courses{$course});
             }              }
             my $description = lc($descr);              my $description = $descr;
             push (@{$by_descrip{$description}}, $course);              push (@{$by_descrip{$description}}, $course);
  }   }
         if ($numcourses > 1 && $multflag) {          if ($numcourses > 1 && $multiple) {
             $r->print('<input type="button" value="check all"              $r->print('<input type="button" value="check all"
                     onclick="javascript:checkAll(document.courselist.course_id)" />                    &nbsp;&nbsp;<input type="button" value="uncheck all"                      onclick="javascript:checkAll(document.courselist.course_id)" />                    &nbsp;&nbsp;<input type="button" value="uncheck all"
                     onclick="javascript:uncheckAll(document.courselist.course_id)" />                      onclick="javascript:uncheckAll(document.courselist.course_id)" />
                     <br /><br />');                      <br /><br />');
         }          }
  foreach my $description (sort(keys(%by_descrip))) {   foreach my $description (sort 
    { lc($a) cmp lc($b) } (keys(%by_descrip))) {
             foreach my $course (@{$by_descrip{$description}}) {              foreach my $course (@{$by_descrip{$description}}) {
         my $cleandesc=&HTML::Entities::encode($description,'<>&"');          my $cleandesc=&HTML::Entities::encode($description,'<>&"');
         $cleandesc=~s/'/\\'/g;          $cleandesc=~s/'/\\'/g;
         my ($cdom,$cnum)=split(/\_/,$course);          my ($cdom,$cnum)=split(/\_/,$course);
                 my ($descr,$instcode,$owner) = split/:/,$courses{$course};                  my ($descr,$instcode,$owner) = split/:/,$courses{$course};
                 $r->print(&course_chooser($multflag,$cdom,$cnum,$cleandesc));                  $r->print(&course_chooser($multiple,$cdom,$cnum,$cleandesc));
         $r->print($description.'('.          $r->print($description.'('.
       ($Apache::lonnet::domaindescription{$cdom}?        ($Apache::lonnet::domaindescription{$cdom}?
                        $Apache::lonnet::domaindescription{$cdom}:$cdom).")");                         $Apache::lonnet::domaindescription{$cdom}:$cdom).")");
Line 305  ENDSCRIPT Line 316  ENDSCRIPT
                 unless ($owner eq '') {                  unless ($owner eq '') {
                     $r->print(", owner - ".&Apache::lonnet::unescape($owner));                      $r->print(", owner - ".&Apache::lonnet::unescape($owner));
                 }                  }
    if ($multiple) { $r->print("</label>\n"); }
                 $r->print("<br />\n");                  $r->print("<br />\n");
             }              }
  }   }
  if (!%courses) {    if (!%courses) { 
             $r->print(&mt('None found'));              $r->print(&mt('None found'));
         } elsif ($multflag) {          } elsif ($multiple) {
             $r->print('<input type="button" value="Submit" onClick="gochoose('."'','','',1)".'" />');              $r->print('<input type="button" value="Submit" onClick="gochoose('."'','','',1)".'" />');
         }          }
         $r->print('<input type="hidden" name="form" value="'.$env{'form.form'}.'" />'."\n".          $r->print('<input type="hidden" name="form" value="'.$env{'form.form'}.'" />'."\n".
                    '<input type="hidden" name="pickedcourse" value="" />'."\n".                     '<input type="hidden" name="pickedcourse" value="" />'."\n".
                    '<input type="hidden" name="cnumelement" value="'.$env{'form.cnumelement'}.'" />'."\n".                     '<input type="hidden" name="cnumelement" value="'.$env{'form.cnumelement'}.'" />'."\n".
                    '<input type="hidden" name="cdomelement" value="'.$env{'form.cdomelement'}.'" />'."\n".                     '<input type="hidden" name="cdomelement" value="'.$env{'form.cdomelement'}.'" />'."\n");
                    '</form>');          if ((exists($env{'form.roleelement'})) && ($env{'form.form'} eq 'rolechoice')) {
              $r->print('<input type="hidden" name="roleelement" value="'.$env{'form.roleelement'}.'" />'."\n");
           }
           $r->print("</form>\n");
     }      }
     $r->print('</body></html>');      $r->print(&Apache::loncommon::end_page());
     return OK;      return OK;
 }  }
   
 sub course_chooser {  sub course_chooser {
     my ($multflag,$cdom,$cnum,$cleandesc) = @_;      my ($multiple,$cdom,$cnum,$cleandesc) = @_;
     my $output;       my $output; 
     if ($multflag) {      if ($multiple) {
         $output = '<input type="checkbox" name="course_id" value="'.$cdom.'_'.$cnum.'" />'."\n";          $output = '<label><input type="checkbox" name="course_id" value="'.$cdom.'_'.$cnum.'" />'."\n";
     } else {      } else {
         $output = '<input type="button" value="Select" onClick="gochoose('.          $output = '<input type="button" value="Select" onClick="gochoose('.
                   "'".$cnum."','".$cdom."','".$cleandesc."')".'" />'."\n";                    "'".$cnum."','".$cdom."','".$cleandesc."')".'" />'."\n";

Removed from v.1.31  
changed lines
  Added in v.1.46


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