Diff for /loncom/interface/lonpickcourse.pm between versions 1.73.2.2 and 1.78

version 1.73.2.2, 2008/07/01 05:26:04 version 1.78, 2009/05/01 01:38:20
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 Apache::courseclassifier;
 use LONCAPA;  use LONCAPA;
   
 sub handler {  sub handler {
Line 49  sub handler { Line 50  sub handler {
     &Apache::loncommon::get_unprocessed_cgi      &Apache::loncommon::get_unprocessed_cgi
         ($ENV{'QUERY_STRING'},['domainfilter','form','cnumelement',          ($ENV{'QUERY_STRING'},['domainfilter','form','cnumelement',
        'cdomelement','cnameelement','roleelement',         'cdomelement','cnameelement','roleelement',
                                'multiple','type','setroles']);                                 'multiple','type','setroles','fixeddom']);
   
     my ($type,$title,$jscript,$multelement,$multiple,$roleelement,      my ($type,$title,$jscript,$multelement,$multiple,$roleelement,
         $lastaction,$autosubmit,$submitopener);          $lastaction,$autosubmit,$submitopener);
Line 83  sub handler { Line 84  sub handler {
     }      }
   
     my %loaditem;      my %loaditem;
       if ($env{'form.numtitles'}) {
           $loaditem{'onload'} = 'setElements(); ';
       }
   
     if ((($env{'form.form'} eq 'cu') || ($env{'form.form'} eq 'studentform')) &&       if ((($env{'form.form'} eq 'cu') || ($env{'form.form'} eq 'studentform')) && 
         ($env{'form.pickedcourse'})) {          ($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,
      {'add_entries' => \%loaditem,       {'add_entries' => \%loaditem,
Line 117  sub handler { Line 122  sub handler {
 # ------------------------------------------ Display of filters to limit search  # ------------------------------------------ Display of filters to limit search
     my $filter = {};      my $filter = {};
     my $action = '/adm/pickcourse';      my $action = '/adm/pickcourse';
       my $numtitles;
     if (!$onlyown) {      if (!$onlyown) {
         my $filterlist = ['domainfilter','descriptfilter',          my $filterlist = ['domainfilter','descriptfilter',
                           'instcodefilter','ownerfilter',                            'instcodefilter','ownerfilter',
Line 127  sub handler { Line 133  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,$action));                                   $filter,$action,\$numtitles));
     }      }
   
 # ---------------------------------------------------------------- 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,$numtitles);
         &display_matched_courses($r,$type,$multiple,$action,%courses);          &display_matched_courses($r,$type,$multiple,$action,%courses);
     }      }
     $r->print(&Apache::loncommon::end_page());      $r->print(&Apache::loncommon::end_page());
Line 228  sub display_matched_courses { Line 234  sub display_matched_courses {
                  $menuchk = ' checked="checked" ';                   $menuchk = ' checked="checked" ';
             }              }
             $r->print(              $r->print(
                 '<table class="LC_pick_box">'.                  '<fieldset>'
                 '<tr class="LC_pick_box_row">'.                 .'<legend>'.&mt('Action').'</legend>'
                 '<td class="LC_pick_box_title" rowspan="2">'.&mt('Action').'</td>'.                 .'<div class="LC_nobreak"><label>'
                 '<td class="LC_evenrow_value">'.                 .'<input type="radio" name="phase" value="ccrole"'.$ccrolechk.'/>'
                 '<span class="LC_nobreak"><label>'.                 .'&nbsp;'.&mt('Enter the course with the role of [_1].',$cctitle)
                 '<input type="radio" name="phase" value="ccrole"'.$ccrolechk.'/>'.                 .'</label></div>'
                 '&nbsp;'.&mt('Enter the course with the role of [_1].',$cctitle).                 .'<div class="LC_nobreak"><label>'
                 '</label>'.('&nbsp;'x3).'</span>'.                 .'<input type="radio" name="phase" value="menu"'.$menuchk.'/>&nbsp;'
                 '</td></tr>'.                 .&mt('View or modify course settings which only a [_1] may modify.',$dctitle)
                 '<tr class="LC_pick_box_row">'.                 .'</label></div>'
                 '<td class="LC_oddrow_value">'.                 .'</fieldset>'
                 '<span class="LC_nobreak"><label>'.                 .'<br />'
                 '<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;
Line 273  sub display_matched_courses { Line 275  sub display_matched_courses {
         $r->print(&Apache::loncommon::start_data_table());          $r->print(&Apache::loncommon::start_data_table());
         $r->print(&Apache::loncommon::start_data_table_header_row());          $r->print(&Apache::loncommon::start_data_table_header_row());
         $r->print('<th>'.&mt('Select').'</th>'          $r->print('<th>'.&mt('Select').'</th>'
                  .'<th>'.&mt('Course Description').'</th>'                   .'<th>'.&mt('Course Title').'</th>'
                  .'<th>'.&mt('Domain').'</th>'                   .'<th>'.&mt('Domain').'</th>'
                  .'<th>'.&mt('Course Code').'</th>'                   .'<th>'.&mt('Course Code').'</th>'
                  .'<th>'.&mt('Owner/Co-owner(s)').'</th>'                   .'<th>'.&mt('Owner/Co-owner(s)').'</th>'
 #                 .'<th>'.&mt('Type').'</th>'                   .'<th>'.&mt('Type').'</th>'
                  );                   );
         $r->print(&Apache::loncommon::end_data_table_header_row());          $r->print(&Apache::loncommon::end_data_table_header_row());
     }      }
Line 318  sub display_matched_courses { Line 320  sub display_matched_courses {
             }              }
             $r->print('</td>');              $r->print('</td>');
             $r->print('<td>'.$ownerstr.'</td>');              $r->print('<td>'.$ownerstr.'</td>');
 #            $r->print('<td>');              $r->print('<td>');
 #            if ($ttype ne '') {              if ($ttype ne '') {
 #                $r->print(&mt(&unescape($ttype)));                  $r->print(&mt(&unescape($ttype)));
 #            } else {              } else {
 #                $r->print('&nbsp;');                  $r->print('&nbsp;');
 #            }              }
 #            $r->print('</td>');              $r->print('</td>');
             if ($multiple) { $r->print("</label>\n"); }              if ($multiple) { $r->print("</label>\n"); }
             $r->print(&Apache::loncommon::end_data_table_row());              $r->print(&Apache::loncommon::end_data_table_row());
             # $r->print("<br />\n");              # $r->print("<br />\n");
Line 352  sub display_matched_courses { Line 354  sub display_matched_courses {
         $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') {      } elsif ($env{'form.form'} eq 'modifycourse') {
         $r->print(&Apache::lonhtmlcommon::echo_form_input(['phase','pickedcourse','type','form']));          $r->print(&Apache::lonhtmlcommon::echo_form_input(['phase','pickedcourse','type','form','numtitles','state']));
     } else {      } else {
         $r->print('<input type="hidden" name="cnumelement" value="'.          $r->print('<input type="hidden" name="cnumelement" value="'.
                   $env{'form.cnumelement'}.'" />'."\n".                      $env{'form.cnumelement'}.'" />'."\n".  
                   '<input type="hidden" name="cdomelement" value="'.                    '<input type="hidden" name="cdomelement" value="'.
                   $env{'form.cdomelement'}.'" />'."\n");                    $env{'form.cdomelement'}.'" />'."\n");
     }      }
       if ((exists($env{'form.fixeddom'})) && ($env{'form.form'} eq 'rules')) {
           $r->print('<input type="hidden" name="fixeddom" value="'.
                     $env{'form.fixeddom'}.'" />');
       }
       if ($env{'form.numtitles'}) {
           $r->print('<input type="hidden" name="numtitles" value="'.
                     $env{'form.numtitles'}.'" />');
       }
     $r->print("</form>\n");      $r->print("</form>\n");
     return;      return;
 }  }
   
   
 sub multiples_tag {  sub multiples_tag {
     my $jscript = &Apache::loncommon::check_uncheck_jscript();      my $jscript = &Apache::loncommon::check_uncheck_jscript();
     my $multelement = '<input type="hidden" name="multiple" value="1" />';      my $multelement = '<input type="hidden" name="multiple" value="1" />';
Line 372  sub multiples_tag { Line 381  sub multiples_tag {
   
 sub build_filters {  sub build_filters {
     my ($filterlist,$type,$roleelement,$multelement,$filter,$action,      my ($filterlist,$type,$roleelement,$multelement,$filter,$action,
         $caller) = @_;          $numtitlesref) = @_;
     my $list;      my $list;
     my $formname;      my $formname;
       my ($fixeddom,$codedom,$jscript);
     if (defined($env{'form.form'})) {      if (defined($env{'form.form'})) {
          $formname = $env{'form.form'};           $formname = $env{'form.form'};
     } else {  
          $formname = $caller;  
     }      }
     my ($domainselectform,$sincefilterform,$ownerdomselectform,      my ($domainselectform,$sincefilterform,$ownerdomselectform,
         $instcodeform,$typeselectform);          $instcodeform,$typeselectform,$instcodetitle);
     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') {
Line 407  sub build_filters { Line 415  sub build_filters {
                 $filter->{$item} ||= $env{'request.role.domain'};                  $filter->{$item} ||= $env{'request.role.domain'};
                 $allow_blank=0;                  $allow_blank=0;
             }              }
             $domainselectform =              if ($env{'form.fixeddom'}) {
  &Apache::loncommon::select_dom_form($filter->{$item},                  $domainselectform = '<input type="hidden" name="domainfilter"'.
     'domainfilter',                                      'value="'.$env{'request.role.domain'}.'" />'.
     $allow_blank);                                      &Apache::lonnet::domain($env{'request.role.domain'},
                                                               'description');
                   $codedom = $env{'request.role.domain'};
               } else {    
                   $domainselectform =
       &Apache::loncommon::select_dom_form($filter->{$item},
               'domainfilter',
           $allow_blank);
                   $codedom = $filter->{'domainfilter'};
               }
         } 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 436  sub build_filters { Line 453  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 Title"),
               'cdo' => &mt('[_1] Domain',$type),                'cdo' => &mt("$type Domain"),
               'cin' => &mt('Course Institutional Code'),                'ins' => &mt('Institutional Code'),
               'cow' => &mt("[_1] Owner's Username",$type),                'inc' => &mt('Institutional Categorization'),
               'cod' => &mt("[_1] Owner's Domain", $type),                'cow' => &mt("$type Owner's Username"),
                 'cod' => &mt("$type Owner's Domain"),
               'cog' => &mt('Course Type')                'cog' => &mt('Course Type')
              );               );
   
     $typeselectform =  '<select name="type" size="1">'."\n";      $typeselectform =  '<select name="type" size="1">'."\n";
     if ($type eq 'Course') {      if ($type eq 'Course') {
         $instcodeform =           if ($env{'form.fixeddom'}) {
               ($instcodeform,$jscript,$$numtitlesref) = 
                   &instcode_selectors($codedom,'filterpicker');
           }
           if ($instcodeform eq '') {
               $instcodeform = 
                 '<input type="text" name="instcodefilter" size="10" value="'.                  '<input type="text" name="instcodefilter" size="10" value="'.
                 $list->{'instcodefilter'}.'" />';                  $list->{'instcodefilter'}.'" />';
               $instcodetitle = $lt{'ins'};
           } else {
               $instcodetitle = $lt{'inc'};
           }
           if ($env{'form.fixeddom'}) {
               $instcodetitle .= '<br />('.$codedom.')';
           }
           if ($jscript ne '') {
               $jscript = '<script type="text/javascript" language="Javascript">'.$jscript.
                          '</script>'."\n";
           }
     }      }
     foreach my $posstype ('Course','Non-standard Course') {      foreach my $posstype ('Course','Non-standard Course') {
         $typeselectform.='<option value="'.$posstype.'"'.          $typeselectform.='<option value="'.$posstype.'"'.
Line 478  $roleelement Line 512  $roleelement
 $multelement  $multelement
 |;  |;
         if ($formname eq 'portform') {          if ($formname eq 'portform') {
             $output .= '<input type="hidden" name="setroles" value="'.$env{'form.setroles'}.'" />';              $output .= '<input type="hidden" name="setroles" value="'.$env{'form.setroles'}.'" />'."\n";
         }          }
     }      }
       if ($env{'form.fixeddom'}) { 
           $output .= '<input type="hidden" name="fixeddom" value="'.$env{'form.fixeddom'}.'" />'."\n";
       }
       $output .= "<br />\n".&Apache::lonhtmlcommon::start_pick_box();
     if ($sincefilterform) {       if ($sincefilterform) { 
         $output .= $lt{'cac'}.': '.$sincefilterform.'<br />'."\n";          $output .= &Apache::lonhtmlcommon::row_title($lt{'cac'})
                     .$sincefilterform
                     .&Apache::lonhtmlcommon::row_closure();
     }      }
     if ($domainselectform) {      if ($domainselectform) {
         $output .= $lt{'cdo'}.': '.$domainselectform.'<br />'."\n";          $output .= &Apache::lonhtmlcommon::row_title($lt{'cdo'})
                     .$domainselectform
                     .&Apache::lonhtmlcommon::row_closure();
       } 
       if ($typeselectform) {
           $output .= &Apache::lonhtmlcommon::row_title($lt{'cog'})
                     .$typeselectform
                     .&Apache::lonhtmlcommon::row_closure();
     }      }
 #    if ($typeselectform) {  
 #        $output .= $lt{'cog'}.': '.$typeselectform.'<br />'."\n";  
 #    }  
     if ($instcodeform) {      if ($instcodeform) {
         $output .= $lt{'cin'}.': '.$instcodeform.'<br />'."\n";          $output .= &Apache::lonhtmlcommon::row_title($instcodetitle)
                     .$instcodeform
                     .&Apache::lonhtmlcommon::row_closure();
     }      }
     if (exists($filter->{'ownerfilter'})) {      if (exists($filter->{'ownerfilter'})) {
         $output .= $lt{'cow'}.': '.          $output .= &Apache::lonhtmlcommon::row_title($lt{'cow'})
                    '<input type="text" name="ownerfilter" size="10" value="'.                    .'<input type="text" name="ownerfilter" size="20" value="'
                    $list->{'ownerfilter'}.'" /><br />'."\n".                    .$list->{'ownerfilter'}.'" />'
                    $lt{'cod'}.': '.$ownerdomselectform.'<br />'."\n";                    .&Apache::lonhtmlcommon::row_closure()
                     .&Apache::lonhtmlcommon::row_title($lt{'cod'})
                     .$ownerdomselectform
                     .&Apache::lonhtmlcommon::row_closure();
     }      }
     if (exists($filter->{'coursefilter'})) {      if (exists($filter->{'coursefilter'})) {
         $output .= &mt('LON-CAPA course ID').': '.          $output .= &Apache::lonhtmlcommon::row_title(&mt('LON-CAPA course ID'))
                    '<input type="text" name="coursefilter" size="25" value="'.                    .'<input type="text" name="coursefilter" size="25" value="'
                     $list->{'coursefilter'}.'" /><br />';                    .$list->{'coursefilter'}.'" />'
                     .&Apache::lonhtmlcommon::row_closure();
     }      }
     if (exists($filter->{'descriptfilter'})) {      if (exists($filter->{'descriptfilter'})) {
         $output .=$lt{'cde'}.': '.          $output .= &Apache::lonhtmlcommon::row_title($lt{'cde'})
                   '<input type="text" name="descriptfilter" size="40" value="'.                    .'<input type="text" name="descriptfilter" size="40" value="'
                   $list->{'descriptfilter'}.'" />'."\n";                    .$list->{'descriptfilter'}.'" />'
                     .&Apache::lonhtmlcommon::row_closure(1);
     }      }
       $output .= &Apache::lonhtmlcommon::end_pick_box();
     $output .= '<p><input type="submit" name="gosearch" value="'.       $output .= '<p><input type="submit" name="gosearch" value="'. 
                &mt('Search').'" /></p>'."\n".'</form>'."\n".'<hr />'."\n";                 &mt('Search').'" /></p>'."\n".'</form>'."\n".'<hr />'."\n";
     return $output;       return $jscript.$output;
   }
   
   sub instcode_selectors {
       my ($codedom,$formname) = @_;
       my ($output,@codetitles,%cat_titles,%cat_order,%cat_items);
       my ($jscript,$totcodes,$numtitles,$lasttitle) =
           &Apache::courseclassifier::instcode_selectors_data($codedom,$formname,
                              \%cat_items,\@codetitles,\%cat_titles,\%cat_order);
       if ($numtitles > 0) {
           $output = &Apache::courseclassifier::build_instcode_selectors($numtitles,
                     $lasttitle,\%cat_items,\@codetitles,\%cat_titles,\%cat_order)."\n".
                     '<input type="hidden" name="numtitles" value="'.$numtitles.'" />'."\n".
                     '<input type="hidden" name="state" value="listing" />'."\n";
    
       }
       return ($output,$jscript,$numtitles);
 }  }
   
 sub search_courses {  sub search_courses {
     my ($r,$type,$onlyown,$filter) = @_;      my ($r,$type,$onlyown,$filter,$numtitles) = @_;
     my %courses;      my %courses;
     if (!$onlyown) {      if (!$onlyown) {
         $r->print(&mt('Searching ...').'<br />&nbsp;<br />');          $r->print(&mt('Searching ...').'<br />&nbsp;<br />');
Line 534  sub search_courses { Line 602  sub search_courses {
         if ($type eq '') { $type = '.'; }          if ($type eq '') { $type = '.'; }
         my $timefilter =           my $timefilter = 
            ($filter->{'sincefilter'}==-1?1:time-$filter->{'sincefilter'});             ($filter->{'sincefilter'}==-1?1:time-$filter->{'sincefilter'});
           my ($instcodefilter,$regexpok);
           if ($numtitles) {
               $instcodefilter = 
                   &Apache::courseclassifier::instcode_search_str($filter->{'domainfilter'},
                                                                  $numtitles);
               $regexpok = 1;
           } else {
               $instcodefilter = $filter->{'instcodefilter'};
           }
         %courses =           %courses = 
             &Apache::lonnet::courseiddump($filter->{'domainfilter'},              &Apache::lonnet::courseiddump($filter->{'domainfilter'},
                                           $filter->{'descriptfilter'},                                            $filter->{'descriptfilter'},
                                           $timefilter,                                            $timefilter,
                                           $filter->{'instcodefilter'},                                            $instcodefilter,
                                           $filter->{'combownerfilter'},                                            $filter->{'combownerfilter'},
                                           $filter->{'coursefilter'},                                            $filter->{'coursefilter'},
                                           undef,undef,$type);                                            undef,undef,$type,$regexpok);
     } else {      } else {
         $r->print('<br />');          $r->print('<br />');
         my %coursehash = &Apache::loncommon::findallcourses();           my %coursehash = &Apache::loncommon::findallcourses(); 
Line 701  Course Owner's Username - the username o Line 778  Course Owner's Username - the username o
 Course Owner's Domain - the domain of the owner of the course  Course Owner's Domain - the domain of the owner of the course
   
 =item *   =item * 
 Course Description - text which appears in the Course Description (or title), as set in the Course Parameters.  Course Title - text which appears in the Course Title, as set in the Course Parameters.
   
 =item *  =item *
 Course ID - the internal course number (course ID part after initial 'domain_') used by LON-CAPA (this criterion is only displayed to Domain Coordinators selecting a course in the same domain as their DC role).  Course ID - the internal course number (course ID part after initial 'domain_') used by LON-CAPA (this criterion is only displayed to Domain Coordinators selecting a course in the same domain as their DC role).
Line 774  Side Effects: None Line 851  Side Effects: None
   
 =item *  =item *
 X<build_filters()>  X<build_filters()>
 B<build_filters($filterlist,$type,$roleelement,$multelement,$filter,$action)>:  B<build_filters($filterlist,$type,$roleelement,$multelement,$filter,$action,$numfiltersref)>:
   
   
 Input: 6 - anonymous array of search criteria; course type; $roleelement ; $multelement ; anonymous hash of criteria and their values; form action.  Input: 7 - anonymous array of search criteria; course type; $roleelement ; $multelement ; anonymous hash of criteria and their values; form action; ref to scalar (count of number of elements in institutional codes -- e.g., 4 for year, semester, department, and number).  
   
 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 785  Side Effects: None Line 862  Side Effects: None
   
 =item *  =item *
 X<search_courses()>  X<search_courses()>
 B<search_courses($r,$type,$onlyown,$filter)>:  B<search_courses($r,$type,$onlyown,$filter,$numtitles)>:
   
   
 Input: 5 -  request object, course type, search scope: only courses in which user has active role (1), or any course (0); anonymous hash of criteria and their values.  Input: 5 -  request object, course type, search scope: only courses in which user has active role (1), or any course (0); anonymous hash of criteria and their values; for institutional codes - number of categories).  
   
 Output: 1 - %courses - hash of courses satisfying search criteria, keys = course IDs, values are corresponding colon-separated escaped description, institutional code, owner and type.  Output: 1 - %courses - hash of courses satisfying search criteria, keys = course IDs, values are corresponding colon-separated escaped description, institutional code, owner and type.
   

Removed from v.1.73.2.2  
changed lines
  Added in v.1.78


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.