version 1.86, 2009/08/19 19:51:22
|
version 1.112, 2014/03/17 02:45:25
|
Line 31 package Apache::lonpickcourse;
|
Line 31 package Apache::lonpickcourse;
|
use strict; |
use strict; |
use Apache::Constants qw(:common); |
use Apache::Constants qw(:common); |
use Apache::loncommon; |
use Apache::loncommon; |
|
use Apache::lonhtmlcommon; |
use Apache::loncoursedata; |
use Apache::loncoursedata; |
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::longroup; |
use Apache::longroup; |
use Apache::courseclassifier; |
|
use LONCAPA qw(:DEFAULT :match); |
use LONCAPA qw(:DEFAULT :match); |
|
|
sub handler { |
sub handler { |
Line 51 sub handler {
|
Line 51 sub handler {
|
($ENV{'QUERY_STRING'},['domainfilter','form','cnumelement', |
($ENV{'QUERY_STRING'},['domainfilter','form','cnumelement', |
'cdomelement','cnameelement','roleelement', |
'cdomelement','cnameelement','roleelement', |
'multiple','type','setroles','fixeddom','cloner']); |
'multiple','type','setroles','fixeddom','cloner']); |
my ($type,$title,$jscript,$multelement,$multiple,$roleelement, |
my ($type,$title,$jscript,$multelement,$multiple,$roleelement,$typeelement, |
$lastaction,$autosubmit,$submitopener,$cloneruname,$clonerudom); |
$lastaction,$autosubmit,$submitopener,$cloneruname,$clonerudom); |
|
|
# Get course type - Course or Community. |
# Get course type - Course or Community. |
Line 75 sub handler {
|
Line 75 sub handler {
|
$submitopener = &processpick(); |
$submitopener = &processpick(); |
$autosubmit = 'process_pick("'.$roledom.'")'; |
$autosubmit = 'process_pick("'.$roledom.'")'; |
} |
} |
|
if ($env{'form.typeelement'} ne '') { |
|
$typeelement = '<input type="hidden" name="typeelement" value="'.$env{'form.typeelement'}.'" />'; |
|
} |
|
|
# if called when a DC is creating a course |
# if called when a DC is creating a course for another user. |
if ($env{'form.form'} eq 'ccrs') { |
if ($env{'form.form'} eq 'ccrs') { |
($cloneruname,$clonerudom) = ($env{'form.cloner'} =~ /^($match_username):($match_domain)$/); |
($cloneruname,$clonerudom) = ($env{'form.cloner'} =~ /^($match_username):($match_domain)$/); |
} |
} |
Line 102 sub handler {
|
Line 105 sub handler {
|
|
|
if ((($env{'form.form'} eq 'cu') || ($env{'form.form'} eq 'studentform')) && |
if ((($env{'form.form'} eq 'cu') || ($env{'form.form'} eq 'studentform')) && |
($env{'form.pickedcourse'})) { |
($env{'form.pickedcourse'})) { |
$loaditem{'onload'} .= 'setSections()'; |
$loaditem{'onload'} .= 'setDefaultCredits();setRoles();setSections();'; |
} |
} |
my $js = &js_changer(); |
my $js = &Apache::loncommon::js_changer(); |
$r->print(&Apache::loncommon::start_page($title,$js, |
$r->print(&Apache::loncommon::start_page($title,$js, |
{'add_entries' => \%loaditem, |
{'add_entries' => \%loaditem, |
'no_nav_bar' => 1, })); |
'no_nav_bar' => 1, })); |
Line 130 sub handler {
|
Line 133 sub handler {
|
$onlyown) { |
$onlyown) { |
$r->print(&gochoose_javascript($type,$multiple,$autosubmit,$lastaction)); |
$r->print(&gochoose_javascript($type,$multiple,$autosubmit,$lastaction)); |
} |
} |
$r->print('<script type="text/javascript" language="Javascript">'.$jscript. |
$r->print(&Apache::lonhtmlcommon::scripttag($jscript)); |
'</script>'); |
|
$r->print($submitopener); |
$r->print($submitopener); |
|
|
# ------------------------------------------ Display of filters to limit search |
# ------------------------------------------ Display of filters to limit search |
my $filter = {}; |
my $filter = {}; |
my $action = '/adm/pickcourse'; |
my $action = '/adm/pickcourse'; |
my ($numtitles,$showroles,$nohost); |
my ($numtitles,$showroles,$nohost,@codetitles); |
if (!$onlyown) { |
unless ($onlyown) { |
my $filterlist = ['domainfilter','descriptfilter', |
my $filterlist = ['domainfilter','sincefilter']; |
'instcodefilter']; |
# created filter for DCs only |
|
if ($env{'user.adv'} && $env{'form.domainfilter'} && |
|
exists($env{'user.role.dc./'.$env{'form.domainfilter'}.'/'}) |
|
&& $env{'form.form'} ne 'portform') { |
|
my $loncaparev = &Apache::lonnet::get_server_loncaparev($env{'form.domainfilter'}); |
|
if ($loncaparev ne 'unknown_cmd') { |
|
push(@{$filterlist},'createdfilter'); |
|
} |
|
} |
|
push(@{$filterlist},('descriptfilter','instcodefilter')); |
if ($env{'form.form'} eq 'rules') { |
if ($env{'form.form'} eq 'rules') { |
push(@{$filterlist},'personfilter'); |
push(@{$filterlist},('personfilter','persondomfilter')); |
|
if ($env{'form.persondomfilter'} eq '') { |
|
unless ($env{'form.gosearch'}) { |
|
$filter->{'persondomfilter'} = $env{'request.role.domain'}; |
|
} |
|
} else { |
|
$filter->{'persondomfilter'} = |
|
&LONCAPA::clean_domain($env{'form.persondomfilter'}); |
|
} |
if (($env{'form.personfilter'} ne '') && ($env{'form.persondomfilter'} ne '')) { |
if (($env{'form.personfilter'} ne '') && ($env{'form.persondomfilter'} ne '')) { |
if (&Apache::lonnet::homeserver($env{'form.personfilter'}, |
if (&Apache::lonnet::homeserver($env{'form.personfilter'}, |
$env{'form.persondomfilter'}) eq 'no_host') { |
$env{'form.persondomfilter'}) eq 'no_host') { |
Line 152 sub handler {
|
Line 171 sub handler {
|
} |
} |
} |
} |
} else { |
} else { |
push(@{$filterlist},'ownerfilter'); |
push(@{$filterlist},('ownerfilter','ownerdomfilter')); |
} |
} |
# course ID filter for DCs only |
# course ID filter for DCs only |
if ($env{'user.adv'} && $env{'form.domainfilter'} && |
if ($env{'user.adv'} && $env{'form.domainfilter'} && |
Line 162 sub handler {
|
Line 181 sub handler {
|
if ($cloneruname ne '' && $clonerudom ne '') { |
if ($cloneruname ne '' && $clonerudom ne '') { |
push(@{$filterlist},'cloneableonly'); |
push(@{$filterlist},'cloneableonly'); |
} |
} |
|
if ((ref($filterlist) eq 'ARRAY') && (ref($filter) eq 'HASH')) { |
$r->print(&build_filters($filterlist,$type,$roleelement,$multelement, |
foreach my $item (@{$filterlist}) { |
$filter,$action,\$numtitles,undef,$cloneruname, |
$filter->{$item} = $env{'form.'.$item}; |
$clonerudom)); |
} |
|
} |
|
if ($env{'form.form'} eq 'portform') { |
|
$filter->{'domainfilter'} ||= $env{'user.domain'}; |
|
} elsif ($env{'form.form'} eq 'studentform') { |
|
$filter->{'domainfilter'} ||= $env{'request.role.domain'}; |
|
} |
|
my $codedom; |
|
if ($env{'form.fixeddom'}) { |
|
$codedom = $env{'request.role.domain'}; |
|
} else { |
|
$codedom = $filter->{'domainfilter'}; |
|
} |
|
my ($clonetext,$clonewarning); |
|
if (($env{'form.form'} eq 'ccrs') || ($env{'form.form'} eq 'requestcrs')) { |
|
(my $coord_cloneable,$clonewarning) = |
|
&get_coordinator_cloneable($cloneruname,$clonerudom,$type); |
|
if ($env{'form.form'} eq 'ccrs') { |
|
$clonetext = '<input type="hidden" name="cloner" value="'.$env{'form.cloner'}.'" />'."\n"; |
|
} |
|
if ($coord_cloneable) { |
|
$clonetext .= '<input type="hidden" name="cc_clone" value="'.$coord_cloneable.'" />'; |
|
} |
|
} |
|
$r->print(&Apache::loncommon::build_filters($filterlist,$type,$roleelement,$multelement, |
|
$filter,$action,\$numtitles,undef,$cloneruname, |
|
$clonerudom,$typeelement,\@codetitles,$codedom, |
|
$env{'form.form'},$env{'form.fixeddom'}, |
|
$env{'form.prevphase'},$env{'form.cnameelement'}, |
|
$env{'form.cnumelement'},$env{'form.cdomelement'}, |
|
$env{'form.setroles'},$clonetext,$clonewarning)); |
} |
} |
|
|
# ---------------------------------------------------------------- Get the data |
# ---------------------------------------------------------------- Get the data |
if ((($env{'form.gosearch'}) && ($env{'form.updater'} eq '')) || |
if ((($env{'form.gosearch'}) && ($env{'form.updater'} eq '')) || |
$onlyown) { |
$onlyown) { |
my %courses = &search_courses($r,$type,$onlyown,$filter,$numtitles, |
my $domcloner; |
$cloneruname,$clonerudom); |
if ($env{'form.form'} eq 'ccrs') { |
|
if (($env{'request.role.domain'} eq $env{'form.domainfilter'}) && |
|
(&Apache::lonnet::allowed('ccc',$env{'request.role.domain'}))) { |
|
$domcloner = 1; |
|
} |
|
} |
|
my %courses; |
|
if (!$onlyown) { |
|
$r->print('<div id="searching">'.&mt('Searching ...').'</div>'); |
|
$r->rflush(); |
|
my $srchdom = $filter->{'domainfilter'}; |
|
%courses = &Apache::loncommon::search_courses($srchdom,$type,$filter,$numtitles, |
|
$cloneruname,$clonerudom,$domcloner, |
|
\@codetitles,$env{'form.cc_clone'}); |
|
} else { |
|
$r->print('<br />'); |
|
my %coursehash = &Apache::loncommon::findallcourses(); |
|
foreach my $cid (sort(keys(%coursehash))) { |
|
$courses{$cid}{'description'} = $env{'course.'.$cid.'.description'}; |
|
} |
|
} |
if ($nohost) { |
if ($nohost) { |
$r->print ('<span class="LC_warning">'. |
$r->print ('<span class="LC_warning">'. |
&mt('User does not exist - username: [_1], domain: [_2].', |
&mt('User does not exist - username: [_1], domain: [_2].', |
Line 187 sub handler {
|
Line 256 sub handler {
|
return OK; |
return OK; |
} |
} |
|
|
sub js_changer { |
|
return <<"ENDJS"; |
|
<script type="text/javascript"> |
|
|
|
function updateFilters(caller) { |
|
if (typeof(caller) != "undefined") { |
|
document.filterpicker.updater.value = caller.name; |
|
} |
|
document.filterpicker.submit(); |
|
} |
|
|
|
</script> |
|
|
|
ENDJS |
|
|
|
} |
|
|
|
sub processpick { |
sub processpick { |
my $openerform = 'rolechoice'; |
my $openerform = 'rolechoice'; |
if ($env{'form.form'} eq 'studentform') { |
if ($env{'form.form'} eq 'studentform') { |
Line 220 ENDONE
|
Line 272 ENDONE
|
$process_pick .= <<"ENDTWO"; |
$process_pick .= <<"ENDTWO"; |
if (pickedDomain == dom) { |
if (pickedDomain == dom) { |
if (pickedCourse != '') { |
if (pickedCourse != '') { |
var courseTarget = "cc./"+pickedDomain+"/"+pickedCourse |
var ccrole = "cc"; |
|
var pickedType = "$env{'form.type'}"; |
|
if (pickedType == "Community") { |
|
ccrole = "co"; |
|
} |
|
var courseTarget = ccrole+"./"+pickedDomain+"/"+pickedCourse |
opener.document.title='Role selected. Please stand by.'; |
opener.document.title='Role selected. Please stand by.'; |
opener.status='Role selected. Please stand by.'; |
opener.status='Role selected. Please stand by.'; |
opener.document.rolechoice.newrole.value=courseTarget |
opener.document.rolechoice.newrole.value=courseTarget |
Line 252 sub create_user_javascript {
|
Line 309 sub create_user_javascript {
|
my $output; |
my $output; |
#javascript for reporting sections and groups then closing |
#javascript for reporting sections and groups then closing |
if ($env{'form.pickedcourse'}) { |
if ($env{'form.pickedcourse'}) { |
my ($cdom,$cnum) = split/_/,$env{'form.pickedcourse'}; |
my %coursedescription = |
|
&Apache::lonnet::coursedescription($env{'form.pickedcourse'}, |
|
{'one_time' => '1'}); |
|
my $cdom = $coursedescription{'domain'}; |
|
my $cnum = $coursedescription{'num'}; |
|
my $crstype = $coursedescription{'type'}; |
|
my %domdefs = &Apache::lonnet::get_domain_defaults($cdom); |
|
my ($showcredits,$credits); |
|
if (($crstype ne 'Community') && |
|
(($domdefs{'officialcredits'} || $domdefs{'unofficialcredits'} || $domdefs{'textbookcredits'}))) { |
|
$showcredits = 1; |
|
$credits = $coursedescription{'internal.defaultcredits'}; |
|
} |
my $sec_element = 'currsec'; |
my $sec_element = 'currsec'; |
my $grplist_element = 'groups'; |
my $grplist_element = 'groups'; |
my ($sections,$groups) = |
my ($sections,$groups) = |
Line 263 sub create_user_javascript {
|
Line 332 sub create_user_javascript {
|
my $groupslist = join(',',@{$groups}); |
my $groupslist = join(',',@{$groups}); |
$output = qq| |
$output = qq| |
<script type="text/javascript"> |
<script type="text/javascript"> |
|
// <![CDATA[ |
function setSections() { |
function setSections() { |
opener.document.$env{"form.form"}.$grplist_element.value='$groupslist'; |
opener.document.$env{"form.form"}.$grplist_element.value='$groupslist'; |
window.opener.setSect('$seclist'); |
window.opener.setSect('$seclist'); |
self.close() |
self.close(); |
|
} |
|
function setRoles() { |
|
window.opener.setRole('$crstype'); |
} |
} |
|
|; |
|
if ($showcredits) { |
|
$output .= qq| |
|
function setDefaultCredits() { |
|
window.opener.setCredits('$credits'); |
|
} |
|
|; |
|
} |
|
$output .= qq| |
|
// ]]> |
</script> |
</script> |
|; |
|; |
; |
|
} |
} |
return $output; |
return $output; |
} |
} |
Line 284 sub display_matched_courses {
|
Line 366 sub display_matched_courses {
|
$r->print('<form name="courselist" method="post" action="'.$action.'">'); |
$r->print('<form name="courselist" method="post" action="'.$action.'">'); |
if ($env{'form.form'} eq 'modifycourse') { |
if ($env{'form.form'} eq 'modifycourse') { |
if ($numcourses > 0) { |
if ($numcourses > 0) { |
my $cctitle = &Apache::lonnet::plaintext('cc',$type); |
my $ccrole = 'cc'; |
my $dctitle = &Apache::lonnet::plaintext('dc'); |
if ($type eq 'Community') { |
my $ccrolechk = ' checked="checked" '; |
$ccrole = 'co'; |
my $menuchk = ' '; |
|
if ($env{'form.prevphase'} ne '') { |
|
$ccrolechk = ' '; |
|
$menuchk = ' checked="checked" '; |
|
} |
} |
|
my $cctitle = &Apache::lonnet::plaintext($ccrole,$type); |
|
my $dctitle = &Apache::lonnet::plaintext('dc'); |
|
my $ccrolechk = ' '; |
|
my $menuchk = ' checked="checked" '; |
$r->print( |
$r->print( |
'<fieldset>' |
'<div class="LC_left_float">' |
.'<legend>'.&mt('Action').'</legend>' |
.'<fieldset>' |
.'<div class="LC_nobreak"><label>' |
.'<legend>'.&mt('Pick action').'</legend>' |
|
.'<span class="LC_nobreak"><label>' |
.'<input type="radio" name="phase" value="ccrole"'.$ccrolechk.'/>' |
.'<input type="radio" name="phase" value="ccrole"'.$ccrolechk.'/>' |
.' '.&mt('Enter the course with the role of [_1].',$cctitle) |
.' '); |
.'</label></div>' |
if ($type eq 'Community') { |
.'<div class="LC_nobreak"><label>' |
$r->print(&mt('Enter the community with the role of [_1].',$cctitle)); |
.'<input type="radio" name="phase" value="menu"'.$menuchk.'/> ' |
} else { |
.&mt('View or modify course settings which only a [_1] may modify.',$dctitle) |
$r->print(&mt('Enter the course with the role of [_1].',$cctitle)); |
.'</label></div>' |
} |
.'</fieldset>' |
$r->print('</label></span><br />' |
.'<br />' |
.'<span class="LC_nobreak"><label>' |
|
.'<input type="radio" name="phase" value="menu"'.$menuchk.'/> '); |
|
if ($type eq 'Community') { |
|
$r->print(&mt('View or modify community settings which only a [_1] may modify.',$dctitle)); |
|
} else { |
|
$r->print(&mt('View or modify course settings which only a [_1] may modify.',$dctitle)); |
|
} |
|
$r->print('</label></span>' |
|
.'</fieldset></div>' |
|
.'<br clear="all" />' |
); |
); |
} |
} |
} |
} |
Line 323 sub display_matched_courses {
|
Line 415 sub display_matched_courses {
|
} |
} |
|
|
if ($numcourses > 1 && $multiple) { |
if ($numcourses > 1 && $multiple) { |
$r->print('<input type="button" value="check all" |
$r->print('<input type="button" value="'.&mt('check all').'" |
onclick="javascript:checkAll(document.courselist.course_id)" /> |
onclick="javascript:checkAll(document.courselist.course_id)" /> |
<input type="button" value="uncheck all" |
<input type="button" value="'.&mt('uncheck all').'" |
onclick="javascript:uncheckAll(document.courselist.course_id)" /> |
onclick="javascript:uncheckAll(document.courselist.course_id)" /> |
<br /><br />'); |
<br /><br />'); |
} |
} |
Line 333 sub display_matched_courses {
|
Line 425 sub display_matched_courses {
|
if (%courses) { |
if (%courses) { |
$r->print(&Apache::loncommon::start_data_table()); |
$r->print(&Apache::loncommon::start_data_table()); |
$r->print(&Apache::loncommon::start_data_table_header_row()); |
$r->print(&Apache::loncommon::start_data_table_header_row()); |
|
my $titlehdr = &mt('Course Title'); |
|
if ($type eq 'Community') { |
|
$titlehdr = &mt('Community Title'); |
|
} |
$r->print('<th>'.&mt('Select').'</th>' |
$r->print('<th>'.&mt('Select').'</th>' |
.'<th>'.&mt('Course Title').'</th>' |
.'<th>'.$titlehdr.'</th>' |
.'<th>'.&mt('Domain').'</th>' |
.'<th>'.&mt('Domain').'</th>'); |
.'<th>'.&mt('Course Code').'</th>' |
unless ($type eq 'Community') { |
.'<th>'.&mt('Owner/Co-owner(s)').'</th>' |
$r->print('<th>'.&mt('Course Code').'</th>'); |
.'<th>'.&mt('Type').'</th>' |
} |
); |
$r->print('<th>'.&mt('Owner/Co-owner(s)').'</th>'); |
if ($showroles) { |
if ($showroles) { |
$r->print('<th>'.&mt("Role(s) for [_1]", |
$r->print('<th>'.&mt("Role(s) for [_1]", |
&Apache::loncommon::plainname($env{'form.personfilter'}, |
&Apache::loncommon::plainname($env{'form.personfilter'}, |
Line 347 sub display_matched_courses {
|
Line 443 sub display_matched_courses {
|
} |
} |
$r->print(&Apache::loncommon::end_data_table_header_row()); |
$r->print(&Apache::loncommon::end_data_table_header_row()); |
} |
} |
|
my %cc_cloneable; |
|
if (($env{'form.form'} eq 'ccrs') || ($env{'form.form'} eq 'requestcrs')) { |
|
my ($coord_cloneable,$warning) = |
|
&get_coordinator_cloneable($cloneruname,$clonerudom,$type); |
|
if ($coord_cloneable) { |
|
map {$cc_cloneable{$_} = 1;} split('&',$coord_cloneable); |
|
} |
|
} |
foreach my $description (sort { lc($a) cmp lc($b) } (keys(%by_descrip))) { |
foreach my $description (sort { lc($a) cmp lc($b) } (keys(%by_descrip))) { |
foreach my $course (@{$by_descrip{$description}}) { |
foreach my $course (@{$by_descrip{$description}}) { |
$r->print(&Apache::loncommon::start_data_table_row()); |
$r->print(&Apache::loncommon::start_data_table_row()); |
Line 359 sub display_matched_courses {
|
Line 463 sub display_matched_courses {
|
$instcode = $courses{$course}{'inst_code'}; |
$instcode = $courses{$course}{'inst_code'}; |
$ttype = $courses{$course}{'type'}; |
$ttype = $courses{$course}{'type'}; |
if (($env{'form.form'} eq 'ccrs') || ($env{'form.form'} eq 'requestcrs')) { |
if (($env{'form.form'} eq 'ccrs') || ($env{'form.form'} eq 'requestcrs')) { |
my $cloners = $courses{$course}{'cloners'}; |
if ($env{'form.form'} eq 'ccrs') { |
if ($cloners ne '') { |
if (($env{'request.role.domain'} eq $cdom) && |
my @cloneable = split(',',$cloners); |
(&Apache::lonnet::allowed('ccc',$env{'request.role.domain'}))) { |
if (grep(/^\*$/,@cloneable)) { |
|
$canclone = 1; |
$canclone = 1; |
} |
} |
if (grep(/^\*:\Q$env{'form.clonerudom'}\E$/,@cloneable)) { |
} |
|
unless ($canclone) { |
|
if ($cc_cloneable{$cnum.':'.$cdom}) { |
$canclone = 1; |
$canclone = 1; |
} |
} |
if (grep(/^\Q$cloneruname\E:\Q$clonerudom\E$/,@cloneable)) { |
} |
$canclone = 1; |
unless ($canclone) { |
|
my $cloners = $courses{$course}{'cloners'}; |
|
if ($cloners ne '') { |
|
my @cloneable = split(',',$cloners); |
|
if (grep(/^\*$/,@cloneable)) { |
|
$canclone = 1; |
|
} |
|
if (grep(/^\*:\Q$clonerudom\E$/,@cloneable)) { |
|
$canclone = 1; |
|
} |
|
if (grep(/^\Q$cloneruname\E:\Q$clonerudom\E$/,@cloneable)) { |
|
$canclone = 1; |
|
} |
} |
} |
} |
} |
} |
} |
push(@owners,&unescape($courses{$course}{'owner'})); |
push(@owners,$courses{$course}{'owner'}); |
if (ref($courses{$course}{'co-owners'}) eq 'ARRAY') { |
if ($courses{$course}{'co-owners'} ne '') { |
foreach my $item (@{$courses{$course}{'co-owners'}}) { |
foreach my $item (split(/,/,$courses{$course}{'co-owners'})) { |
push(@owners,&unescape($item)); |
push(@owners,$item); |
} |
} |
} |
} |
} else { |
} else { |
Line 384 sub display_matched_courses {
|
Line 501 sub display_matched_courses {
|
($descr,$instcode,$singleowner,$ttype)=split(/:/,$courses{$course}); |
($descr,$instcode,$singleowner,$ttype)=split(/:/,$courses{$course}); |
push(@owners,&unescape($singleowner)); |
push(@owners,&unescape($singleowner)); |
} |
} |
my $ownerstr = join(', ',@owners); |
my $ownerstr = join(', ',map { &Apache::loncommon::plainname(split(':',$_)); } @owners); |
$r->print('<td>'.&course_chooser($multiple,$cdom,$cnum,$cleandesc,$canclone).'</td>'); |
$r->print('<td>'.&course_chooser($multiple,$cdom,$cnum,$cleandesc,$canclone).'</td>'); |
$r->print('<td>'.$description.'</td>'); |
$r->print('<td>'.$description.'</td>'); |
$r->print('<td>'); |
$r->print('<td>'); |
$r->print(&Apache::lonnet::domain($cdom,'description')? |
$r->print(&Apache::lonnet::domain($cdom,'description')? |
$cdom.' ('.&Apache::lonnet::domain($cdom,'description').')':$cdom); |
$cdom.' ('.&Apache::lonnet::domain($cdom,'description').')':$cdom); |
$r->print('</td>'); |
$r->print('</td>'); |
$r->print('<td>'); |
unless ($type eq 'Community') { |
if ($instcode ne '') { |
$r->print('<td>'); |
$r->print(&unescape($instcode)); |
if ($instcode ne '') { |
} else { |
$r->print(&unescape($instcode)); |
$r->print(' '); |
} else { |
|
$r->print(' '); |
|
} |
|
$r->print('</td>'); |
} |
} |
$r->print('</td>'); |
|
$r->print('<td>'.$ownerstr.'</td>'); |
$r->print('<td>'.$ownerstr.'</td>'); |
$r->print('<td>'); |
|
if ($ttype ne '') { |
|
$r->print(&mt(&unescape($ttype))); |
|
} else { |
|
$r->print(' '); |
|
} |
|
$r->print('</td>'); |
|
if ($showroles) { |
if ($showroles) { |
$r->print('<td>'); |
$r->print('<td>'); |
my $rolestr; |
my $rolestr; |
Line 416 sub display_matched_courses {
|
Line 528 sub display_matched_courses {
|
my (undef,$crdom,$crname,$crtitle) = split('/',$role); |
my (undef,$crdom,$crname,$crtitle) = split('/',$role); |
$rolestr .= $crtitle.', '; |
$rolestr .= $crtitle.', '; |
} else { |
} else { |
$rolestr .= &Apache::lonnet::plaintext($role,$ttype).', '; |
$rolestr .= &Apache::lonnet::plaintext($role,$type).', '; |
} |
} |
} |
} |
$rolestr =~ s/\, $//; |
$rolestr =~ s/\, $//; |
Line 433 sub display_matched_courses {
|
Line 545 sub display_matched_courses {
|
} |
} |
|
|
if (!%courses) { |
if (!%courses) { |
$r->print(&mt('None found')); |
$r->print('<p class="LC_info">'.&mt('None found').'</p>'); |
} elsif ($multiple) { |
} elsif ($multiple) { |
$r->print('<input type="button" value="Submit" onClick="gochoose('."'','','')".'" />'); |
$r->print('<input type="button" value="'.&mt('Submit').'" onclick="gochoose('."'','','')".'" />'); |
} |
} |
$r->print('<input type="hidden" name="form" value="'.$env{'form.form'}.'" />'. |
$r->print('<input type="hidden" name="form" value="'.$env{'form.form'}.'" />'. |
"\n".'<input type="hidden" name="pickedcourse" value="" />'."\n". |
"\n".'<input type="hidden" name="pickedcourse" value="" />'."\n". |
Line 456 sub display_matched_courses {
|
Line 568 sub display_matched_courses {
|
$env{'form.cnumelement'}.'" />'."\n". |
$env{'form.cnumelement'}.'" />'."\n". |
'<input type="hidden" name="cdomelement" value="'. |
'<input type="hidden" name="cdomelement" value="'. |
$env{'form.cdomelement'}.'" />'."\n"); |
$env{'form.cdomelement'}.'" />'."\n"); |
|
if ($env{'form.typeelement'} ne '') { |
|
$r->print('<input type="hidden" name="typeelement" value="'. |
|
$env{'form.typeelement'}.'" />'."\n"); |
|
|
|
} |
} |
} |
if ((exists($env{'form.fixeddom'})) && ($env{'form.form'} eq 'rules')) { |
if ((exists($env{'form.fixeddom'})) && ($env{'form.form'} eq 'rules')) { |
$r->print('<input type="hidden" name="fixeddom" value="'. |
$r->print('<input type="hidden" name="fixeddom" value="'. |
Line 475 sub multiples_tag {
|
Line 592 sub multiples_tag {
|
return ($jscript,$multelement); |
return ($jscript,$multelement); |
} |
} |
|
|
sub build_filters { |
sub get_coordinator_cloneable { |
my ($filterlist,$type,$roleelement,$multelement,$filter,$action, |
my ($cloneruname,$clonerudom,$type) = @_; |
$numtitlesref,$caller,$cloneruname,$clonerudom) = @_; |
if (($cloneruname!~/\w/) || ($clonerudom!~/\w/)) { |
my ($list,$formname,$fixeddom,$codedom,$jscript); |
my $warning = '<div class="LC_warning">'.&mt('Intended course owner not specified'). |
$codedom = $env{'request.role.domain'}; |
'</div>'; |
if (defined($env{'form.form'})) { |
return ('',$warning); |
$formname = $env{'form.form'}; |
} elsif (&Apache::lonnet::homeserver($cloneruname,$clonerudom) eq 'no_host') { |
} else { |
my $warning = '<div class="LC_error">'.&mt('Intended course owner does not exist'). |
$formname = $caller; |
'</div>'; |
} |
return ('',$warning); |
my $onchange; |
|
unless ($env{'form.interface'} eq 'textual') { |
|
$onchange = 'javascript:updateFilters(this)'; |
|
} |
|
my ($domainselectform,$sincefilterform,$ownerdomselectform,$persondomselectform, |
|
$instcodeform,$typeselectform,$instcodetitle); |
|
foreach my $item (@{$filterlist}) { |
|
$filter->{$item} = $env{'form.'.$item}; |
|
if ($item ne 'descriptfilter' && $item ne 'instcodefilter') { |
|
if ($item eq 'domainfilter') { |
|
$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}); |
|
$filter->{'ownerdomfilter'} = |
|
&LONCAPA::clean_domain($env{'form.ownerdomfilter'}); |
|
$ownerdomselectform = |
|
&Apache::loncommon::select_dom_form($filter->{'ownerdomfilter'}, |
|
'ownerdomfilter',1); |
|
} elsif ($item eq 'personfilter') { |
|
$filter->{$item} = &LONCAPA::clean_username($filter->{$item}); |
|
if ($env{'form.persondomfilter'} eq '') { |
|
unless ($env{'form.gosearch'}) { |
|
$filter->{'persondomfilter'} = $env{'request.role.domain'}; |
|
} |
|
} else { |
|
$filter->{'persondomfilter'} = |
|
&LONCAPA::clean_domain($env{'form.persondomfilter'}); |
|
} |
|
$persondomselectform = |
|
&Apache::loncommon::select_dom_form($filter->{'persondomfilter'}, |
|
'persondomfilter',1); |
|
} else { |
|
$filter->{$item} =~ s/\W//g; |
|
} |
|
if (!$filter->{$item}) { |
|
$filter->{$item} = ''; |
|
} |
|
} |
|
if ($item eq 'domainfilter') { |
|
my $allow_blank = 1; |
|
if ($formname eq 'portform') { |
|
$filter->{$item} ||= $env{'user.domain'}; |
|
$allow_blank=0; |
|
} elsif ($formname eq 'studentform') { |
|
$filter->{$item} ||= $env{'request.role.domain'}; |
|
$allow_blank=0; |
|
} |
|
if ($env{'form.fixeddom'}) { |
|
$domainselectform = '<input type="hidden" name="domainfilter"'. |
|
'value="'.$env{'request.role.domain'}.'" />'. |
|
&Apache::lonnet::domain($env{'request.role.domain'}, |
|
'description'); |
|
$codedom = $env{'request.role.domain'}; |
|
} else { |
|
$domainselectform = |
|
&Apache::loncommon::select_dom_form($filter->{$item}, |
|
'domainfilter', |
|
$allow_blank,'',$onchange); |
|
$codedom = $filter->{'domainfilter'}; |
|
} |
|
} else { |
|
$list->{$item} = &HTML::Entities::encode($filter->{$item},'<>&"'); |
|
} |
|
} |
|
|
|
# last course activity filter and selection |
|
$filter->{'sincefilter'} = $env{'form.sincefilter'}; |
|
$filter->{'sincefilter'} =~ s/[^\d-]//g; |
|
if (!$filter->{'sincefilter'}) { $filter->{'sincefilter'}=-1; } |
|
$sincefilterform=&Apache::loncommon::select_form($filter->{'sincefilter'}, |
|
'sincefilter',('-1'=>'', |
|
'86400' => 'today', |
|
'604800' => 'last week', |
|
'2592000' => 'last month', |
|
'7776000' => 'last three months', |
|
'15552000' => 'last six months', |
|
'31104000' => 'last year', |
|
'select_form_order' => |
|
['-1','86400','604800','2592000','7776000', |
|
'15552000','31104000'])); |
|
|
|
my %lt = ( |
|
'cac' => &mt("$type Activity"), |
|
'cde' => &mt("$type Title"), |
|
'cdo' => &mt("$type Domain"), |
|
'ins' => &mt('Institutional Code'), |
|
'inc' => &mt('Institutional Categorization'), |
|
'cow' => &mt("$type Owner/Co-owner"), |
|
'cop' => &mt("$type Personnel Includes"), |
|
'cog' => &mt('Type') |
|
); |
|
|
|
$typeselectform = '<select name="type" size="1"'; |
|
if ($onchange) { |
|
$typeselectform .= 'onchange="'.$onchange.'"'; |
|
} |
|
$typeselectform .= '>'."\n"; |
|
|
|
my ($cloneableonlyform,$cloneabletitle); |
|
if (exists($filter->{'cloneableonly'})) { |
|
my $cloneableon = ''; |
|
my $cloneableoff = ' checked="checked"'; |
|
if ($filter->{'cloneableonly'}) { |
|
$cloneableon = $cloneableoff; |
|
$cloneableoff = ''; |
|
} |
|
$cloneableonlyform = '<span class="LC_nobreak"><label><input type="radio" name="cloneableonly" value="1" '.$cloneableon.'/> '.&mt('Required').'</label>'.(' 'x3).'<label><input type="radio" name="cloneableonly" value="" '.$cloneableoff.' /> '.&mt('No restriction').'</label></span>'; |
|
if ($env{'form.form'} eq 'ccrs') { |
|
$cloneabletitle = &mt('Cloneable for').' '.$cloneruname.':'.$clonerudom; |
|
} else { |
|
$cloneabletitle = &mt('Cloneable by you'); |
|
} |
|
} |
|
my $officialjs; |
|
if ($type eq 'Course') { |
|
if (exists($filter->{'instcodefilter'})) { |
|
if (($env{'form.fixeddom'}) || ($formname eq 'requestcrs') |
|
|| ($formname eq 'modifycourse')) { |
|
$officialjs = 1; |
|
($instcodeform,$jscript,$$numtitlesref) = |
|
&instcode_selectors($codedom,'filterpicker',$officialjs); |
|
if ($jscript) { |
|
$jscript = '<script type="text/javascript" language="Javascript">'. |
|
$jscript.'</script>'."\n"; |
|
} |
|
} |
|
if ($instcodeform eq '') { |
|
$instcodeform = |
|
'<input type="text" name="instcodefilter" size="10" value="'. |
|
$list->{'instcodefilter'}.'" />'; |
|
$instcodetitle = $lt{'ins'}; |
|
} else { |
|
$instcodetitle = $lt{'inc'}; |
|
} |
|
if ($env{'form.fixeddom'}) { |
|
$instcodetitle .= '<br />('.$codedom.')'; |
|
} |
|
} |
|
} |
|
|
|
foreach my $posstype ('Course','Community') { |
|
$typeselectform.='<option value="'.$posstype.'"'. |
|
($posstype eq $type ? ' selected="selected" ' : ''). ">".&mt($posstype)."</option>\n"; |
|
} |
|
$typeselectform.="</select>"; |
|
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" />'."\n". |
|
'<input type="hidden" name="prevphase" value="'. |
|
$env{'form.prevphase'}.'" />'."\n"; |
|
} 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 |
|
$roleelement |
|
$multelement |
|
|; |
|
if ($formname eq 'portform') { |
|
$output .= '<input type="hidden" name="setroles" value="'.$env{'form.setroles'}.'" />'."\n"; |
|
} |
|
} |
|
if ($env{'form.fixeddom'}) { |
|
$output .= '<input type="hidden" name="fixeddom" value="'.$env{'form.fixeddom'}.'" />'."\n"; |
|
} |
|
$output .= "<br />\n".&Apache::lonhtmlcommon::start_pick_box(); |
|
if ($sincefilterform) { |
|
$output .= &Apache::lonhtmlcommon::row_title($lt{'cac'}) |
|
.$sincefilterform |
|
.&Apache::lonhtmlcommon::row_closure(); |
|
} |
|
if ($domainselectform) { |
|
$output .= &Apache::lonhtmlcommon::row_title($lt{'cdo'}) |
|
.$domainselectform |
|
.&Apache::lonhtmlcommon::row_closure(); |
|
} |
|
if ($typeselectform) { |
|
$output .= &Apache::lonhtmlcommon::row_title($lt{'cog'}) |
|
.$typeselectform |
|
.&Apache::lonhtmlcommon::row_closure(); |
|
} |
|
if ($instcodeform) { |
|
$output .= &Apache::lonhtmlcommon::row_title($instcodetitle) |
|
.$instcodeform |
|
.&Apache::lonhtmlcommon::row_closure(); |
|
} |
|
if (exists($filter->{'ownerfilter'})) { |
|
$output .= &Apache::lonhtmlcommon::row_title($lt{'cow'}). |
|
'<table><tr><td>'.&mt('Username').'<br />'. |
|
'<input type="text" name="ownerfilter" size="20" value="'. |
|
$list->{'ownerfilter'}.'" /></td><td>'.&mt('Domain').'<br />'. |
|
$ownerdomselectform.'</td></tr></table>'. |
|
&Apache::lonhtmlcommon::row_closure(); |
|
} |
|
if (exists($filter->{'personfilter'})) { |
|
$output .= &Apache::lonhtmlcommon::row_title($lt{'cop'}). |
|
'<table><tr><td>'.&mt('Username').'<br />'. |
|
'<input type="text" name="personfilter" size="20" value="'. |
|
$list->{'personfilter'}.'" /></td><td>'.&mt('Domain').'<br />'. |
|
$persondomselectform.'</td></tr></table>'. |
|
&Apache::lonhtmlcommon::row_closure(); |
|
} |
|
if (exists($filter->{'coursefilter'})) { |
|
$output .= &Apache::lonhtmlcommon::row_title(&mt('LON-CAPA course ID')) |
|
.'<input type="text" name="coursefilter" size="25" value="' |
|
.$list->{'coursefilter'}.'" />' |
|
.&Apache::lonhtmlcommon::row_closure(); |
|
} |
|
if ($cloneableonlyform) { |
|
$output .= &Apache::lonhtmlcommon::row_title($cloneabletitle). |
|
$cloneableonlyform.&Apache::lonhtmlcommon::row_closure(); |
|
} |
|
if (exists($filter->{'descriptfilter'})) { |
|
$output .= &Apache::lonhtmlcommon::row_title($lt{'cde'}) |
|
.'<input type="text" name="descriptfilter" size="40" value="' |
|
.$list->{'descriptfilter'}.'" />' |
|
.&Apache::lonhtmlcommon::row_closure(1); |
|
} |
|
$output .= &Apache::lonhtmlcommon::end_pick_box().'<p>'; |
|
my $warning; |
|
if (($env{'form.form'} eq 'ccrs') || ($env{'form.form'} eq 'requestcrs')) { |
|
my $cloneruhome=&Apache::lonnet::homeserver($cloneruname,$clonerudom); |
|
my $cc_clone; |
|
if ($cloneruhome eq 'no_host') { |
|
$warning = '<div class="LC_error">'.&mt('Intended course owner does not exist'). |
|
'</div>'; |
|
} else { |
|
if ($env{'form.form'} eq 'ccrs') { |
|
$output .= '<input type="hidden" name="cloner" value="'.$env{'form.cloner'}.'" />'."\n"; |
|
} |
|
my %ccroles = &Apache::lonnet::get_my_roles($cloneruname,$clonerudom, |
|
'userroles',['active'], ['cc']); |
|
foreach my $key (sort(keys(%ccroles))) { |
|
my ($cnum,$cdom,$role) = split(':',$key); |
|
$cc_clone .= $cdom.':'.$cnum.'&'; |
|
} |
|
$cc_clone =~ s/\&$//; |
|
} |
|
if ($cc_clone ne '') { |
|
$output .= '<input type="hidden" name="cc_clone" value="'.$cc_clone.'" />'; |
|
} |
|
} |
|
$output .= '<input type="hidden" name="updater" value="">'."\n". |
|
'<input type="submit" name="gosearch" value="'. |
|
&mt('Search').'" /></p>'."\n".'</form>'."\n".'<hr />'."\n"; |
|
return $jscript.$warning.$output; |
|
} |
|
|
|
sub instcode_selectors { |
|
my ($codedom,$formname,$officialjs) = @_; |
|
my ($output,@codetitles,%cat_titles,%cat_order,%cat_items); |
|
my ($jscript,$totcodes,$numtitles,$lasttitle) = |
|
&Apache::courseclassifier::instcode_selectors_data($codedom,$formname, |
|
\%cat_items,\@codetitles,\%cat_titles,\%cat_order,$officialjs); |
|
if ($numtitles > 0) { |
|
my $official = ' checked="checked" '; |
|
my $unofficial = ''; |
|
if ($env{'form.official'} eq 'off') { |
|
$unofficial = $official; |
|
$official = ''; |
|
} |
|
$output .= '<span class="LC_nobreak">'.&mt('Official course:').' <label>'. |
|
'<input type="radio" name="official" value="on"'.$official.' />'. |
|
&mt('Yes').'</label>'.(' 'x3).'<label>'. |
|
'<input type="radio" name="official" value="off"'.$unofficial. |
|
' onclick="toggleOfficial();" />'.&mt('No').'</label></span><br />'. |
|
&Apache::courseclassifier::build_instcode_selectors($numtitles, |
|
$lasttitle,\%cat_items,\@codetitles,\%cat_titles,\%cat_order)."\n". |
|
'<input type="hidden" name="numtitles" value="'.$numtitles.'" />'."\n". |
|
'<input type="hidden" name="state" value="listing" />'."\n"; |
|
|
|
} |
|
return ($output,$jscript,$numtitles); |
|
} |
|
|
|
sub search_courses { |
|
my ($r,$type,$onlyown,$filter,$numtitles,$cloneruname,$clonerudom) = @_; |
|
my (%courses,%showcourses,$cloner); |
|
if (!$onlyown) { |
|
$r->print(&mt('Searching ...').'<br /> <br />'); |
|
$r->rflush(); |
|
if (($filter->{'ownerfilter'} ne '') || |
|
($filter->{'ownerdomfilter'} ne '')) { |
|
$filter->{'combownerfilter'} = $filter->{'ownerfilter'}.':'. |
|
$filter->{'ownerdomfilter'}; |
|
} |
|
foreach my $item ('descriptfilter','coursefilter','combownerfilter') { |
|
if (!$filter->{$item}) { |
|
$filter->{$item}='.'; |
|
} |
|
} |
|
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 = '.'; } |
|
|
|
if (($clonerudom ne '') && ($cloneruname ne '')) { |
|
$cloner = $cloneruname.':'.$clonerudom; |
|
} |
|
%courses = |
|
&Apache::lonnet::courseiddump($filter->{'domainfilter'}, |
|
$filter->{'descriptfilter'}, |
|
$timefilter, |
|
$instcodefilter, |
|
$filter->{'combownerfilter'}, |
|
$filter->{'coursefilter'}, |
|
undef,undef,$type,$regexpok,undef,undef, |
|
undef,undef,$cloner,$env{'form.cc_clone'}, |
|
$filter->{'cloneableonly'}); |
|
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 { |
} else { |
$r->print('<br />'); |
my ($cc_clone,$ccrole); |
my %coursehash = &Apache::loncommon::findallcourses(); |
if ($type eq 'Community') { |
foreach my $cid (sort(keys(%coursehash))) { |
$ccrole = 'co'; |
$courses{$cid}{'description'} = $env{'course.'.$cid.'.description'}; |
} elsif ($type eq 'Course') { |
|
$ccrole = 'cc'; |
|
} |
|
my %ccroles = &Apache::lonnet::get_my_roles($cloneruname,$clonerudom, |
|
'userroles',['active'], [$ccrole]); |
|
foreach my $key (sort(keys(%ccroles))) { |
|
my ($cnum,$cdom,$role) = split(':',$key); |
|
$cc_clone .= $cdom.':'.$cnum.'&'; |
} |
} |
|
$cc_clone =~ s/\&$//; |
|
return ($cc_clone); |
} |
} |
return %courses; |
|
} |
} |
|
|
sub course_chooser { |
sub course_chooser { |
Line 865 sub course_chooser {
|
Line 632 sub course_chooser {
|
$output = &mt('No rights to clone')."\n"; |
$output = &mt('No rights to clone')."\n"; |
} |
} |
} else { |
} else { |
$output = '<input type="button" value="'.&mt('Select').'" onClick="gochoose('. |
$output = '<input type="button" value="'.&mt('Select').'" onclick="gochoose('. |
"'".$cnum."','".$cdom."','".$cleandesc."')".'" />'."\n"; |
"'".$cnum."','".$cdom."','".$cleandesc."')".'" />'."\n"; |
} |
} |
return $output; |
return $output; |
Line 880 sub gochoose_javascript {
|
Line 647 sub gochoose_javascript {
|
list => 'courselist', |
list => 'courselist', |
}, |
}, |
'Community' => { |
'Community' => { |
name => 'grouppick', |
name => 'coursepick', |
total => 'grouptotal', |
total => 'coursetotal', |
list => 'grouplist', |
list => 'courselist', |
}, |
}, |
); |
); |
my $output .= qq| |
my $output = qq| |
<script type="text/javascript"> |
|
function gochoose(cname,cdom,cdesc) { |
function gochoose(cname,cdom,cdesc) { |
var openerForm = "$env{'form.form'}"; |
var openerForm = "$env{'form.form'}"; |
courseCount = 0; |
courseCount = 0; |
Line 933 function gochoose(cname,cdom,cdesc) {
|
Line 699 function gochoose(cname,cdom,cdesc) {
|
} |
} |
ENDSCRIPT |
ENDSCRIPT |
} else { |
} else { |
my $name_code; |
my ($name_code,$type_code); |
if ($env{'form.cnameelement'} ne '') { |
if ($env{'form.cnameelement'} ne '') { |
$name_code = 'opener.document.'.$env{'form.form'}.'.'. |
$name_code = <<ENDNAMECODE; |
$env{'form.cnameelement'}.'.value=cdesc;'; |
var showcdesc = cdesc; |
|
if (cdesc.length > 25) { |
|
showcdesc = cdesc.substr(0,25)+' ...'; |
|
} |
|
opener.document.$env{'form.form'}.$env{'form.cnameelement'}.value=showcdesc; |
|
ENDNAMECODE |
|
} |
|
if ($env{'form.typeelement'} ne '') { |
|
$type_code = 'opener.document.'.$env{'form.form'}.'.'. |
|
$env{'form.typeelement'}.'.value=document.courselist.type;'; |
} |
} |
|
|
$output .= qq| |
$output .= qq| |
$name_code |
$name_code |
|
$type_code |
opener.document.$env{'form.form'}.$env{'form.cnumelement'}.value=cname; |
opener.document.$env{'form.form'}.$env{'form.cnumelement'}.value=cname; |
var slct=opener.document.$env{'form.form'}.$env{'form.cdomelement'}; |
var slct=opener.document.$env{'form.form'}.$env{'form.cdomelement'}; |
if (slct.options == undefined) { |
if (slct.options == undefined) { |
Line 961 ENDSCRIPT
|
Line 738 ENDSCRIPT
|
$autosubmit |
$autosubmit |
$lastaction |
$lastaction |
} |
} |
</script> |
|
|; |
|; |
return $output; |
return &Apache::lonhtmlcommon::scripttag($output); |
} |
} |
|
|
1; |
1; |
Line 1079 Output: 2 - $jscript - javascript for ch
|
Line 855 Output: 2 - $jscript - javascript for ch
|
|
|
Side Effects: None |
Side Effects: None |
|
|
=item * |
|
X<build_filters()> |
|
B<build_filters($filterlist,$type,$roleelement,$multelement,$filter,$action,$numfiltersref,$caller,$cloneruname,$clonerudom)>: |
|
|
|
|
|
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. |
|
|
|
Side Effects: None |
|
|
|
=item * |
|
X<search_courses()> |
|
B<search_courses($r,$type,$onlyown,$filter,$numtitles,$cloneruname,$clonerudom)>: |
|
|
|
|
|
Input: 7 - 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; optional username of new course owner, optional domain of new course owner). Last two needed when search is for courses to clone from course request form, or course creation form (DC). |
|
|
|
Output: 1 - %courses - hash of courses satisfying search criteria, keys = course IDs, values are corresponding colon-separated escaped description, institutional code, owner and type. |
|
|
|
Side Effects: None |
|
|
|
|
|
=item * |
=item * |
X<course_chooser()> |
X<course_chooser()> |
Line 1155 javascript functions used when user sele
|
Line 909 javascript functions used when user sele
|
|
|
=item |
=item |
|
|
(g) Scantron Operator uploading a scantron file to a course - course number is written to visible form element in opener window. Child window closes. |
(g) Bubblesheet Scanning Operator uploading a bubblesheet file to a course - course number is written to visible form element in opener window. Child window closes. |
|
|
=item |
=item |
|
|