version 1.7, 2007/12/01 04:18:04
|
version 1.8, 2007/12/05 16:49:55
|
Line 35 use Apache::lonnet;
|
Line 35 use Apache::lonnet;
|
use Apache::loncommon(); |
use Apache::loncommon(); |
use Apache::lonhtmlcommon; |
use Apache::lonhtmlcommon; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use LONCAPA(); |
use Apache::longroup; |
|
use LONCAPA qw(:DEFAULT :match); |
|
|
############################################################### |
############################################################### |
############################################################### |
############################################################### |
Line 2873 sub expire_user_list {
|
Line 2874 sub expire_user_list {
|
$r->print('<p>'.&mt('Re-enrollment will re-activate data.')) if ($count); |
$r->print('<p>'.&mt('Re-enrollment will re-activate data.')) if ($count); |
} |
} |
|
|
sub section_check_js { |
sub classlist_drop { |
my $groupslist; |
my ($scope,$uname,$udom,$now,$action) = @_; |
my %curr_groups = &Apache::longroup::coursegroups(); |
my ($cdom,$cnum) = ($scope=~m{^/($match_domain)/($match_courseid)}); |
if (%curr_groups) { |
my $cid=$cdom.'_'.$cnum; |
$groupslist = join('","',sort(keys(%curr_groups))); |
my $user = $uname.':'.$udom; |
|
if ($action eq 'drop') { |
|
if (!&active_student_roles($cnum,$cdom,$uname,$udom)) { |
|
my $result = |
|
&Apache::lonnet::cput('classlist', |
|
{ $user => $now }, |
|
$env{'course.'.$cid.'.domain'}, |
|
$env{'course.'.$cid.'.num'}); |
|
return &mt('Drop from classlist: [_1]', |
|
'<b>'.$result.'</b>').'<br />'; |
|
} |
} |
} |
|
} |
|
|
|
sub active_student_roles { |
|
my ($cnum,$cdom,$uname,$udom) = @_; |
|
my %roles = |
|
&Apache::lonnet::get_my_roles($uname,$udom,'userroles', |
|
['future','active'],['st']); |
|
return exists($roles{"$cnum:$cdom:st"}); |
|
} |
|
|
|
sub section_check_js { |
|
my $groupslist= &get_groupslist(); |
return <<"END"; |
return <<"END"; |
function validate(caller) { |
function validate(caller) { |
var groups = new Array("$groupslist"); |
var groups = new Array("$groupslist"); |
Line 2928 sub set_login {
|
Line 2951 sub set_login {
|
return $response; |
return $response; |
} |
} |
|
|
|
sub course_sections { |
|
my ($sections_count,$role) = @_; |
|
my $output = ''; |
|
my @sections = (sort {$a <=> $b} keys %{$sections_count}); |
|
if (scalar(@sections) == 1) { |
|
$output = '<select name="currsec_'.$role.'" >'."\n". |
|
' <option value="">Select</option>'."\n". |
|
' <option value="">No section</option>'."\n". |
|
' <option value="'.$sections[0].'" >'.$sections[0].'</option>'."\n"; |
|
} else { |
|
$output = '<select name="currsec_'.$role.'" '; |
|
my $multiple = 4; |
|
if (scalar(@sections) < 4) { $multiple = scalar(@sections); } |
|
$output .= 'multiple="multiple" size="'.$multiple.'">'."\n"; |
|
foreach my $sec (@sections) { |
|
$output .= '<option value="'.$sec.'">'.$sec."</option>\n"; |
|
} |
|
} |
|
$output .= '</select>'; |
|
return $output; |
|
} |
|
|
|
sub get_groupslist { |
|
my $groupslist; |
|
my %curr_groups = &Apache::longroup::coursegroups(); |
|
if (%curr_groups) { |
|
$groupslist = join('","',sort(keys(%curr_groups))); |
|
$groupslist = '"'.$groupslist.'"'; |
|
} |
|
return $groupslist; |
|
} |
|
|
|
sub setsections_javascript { |
|
my ($form,$groupslist) = @_; |
|
my ($checkincluded,$finish,$roleplace,$setsection_js); |
|
if ($form eq 'cu') { |
|
$checkincluded = 'formname.elements[i-1].checked == true'; |
|
$finish = 'formname.submit()'; |
|
$roleplace = 3; |
|
} else { |
|
$checkincluded = 'formname.name == "'.$form.'"'; |
|
$finish = "seccheck = 'ok';"; |
|
$roleplace = 1; |
|
$setsection_js = "var seccheck = 'alert';"; |
|
} |
|
my %alerts = &Apache::lonlocal::texthash( |
|
secd => 'Section designations do not apply to Course Coordinator roles.', |
|
accr => 'A course coordinator role will be added with access to all sections.', |
|
inea => 'In each course, each user may only have one student role at a time.', |
|
youh => 'You had selected ', |
|
secs => 'sections.', |
|
plmo => 'Please modify your selections so they include no more than one section.', |
|
mayn => 'may not be used as the name for a section, as it is a reserved word.', |
|
plch => 'Please choose a different section name.', |
|
mnot => 'may not be used as a section name, as it is the name of a course group.', |
|
secn => 'Section names and group names must be distinct. Please choose a different section name.', |
|
); |
|
$setsection_js .= <<"ENDSECCODE"; |
|
|
|
function setSections(formname) { |
|
var re1 = /^currsec_/; |
|
var groups = new Array($groupslist); |
|
for (var i=0;i<formname.elements.length;i++) { |
|
var str = formname.elements[i].name; |
|
var checkcurr = str.match(re1); |
|
if (checkcurr != null) { |
|
if ($checkincluded) { |
|
var match = str.split('_'); |
|
var role = match[$roleplace]; |
|
if (role == 'cc') { |
|
alert("$alerts{'secd'}\\n$alerts{'accr'}"); |
|
} |
|
else { |
|
var sections = ''; |
|
var numsec = 0; |
|
var sections; |
|
for (var j=0; j<formname.elements[i].length; j++) { |
|
if (formname.elements[i].options[j].selected == true ) { |
|
if (formname.elements[i].options[j].value != "") { |
|
if (numsec == 0) { |
|
if (formname.elements[i].options[j].value != "") { |
|
sections = formname.elements[i].options[j].value; |
|
numsec ++; |
|
} |
|
} |
|
else { |
|
sections = sections + "," + formname.elements[i].options[j].value |
|
numsec ++; |
|
} |
|
} |
|
} |
|
} |
|
if (numsec > 0) { |
|
if (formname.elements[i+1].value != "" && formname.elements[i+1].value != null) { |
|
sections = sections + "," + formname.elements[i+1].value; |
|
} |
|
} |
|
else { |
|
sections = formname.elements[i+1].value; |
|
} |
|
var newsecs = formname.elements[i+1].value; |
|
var numsplit; |
|
if (newsecs != null && newsecs != "") { |
|
numsplit = newsecs.split(/,/g); |
|
numsec = numsec + numsplit.length; |
|
} |
|
|
|
if ((role == 'st') && (numsec > 1)) { |
|
alert("$alerts{'inea'} $alerts{'youh'} "+numsec+" $alerts{'secs'}\\n$alerts{'plmo'}") |
|
return; |
|
} |
|
else { |
|
if (numsplit != null) { |
|
for (var j=0; j<numsplit.length; j++) { |
|
if ((numsplit[j] == 'all') || |
|
(numsplit[j] == 'none')) { |
|
alert("'"+numsplit[j]+"' $alerts{'mayn'}\\n$alerts{'plch'}"); |
|
return; |
|
} |
|
for (var k=0; k<groups.length; k++) { |
|
if (numsplit[j] == groups[k]) { |
|
alert("'"+numsplit[j]+"' $alerts{'mnot'}\\n$alerts{'secn'}"); |
|
return; |
|
} |
|
} |
|
} |
|
} |
|
formname.elements[i+2].value = sections; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
$finish |
|
} |
|
ENDSECCODE |
|
return $setsection_js; |
|
} |
|
|
1; |
1; |
|
|