--- loncom/interface/lonpickcourse.pm 2006/11/05 20:59:17 1.54
+++ loncom/interface/lonpickcourse.pm 2006/11/09 22:18:28 1.55
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Pick a course
#
-# $Id: lonpickcourse.pm,v 1.54 2006/11/05 20:59:17 raeburn Exp $
+# $Id: lonpickcourse.pm,v 1.55 2006/11/09 22:18:28 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -46,17 +46,16 @@ sub handler {
# ------------------------------------------------------------ Print the screen
-# Get parameters from query string
+ # Get parameters from query string
&Apache::loncommon::get_unprocessed_cgi
- ($ENV{'QUERY_STRING'},['domainfilter','descriptfilter',
- 'sincefilter','form','cnumelement',
+ ($ENV{'QUERY_STRING'},['domainfilter','form','cnumelement',
'cdomelement','cnameelement','roleelement',
- 'pickedcourse','instcodefilter',
- 'ownerfilter','coursefilter','multiple',
- 'type','ownerdomfilter']);
+ 'multiple','type','setroles']);
- my ($type,$title,$jscript,$multelement,$multiple,$name_code,$name_input,
- $roleelement);
+ my ($type,$title,$jscript,$multelement,$multiple,$roleelement,
+ $lastaction,$autosubmit,$submitopener);
+
+ # Get course type - Course or Non-standard course.
$type = $env{'form.type'};
if (!defined($env{'form.type'})) {
$type = 'Course';
@@ -64,26 +63,13 @@ sub handler {
$title = &mt('Selecting a [_1]',$type);
# Setup for multiple course selections, if flag for multiples set.
- ($title,$jscript,$multelement,$multiple) = &multiples_tag($type,$title);
-
- if (defined($env{'form.cnameelement'}) && $env{'form.cnameelement'} ne '') {
- $name_code = "opener.document.$env{'form.form'}.$env{'form.cnameelement'}.".
- "value=cdesc;";
- $name_input ='';
+ $multiple = $env{'form.multiple'};
+ if ($multiple) {
+ ($jscript,$multelement) = &multiples_tag();
+ $title = &mt('Selecting [_1](s)',lc($type));
}
- my $submitopener = '';
- my $autosubmit = '';
- my $lastaction = 'self.close()';
- if ($env{'form.form'} eq 'cu') {
- $lastaction = 'document.courselist.pickedcourse.value = cdom+"_"+cname;'."\n".
- 'document.courselist.submit();';
- }
- if ($env{'form.form'} eq 'portform') {
- $lastaction = 'document.courselist.pickedcourse.value = cdom+"_"+cname;'."\n".
- 'document.courselist.submit();';
- }
+ # if called when a DC is selecting a course
my $roledom = $env{'form.roleelement'};
if ($roledom) {
$roleelement = '';
@@ -91,132 +77,56 @@ sub handler {
$autosubmit = 'process_pick("'.$roledom.'")';
}
- my (%filter,%list);
- my $filterdisplay;
my $onlyown = 0;
+ # if called to assign course-based portfolio access control
if ((($env{'form.form'} eq 'portform') && ($env{'user.adv'}))) {
$onlyown = 1;
- } else {
- $filterdisplay = &build_filters($type,$name_input,$roleelement,
- $multelement, \%filter,\%list);
- }
-# if called from loncreateuser, report sections, then close
- my (%loaditem,$seclist,$groupslist,$roleslist,$rolesnameslist,
- $accesslist,$accessnameslist);
- my $sec_element = 'currsec';
- my $grplist_element = 'groups';
- my $num_sections = 0;
- my $num_groups = 0;
- my $num_roles = 0;
- my $num_access = 0;
- my ($cdom,$cnum);
- if ($env{'form.pickedcourse'}) {
- ($cdom,$cnum) = split/_/,$env{'form.pickedcourse'};
}
+
+ my %loaditem;
if ($env{'form.form'} eq 'cu' && $env{'form.pickedcourse'}) {
$loaditem{'onload'} ="setSections()";
- ($seclist,$num_sections,$groupslist,$num_groups) =
- &build_selection_lists($cdom,$cnum,$type,undef,undef,
- $env{'form.form'});
- }
-# if called from portfolio, report roles, sections, groups and close
- my ($roles_element,$groups_element,$status_element,$setitems_function);
- if ($env{'form.form'} eq 'portform' && $env{'form.pickedcourse'}) {
- $loaditem{'onload'} ="setItems()";
- ($seclist,$num_sections,$groupslist,$num_groups,$roleslist,$num_roles,
- $rolesnameslist,$accesslist,$num_access,$accessnameslist) =
- &build_selection_lists($cdom,$cnum,$type,1,1,$env{'form.form'});
- ($sec_element,$grplist_element,$setitems_function) =
- &setitems_javascript($seclist,$num_sections,$groupslist,$num_groups,
- $roleslist,$num_roles,$rolesnameslist,
- $accesslist,$num_access,$accessnameslist);
}
$r->print(&Apache::loncommon::start_page($title,undef,
{'add_entries' => \%loaditem,
'no_nav_bar' => 1, }));
- my %elements = (
- 'Course' => {
- name => 'coursepick',
- total => 'coursetotal',
- list => 'courselist',
- },
- 'Non-standard course' => {
- name => 'grouppick',
- total => 'grouptotal',
- list => 'grouplist',
- },
- );
- my $setsec_func = &setsec_javascript($seclist,$sec_element,$grplist_element,
- $groupslist,$num_sections);
- $r->print(<
-function gochoose(cname,cdom,cdesc,multiple,caller) {
- 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 + "&&";
- courseCount ++;
- }
- } else {
- for (var j=0; j 0) {
- courses = courses.substr(0,courses.length-2);
- opener.document.$env{'form.form'}.$elements{$type}{'list'}.value = courses;
- }
+
+ if ($env{'form.form'} eq 'portform') {
+ $lastaction = 'document.courselist.submit()';
+ } elsif ($env{'form.form'} eq 'cu') {
+ $lastaction =
+ 'document.courselist.pickedcourse.value = cdom+"_"+cname;'."\n".
+ 'document.courselist.submit();';
} else {
- $name_code
- opener.document.$env{'form.form'}.$env{'form.cnumelement'}.value=cname;
- var slct=opener.document.$env{'form.form'}.$env{'form.cdomelement'};
- if (slct.options == undefined) {
- opener.document.$env{'form.form'}.$env{'form.cdomelement'}.value=cdom;
- }
- else {
- var i;
- for (i=0;iprint(&create_user_javascript($type));
+ }
-$setitems_function
+ # print javascript functions for choosing a course
+ if ($env{'form.gosearch'} || $onlyown) {
+ $r->print(&gochoose_javascript($type,$autosubmit,$lastaction));
+ }
+ $r->print('');
+ $r->print($submitopener);
-$jscript
-
-$submitopener
-ENDSCRIPT
- $r->print($filterdisplay);
+# ------------------------------------------ Display of filters to limit search
+ my (%filter,%list);
+ if (!$onlyown) {
+ my $filterlist = ['domainfilter','descriptfilter',
+ 'instcodefilter','ownerfilter',
+ 'ownerdomfilter'];
+ # course ID filter for DCs only
+ if ($env{'user.adv'} && $env{'form.domainfilter'} &&
+ exists($env{'user.role.dc./'.$env{'form.domainfilter'}.'/'})) {
+ push(@{$filterlist},'coursefilter');
+ }
+ $r->print(&build_filters($filterlist,$type,$roleelement,$multelement,
+ \%filter,\%list));
+ }
# ---------------------------------------------------------------- Get the data
if ($env{'form.gosearch'} || $onlyown) {
@@ -227,9 +137,41 @@ ENDSCRIPT
return OK;
}
+sub create_user_javascript {
+ my ($type) = @_;
+ my $output;
+ #javascript for reporting sections and groups then closing
+ if ($env{'form.pickedcourse'}) {
+ my ($cdom,$cnum) = split/_/,$env{'form.pickedcourse'};
+ my $sec_element = 'currsec';
+ my $grplist_element = 'groups';
+ my ($sections,$groups) =
+ &Apache::loncommon::get_secgrprole_info($cdom,$cnum,'',$type);
+ my $num_sections = scalar(@{$sections});
+ my $seclist = join(',',@{$sections});
+ my $num_groups = scalar(@{$groups});
+ my $groupslist = join(',',@{$groups});
+ $output = qq|
+
+|;
+;
+ }
+ return $output;
+}
+
sub display_matched_courses {
my ($r,$type,$multiple,%courses) = @_;
- $r->print('\n");
return;
}
sub multiples_tag {
- my ($type,$title) = @_;
- my ($jscript,$multelement,$multiple);
- $multiple = $env{'form.multiple'};
- if ($multiple) {
- $title = &mt('Selecting [_1](s)',lc($type));
- $jscript = &Apache::loncommon::check_uncheck_jscript();
- $multelement = '';
- }
- return ($title,$jscript,$multelement,$multiple);
+ my $jscript = &Apache::loncommon::check_uncheck_jscript();
+ my $multelement = '';
+ return ($jscript,$multelement);
}
sub build_filters {
- my ($type,$name_input,$roleelement,$multelement,$filter,$list) = @_;
- my @filters = ('domainfilter','descriptfilter','instcodefilter','ownerfilter','ownerdomfilter');
- # course ID filter for DCs only
- my ($courseidtag,$domainselectform,$sincefilterform,$ownerdomselectform,
+ my ($filterlist,$type,$roleelement,$multelement,$filter) = @_;
+ my $list;
+ my ($domainselectform,$sincefilterform,$ownerdomselectform,
$instcodeform,$typeselectform);
- if ($env{'user.adv'} && $env{'form.domainfilter'} &&
- exists($env{'user.role.dc./'.$env{'form.domainfilter'}})) {
- push(@filters,'coursefilter');
- $courseidtag=&mt('LON-CAPA course ID').
- '
';
- }
- foreach my $item (@filters) {
+ foreach my $item (@{$filterlist}) {
$filter->{$item} = $env{'form.'.$item};
if ($item ne 'descriptfilter' && $item ne 'instcodefilter') {
$filter->{$item} =~ s/\W//g;
@@ -371,6 +306,16 @@ sub build_filters {
($posstype eq $type ? 'selected="selected" ' : ''). ">$posstype\n";
}
$typeselectform.="";
+ my $name_input;
+ if ($env{'form.cnameelement'} ne '') {
+ $name_input ='';
+ }
+ my $courseidtag;
+ if (exists($filter->{'coursefilter'})) {
+ $courseidtag=&mt('LON-CAPA course ID').
+ '
';
+ }
my $output = <<"END";