--- loncom/interface/loncommon.pm 2010/01/16 15:57:51 1.925.2.8
+++ loncom/interface/loncommon.pm 2010/09/19 18:50:48 1.925.2.13
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common routines
#
-# $Id: loncommon.pm,v 1.925.2.8 2010/01/16 15:57:51 raeburn Exp $
+# $Id: loncommon.pm,v 1.925.2.13 2010/09/19 18:50:48 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1978,7 +1978,16 @@ sub select_dom_form {
($dom eq $defdom ? 'selected="selected" ' : '').'>'.$dom;
if ($showdomdesc) {
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 '') {
$selectdomain .= ' ('.$domdesc.')';
}
@@ -2469,9 +2478,11 @@ sub authform_internal{
}
$autharg = '';
- $result = &mt
- ('[_1] Internally authenticated (with initial password [_2])',
- ''.$autharg);
+ my $authtext = '[_1] Internally authenticated (with initial password [_2])';
+ if ($in{'caller'} eq 'requestcrs') {
+ $authtext = "[_1] Students' password, if none in the uploaded file: [_2]";
+ }
+ $result = &mt($authtext,''.$autharg);
$result.="';
return $result;
}
@@ -4943,6 +4954,26 @@ table#LC_title_bar.LC_with_remote {
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)*/
ul.LC_bct {
@@ -7702,9 +7733,9 @@ sub user_picker {
'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:",
);
- my $domform = &select_dom_form($currdom,'srchdomain',1,1);
+ my $domform = &select_dom_form($currdom,'srchdomain',undef,1);
my $srchinsel = ' \n";
@@ -7763,9 +7795,9 @@ sub user_picker {
);
$new_user_create = '
'
.&mt("You are not authorized to create new $usertypetext{$usertype} users in this domain.")
- .' '
- .&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.'
+ ,'','')
.'
';
}
}
@@ -10050,19 +10082,19 @@ sub check_clone {
my $clonehome=&Apache::lonnet::homeserver($clonecrsunum,$clonecrsudom);
my $clonemsg;
my $can_clone = 0;
- my $lctype = lc($args->{'type'});
+ my $lctype = lc($args->{'crstype'});
if ($lctype ne 'community') {
$lctype = 'course';
}
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'});
} 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'});
}
} else {
my %clonedesc = &Apache::lonnet::coursedescription($cloneid,{'one_time' => 1});
- if ($args->{'type'} eq 'Community') {
+ if ($args->{'crstype'} eq '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'});
return ($can_clone, $clonemsg, $cloneid, $clonehome);
@@ -10081,7 +10113,7 @@ sub check_clone {
$can_clone = 1;
} else {
my $ccrole = 'cc';
- if ($args->{'type'} eq 'Community') {
+ if ($args->{'crstype'} eq 'Community') {
$ccrole = 'co';
}
my %roleshash =
@@ -10092,7 +10124,7 @@ sub check_clone {
if (($roleshash{$args->{'clonecourse'}.':'.$args->{'clonedomain'}.':'.$ccrole}) || (grep(/^\Q$args->{'ccuname'}\E:\Q$args->{'ccdomain'}\E$/,@cloners))) {
$can_clone = 1;
} 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'});
} 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'});
@@ -10431,6 +10463,21 @@ sub construct_course {
$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);
}
@@ -10703,6 +10750,7 @@ sub new_roles_update {
next unless ($envkey =~ /^user\.role\./);
$rolecount ++;
}
+ my $newrolecount = 0;
if (!$rolecount) {
my %userenv;
foreach my $crstype ('official','unofficial','community') {
@@ -10726,6 +10774,7 @@ sub new_roles_update {
&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);
}
@@ -10737,16 +10786,16 @@ sub new_roles_update {
}
}
if (@newroles) {
- &Apache::lonnet::appenv(\%userroles,[@newroles,'cm']);
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;
+ return $newrolecount;
}
# --- Get the symbolic name of a problem and the url