[LON-CAPA-cvs] cvs: loncom /interface lonpickcourse.pm
raeburn
lon-capa-cvs@mail.lon-capa.org
Tue, 14 Nov 2006 16:51:42 -0000
This is a MIME encoded message
--raeburn1163523102
Content-Type: text/plain
raeburn Tue Nov 14 11:51:42 2006 EDT
Modified files:
/loncom/interface lonpickcourse.pm
Log:
Fix capitalizations in course types.
Include $action argument in &build_filters() to allow use outside lonpickcourse.pm.
Include $action argunment in &display_matched_courses() to allow use outside lonpickcourse.pm.
Include filterlist argument in &build_filters to allow restrictions to be placed on which filters are displayed.
Add $multiple argument to &gochoose_javascript(). Different Javascript function code now emitted depending on whether multiple course selections are allowed or not.
Updated documentation.
--raeburn1163523102
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20061114115142.txt"
Index: loncom/interface/lonpickcourse.pm
diff -u loncom/interface/lonpickcourse.pm:1.56 loncom/interface/lonpickcourse.pm:1.57
--- loncom/interface/lonpickcourse.pm:1.56 Mon Nov 13 15:50:57 2006
+++ loncom/interface/lonpickcourse.pm Tue Nov 14 11:51:42 2006
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Pick a course
#
-# $Id: lonpickcourse.pm,v 1.56 2006/11/13 20:50:57 albertel Exp $
+# $Id: lonpickcourse.pm,v 1.57 2006/11/14 16:51:42 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -55,7 +55,7 @@
my ($type,$title,$jscript,$multelement,$multiple,$roleelement,
$lastaction,$autosubmit,$submitopener);
- # Get course type - Course or Non-standard course.
+ # Get course type - Course or Non-standard Course.
$type = $env{'form.type'};
if (!defined($env{'form.type'})) {
$type = 'Course';
@@ -114,7 +114,8 @@
$r->print($submitopener);
# ------------------------------------------ Display of filters to limit search
- my (%filter,%list);
+ my $filter = {};
+ my $action = '/adm/pickcourse';
if (!$onlyown) {
my $filterlist = ['domainfilter','descriptfilter',
'instcodefilter','ownerfilter',
@@ -125,13 +126,13 @@
push(@{$filterlist},'coursefilter');
}
$r->print(&build_filters($filterlist,$type,$roleelement,$multelement,
- \%filter,\%list));
+ $filter,$action));
}
# ---------------------------------------------------------------- Get the data
if ($env{'form.gosearch'} || $onlyown) {
- my %courses = &search_courses($r,$type,$onlyown,\%filter);
- &display_matched_courses($r,$type,$multiple,%courses);
+ my %courses = &search_courses($r,$type,$onlyown,$filter);
+ &display_matched_courses($r,$type,$multiple,$action,%courses);
}
$r->print(&Apache::loncommon::end_page());
return OK;
@@ -166,8 +167,7 @@
}
sub display_matched_courses {
- my ($r,$type,$multiple,%courses) = @_;
- my $action = '/adm/pickcourse';
+ my ($r,$type,$multiple,$action,%courses) = @_;
if ($env{'form.form'} eq 'portform') {
$action = '/adm/portfolio';
}
@@ -217,12 +217,10 @@
if (!%courses) {
$r->print(&mt('None found'));
} 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'}.'" />'.
"\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");
if ((exists($env{'form.roleelement'})) && ($env{'form.form'} eq 'rolechoice')) {
$r->print('<input type="hidden" name="roleelement" value="'.
@@ -233,6 +231,14 @@
$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="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");
return;
@@ -246,8 +252,15 @@
}
sub build_filters {
- my ($filterlist,$type,$roleelement,$multelement,$filter) = @_;
+ my ($filterlist,$type,$roleelement,$multelement,$filter,$action,
+ $caller) = @_;
my $list;
+ my $formname;
+ if (defined($env{'form.form'})) {
+ $formname = $env{'form.form'};
+ } else {
+ $formname = $caller;
+ }
my ($domainselectform,$sincefilterform,$ownerdomselectform,
$instcodeform,$typeselectform);
foreach my $item (@{$filterlist}) {
@@ -298,51 +311,68 @@
$typeselectform = '<select name="type" size="1"';
$typeselectform .= ">\n";
if ($type eq 'Course') {
- $instcodeform = $lt{'cin'}.': <input type="text" name="instcodefilter"
- size="10" value="'.$list->{'instcodefilter'}.'" /><br />';
+ $instcodeform =
+ '<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.'" "'.
($posstype eq $type ? 'selected="selected" ' : ''). ">$posstype</option>\n";
}
$typeselectform.="</select>";
- my $name_input;
- if ($env{'form.cnameelement'} ne '') {
- $name_input ='<input type="hidden" name="cnameelement" value="'.
- $env{'form.cnameelement'}.'" />';
- }
- my $courseidtag;
- if (exists($filter->{'coursefilter'})) {
- $courseidtag=&mt('LON-CAPA course ID').
- ': <input type="text" name="coursefilter" size="25" value="'. $list->{'coursefilter'}.'" /><br />';
- }
- my $output = <<"END";
-<form method="post" name="filterpicker" action="/adm/pickcourse">
+ my $output = qq|
+<form method="post" name="filterpicker" action="$action">
+<input type="hidden" name="form" value="$formname" />
+|;
+ if ($formname eq 'modifycourse') {
+ $output .= '<input type="hidden" name="phase" value="courselist" />';
+ } else {
+ my $name_input;
+ if ($env{'form.cnameelement'} ne '') {
+ $name_input = '<input type="hidden" name="cnameelement" value="'.
+ $env{'form.cnameelement'}.'" />';
+ }
+ $output .= qq|
<input type="hidden" name="cnumelement" value="$env{'form.cnumelement'}" />
<input type="hidden" name="cdomelement" value="$env{'form.cdomelement'}" />
$name_input
-<input type="hidden" name="form" value="$env{'form.form'}" />
$roleelement
$multelement
-$lt{'cac'}: $sincefilterform
-<br />
-$lt{'cdo'}: $domainselectform
-<br />
-$lt{'cog'}: $typeselectform
-<br />
-$instcodeform
-$lt{'cow'}:
-<input type="text" name="ownerfilter" size="10" value="$list->{'ownerfilter'}" />
-<br />
-$lt{'cod'}: $ownerdomselectform
-<br />
-$courseidtag
-$lt{'cde'}:
-<input type="text" name="descriptfilter" size="40" value="$list->{'descriptfilter'}" />
+|;
+ }
+ if ($sincefilterform) {
+ $output .= $lt{'cac'}.': '.$sincefilterform.'<br />'."\n";
+ }
+ if ($domainselectform) {
+ $output .= $lt{'cdo'}.': '.$domainselectform.'<br />'."\n";
+ }
+ if ($typeselectform) {
+ $output .= $lt{'cog'}.': '.$typeselectform.'<br />'."\n";
+ }
+ 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>
</form>
<hr />
-END
+|;
return $output;
}
@@ -396,67 +426,73 @@
}
sub gochoose_javascript {
- my ($type,$autosubmit,$lastaction) = @_;
+ my ($type,$multiple,$autosubmit,$lastaction) = @_;
my %elements = (
'Course' => {
name => 'coursepick',
total => 'coursetotal',
list => 'courselist',
},
- 'Non-standard course' => {
+ 'Non-standard Course' => {
name => 'grouppick',
total => 'grouptotal',
list => 'grouplist',
},
);
- my $name_code;
- if ($env{'form.cnameelement'} ne '') {
- $name_code = 'opener.document.'.$env{'form.form'}.'.'.
- $env{'form.cnameelement'}.'.value=cdesc;';
- }
- my $output .= <<"ENDSCRIPT";
+ my $output .= qq|
<script type="text/javascript">
-function gochoose(cname,cdom,cdesc,multiple,caller) {
+function gochoose(cname,cdom,cdesc) {
var openerForm = "$env{'form.form'}";
courseCount = 0;
var courses = '';
- if (multiple) {
- 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 + "&&";
+|;
+ if ($multiple) {
+ $output .= <<"ENDSCRIPT";
+ courseCount = 0;
+ 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 ++;
}
+ }
+ }
+ 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 {
- 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 ++;
- }
- }
+ opener.document.$env{'form.form'}.$elements{$type}{'name'}.checked = false;
}
- 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 {
+ 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'}.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 {
+ my $name_code;
+ if ($env{'form.cnameelement'} ne '') {
+ $name_code = 'opener.document.'.$env{'form.form'}.'.'.
+ $env{'form.cnameelement'}.'.value=cdesc;';
+ }
+ $output .= qq|
$name_code
opener.document.$env{'form.form'}.$env{'form.cnumelement'}.value=cname;
var slct=opener.document.$env{'form.form'}.$env{'form.cdomelement'};
@@ -469,7 +505,9 @@
if (slct.options[i].value==cdom) { slct.selectedIndex=i; }
}
}
+|;
}
+ $output .= qq|
if (openerForm == 'portform') {
document.courselist.cnum.value = cname;
document.courselist.cdom.value = cdom;
@@ -478,7 +516,7 @@
$lastaction
}
</script>
-ENDSCRIPT
+|;
return $output;
}
@@ -512,7 +550,7 @@
Course Domain - the domain of the course
=item *
-Course Type - Course or Non-standard course
+Course Type - Course or Non-standard Course
=item *
Course Institutional Code - the institutional identifier assigned to the course
@@ -565,7 +603,7 @@
X<create_user_javascript()>
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
@@ -576,9 +614,9 @@
=item *
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
@@ -597,10 +635,10 @@
=item *
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.
@@ -631,9 +669,9 @@
=item *
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
--raeburn1163523102--