Diff for /loncom/interface/lonpickcourse.pm between versions 1.55 and 1.73.2.4

version 1.55, 2006/11/09 22:18:28 version 1.73.2.4, 2008/09/21 16:41:47
Line 35  use Apache::loncoursedata; Line 35  use Apache::loncoursedata;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::longroup;  use Apache::longroup;
 use lib '/home/httpd/lib/perl/';  
 use LONCAPA;  use LONCAPA;
   
 sub handler {  sub handler {
Line 55  sub handler { Line 54  sub handler {
     my ($type,$title,$jscript,$multelement,$multiple,$roleelement,      my ($type,$title,$jscript,$multelement,$multiple,$roleelement,
         $lastaction,$autosubmit,$submitopener);          $lastaction,$autosubmit,$submitopener);
   
     # Get course type - Course or Non-standard course.      # Get course type - Course or Non-standard Course.
     $type = $env{'form.type'};      $type = $env{'form.type'};
     if (!defined($env{'form.type'})) {      if (!defined($env{'form.type'})) {
         $type = 'Course';          $type = 'Course';
Line 73  sub handler { Line 72  sub handler {
     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();          $submitopener = &processpick();
         $autosubmit = 'process_pick("'.$roledom.'")';          $autosubmit = 'process_pick("'.$roledom.'")';
     }      }
   
     my $onlyown = 0;      my $onlyown = 0;
     # if called to assign course-based portfolio access control      # if called to assign course-based portfolio access control
     if ((($env{'form.form'} eq 'portform') && ($env{'user.adv'}))) {      if ((($env{'form.form'} eq 'portform') && (!$env{'user.adv'}))) {
         $onlyown = 1;          $onlyown = 1;
     }      }
   
     my %loaditem;      my %loaditem;
     if ($env{'form.form'} eq 'cu' && $env{'form.pickedcourse'}) {      if ((($env{'form.form'} eq 'cu') || ($env{'form.form'} eq 'studentform')) && 
           ($env{'form.pickedcourse'})) {
         $loaditem{'onload'} ="setSections()";          $loaditem{'onload'} ="setSections()";
     }      }
     $r->print(&Apache::loncommon::start_page($title,undef,      $r->print(&Apache::loncommon::start_page($title,undef,
Line 93  sub handler { Line 93  sub handler {
   
     if ($env{'form.form'} eq 'portform') {      if ($env{'form.form'} eq 'portform') {
         $lastaction = 'document.courselist.submit()';          $lastaction = 'document.courselist.submit()';
     } elsif ($env{'form.form'} eq 'cu') {      } elsif ($env{'form.form'} eq 'cu' || ($env{'form.form'} eq 'studentform' &&
           !$multiple)) {
         $lastaction =           $lastaction = 
              'document.courselist.pickedcourse.value = cdom+"_"+cname;'."\n".               'document.courselist.pickedcourse.value = cdom+"_"+cname;'."\n".
              'document.courselist.submit();';               'document.courselist.submit();';
Line 102  sub handler { Line 103  sub handler {
     }      }
   
     # if called to assign a role in a course to a user via CUSR      # if called to assign a role in a course to a user via CUSR
     if ($env{'form.form'} eq 'cu') {      if ($env{'form.form'} eq 'cu' || $env{'form.form'} eq 'studentform') {
         $r->print(&create_user_javascript($type));           $r->print(&create_user_javascript($type));
     }      }
   
     # print javascript functions for choosing a course       # print javascript functions for choosing a course 
     if ($env{'form.gosearch'} || $onlyown) {      if ($env{'form.gosearch'} || $onlyown) {
         $r->print(&gochoose_javascript($type,$autosubmit,$lastaction));          $r->print(&gochoose_javascript($type,$multiple,$autosubmit,$lastaction));
     }      }
     $r->print('<script type="text/javascript">'.$jscript.'</script>');      $r->print('<script type="text/javascript">'.$jscript.'</script>');
     $r->print($submitopener);      $r->print($submitopener);
   
 # ------------------------------------------ Display of filters to limit search  # ------------------------------------------ Display of filters to limit search
     my (%filter,%list);      my $filter = {};
       my $action = '/adm/pickcourse';
     if (!$onlyown) {      if (!$onlyown) {
         my $filterlist = ['domainfilter','descriptfilter',          my $filterlist = ['domainfilter','descriptfilter',
                           'instcodefilter','ownerfilter',                            'instcodefilter','ownerfilter',
Line 125  sub handler { Line 127  sub handler {
             push(@{$filterlist},'coursefilter');              push(@{$filterlist},'coursefilter');
         }          }
         $r->print(&build_filters($filterlist,$type,$roleelement,$multelement,          $r->print(&build_filters($filterlist,$type,$roleelement,$multelement,
                                  \%filter,\%list));                                   $filter,$action));
     }      }
   
 # ---------------------------------------------------------------- Get the data  # ---------------------------------------------------------------- Get the data
     if ($env{'form.gosearch'} || $onlyown) {      if ($env{'form.gosearch'} || $onlyown) {
         my %courses = &search_courses($r,$type,$onlyown,\%filter);          my %courses = &search_courses($r,$type,$onlyown,$filter);
         &display_matched_courses($r,$type,$multiple,%courses);          &display_matched_courses($r,$type,$multiple,$action,%courses);
     }      }
     $r->print(&Apache::loncommon::end_page());      $r->print(&Apache::loncommon::end_page());
     return OK;      return OK;
 }  }
   
   sub processpick {
       my $openerform = 'rolechoice';
       if ($env{'form.form'} eq 'studentform') {
           $openerform = $env{'form.form'};
       }
       my $process_pick = <<"ENDONE";
   <script type="text/javascript">
   function process_pick(dom) {
       var pickedCourse=opener.document.$openerform.$env{'form.cnumelement'}.value;
       var pickedDomain=opener.document.$openerform.$env{'form.cdomelement'}.value;
       var okDomain = 0;
   ENDONE
       if ($openerform eq 'rolechoice') {
           $process_pick .= <<"ENDTWO";
       if (pickedDomain == dom) {
           if (pickedCourse != '') {
               var courseTarget = "cc./"+pickedDomain+"/"+pickedCourse
               opener.document.title='Role selected. Please stand by.';
               opener.status='Role selected. Please stand by.';
               opener.document.rolechoice.newrole.value=courseTarget
               opener.document.rolechoice.submit();
           }
       } 
       else {
           alert("You may only use this screen to select courses in the current domain: "+dom+"\\nPlease return to the roles page window and click the 'Select Course' link for domain: "+pickedDomain+",\\n if you are a Domain Coordinator in that domain, and wish to become a Course Coordinator in a course in the domain");
       }
   ENDTWO
       } else {
           $process_pick .= <<"ENDTHREE";
       if (pickedDomain != dom) {
           alert("You may only use this screen to select courses in the current domain: "+dom+"\\nPlease return to the roles page window and click the 'Select Course' link for domain: "+pickedDomain+",\\n if you are a Domain Coordinator in that domain, and wish to become a Course Coordinator in a course in the domain");
           return;
       }
   ENDTHREE
       }
       $process_pick .= "
   }
   
   </script>
   ";
       return $process_pick;
   }
   
 sub create_user_javascript {  sub create_user_javascript {
     my ($type) = @_;      my ($type) = @_;
     my $output;      my $output;
Line 166  function setSections() { Line 211  function setSections() {
 }  }
   
 sub display_matched_courses {  sub display_matched_courses {
     my ($r,$type,$multiple,%courses) = @_;      my ($r,$type,$multiple,$action,%courses) = @_;
     my $action = '/adm/pickcourse';  
     if ($env{'form.form'} eq 'portform') {      if ($env{'form.form'} eq 'portform') {
         $action = '/adm/portfolio';          $action = '/adm/portfolio';
     }      }
       my $numcourses = keys(%courses);
     $r->print('<form name="courselist" method="post" action="'.$action.'">');      $r->print('<form name="courselist" method="post" action="'.$action.'">');
       if ($env{'form.form'} eq 'modifycourse') {
           if ($numcourses > 0) {
               my $cctitle = &Apache::lonnet::plaintext('cc',$type);
               my $dctitle = &Apache::lonnet::plaintext('dc');
               my $ccrolechk = ' checked="checked" ';
               my $menuchk = ' ';
               if ($env{'form.prevphase'} ne '') {
                    $ccrolechk = ' ';
                    $menuchk = ' checked="checked" ';
               }
               $r->print(
                   '<table class="LC_pick_box">'.
                   '<tr class="LC_pick_box_row">'.
                   '<td class="LC_pick_box_title" rowspan="2">'.&mt('Action').'</td>'.
                   '<td class="LC_evenrow_value">'.
                   '<span class="LC_nobreak"><label>'.
                   '<input type="radio" name="phase" value="ccrole"'.$ccrolechk.'/>'.
                   '&nbsp;'.&mt('Enter the course with the role of [_1].',$cctitle).
                   '</label>'.('&nbsp;'x3).'</span>'.
                   '</td></tr>'.
                   '<tr class="LC_pick_box_row">'.
                   '<td class="LC_oddrow_value">'.
                   '<span class="LC_nobreak"><label>'.
                   '<input type="radio" name="phase" value="menu"'.$menuchk.'/>&nbsp;'.
                   &mt('View or modify course settings which only a [_1] may modify.',$dctitle).
                   '</label></span>'.
                   '</td></tr></table>'.
                   '<br />');
           }
       }
     my %by_descrip;      my %by_descrip;
     my $numcourses = keys(%courses);  
     foreach my $course (keys(%courses)) {      foreach my $course (keys(%courses)) {
         my $descr;          my $descr;
         if ($courses{$course} =~ m/^([^:]*):/i) {          if (ref($courses{$course}) eq 'HASH') {
               $descr = $courses{$course}{'description'};
           } elsif ($courses{$course} =~ m/^([^:]*):/i) {
             $descr = &unescape($1);              $descr = &unescape($1);
         } else {          } else {
             $descr = &unescape($courses{$course});              $descr = &unescape($courses{$course});
Line 184  sub display_matched_courses { Line 260  sub display_matched_courses {
         my $description = $descr;          my $description = $descr;
         push (@{$by_descrip{$description}}, $course);          push (@{$by_descrip{$description}}, $course);
     }      }
    
     if ($numcourses > 1 && $multiple) {      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)" />                    onclick="javascript:checkAll(document.courselist.course_id)" />
Line 191  sub display_matched_courses { Line 268  sub display_matched_courses {
                   onclick="javascript:uncheckAll(document.courselist.course_id)" />                    onclick="javascript:uncheckAll(document.courselist.course_id)" />
                   <br /><br />');                    <br /><br />');
     }      }
   
       if (%courses) {
           $r->print(&Apache::loncommon::start_data_table());
           $r->print(&Apache::loncommon::start_data_table_header_row());
           $r->print('<th>'.&mt('Select').'</th>'
                    .'<th>'.&mt('Course Description').'</th>'
                    .'<th>'.&mt('Domain').'</th>'
                    .'<th>'.&mt('Course Code').'</th>'
                    .'<th>'.&mt('Owner/Co-owner(s)').'</th>'
   #                 .'<th>'.&mt('Type').'</th>'
                    );
           $r->print(&Apache::loncommon::end_data_table_header_row());
       }
     foreach my $description (sort { lc($a) cmp lc($b) } (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}}) {
               $r->print(&Apache::loncommon::start_data_table_row());
             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,$ttype) = split/:/,$courses{$course};              my ($descr,$instcode,$ttype,@owners);
             $r->print(&course_chooser($multiple,$cdom,$cnum,$cleandesc));              if (ref($courses{$course}) eq 'HASH') {
             $r->print($description.'('.                  $descr = $courses{$course}{'description'};
                       ($Apache::lonnet::domaindescription{$cdom}?                  $instcode =  $courses{$course}{'inst_code'};
                        $Apache::lonnet::domaindescription{$cdom}:$cdom).")");                  $ttype =  $courses{$course}{'type'};
             unless ($instcode eq '') {                  push(@owners,&unescape($courses{$course}{'owner'}));
                 $r->print(" - ".&unescape($instcode));                  if (ref($courses{$course}{'co-owners'}) eq 'ARRAY') {
             }                      foreach my $item (@{$courses{$course}{'co-owners'}}) {
             unless ($owner eq '') {                          push(@owners,&unescape($item));
                 $r->print(", owner - ".&unescape($owner));                      }
                   }
               } else {
                   my $singleowner; 
                   ($descr,$instcode,$singleowner,$ttype)=split(/:/,$courses{$course});
                   push(@owners,&unescape($singleowner));
             }              }
             unless ($ttype eq '') {              my $ownerstr = join(', ',@owners);
                 $r->print('('.&unescape($ttype).')');              $r->print('<td>'.&course_chooser($multiple,$cdom,$cnum,$cleandesc).'</td>');
               $r->print('<td>'.$description.'</td>');
               $r->print('<td>');
               $r->print(&Apache::lonnet::domain($cdom,'description')?
                         $cdom.' ('.&Apache::lonnet::domain($cdom,'description').')':$cdom);
               $r->print('</td>');
               $r->print('<td>');
               if ($instcode ne '') {
                   $r->print(&unescape($instcode));
               } else {
                   $r->print('&nbsp;');
             }              }
               $r->print('</td>');
               $r->print('<td>'.$ownerstr.'</td>');
   #            $r->print('<td>');
   #            if ($ttype ne '') {
   #                $r->print(&mt(&unescape($ttype)));
   #            } else {
   #                $r->print('&nbsp;');
   #            }
   #            $r->print('</td>');
             if ($multiple) { $r->print("</label>\n"); }              if ($multiple) { $r->print("</label>\n"); }
             $r->print("<br />\n");              $r->print(&Apache::loncommon::end_data_table_row());
               # $r->print("<br />\n");
         }          }
     }      }
       if (%courses) {
           $r->print(&Apache::loncommon::end_data_table());
       }
   
     if (!%courses) {      if (!%courses) {
         $r->print(&mt('None found'));          $r->print(&mt('None found'));
     } elsif ($multiple) {      } elsif ($multiple) {
         $r->print('<input type="button" value="Submit" onClick="gochoose('."'','','',1)".'" />');          $r->print('<input type="button" value="Submit" onClick="gochoose('."'','','')".'" />');
     }      }
     $r->print('<input type="hidden" name="form" value="'.$env{'form.form'}.'" />'.      $r->print('<input type="hidden" name="form" value="'.$env{'form.form'}.'" />'.
               "\n".'<input type="hidden" name="pickedcourse" value="" />'."\n".                "\n".'<input type="hidden" name="pickedcourse" value="" />'."\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="type" value="'.$type.'" />'."\n");                '<input type="hidden" name="type" value="'.$type.'" />'."\n");
     if ((exists($env{'form.roleelement'})) && ($env{'form.form'} eq 'rolechoice')) {      if ((exists($env{'form.roleelement'})) && ($env{'form.form'} eq 'rolechoice')) {
         $r->print('<input type="hidden" name="roleelement" value="'.          $r->print('<input type="hidden" name="roleelement" value="'.
Line 233  sub display_matched_courses { Line 351  sub display_matched_courses {
         $r->print('<input type="hidden" name="cdom" value="" />');          $r->print('<input type="hidden" name="cdom" value="" />');
         $r->print('<input type="hidden" name="setroles" value="'.$env{'form.setroles'}.'" />');          $r->print('<input type="hidden" name="setroles" value="'.$env{'form.setroles'}.'" />');
         $r->print('<input type="hidden" name="action" value="rolepicker" />');          $r->print('<input type="hidden" name="action" value="rolepicker" />');
       } elsif ($env{'form.form'} eq 'modifycourse') {
           $r->print(&Apache::lonhtmlcommon::echo_form_input(['phase','pickedcourse','type','form']));
       } else {
           $r->print('<input type="hidden" name="cnumelement" value="'.
                     $env{'form.cnumelement'}.'" />'."\n".  
                     '<input type="hidden" name="cdomelement" value="'.
                     $env{'form.cdomelement'}.'" />'."\n");
     }      }
     $r->print("</form>\n");      $r->print("</form>\n");
     return;      return;
Line 246  sub multiples_tag { Line 371  sub multiples_tag {
 }  }
   
 sub build_filters {  sub build_filters {
     my ($filterlist,$type,$roleelement,$multelement,$filter) = @_;      my ($filterlist,$type,$roleelement,$multelement,$filter,$action,
           $caller) = @_;
     my $list;      my $list;
       my $formname;
       if (defined($env{'form.form'})) {
            $formname = $env{'form.form'};
       } else {
            $formname = $caller;
       }
     my ($domainselectform,$sincefilterform,$ownerdomselectform,      my ($domainselectform,$sincefilterform,$ownerdomselectform,
         $instcodeform,$typeselectform);          $instcodeform,$typeselectform);
     foreach my $item (@{$filterlist}) {      foreach my $item (@{$filterlist}) {
         $filter->{$item} = $env{'form.'.$item};          $filter->{$item} = $env{'form.'.$item};
         if ($item ne 'descriptfilter' && $item ne 'instcodefilter') {          if ($item ne 'descriptfilter' && $item ne 'instcodefilter') {
             $filter->{$item} =~ s/\W//g;      if ($item eq 'domainfilter' || $item eq 'ownerdomfilter') {
    $filter->{$item} = &LONCAPA::clean_domain($filter->{$item});
       } elsif ($item eq 'coursefilter') {
    $filter->{$item} = &LONCAPA::clean_courseid($filter->{$item});
       } elsif ($item eq 'ownerfilter') {
    $filter->{$item} = &LONCAPA::clean_username($filter->{$item});
       } else {
    $filter->{$item} =~ s/\W//g;
       }
             if (!$filter->{$item}) {              if (!$filter->{$item}) {
                 $filter->{$item} = '';                  $filter->{$item} = '';
             }              }
         }          }
         if ($item eq 'domainfilter') {          if ($item eq 'domainfilter') {
       my $allow_blank = 1;
       if ($formname eq 'portform') {
    $filter->{$item} ||= $env{'user.domain'};
    $allow_blank=0;
       } elsif ($formname eq 'studentform') {
                   $filter->{$item} ||= $env{'request.role.domain'};
                   $allow_blank=0;
               }
             $domainselectform =              $domainselectform =
      &Apache::loncommon::select_dom_form($filter->{$item},'domainfilter',1);   &Apache::loncommon::select_dom_form($filter->{$item},
       'domainfilter',
       $allow_blank);
         } elsif ($item eq 'ownerdomfilter') {          } elsif ($item eq 'ownerdomfilter') {
             $ownerdomselectform =              $ownerdomselectform =
      &Apache::loncommon::select_dom_form($filter->{$item},'ownerdomfilter',1);       &Apache::loncommon::select_dom_form($filter->{$item},'ownerdomfilter',1);
Line 286  sub build_filters { Line 436  sub build_filters {
                       '15552000','31104000']));                        '15552000','31104000']));
   
     my %lt = (      my %lt = (
               'cac' => &mt('[_1] Activity',$type),                'cac' => &mt("$type Activity"),
               'cde' => &mt('[_1] Description',$type),                'cde' => &mt("$type Description"),
               'cdo' => &mt('[_1] Domain',$type),                'cdo' => &mt("$type Domain"),
               'cin' => &mt('Course Institutional Code'),                'cin' => &mt('Course Institutional Code'),
               'cow' => &mt("[_1] Owner's Username",$type),                'cow' => &mt("$type Owner's Username"),
               'cod' => &mt("[_1] Owner's Domain", $type),                'cod' => &mt("$type Owner's Domain"),
               'cog' => &mt('Course Type')                'cog' => &mt('Course Type')
              );               );
   
     $typeselectform =  '<select name="type" size="1"';      $typeselectform =  '<select name="type" size="1">'."\n";
     $typeselectform .= ">\n";  
     if ($type eq 'Course') {      if ($type eq 'Course') {
         $instcodeform = $lt{'cin'}.': <input type="text" name="instcodefilter"          $instcodeform = 
  size="10" value="'.$list->{'instcodefilter'}.'" /><br />';                  '<input type="text" name="instcodefilter" size="10" value="'.
     }                  $list->{'instcodefilter'}.'" />';
     foreach my $posstype ('Course','Non-standard course') {      }
         $typeselectform.='<option value="'.$posstype.'" "'.      foreach my $posstype ('Course','Non-standard Course') {
             ($posstype eq $type ? 'selected="selected" ' : ''). ">$posstype</option>\n";          $typeselectform.='<option value="'.$posstype.'"'.
               ($posstype eq $type ? ' selected="selected" ' : ''). ">".&mt($posstype)."</option>\n";
     }      }
     $typeselectform.="</select>";      $typeselectform.="</select>";
     my $name_input;      my $output = qq|
     if ($env{'form.cnameelement'} ne '') {  <form method="post" name="filterpicker" action="$action">
         $name_input ='<input type="hidden" name="cnameelement" value="'.  <input type="hidden" name="form" value="$formname" />
                      $env{'form.cnameelement'}.'" />';  |;
     }      if ($formname eq 'modifycourse') {
     my $courseidtag;          $output .= '<input type="hidden" name="phase" value="courselist" />'."\n".
     if (exists($filter->{'coursefilter'})) {                     '<input type="hidden" name="prevphase" value="'.
         $courseidtag=&mt('LON-CAPA course ID').                     $env{'form.prevphase'}.'" />'."\n";
                      '<input type="text" name="coursefilter" size="25" value="'.                     $list->{'coursefilter'}.'" /><br />';      } else {
     }          my $name_input;
     my $output = <<"END";          if ($env{'form.cnameelement'} ne '') {
 <form method="post" name="filterpicker" action="/adm/pickcourse">              $name_input = '<input type="hidden" name="cnameelement" value="'.
                             $env{'form.cnameelement'}.'" />';
           }
           $output .= qq|
 <input type="hidden" name="cnumelement" value="$env{'form.cnumelement'}" />  <input type="hidden" name="cnumelement" value="$env{'form.cnumelement'}" />
 <input type="hidden" name="cdomelement" value="$env{'form.cdomelement'}" />  <input type="hidden" name="cdomelement" value="$env{'form.cdomelement'}" />
 $name_input  $name_input
 <input type="hidden" name="form" value="$env{'form.form'}" />  
 $roleelement  $roleelement
 $multelement  $multelement
 $lt{'cac'}: $sincefilterform  |;
 <br />          if ($formname eq 'portform') {
 $lt{'cdo'}: $domainselectform              $output .= '<input type="hidden" name="setroles" value="'.$env{'form.setroles'}.'" />';
 <br />          }
 $lt{'cog'}: $typeselectform      }
 <br />      if ($sincefilterform) { 
 $instcodeform          $output .= $lt{'cac'}.': '.$sincefilterform.'<br />'."\n";
 $lt{'cow'}:      }
 <input type="text" name="ownerfilter" size="10" value="$list->{'ownerfilter'}" />      if ($domainselectform) {
 <br />          $output .= $lt{'cdo'}.': '.$domainselectform.'<br />'."\n";
 $lt{'cod'}: $ownerdomselectform      }
 <br />  #    if ($typeselectform) {
 $courseidtag  #        $output .= $lt{'cog'}.': '.$typeselectform.'<br />'."\n";
 $lt{'cde'}:  #    }
 <input type="text" name="descriptfilter" size="40" value="$list->{'descriptfilter'}" />      if ($instcodeform) {
 <p><input type="submit" name="gosearch" value="Search" /></p>          $output .= $lt{'cin'}.': '.$instcodeform.'<br />'."\n";
 </form>      }
 <hr />      if (exists($filter->{'ownerfilter'})) {
 END          $output .= $lt{'cow'}.': '.
                      '<input type="text" name="ownerfilter" size="10" value="'.
                      $list->{'ownerfilter'}.'" /><br />'."\n".
                      $lt{'cod'}.': '.$ownerdomselectform.'<br />'."\n";
       }
       if (exists($filter->{'coursefilter'})) {
           $output .= &mt('LON-CAPA course ID').': '.
                      '<input type="text" name="coursefilter" size="25" value="'.
                       $list->{'coursefilter'}.'" /><br />';
       }
       if (exists($filter->{'descriptfilter'})) {
           $output .=$lt{'cde'}.': '.
                     '<input type="text" name="descriptfilter" size="40" value="'.
                     $list->{'descriptfilter'}.'" />'."\n";
       }
       $output .= '<p><input type="submit" name="gosearch" value="'. 
                  &mt('Search').'" /></p>'."\n".'</form>'."\n".'<hr />'."\n";
     return $output;       return $output; 
 }  }
   
Line 350  sub search_courses { Line 518  sub search_courses {
     my ($r,$type,$onlyown,$filter) = @_;      my ($r,$type,$onlyown,$filter) = @_;
     my %courses;      my %courses;
     if (!$onlyown) {      if (!$onlyown) {
         $r->print(&mt('Searching').' ...<br />&nbsp;<br />');          $r->print(&mt('Searching ...').'<br />&nbsp;<br />');
         $r->rflush();          $r->rflush();
         if (($filter->{'ownerfilter'} ne '') ||          if (($filter->{'ownerfilter'} ne '') ||
             ($filter->{'ownerdomfilter'} ne '')) {              ($filter->{'ownerdomfilter'} ne '')) {
Line 376  sub search_courses { Line 544  sub search_courses {
                                           undef,undef,$type);                                            undef,undef,$type);
     } else {      } else {
         $r->print('<br />');          $r->print('<br />');
         foreach my $cid (sort(&Apache::loncommon::findallcourses())) {          my %coursehash = &Apache::loncommon::findallcourses(); 
             $courses{$cid} = $env{'course.'.$cid.'.description'};          foreach my $cid (sort(keys(%coursehash))) {
               $courses{$cid}{'description'} = $env{'course.'.$cid.'.description'};
         }          }
     }      }
     return %courses;      return %courses;
Line 389  sub course_chooser { Line 558  sub course_chooser {
     if ($multiple) {      if ($multiple) {
         $output = '<label><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="'.&mt('Select').'" onClick="gochoose('.
                   "'".$cnum."','".$cdom."','".$cleandesc."')".'" />'."\n";                    "'".$cnum."','".$cdom."','".$cleandesc."')".'" />'."\n";
     }      }
     return $output;      return $output;
 }  }
   
 sub gochoose_javascript {  sub gochoose_javascript {
     my ($type,$autosubmit,$lastaction) = @_;      my ($type,$multiple,$autosubmit,$lastaction) = @_;
     my %elements = (      my %elements = (
                      'Course' => {                       'Course' => {
                                  name  => 'coursepick',                                   name  => 'coursepick',
                                  total => 'coursetotal',                                   total => 'coursetotal',
                                  list  => 'courselist',                                   list  => 'courselist',
                                  },                                   },
                      'Non-standard course' => {                       'Non-standard Course' => {
                                  name  => 'grouppick',                                   name  => 'grouppick',
                                  total => 'grouptotal',                                   total => 'grouptotal',
                                  list  => 'grouplist',                                   list  => 'grouplist',
                               },                                },
                     );                      );
     my $name_code;      my $output .= qq|
     if ($env{'form.cnameelement'} ne '') {  
         $name_code = 'opener.document.'.$env{'form.form'}.'.'.  
                       $env{'form.cnameelement'}.'.value=cdesc;';  
     }  
     my $output .= <<"ENDSCRIPT";  
 <script type="text/javascript">  <script type="text/javascript">
 function gochoose(cname,cdom,cdesc,multiple,caller) {  function gochoose(cname,cdom,cdesc) {
     var openerForm = "$env{'form.form'}";      var openerForm = "$env{'form.form'}";
     courseCount = 0;      courseCount = 0;
     var courses = '';      var courses = '';
     if (multiple) {  |;
         if (typeof(document.courselist.course_id.length) == 'undefined') {      if ($multiple) {
             // only 1 course checkbox was created          $output .= <<"ENDSCRIPT";
             if (document.courselist.course_id.checked) {      courseCount = 0;
                 courses = courses + document.courselist.course_id.value + "&&";      var courses = '';
       if (typeof(document.courselist.course_id.length) == 'undefined') {
           // only 1 course checkbox was created
           if (document.courselist.course_id.checked) {
               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 ++;                  courseCount ++;
             }              }
           }
       }
       opener.document.$env{'form.form'}.$elements{$type}{'total'}.value = courseCount;
       if (typeof(opener.document.$env{'form.form'}.$elements{$type}{'name'}.length) ==
           'undefined') {
           if (opener.document.$env{'form.form'}.$elements{$type}{'name'}.value == 'specific') {
               opener.document.$env{'form.form'}.$elements{$type}{'name'}.checked = true;
         } else {          } else {
             for (var j=0; j<document.courselist.course_id.length; j++) {              opener.document.$env{'form.form'}.$elements{$type}{'name'}.checked = false;
                 if (document.courselist.course_id[j].checked) {  
                     courses = courses + document.courselist.course_id[j].value + "&&";  
                     courseCount ++;  
                 }  
             }  
         }          }
         opener.document.$env{'form.form'}.$elements{$type}{'total'}.value = courseCount;      } else {
         if (typeof(opener.document.$env{'form.form'}.$elements{$type}{'name'}.length) ==          for (var j=0; j<opener.document.$env{'form.form'}.$elements{$type}{'name'}.length; j++) {
             'undefined') {              if (opener.document.$env{'form.form'}.$elements{$type}{'name'}\[j].value == 'specific') {
             if (opener.document.$env{'form.form'}.$elements{$type}{'name'}.value == 'specific') {                  opener.document.$env{'form.form'}.$elements{$type}{'name'}\[j].checked = true;
                 opener.document.$env{'form.form'}.$elements{$type}{'name'}.checked = true;  
             } else {              } else {
                 opener.document.$env{'form.form'}.$elements{$type}{'name'}.checked = false;                  opener.document.$env{'form.form'}.$elements{$type}{'name'}\[j].checked = false;
             }  
         } else {  
             for (var j=0; j<opener.document.$env{'form.form'}.$elements{$type}{'name'}.length; j++) {  
                 if (opener.document.$env{'form.form'}.$elements{$type}{'name'}\[j].value == 'specific') {  
                     opener.document.$env{'form.form'}.$elements{$type}{'name'}\[j].checked = true;  
                 } else {  
                     opener.document.$env{'form.form'}.$elements{$type}{'name'}\[j].checked = false;  
                 }  
             }              }
         }          }
         if (courseCount > 0) {      }
             courses = courses.substr(0,courses.length-2);      if (courseCount > 0) {
             opener.document.$env{'form.form'}.$elements{$type}{'list'}.value = courses;          courses = courses.substr(0,courses.length-2);
         }          opener.document.$env{'form.form'}.$elements{$type}{'list'}.value = courses;
       }
   ENDSCRIPT
     } else {      } else {
           my $name_code;
           if ($env{'form.cnameelement'} ne '') {
               $name_code = 'opener.document.'.$env{'form.form'}.'.'.
                             $env{'form.cnameelement'}.'.value=cdesc;';
           }
           $output .= qq|
         $name_code          $name_code
         opener.document.$env{'form.form'}.$env{'form.cnumelement'}.value=cname;          opener.document.$env{'form.form'}.$env{'form.cnumelement'}.value=cname;
         var slct=opener.document.$env{'form.form'}.$env{'form.cdomelement'};          var slct=opener.document.$env{'form.form'}.$env{'form.cdomelement'};
Line 469  function gochoose(cname,cdom,cdesc,multi Line 644  function gochoose(cname,cdom,cdesc,multi
                 if (slct.options[i].value==cdom) { slct.selectedIndex=i; }                  if (slct.options[i].value==cdom) { slct.selectedIndex=i; }
             }              }
         }          }
   |;
     }      }
       $output .= qq|
     if (openerForm == 'portform') {      if (openerForm == 'portform') {
         document.courselist.cnum.value = cname;          document.courselist.cnum.value = cname;
         document.courselist.cdom.value = cdom;          document.courselist.cdom.value = cdom;
Line 478  function gochoose(cname,cdom,cdesc,multi Line 655  function gochoose(cname,cdom,cdesc,multi
     $lastaction      $lastaction
 }  }
 </script>  </script>
 ENDSCRIPT  |;
     return $output;      return $output;
 }  }
   
Line 512  Course Activity - how recently was cours Line 689  Course Activity - how recently was cours
 Course Domain - the domain of the course  Course Domain - the domain of the course
   
 =item *  =item *
 Course Type - Course or Non-standard course  Course Type - Course or Non-standard Course
   
 =item *  =item *
 Course Institutional Code - the institutional identifier assigned to the course  Course Institutional Code - the institutional identifier assigned to the course
Line 565  Following selection, and/or submission, Line 742  Following selection, and/or submission,
 X<create_user_javascript()>  X<create_user_javascript()>
 B<create_user_javascript($type)>:  B<create_user_javascript($type)>:
   
 Input: 1 - $type  - the course type - Course or Non-standard course  Input: 1 - $type  - the course type - Course or Non-standard Course
   
 Output: 1 - $output - javascript wrapped in E<lt>scriptE<gt>E<lt>/scriptE<gt> tags   Output: 1 - $output - javascript wrapped in E<lt>scriptE<gt>E<lt>/scriptE<gt> tags 
   
Line 576  javascript code for reporting selected s Line 753  javascript code for reporting selected s
   
 =item *  =item *
 X<display_matched_courses()>  X<display_matched_courses()>
 B<display_matched_courses($r,$type,$multiple,%courses)>:  B<display_matched_courses($r,$type,$multiple,$action,%courses)>:
   
 Input: 4 - request object, course type, multiple (0 or 1), hash of courses.  Input: 5 - request object, course type, multiple (0 or 1), form action; hash of courses.
   
 Output: 0  Output: 0
   
Line 597  Side Effects: None Line 774  Side Effects: None
   
 =item *  =item *
 X<build_filters()>  X<build_filters()>
 B<build_filters($filterlist,$type,$roleelement,$multelement,$filter)>:  B<build_filters($filterlist,$type,$roleelement,$multelement,$filter,$action)>:
   
   
 Input: 5 - anonymous array of search criteria; course type; $roleelement ; $multelement ; anonymous hash of criteria and their values.  Input: 6 - anonymous array of search criteria; course type; $roleelement ; $multelement ; anonymous hash of criteria and their values; form action.
   
 Output: 1 - $output - HTML for display of search criteria, and hidden form elements.   Output: 1 - $output - HTML for display of search criteria, and hidden form elements. 
   
Line 631  Side Effects: None Line 808  Side Effects: None
   
 =item *  =item *
 X<gochoose_javascript()>  X<gochoose_javascript()>
 B<gochoose_javascript($type,$autosubmit,$lastaction)>:  B<gochoose_javascript($type,$multiple,$autosubmit,$lastaction)>:
   
 Input: 3 - course type; in context of DC selecting a CC role in a course: javascript code from Apache::lonroles::processpick(); final action to take after user chooses course(s):  either close window, or submit form for display of next page etc.  Input: 4 - course type; single (0) or multiple courses (1); in context of DC selecting a CC role in a course: javascript code from &processpick(); final action to take after user chooses course(s):  either close window, or submit form for display of next page etc.
   
 Output: 1  $output - javascript wrapped in E<lt>scriptE<gt>E<lt>/scriptE<gt> tags  Output: 1  $output - javascript wrapped in E<lt>scriptE<gt>E<lt>/scriptE<gt> tags
   

Removed from v.1.55  
changed lines
  Added in v.1.73.2.4


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