--- loncom/interface/lonpickcourse.pm 2010/03/08 14:43:46 1.93 +++ loncom/interface/lonpickcourse.pm 2010/03/16 05:11:40 1.94 @@ -1,7 +1,7 @@ # The LearningOnline Network # Pick a course # -# $Id: lonpickcourse.pm,v 1.93 2010/03/08 14:43:46 raeburn Exp $ +# $Id: lonpickcourse.pm,v 1.94 2010/03/16 05:11:40 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -142,8 +142,16 @@ sub handler { my $action = '/adm/pickcourse'; my ($numtitles,$showroles,$nohost); if (!$onlyown) { - my $filterlist = ['domainfilter','descriptfilter', - 'instcodefilter']; + my $filterlist = ['domainfilter']; + # created filter for DCs only + if ($env{'user.adv'} && $env{'form.domainfilter'} && + exists($env{'user.role.dc./'.$env{'form.domainfilter'}.'/'})) { + 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') { push(@{$filterlist},'personfilter'); if (($env{'form.personfilter'} ne '') && ($env{'form.persondomfilter'} ne '')) { @@ -531,8 +539,9 @@ sub build_filters { unless ($env{'form.interface'} eq 'textual') { $onchange = 'javascript:updateFilters(this)'; } - my ($domainselectform,$sincefilterform,$ownerdomselectform,$persondomselectform, - $instcodeform,$typeselectform,$instcodetitle); + 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') { @@ -595,25 +604,16 @@ sub build_filters { } # last course activity filter and selection - $filter->{'sincefilter'} = $env{'form.sincefilter'}; - $filter->{'sincefilter'} =~ s/[^\d-]//g; - if (!$filter->{'sincefilter'}) { $filter->{'sincefilter'}=-1; } - $sincefilterform=&Apache::loncommon::select_form( - $filter->{'sincefilter'}, - 'sincefilter', - ( '-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'])); + $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', @@ -719,6 +719,11 @@ $typeelement .$sincefilterform .&Apache::lonhtmlcommon::row_closure(); } + if ($createdfilterform) { + $output .= &Apache::lonhtmlcommon::row_title($lt{'ccr'}) + .$createdfilterform + .&Apache::lonhtmlcommon::row_closure(); + } if ($domainselectform) { $output .= &Apache::lonhtmlcommon::row_title($lt{'cdo'}) .$domainselectform @@ -788,6 +793,28 @@ $typeelement 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') { @@ -860,8 +887,14 @@ sub search_courses { $filter->{$item}='.'; } } + my $now = time; 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); if ($numtitles) { if ($env{'form.official'} eq 'on') { @@ -892,7 +925,8 @@ sub search_courses { $filter->{'coursefilter'}, undef,undef,$type,$regexpok,undef,undef, undef,undef,$cloner,$env{'form.cc_clone'}, - $filter->{'cloneableonly'}); + $filter->{'cloneableonly'}, + $createdbefore,$createdafter); if (($filter->{'personfilter'} ne '') && ($filter->{'persondomfilter'} ne '')) { my %rolehash = &Apache::lonnet::get_my_roles($filter->{'personfilter'}, $filter->{'persondomfilter'},