version 1.56, 2006/11/13 20:50:57
|
version 1.60.2.2, 2006/12/11 22:22:06
|
Line 35 use Apache::loncoursedata;
|
Line 35 use Apache::loncoursedata;
|
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::longroup; |
use Apache::longroup; |
use lib '/home/httpd/lib/perl/'; |
|
use LONCAPA; |
use LONCAPA; |
|
|
sub handler { |
sub handler { |
Line 55 sub handler {
|
Line 54 sub handler {
|
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 Non-standard Course. |
$type = $env{'form.type'}; |
$type = $env{'form.type'}; |
if (!defined($env{'form.type'})) { |
if (!defined($env{'form.type'})) { |
$type = 'Course'; |
$type = 'Course'; |
Line 79 sub handler {
|
Line 78 sub handler {
|
|
|
my $onlyown = 0; |
my $onlyown = 0; |
# if called to assign course-based portfolio access control |
# if called to assign course-based portfolio access control |
if ((($env{'form.form'} eq 'portform') && ($env{'user.adv'}))) { |
if ((($env{'form.form'} eq 'portform') && (!$env{'user.adv'}))) { |
$onlyown = 1; |
$onlyown = 1; |
} |
} |
|
|
Line 108 sub handler {
|
Line 107 sub handler {
|
|
|
# print javascript functions for choosing a course |
# print javascript functions for choosing a course |
if ($env{'form.gosearch'} || $onlyown) { |
if ($env{'form.gosearch'} || $onlyown) { |
$r->print(&gochoose_javascript($type,$autosubmit,$lastaction)); |
$r->print(&gochoose_javascript($type,$multiple,$autosubmit,$lastaction)); |
} |
} |
$r->print('<script type="text/javascript">'.$jscript.'</script>'); |
$r->print('<script type="text/javascript">'.$jscript.'</script>'); |
$r->print($submitopener); |
$r->print($submitopener); |
|
|
# ------------------------------------------ Display of filters to limit search |
# ------------------------------------------ Display of filters to limit search |
my (%filter,%list); |
my $filter = {}; |
|
my $action = '/adm/pickcourse'; |
if (!$onlyown) { |
if (!$onlyown) { |
my $filterlist = ['domainfilter','descriptfilter', |
my $filterlist = ['domainfilter','descriptfilter', |
'instcodefilter','ownerfilter', |
'instcodefilter','ownerfilter', |
Line 125 sub handler {
|
Line 125 sub handler {
|
push(@{$filterlist},'coursefilter'); |
push(@{$filterlist},'coursefilter'); |
} |
} |
$r->print(&build_filters($filterlist,$type,$roleelement,$multelement, |
$r->print(&build_filters($filterlist,$type,$roleelement,$multelement, |
\%filter,\%list)); |
$filter,$action)); |
} |
} |
|
|
# ---------------------------------------------------------------- Get the data |
# ---------------------------------------------------------------- Get the data |
if ($env{'form.gosearch'} || $onlyown) { |
if ($env{'form.gosearch'} || $onlyown) { |
my %courses = &search_courses($r,$type,$onlyown,\%filter); |
my %courses = &search_courses($r,$type,$onlyown,$filter); |
&display_matched_courses($r,$type,$multiple,%courses); |
&display_matched_courses($r,$type,$multiple,$action,%courses); |
} |
} |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
return OK; |
return OK; |
Line 166 function setSections() {
|
Line 166 function setSections() {
|
} |
} |
|
|
sub display_matched_courses { |
sub display_matched_courses { |
my ($r,$type,$multiple,%courses) = @_; |
my ($r,$type,$multiple,$action,%courses) = @_; |
my $action = '/adm/pickcourse'; |
|
if ($env{'form.form'} eq 'portform') { |
if ($env{'form.form'} eq 'portform') { |
$action = '/adm/portfolio'; |
$action = '/adm/portfolio'; |
} |
} |
Line 217 sub display_matched_courses {
|
Line 216 sub display_matched_courses {
|
if (!%courses) { |
if (!%courses) { |
$r->print(&mt('None found')); |
$r->print(&mt('None found')); |
} elsif ($multiple) { |
} elsif ($multiple) { |
$r->print('<input type="button" value="Submit" onClick="gochoose('."'','','',1)".'" />'); |
$r->print('<input type="button" value="Submit" onClick="gochoose('."'','','')".'" />'); |
} |
} |
$r->print('<input type="hidden" name="form" value="'.$env{'form.form'}.'" />'. |
$r->print('<input type="hidden" name="form" value="'.$env{'form.form'}.'" />'. |
"\n".'<input type="hidden" name="pickedcourse" value="" />'."\n". |
"\n".'<input type="hidden" name="pickedcourse" value="" />'."\n". |
'<input type="hidden" name="cnumelement" value="'.$env{'form.cnumelement'}.'" />'."\n". |
|
'<input type="hidden" name="cdomelement" value="'.$env{'form.cdomelement'}.'" />'."\n". |
|
'<input type="hidden" name="type" value="'.$type.'" />'."\n"); |
'<input type="hidden" name="type" value="'.$type.'" />'."\n"); |
if ((exists($env{'form.roleelement'})) && ($env{'form.form'} eq 'rolechoice')) { |
if ((exists($env{'form.roleelement'})) && ($env{'form.form'} eq 'rolechoice')) { |
$r->print('<input type="hidden" name="roleelement" value="'. |
$r->print('<input type="hidden" name="roleelement" value="'. |
Line 233 sub display_matched_courses {
|
Line 230 sub display_matched_courses {
|
$r->print('<input type="hidden" name="cdom" value="" />'); |
$r->print('<input type="hidden" name="cdom" value="" />'); |
$r->print('<input type="hidden" name="setroles" value="'.$env{'form.setroles'}.'" />'); |
$r->print('<input type="hidden" name="setroles" value="'.$env{'form.setroles'}.'" />'); |
$r->print('<input type="hidden" name="action" value="rolepicker" />'); |
$r->print('<input type="hidden" name="action" value="rolepicker" />'); |
|
} elsif ($env{'form.form'} eq 'modifycourse') { |
|
$r->print('<input type="hidden" name="phase" value="menu" />'."\n"); |
|
$r->print(&Apache::lonhtmlcommon::echo_form_input(['phase','pickedcourse','type','form'])); |
|
} else { |
|
$r->print('<input type="hidden" name="cnumelement" value="'. |
|
$env{'form.cnumelement'}.'" />'."\n". |
|
'<input type="hidden" name="cdomelement" value="'. |
|
$env{'form.cdomelement'}.'" />'."\n"); |
} |
} |
$r->print("</form>\n"); |
$r->print("</form>\n"); |
return; |
return; |
Line 246 sub multiples_tag {
|
Line 251 sub multiples_tag {
|
} |
} |
|
|
sub build_filters { |
sub build_filters { |
my ($filterlist,$type,$roleelement,$multelement,$filter) = @_; |
my ($filterlist,$type,$roleelement,$multelement,$filter,$action, |
|
$caller) = @_; |
my $list; |
my $list; |
|
my $formname; |
|
if (defined($env{'form.form'})) { |
|
$formname = $env{'form.form'}; |
|
} else { |
|
$formname = $caller; |
|
} |
my ($domainselectform,$sincefilterform,$ownerdomselectform, |
my ($domainselectform,$sincefilterform,$ownerdomselectform, |
$instcodeform,$typeselectform); |
$instcodeform,$typeselectform); |
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') { |
$filter->{$item} =~ s/\W//g; |
if ($item eq 'domainfilter' || $item eq 'ownerdomfilter') { |
|
$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}); |
|
} else { |
|
$filter->{$item} =~ s/\W//g; |
|
} |
if (!$filter->{$item}) { |
if (!$filter->{$item}) { |
$filter->{$item} = ''; |
$filter->{$item} = ''; |
} |
} |
Line 298 sub build_filters {
|
Line 318 sub build_filters {
|
$typeselectform = '<select name="type" size="1"'; |
$typeselectform = '<select name="type" size="1"'; |
$typeselectform .= ">\n"; |
$typeselectform .= ">\n"; |
if ($type eq 'Course') { |
if ($type eq 'Course') { |
$instcodeform = $lt{'cin'}.': <input type="text" name="instcodefilter" |
$instcodeform = |
size="10" value="'.$list->{'instcodefilter'}.'" /><br />'; |
'<input type="text" name="instcodefilter" size="10" value="'. |
|
$list->{'instcodefilter'}.'" />'; |
} |
} |
foreach my $posstype ('Course','Non-standard course') { |
foreach my $posstype ('Course','Non-standard Course') { |
$typeselectform.='<option value="'.$posstype.'" "'. |
$typeselectform.='<option value="'.$posstype.'" "'. |
($posstype eq $type ? 'selected="selected" ' : ''). ">$posstype</option>\n"; |
($posstype eq $type ? 'selected="selected" ' : ''). ">$posstype</option>\n"; |
} |
} |
$typeselectform.="</select>"; |
$typeselectform.="</select>"; |
my $name_input; |
my $output = qq| |
if ($env{'form.cnameelement'} ne '') { |
<form method="post" name="filterpicker" action="$action"> |
$name_input ='<input type="hidden" name="cnameelement" value="'. |
<input type="hidden" name="form" value="$formname" /> |
$env{'form.cnameelement'}.'" />'; |
|; |
} |
if ($formname eq 'modifycourse') { |
my $courseidtag; |
$output .= '<input type="hidden" name="phase" value="courselist" />'; |
if (exists($filter->{'coursefilter'})) { |
} else { |
$courseidtag=&mt('LON-CAPA course ID'). |
my $name_input; |
': <input type="text" name="coursefilter" size="25" value="'. $list->{'coursefilter'}.'" /><br />'; |
if ($env{'form.cnameelement'} ne '') { |
} |
$name_input = '<input type="hidden" name="cnameelement" value="'. |
my $output = <<"END"; |
$env{'form.cnameelement'}.'" />'; |
<form method="post" name="filterpicker" action="/adm/pickcourse"> |
} |
|
$output .= qq| |
<input type="hidden" name="cnumelement" value="$env{'form.cnumelement'}" /> |
<input type="hidden" name="cnumelement" value="$env{'form.cnumelement'}" /> |
<input type="hidden" name="cdomelement" value="$env{'form.cdomelement'}" /> |
<input type="hidden" name="cdomelement" value="$env{'form.cdomelement'}" /> |
$name_input |
$name_input |
<input type="hidden" name="form" value="$env{'form.form'}" /> |
|
$roleelement |
$roleelement |
$multelement |
$multelement |
$lt{'cac'}: $sincefilterform |
|; |
<br /> |
if ($formname eq 'portform') { |
$lt{'cdo'}: $domainselectform |
$output .= '<input type="hidden" name="setroles" value="'.$env{'form.setroles'}.'" />'; |
<br /> |
} |
$lt{'cog'}: $typeselectform |
} |
<br /> |
if ($sincefilterform) { |
$instcodeform |
$output .= $lt{'cac'}.': '.$sincefilterform.'<br />'."\n"; |
$lt{'cow'}: |
} |
<input type="text" name="ownerfilter" size="10" value="$list->{'ownerfilter'}" /> |
if ($domainselectform) { |
<br /> |
$output .= $lt{'cdo'}.': '.$domainselectform.'<br />'."\n"; |
$lt{'cod'}: $ownerdomselectform |
} |
<br /> |
# if ($typeselectform) { |
$courseidtag |
# $output .= $lt{'cog'}.': '.$typeselectform.'<br />'."\n"; |
$lt{'cde'}: |
# } |
<input type="text" name="descriptfilter" size="40" value="$list->{'descriptfilter'}" /> |
if ($instcodeform) { |
|
$output .= $lt{'cin'}.': '.$instcodeform.'<br />'."\n"; |
|
} |
|
if (exists($filter->{'ownerfilter'})) { |
|
$output .= $lt{'cow'}.': '. |
|
'<input type="text" name="ownerfilter" size="10" value="'. |
|
$list->{'ownerfilter'}.'" /><br />'."\n". |
|
$lt{'cod'}.': '.$ownerdomselectform.'<br />'."\n"; |
|
} |
|
if (exists($filter->{'coursefilter'})) { |
|
$output .= &mt('LON-CAPA course ID').': '. |
|
'<input type="text" name="coursefilter" size="25" value="'. |
|
$list->{'coursefilter'}.'" /><br />'; |
|
} |
|
if (exists($filter->{'descriptfilter'})) { |
|
$output .=$lt{'cde'}.': '. |
|
'<input type="text" name="descriptfilter" size="40" value="'. |
|
$list->{'descriptfilter'}.'" />'."\n"; |
|
} |
|
$output .= qq| |
<p><input type="submit" name="gosearch" value="Search" /></p> |
<p><input type="submit" name="gosearch" value="Search" /></p> |
</form> |
</form> |
<hr /> |
<hr /> |
END |
|; |
return $output; |
return $output; |
} |
} |
|
|
Line 376 sub search_courses {
|
Line 416 sub search_courses {
|
undef,undef,$type); |
undef,undef,$type); |
} else { |
} else { |
$r->print('<br />'); |
$r->print('<br />'); |
foreach my $cid (sort(&Apache::loncommon::findallcourses())) { |
my %coursehash = &Apache::loncommon::findallcourses(); |
|
foreach my $cid (sort(keys(%coursehash))) { |
$courses{$cid} = $env{'course.'.$cid.'.description'}; |
$courses{$cid} = $env{'course.'.$cid.'.description'}; |
} |
} |
} |
} |
Line 396 sub course_chooser {
|
Line 437 sub course_chooser {
|
} |
} |
|
|
sub gochoose_javascript { |
sub gochoose_javascript { |
my ($type,$autosubmit,$lastaction) = @_; |
my ($type,$multiple,$autosubmit,$lastaction) = @_; |
my %elements = ( |
my %elements = ( |
'Course' => { |
'Course' => { |
name => 'coursepick', |
name => 'coursepick', |
total => 'coursetotal', |
total => 'coursetotal', |
list => 'courselist', |
list => 'courselist', |
}, |
}, |
'Non-standard course' => { |
'Non-standard Course' => { |
name => 'grouppick', |
name => 'grouppick', |
total => 'grouptotal', |
total => 'grouptotal', |
list => 'grouplist', |
list => 'grouplist', |
}, |
}, |
); |
); |
my $name_code; |
my $output .= qq| |
if ($env{'form.cnameelement'} ne '') { |
|
$name_code = 'opener.document.'.$env{'form.form'}.'.'. |
|
$env{'form.cnameelement'}.'.value=cdesc;'; |
|
} |
|
my $output .= <<"ENDSCRIPT"; |
|
<script type="text/javascript"> |
<script type="text/javascript"> |
function gochoose(cname,cdom,cdesc,multiple,caller) { |
function gochoose(cname,cdom,cdesc) { |
var openerForm = "$env{'form.form'}"; |
var openerForm = "$env{'form.form'}"; |
courseCount = 0; |
courseCount = 0; |
var courses = ''; |
var courses = ''; |
if (multiple) { |
|; |
if (typeof(document.courselist.course_id.length) == 'undefined') { |
if ($multiple) { |
// only 1 course checkbox was created |
$output .= <<"ENDSCRIPT"; |
if (document.courselist.course_id.checked) { |
courseCount = 0; |
courses = courses + document.courselist.course_id.value + "&&"; |
var courses = ''; |
|
if (typeof(document.courselist.course_id.length) == 'undefined') { |
|
// only 1 course checkbox was created |
|
if (document.courselist.course_id.checked) { |
|
courses = courses + document.courselist.course_id.value + "&&"; |
|
courseCount ++; |
|
} |
|
} else { |
|
for (var j=0; j<document.courselist.course_id.length; j++) { |
|
if (document.courselist.course_id[j].checked) { |
|
courses = courses + document.courselist.course_id[j].value + "&&"; |
courseCount ++; |
courseCount ++; |
} |
} |
|
} |
|
} |
|
opener.document.$env{'form.form'}.$elements{$type}{'total'}.value = courseCount; |
|
if (typeof(opener.document.$env{'form.form'}.$elements{$type}{'name'}.length) == |
|
'undefined') { |
|
if (opener.document.$env{'form.form'}.$elements{$type}{'name'}.value == 'specific') { |
|
opener.document.$env{'form.form'}.$elements{$type}{'name'}.checked = true; |
} else { |
} else { |
for (var j=0; j<document.courselist.course_id.length; j++) { |
opener.document.$env{'form.form'}.$elements{$type}{'name'}.checked = false; |
if (document.courselist.course_id[j].checked) { |
|
courses = courses + document.courselist.course_id[j].value + "&&"; |
|
courseCount ++; |
|
} |
|
} |
|
} |
} |
opener.document.$env{'form.form'}.$elements{$type}{'total'}.value = courseCount; |
} else { |
if (typeof(opener.document.$env{'form.form'}.$elements{$type}{'name'}.length) == |
for (var j=0; j<opener.document.$env{'form.form'}.$elements{$type}{'name'}.length; j++) { |
'undefined') { |
if (opener.document.$env{'form.form'}.$elements{$type}{'name'}\[j].value == 'specific') { |
if (opener.document.$env{'form.form'}.$elements{$type}{'name'}.value == 'specific') { |
opener.document.$env{'form.form'}.$elements{$type}{'name'}\[j].checked = true; |
opener.document.$env{'form.form'}.$elements{$type}{'name'}.checked = true; |
|
} else { |
} else { |
opener.document.$env{'form.form'}.$elements{$type}{'name'}.checked = false; |
opener.document.$env{'form.form'}.$elements{$type}{'name'}\[j].checked = false; |
} |
} |
} else { |
|
for (var j=0; j<opener.document.$env{'form.form'}.$elements{$type}{'name'}.length; j++) { |
|
if (opener.document.$env{'form.form'}.$elements{$type}{'name'}\[j].value == 'specific') { |
|
opener.document.$env{'form.form'}.$elements{$type}{'name'}\[j].checked = true; |
|
} else { |
|
opener.document.$env{'form.form'}.$elements{$type}{'name'}\[j].checked = false; |
|
} |
|
} |
|
} |
|
if (courseCount > 0) { |
|
courses = courses.substr(0,courses.length-2); |
|
opener.document.$env{'form.form'}.$elements{$type}{'list'}.value = courses; |
|
} |
} |
|
} |
|
if (courseCount > 0) { |
|
courses = courses.substr(0,courses.length-2); |
|
opener.document.$env{'form.form'}.$elements{$type}{'list'}.value = courses; |
|
} |
|
ENDSCRIPT |
} else { |
} else { |
|
my $name_code; |
|
if ($env{'form.cnameelement'} ne '') { |
|
$name_code = 'opener.document.'.$env{'form.form'}.'.'. |
|
$env{'form.cnameelement'}.'.value=cdesc;'; |
|
} |
|
$output .= qq| |
$name_code |
$name_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'}; |
Line 469 function gochoose(cname,cdom,cdesc,multi
|
Line 516 function gochoose(cname,cdom,cdesc,multi
|
if (slct.options[i].value==cdom) { slct.selectedIndex=i; } |
if (slct.options[i].value==cdom) { slct.selectedIndex=i; } |
} |
} |
} |
} |
|
|; |
} |
} |
|
$output .= qq| |
if (openerForm == 'portform') { |
if (openerForm == 'portform') { |
document.courselist.cnum.value = cname; |
document.courselist.cnum.value = cname; |
document.courselist.cdom.value = cdom; |
document.courselist.cdom.value = cdom; |
Line 478 function gochoose(cname,cdom,cdesc,multi
|
Line 527 function gochoose(cname,cdom,cdesc,multi
|
$lastaction |
$lastaction |
} |
} |
</script> |
</script> |
ENDSCRIPT |
|; |
return $output; |
return $output; |
} |
} |
|
|
Line 512 Course Activity - how recently was cours
|
Line 561 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 Non-standard Course |
|
|
=item * |
=item * |
Course Institutional Code - the institutional identifier assigned to the course |
Course Institutional Code - the institutional identifier assigned to the course |
Line 565 Following selection, and/or submission,
|
Line 614 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 Non-standard Course |
|
|
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 576 javascript code for reporting selected s
|
Line 625 javascript code for reporting selected s
|
|
|
=item * |
=item * |
X<display_matched_courses()> |
X<display_matched_courses()> |
B<display_matched_courses($r,$type,$multiple,%courses)>: |
B<display_matched_courses($r,$type,$multiple,$action,%courses)>: |
|
|
Input: 4 - request object, course type, multiple (0 or 1), hash of courses. |
Input: 5 - request object, course type, multiple (0 or 1), form action; hash of courses. |
|
|
Output: 0 |
Output: 0 |
|
|
Line 597 Side Effects: None
|
Line 646 Side Effects: None
|
|
|
=item * |
=item * |
X<build_filters()> |
X<build_filters()> |
B<build_filters($filterlist,$type,$roleelement,$multelement,$filter)>: |
B<build_filters($filterlist,$type,$roleelement,$multelement,$filter,$action)>: |
|
|
|
|
Input: 5 - anonymous array of search criteria; course type; $roleelement ; $multelement ; anonymous hash of criteria and their values. |
Input: 6 - anonymous array of search criteria; course type; $roleelement ; $multelement ; anonymous hash of criteria and their values; form action. |
|
|
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 631 Side Effects: None
|
Line 680 Side Effects: None
|
|
|
=item * |
=item * |
X<gochoose_javascript()> |
X<gochoose_javascript()> |
B<gochoose_javascript($type,$autosubmit,$lastaction)>: |
B<gochoose_javascript($type,$multiple,$autosubmit,$lastaction)>: |
|
|
Input: 3 - course type; in context of DC selecting a CC role in a course: javascript code from Apache::lonroles::processpick(); final action to take after user chooses course(s): either close window, or submit form for display of next page etc. |
Input: 4 - course type; single (0) or multiple courses (1); in context of DC selecting a CC role in a course: javascript code from Apache::lonroles::processpick(); final action to take after user chooses course(s): either close window, or submit form for display of next page etc. |
|
|
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 |
|
|