--- loncom/interface/lonpickcourse.pm 2006/11/09 22:18:28 1.55
+++ loncom/interface/lonpickcourse.pm 2007/03/08 01:58:45 1.62
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Pick a course
#
-# $Id: lonpickcourse.pm,v 1.55 2006/11/09 22:18:28 raeburn Exp $
+# $Id: lonpickcourse.pm,v 1.62 2007/03/08 01:58:45 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -35,7 +35,6 @@ use Apache::loncoursedata;
use Apache::lonnet;
use Apache::lonlocal;
use Apache::longroup;
-use lib '/home/httpd/lib/perl/';
use LONCAPA;
sub handler {
@@ -55,7 +54,7 @@ sub handler {
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';
@@ -79,7 +78,7 @@ sub handler {
my $onlyown = 0;
# 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;
}
@@ -108,13 +107,14 @@ sub handler {
# print javascript functions for choosing a course
if ($env{'form.gosearch'} || $onlyown) {
- $r->print(&gochoose_javascript($type,$autosubmit,$lastaction));
+ $r->print(&gochoose_javascript($type,$multiple,$autosubmit,$lastaction));
}
$r->print('');
$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 +125,13 @@ sub handler {
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 +166,7 @@ function setSections() {
}
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';
}
@@ -199,8 +198,8 @@ sub display_matched_courses {
my ($descr,$instcode,$owner,$ttype) = split/:/,$courses{$course};
$r->print(&course_chooser($multiple,$cdom,$cnum,$cleandesc));
$r->print($description.'('.
- ($Apache::lonnet::domaindescription{$cdom}?
- $Apache::lonnet::domaindescription{$cdom}:$cdom).")");
+ (&Apache::lonnet::domain($cdom,'description')?
+ &Apache::lonnet::domain($cdom,'description'):$cdom).")");
unless ($instcode eq '') {
$r->print(" - ".&unescape($instcode));
}
@@ -217,12 +216,10 @@ sub display_matched_courses {
if (!%courses) {
$r->print(&mt('None found'));
} elsif ($multiple) {
- $r->print('');
+ $r->print('');
}
$r->print(''.
"\n".''."\n".
- ''."\n".
- ''."\n".
''."\n");
if ((exists($env{'form.roleelement'})) && ($env{'form.form'} eq 'rolechoice')) {
$r->print('');
$r->print('');
$r->print('');
+ } elsif ($env{'form.form'} eq 'modifycourse') {
+ $r->print(''."\n");
+ $r->print(&Apache::lonhtmlcommon::echo_form_input(['phase','pickedcourse','type','form']));
+ } else {
+ $r->print(''."\n".
+ ''."\n");
}
$r->print("\n");
return;
@@ -246,14 +251,29 @@ sub multiples_tag {
}
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}) {
$filter->{$item} = $env{'form.'.$item};
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}) {
$filter->{$item} = '';
}
@@ -298,51 +318,71 @@ sub build_filters {
$typeselectform = '
';
+ $instcodeform =
+ '';
}
- foreach my $posstype ('Course','Non-standard course') {
+ foreach my $posstype ('Course','Non-standard Course') {
$typeselectform.='\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";
-