version 1.89, 2009/11/03 14:32:44
|
version 1.100, 2010/09/23 21:50:37
|
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 137 sub handler {
|
Line 140 sub handler {
|
# ------------------------------------------ Display of filters to limit search |
# ------------------------------------------ Display of filters to limit search |
my $filter = {}; |
my $filter = {}; |
my $action = '/adm/pickcourse'; |
my $action = '/adm/pickcourse'; |
my ($numtitles,$showroles,$nohost); |
my ($numtitles,$showroles,$nohost,@codetitles); |
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,\@codetitles)); |
} |
} |
|
|
# ---------------------------------------------------------------- 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); |
$cloneruname,$clonerudom,$domcloner,\@codetitles); |
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 303 sub display_matched_courses {
|
Line 322 sub display_matched_courses {
|
} |
} |
my $cctitle = &Apache::lonnet::plaintext($ccrole,$type); |
my $cctitle = &Apache::lonnet::plaintext($ccrole,$type); |
my $dctitle = &Apache::lonnet::plaintext('dc'); |
my $dctitle = &Apache::lonnet::plaintext('dc'); |
my $ccrolechk = ' checked="checked" '; |
my $ccrolechk = ' '; |
my $menuchk = ' '; |
my $menuchk = ' checked="checked" '; |
if ($env{'form.prevphase'} ne '') { |
|
$ccrolechk = ' '; |
|
$menuchk = ' checked="checked" '; |
|
} |
|
$r->print( |
$r->print( |
'<fieldset>' |
'<fieldset>' |
.'<legend>'.&mt('Action').'</legend>' |
.'<legend>'.&mt('Action').'</legend>' |
Line 377 sub display_matched_courses {
|
Line 392 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 389 sub display_matched_courses {
|
Line 412 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 ($env{'form.form'} eq 'ccrs') { |
if ($cloners ne '') { |
if (($env{'request.role.domain'} eq $cdom) && |
my @cloneable = split(',',$cloners); |
(&Apache::lonnet::allowed('ccc',$env{'request.role.domain'}))) { |
if (grep(/^\*$/,@cloneable)) { |
|
$canclone = 1; |
$canclone = 1; |
} |
} |
if (grep(/^\*:\Q$env{'form.clonerudom'}\E$/,@cloneable)) { |
} |
|
unless ($canclone) { |
|
if ($cc_cloneable{$cnum.':'.$cdom}) { |
$canclone = 1; |
$canclone = 1; |
} |
} |
if (grep(/^\Q$cloneruname\E:\Q$clonerudom\E$/,@cloneable)) { |
} |
$canclone = 1; |
unless ($canclone) { |
|
my $cloners = $courses{$course}{'cloners'}; |
|
if ($cloners ne '') { |
|
my @cloneable = split(',',$cloners); |
|
if (grep(/^\*$/,@cloneable)) { |
|
$canclone = 1; |
|
} |
|
if (grep(/^\*:\Q$clonerudom\E$/,@cloneable)) { |
|
$canclone = 1; |
|
} |
|
if (grep(/^\Q$cloneruname\E:\Q$clonerudom\E$/,@cloneable)) { |
|
$canclone = 1; |
|
} |
} |
} |
} |
} |
} |
} |
Line 414 sub display_matched_courses {
|
Line 450 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>'); |
Line 481 sub display_matched_courses {
|
Line 517 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 502 sub multiples_tag {
|
Line 543 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,$codetitlesref) = @_; |
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 510 sub build_filters {
|
Line 551 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 578 sub build_filters {
|
Line 617 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') |
|
); |
); |
|
|
if (($env{'form.form'} eq 'ccrs') || ($env{'form.form'} eq 'requestcrs')) { |
if (($env{'form.form'} eq 'ccrs') || ($env{'form.form'} eq 'requestcrs')) { |
Line 645 sub build_filters {
|
Line 677 sub build_filters {
|
|| ($formname eq 'modifycourse')) { |
|| ($formname eq 'modifycourse')) { |
$officialjs = 1; |
$officialjs = 1; |
($instcodeform,$jscript,$$numtitlesref) = |
($instcodeform,$jscript,$$numtitlesref) = |
&instcode_selectors($codedom,'filterpicker',$officialjs); |
&instcode_selectors($codedom,'filterpicker',$officialjs,$codetitlesref); |
if ($jscript) { |
if ($jscript) { |
$jscript = '<script type="text/javascript" language="Javascript">'. |
$jscript = '<script type="text/javascript" language="Javascript">'. |
$jscript.'</script>'."\n"; |
$jscript.'</script>'."\n"; |
Line 685 sub build_filters {
|
Line 717 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 699 $multelement
|
Line 732 $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 |
Line 751 $multelement
|
Line 789 $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 { |
|
my $ccrole; |
|
if ($type eq 'Community') { |
|
$ccrole = 'co'; |
|
} elsif ($type eq 'Course') { |
|
$ccrole = 'cc'; |
|
} |
|
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'], [$ccrole]); |
|
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 786 $multelement
|
Line 806 $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 (($cloneruname!~/\w/) || ($clonerudom!~/\w/)) { |
|
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'). |
|
'</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,$codetitles) = @_; |
my ($output,@codetitles,%cat_titles,%cat_order,%cat_items); |
my ($output,%cat_titles,%cat_order,%cat_items); |
my ($jscript,$totcodes,$numtitles,$lasttitle) = |
my ($jscript,$totcodes,$numtitles,$lasttitle) = |
&Apache::courseclassifier::instcode_selectors_data($codedom,$formname, |
&Apache::courseclassifier::instcode_selectors_data($codedom,$formname, |
\%cat_items,\@codetitles,\%cat_titles,\%cat_order,$officialjs); |
\%cat_items,$codetitles,\%cat_titles,\%cat_order,$officialjs); |
if ($numtitles > 0) { |
if ($numtitles > 0) { |
my $official = ' checked="checked" '; |
my $official = ' checked="checked" '; |
my $unofficial = ''; |
my $unofficial = ''; |
Line 805 sub instcode_selectors {
|
Line 875 sub instcode_selectors {
|
'<input type="radio" name="official" value="off"'.$unofficial. |
'<input type="radio" name="official" value="off"'.$unofficial. |
' onclick="toggleOfficial();" />'.&mt('No').'</label></span><br />'. |
' onclick="toggleOfficial();" />'.&mt('No').'</label></span><br />'. |
&Apache::courseclassifier::build_instcode_selectors($numtitles, |
&Apache::courseclassifier::build_instcode_selectors($numtitles, |
$lasttitle,\%cat_items,\@codetitles,\%cat_titles,\%cat_order)."\n". |
$lasttitle,\%cat_items,$codetitles,\%cat_titles,\%cat_order)."\n". |
'<input type="hidden" name="numtitles" value="'.$numtitles.'" />'."\n". |
'<input type="hidden" name="numtitles" value="'.$numtitles.'" />'."\n". |
'<input type="hidden" name="state" value="listing" />'."\n"; |
'<input type="hidden" name="state" value="listing" />'."\n"; |
|
|
Line 814 sub instcode_selectors {
|
Line 884 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,$domcloner,$codetitles) = @_; |
my (%courses,%showcourses,$cloner,$ccrole); |
my (%courses,%showcourses,$cloner,$ccrole); |
if ($type eq 'Community') { |
if ($type eq 'Community') { |
$ccrole = 'co'; |
$ccrole = 'co'; |
Line 834 sub search_courses {
|
Line 904 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') { |
$instcodefilter = |
$instcodefilter = |
&Apache::courseclassifier::instcode_search_str($filter->{'domainfilter'},$numtitles); |
&Apache::courseclassifier::instcode_search_str($filter->{'domainfilter'},$numtitles,$codetitles); |
$regexpok = 1; |
$regexpok = 1; |
} elsif ($env{'form.official'} eq 'off') { |
} elsif ($env{'form.official'} eq 'off') { |
$instcodefilter = &Apache::courseclassifier::instcode_search_str($filter->{'domainfilter'},$numtitles); |
$instcodefilter = &Apache::courseclassifier::instcode_search_str($filter->{'domainfilter'},$numtitles,$codetitles); |
unless ($instcodefilter eq '') { |
unless ($instcodefilter eq '') { |
$regexpok = -1; |
$regexpok = -1; |
} |
} |
Line 866 sub search_courses {
|
Line 942 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,undef, |
|
$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 981 function gochoose(cname,cdom,cdesc) {
|
Line 1059 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 1129 Side Effects: None
|
Line 1213 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,$codetitlesref>: |
|
|
|
|
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: 12 - 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, $typeelem; reference to array of titles of components in institutional codes (official courses). |
|
|
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. |
|
|
Line 1140 Side Effects: None
|
Line 1224 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,$codetitles)>: |
|
|
|
|
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). |
Input: 9 - 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). Ninth is reference to array of titles of components in institutional codes (official courses). |
|
|
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. |
|
|