version 1.879, 2009/08/05 23:44:52
|
version 1.897, 2009/10/13 13:18:24
|
Line 483 ENDAUTHORBRW
|
Line 483 ENDAUTHORBRW
|
|
|
sub coursebrowser_javascript { |
sub coursebrowser_javascript { |
my ($domainfilter,$sec_element,$formname)=@_; |
my ($domainfilter,$sec_element,$formname)=@_; |
my $crs_or_grp_alert = &mt('Please select the type of LON-CAPA entity - Course or Community - for which you wish to add/modify a user role'); |
my $crs_or_grp_alert = &mt('Please select the type of LON-CAPA entity - Course or Community - for which you wish to add/modify a user role.'); |
my $id_functions = &javascript_index_functions(); |
my $id_functions = &javascript_index_functions(); |
my $output = ' |
my $output = ' |
<script type="text/javascript" language="JavaScript"> |
<script type="text/javascript" language="JavaScript"> |
Line 493 sub coursebrowser_javascript {
|
Line 493 sub coursebrowser_javascript {
|
$output .= <<"ENDSTDBRW"; |
$output .= <<"ENDSTDBRW"; |
function opencrsbrowser(formname,uname,udom,desc,extra_element,multflag,crstype) { |
function opencrsbrowser(formname,uname,udom,desc,extra_element,multflag,crstype) { |
var url = '/adm/pickcourse?'; |
var url = '/adm/pickcourse?'; |
|
var formid = getFormIdByName(formname); |
var domainfilter = getDomainFromSelectbox(formname,udom); |
var domainfilter = getDomainFromSelectbox(formname,udom); |
if (domainfilter != null) { |
if (domainfilter != null) { |
if (domainfilter != '') { |
if (domainfilter != '') { |
Line 602 sub userbrowser_javascript {
|
Line 603 sub userbrowser_javascript {
|
my $id_functions = &javascript_index_functions(); |
my $id_functions = &javascript_index_functions(); |
return <<"ENDUSERBRW"; |
return <<"ENDUSERBRW"; |
|
|
function openuserbrowser(formname,uname,udom,ulast,ufirst,uemail,hideudom) { |
function openuserbrowser(formname,uname,udom,ulast,ufirst,uemail,hideudom,crsdom,caller) { |
var url = '/adm/pickuser?'; |
var url = '/adm/pickuser?'; |
var userdom = getDomainFromSelectbox(formname,udom); |
var userdom = getDomainFromSelectbox(formname,udom); |
if (userdom != null) { |
if (userdom != null) { |
Line 615 function openuserbrowser(formname,uname,
|
Line 616 function openuserbrowser(formname,uname,
|
'&ulastelement='+ulast+ |
'&ulastelement='+ulast+ |
'&ufirstelement='+ufirst+ |
'&ufirstelement='+ufirst+ |
'&uemailelement='+uemail+ |
'&uemailelement='+uemail+ |
'&hideudomelement='+hideudom; |
'&hideudomelement='+hideudom+ |
|
'&coursedom='+crsdom; |
|
if ((caller != null) && (caller != undefined)) { |
|
url += '&caller='+caller; |
|
} |
var title = 'User_Browser'; |
var title = 'User_Browser'; |
var options = 'scrollbars=1,resizable=1,menubar=0'; |
var options = 'scrollbars=1,resizable=1,menubar=0'; |
options += ',width=700,height=600'; |
options += ',width=700,height=600'; |
Line 623 function openuserbrowser(formname,uname,
|
Line 628 function openuserbrowser(formname,uname,
|
stdeditbrowser.focus(); |
stdeditbrowser.focus(); |
} |
} |
|
|
function fix_domain (formname,udom,origdom) { |
function fix_domain (formname,udom,origdom,uname) { |
var formid = getFormIdByName(formname); |
var formid = getFormIdByName(formname); |
if (formid > -1) { |
if (formid > -1) { |
|
var unameid = getIndexByName(formid,uname); |
var domid = getIndexByName(formid,udom); |
var domid = getIndexByName(formid,udom); |
var hidedomid = getIndexByName(formid,origdom); |
var hidedomid = getIndexByName(formid,origdom); |
if (hidedomid > -1) { |
if (hidedomid > -1) { |
var fixeddom = document.forms[formid].elements[hidedomid].value; |
var fixeddom = document.forms[formid].elements[hidedomid].value; |
if (domid > -1) { |
var unameval = document.forms[formid].elements[unameid].value; |
var slct = document.forms[formid].elements[domid]; |
if ((fixeddom != '') && (fixeddom != undefined) && (fixeddom != null) && (unameval != '') && (unameval != undefined) && (unameval != null)) { |
if (slct.type == 'select-one') { |
if (domid > -1) { |
var i; |
var slct = document.forms[formid].elements[domid]; |
for (i=0;i<slct.length;i++) { |
if (slct.type == 'select-one') { |
if (slct.options[i].value==fixeddom) { slct.selectedIndex=i; } |
var i; |
|
for (i=0;i<slct.length;i++) { |
|
if (slct.options[i].value==fixeddom) { slct.selectedIndex=i; } |
|
} |
|
} |
|
if (slct.type == 'hidden') { |
|
slct.value = fixeddom; |
} |
} |
} |
|
if (slct.type == 'hidden') { |
|
slct.value = fixeddom; |
|
} |
} |
} |
} |
} |
} |
Line 713 sub selectauthor_link {
|
Line 722 sub selectauthor_link {
|
} |
} |
|
|
sub selectuser_link { |
sub selectuser_link { |
my ($form,$unameelem,$domelem,$lastelem,$firstelem,$emailelem,$hdomelem,$linktext) = @_; |
my ($form,$unameelem,$domelem,$lastelem,$firstelem,$emailelem,$hdomelem, |
|
$coursedom,$linktext,$caller) = @_; |
return '<a href="javascript:openuserbrowser('."'$form','$unameelem','$domelem',". |
return '<a href="javascript:openuserbrowser('."'$form','$unameelem','$domelem',". |
"'$lastelem','$firstelem','$emailelem','$hdomelem'".');">'.$linktext.'</a>'; |
"'$lastelem','$firstelem','$emailelem','$hdomelem','$coursedom','$caller'". |
|
');">'.$linktext.'</a>'; |
} |
} |
|
|
sub check_uncheck_jscript { |
sub check_uncheck_jscript { |
Line 2944 sub messagewrapper {
|
Line 2955 sub messagewrapper {
|
sub noteswrapper { |
sub noteswrapper { |
my ($link,$un,$do)=@_; |
my ($link,$un,$do)=@_; |
return |
return |
"<a href='/adm/email?recordftf=retrieve&recname=$un&recdom=$do'>$link</a>"; |
"<a href='/adm/email?recordftf=retrieve&recname=$un&recdom=$do'>$link</a>"; |
} |
} |
|
|
# ------------------------------------------------------------- Aboutme Wrapper |
# ------------------------------------------------------------- Aboutme Wrapper |
Line 2954 sub aboutmewrapper {
|
Line 2965 sub aboutmewrapper {
|
if (!defined($username) && !defined($domain)) { |
if (!defined($username) && !defined($domain)) { |
return; |
return; |
} |
} |
return '<a href="/adm/'.$domain.'/'.$username.'/aboutme"'. |
return '<a href="/adm/'.$domain.'/'.$username.'/aboutme?forcestudent=1"'. |
($target?' target="$target"':'').' title="'.&mt("View this user's personal information page").'">'.$link.'</a>'; |
($target?' target="$target"':'').' title="'.&mt("View this user's personal information page").'">'.$link.'</a>'; |
} |
} |
|
|
Line 2968 sub syllabuswrapper {
|
Line 2979 sub syllabuswrapper {
|
# ----------------------------------------------------------------------------- |
# ----------------------------------------------------------------------------- |
|
|
sub track_student_link { |
sub track_student_link { |
my ($linktext,$sname,$sdom,$target,$start) = @_; |
my ($linktext,$sname,$sdom,$target,$start,$only_body) = @_; |
my $link ="/adm/trackstudent?"; |
my $link ="/adm/trackstudent?"; |
my $title = 'View recent activity'; |
my $title = 'View recent activity'; |
if (defined($sname) && $sname !~ /^\s*$/ && |
if (defined($sname) && $sname !~ /^\s*$/ && |
Line 2982 sub track_student_link {
|
Line 2993 sub track_student_link {
|
$target = ''; |
$target = ''; |
} |
} |
if ($start) { $link.='&start='.$start; } |
if ($start) { $link.='&start='.$start; } |
|
if ($only_body) { $link .= '&only_body=1'; } |
$title = &mt($title); |
$title = &mt($title); |
$linktext = &mt($linktext); |
$linktext = &mt($linktext); |
return qq{<a href="$link" title="$title" $target>$linktext</a>}. |
return qq{<a href="$link" title="$title" $target>$linktext</a>}. |
Line 3914 sub parse_block_record {
|
Line 3926 sub parse_block_record {
|
} |
} |
|
|
sub blocking_status { |
sub blocking_status { |
my $blocked; |
|
my ($activity,$uname,$udom) = @_; |
my ($activity,$uname,$udom) = @_; |
my %setters; |
my %setters; |
|
|
|
# check for active blocking |
my ($startblock,$endblock)=&blockcheck(\%setters,$activity,$uname,$udom); |
my ($startblock,$endblock)=&blockcheck(\%setters,$activity,$uname,$udom); |
if ($startblock && $endblock) { |
|
$blocked = 1; |
|
} |
|
if(!wantarray) { |
|
return $blocked; |
|
} |
|
my $output; |
|
my $querystring; |
|
$querystring = "?activity=$activity"; |
|
|
|
$output .= <<"END_MYBLOCK"; |
my $blocked = $startblock && $endblock ? 1 : 0; |
<script type="text/javascript"> |
|
// <![CDATA[ |
# caller just wants to know whether a block is active |
|
if (!wantarray) { return $blocked; } |
|
|
|
# build a link to a popup window containing the details |
|
my $querystring = "?activity=$activity"; |
|
# $uname and $udom decide whose portfolio the user is trying to look at |
|
$querystring .= "&udom=$udom" if $udom; |
|
$querystring .= "&uname=$uname" if $uname; |
|
|
|
my $output .= <<'END_MYBLOCK'; |
function openWindow(url, wdwName, w, h, toolbar,scrollbar) { |
function openWindow(url, wdwName, w, h, toolbar,scrollbar) { |
var options = "width=" + w + ",height=" + h + ","; |
var options = "width=" + w + ",height=" + h + ","; |
options += "resizable=yes,scrollbars="+scrollbar+",status=no,"; |
options += "resizable=yes,scrollbars="+scrollbar+",status=no,"; |
Line 3938 sub blocking_status {
|
Line 3951 sub blocking_status {
|
var newWin = window.open(url, wdwName, options); |
var newWin = window.open(url, wdwName, options); |
newWin.focus(); |
newWin.focus(); |
} |
} |
|
|
// ]]> |
|
</script> |
|
END_MYBLOCK |
END_MYBLOCK |
|
|
|
$output = Apache::lonhtmlcommon::scripttag($output); |
|
|
my $popupUrl = "/adm/blockingstatus/$querystring"; |
my $popupUrl = "/adm/blockingstatus/$querystring"; |
|
my $text = mt('Communication Blocked'); |
|
|
$output .= <<"END_BLOCK"; |
$output .= <<"END_BLOCK"; |
<div class='LC_comblock'> |
<div class='LC_comblock'> |
<a onclick='openWindow("$popupUrl","Blocking Table",600,300,"no","no");return false;' href='/adm/blockingstatus/$querystring' |
<a onclick='openWindow("$popupUrl","Blocking Table",600,300,"no","no");return false;' href='/adm/blockingstatus/$querystring' |
title='Communication Blocked'> |
title='$text'> |
<img class='LC_noBorder LC_middle' title='Communication Blocked' src='/res/adm/pages/comblock.png' alt='Communication Blocked'/></a> |
<img class='LC_noBorder LC_middle' title='$text' src='/res/adm/pages/comblock.png' alt='$text'/></a> |
<a onclick='openWindow("$popupUrl","Blocking Table",600,300,"no","no");return false;' href='/adm/blockingstatus/$querystring' |
<a onclick='openWindow("$popupUrl","Blocking Table",600,300,"no","no");return false;' href='/adm/blockingstatus/$querystring' |
title='Communication Blocked'>Communication Blocked</a> |
title='$text'>$text</a> |
</div> |
</div> |
|
|
END_BLOCK |
END_BLOCK |
Line 4032 sub determinedomain {
|
Line 4047 sub determinedomain {
|
my $domain=shift; |
my $domain=shift; |
if (! $domain) { |
if (! $domain) { |
# Determine domain if we have not been given one |
# Determine domain if we have not been given one |
$domain = $Apache::lonnet::perlvar{'lonDefDomain'}; |
$domain = &Apache::lonnet::default_login_domain(); |
if ($env{'user.domain'}) { $domain=$env{'user.domain'}; } |
if ($env{'user.domain'}) { $domain=$env{'user.domain'}; } |
if ($env{'request.role.domain'}) { |
if ($env{'request.role.domain'}) { |
$domain=$env{'request.role.domain'}; |
$domain=$env{'request.role.domain'}; |
Line 4426 sub bodytag {
|
Line 4441 sub bodytag {
|
|
|
if ($env{'environment.remote'} eq 'off') { |
if ($env{'environment.remote'} eq 'off') { |
# No Remote |
# No Remote |
if ($env{'request.state'} eq 'construct') { |
if ($env{'request.state'} eq 'construct') { |
$forcereg=1; |
$forcereg=1; |
} |
} |
|
|
# if ($env{'request.state'} eq 'construct') { |
# if ($env{'request.state'} eq 'construct') { |
# $titleinfo = &CSTR_pageheader(); #FIXME: Will be removed once all scripts have their own calls |
# $titleinfo = &CSTR_pageheader(); #FIXME: Will be removed once all scripts have their own calls |
# } |
# } |
|
|
my $titletable = '<table id="LC_title_bar">' |
my $titletable = '<table id="LC_title_bar">' |
."<tr><td> $titleinfo $dc_info</td>" |
."<tr><td> $titleinfo $dc_info</td>" |
.'</tr></table>'; |
.'</tr></table>'; |
|
|
if ($no_nav_bar) { |
if ($no_nav_bar) { |
$bodytag .= $titletable; |
$bodytag .= $titletable; |
} else { |
} else { |
$bodytag .= qq|<div id="LC_nav_bar">$name $role<br /> |
$bodytag .= qq|<div id="LC_nav_bar">$name $role<br /> |
<em>$realm</em> $dc_info</div>| unless $env{'form.inhibitmenu'}; |
<em>$realm</em> $dc_info</div>| unless $env{'form.inhibitmenu'}; |
|
|
if ($env{'request.state'} eq 'construct') { |
#SD $titletable is obsolete |
$bodytag .= &Apache::lonmenu::menubuttons($forcereg,$titletable); |
#SD if ($env{'request.state'} eq 'construct') { |
} else { |
#SD $bodytag .= &Apache::lonmenu::menubuttons($forcereg,$titletable); |
$bodytag .= &Apache::lonmenu::menubuttons($forcereg).$titletable; |
#SD } else { |
} |
#SD $bodytag .= &Apache::lonmenu::menubuttons($forcereg).$titletable; |
|
#SD } |
|
if ( $env{'form.inhibitmenu'} eq 'yes' |
|
|| $ENV{'REQUEST_URI'} eq '/adm/logout' |
|
|| $env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { |
|
|
|
return $bodytag; |
|
} |
|
|
|
$bodytag .= Apache::lonhtmlcommon::scripttag( |
|
Apache::lonmenu::utilityfunctions(), |
|
'start'); |
|
$bodytag .= Apache::lonmenu::primary_menu(); |
|
$bodytag .= Apache::lonmenu::secondary_menu(); |
|
#SD remove next line |
|
#$bodytag .= Apache::lonmenu::menubuttons($forcereg); |
|
$bodytag .= Apache::lonmenu::serverform(); |
|
$bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); |
|
$bodytag .= Apache::lonmenu::innerregister($forcereg) if $forcereg; |
} |
} |
return $bodytag; |
return $bodytag; |
} |
} |
Line 4465 sub bodytag {
|
Line 4498 sub bodytag {
|
|
|
# Explicit link to get inline menu |
# Explicit link to get inline menu |
my $menu= ($no_inline_link?'' |
my $menu= ($no_inline_link?'' |
:'<a href="/adm/remote?action=collapse">'.&mt('Switch to Inline Menu Mode').'</a>'); |
:'<a href="/adm/remote?action=collapse" target="_top">'.&mt('Switch to Inline Menu Mode').'</a>'); |
$bodytag .= qq|<div id="LC_nav_bar">$name $role |
$bodytag .= qq|<div id="LC_nav_bar">$name $role |
<em>$realm</em> $dc_info </div> |
<em>$realm</em> $dc_info </div> |
<ol class="LC_smallMenu LC_right"> |
<ol class="LC_primary_menu LC_right"> |
<li>$menu</li> |
<li>$menu</li> |
</ol>| unless $env{'form.inhibitmenu'}; |
</ol>| unless $env{'form.inhibitmenu'}; |
# |
# |
Line 4639 a:focus {
|
Line 4672 a:focus {
|
background: yellow |
background: yellow |
} |
} |
|
|
hr { |
|
clear: both; |
|
color: $tabbg; |
|
background-color: $tabbg; |
|
height: 3px; |
|
border: none; |
|
} |
|
|
|
form, .inline { |
form, .inline { |
display: inline; |
display: inline; |
} |
} |
Line 4991 table.LC_nested tr.LC_empty_row td {
|
Line 5016 table.LC_nested tr.LC_empty_row td {
|
padding: 8px; |
padding: 8px; |
} |
} |
|
|
|
table.LC_caption { |
|
} |
|
|
table.LC_nested tr.LC_empty_row td { |
table.LC_nested tr.LC_empty_row td { |
padding: 4ex |
padding: 4ex |
} |
} |
Line 5802 div.LC_createcourse {
|
Line 5830 div.LC_createcourse {
|
# --------------------------*/ |
# --------------------------*/ |
|
|
a:hover, |
a:hover, |
ol.LC_smallMenu a:hover, |
ol.LC_primary_menu a:hover, |
ol#LC_MenuBreadcrumbs a:hover, |
ol#LC_MenuBreadcrumbs a:hover, |
ol#LC_PathBreadcrumbs a:hover, |
ol#LC_PathBreadcrumbs a:hover, |
ul#LC_TabMainMenuContent a:hover, |
ul#LC_secondary_menu a:hover, |
.LC_FormSectionClearButton input:hover |
.LC_FormSectionClearButton input:hover |
ul.LC_TabContent li:hover a { |
ul.LC_TabContent li:hover a { |
color:#BF2317; |
color:#BF2317; |
Line 5882 fieldset > legend {
|
Line 5910 fieldset > legend {
|
font-style: normal; |
font-style: normal; |
} |
} |
|
|
ol.LC_smallMenu { |
ol.LC_primary_menu { |
float: right; |
float: right; |
margin: 0.2em 0 0 0; |
margin: 0.2em 0 0 0; |
} |
} |
Line 5891 ol#LC_PathBreadcrumbs {
|
Line 5919 ol#LC_PathBreadcrumbs {
|
margin: 0; |
margin: 0; |
} |
} |
|
|
ol.LC_smallMenu li { |
ol.LC_primary_menu li { |
display: inline; |
display: inline; |
padding: 5px 5px 0 10px; |
padding: 5px 5px 0 10px; |
vertical-align: top; |
vertical-align: top; |
} |
} |
|
|
ol.LC_smallMenu li img { |
ol.LC_primary_menu li img { |
vertical-align: bottom; |
vertical-align: bottom; |
} |
} |
|
|
ol.LC_smallMenu a { |
ol.LC_primary_menu a { |
font-size: 90%; |
font-size: 90%; |
color: RGB(80, 80, 80); |
color: RGB(80, 80, 80); |
text-decoration: none; |
text-decoration: none; |
} |
} |
|
|
ul#LC_TabMainMenuContent { |
ul#LC_secondary_menu { |
clear: both; |
clear: both; |
color: $fontmenu; |
color: $fontmenu; |
background: $tabbg; |
background: $tabbg; |
Line 5917 ul#LC_TabMainMenuContent {
|
Line 5945 ul#LC_TabMainMenuContent {
|
width: 100%; |
width: 100%; |
} |
} |
|
|
ul#LC_TabMainMenuContent li { |
ul#LC_secondary_menu li { |
font-weight: bold; |
font-weight: bold; |
line-height: 1.8em; |
line-height: 1.8em; |
padding: 0 0.8em; |
padding: 0 0.8em; |
Line 5940 ul.LC_TabContentBigger li {
|
Line 5968 ul.LC_TabContentBigger li {
|
float:left; |
float:left; |
} |
} |
|
|
ul#LC_TabMainMenuContent li a { |
ul#LC_secondary_menu li a { |
color: $fontmenu; |
color: $fontmenu; |
text-decoration: none; |
text-decoration: none; |
} |
} |
Line 6760 sub simple_error_page {
|
Line 6788 sub simple_error_page {
|
sub end_data_table_header_row { |
sub end_data_table_header_row { |
return '</tr>'."\n";; |
return '</tr>'."\n";; |
} |
} |
|
|
|
sub data_table_caption { |
|
my $caption = shift; |
|
return "<caption class=\"LC_caption\">$caption</caption>"; |
|
} |
} |
} |
|
|
=pod |
=pod |
Line 7532 sub user_picker {
|
Line 7565 sub user_picker {
|
# loncreateuser::print_user_query_page() |
# loncreateuser::print_user_query_page() |
# has been completed. |
# has been completed. |
next if ($option eq 'alc'); |
next if ($option eq 'alc'); |
|
next if (($option eq 'crs') && ($env{'form.form'} eq 'requestcrs')); |
next if ($option eq 'crs' && !$env{'request.course.id'}); |
next if ($option eq 'crs' && !$env{'request.course.id'}); |
if ($curr_selected{'srchin'} eq $option) { |
if ($curr_selected{'srchin'} eq $option) { |
$srchinsel .= ' |
$srchinsel .= ' |
Line 9280 sub restore_settings {
|
Line 9314 sub restore_settings {
|
|
|
=item * &build_recipient_list() |
=item * &build_recipient_list() |
|
|
Build recipient lists for four types of e-mail: |
Build recipient lists for five types of e-mail: |
(a) Error Reports, (b) Package Updates, (c) lonstatus warnings/errors |
(a) Error Reports, (b) Package Updates, (c) lonstatus warnings/errors |
(d) Help requests, generated by |
(d) Help requests, (e) Course requests needing approval, generated by |
lonerrorhandler.pm, CHECKRPMS, loncron, and lonsupportreq.pm respectively. |
lonerrorhandler.pm, CHECKRPMS, loncron, lonsupportreq.pm and |
|
loncoursequeueadmin.pm respectively. |
|
|
Inputs: |
Inputs: |
defmail (scalar - email address of default recipient), |
defmail (scalar - email address of default recipient), |
Line 9856 sub check_clone {
|
Line 9891 sub check_clone {
|
$clonemsg = &mt('No new course created.').$linefeed.&mt('A new course could not be cloned from the specified original - [_1] - because it is a non-existent course.',$args->{'clonecourse'}.':'.$args->{'clonedomain'}); |
$clonemsg = &mt('No new course created.').$linefeed.&mt('A new course could not be cloned from the specified original - [_1] - because it is a non-existent course.',$args->{'clonecourse'}.':'.$args->{'clonedomain'}); |
} else { |
} else { |
my %clonedesc = &Apache::lonnet::coursedescription($cloneid,{'one_time' => 1}); |
my %clonedesc = &Apache::lonnet::coursedescription($cloneid,{'one_time' => 1}); |
if ($env{'request.role.domain'} eq $args->{'clonedomain'}) { |
if (($env{'request.role.domain'} eq $args->{'clonedomain'}) && |
|
(&Apache::lonnet::allowed('ccc',$env{'request.role.domain'}))) { |
$can_clone = 1; |
$can_clone = 1; |
} else { |
} else { |
my %clonehash = &Apache::lonnet::get('environment',['cloners'], |
my %clonehash = &Apache::lonnet::get('environment',['cloners'], |
Line 9884 sub check_clone {
|
Line 9920 sub check_clone {
|
} |
} |
|
|
sub construct_course { |
sub construct_course { |
my ($args,$logmsg,$courseid,$crsudom,$crsunum,$udom,$uname,$context) = @_; |
my ($args,$logmsg,$courseid,$crsudom,$crsunum,$udom,$uname,$context,$cnum,$category) = @_; |
my $outcome; |
my $outcome; |
my $linefeed = '<br />'."\n"; |
my $linefeed = '<br />'."\n"; |
if ($context eq 'auto') { |
if ($context eq 'auto') { |
Line 9922 sub construct_course {
|
Line 9958 sub construct_course {
|
$args->{'crscode'}, |
$args->{'crscode'}, |
$args->{'ccuname'}.':'. |
$args->{'ccuname'}.':'. |
$args->{'ccdomain'}, |
$args->{'ccdomain'}, |
$args->{'crstype'}); |
$args->{'crstype'}, |
|
$cnum,$context,$category); |
|
|
# Note: The testing routines depend on this being output; see |
# Note: The testing routines depend on this being output; see |
# Utils::Course. This needs to at least be output as a comment |
# Utils::Course. This needs to at least be output as a comment |