--- loncom/interface/lonpickcourse.pm 2013/03/01 04:55:35 1.106 +++ loncom/interface/lonpickcourse.pm 2014/03/17 02:45:25 1.112 @@ -1,7 +1,7 @@ # The LearningOnline Network # Pick a course # -# $Id: lonpickcourse.pm,v 1.106 2013/03/01 04:55:35 raeburn Exp $ +# $Id: lonpickcourse.pm,v 1.112 2014/03/17 02:45:25 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -36,7 +36,6 @@ use Apache::loncoursedata; use Apache::lonnet; use Apache::lonlocal; use Apache::longroup; -use Apache::courseclassifier; use LONCAPA qw(:DEFAULT :match); sub handler { @@ -108,9 +107,8 @@ sub handler { ($env{'form.pickedcourse'})) { $loaditem{'onload'} .= 'setDefaultCredits();setRoles();setSections();'; } - my $js = &js_changer(); - $r->print(&Apache::loncommon::start_page($title, - &Apache::lonhtmlcommon::scripttag($js), + my $js = &Apache::loncommon::js_changer(); + $r->print(&Apache::loncommon::start_page($title,$js, {'add_entries' => \%loaditem, 'no_nav_bar' => 1, })); @@ -142,8 +140,8 @@ sub handler { my $filter = {}; my $action = '/adm/pickcourse'; my ($numtitles,$showroles,$nohost,@codetitles); - if (!$onlyown) { - my $filterlist = ['domainfilter']; + unless ($onlyown) { + my $filterlist = ['domainfilter','sincefilter']; # created filter for DCs only if ($env{'user.adv'} && $env{'form.domainfilter'} && exists($env{'user.role.dc./'.$env{'form.domainfilter'}.'/'}) @@ -155,7 +153,15 @@ sub handler { } push(@{$filterlist},('descriptfilter','instcodefilter')); if ($env{'form.form'} eq 'rules') { - push(@{$filterlist},'personfilter'); + push(@{$filterlist},('personfilter','persondomfilter')); + if ($env{'form.persondomfilter'} eq '') { + unless ($env{'form.gosearch'}) { + $filter->{'persondomfilter'} = $env{'request.role.domain'}; + } + } else { + $filter->{'persondomfilter'} = + &LONCAPA::clean_domain($env{'form.persondomfilter'}); + } if (($env{'form.personfilter'} ne '') && ($env{'form.persondomfilter'} ne '')) { if (&Apache::lonnet::homeserver($env{'form.personfilter'}, $env{'form.persondomfilter'}) eq 'no_host') { @@ -165,7 +171,7 @@ sub handler { } } } else { - push(@{$filterlist},'ownerfilter'); + push(@{$filterlist},('ownerfilter','ownerdomfilter')); } # course ID filter for DCs only if ($env{'user.adv'} && $env{'form.domainfilter'} && @@ -175,10 +181,40 @@ sub handler { if ($cloneruname ne '' && $clonerudom ne '') { push(@{$filterlist},'cloneableonly'); } - - $r->print(&build_filters($filterlist,$type,$roleelement,$multelement, - $filter,$action,\$numtitles,undef,$cloneruname, - $clonerudom,$typeelement,\@codetitles)); + if ((ref($filterlist) eq 'ARRAY') && (ref($filter) eq 'HASH')) { + foreach my $item (@{$filterlist}) { + $filter->{$item} = $env{'form.'.$item}; + } + } + if ($env{'form.form'} eq 'portform') { + $filter->{'domainfilter'} ||= $env{'user.domain'}; + } elsif ($env{'form.form'} eq 'studentform') { + $filter->{'domainfilter'} ||= $env{'request.role.domain'}; + } + my $codedom; + if ($env{'form.fixeddom'}) { + $codedom = $env{'request.role.domain'}; + } else { + $codedom = $filter->{'domainfilter'}; + } + my ($clonetext,$clonewarning); + if (($env{'form.form'} eq 'ccrs') || ($env{'form.form'} eq 'requestcrs')) { + (my $coord_cloneable,$clonewarning) = + &get_coordinator_cloneable($cloneruname,$clonerudom,$type); + if ($env{'form.form'} eq 'ccrs') { + $clonetext = ''."\n"; + } + if ($coord_cloneable) { + $clonetext .= ''; + } + } + $r->print(&Apache::loncommon::build_filters($filterlist,$type,$roleelement,$multelement, + $filter,$action,\$numtitles,undef,$cloneruname, + $clonerudom,$typeelement,\@codetitles,$codedom, + $env{'form.form'},$env{'form.fixeddom'}, + $env{'form.prevphase'},$env{'form.cnameelement'}, + $env{'form.cnumelement'},$env{'form.cdomelement'}, + $env{'form.setroles'},$clonetext,$clonewarning)); } # ---------------------------------------------------------------- Get the data @@ -191,8 +227,21 @@ sub handler { $domcloner = 1; } } - my %courses = &search_courses($r,$type,$onlyown,$filter,$numtitles, - $cloneruname,$clonerudom,$domcloner,\@codetitles); + my %courses; + if (!$onlyown) { + $r->print('
'.&mt('None found').'
'); } elsif ($multiple) { - $r->print(''); + $r->print(''); } $r->print(''. "\n".''."\n". @@ -559,293 +592,6 @@ sub multiples_tag { return ($jscript,$multelement); } -sub build_filters { - my ($filterlist,$type,$roleelement,$multelement,$filter,$action, - $numtitlesref,$caller,$cloneruname,$clonerudom,$typeelement,$codetitlesref) = @_; - my ($list,$formname,$fixeddom,$codedom,$jscript); - $codedom = $env{'request.role.domain'}; - if (defined($env{'form.form'})) { - $formname = $env{'form.form'}; - } else { - $formname = $caller; - } - my $onchange = 'javascript:updateFilters(this)'; - my ($domainselectform,$sincefilterform,$createdfilterform, - $ownerdomselectform,$persondomselectform,$instcodeform, - $typeselectform,$instcodetitle); - foreach my $item (@{$filterlist}) { - $filter->{$item} = $env{'form.'.$item}; - if ($item ne 'descriptfilter' && $item ne 'instcodefilter') { - if ($item eq 'domainfilter') { - $filter->{$item} = &LONCAPA::clean_domain($filter->{$item}); - } elsif ($item eq 'coursefilter') { - $filter->{$item} = &LONCAPA::clean_courseid($filter->{$item}); - } elsif ($item eq 'ownerfilter') { - $filter->{$item} = &LONCAPA::clean_username($filter->{$item}); - $filter->{'ownerdomfilter'} = - &LONCAPA::clean_domain($env{'form.ownerdomfilter'}); - $ownerdomselectform = - &Apache::loncommon::select_dom_form($filter->{'ownerdomfilter'}, - 'ownerdomfilter',1); - } elsif ($item eq 'personfilter') { - $filter->{$item} = &LONCAPA::clean_username($filter->{$item}); - if ($env{'form.persondomfilter'} eq '') { - unless ($env{'form.gosearch'}) { - $filter->{'persondomfilter'} = $env{'request.role.domain'}; - } - } else { - $filter->{'persondomfilter'} = - &LONCAPA::clean_domain($env{'form.persondomfilter'}); - } - $persondomselectform = - &Apache::loncommon::select_dom_form($filter->{'persondomfilter'}, - 'persondomfilter',1); - } else { - $filter->{$item} =~ s/\W//g; - } - if (!$filter->{$item}) { - $filter->{$item} = ''; - } - } - 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; - } - if ($env{'form.fixeddom'}) { - $domainselectform = ''. - &Apache::lonnet::domain($env{'request.role.domain'}, - 'description'); - $codedom = $env{'request.role.domain'}; - } else { - $domainselectform = - &Apache::loncommon::select_dom_form($filter->{$item}, - 'domainfilter', - $allow_blank,'',$onchange); - $codedom = $filter->{'domainfilter'}; - } - } else { - $list->{$item} = &HTML::Entities::encode($filter->{$item},'<>&"'); - } - } - - # last course activity filter and selection - $sincefilterform = &timebased_select_form('sincefilter',$filter); - - # course created filter and selection - if (exists($filter->{'createdfilter'})) { - $createdfilterform = &timebased_select_form('createdfilter',$filter); - } - - my %lt = &Apache::lonlocal::texthash( - 'cac' => "$type Activity", - 'ccr' => "$type Created", - 'cde' => "$type Title", - 'cdo' => "$type Domain", - 'ins' => 'Institutional Code', - 'inc' => 'Institutional Categorization', - 'cow' => "$type Owner/Co-owner", - 'cop' => "$type Personnel Includes", - 'cog' => 'Type', - ); - - if (($env{'form.form'} eq 'ccrs') || ($env{'form.form'} eq 'requestcrs')) { - my $typeval = 'Course'; - if ($type eq 'Community') { - $typeval = 'Community'; - } - $typeselectform = ''; - } else { - $typeselectform = '"; - } - - my ($cloneableonlyform,$cloneabletitle); - if (exists($filter->{'cloneableonly'})) { - my $cloneableon = ''; - my $cloneableoff = ' checked="checked"'; - if ($filter->{'cloneableonly'}) { - $cloneableon = $cloneableoff; - $cloneableoff = ''; - } - $cloneableonlyform = ''.(' 'x3).''; - if ($env{'form.form'} eq 'ccrs') { - $cloneabletitle = &mt('Cloneable for').' '.$cloneruname.':'.$clonerudom; - } else { - $cloneabletitle = &mt('Cloneable by you'); - } - } - my $officialjs; - if ($type eq 'Course') { - if (exists($filter->{'instcodefilter'})) { - if (($env{'form.fixeddom'}) || ($formname eq 'requestcrs') - || ($formname eq 'modifycourse')) { - $officialjs = 1; - ($instcodeform,$jscript,$$numtitlesref) = - &instcode_selectors($codedom,'filterpicker',$officialjs,$codetitlesref); - if ($jscript) { - $jscript = ''."\n"; - } - } - if ($instcodeform eq '') { - $instcodeform = - ''; - $instcodetitle = $lt{'ins'}; - } else { - $instcodetitle = $lt{'inc'}; - } - if ($env{'form.fixeddom'}) { - $instcodetitle .= '