Diff for /loncom/interface/lonpickcourse.pm between versions 1.62 and 1.67.2.3

version 1.62, 2007/03/08 01:58:45 version 1.67.2.3, 2008/01/20 22:47:37
Line 72  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.'")';
     }      }
   
Line 83  sub handler { Line 83  sub handler {
     }      }
   
     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 92  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 101  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 
Line 137  sub handler { Line 139  sub handler {
     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 170  sub display_matched_courses { Line 215  sub display_matched_courses {
     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(
                   '<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><br />'.
                   '<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><br /><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 195  sub display_matched_courses { Line 263  sub display_matched_courses {
             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);
               if (ref($courses{$course}) eq 'HASH') {
                   $descr = $courses{$course}{'description'};
                   $instcode =  $courses{$course}{'inst_code'};
                   $ttype =  $courses{$course}{'type'};
                   push(@owners,&unescape($courses{$course}{'owner'}));
                   if (ref($courses{$course}{'co-owners'}) eq 'ARRAY') {
                       foreach my $item (@{$courses{$course}{'co-owners'}}) {
                           push(@owners,&unescape($item));
                       }
                   }
               } else {
                   my $singleowner; 
                   ($descr,$instcode,$singleowner,$ttype)=split(/:/,$courses{$course});
                   push(@owners,&unescape($singleowner));
               }
               my $owner = join(', ',@owners);
             $r->print(&course_chooser($multiple,$cdom,$cnum,$cleandesc));              $r->print(&course_chooser($multiple,$cdom,$cnum,$cleandesc));
             $r->print($description.'('.              $r->print($description.' ('.
                       (&Apache::lonnet::domain($cdom,'description')?                        (&Apache::lonnet::domain($cdom,'description')?
                        &Apache::lonnet::domain($cdom,'description'):$cdom).")");                         &Apache::lonnet::domain($cdom,'description'):$cdom).")");
             unless ($instcode eq '') {              if ($instcode ne '') {
                 $r->print(" - ".&unescape($instcode));                  $r->print(" - ".&unescape($instcode));
             }              }
             unless ($owner eq '') {              if (@owners > 1) {
                 $r->print(", owner - ".&unescape($owner));                  $r->print(', '.&mt('owners').' - ',join(', ',@owners)); 
               } elsif (@owners == 1) {
                   $r->print(', '.&mt('owner').' - '.$owner);
             }              }
             unless ($ttype eq '') {              if ($ttype ne '') {
                 $r->print('('.&unescape($ttype).')');                  $r->print(' ('.&unescape($ttype).')');
             }              }
             if ($multiple) { $r->print("</label>\n"); }              if ($multiple) { $r->print("</label>\n"); }
             $r->print("<br />\n");              $r->print("<br />\n");
Line 231  sub display_matched_courses { Line 317  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('<input type="hidden" name="phase" value="menu" />'."\n");  
         $r->print(&Apache::lonhtmlcommon::echo_form_input(['phase','pickedcourse','type','form']));          $r->print(&Apache::lonhtmlcommon::echo_form_input(['phase','pickedcourse','type','form']));
     } else {      } else {
         $r->print('<input type="hidden" name="cnumelement" value="'.          $r->print('<input type="hidden" name="cnumelement" value="'.
Line 279  sub build_filters { Line 364  sub build_filters {
             }              }
         }          }
         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 315  sub build_filters { Line 410  sub build_filters {
               '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 =           $instcodeform = 
                 '<input type="text" name="instcodefilter" size="10" value="'.                  '<input type="text" name="instcodefilter" size="10" value="'.
Line 332  sub build_filters { Line 426  sub build_filters {
 <input type="hidden" name="form" value="$formname" />  <input type="hidden" name="form" value="$formname" />
 |;  |;
     if ($formname eq 'modifycourse') {      if ($formname eq 'modifycourse') {
         $output .= '<input type="hidden" name="phase" value="courselist" />';          $output .= '<input type="hidden" name="phase" value="courselist" />'."\n".
     } else {                          '<input type="hidden" name="prevphase" value="'.
                      $env{'form.prevphase'}.'" />'."\n";
       } else {
         my $name_input;          my $name_input;
         if ($env{'form.cnameelement'} ne '') {          if ($env{'form.cnameelement'} ne '') {
             $name_input = '<input type="hidden" name="cnameelement" value="'.              $name_input = '<input type="hidden" name="cnameelement" value="'.
Line 356  $multelement Line 452  $multelement
     if ($domainselectform) {      if ($domainselectform) {
         $output .= $lt{'cdo'}.': '.$domainselectform.'<br />'."\n";          $output .= $lt{'cdo'}.': '.$domainselectform.'<br />'."\n";
     }      }
     if ($typeselectform) {  #    if ($typeselectform) {
         $output .= $lt{'cog'}.': '.$typeselectform.'<br />'."\n";  #        $output .= $lt{'cog'}.': '.$typeselectform.'<br />'."\n";
     }  #    }
     if ($instcodeform) {      if ($instcodeform) {
         $output .= $lt{'cin'}.': '.$instcodeform.'<br />'."\n";          $output .= $lt{'cin'}.': '.$instcodeform.'<br />'."\n";
     }      }
Line 378  $multelement Line 474  $multelement
                   '<input type="text" name="descriptfilter" size="40" value="'.                    '<input type="text" name="descriptfilter" size="40" value="'.
                   $list->{'descriptfilter'}.'" />'."\n";                    $list->{'descriptfilter'}.'" />'."\n";
     }      }
     $output .= qq|      $output .= '<p><input type="submit" name="gosearch" value="'. 
 <p><input type="submit" name="gosearch" value="Search" /></p>                 &mt('Search').'" /></p>'."\n".'</form>'."\n".'<hr />'."\n";
 </form>  
 <hr />  
 |;  
     return $output;       return $output; 
 }  }
   
Line 418  sub search_courses { Line 511  sub search_courses {
         $r->print('<br />');          $r->print('<br />');
         my %coursehash = &Apache::loncommon::findallcourses();           my %coursehash = &Apache::loncommon::findallcourses(); 
         foreach my $cid (sort(keys(%coursehash))) {          foreach my $cid (sort(keys(%coursehash))) {
             $courses{$cid} = $env{'course.'.$cid.'.description'};              $courses{$cid}{'description'} = $env{'course.'.$cid.'.description'};
         }          }
     }      }
     return %courses;      return %courses;
Line 682  Side Effects: None Line 775  Side Effects: None
 X<gochoose_javascript()>  X<gochoose_javascript()>
 B<gochoose_javascript($type,$multiple,$autosubmit,$lastaction)>:  B<gochoose_javascript($type,$multiple,$autosubmit,$lastaction)>:
   
 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.  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.62  
changed lines
  Added in v.1.67.2.3


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