Diff for /loncom/interface/lonpickcourse.pm between versions 1.86 and 1.97

version 1.86, 2009/08/19 19:51:22 version 1.97, 2010/06/19 01:28:35
Line 51  sub handler { Line 51  sub handler {
         ($ENV{'QUERY_STRING'},['domainfilter','form','cnumelement',          ($ENV{'QUERY_STRING'},['domainfilter','form','cnumelement',
        'cdomelement','cnameelement','roleelement',         'cdomelement','cnameelement','roleelement',
                                'multiple','type','setroles','fixeddom','cloner']);                                 'multiple','type','setroles','fixeddom','cloner']);
     my ($type,$title,$jscript,$multelement,$multiple,$roleelement,      my ($type,$title,$jscript,$multelement,$multiple,$roleelement,$typeelement,
         $lastaction,$autosubmit,$submitopener,$cloneruname,$clonerudom);          $lastaction,$autosubmit,$submitopener,$cloneruname,$clonerudom);
   
     # Get course type - Course or Community.      # Get course type - Course or Community.
Line 75  sub handler { Line 75  sub handler {
         $submitopener = &processpick();          $submitopener = &processpick();
         $autosubmit = 'process_pick("'.$roledom.'")';          $autosubmit = 'process_pick("'.$roledom.'")';
     }      }
       if ($env{'form.typeelement'} ne '') {
           $typeelement = '<input type="hidden" name="typeelement" value="'.$env{'form.typeelement'}.'" />';
       }
   
     # if called when a DC is creating a course      # if called when a DC is creating a course for another user.
     if ($env{'form.form'} eq 'ccrs') {      if ($env{'form.form'} eq 'ccrs') {
         ($cloneruname,$clonerudom) = ($env{'form.cloner'} =~ /^($match_username):($match_domain)$/);          ($cloneruname,$clonerudom) = ($env{'form.cloner'} =~ /^($match_username):($match_domain)$/);
     }      }
Line 102  sub handler { Line 105  sub handler {
   
     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'} .= 'setRoles();setSections();';
     }      }
     my $js = &js_changer();      my $js = &js_changer();
     $r->print(&Apache::loncommon::start_page($title,$js,      $r->print(&Apache::loncommon::start_page($title,$js,
Line 139  sub handler { Line 142  sub handler {
     my $action = '/adm/pickcourse';      my $action = '/adm/pickcourse';
     my ($numtitles,$showroles,$nohost);      my ($numtitles,$showroles,$nohost);
     if (!$onlyown) {      if (!$onlyown) {
         my $filterlist = ['domainfilter','descriptfilter',          my $filterlist = ['domainfilter'];
                           'instcodefilter'];          # created filter for DCs only
           if ($env{'user.adv'} && $env{'form.domainfilter'} &&
               exists($env{'user.role.dc./'.$env{'form.domainfilter'}.'/'})
               && $env{'form.form'} ne 'portform') {
               my $loncaparev = &Apache::lonnet::get_server_loncaparev($env{'form.domainfilter'});
               if ($loncaparev ne 'unknown_cmd') {
                   push(@{$filterlist},'createdfilter');
               }
           }
           push(@{$filterlist},('descriptfilter','instcodefilter'));
         if ($env{'form.form'} eq 'rules') {          if ($env{'form.form'} eq 'rules') {
             push(@{$filterlist},'personfilter');              push(@{$filterlist},'personfilter');
             if (($env{'form.personfilter'} ne '') && ($env{'form.persondomfilter'} ne '')) {              if (($env{'form.personfilter'} ne '') && ($env{'form.persondomfilter'} ne '')) {
Line 165  sub handler { Line 177  sub handler {
   
         $r->print(&build_filters($filterlist,$type,$roleelement,$multelement,          $r->print(&build_filters($filterlist,$type,$roleelement,$multelement,
                                  $filter,$action,\$numtitles,undef,$cloneruname,                                   $filter,$action,\$numtitles,undef,$cloneruname,
                                  $clonerudom));                                   $clonerudom,$typeelement));
     }      }
   
 # ---------------------------------------------------------------- Get the data  # ---------------------------------------------------------------- Get the data
Line 220  ENDONE Line 232  ENDONE
         $process_pick .= <<"ENDTWO";          $process_pick .= <<"ENDTWO";
     if (pickedDomain == dom) {      if (pickedDomain == dom) {
         if (pickedCourse != '') {          if (pickedCourse != '') {
             var courseTarget = "cc./"+pickedDomain+"/"+pickedCourse              var ccrole = "cc";
               var pickedType = "$env{'form.type'}";
               if (pickedType == "Community") {
                   ccrole = "co";
               }
               var courseTarget = ccrole+"./"+pickedDomain+"/"+pickedCourse
             opener.document.title='Role selected. Please stand by.';              opener.document.title='Role selected. Please stand by.';
             opener.status='Role selected. Please stand by.';              opener.status='Role selected. Please stand by.';
             opener.document.rolechoice.newrole.value=courseTarget              opener.document.rolechoice.newrole.value=courseTarget
Line 252  sub create_user_javascript { Line 269  sub create_user_javascript {
     my $output;      my $output;
     #javascript for reporting sections and groups then closing      #javascript for reporting sections and groups then closing
     if ($env{'form.pickedcourse'}) {      if ($env{'form.pickedcourse'}) {
         my ($cdom,$cnum) = split/_/,$env{'form.pickedcourse'};          my %coursedescription = 
               &Apache::lonnet::coursedescription($env{'form.pickedcourse'},
                                                  {'one_time' => '1'});
           my $cdom = $coursedescription{'domain'};
           my $cnum = $coursedescription{'num'};
           my $crstype = $coursedescription{'type'};
         my $sec_element = 'currsec';          my $sec_element = 'currsec';
         my $grplist_element = 'groups';          my $grplist_element = 'groups';
         my ($sections,$groups) =          my ($sections,$groups) =
Line 266  sub create_user_javascript { Line 288  sub create_user_javascript {
 function setSections() {  function setSections() {
     opener.document.$env{"form.form"}.$grplist_element.value='$groupslist';      opener.document.$env{"form.form"}.$grplist_element.value='$groupslist';
     window.opener.setSect('$seclist');      window.opener.setSect('$seclist');
     self.close()      self.close();
   }
   function setRoles() {
       window.opener.setRole('$crstype');
 }  }
 </script>  </script>
 |;  |;
Line 284  sub display_matched_courses { Line 309  sub display_matched_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 ($env{'form.form'} eq 'modifycourse') {
         if ($numcourses > 0) {          if ($numcourses > 0) {
             my $cctitle = &Apache::lonnet::plaintext('cc',$type);              my $ccrole = 'cc';
             my $dctitle = &Apache::lonnet::plaintext('dc');              if ($type eq 'Community') {
             my $ccrolechk = ' checked="checked" ';                  $ccrole = 'co';
             my $menuchk = ' ';  
             if ($env{'form.prevphase'} ne '') {  
                  $ccrolechk = ' ';  
                  $menuchk = ' checked="checked" ';  
             }              }
               my $cctitle = &Apache::lonnet::plaintext($ccrole,$type);
               my $dctitle = &Apache::lonnet::plaintext('dc');
               my $ccrolechk = ' ';
               my $menuchk = ' checked="checked" ';
             $r->print(              $r->print(
                 '<fieldset>'                  '<fieldset>'
                .'<legend>'.&mt('Action').'</legend>'                 .'<legend>'.&mt('Action').'</legend>'
                .'<div class="LC_nobreak"><label>'                 .'<div class="LC_nobreak"><label>'
                .'<input type="radio" name="phase" value="ccrole"'.$ccrolechk.'/>'                 .'<input type="radio" name="phase" value="ccrole"'.$ccrolechk.'/>'
                .'&nbsp;'.&mt('Enter the course with the role of [_1].',$cctitle)                 .'&nbsp;');
                .'</label></div>'              if ($type eq 'Community') {
                   $r->print(&mt('Enter the community with the role of [_1].',$cctitle));
               } else {
                   $r->print(&mt('Enter the course with the role of [_1].',$cctitle));
               }
               $r->print('</label></div>'
                .'<div class="LC_nobreak"><label>'                 .'<div class="LC_nobreak"><label>'
                .'<input type="radio" name="phase" value="menu"'.$menuchk.'/>&nbsp;'                 .'<input type="radio" name="phase" value="menu"'.$menuchk.'/>&nbsp;');
                .&mt('View or modify course settings which only a [_1] may modify.',$dctitle)              if ($type eq 'Community') {
                .'</label></div>'                  $r->print(&mt('View or modify community settings which only a [_1] may modify.',$dctitle));
               } else {
                   $r->print(&mt('View or modify course settings which only a [_1] may modify.',$dctitle));
               }
               $r->print('</label></div>'
                .'</fieldset>'                 .'</fieldset>'
                .'<br />'                 .'<br />'
             );              );
Line 333  sub display_matched_courses { Line 367  sub display_matched_courses {
     if (%courses) {      if (%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());
           my $titlehdr = &mt('Course Title');
           if ($type eq 'Community') {
               $titlehdr = &mt('Community Title');
           }
         $r->print('<th>'.&mt('Select').'</th>'          $r->print('<th>'.&mt('Select').'</th>'
                  .'<th>'.&mt('Course Title').'</th>'                   .'<th>'.$titlehdr.'</th>'
                  .'<th>'.&mt('Domain').'</th>'                   .'<th>'.&mt('Domain').'</th>');
                  .'<th>'.&mt('Course Code').'</th>'          unless ($type eq 'Community') {
                  .'<th>'.&mt('Owner/Co-owner(s)').'</th>'              $r->print('<th>'.&mt('Course Code').'</th>');
                  .'<th>'.&mt('Type').'</th>'          }
                  );          $r->print('<th>'.&mt('Owner/Co-owner(s)').'</th>');
         if ($showroles) {          if ($showroles) {
             $r->print('<th>'.&mt("Role(s) for [_1]",              $r->print('<th>'.&mt("Role(s) for [_1]",
                 &Apache::loncommon::plainname($env{'form.personfilter'},                  &Apache::loncommon::plainname($env{'form.personfilter'},
Line 347  sub display_matched_courses { Line 385  sub display_matched_courses {
         }          }
         $r->print(&Apache::loncommon::end_data_table_header_row());          $r->print(&Apache::loncommon::end_data_table_header_row());
     }      }
       my %cc_cloneable;
       if (($env{'form.form'} eq 'ccrs') || ($env{'form.form'} eq 'requestcrs')) {
           my ($coord_cloneable,$warning) =
               &get_coordinator_cloneable($cloneruname,$clonerudom,$type);
           if ($coord_cloneable) {
               map {$cc_cloneable{$_} = 1;} split('&',$coord_cloneable);
           }
       }
     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());              $r->print(&Apache::loncommon::start_data_table_row());
Line 359  sub display_matched_courses { Line 405  sub display_matched_courses {
                 $instcode = $courses{$course}{'inst_code'};                  $instcode = $courses{$course}{'inst_code'};
                 $ttype = $courses{$course}{'type'};                  $ttype = $courses{$course}{'type'};
                 if (($env{'form.form'} eq 'ccrs') || ($env{'form.form'} eq 'requestcrs')) {                  if (($env{'form.form'} eq 'ccrs') || ($env{'form.form'} eq 'requestcrs')) {
                     my $cloners = $courses{$course}{'cloners'};                      if ($cc_cloneable{$courses{$course}{'cnum'}.':'.$courses{$course}{'domain'}}) {
                     if ($cloners ne '') {                           $canclone = 1;
                         my @cloneable = split(',',$cloners);                      }
                         if (grep(/^\*$/,@cloneable)) {                      unless ($canclone) {
                             $canclone = 1;                          my $cloners = $courses{$course}{'cloners'};
                         }                          if ($cloners ne '') { 
                         if (grep(/^\*:\Q$env{'form.clonerudom'}\E$/,@cloneable)) {                              my @cloneable = split(',',$cloners);
                             $canclone = 1;                              if (grep(/^\*$/,@cloneable)) {
                         }                                  $canclone = 1;
                         if (grep(/^\Q$cloneruname\E:\Q$clonerudom\E$/,@cloneable)) {                              }
                             $canclone = 1;                              if (grep(/^\*:\Q$clonerudom\E$/,@cloneable)) {
                                   $canclone = 1;
                               }
                               if (grep(/^\Q$cloneruname\E:\Q$clonerudom\E$/,@cloneable)) {
                                   $canclone = 1;
                               }
                         }                          }
                     }                      }
                 }                  }
Line 384  sub display_matched_courses { Line 435  sub display_matched_courses {
                 ($descr,$instcode,$singleowner,$ttype)=split(/:/,$courses{$course});                  ($descr,$instcode,$singleowner,$ttype)=split(/:/,$courses{$course});
                 push(@owners,&unescape($singleowner));                  push(@owners,&unescape($singleowner));
             }              }
             my $ownerstr = join(', ',@owners);              my $ownerstr = join(', ',map { &Apache::loncommon::plainname(split(':',$_)); } @owners);
             $r->print('<td>'.&course_chooser($multiple,$cdom,$cnum,$cleandesc,$canclone).'</td>');              $r->print('<td>'.&course_chooser($multiple,$cdom,$cnum,$cleandesc,$canclone).'</td>');
             $r->print('<td>'.$description.'</td>');              $r->print('<td>'.$description.'</td>');
             $r->print('<td>');              $r->print('<td>');
             $r->print(&Apache::lonnet::domain($cdom,'description')?              $r->print(&Apache::lonnet::domain($cdom,'description')?
                       $cdom.' ('.&Apache::lonnet::domain($cdom,'description').')':$cdom);                        $cdom.' ('.&Apache::lonnet::domain($cdom,'description').')':$cdom);
             $r->print('</td>');              $r->print('</td>');
             $r->print('<td>');              unless ($type eq 'Community') { 
             if ($instcode ne '') {                  $r->print('<td>');
                 $r->print(&unescape($instcode));                  if ($instcode ne '') {
             } else {                      $r->print(&unescape($instcode));
                 $r->print('&nbsp;');                  } else {
                       $r->print('&nbsp;');
                   }
                   $r->print('</td>');
             }              }
             $r->print('</td>');  
             $r->print('<td>'.$ownerstr.'</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 ($showroles) {              if ($showroles) {
                 $r->print('<td>');                  $r->print('<td>');
                 my $rolestr;                  my $rolestr;
Line 416  sub display_matched_courses { Line 462  sub display_matched_courses {
                             my (undef,$crdom,$crname,$crtitle) = split('/',$role);                              my (undef,$crdom,$crname,$crtitle) = split('/',$role);
                             $rolestr .= $crtitle.', ';                              $rolestr .= $crtitle.', ';
                         } else {                          } else {
                             $rolestr .= &Apache::lonnet::plaintext($role,$ttype).', ';                              $rolestr .= &Apache::lonnet::plaintext($role,$type).', ';
                         }                          }
                     }                      }
                     $rolestr =~ s/\, $//;                      $rolestr =~ s/\, $//;
Line 456  sub display_matched_courses { Line 502  sub display_matched_courses {
                   $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 ($env{'form.typeelement'} ne '') {
               $r->print('<input type="hidden" name="typeelement" value="'.
                         $env{'form.typeelement'}.'" />'."\n");
   
           }
     }      }
     if ((exists($env{'form.fixeddom'})) && ($env{'form.form'} eq 'rules')) {      if ((exists($env{'form.fixeddom'})) && ($env{'form.form'} eq 'rules')) {
         $r->print('<input type="hidden" name="fixeddom" value="'.          $r->print('<input type="hidden" name="fixeddom" value="'.
Line 477  sub multiples_tag { Line 528  sub multiples_tag {
   
 sub build_filters {  sub build_filters {
     my ($filterlist,$type,$roleelement,$multelement,$filter,$action,      my ($filterlist,$type,$roleelement,$multelement,$filter,$action,
         $numtitlesref,$caller,$cloneruname,$clonerudom) = @_;          $numtitlesref,$caller,$cloneruname,$clonerudom,$typeelement) = @_;
     my ($list,$formname,$fixeddom,$codedom,$jscript);      my ($list,$formname,$fixeddom,$codedom,$jscript);
     $codedom = $env{'request.role.domain'};      $codedom = $env{'request.role.domain'};
     if (defined($env{'form.form'})) {      if (defined($env{'form.form'})) {
Line 485  sub build_filters { Line 536  sub build_filters {
     } else {      } else {
         $formname = $caller;          $formname = $caller;
     }      }
     my $onchange;      my $onchange = 'javascript:updateFilters(this)';
     unless ($env{'form.interface'} eq 'textual') {      my ($domainselectform,$sincefilterform,$createdfilterform,
         $onchange = 'javascript:updateFilters(this)';          $ownerdomselectform,$persondomselectform,$instcodeform,
     }          $typeselectform,$instcodetitle);
     my ($domainselectform,$sincefilterform,$ownerdomselectform,$persondomselectform,  
         $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 553  sub build_filters { Line 602  sub build_filters {
     }      }
   
     # last course activity filter and selection      # last course activity filter and selection
     $filter->{'sincefilter'} = $env{'form.sincefilter'};      $sincefilterform = &timebased_select_form('sincefilter',$filter);
     $filter->{'sincefilter'} =~ s/[^\d-]//g;  
     if (!$filter->{'sincefilter'}) { $filter->{'sincefilter'}=-1; }      # course created filter and selection
     $sincefilterform=&Apache::loncommon::select_form($filter->{'sincefilter'},      if (exists($filter->{'createdfilter'})) {
        'sincefilter',('-1'=>'',          $createdfilterform = &timebased_select_form('createdfilter',$filter);
                       '86400' => 'today',      }
                       '604800' => 'last week',  
                       '2592000' => 'last month',      my %lt = &Apache::lonlocal::texthash(
                       '7776000' => 'last three months',                  'cac' => "$type Activity",
                       '15552000' => 'last six months',                  'ccr' => "$type Created", 
                       '31104000' => 'last year',                  'cde' => "$type Title",
                       'select_form_order' =>                  'cdo' => "$type Domain",
                       ['-1','86400','604800','2592000','7776000',                  'ins' => 'Institutional Code',
                       '15552000','31104000']));                  'inc' => 'Institutional Categorization',
                   'cow' => "$type Owner/Co-owner",
     my %lt = (                  'cop' => "$type Personnel Includes",
               'cac' => &mt("$type Activity"),                  'cog' => 'Type',
               'cde' => &mt("$type Title"),  
               'cdo' => &mt("$type Domain"),  
               'ins' => &mt('Institutional Code'),  
               'inc' => &mt('Institutional Categorization'),  
               'cow' => &mt("$type Owner/Co-owner"),  
               'cop' => &mt("$type Personnel Includes"),  
               'cog' => &mt('Type')  
              );               );
   
     $typeselectform =  '<select name="type" size="1"';      if (($env{'form.form'} eq 'ccrs') || ($env{'form.form'} eq 'requestcrs')) {
     if ($onchange) {          my $typeval = 'Course';
         $typeselectform .= 'onchange="'.$onchange.'"';          if ($type eq 'Community') {
               $typeval = 'Community';
           }
           $typeselectform = '<input type="hidden" name="type" value="'.$typeval.'" />';
       } else {
           $typeselectform =  '<select name="type" size="1"';
           if ($onchange) {
               $typeselectform .= 'onchange="'.$onchange.'"';
           }
           $typeselectform .= '>'."\n";
           foreach my $posstype ('Course','Community') {
               $typeselectform.='<option value="'.$posstype.'"'.
                   ($posstype eq $type ? ' selected="selected" ' : ''). ">".&mt($posstype)."</option>\n";
           }
           $typeselectform.="</select>";
     }      }
     $typeselectform .= '>'."\n";  
           
     my ($cloneableonlyform,$cloneabletitle);      my ($cloneableonlyform,$cloneabletitle);
     if (exists($filter->{'cloneableonly'})) {      if (exists($filter->{'cloneableonly'})) {
Line 627  sub build_filters { Line 682  sub build_filters {
         }          }
     }      }
   
     foreach my $posstype ('Course','Community') {  
         $typeselectform.='<option value="'.$posstype.'"'.  
             ($posstype eq $type ? ' selected="selected" ' : ''). ">".&mt($posstype)."</option>\n";  
     }  
     $typeselectform.="</select>";  
     my $output = qq|      my $output = qq|
 <form method="post" name="filterpicker" action="$action">  <form method="post" name="filterpicker" action="$action">
 <input type="hidden" name="form" value="$formname" />  <input type="hidden" name="form" value="$formname" />
Line 652  sub build_filters { Line 702  sub build_filters {
 $name_input  $name_input
 $roleelement  $roleelement
 $multelement  $multelement
   $typeelement
 |;  |;
         if ($formname eq 'portform') {          if ($formname eq 'portform') {
             $output .= '<input type="hidden" name="setroles" value="'.$env{'form.setroles'}.'" />'."\n";              $output .= '<input type="hidden" name="setroles" value="'.$env{'form.setroles'}.'" />'."\n";
Line 666  $multelement Line 717  $multelement
                   .$sincefilterform                    .$sincefilterform
                   .&Apache::lonhtmlcommon::row_closure();                    .&Apache::lonhtmlcommon::row_closure();
     }      }
       if ($createdfilterform) {
           $output .= &Apache::lonhtmlcommon::row_title($lt{'ccr'})
                     .$createdfilterform
                     .&Apache::lonhtmlcommon::row_closure();
       }
     if ($domainselectform) {      if ($domainselectform) {
         $output .= &Apache::lonhtmlcommon::row_title($lt{'cdo'})          $output .= &Apache::lonhtmlcommon::row_title($lt{'cdo'})
                   .$domainselectform                    .$domainselectform
                   .&Apache::lonhtmlcommon::row_closure();                    .&Apache::lonhtmlcommon::row_closure();
     }       } 
     if ($typeselectform) {      if ($typeselectform) {
         $output .= &Apache::lonhtmlcommon::row_title($lt{'cog'})          if (($env{'form.form'} eq 'ccrs') || ($env{'form.form'} eq 'requestcrs')) {
                   .$typeselectform              $output .= $typeselectform;
                   .&Apache::lonhtmlcommon::row_closure();          } else {
               $output .= &Apache::lonhtmlcommon::row_title($lt{'cog'})
                         .$typeselectform
                         .&Apache::lonhtmlcommon::row_closure();
           }
     }      }
     if ($instcodeform) {      if ($instcodeform) {
         $output .= &Apache::lonhtmlcommon::row_title($instcodetitle)          $output .= &Apache::lonhtmlcommon::row_title($instcodetitle)
Line 714  $multelement Line 774  $multelement
                   .&Apache::lonhtmlcommon::row_closure(1);                    .&Apache::lonhtmlcommon::row_closure(1);
     }      }
     $output .= &Apache::lonhtmlcommon::end_pick_box().'<p>';      $output .= &Apache::lonhtmlcommon::end_pick_box().'<p>';
     my $warning;      my ($coord_cloneable,$warning);
     if (($env{'form.form'} eq 'ccrs') || ($env{'form.form'} eq 'requestcrs')) {      if (($env{'form.form'} eq 'ccrs') || ($env{'form.form'} eq 'requestcrs')) {
         my $cloneruhome=&Apache::lonnet::homeserver($cloneruname,$clonerudom);          ($coord_cloneable,$warning) = 
         my $cc_clone;              &get_coordinator_cloneable($cloneruname,$clonerudom,$type);
         if ($cloneruhome eq 'no_host') {          if ($env{'form.form'} eq 'ccrs') {
             $warning = '<div class="LC_error">'.&mt('Intended course owner does not exist').              $output .= '<input type="hidden" name="cloner" value="'.$env{'form.cloner'}.'" />'."\n";
                        '</div>';  
         } else {  
             if ($env{'form.form'} eq 'ccrs') {  
                 $output .= '<input type="hidden" name="cloner" value="'.$env{'form.cloner'}.'" />'."\n";  
             }  
             my %ccroles = &Apache::lonnet::get_my_roles($cloneruname,$clonerudom,  
                                                         'userroles',['active'], ['cc']);  
             foreach my $key (sort(keys(%ccroles))) {  
                 my ($cnum,$cdom,$role) = split(':',$key);  
                 $cc_clone .= $cdom.':'.$cnum.'&';  
             }  
             $cc_clone =~ s/\&$//;  
         }          }
         if ($cc_clone ne '') {          if ($coord_cloneable) {
             $output .= '<input type="hidden" name="cc_clone" value="'.$cc_clone.'" />';              $output .= '<input type="hidden" name="cc_clone" value="'.$coord_cloneable.'" />';
         }          }
     }      }
     $output .= '<input type="hidden" name="updater" value="">'."\n".      $output .= '<input type="hidden" name="updater" value="">'."\n".
Line 743  $multelement Line 791  $multelement
     return $jscript.$warning.$output;      return $jscript.$warning.$output;
 }  }
   
   sub timebased_select_form {
       my ($item,$filter) = @_;
       if (ref($filter) eq 'HASH') {
           $filter->{$item} = $env{'form.'.$item};
           $filter->{$item} =~ s/[^\d-]//g;
           if (!$filter->{$item}) { $filter->{$item}=-1; }
           return &Apache::loncommon::select_form( 
                               $filter->{$item},
                               $item,
                               {      '-1' => '',
                                   '86400' => &mt('today'),
                                  '604800' => &mt('last week'),
                                 '2592000' => &mt('last month'),
                                 '7776000' => &mt('last three months'),
                                '15552000' => &mt('last six months'),
                                '31104000' => &mt('last year'),
                       'select_form_order' =>
                              ['-1','86400','604800','2592000','7776000',
                               '15552000','31104000']});
       }
   }
   
   sub get_coordinator_cloneable {
       my ($cloneruname,$clonerudom,$type) = @_;
       if (&Apache::lonnet::homeserver($cloneruname,$clonerudom) eq 'no_host') {
           my $warning = '<div class="LC_error">'.&mt('Intended course owner does not exist').
                      '</div>';
           return ('',$warning);
       } else {
           my ($cc_clone,$ccrole);
           if ($type eq 'Community') {
               $ccrole = 'co';
           } elsif ($type eq 'Course') {
               $ccrole = 'cc';
           }
           my %ccroles = &Apache::lonnet::get_my_roles($cloneruname,$clonerudom,
                                                       'userroles',['active'], [$ccrole]);
           foreach my $key (sort(keys(%ccroles))) {
               my ($cnum,$cdom,$role) = split(':',$key);
               $cc_clone .= $cdom.':'.$cnum.'&';
           }
           $cc_clone =~ s/\&$//;
           return ($cc_clone);
       }
   }
   
 sub instcode_selectors {  sub instcode_selectors {
     my ($codedom,$formname,$officialjs) = @_;      my ($codedom,$formname,$officialjs) = @_;
     my ($output,@codetitles,%cat_titles,%cat_order,%cat_items);      my ($output,@codetitles,%cat_titles,%cat_order,%cat_items);
Line 772  sub instcode_selectors { Line 866  sub instcode_selectors {
   
 sub search_courses {  sub search_courses {
     my ($r,$type,$onlyown,$filter,$numtitles,$cloneruname,$clonerudom) = @_;      my ($r,$type,$onlyown,$filter,$numtitles,$cloneruname,$clonerudom) = @_;
     my (%courses,%showcourses,$cloner);      my (%courses,%showcourses,$cloner,$ccrole);
       if ($type eq 'Community') {
           $ccrole = 'co';
       } else {
           $ccrole = 'cc';
       }
     if (!$onlyown) {      if (!$onlyown) {
         $r->print(&mt('Searching ...').'<br />&nbsp;<br />');          $r->print(&mt('Searching ...').'<br />&nbsp;<br />');
         $r->rflush();          $r->rflush();
Line 786  sub search_courses { Line 885  sub search_courses {
                 $filter->{$item}='.';                  $filter->{$item}='.';
             }              }
         }          }
           my $now = time;
         my $timefilter =           my $timefilter = 
            ($filter->{'sincefilter'}==-1?1:time-$filter->{'sincefilter'});             ($filter->{'sincefilter'}==-1?1:$now-$filter->{'sincefilter'});
           my ($createdbefore,$createdafter);
           if (($filter->{'createdfilter'} ne '') && ($filter->{'createdfilter'} !=-1)) {
               $createdbefore = $now;
               $createdafter = $now-$filter->{'createdfilter'};
           }
         my ($instcodefilter,$regexpok);          my ($instcodefilter,$regexpok);
         if ($numtitles) {          if ($numtitles) {
             if ($env{'form.official'} eq 'on') {              if ($env{'form.official'} eq 'on') {
Line 818  sub search_courses { Line 923  sub search_courses {
                                           $filter->{'coursefilter'},                                            $filter->{'coursefilter'},
                                           undef,undef,$type,$regexpok,undef,undef,                                            undef,undef,$type,$regexpok,undef,undef,
                                           undef,undef,$cloner,$env{'form.cc_clone'},                                            undef,undef,$cloner,$env{'form.cc_clone'},
                                           $filter->{'cloneableonly'});                                            $filter->{'cloneableonly'},
                                             $createdbefore,$createdafter);
         if (($filter->{'personfilter'} ne '') && ($filter->{'persondomfilter'} ne '')) {          if (($filter->{'personfilter'} ne '') && ($filter->{'persondomfilter'} ne '')) {
             my %rolehash = &Apache::lonnet::get_my_roles($filter->{'personfilter'},              my %rolehash = &Apache::lonnet::get_my_roles($filter->{'personfilter'},
                                                          $filter->{'persondomfilter'},                                                           $filter->{'persondomfilter'},
                                                          'userroles',undef,                                                           'userroles',undef,
                                                          ['cc','in','ad','ep','ta','cr'],                                                           [$ccrole,'in','ad','ep','ta','cr'],
                                                          $filter->{'domainfilter'});                                                           $filter->{'domainfilter'});
             foreach my $role (keys(%rolehash)) {              foreach my $role (keys(%rolehash)) {
                 my ($cnum,$cdom,$courserole) = split(':',$role);                  my ($cnum,$cdom,$courserole) = split(':',$role);
Line 880  sub gochoose_javascript { Line 986  sub gochoose_javascript {
                                  list  => 'courselist',                                   list  => 'courselist',
                                  },                                   },
                      'Community' => {                       'Community' => {
                                  name  => 'grouppick',                                   name  => 'coursepick',
                                  total => 'grouptotal',                                   total => 'coursetotal',
                                  list  => 'grouplist',                                   list  => 'courselist',
                               },                                },
                     );                      );
     my $output .= qq|      my $output .= qq|
Line 933  function gochoose(cname,cdom,cdesc) { Line 1039  function gochoose(cname,cdom,cdesc) {
     }      }
 ENDSCRIPT  ENDSCRIPT
     } else {      } else {
         my $name_code;          my ($name_code,$type_code);
         if ($env{'form.cnameelement'} ne '') {          if ($env{'form.cnameelement'} ne '') {
             $name_code = 'opener.document.'.$env{'form.form'}.'.'.              $name_code = 'opener.document.'.$env{'form.form'}.'.'.
                           $env{'form.cnameelement'}.'.value=cdesc;';                            $env{'form.cnameelement'}.'.value=cdesc;';
         }          }
           if ($env{'form.typeelement'} ne '') {
               $type_code = 'opener.document.'.$env{'form.form'}.'.'.
                             $env{'form.typeelement'}.'.value=document.courselist.type;';
           }
   
         $output .= qq|          $output .= qq|
         $name_code          $name_code
           $type_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'};
         if (slct.options == undefined) {          if (slct.options == undefined) {
Line 1081  Side Effects: None Line 1193  Side Effects: None
   
 =item *  =item *
 X<build_filters()>  X<build_filters()>
 B<build_filters($filterlist,$type,$roleelement,$multelement,$filter,$action,$numfiltersref,$caller,$cloneruname,$clonerudom)>:  B<build_filters($filterlist,$type,$roleelement,$multelement,$filter,$action,$numfiltersref,$caller,$cloneruname,$clonerudom,$typeelem)>:
   
   
 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); caller context (e.g., set to 'modifycourse' when routine is called from lonmodifycourse.pm).  Input: 11 - 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); caller context (e.g., set to 'modifycourse' when routine is called from lonmodifycourse.pm), username and domain of new course owner who wants to clone, $tyepelem 
   
 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. 
   

Removed from v.1.86  
changed lines
  Added in v.1.97


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