Diff for /loncom/interface/lonpickcourse.pm between versions 1.56 and 1.57

version 1.56, 2006/11/13 20:50:57 version 1.57, 2006/11/14 16:51:42
Line 55  sub handler { Line 55  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 114  sub handler { Line 114  sub handler {
     $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 126  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;
Line 166  function setSections() { Line 167  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';
     }      }
Line 217  sub display_matched_courses { Line 217  sub display_matched_courses {
     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 231  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('<input type="hidden" name="phase" value="menu" />'."\n");
           $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 252  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}) {
Line 298  sub build_filters { Line 311  sub build_filters {
     $typeselectform =  '<select name="type" size="1"';      $typeselectform =  '<select name="type" size="1"';
     $typeselectform .= ">\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') {      foreach my $posstype ('Course','Non-standard Course') {
         $typeselectform.='<option value="'.$posstype.'" "'.          $typeselectform.='<option value="'.$posstype.'" "'.
             ($posstype eq $type ? 'selected="selected" ' : ''). ">$posstype</option>\n";              ($posstype eq $type ? 'selected="selected" ' : ''). ">$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" />';
     if (exists($filter->{'coursefilter'})) {      } else {     
         $courseidtag=&mt('LON-CAPA course ID').          my $name_input;
                      ': <input type="text" name="coursefilter" size="25" value="'.                     $list->{'coursefilter'}.'" /><br />';          if ($env{'form.cnameelement'} ne '') {
     }              $name_input = '<input type="hidden" name="cnameelement" value="'.
     my $output = <<"END";                            $env{'form.cnameelement'}.'" />';
 <form method="post" name="filterpicker" action="/adm/pickcourse">          }
           $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 />      }
 $lt{'cdo'}: $domainselectform      if ($sincefilterform) { 
 <br />          $output .= $lt{'cac'}.': '.$sincefilterform.'<br />'."\n";
 $lt{'cog'}: $typeselectform      }
 <br />      if ($domainselectform) {
 $instcodeform          $output .= $lt{'cdo'}.': '.$domainselectform.'<br />'."\n";
 $lt{'cow'}:      }
 <input type="text" name="ownerfilter" size="10" value="$list->{'ownerfilter'}" />      if ($typeselectform) {
 <br />          $output .= $lt{'cog'}.': '.$typeselectform.'<br />'."\n";
 $lt{'cod'}: $ownerdomselectform      }
 <br />      if ($instcodeform) {
 $courseidtag          $output .= $lt{'cin'}.': '.$instcodeform.'<br />'."\n";
 $lt{'cde'}:      }
 <input type="text" name="descriptfilter" size="40" value="$list->{'descriptfilter'}" />      if (exists($filter->{'ownerfilter'})) {
           $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 .= qq|
 <p><input type="submit" name="gosearch" value="Search" /></p>  <p><input type="submit" name="gosearch" value="Search" /></p>
 </form>  </form>
 <hr />  <hr />
 END  |;
     return $output;       return $output; 
 }  }
   
Line 396  sub course_chooser { Line 426  sub course_chooser {
 }  }
   
 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);  
             opener.document.$env{'form.form'}.$elements{$type}{'list'}.value = courses;  
         }          }
       }
       if (courseCount > 0) {
           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 505  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 516  function gochoose(cname,cdom,cdesc,multi
     $lastaction      $lastaction
 }  }
 </script>  </script>
 ENDSCRIPT  |;
     return $output;      return $output;
 }  }
   
Line 512  Course Activity - how recently was cours Line 550  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 603  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 614  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 635  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 669  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 Apache::lonroles::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.56  
changed lines
  Added in v.1.57


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