version 1.922, 2009/12/02 18:33:27
|
version 1.925.2.13, 2010/09/19 18:50:48
|
Line 1978 sub select_dom_form {
|
Line 1978 sub select_dom_form {
|
($dom eq $defdom ? 'selected="selected" ' : '').'>'.$dom; |
($dom eq $defdom ? 'selected="selected" ' : '').'>'.$dom; |
if ($showdomdesc) { |
if ($showdomdesc) { |
if ($dom ne '') { |
if ($dom ne '') { |
my $domdesc = &Apache::lonnet::domain($dom,'description'); |
my $domdesc; |
|
if ($name eq 'srchdomain') { |
|
if ($dom eq 'gci') { |
|
$domdesc = 'Faculty'; |
|
} else { |
|
$domdesc = 'Students'; |
|
} |
|
} else { |
|
$domdesc = &Apache::lonnet::domain($dom,'description'); |
|
} |
if ($domdesc ne '') { |
if ($domdesc ne '') { |
$selectdomain .= ' ('.$domdesc.')'; |
$selectdomain .= ' ('.$domdesc.')'; |
} |
} |
Line 2469 sub authform_internal{
|
Line 2478 sub authform_internal{
|
} |
} |
$autharg = '<input type="password" size="10" name="intarg" value="'. |
$autharg = '<input type="password" size="10" name="intarg" value="'. |
$intarg.'" onchange="'.$jscall.'" />'; |
$intarg.'" onchange="'.$jscall.'" />'; |
$result = &mt |
my $authtext = '[_1] Internally authenticated (with initial password [_2])'; |
('[_1] Internally authenticated (with initial password [_2])', |
if ($in{'caller'} eq 'requestcrs') { |
'<label>'.$authtype,'</label>'.$autharg); |
$authtext = "[_1] Students' password, if none in the uploaded file: [_2]"; |
|
} |
|
$result = &mt($authtext,'<label>'.$authtype,'</label>'.$autharg); |
$result.="<label><input type=\"checkbox\" name=\"visible\" onclick='if (this.checked) { this.form.intarg.type=\"text\" } else { this.form.intarg.type=\"password\" }' />".&mt('Visible input').'</label>'; |
$result.="<label><input type=\"checkbox\" name=\"visible\" onclick='if (this.checked) { this.form.intarg.type=\"text\" } else { this.form.intarg.type=\"password\" }' />".&mt('Visible input').'</label>'; |
return $result; |
return $result; |
} |
} |
Line 4467 sub bodytag {
|
Line 4478 sub bodytag {
|
'link' => &designparm($function.'.link',$domain),); |
'link' => &designparm($function.'.link',$domain),); |
@design{keys(%$addentries)} = @$addentries{keys(%$addentries)}; |
@design{keys(%$addentries)} = @$addentries{keys(%$addentries)}; |
|
|
|
my $custommenu; |
|
if ($env{'environment.remote'} eq 'off') { |
|
$custommenu = &needs_gci_custom(); |
|
} |
# role and realm |
# role and realm |
my ($role,$realm) = split(/\./,$env{'request.role'},2); |
my ($role,$realm) = split(/\./,$env{'request.role'},2); |
if ($role eq 'ca') { |
if ($role eq 'ca') { |
Line 4476 sub bodytag {
|
Line 4491 sub bodytag {
|
# realm |
# realm |
if ($env{'request.course.id'}) { |
if ($env{'request.course.id'}) { |
if ($env{'request.role'} !~ /^cr/) { |
if ($env{'request.role'} !~ /^cr/) { |
$role = &Apache::lonnet::plaintext($role,&course_type()); |
if (($custommenu) && ($role eq 'cm')) { |
|
undef($role); |
|
} else { |
|
$role = &Apache::lonnet::plaintext($role,&course_type()); |
|
} |
} |
} |
if ($env{'request.course.sec'}) { |
if ($env{'request.course.sec'}) { |
$role .= (' 'x2).'- '.&mt('section:').' '.$env{'request.course.sec'}; |
$role .= (' 'x2).'- '.&mt('section:').' '.$env{'request.course.sec'}; |
} |
} |
$realm = $env{'course.'.$env{'request.course.id'}.'.description'}; |
$realm = $env{'course.'.$env{'request.course.id'}.'.description'}; |
} else { |
} else { |
$role = &Apache::lonnet::plaintext($role); |
if (($custommenu) && ($role eq 'cm')) { |
|
undef($role); |
|
} else { |
|
$role = &Apache::lonnet::plaintext($role); |
|
} |
} |
} |
|
|
if (!$realm) { $realm=' '; } |
if (!$realm) { $realm=' '; } |
Line 4534 sub bodytag {
|
Line 4557 sub bodytag {
|
# $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 $role_selector; |
|
if (($custommenu) && ($env{'request.course.id'}) && |
|
($env{'course.'.$env{'request.course.id'}.'.domain'} eq 'gcitest') && |
|
($env{'request.role'} !~ m{^st\./gcitest/$match_courseid})) { |
|
$role_selector = &Apache::lonmenu::roles_selector( |
|
$env{'course.' . $env{'request.course.id'} . '.domain'}, |
|
$env{'course.' . $env{'request.course.id'} . '.num'} ); |
|
if ($role_selector) { |
|
$role_selector = '<br />'.$role_selector; |
|
} |
|
} |
|
|
if ($env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { |
if ($env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { |
if ($dc_info) { |
if ($dc_info) { |
Line 4545 sub bodytag {
|
Line 4578 sub bodytag {
|
return $bodytag; |
return $bodytag; |
} |
} |
|
|
$bodytag .= qq|<div id="LC_nav_bar">$name $role</div>|; |
$bodytag .= qq|<div id="LC_nav_bar">$name $role $role_selector</div>|; |
|
|
$bodytag .= Apache::lonhtmlcommon::scripttag( |
$bodytag .= Apache::lonhtmlcommon::scripttag( |
Apache::lonmenu::utilityfunctions(), 'start'); |
Apache::lonmenu::utilityfunctions('',$custommenu), 'start'); |
|
|
$bodytag .= Apache::lonmenu::primary_menu(); |
$bodytag .= Apache::lonmenu::primary_menu(); |
|
|
Line 4559 sub bodytag {
|
Line 4592 sub bodytag {
|
|
|
#don't show menus for public users |
#don't show menus for public users |
if($env{'user.name'} ne 'public' && $env{'user.domain'} ne 'public'){ |
if($env{'user.name'} ne 'public' && $env{'user.domain'} ne 'public'){ |
$bodytag .= Apache::lonmenu::secondary_menu(); |
if (($custommenu) && |
|
($env{'request.role'} !~ m{^st\./gcitest/$match_courseid})) { |
|
$bodytag .= &Apache::lonmenu::gci_secondary_menu(); |
|
} else { |
|
$bodytag .= Apache::lonmenu::secondary_menu(); |
|
} |
$bodytag .= Apache::lonmenu::serverform(); |
$bodytag .= Apache::lonmenu::serverform(); |
$bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); |
$bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); |
if ($env{'request.state'} eq 'construct') { |
if ($env{'request.state'} eq 'construct') { |
Line 4885 table.LC_pastsubmission {
|
Line 4923 table.LC_pastsubmission {
|
margin: 2px; |
margin: 2px; |
} |
} |
|
|
table#LC_top_nav, |
table#LC_menubuttons { |
table#LC_menubuttons, |
|
table#LC_nav_location { |
|
width: 100%; |
width: 100%; |
background: $pgbg; |
background: $pgbg; |
border: 2px; |
border: 2px; |
Line 4918 table#LC_title_bar.LC_with_remote {
|
Line 4954 table#LC_title_bar.LC_with_remote {
|
margin: 0; |
margin: 0; |
} |
} |
|
|
|
dl.LC_GCI_Menu { |
|
width:300px; |
|
float:left; |
|
margin-right:2em; |
|
} |
|
|
|
dl.LC_GCI_Menu dt { |
|
font-weight: bold; |
|
font-size:0.9em; |
|
margin-bottom:0.7em; |
|
} |
|
|
|
dl.LC_GCI_Menu dd { |
|
font-size:0.8em; |
|
margin:0 0 2em 0; |
|
padding-left:4.5em; |
|
line-height:1.5em; |
|
background:none no-repeat left top; |
|
} |
|
|
/* #SD START (work in progress)*/ |
/* #SD START (work in progress)*/ |
|
|
ul.LC_bct { |
ul.LC_bct { |
Line 4967 table#LC_menubuttons img {
|
Line 5023 table#LC_menubuttons img {
|
border: none; |
border: none; |
} |
} |
|
|
table#LC_top_nav td { |
|
background: $tabbg; |
|
border: none; |
|
font-size: small; |
|
vertical-align:top; |
|
padding:2px 5px 2px 5px; |
|
} |
|
|
|
table#LC_top_nav td a, |
|
div#LC_top_nav a { |
|
color: $font; |
|
} |
|
|
|
table#LC_top_nav td.LC_top_nav_logo { |
|
background: $tabbg; |
|
text-align: left; |
|
white-space: nowrap; |
|
width: 31px; |
|
} |
|
|
|
table#LC_top_nav td.LC_top_nav_logo img { |
|
border: none; |
|
vertical-align: bottom; |
|
} |
|
|
|
table#LC_top_nav td.LC_top_nav_exit, |
|
table#LC_top_nav td.LC_top_nav_help { |
|
width: 2.0em; |
|
} |
|
|
|
table#LC_top_nav td.LC_top_nav_login { |
|
width: 4.0em; |
|
text-align: center; |
|
} |
|
|
|
.LC_breadcrumbs_component { |
.LC_breadcrumbs_component { |
float: right; |
float: right; |
margin: 0 1em; |
margin: 0 1em; |
Line 5014 td.LC_table_cell_checkbox {
|
Line 5035 td.LC_table_cell_checkbox {
|
text-align: center; |
text-align: center; |
} |
} |
|
|
table#LC_mainmenu td.LC_mainmenu_column { |
|
vertical-align: top; |
|
} |
|
|
|
.LC_fontsize_small { |
.LC_fontsize_small { |
font-size: 70%; |
font-size: 70%; |
} |
} |
Line 5079 td.LC_menubuttons_text {
|
Line 5096 td.LC_menubuttons_text {
|
background: $tabbg; |
background: $tabbg; |
} |
} |
|
|
.LC_new_mail { |
|
background: $tabbg; |
|
font-weight: bold; |
|
} |
|
|
|
table.LC_data_table, |
table.LC_data_table, |
table.LC_mail_list { |
table.LC_mail_list { |
border: 1px solid #000000; |
border: 1px solid #000000; |
Line 5269 table.LC_mail_list tr.LC_mail_new:hover
|
Line 5281 table.LC_mail_list tr.LC_mail_new:hover
|
background-color: $mail_new_hover; |
background-color: $mail_new_hover; |
} |
} |
|
|
table.LC_mail_list tr.LC_mail_even { |
|
} |
|
|
|
table.LC_mail_list tr.LC_mail_odd { |
|
} |
|
|
|
table.LC_mail_list tr.LC_mail_read { |
table.LC_mail_list tr.LC_mail_read { |
background-color: $mail_read; |
background-color: $mail_read; |
} |
} |
Line 5680 span.LC_prior_string,
|
Line 5686 span.LC_prior_string,
|
span.LC_prior_custom, |
span.LC_prior_custom, |
span.LC_prior_reaction, |
span.LC_prior_reaction, |
span.LC_prior_math { |
span.LC_prior_math { |
font-family: monospace; |
font-family: $mono; |
white-space: pre; |
white-space: pre; |
} |
} |
|
|
span.LC_prior_string { |
span.LC_prior_string { |
font-family: monospace; |
font-family: $mono; |
white-space: pre; |
white-space: pre; |
} |
} |
|
|
Line 5718 span.LC_cusr_subheading {
|
Line 5724 span.LC_cusr_subheading {
|
font-size: 85%; |
font-size: 85%; |
} |
} |
|
|
table.LC_docs_documents { |
|
background: #BBBBBB; |
|
border-width: 0; |
|
border-collapse: collapse; |
|
} |
|
|
|
table.LC_docs_documents td.LC_docs_document { |
|
border: 2px solid black; |
|
padding: 4px; |
|
} |
|
|
|
div.LC_docs_entry_move { |
div.LC_docs_entry_move { |
border: 1px solid #BBBBBB; |
border: 1px solid #BBBBBB; |
background: #DDDDDD; |
background: #DDDDDD; |
Line 5929 img.stift {
|
Line 5924 img.stift {
|
vertical-align: middle; |
vertical-align: middle; |
} |
} |
|
|
table#LC_mainmenu { |
table td.LC_mainmenu_col_fieldset { |
margin-top:10px; |
|
width:80%; |
|
} |
|
|
|
table#LC_mainmenu td.LC_mainmenu_col_fieldset { |
|
vertical-align: top; |
vertical-align: top; |
width: 45%; |
|
} |
|
|
|
.LC_mainmenu_fieldset_category { |
|
color: $font; |
|
background: $pgbg; |
|
font-size: small; |
|
font-weight: bold; |
|
} |
} |
|
|
div.LC_createcourse { |
div.LC_createcourse { |
Line 6006 h6 {
|
Line 5988 h6 {
|
border: 0; |
border: 0; |
} |
} |
|
|
.LC_Right { |
|
float: right; |
|
margin: 0; |
|
padding: 0; |
|
} |
|
|
|
.LC_FormSectionClearButton input { |
.LC_FormSectionClearButton input { |
background-color:transparent; |
background-color:transparent; |
border: none; |
border: none; |
Line 6269 dl.LC_ListStyleClean dd {
|
Line 6245 dl.LC_ListStyleClean dd {
|
.LC_ListStyleClean, |
.LC_ListStyleClean, |
.LC_ListStyleSimple, |
.LC_ListStyleSimple, |
.LC_ListStyleNormal, |
.LC_ListStyleNormal, |
.LC_ListStyle_Border, |
|
.LC_ListStyleSpecial { |
.LC_ListStyleSpecial { |
/* display:block; */ |
/* display:block; */ |
list-style-position: inside; |
list-style-position: inside; |
Line 6404 table.LC_tableOfContent a {
|
Line 6379 table.LC_tableOfContent a {
|
text-decoration: none; |
text-decoration: none; |
} |
} |
|
|
table.LC_tableBrowseRes tr.LC_trOdd, |
|
table.LC_tableOfContent tr.LC_trOdd { |
|
background-color: #EEEEEE; |
|
} |
|
|
|
table.LC_tableOfContent img { |
table.LC_tableOfContent img { |
border: none; |
border: none; |
height: 1.3em; |
height: 1.3em; |
Line 6507 ul.LC_funclist li {
|
Line 6477 ul.LC_funclist li {
|
line-height: 150%; |
line-height: 150%; |
} |
} |
|
|
|
#gciheader { |
|
float:left; |
|
width:100%; |
|
background:#DAE0D2 url("/gcimenu_bg.gif") repeat-x bottom; |
|
font-size:93%; |
|
line-height:normal; |
|
} |
|
#gciheader ul { |
|
margin:0; |
|
padding:10px 10px 0; |
|
list-style:none; |
|
} |
|
#gciheader li { |
|
float:left; |
|
background:url("/gcimenu_left.gif") no-repeat left top; |
|
margin:0; |
|
padding:0 0 0 9px; |
|
} |
|
#gciheader a { |
|
display:block; |
|
background:url("/gcimenu_right.gif") no-repeat right top; |
|
padding:5px 15px 4px 6px; |
|
} |
|
#gciheader #current { |
|
background-image:url("/gcimenu_left_on.gif"); |
|
} |
|
#gciheader #current a { |
|
background-image:url("/gcimenu_right_on.gif"); |
|
padding-bottom:5px; |
|
} |
|
|
END |
END |
} |
} |
Line 7733 sub user_picker {
|
Line 7733 sub user_picker {
|
'whse' => "When searching by last,first you must include at least one character in the first name.", |
'whse' => "When searching by last,first you must include at least one character in the first name.", |
'thfo' => "The following need to be corrected before the search can be run:", |
'thfo' => "The following need to be corrected before the search can be run:", |
); |
); |
my $domform = &select_dom_form($currdom,'srchdomain',1,1); |
my $domform = &select_dom_form($currdom,'srchdomain',undef,1); |
my $srchinsel = ' <select name="srchin">'; |
my $srchinsel = ' <select name="srchin">'; |
|
|
my @srchins = ('crs','dom','alc','instd'); |
my @srchins = ('crs','dom','alc','instd'); |
|
|
foreach my $option (@srchins) { |
foreach my $option (@srchins) { |
Line 7745 sub user_picker {
|
Line 7745 sub user_picker {
|
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{'form.form'} eq 'requestcrs')); |
next if ($option eq 'crs' && !$env{'request.course.id'}); |
next if ($option eq 'crs' && !$env{'request.course.id'}); |
|
next if ($option eq 'instd'); |
if ($curr_selected{'srchin'} eq $option) { |
if ($curr_selected{'srchin'} eq $option) { |
$srchinsel .= ' |
$srchinsel .= ' |
<option value="'.$option.'" selected="selected">'.$lt{$option}.'</option>'; |
<option value="'.$option.'" selected="selected">'.$lt{$option}.'</option>'; |
} else { |
} else { |
$srchinsel .= ' |
$srchinsel .= ' |
<option value="'.$option.'">'.$lt{$option}.'</option>'; |
<option value="'.$option.'">'.$lt{$option}.'</option>'; |
} |
} |
} |
} |
$srchinsel .= "\n </select>\n"; |
$srchinsel .= "\n </select>\n"; |
Line 7794 sub user_picker {
|
Line 7795 sub user_picker {
|
); |
); |
$new_user_create = '<p class="LC_warning">' |
$new_user_create = '<p class="LC_warning">' |
.&mt("You are not authorized to create new $usertypetext{$usertype} users in this domain.") |
.&mt("You are not authorized to create new $usertypetext{$usertype} users in this domain.") |
.' ' |
.'<br />' |
.&mt('Please contact the [_1]helpdesk[_2] for assistance.' |
.&mt('Enter a valid e-mail address as the username for the new user.').' '.&mt('Please contact the [_1]helpdesk[_2] for assistance.' |
,'<a href="'.$helplink.'">','</a>') |
,'<a href="'.$helplink.'">','</a>') |
.'</p><br />'; |
.'</p><br />'; |
} |
} |
} |
} |
Line 10081 sub check_clone {
|
Line 10082 sub check_clone {
|
my $clonehome=&Apache::lonnet::homeserver($clonecrsunum,$clonecrsudom); |
my $clonehome=&Apache::lonnet::homeserver($clonecrsunum,$clonecrsudom); |
my $clonemsg; |
my $clonemsg; |
my $can_clone = 0; |
my $can_clone = 0; |
my $lctype = lc($args->{'type'}); |
my $lctype = lc($args->{'crstype'}); |
if ($lctype ne 'community') { |
if ($lctype ne 'community') { |
$lctype = 'course'; |
$lctype = 'course'; |
} |
} |
if ($clonehome eq 'no_host') { |
if ($clonehome eq 'no_host') { |
if ($args->{'type'} eq 'Community') { |
if ($args->{'crstype'} eq 'Community') { |
$clonemsg = &mt('No new community created.').$linefeed.&mt('A new community could not be cloned from the specified original - [_1] - because it is a non-existent community.',$args->{'clonecourse'}.':'.$args->{'clonedomain'}); |
$clonemsg = &mt('No new community created.').$linefeed.&mt('A new community could not be cloned from the specified original - [_1] - because it is a non-existent community.',$args->{'clonecourse'}.':'.$args->{'clonedomain'}); |
} else { |
} else { |
$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 ($args->{'type'} eq 'Community') { |
if ($args->{'crstype'} eq 'Community') { |
if ($clonedesc{'type'} ne 'Community') { |
if ($clonedesc{'type'} ne 'Community') { |
$clonemsg = &mt('No new community created.').$linefeed.&mt('A new community could not be cloned from the specified original - [_1] - because it is a course not a community.',$args->{'clonecourse'}.':'.$args->{'clonedomain'}); |
$clonemsg = &mt('No new community created.').$linefeed.&mt('A new community could not be cloned from the specified original - [_1] - because it is a course not a community.',$args->{'clonecourse'}.':'.$args->{'clonedomain'}); |
return ($can_clone, $clonemsg, $cloneid, $clonehome); |
return ($can_clone, $clonemsg, $cloneid, $clonehome); |
Line 10112 sub check_clone {
|
Line 10113 sub check_clone {
|
$can_clone = 1; |
$can_clone = 1; |
} else { |
} else { |
my $ccrole = 'cc'; |
my $ccrole = 'cc'; |
if ($args->{'type'} eq 'Community') { |
if ($args->{'crstype'} eq 'Community') { |
$ccrole = 'co'; |
$ccrole = 'co'; |
} |
} |
my %roleshash = |
my %roleshash = |
Line 10123 sub check_clone {
|
Line 10124 sub check_clone {
|
if (($roleshash{$args->{'clonecourse'}.':'.$args->{'clonedomain'}.':'.$ccrole}) || (grep(/^\Q$args->{'ccuname'}\E:\Q$args->{'ccdomain'}\E$/,@cloners))) { |
if (($roleshash{$args->{'clonecourse'}.':'.$args->{'clonedomain'}.':'.$ccrole}) || (grep(/^\Q$args->{'ccuname'}\E:\Q$args->{'ccdomain'}\E$/,@cloners))) { |
$can_clone = 1; |
$can_clone = 1; |
} else { |
} else { |
if ($args->{'type'} eq 'Community') { |
if ($args->{'crstype'} eq 'Community') { |
$clonemsg = &mt('No new community created.').$linefeed.&mt('The new community could not be cloned from the existing community because the new community owner ([_1]) does not have cloning rights in the existing community ([_2]).',$args->{'ccuname'}.':'.$args->{'ccdomain'},$clonedesc{'description'}); |
$clonemsg = &mt('No new community created.').$linefeed.&mt('The new community could not be cloned from the existing community because the new community owner ([_1]) does not have cloning rights in the existing community ([_2]).',$args->{'ccuname'}.':'.$args->{'ccdomain'},$clonedesc{'description'}); |
} else { |
} else { |
$clonemsg = &mt('No new course created.').$linefeed.&mt('The new course could not be cloned from the existing course because the new course owner ([_1]) does not have cloning rights in the existing course ([_2]).',$args->{'ccuname'}.':'.$args->{'ccdomain'},$clonedesc{'description'}); |
$clonemsg = &mt('No new course created.').$linefeed.&mt('The new course could not be cloned from the existing course because the new course owner ([_1]) does not have cloning rights in the existing course ([_2]).',$args->{'ccuname'}.':'.$args->{'ccdomain'},$clonedesc{'description'}); |
Line 10462 sub construct_course {
|
Line 10463 sub construct_course {
|
$outcome .= ($fatal?$errtext:'write ok').$linefeed; |
$outcome .= ($fatal?$errtext:'write ok').$linefeed; |
} |
} |
|
|
|
if ($args->{'cloneroster'}) { |
|
my ($numadded,$clisterror) = &Apache::lonclonecourse::copyroster($cloneid,$$courseid,$args->{'startaccess'},$args->{'endaccess'}); |
|
if ($clisterror) { |
|
$outcome .= "\0".&mt('An error occurred when copying the student roster from the old course to the new course; the error was: [_1].',$clisterror).$linefeed; |
|
if ($numadded) { |
|
$outcome .= &mt('Although [quant,_1,student] have received roles in the new course the roster does not report this. It is ').$linefeed; |
|
} |
|
} else { |
|
if ($numadded) { |
|
$outcome .= "\0".&mt('[quant,_1,student] copied from roster for old course to roster for new course.',$numadded).$linefeed; |
|
} else { |
|
$outcome .= "\0".&mt('No students have been enrolled in the new Concept Test.').' '.&mt('This is because either (a) an error occurred, or (b) there were no students with either current access or access which ended on/after the current default end date set for access to the old course.').$linefeed; |
|
} |
|
} |
|
} |
return (1,$outcome); |
return (1,$outcome); |
} |
} |
|
|
Line 10728 sub _add_to_env {
|
Line 10744 sub _add_to_env {
|
} |
} |
} |
} |
|
|
|
sub new_roles_update { |
|
my $rolecount = 0; |
|
foreach my $envkey (keys(%env)) { |
|
next unless ($envkey =~ /^user\.role\./); |
|
$rolecount ++; |
|
} |
|
my $newrolecount = 0; |
|
if (!$rolecount) { |
|
my %userenv; |
|
foreach my $crstype ('official','unofficial','community') { |
|
$userenv{'canrequest.'.$crstype} = |
|
&Apache::lonnet::usertools_access($env{'user.name'}, |
|
$env{'user.domain'},$crstype,'reload','requestcourses'); |
|
} |
|
my $then=$env{'user.login.time'}; |
|
my $refresh=time; |
|
my (%userroles,%allroles,%allgroups,@newroles); |
|
my %roleshash = |
|
&Apache::lonnet::get_my_roles($env{'user.name'},$env{'user.domain'},'userroles',['active','future','previous'],undef,undef,1); |
|
foreach my $item (keys(%roleshash)) { |
|
my ($uname,$udom,$role,$section) = split(':',$item); |
|
my $where = '/'.$udom.'/'.$uname; |
|
my ($tstart,$tend) = split(':',$roleshash{$item}); |
|
if ($section ne '') { |
|
$where .= '/'.$section; |
|
} |
|
my $spec = $role.'.'.$where; |
|
&Apache::lonnet::set_arearole($role,$where,$tstart,$tend, |
|
$env{'user.domain'},$env{'user.name'}); |
|
$userroles{'user.role.'.$spec} = $tstart.'.'.$tend; |
|
$newrolecount ++; |
|
unless (grep(/^\Q$role\E$/,@newroles)) { |
|
push(@newroles,$role); |
|
} |
|
my $status = |
|
&Apache::lonnet::curr_role_status($tstart,$tend,$refresh,$then); |
|
if ($status eq 'active') { |
|
&Apache::lonnet::gather_roleprivs(\%allroles,\%allgroups,\%userroles, |
|
$where,$role,$tstart,$tend); |
|
} |
|
} |
|
if (@newroles) { |
|
my ($author,$adv) = &Apache::lonnet::set_userprivs(\%userroles,\%allroles, |
|
\%allgroups); |
|
&Apache::lonnet::appenv(\%userroles,[@newroles,'cm']); |
|
$userenv{'user.adv'} = $adv; |
|
$userenv{'user.author'} = $author; |
|
$userenv{'user.refresh.time'} = $refresh; |
|
} |
|
&Apache::lonnet::appenv(\%userenv); |
|
} |
|
return $newrolecount; |
|
} |
|
|
# --- Get the symbolic name of a problem and the url |
# --- Get the symbolic name of a problem and the url |
sub get_symb { |
sub get_symb { |
my ($request,$silent) = @_; |
my ($request,$silent) = @_; |
Line 10769 sub clean_symb {
|
Line 10839 sub clean_symb {
|
return ($symb,$enc); |
return ($symb,$enc); |
} |
} |
|
|
|
sub needs_gci_custom { |
|
my $custommenu; |
|
my $numdc = &check_for_gci_dc(); |
|
unless ($numdc) { |
|
my $then=$env{'user.login.time'}; |
|
my $now = time; |
|
my %cnums = ( |
|
review => '9615072b469884921gcil1', |
|
submit => '1H96711d710194bfegcil1', |
|
); |
|
if ($env{'user.role.st./gci/'.$cnums{'review'}}) { |
|
my ($start,$end) = |
|
split('.',$env{'user.role.st./gci/'.$cnums{'review'}}); |
|
if (((!$start) || ($start && $start <= $now)) && |
|
((!$end) || ($end > $now))) { |
|
$custommenu = 1; |
|
if ($env{'user.role.cc./gci/'.$cnums{'review'}}) { |
|
my ($ccstart,$ccend) = |
|
split('.',$env{'user.role.cc./gci/'.$cnums{'review'}}); |
|
if (((!$start) || ($start && $start <= $now)) && |
|
((!$end) || ($end > $now))) { |
|
$custommenu = ''; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
return $custommenu; |
|
} |
|
|
|
sub check_for_gci_dc { |
|
my $then=$env{'user.login.time'}; |
|
my $numdc = 0; |
|
foreach my $dom ('gci','gcitest') { |
|
if ($env{'user.role.dc./'.$dom.'/'}) { |
|
my $livedc = 1; |
|
my ($tstart,$tend)=split(/\./,$env{'user.role.dc./'.$dom.'/'}); |
|
if ($tstart && $tstart>$then) { $livedc = 0; } |
|
if ($tend && $tend <$then) { $livedc = 0; } |
|
if ($livedc) { |
|
$numdc++; |
|
} |
|
} |
|
} |
|
return $numdc; |
|
} |
|
|
|
sub existing_gcitest_courses { |
|
my ($role) = @_; |
|
my %courses; |
|
my $cdom = 'gcitest'; |
|
my $now = time; |
|
foreach my $envkey (keys(%env)) { |
|
my $cnum; |
|
if ($envkey =~ m{^user\.role\.\Q$role\E\./\Q$cdom\E/($match_courseid)$}) { |
|
$cnum = $1; |
|
} else { |
|
next; |
|
} |
|
my ($tstart,$tend) = split('.',$env{$envkey}); |
|
if (((!$tstart) || ($tstart < $now)) && ((!$tend) || ($tend > $now))) { |
|
my $descr = $env{'course.'.$cdom.'_'.$cnum.'.description'}; |
|
if ($descr ne '') { |
|
$courses{$cdom.'_'.$cnum}{'description'} = $descr; |
|
} |
|
} |
|
} |
|
return %courses; |
|
} |
|
|
=pod |
=pod |
|
|
=back |
=back |