Diff for /loncom/interface/lonrequestcourse.pm between versions 1.36.2.1 and 1.36.2.2

version 1.36.2.1, 2009/09/23 15:58:26 version 1.36.2.2, 2009/10/02 16:15:49
Line 658  sub print_main_menu { Line 658  sub print_main_menu {
         }          }
     }      }
   
       my $standby=&mt('Course selected. Please stand by.');
     my $js = <<"END";      my $js = <<"END";
   
   function enterrole (thisform,rolecode,buttonname) {
       document.title='$standby';
       window.status='$standby';
       thisform.newrole.value=rolecode;
       thisform.selectrole.value='1';
       thisform.submit();
   }
   
   function ToSyllabus(cdom,cnum) {
       if (cdom == '' || cdom == null) {
           return;
       }
       if (cnum == '' || cnum == null) {
           return;
       }
       var options = 'height=600,width=800,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no';
       var url = "/public/"+cdom+"/"+cnum+"/syllabus";
       syllwin = window.open(url,'',options,1);
       syllwin.focus();
       return;
   }
   
 function nextPage(formname) {  function nextPage(formname) {
     var crschoice = document.mainmenu_coursetype.crstype.value;      var crschoice = document.mainmenu_coursetype.crstype.value;
     var actionchoice = document.mainmenu_action.action.value;      var actionchoice = document.mainmenu_action.action.value;
Line 724  END Line 747  END
 }  }
   
 END  END
       $r->print(&header('Concept Test Courses',$js.$jscript,$loaditems).$crumb);
     $r->print(&header('Course Requests',$js.$jscript,$loaditems).$crumb.      my $existing = &existing_courses();
              '<p>'.&mt('Request creation of a new course, or review your pending course requests.').'</p>'.      if ($existing) {
              '<div>'.          $r->print('<div class="LC_left_float">'.
                    '<h3>'.&mt('Request creation of a new course').'</h3>');
       } else {
           $r->print('<div><h3>'.&mt('Request creation of a new course, or review your pending course requests.').'</h3>');
       }
       $r->print('<p>'.
               &Apache::lonhtmlcommon::start_pick_box().                &Apache::lonhtmlcommon::start_pick_box().
               &Apache::lonhtmlcommon::row_title(&mt('Course Domain')).                &Apache::lonhtmlcommon::row_title(&mt('Course Domain')).
               '<form name="domforcourse" method="post" action="/adm/requestcourse">');                '<form name="domforcourse" method="post" action="/adm/requestcourse">');
Line 749  END Line 777  END
               '<form name="mainmenu_coursetype" method="post" action="">'."\n".                '<form name="mainmenu_coursetype" method="post" action="">'."\n".
               '<input type="hidden" name="crstype" value="unofficial" ></form>'."\n".                '<input type="hidden" name="crstype" value="unofficial" ></form>'."\n".
               &Apache::lonhtmlcommon::row_closure(1)."\n".                &Apache::lonhtmlcommon::row_closure(1)."\n".
               &Apache::lonhtmlcommon::end_pick_box().'</div>'."\n".                &Apache::lonhtmlcommon::end_pick_box().'</p>'."\n".
               '<div><form name="'.$formname.'" method="post" action="">'."\n".                '<p><form name="'.$formname.'" method="post" action="">'."\n".
               '<input type="hidden" name="state" value="crstype" />'."\n".                '<input type="hidden" name="state" value="crstype" />'."\n".
               '<input type="hidden" name="showdom" value="'.$dom.'" />'."\n".                '<input type="hidden" name="showdom" value="'.$dom.'" />'."\n".
               '<input type="hidden" name="crstype" value="" />'."\n".                '<input type="hidden" name="crstype" value="" />'."\n".
               '<input type="hidden" name="action" value="" />'."\n".                '<input type="hidden" name="action" value="" />'."\n".
               '<input type="button" name="next" value="'.$nexttext.                '<input type="button" name="next" value="'.$nexttext.
               '" onclick="javascript:nextPage(document.'.$formname.')" />'."\n".                '" onclick="javascript:nextPage(document.'.$formname.')" />'."\n".
               '</form></div>');                '</form></p>');
       if ($existing) {
           $r->print('</div><div class="LC_left_float"><h3>'.&mt('Enter an existing Concept Test course').'</h3>'.$existing.'</div><div class="LC_clear_float_footer"></div>');
       } else {
           $r->print('</div>');
       }
     $r->print(&Apache::loncommon::end_page());      $r->print(&Apache::loncommon::end_page());
     return;      return;
 }  }
   
   sub existing_courses {
       my $output;
       my %roleshash = &Apache::lonnet::get_my_roles(undef,undef,'userroles',undef,
                                                     ['cc'],['gcitest']);
       my %courses;
       if (keys(%roleshash) > 0) {
           foreach my $key (keys(%roleshash)) {
               my ($cnum,$cdom,$role) = split(':',$key);
               my ($tstart,$tend) = split(':',$roleshash{$key});
               my %coursehash = &Apache::lonnet::coursedescription($cdom.'/'.$cnum);
               $courses{$cdom.'_'.$cnum}{'description'} = $coursehash{'description'};
               $courses{$cdom.'_'.$cnum}{'owner'} = $coursehash{'internal.courseowner'};
               if (defined($coursehash{'default_enrollment_start_date'}) ) {
                   $courses{$cdom.'_'.$cnum}{'startaccess'} = 
                       &Apache::lonlocal::locallocaltime($coursehash{'default_enrollment_start_date'});
               }
               if (defined($coursehash{'default_enrollment_end_date'}) ) {
                   $courses{$cdom.'_'.$cnum}{'endaccess'} = 
                       &Apache::lonlocal::locallocaltime($coursehash{'default_enrollment_end_date'});
                   if ($coursehash{'default_enrollment_end_date'} == 0) {
                       $courses{$cdom.'_'.$cnum}{'endaccess'} = &mt('No ending date');
                   }
               }
           }
           $output = '<form name="pickrole" action="/adm/roles" method="post">'.
                     &Apache::loncommon::start_data_table().
                     &Apache::loncommon::start_data_table_header_row();
           my @coltitles = ('Select','Title','Owner(s)',
                            'Default Access Dates for Students','Student Counts');
           foreach my $item (@coltitles) {
               $output .= '<th>';
               if ($item eq 'Select') {
                   $output .= '&nbsp;&nbsp;';
               } else {
                   $output .= &mt($item);
               }
               $output .= '</th>';
           }
           $output .= &Apache::loncommon::end_data_table_header_row();
           my %courseinfo = &build_courseinfo_hash(\%courses);
           my %Sortby;
           foreach my $course (sort(keys(%courses))) {
               my $clean_title = $courseinfo{$course}{'title'};
               $clean_title =~ s/\W+//g;
               if ($clean_title eq '') {
                   $clean_title = $courseinfo{$course}{'title'};
               }
               push(@{$Sortby{$clean_title}},$course);
           }
           my @sorted_courses;
           my @sorted_courses = sort { lc($a) cmp lc($b) } (keys(%Sortby));
           foreach my $item (@sorted_courses) {
               foreach my $course (@{$Sortby{$item}}) {
                   my ($cdom,$cnum) = split('_',$course); 
                   $output.= &Apache::loncommon::start_data_table_row().
                             &courseinfo_row($courseinfo{$course},$cnum,$cdom).
                             &Apache::loncommon::end_data_table_row();
               }
           }
           $output .= &Apache::loncommon::end_data_table().
                      '<input type="hidden" name="newrole" value="" />'.
                      '<input type="hidden" name="selectrole" value="" /></form>';
       }
       return $output;
   }
   
   sub build_courseinfo_hash {
       my ($courses) = @_;
       my %courseinfo;
       foreach my $course (keys(%{$courses})) {
           my ($cdom,$cnum) = split('_',$course);
           my $descr;
           if (ref($courses->{$course}) eq 'HASH') {
               $descr = $courses->{$course}{'description'};
           }
           my $cleandesc=&HTML::Entities::encode($descr,'<>&"');
           $cleandesc=~s/'/\\'/g;
           $cleandesc =~ s/^\s+//;
           my ($cdom,$cnum)=split(/\_/,$course);
           my ($singleowner,@owners,%ownernames);
           if (ref($courses->{$course}) eq 'HASH') {
               $singleowner = $courses->{$course}{'owner'};
               push(@owners,$singleowner);
               if (ref($courses->{$course}{'co-owners'}) eq 'ARRAY') {
                   foreach my $item (@{$courses->{$course}{'co-owners'}}) {
                       push(@owners,$item);
                   }
               }
           }
           foreach my $owner (@owners) {
               my ($ownername,$ownerdom);
               if ($owner =~ /:/) {
                   ($ownername,$ownerdom) = split(/:/,$owner);
               } else {
                   $ownername = $owner;
                   if ($owner ne '') {
                       $ownerdom = $cdom;
                   }
               }
               if ($ownername ne '' && $ownerdom ne '') {
                   my %namehash=&Apache::loncommon::getnames($ownername,$ownerdom);
                   $ownernames{$ownername.':'.$ownerdom} = \%namehash;
               }
           }
           $courseinfo{$course}{'cdom'} = $cdom;
           $courseinfo{$course}{'cnum'} = $cnum;
           my @lastnames;
           foreach my $owner (keys(%ownernames)) {
               if (ref($ownernames{$owner}) eq 'HASH') {
                   push(@lastnames,$ownernames{$owner}{'lastname'});
               }
           }
           $courseinfo{$course}{'ownerlastnames'} = join(', ',sort(@lastnames));
           $courseinfo{$course}{'title'} = $cleandesc;
           $courseinfo{$course}{'owner'} = $singleowner;
           my @classids;
           $courseinfo{$course}{'counts'} =  &count_students($cdom,$cnum,0);
           my $startaccess = $courses->{$course}{'startaccess'};
           my $endaccess = $courses->{$course}{'endaccess'};
           my $accessdates;
           if ($startaccess) {
               $accessdates .= '<i>'.&mt('From:[_1]','</i> '.$startaccess).'<br />';
           }
           if ($endaccess) {
               $accessdates .= '<i>'.&mt('To:[_1]','</i> '.$endaccess).'<br />';
           }
           $courseinfo{$course}{'access'} = $accessdates;
       }
       return %courseinfo;
   }
   
   sub courseinfo_row {
       my ($info,$cnum,$cdom) = @_;
       my $output;
       if (ref($info) eq 'HASH') {
           my $rolecode = 'cc./'.$cdom.'/'.$cnum;
           my $buttonname = $rolecode;
           $buttonname=~s/\W//g;
           $output .= '<td><input type="button" name="'.$buttonname.'" value="'.&mt('Select').'" onclick="javascript:enterrole(this.form,'."'$rolecode','$buttonname'".')" ></td>'.
                      '<td>'.$info->{'title'}.'&nbsp;<font size="-2">'.
                      '<a href="javascript:ToSyllabus('."'$cdom','$cnum'".')">'.
                      &mt('Syllabus').'</a></font></td>'.
                      '<td>'.$info->{'ownerlastnames'}.'</td>'.
                      '<td>'.$info->{'access'}.'</td>'.
                      '<td>'.$info->{'counts'}.'</td>';
       } else {
           $output = '<td colspan="4">'.&mt('No information available for [_1].',
                                            $cdom.'_'.$cnum).'</td>';
           return $output;
       }
       return $output;
   }
   
   sub count_students {
       my ($cdom,$cnum,$numsec) = @_;
       my $classlist = &Apache::loncoursedata::get_classlist($cdom,$cnum);
       my %student_count = (
                              Active => 0,
                              Future => 0,
                              Expired => 0,
                          );
       my %idx;
       $idx{'status'} = &Apache::loncoursedata::CL_STATUS();
       my %status_title = &Apache::lonlocal::texthash(
                              Expired => 'Previous access',
                              Active => 'Current access',
                              Future => 'Future access',
                          );
   
       while (my ($student,$data) = each(%$classlist)) {
           $student_count{$data->[$idx{'status'}]} ++;
       }
   
       my $countslist = &mt('[quant,_1,section:,sections:,No sections]',$numsec).'<br />';
       foreach my $status ('Active','Future') {
           $countslist .= '<span class="LC_nobreak">'.$status_title{$status}.': '.
                          $student_count{$status}.'</span><br />';
       }
       return $countslist;
   }
   
   
 sub request_administration {  sub request_administration {
     my ($r,$action,$state,$page,$states,$dom,$jscript,$loaditems,$crumb,      my ($r,$action,$state,$page,$states,$dom,$jscript,$loaditems,$crumb,
         $newinstcode,$codechk,$checkedcode,$description,$invalidcrosslist,          $newinstcode,$codechk,$checkedcode,$description,$invalidcrosslist,

Removed from v.1.36.2.1  
changed lines
  Added in v.1.36.2.2


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