--- loncom/interface/lonpickcourse.pm 2006/05/30 20:12:15 1.48 +++ loncom/interface/lonpickcourse.pm 2006/07/03 04:00:34 1.51 @@ -1,7 +1,7 @@ # The LearningOnline Network # Pick a course # -# $Id: lonpickcourse.pm,v 1.48 2006/05/30 20:12:15 raeburn Exp $ +# $Id: lonpickcourse.pm,v 1.51 2006/07/03 04:00:34 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -100,28 +100,125 @@ sub handler { ['-1','86400','604800','2592000','7776000', '15552000','31104000'])); # if called from loncreateuser, report sections, then close - my (%loaditem,$seclist,$groupslist); + my (%loaditem,$seclist,$groupslist,$roleslist,$rolesnameslist, + $accesslist,$accessnameslist); + my $sec_element = 'currsec'; + my $grplist_element = 'groups'; my $num_sections = 0; - if ($env{'form.form'} eq 'cu' && $env{'form.pickedcourse'}) { - $loaditem{'onload'} ="setSections()"; - my ($cdom,$cnum) = split/_/,$env{'form.pickedcourse'}; - - my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum); - my @sections = (sort {$a <=> $b} keys(%sections_count)); - $seclist = join('","',@sections); - $num_sections = scalar(@sections); - my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum); - $groupslist = join(',',sort(keys(%curr_groups))); + 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 $jscript; my $type = $env{'form.type'}; if (!defined($env{'form.type'})) { $type = 'Course'; } - my $typeselectform = '
'; } @@ -251,35 +352,37 @@ function gochoose(cname,cdom,cdesc,multi function setSections() { var numSections = $num_sections var sectionsArray = new Array("$seclist") - opener.document.$env{"form.form"}.currsec.length = 0 + opener.document.$env{"form.form"}.$sec_element.length = 0 if (numSections == 0) { - opener.document.$env{"form.form"}.currsec.multiple=false - opener.document.$env{"form.form"}.currsec.size=1; - opener.document.$env{"form.form"}.currsec.options[0] = new Option('No existing sections','',false,false) + opener.document.$env{"form.form"}.$sec_element.multiple=false + opener.document.$env{"form.form"}.$sec_element.size=1; + opener.document.$env{"form.form"}.$sec_element.options[0] = new Option('No existing sections','',false,false) } else { if (numSections == 1) { - opener.document.$env{"form.form"}.currsec.multiple=false; - opener.document.$env{"form.form"}.currsec.size=1; - opener.document.$env{"form.form"}.currsec.options[0] = new Option('Select','',true,true); - opener.document.$env{"form.form"}.currsec.options[1] = new Option('No section','',false,false) - opener.document.$env{"form.form"}.currsec.options[2] = new Option(sectionsArray[0],sectionsArray[0],false,false); + opener.document.$env{"form.form"}.$sec_element.multiple=false; + opener.document.$env{"form.form"}.$sec_element.size=1; + opener.document.$env{"form.form"}.$sec_element.options[0] = new Option('Select','',true,true); + opener.document.$env{"form.form"}.$sec_element.options[1] = new Option('No section','',false,false) + opener.document.$env{"form.form"}.$sec_element.options[2] = new Option(sectionsArray[0],sectionsArray[0],false,false); } else { for (var i=0; i $submitopener @@ -392,7 +495,53 @@ sub course_chooser { "'".$cnum."','".$cdom."','".$cleandesc."')".'" />'."\n"; } return $output; -} +} + +sub build_selection_lists { + my ($cdom,$cnum,$type,$needroles,$needaccess,$caller) = @_; + my ($sections,$groups,$allroles,$roleshash,$accesshash) = + &Apache::loncommon::get_secgrprole_info($cdom,$cnum,$needroles,$type); + if ($caller eq 'portform') { + if (@{$sections} == 0) { + @{$sections} = ('none'); + } else { + unshift(@{$sections},('all','none')); + } + if (@{$groups} == 0) { + @{$groups} = ('none'); + } else { + unshift(@{$groups},('all','none')); + } + + } + my $num_sections = scalar(@{$sections}); + my $seclist = join('","',@{$sections}); + my $num_groups = scalar(@{$groups}); + my $groupslist = join('","',@{$groups}); + my ($roleslist,$num_roles,$rolesnameslist,$num_access,$accesslist, + $accessnameslist); + if ($needroles) { + $num_roles = @{$allroles}; + $roleslist = join('","',@{$allroles}); + my @allrolesnames; + foreach my $role (@{$allroles}) { + push(@allrolesnames,$$roleshash{$role}); + } + $rolesnameslist = join('","',@allrolesnames); + } + if ($needaccess) { + $num_access = keys(%{$accesshash}); + my (@allaccess,@allaccessnames); + foreach my $key (sort(keys(%{$accesshash}))) { + push(@allaccess,$key); + push(@allaccessnames,$$accesshash{$key}); + } + $accesslist = join('","',@allaccess); + $accessnameslist = join('","',@allaccessnames); + } + return ($seclist,$num_sections,$groupslist,$num_groups,$roleslist, + $num_roles,$rolesnameslist,$accesslist,$num_access,$accessnameslist); +} 1; __END__