version 1.78, 2009/05/01 01:38:20
|
version 1.83, 2009/07/25 23:16:04
|
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']); |
'multiple','type','setroles','fixeddom']); |
|
|
my ($type,$title,$jscript,$multelement,$multiple,$roleelement, |
my ($type,$title,$jscript,$multelement,$multiple,$roleelement, |
$lastaction,$autosubmit,$submitopener); |
$lastaction,$autosubmit,$submitopener); |
|
|
# Get course type - Course or Non-standard Course. |
# Get course type - Course or Community. |
$type = $env{'form.type'}; |
$type = $env{'form.type'}; |
if (!defined($env{'form.type'})) { |
if (!defined($env{'form.type'})) { |
$type = 'Course'; |
$type = 'Course'; |
} |
} |
$title = &mt('Selecting a [_1]',$type); |
$title = 'Selecting a '.$type; |
|
|
# Setup for multiple course selections, if flag for multiples set. |
# Setup for multiple course selections, if flag for multiples set. |
$multiple = $env{'form.multiple'}; |
$multiple = $env{'form.multiple'}; |
if ($multiple) { |
if ($multiple) { |
($jscript,$multelement) = &multiples_tag(); |
($jscript,$multelement) = &multiples_tag(); |
$title = &mt('Selecting [_1](s)',lc($type)); |
$title = 'Selecting '.$type.'(s)'; |
} |
} |
|
|
# if called when a DC is selecting a course |
# if called when a DC is selecting a course |
Line 116 sub handler {
|
Line 115 sub handler {
|
if ($env{'form.gosearch'} || $onlyown) { |
if ($env{'form.gosearch'} || $onlyown) { |
$r->print(&gochoose_javascript($type,$multiple,$autosubmit,$lastaction)); |
$r->print(&gochoose_javascript($type,$multiple,$autosubmit,$lastaction)); |
} |
} |
$r->print('<script type="text/javascript">'.$jscript.'</script>'); |
$r->print('<script type="text/javascript" language="Javascript">'.$jscript. |
|
'</script>'); |
$r->print($submitopener); |
$r->print($submitopener); |
|
|
# ------------------------------------------ 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; |
my ($numtitles,$showroles,$nohost); |
if (!$onlyown) { |
if (!$onlyown) { |
my $filterlist = ['domainfilter','descriptfilter', |
my $filterlist = ['domainfilter','descriptfilter', |
'instcodefilter','ownerfilter', |
'instcodefilter']; |
'ownerdomfilter']; |
if ($env{'form.form'} eq 'rules') { |
|
push(@{$filterlist},'personfilter'); |
|
if (($env{'form.personfilter'} ne '') && ($env{'form.persondomfilter'} ne '')) { |
|
if (&Apache::lonnet::homeserver($env{'form.personfilter'}, |
|
$env{'form.persondomfilter'}) eq 'no_host') { |
|
$nohost = 1; |
|
} else { |
|
$showroles = 1; |
|
} |
|
} |
|
} else { |
|
push(@{$filterlist},'ownerfilter'); |
|
} |
# course ID filter for DCs only |
# course ID 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'}.'/'})) { |
Line 139 sub handler {
|
Line 151 sub handler {
|
# ---------------------------------------------------------------- Get the data |
# ---------------------------------------------------------------- Get the data |
if ($env{'form.gosearch'} || $onlyown) { |
if ($env{'form.gosearch'} || $onlyown) { |
my %courses = &search_courses($r,$type,$onlyown,$filter,$numtitles); |
my %courses = &search_courses($r,$type,$onlyown,$filter,$numtitles); |
&display_matched_courses($r,$type,$multiple,$action,%courses); |
if ($nohost) { |
|
$r->print ('<span class="LC_warning">'. |
|
&mt('User does not exist - username: [_1], domain: [_2].', |
|
'<b>'.$filter->{'personfilter'}.'</b>', |
|
'<b>'.$filter->{'persondomfilter'}.'</b>').'</span>'); |
|
} else { |
|
&display_matched_courses($r,$type,$multiple,$action,$showroles,%courses); |
|
} |
} |
} |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
return OK; |
return OK; |
Line 217 function setSections() {
|
Line 236 function setSections() {
|
} |
} |
|
|
sub display_matched_courses { |
sub display_matched_courses { |
my ($r,$type,$multiple,$action,%courses) = @_; |
my ($r,$type,$multiple,$action,$showroles,%courses) = @_; |
if ($env{'form.form'} eq 'portform') { |
if ($env{'form.form'} eq 'portform') { |
$action = '/adm/portfolio'; |
$action = '/adm/portfolio'; |
} |
} |
Line 281 sub display_matched_courses {
|
Line 300 sub display_matched_courses {
|
.'<th>'.&mt('Owner/Co-owner(s)').'</th>' |
.'<th>'.&mt('Owner/Co-owner(s)').'</th>' |
.'<th>'.&mt('Type').'</th>' |
.'<th>'.&mt('Type').'</th>' |
); |
); |
|
if ($showroles) { |
|
$r->print('<th>'.&mt("Role(s) for [_1]", |
|
&Apache::loncommon::plainname($env{'form.personfilter'}, |
|
$env{'form.persondomfilter'},'firstname')).'</th>'); |
|
} |
$r->print(&Apache::loncommon::end_data_table_header_row()); |
$r->print(&Apache::loncommon::end_data_table_header_row()); |
} |
} |
foreach my $description (sort { lc($a) cmp lc($b) } (keys(%by_descrip))) { |
foreach my $description (sort { lc($a) cmp lc($b) } (keys(%by_descrip))) { |
Line 327 sub display_matched_courses {
|
Line 351 sub display_matched_courses {
|
$r->print(' '); |
$r->print(' '); |
} |
} |
$r->print('</td>'); |
$r->print('</td>'); |
|
if ($showroles) { |
|
$r->print('<td>'); |
|
my $rolestr; |
|
if (ref($courses{$course}{'roles'}) eq 'ARRAY') { |
|
my @roles = sort(@{$courses{$course}{'roles'}}); |
|
foreach my $role (@roles) { |
|
if ($role =~ /^cr/) { |
|
my (undef,$crdom,$crname,$crtitle) = split('/',$role); |
|
$rolestr .= $crtitle.', '; |
|
} else { |
|
$rolestr .= &Apache::lonnet::plaintext($role,$ttype).', '; |
|
} |
|
} |
|
$rolestr =~ s/\, $//; |
|
} |
|
$r->print($rolestr.'</td>'); |
|
} |
if ($multiple) { $r->print("</label>\n"); } |
if ($multiple) { $r->print("</label>\n"); } |
$r->print(&Apache::loncommon::end_data_table_row()); |
$r->print(&Apache::loncommon::end_data_table_row()); |
# $r->print("<br />\n"); |
# $r->print("<br />\n"); |
Line 381 sub multiples_tag {
|
Line 422 sub multiples_tag {
|
|
|
sub build_filters { |
sub build_filters { |
my ($filterlist,$type,$roleelement,$multelement,$filter,$action, |
my ($filterlist,$type,$roleelement,$multelement,$filter,$action, |
$numtitlesref) = @_; |
$numtitlesref,$caller) = @_; |
my $list; |
my $list; |
my $formname; |
my $formname; |
my ($fixeddom,$codedom,$jscript); |
my ($fixeddom,$codedom,$jscript); |
if (defined($env{'form.form'})) { |
if (defined($env{'form.form'})) { |
$formname = $env{'form.form'}; |
$formname = $env{'form.form'}; |
|
} else { |
|
$formname = $caller; |
} |
} |
my ($domainselectform,$sincefilterform,$ownerdomselectform, |
my ($domainselectform,$sincefilterform,$ownerdomselectform,$persondomselectform, |
$instcodeform,$typeselectform,$instcodetitle); |
$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') { |
if ($item eq 'domainfilter' || $item eq 'ownerdomfilter') { |
if ($item eq 'domainfilter') { |
$filter->{$item} = &LONCAPA::clean_domain($filter->{$item}); |
$filter->{$item} = &LONCAPA::clean_domain($filter->{$item}); |
} elsif ($item eq 'coursefilter') { |
} elsif ($item eq 'coursefilter') { |
$filter->{$item} = &LONCAPA::clean_courseid($filter->{$item}); |
$filter->{$item} = &LONCAPA::clean_courseid($filter->{$item}); |
} elsif ($item eq 'ownerfilter') { |
} elsif ($item eq 'ownerfilter') { |
$filter->{$item} = &LONCAPA::clean_username($filter->{$item}); |
$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 { |
} else { |
$filter->{$item} =~ s/\W//g; |
$filter->{$item} =~ s/\W//g; |
} |
} |
Line 421 sub build_filters {
|
Line 482 sub build_filters {
|
&Apache::lonnet::domain($env{'request.role.domain'}, |
&Apache::lonnet::domain($env{'request.role.domain'}, |
'description'); |
'description'); |
$codedom = $env{'request.role.domain'}; |
$codedom = $env{'request.role.domain'}; |
} else { |
} else { |
$domainselectform = |
$domainselectform = |
&Apache::loncommon::select_dom_form($filter->{$item}, |
&Apache::loncommon::select_dom_form($filter->{$item}, |
'domainfilter', |
'domainfilter', |
$allow_blank); |
$allow_blank); |
$codedom = $filter->{'domainfilter'}; |
$codedom = $filter->{'domainfilter'}; |
} |
} |
} elsif ($item eq 'ownerdomfilter') { |
|
$ownerdomselectform = |
|
&Apache::loncommon::select_dom_form($filter->{$item},'ownerdomfilter',1); |
|
} else { |
} else { |
$list->{$item} = &HTML::Entities::encode($filter->{$item},'<>&"'); |
$list->{$item} = &HTML::Entities::encode($filter->{$item},'<>&"'); |
} |
} |
Line 458 sub build_filters {
|
Line 516 sub build_filters {
|
'cdo' => &mt("$type Domain"), |
'cdo' => &mt("$type Domain"), |
'ins' => &mt('Institutional Code'), |
'ins' => &mt('Institutional Code'), |
'inc' => &mt('Institutional Categorization'), |
'inc' => &mt('Institutional Categorization'), |
'cow' => &mt("$type Owner's Username"), |
'cow' => &mt("$type Owner/Co-owner"), |
'cod' => &mt("$type Owner's Domain"), |
'cop' => &mt("$type Personnel Includes"), |
'cog' => &mt('Course Type') |
'cog' => &mt('Course Type') |
); |
); |
|
|
$typeselectform = '<select name="type" size="1">'."\n"; |
$typeselectform = '<select name="type" size="1">'."\n"; |
|
my $officialjs; |
if ($type eq 'Course') { |
if ($type eq 'Course') { |
if ($env{'form.fixeddom'}) { |
if ($env{'form.fixeddom'}) { |
|
$officialjs = 1; |
($instcodeform,$jscript,$$numtitlesref) = |
($instcodeform,$jscript,$$numtitlesref) = |
&instcode_selectors($codedom,'filterpicker'); |
&instcode_selectors($codedom,'filterpicker',$officialjs); |
} |
} |
if ($instcodeform eq '') { |
if ($instcodeform eq '') { |
$instcodeform = |
$instcodeform = |
Line 485 sub build_filters {
|
Line 545 sub build_filters {
|
'</script>'."\n"; |
'</script>'."\n"; |
} |
} |
} |
} |
foreach my $posstype ('Course','Non-standard Course') { |
foreach my $posstype ('Course','Community') { |
$typeselectform.='<option value="'.$posstype.'"'. |
$typeselectform.='<option value="'.$posstype.'"'. |
($posstype eq $type ? ' selected="selected" ' : ''). ">".&mt($posstype)."</option>\n"; |
($posstype eq $type ? ' selected="selected" ' : ''). ">".&mt($posstype)."</option>\n"; |
} |
} |
Line 540 $multelement
|
Line 600 $multelement
|
.&Apache::lonhtmlcommon::row_closure(); |
.&Apache::lonhtmlcommon::row_closure(); |
} |
} |
if (exists($filter->{'ownerfilter'})) { |
if (exists($filter->{'ownerfilter'})) { |
$output .= &Apache::lonhtmlcommon::row_title($lt{'cow'}) |
$output .= &Apache::lonhtmlcommon::row_title($lt{'cow'}). |
.'<input type="text" name="ownerfilter" size="20" value="' |
'<table><tr><td>'.&mt('Username').'<br />'. |
.$list->{'ownerfilter'}.'" />' |
'<input type="text" name="ownerfilter" size="20" value="'. |
.&Apache::lonhtmlcommon::row_closure() |
$list->{'ownerfilter'}.'" /></td><td>'.&mt('Domain').'<br />'. |
.&Apache::lonhtmlcommon::row_title($lt{'cod'}) |
$ownerdomselectform.'</td></tr></table>'. |
.$ownerdomselectform |
&Apache::lonhtmlcommon::row_closure(); |
.&Apache::lonhtmlcommon::row_closure(); |
} |
|
if (exists($filter->{'personfilter'})) { |
|
$output .= &Apache::lonhtmlcommon::row_title($lt{'cop'}). |
|
'<table><tr><td>'.&mt('Username').'<br />'. |
|
'<input type="text" name="personfilter" size="20" value="'. |
|
$list->{'personfilter'}.'" /></td><td>'.&mt('Domain').'<br />'. |
|
$persondomselectform.'</td></tr></table>'. |
|
&Apache::lonhtmlcommon::row_closure(); |
} |
} |
if (exists($filter->{'coursefilter'})) { |
if (exists($filter->{'coursefilter'})) { |
$output .= &Apache::lonhtmlcommon::row_title(&mt('LON-CAPA course ID')) |
$output .= &Apache::lonhtmlcommon::row_title(&mt('LON-CAPA course ID')) |
Line 567 $multelement
|
Line 634 $multelement
|
} |
} |
|
|
sub instcode_selectors { |
sub instcode_selectors { |
my ($codedom,$formname) = @_; |
my ($codedom,$formname,$officialjs) = @_; |
my ($output,@codetitles,%cat_titles,%cat_order,%cat_items); |
my ($output,@codetitles,%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); |
\%cat_items,\@codetitles,\%cat_titles,\%cat_order,$officialjs); |
if ($numtitles > 0) { |
if ($numtitles > 0) { |
$output = &Apache::courseclassifier::build_instcode_selectors($numtitles, |
my $unofficial = ' checked="checked" '; |
$lasttitle,\%cat_items,\@codetitles,\%cat_titles,\%cat_order)."\n". |
my $official = ''; |
'<input type="hidden" name="numtitles" value="'.$numtitles.'" />'."\n". |
if ($env{'form.official'}) { |
'<input type="hidden" name="state" value="listing" />'."\n"; |
$official = $unofficial; |
|
$unofficial = ''; |
|
} |
|
$output .= '<span class="LC_nobreak">'.&mt('Official course:').' <label>'. |
|
'<input type="radio" name="official" value="1"'.$official.' />'. |
|
&mt('Yes').'</label>'.(' 'x3).'<label>'. |
|
'<input type="radio" name="official" value="0"'.$unofficial. |
|
' onclick="toggleOfficial();" />'.&mt('No').'</label></span><br />'. |
|
&Apache::courseclassifier::build_instcode_selectors($numtitles, |
|
$lasttitle,\%cat_items,\@codetitles,\%cat_titles,\%cat_order)."\n". |
|
'<input type="hidden" name="numtitles" value="'.$numtitles.'" />'."\n". |
|
'<input type="hidden" name="state" value="listing" />'."\n"; |
|
|
} |
} |
return ($output,$jscript,$numtitles); |
return ($output,$jscript,$numtitles); |
Line 584 sub instcode_selectors {
|
Line 662 sub instcode_selectors {
|
|
|
sub search_courses { |
sub search_courses { |
my ($r,$type,$onlyown,$filter,$numtitles) = @_; |
my ($r,$type,$onlyown,$filter,$numtitles) = @_; |
my %courses; |
my (%courses,%showcourses); |
if (!$onlyown) { |
if (!$onlyown) { |
$r->print(&mt('Searching ...').'<br /> <br />'); |
$r->print(&mt('Searching ...').'<br /> <br />'); |
$r->rflush(); |
$r->rflush(); |
Line 593 sub search_courses {
|
Line 671 sub search_courses {
|
$filter->{'combownerfilter'} = $filter->{'ownerfilter'}.':'. |
$filter->{'combownerfilter'} = $filter->{'ownerfilter'}.':'. |
$filter->{'ownerdomfilter'}; |
$filter->{'ownerdomfilter'}; |
} |
} |
foreach my $item ('descriptfilter','instcodefilter','coursefilter', |
foreach my $item ('descriptfilter','coursefilter','combownerfilter') { |
'combownerfilter') { |
|
if (!$filter->{$item}) { |
if (!$filter->{$item}) { |
$filter->{$item}='.'; |
$filter->{$item}='.'; |
} |
} |
} |
} |
if ($type eq '') { $type = '.'; } |
|
my $timefilter = |
my $timefilter = |
($filter->{'sincefilter'}==-1?1:time-$filter->{'sincefilter'}); |
($filter->{'sincefilter'}==-1?1:time-$filter->{'sincefilter'}); |
my ($instcodefilter,$regexpok); |
my ($instcodefilter,$regexpok); |
if ($numtitles) { |
if ($numtitles) { |
$instcodefilter = |
if ($env{'form.official'}) { |
&Apache::courseclassifier::instcode_search_str($filter->{'domainfilter'}, |
$instcodefilter = |
$numtitles); |
&Apache::courseclassifier::instcode_search_str($filter->{'domainfilter'}, |
$regexpok = 1; |
$numtitles); |
|
$regexpok = 1; |
|
} |
} else { |
} else { |
$instcodefilter = $filter->{'instcodefilter'}; |
$instcodefilter = $filter->{'instcodefilter'}; |
} |
} |
|
if ($instcodefilter eq '') { $instcodefilter = '.'; } |
|
if ($type eq '') { $type = '.'; } |
%courses = |
%courses = |
&Apache::lonnet::courseiddump($filter->{'domainfilter'}, |
&Apache::lonnet::courseiddump($filter->{'domainfilter'}, |
$filter->{'descriptfilter'}, |
$filter->{'descriptfilter'}, |
Line 619 sub search_courses {
|
Line 699 sub search_courses {
|
$filter->{'combownerfilter'}, |
$filter->{'combownerfilter'}, |
$filter->{'coursefilter'}, |
$filter->{'coursefilter'}, |
undef,undef,$type,$regexpok); |
undef,undef,$type,$regexpok); |
|
if (($filter->{'personfilter'} ne '') && ($filter->{'persondomfilter'} ne '')) { |
|
my %rolehash = &Apache::lonnet::get_my_roles($filter->{'personfilter'}, |
|
$filter->{'persondomfilter'}, |
|
'userroles',undef, |
|
['cc','in','ad','ep','ta','cr'], |
|
$filter->{'domainfilter'}); |
|
foreach my $role (keys(%rolehash)) { |
|
my ($cnum,$cdom,$courserole) = split(':',$role); |
|
my $cid = $cdom.'_'.$cnum; |
|
if (exists($courses{$cid})) { |
|
if (ref($courses{$cid}) eq 'HASH') { |
|
if (ref($courses{$cid}{roles}) eq 'ARRAY') { |
|
if (!grep(/^\Q$courserole\E$/,@{$courses{$cid}{roles}})) { |
|
push (@{$courses{$cid}{roles}},$courserole); |
|
} |
|
} else { |
|
$courses{$cid}{roles} = [$courserole]; |
|
} |
|
$showcourses{$cid} = $courses{$cid}; |
|
} |
|
} |
|
} |
|
%courses = %showcourses; |
|
} |
} else { |
} else { |
$r->print('<br />'); |
$r->print('<br />'); |
my %coursehash = &Apache::loncommon::findallcourses(); |
my %coursehash = &Apache::loncommon::findallcourses(); |
Line 649 sub gochoose_javascript {
|
Line 753 sub gochoose_javascript {
|
total => 'coursetotal', |
total => 'coursetotal', |
list => 'courselist', |
list => 'courselist', |
}, |
}, |
'Non-standard Course' => { |
'Community' => { |
name => 'grouppick', |
name => 'grouppick', |
total => 'grouptotal', |
total => 'grouptotal', |
list => 'grouplist', |
list => 'grouplist', |
Line 766 Course Activity - how recently was cours
|
Line 870 Course Activity - how recently was cours
|
Course Domain - the domain of the course |
Course Domain - the domain of the course |
|
|
=item * |
=item * |
Course Type - Course or Non-standard Course |
Course Type - Course or Community |
|
|
=item * |
=item * |
Course Institutional Code - the institutional identifier assigned to the course |
Course Institutional Code - the institutional identifier assigned to the course |
Line 819 Following selection, and/or submission,
|
Line 923 Following selection, and/or submission,
|
X<create_user_javascript()> |
X<create_user_javascript()> |
B<create_user_javascript($type)>: |
B<create_user_javascript($type)>: |
|
|
Input: 1 - $type - the course type - Course or Non-standard Course |
Input: 1 - $type - the course type - Course or Community |
|
|
Output: 1 - $output - javascript wrapped in E<lt>scriptE<gt>E<lt>/scriptE<gt> tags |
Output: 1 - $output - javascript wrapped in E<lt>scriptE<gt>E<lt>/scriptE<gt> tags |
|
|
Line 830 javascript code for reporting selected s
|
Line 934 javascript code for reporting selected s
|
|
|
=item * |
=item * |
X<display_matched_courses()> |
X<display_matched_courses()> |
B<display_matched_courses($r,$type,$multiple,$action,%courses)>: |
B<display_matched_courses($r,$type,$multiple,$action,$showroles,%courses)>: |
|
|
Input: 5 - request object, course type, multiple (0 or 1), form action; hash of courses. |
Input: 7 - request object, course type, multiple (0 or 1), form action, whether to show roles (for course personnel filter), hash of courses. |
|
|
Output: 0 |
Output: 0 |
|
|
Line 851 Side Effects: None
|
Line 955 Side Effects: None
|
|
|
=item * |
=item * |
X<build_filters()> |
X<build_filters()> |
B<build_filters($filterlist,$type,$roleelement,$multelement,$filter,$action,$numfiltersref)>: |
B<build_filters($filterlist,$type,$roleelement,$multelement,$filter,$action,$numfiltersref,$caller)>: |
|
|
|
|
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). |
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). |
|
|
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. |
|
|