');
$r->rflush();
@@ -537,23 +690,62 @@ sub search_courses {
$filter->{'combownerfilter'} = $filter->{'ownerfilter'}.':'.
$filter->{'ownerdomfilter'};
}
- foreach my $item ('descriptfilter','instcodefilter','coursefilter',
- 'combownerfilter') {
+ foreach my $item ('descriptfilter','coursefilter','combownerfilter') {
if (!$filter->{$item}) {
$filter->{$item}='.';
}
}
- if ($type eq '') { $type = '.'; }
my $timefilter =
($filter->{'sincefilter'}==-1?1:time-$filter->{'sincefilter'});
+ my ($instcodefilter,$regexpok);
+ if ($numtitles) {
+ if ($env{'form.official'} eq 'on') {
+ $instcodefilter =
+ &Apache::courseclassifier::instcode_search_str($filter->{'domainfilter'},$numtitles);
+ $regexpok = 1;
+ } elsif ($env{'form.official'} eq 'off') {
+ $instcodefilter = &Apache::courseclassifier::instcode_search_str($filter->{'domainfilter'},$numtitles);
+ unless ($instcodefilter eq '') {
+ $regexpok = -1;
+ }
+ }
+ } else {
+ $instcodefilter = $filter->{'instcodefilter'};
+ }
+ if ($instcodefilter eq '') { $instcodefilter = '.'; }
+ if ($type eq '') { $type = '.'; }
%courses =
&Apache::lonnet::courseiddump($filter->{'domainfilter'},
$filter->{'descriptfilter'},
$timefilter,
- $filter->{'instcodefilter'},
+ $instcodefilter,
$filter->{'combownerfilter'},
$filter->{'coursefilter'},
- undef,undef,$type);
+ undef,undef,$type,$regexpok);
+ if (($filter->{'personfilter'} ne '') && ($filter->{'persondomfilter'} ne '')) {
+ my %rolehash = &Apache::lonnet::get_my_roles($filter->{'personfilter'},
+ $filter->{'persondomfilter'},
+ 'userroles',undef,
+ ['cc','in','ad','ep','ta','cr'],
+ $filter->{'domainfilter'});
+ foreach my $role (keys(%rolehash)) {
+ my ($cnum,$cdom,$courserole) = split(':',$role);
+ my $cid = $cdom.'_'.$cnum;
+ if (exists($courses{$cid})) {
+ if (ref($courses{$cid}) eq 'HASH') {
+ if (ref($courses{$cid}{roles}) eq 'ARRAY') {
+ if (!grep(/^\Q$courserole\E$/,@{$courses{$cid}{roles}})) {
+ push (@{$courses{$cid}{roles}},$courserole);
+ }
+ } else {
+ $courses{$cid}{roles} = [$courserole];
+ }
+ $showcourses{$cid} = $courses{$cid};
+ }
+ }
+ }
+ %courses = %showcourses;
+ }
} else {
$r->print(' ');
my %coursehash = &Apache::loncommon::findallcourses();
@@ -584,7 +776,7 @@ sub gochoose_javascript {
total => 'coursetotal',
list => 'courselist',
},
- 'Non-standard Course' => {
+ 'Community' => {
name => 'grouppick',
total => 'grouptotal',
list => 'grouplist',
@@ -701,7 +893,7 @@ Course Activity - how recently was cours
Course Domain - the domain of the course
=item *
-Course Type - Course or Non-standard Course
+Type - Course or Community
=item *
Course Institutional Code - the institutional identifier assigned to the course
@@ -713,7 +905,7 @@ Course Owner's Username - the username o
Course Owner's Domain - the domain of the owner of the course
=item *
-Course Description - text which appears in the Course Description (or title), as set in the Course Parameters.
+Course Title - text which appears in the Course Title, as set in the Course Parameters.
=item *
Course ID - the internal course number (course ID part after initial 'domain_') used by LON-CAPA (this criterion is only displayed to Domain Coordinators selecting a course in the same domain as their DC role).
@@ -754,7 +946,7 @@ Following selection, and/or submission,
X
B:
-Input: 1 - $type - the course type - Course or Non-standard Course
+Input: 1 - $type - the course type - Course or Community
Output: 1 - $output - javascript wrapped in EscriptEE/scriptE tags
@@ -765,9 +957,9 @@ javascript code for reporting selected s
=item *
X
-B:
+B:
-Input: 5 - request object, course type, multiple (0 or 1), form action; hash of courses.
+Input: 7 - request object, course type, multiple (0 or 1), form action, whether to show roles (for course personnel filter), hash of courses.
Output: 0
@@ -786,10 +978,10 @@ Side Effects: None
=item *
X
-B:
+B:
-Input: 6 - anonymous array of search criteria; course type; $roleelement ; $multelement ; anonymous hash of criteria and their values; form action.
+Input: 7 - anonymous array of search criteria; course type; $roleelement ; $multelement ; anonymous hash of criteria and their values; form action; ref to scalar (count of number of elements in institutional codes -- e.g., 4 for year, semester, department, and number); caller context (e.g., set to 'modifycourse' when routine is called from lonmodifycourse.pm).
Output: 1 - $output - HTML for display of search criteria, and hidden form elements.
@@ -797,10 +989,10 @@ Side Effects: None
=item *
X
-B:
+B:
-Input: 5 - request object, course type, search scope: only courses in which user has active role (1), or any course (0); anonymous hash of criteria and their values.
+Input: 5 - request object, course type, search scope: only courses in which user has active role (1), or any course (0); anonymous hash of criteria and their values; for institutional codes - number of categories).
Output: 1 - %courses - hash of courses satisfying search criteria, keys = course IDs, values are corresponding colon-separated escaped description, institutional code, owner and type.
@@ -862,6 +1054,10 @@ javascript functions used when user sele
(g) Scantron Operator uploading a scantron file to a course - course number is written to visible form element in opener window. Child window closes.
+=item
+
+(h) User requesting creation of a course, and selecting a course to clone - course number and domain written to visible form elements in opener window. Child window closes.
+
=back
=cut