Diff for /loncom/interface/lonpickcourse.pm between versions 1.93.2.3 and 1.94

version 1.93.2.3, 2010/11/13 14:43:08 version 1.94, 2010/03/16 05:11:40
Line 143  sub handler { Line 143  sub handler {
     my ($numtitles,$showroles,$nohost);      my ($numtitles,$showroles,$nohost);
     if (!$onlyown) {      if (!$onlyown) {
         my $filterlist = ['domainfilter'];          my $filterlist = ['domainfilter'];
           # created filter for DCs only
         if ($env{'user.adv'} && $env{'form.domainfilter'} &&          if ($env{'user.adv'} && $env{'form.domainfilter'} &&
             exists($env{'user.role.dc./'.$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'});              my $loncaparev = &Apache::lonnet::get_server_loncaparev($env{'form.domainfilter'});
             if ($loncaparev ne 'unknown_cmd') {              if ($loncaparev ne 'unknown_cmd') {
                 push(@{$filterlist},'createdfilter');                  push(@{$filterlist},'createdfilter');
             }              }
         }          }
         push(@{$filterlist},('descriptfilter','instcodefilter'));          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 183  sub handler { Line 182  sub handler {
 # ---------------------------------------------------------------- Get the data  # ---------------------------------------------------------------- Get the data
     if ((($env{'form.gosearch'}) && ($env{'form.updater'} eq '')) ||       if ((($env{'form.gosearch'}) && ($env{'form.updater'} eq '')) || 
          $onlyown) {           $onlyown) {
         my $domcloner;  
         if ($env{'form.form'} eq 'ccrs') {  
             if (($env{'request.role.domain'} eq $env{'form.domainfilter'}) &&  
                 (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'}))) {  
                 $domcloner = 1;  
             }  
         }  
         my %courses = &search_courses($r,$type,$onlyown,$filter,$numtitles,          my %courses = &search_courses($r,$type,$onlyown,$filter,$numtitles,
                                       $cloneruname,$clonerudom,$domcloner);                                        $cloneruname,$clonerudom);
         if ($nohost) {          if ($nohost) {
             $r->print ('<span class="LC_warning">'.              $r->print ('<span class="LC_warning">'.
                        &mt('User does not exist - username: [_1], domain: [_2].',                         &mt('User does not exist - username: [_1], domain: [_2].',
Line 412  sub display_matched_courses { Line 404  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')) {
                     if ($env{'form.form'} eq 'ccrs') {                      if ($cc_cloneable{$courses{$course}{'cnum'}.':'.$courses{$course}{'domain'}}) {
                         if (($env{'request.role.domain'} eq $cdom) &&                          $canclone = 1;
                             (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'}))) {  
                             $canclone = 1;  
                         }  
                     }  
                     unless ($canclone) {  
                         if ($cc_cloneable{$cnum.':'.$cdom}) {  
                             $canclone = 1;  
                         }  
                     }                      }
                     unless ($canclone) {                      unless ($canclone) {
                         my $cloners = $courses{$course}{'cloners'};                          my $cloners = $courses{$course}{'cloners'};
Line 430  sub display_matched_courses { Line 414  sub display_matched_courses {
                             if (grep(/^\*$/,@cloneable)) {                              if (grep(/^\*$/,@cloneable)) {
                                 $canclone = 1;                                  $canclone = 1;
                             }                              }
                             if (grep(/^\*:\Q$clonerudom\E$/,@cloneable)) {                              if (grep(/^\*:\Q$env{'form.clonerudom'}\E$/,@cloneable)) {
                                 $canclone = 1;                                  $canclone = 1;
                             }                              }
                             if (grep(/^\Q$cloneruname\E:\Q$clonerudom\E$/,@cloneable)) {                              if (grep(/^\Q$cloneruname\E:\Q$clonerudom\E$/,@cloneable)) {
Line 619  sub build_filters { Line 603  sub build_filters {
         }          }
     }      }
   
   
     # last course activity filter and selection      # last course activity filter and selection
     $sincefilterform = &timebased_select_form('sincefilter',$filter);      $sincefilterform = &timebased_select_form('sincefilter',$filter);
   
Line 630  sub build_filters { Line 613  sub build_filters {
   
     my %lt = &Apache::lonlocal::texthash(      my %lt = &Apache::lonlocal::texthash(
                 'cac' => "$type Activity",                  'cac' => "$type Activity",
                 'ccr' => "$type Created",                  'ccr' => "$type Created", 
                 'cde' => "$type Title",                  'cde' => "$type Title",
                 'cdo' => "$type Domain",                  'cdo' => "$type Domain",
                 'ins' => 'Institutional Code',                  'ins' => 'Institutional Code',
Line 816  sub timebased_select_form { Line 799  sub timebased_select_form {
         $filter->{$item} = $env{'form.'.$item};          $filter->{$item} = $env{'form.'.$item};
         $filter->{$item} =~ s/[^\d-]//g;          $filter->{$item} =~ s/[^\d-]//g;
         if (!$filter->{$item}) { $filter->{$item}=-1; }          if (!$filter->{$item}) { $filter->{$item}=-1; }
         return &Apache::loncommon::select_form(          return &Apache::loncommon::select_form( 
                             $filter->{$item},                              $filter->{$item},
                             $item,                              $item,
                             (      '-1' => '',                              (      '-1' => '',
Line 834  sub timebased_select_form { Line 817  sub timebased_select_form {
   
 sub get_coordinator_cloneable {  sub get_coordinator_cloneable {
     my ($cloneruname,$clonerudom,$type) = @_;      my ($cloneruname,$clonerudom,$type) = @_;
     if (($cloneruname!~/\w/) || ($clonerudom!~/\w/)) {      if (&Apache::lonnet::homeserver($cloneruname,$clonerudom) eq 'no_host') {
         my $warning = '<div class="LC_warning">'.&mt('Intended course owner not specified').  
                       '</div>';  
         return ('',$warning);  
     } elsif (&Apache::lonnet::homeserver($cloneruname,$clonerudom) eq 'no_host') {  
         my $warning = '<div class="LC_error">'.&mt('Intended course owner does not exist').          my $warning = '<div class="LC_error">'.&mt('Intended course owner does not exist').
                    '</div>';                     '</div>';
         return ('',$warning);          return ('',$warning);
Line 888  sub instcode_selectors { Line 867  sub instcode_selectors {
 }  }
   
 sub search_courses {  sub search_courses {
     my ($r,$type,$onlyown,$filter,$numtitles,$cloneruname,$clonerudom,$domcloner) = @_;      my ($r,$type,$onlyown,$filter,$numtitles,$cloneruname,$clonerudom) = @_;
     my (%courses,%showcourses,$cloner,$ccrole);      my (%courses,%showcourses,$cloner,$ccrole);
     if ($type eq 'Community') {      if ($type eq 'Community') {
         $ccrole = 'co';          $ccrole = 'co';
Line 909  sub search_courses { Line 888  sub search_courses {
             }              }
         }          }
         my $now = time;          my $now = time;
         my $timefilter =          my $timefilter = 
            ($filter->{'sincefilter'}==-1?1:$now-$filter->{'sincefilter'});             ($filter->{'sincefilter'}==-1?1:$now-$filter->{'sincefilter'});
         my ($createdbefore,$createdafter);          my ($createdbefore,$createdafter);
         if (($filter->{'createdfilter'} ne '') && ($filter->{'createdfilter'} !=-1)) {          if (($filter->{'createdfilter'} ne '') && ($filter->{'createdfilter'} !=-1)) {
Line 947  sub search_courses { Line 926  sub search_courses {
                                           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,undef,                                            $createdbefore,$createdafter);
                                           $domcloner);  
         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'},
Line 1228  Side Effects: None Line 1206  Side Effects: None
   
 =item *  =item *
 X<search_courses()>  X<search_courses()>
 B<search_courses($r,$type,$onlyown,$filter,$numtitles,$cloneruname,$clonerudom,  B<search_courses($r,$type,$onlyown,$filter,$numtitles,$cloneruname,$clonerudom)>:
                  $domcloner)>:  
   
   
 Input: 8 -  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; optional username of new course owner, optional domain of new course owner). Seventh and eighth needed when search is for courses to clone from course request form, or course creation form (DC). Optional "domcloner" flag (has value=1 if user has ccc priv in domain being filtered by (used when DC is using course creation form).  Input: 7 -  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; optional username of new course owner, optional domain of new course owner). Last two needed when search is for courses to clone from course request form, or course creation form (DC).   
   
 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.93.2.3  
changed lines
  Added in v.1.94


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