[LON-CAPA-cvs] cvs: loncom /interface loncreateuser.pm lonpickcourse.pm
raeburn
lon-capa-cvs@mail.lon-capa.org
Tue, 30 Nov 2004 00:21:25 -0000
This is a MIME encoded message
--raeburn1101774085
Content-Type: text/plain
raeburn Mon Nov 29 19:21:25 2004 EDT
Modified files:
/loncom/interface lonpickcourse.pm loncreateuser.pm
Log:
When using CUSR as a CC, only show roles for possible revocation, deletion or
re-enabling for target user in current course. Section choices can now be
made from existing sections or new sections. Multiple sections allowed except
for ST and CC roles.
--raeburn1101774085
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20041129192125.txt"
Index: loncom/interface/lonpickcourse.pm
diff -u loncom/interface/lonpickcourse.pm:1.20 loncom/interface/lonpickcourse.pm:1.21
--- loncom/interface/lonpickcourse.pm:1.20 Sat Nov 27 12:23:09 2004
+++ loncom/interface/lonpickcourse.pm Mon Nov 29 19:21:24 2004
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Pick a course
#
-# $Id: lonpickcourse.pm,v 1.20 2004/11/27 17:23:09 raeburn Exp $
+# $Id: lonpickcourse.pm,v 1.21 2004/11/30 00:21:24 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -90,7 +90,6 @@
# if called from loncreateuser, report sections, then close
my ($loaditem,$seclist);
my $num_sections = 0;
- my @sections = ();
if ($ENV{'form.form'} eq 'cu' && $ENV{'form.pickedcourse'}) {
$loaditem = 'onLoad="setSections()"';
my ($cdom,$cnum) = split/_/,$ENV{'form.pickedcourse'};
@@ -154,7 +153,7 @@
var sectionsArray = new Array("$seclist")
opener.document.$ENV{"form.form"}.currsec.length = 0
if (numSections == 0) {
- opener.document.$ENV{"form.form"}.currsec.options[0] = new Option('No existing sections','-1',false,false)
+ opener.document.$ENV{"form.form"}.currsec.options[0] = new Option('No existing sections','',false,false)
}
else {
for (var i=0; i<numSections; i++) {
Index: loncom/interface/loncreateuser.pm
diff -u loncom/interface/loncreateuser.pm:1.88 loncom/interface/loncreateuser.pm:1.89
--- loncom/interface/loncreateuser.pm:1.88 Tue Nov 23 13:03:04 2004
+++ loncom/interface/loncreateuser.pm Mon Nov 29 19:21:24 2004
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Create a user
#
-# $Id: loncreateuser.pm,v 1.88 2004/11/23 18:03:04 raeburn Exp $
+# $Id: loncreateuser.pm,v 1.89 2004/11/30 00:21:24 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -213,36 +213,38 @@
var userrole = document.cu.role.options[document.cu.role.selectedIndex].value
var section;
var numsections = 0;
- if (document.cu.role.value != "cc") {
- for (var i=0; i<document.cu.currsec.length; i++) {
- if (document.cu.currsec.options[i].selected == true ) {
- if (document.cu.currsec.options[i].value != "") {
- if (numsections == 0) {
- if (document.cu.currsec.options[i].value != "") {
- section = document.cu.currsec.options[i].value
- numsections = 1;
- }
- }
- else {
- section = section + "," + document.cu.currsec.options[i].value
- numsections ++;
- }
- }
- }
- }
- if (document.cu.newsec.value != "") {
- if (numsections == 0) {
- if (document.cu.newsec.value != "") {
- section = document.cu.newsec.value
+ for (var i=0; i<document.cu.currsec.length; i++) {
+ if (document.cu.currsec.options[i].selected == true ) {
+ if (document.cu.currsec.options[i].value != "" && document.cu.currsec.options[i].value != null) {
+ if (numsections == 0) {
+ section = document.cu.currsec.options[i].value
numsections = 1;
}
+ else {
+ section = section + "," + document.cu.currsec.options[i].value
+ numsections ++;
+ }
}
- else {
- section = section + "," + document.cu.newsec.value
- numsections ++;
- }
}
}
+ if (document.cu.newsec.value != "" && document.cu.newsec.value != null) {
+ if (numsections == 0) {
+ section = document.cu.newsec.value
+ }
+ else {
+ section = section + "," + document.cu.newsec.value
+ }
+ var numsplit = document.cu.newsec.value.split(/,/g);
+ numsections = numsections + numsplit.length;
+ }
+ if ((userrole == 'st') && (numsections > 1)) {
+ alert("In each course, each user may only have one student role at a time. You had selected "+numsections+" sections.\\nPlease modify your selections so they include no more than one section.")
+ return;
+ }
+ if ((userrole == 'cc') && (numsections > 0)) {
+ alert("Section designations do not apply to Course Coordinator roles.\\nA course coordinator role will be added with access to all sections.");
+ section = "";
+ }
var numcourse = getIndex(document.cu.dccourse);
if (numcourse == "-1") {
alert("There was a problem with your course selection");
@@ -291,6 +293,66 @@
pclose();
}
+ function setSections() {
+ var re1 = /^currsec_/;
+ for (var i=0;i<document.cu.elements.length;i++) {
+ var str = document.cu.elements[i].name;
+ var checkcurr = str.match(re1);
+ if (checkcurr != null) {
+ var re2 = /^currsec_[a-zA-Z0-9]+_[a-zA-Z0-9]+_(\\w+)\$/;
+ if (document.cu.elements[i-1].checked == true) {
+ var re2 = /^currsec_[a-zA-Z0-9]+_[a-zA-Z0-9]+_(\\w+)\$/;
+ match = re2.exec(str);
+ var role = match[1];
+ if (role == 'cc') {
+ alert("Section designations do not apply to Course Coordinator roles.\\nA course coordinator role will be added with access to all sections.");
+ }
+ else {
+ var sections = '';
+ var numsec = 0;
+ var sections;
+ for (var j=0; j<document.cu.elements[i].length; j++) {
+ if (document.cu.elements[i].options[j].selected == true ) {
+ if (document.cu.elements[i].options[j].value != "") {
+ if (numsec == 0) {
+ if (document.cu.elements[i].options[j].value != "") {
+ sections = document.cu.elements[i].options[j].value;
+ numsec ++;
+ }
+ }
+ else {
+ sections = sections + "," + document.cu.elements[i].options[j].value
+ numsec ++;
+ }
+ }
+ }
+ }
+ if (numsec > 0) {
+ if (document.cu.elements[i+1].value != "" && document.cu.elements[i+1].value != null) {
+ sections = sections + "," + document.cu.elements[i+1].value;
+ }
+ }
+ else {
+ sections = document.cu.elements[i+1].value;
+ }
+ var newsecs = document.cu.elements[i+1].value;
+ if (newsecs != null && newsecs != "") {
+ var numsplit = newsecs.split(/,/g);
+ numsec = numsec + numsplit.length;
+ }
+ if ((role == 'st') && (numsec > 1)) {
+ alert("In each course, each user may only have one student role at a time. You had selected "+numsec+" sections.\\nPlease modify your selections so they include no more than one section.")
+ return;
+ }
+ else {
+ document.cu.elements[i+2].value = sections;
+ }
+ }
+ }
+ }
+ }
+ document.cu.submit();
+ }
</script>
</head>
ENDDOCHEAD
@@ -422,13 +484,7 @@
'sta' => "Start",
'end' => "End"
);
- $r->print(<<END);
-<hr />
-<h3>$lt{'rer'}</h3>
-<table>
-<tr><th>$lt{'rev'}</th><th>$lt{'ren'}</th><th>$lt{'del'}</th><th>$lt{'rol'}</th><th>$lt{'ext'}</th><th>$lt{'sta'}</th><th>$lt{'end'}</th>
-END
- my (%roletext,%sortrole,%roleclass);
+ my (%roletext,%sortrole,%roleclass,%rolepriv);
foreach my $area (sort { my $a1=join('_',(split('_',$a))[1,0]);
my $b1=join('_',(split('_',$b))[1,0]);
return $a1 cmp $b1;
@@ -567,22 +623,40 @@
$sortrole{$sortkey}=$envkey;
$roletext{$envkey}=$row;
$roleclass{$envkey}=$class;
+ $rolepriv{$envkey}=$allowed;
#$r->print($row);
} # end of foreach (table building loop)
+ my $rolesdisplay = 0;
+ my %output = ();
foreach my $type ('Construction Space','Course','Domain','System','Unknown') {
- my $output;
+ $output{$type} = '';
foreach my $which (sort {uc($a) cmp uc($b)} (keys(%sortrole))) {
- if ($roleclass{$sortrole{$which}} =~ /^\Q$type\E/) {
- $output.=$roletext{$sortrole{$which}};
+ if ( ($roleclass{$sortrole{$which}} =~ /^\Q$type\E/ ) && ($rolepriv{$sortrole{$which}}) ) {
+ $output{$type}.=$roletext{$sortrole{$which}};
}
}
- if (defined($output)) {
- $r->print("<tr bgcolor='#BBffBB'>".
- "<td align='center' colspan='7'>".&mt($type)."</td>");
+ unless($output{$type} eq '') {
+ $output{$type} = "<tr bgcolor='#BBffBB'>".
+ "<td align='center' colspan='7'>".&mt($type)."</td>".
+ $output{$type};
+ $rolesdisplay = 1;
}
- $r->print($output);
}
- $r->print('</table>');
+ if ($rolesdisplay == 1) {
+ $r->print(<<END);
+<hr />
+<h3>$lt{'rer'}</h3>
+<table>
+<tr><th>$lt{'rev'}</th><th>$lt{'ren'}</th><th>$lt{'del'}</th><th>$lt{'rol'}</th><th>$lt{'e
+xt'}</th><th>$lt{'sta'}</th><th>$lt{'end'}</th>
+END
+ foreach my $type ('Construction Space','Course','Domain','System','Unknown') {
+ if ($output{$type}) {
+ $r->print($output{$type}."\n");
+ }
+ }
+ $r->print('</table>');
+ }
} # End of unless
my $currentauth=&Apache::lonnet::queryauthenticate($ccuname,$ccdomain);
if ($currentauth=~/^krb(4|5):/) {
@@ -724,9 +798,11 @@
#
# Domain level
#
- $r->print('<h4>'.&mt('Domain Level').'</h4>'.
+ my $num_domain_level = 0;
+ my $domaintext =
+ '<h4>'.&mt('Domain Level').'</h4>'.
'<table border=2><tr><th>'.&mt('Activate').'</th><th>'.&mt('Role').'</th><th>'.&mt('Extent').'</th>'.
- '<th>'.&mt('Start').'</th><th>'.&mt('End').'</th></tr>');
+ '<th>'.&mt('Start').'</th><th>'.&mt('End').'</th></tr>';
foreach ( sort( keys(%incdomains))) {
my $thisdomain=$_;
foreach ('dc','li','dg','au','sc') {
@@ -736,7 +812,8 @@
'ssd' => "Set Start Date",
'sed' => "Set End Date"
);
- $r->print(<<ENDDROW);
+ $num_domain_level ++;
+ $domaintext .= <<"ENDDROW";
<tr>
<td><input type=checkbox name="act_$thisdomain\_$_"></td>
<td>$plrole</td>
@@ -752,17 +829,21 @@
}
}
}
- $r->print('</table>');
+ $domaintext.='</table>';
+ if ($num_domain_level > 0) {
+ $r->print($domaintext);
+ }
#
# Course level
#
+ my $num_sections;
if ($ENV{'request.role'} =~ m-^dc\./(\w+)/$-) {
$r->print(&course_level_dc($1));
$r->print('<hr /><input type="button" value="'.&mt('Modify User').'" onClick="setCourse()">'."\n");
} else {
$r->print(&course_level_table(%inccourses));
- $r->print("<hr /><input type=submit value=\"".&mt('Modify User')."\">\n");
+ $r->print('<hr /><input type="button" value="'.&mt('Modify User').'" onClick="setSections()">'."\n");
}
$r->print("</form></body></html>");
}
@@ -1044,24 +1125,29 @@
}
} elsif ($_=~/^form\.ren/) {
if ($_=~/^form\.ren\:([^\_]+)\_([^\_]+)$/) {
- my $result=&Apache::lonnet::assignrole($ENV{'form.ccdomain'},
- $ENV{'form.ccuname'},$1,$2,0,$now);
- $r->print(&mt('Re-Enabling [_1] in [_2]: [_3]',
- $2,$1,$result).'<br />');
- if ($2 eq 'st') {
- $1=~/^\/(\w+)\/(\w+)/;
- my $cid=$1.'_'.$2;
- $r->print(&mt('Add to classlist').': <b>'.
- &Apache::lonnet::critical(
- 'put:'.$ENV{'course.'.$cid.'.domain'}.':'.
- $ENV{'course.'.$cid.'.num'}.':classlist:'.
- &Apache::lonnet::escape(
- $ENV{'form.ccuname'}.':'.
- $ENV{'form.ccdomain'} ).'='.
- &Apache::lonnet::escape(':'.$now),
- $ENV{'course.'.$cid.'.home'})
- .'</b><br>');
+ my $url = $1;
+ my $role = $2;
+ my $logmsg;
+ my $output;
+ if ($role eq 'st') {
+ if ($url =~ m-^/(\w+)/(\w+)/?(\w*)$-) {
+ my $result = &commit_studentrole(\$logmsg,$url,$role,$now,0,$1,$2,$3);
+ if (($result =~ /^error/) || ($result eq 'not_in_class') || ($result eq 'unknown_course')) {
+ $output = "Error: $result\n";
+ } else {
+ $output = &mt('Assigning').' '.$role.' in '.$url.
+ &mt('starting').' '.localtime($now).
+ ': <br />'.$logmsg.'<br />'.
+ &mt('Add to classlist').': <b>ok</b><br />';
+ }
+ }
+ } else {
+ my $result=&Apache::lonnet::assignrole($ENV{'form.ccdomain'},
+ $ENV{'form.ccuname'},$url,$role,0,$now);
+ $output = &mt('Re-Enabling [_1] in [_2]: [_3]',
+ $role,$url,$result).'<br />';
}
+ $r->print($output);
}
} elsif ($_=~/^form\.act/) {
if ($_=~/^form\.act\_([^\_]+)\_([^\_]+)\_cr_cr_([^\_]+)_(\w+)_([^\_]+)$/) {
@@ -1079,7 +1165,7 @@
# split multiple sections
my %sections = ();
- my $num_sections = &build_roles($ENV{'form.sec_'.$full},\%sections);
+ my $num_sections = &build_roles($ENV{'form.sec_'.$full},\%sections,$5);
if ($num_sections == 0) {
$r->print(&commit_customrole($url,$three,$four,$five,$start,$end));
} else {
@@ -1102,22 +1188,22 @@
my $type = 'three';
# split multiple sections
my %sections = ();
- my $num_sections = &build_roles($ENV{'form.sec_'.$one.'_'.$two.'_'.$three},\%sections);
+ my $num_sections = &build_roles($ENV{'form.sec_'.$one.'_'.$two.'_'.$three},\%sections,$three);
if ($num_sections == 0) {
- $r->print(&commit_standardrole($url,$three,$start,$end,$one,$two));
+ $r->print(&commit_standardrole($url,$three,$start,$end,$one,$two,''));
} else {
my $emptysec = 0;
foreach my $sec (sort {$a cmp $b} keys %sections) {
$sec =~ s/\W//g;
if ($sec ne '') {
my $securl = $url.'/'.$sec;
- $r->print(&commit_standardrole($securl,$three,$start,$end,$one,$two));
+ $r->print(&commit_standardrole($securl,$three,$start,$end,$one,$two,$sec));
} else {
$emptysec = 1;
}
}
if ($emptysec) {
- $r->print(&commit_standardrole($url,$three,$start,$end,$one,$two));
+ $r->print(&commit_standardrole($url,$three,$start,$end,$one,$two,''));
}
}
} elsif ($_=~/^form\.act\_([^\_]+)\_([^\_]+)$/) {
@@ -1132,21 +1218,21 @@
my $url='/'.$1.'/';
# split multiple sections
my %sections = ();
- my $num_sections = &build_roles($ENV{'form.sec_'.$1.'_'.$2},\%sections);
+ my $num_sections = &build_roles($ENV{'form.sec_'.$1.'_'.$2},\%sections,$2);
if ($num_sections == 0) {
- $r->print(&commit_standardrole($url,$2,$start,$end,$1));
+ $r->print(&commit_standardrole($url,$2,$start,$end,$1,undef,''));
} else {
my $emptysec = 0;
foreach my $sec (sort {$a cmp $b} keys %sections) {
if ($sec ne '') {
my $securl = $url.'/'.$sec;
- $r->print(&commit_standardrole($securl,$2,$start,$end,$1));
+ $r->print(&commit_standardrole($securl,$2,$start,$end,$1,undef,$sec));
} else {
$emptysec = 1;
}
}
if ($emptysec) {
- $r->print(&commit_standardrole($url,$2,$start,$end,$1));
+ $r->print(&commit_standardrole($url,$2,$start,$end,$1,undef,''));
}
}
# Assign the role and report it.
@@ -1179,47 +1265,99 @@
}
sub commit_standardrole {
- my ($url,$three,$start,$end,$one,$two) = @_;
- my $output = (&mt('Assigning').' '.$three.' in '.$url.
- ($start?', '.&mt('starting').' '.localtime($start):'').
- ($end?', '.&mt('ending').' '.localtime($end):'').': <b>'.
- &Apache::lonnet::assignrole(
- $ENV{'form.ccdomain'},$ENV{'form.ccuname'},
- $url,$three,$end,$start).
- '</b><br>');
-
-# Handle students differently
- if (($three eq 'st') && defined($one) && defined($two)) {
- $url=~/^\/(\w+)\/(\w+)/;
- my $cid=$one.'_'.$two;
- $output .= (&mt('Add to classlist').': <b>'.
- &Apache::lonnet::critical(
- 'put:'.$ENV{'course.'.$cid.'.domain'}.':'.
- $ENV{'course.'.$cid.'.num'}.':classlist:'.
- &Apache::lonnet::escape(
- $ENV{'form.ccuname'}.':'.
- $ENV{'form.ccdomain'} ).'='.
- &Apache::lonnet::escape($end.':'.$start),
- $ENV{'course.'.$cid.'.home'})
- .'</b><br>');
+ my ($url,$three,$start,$end,$one,$two,$sec) = @_;
+ my $output;
+ my $logmsg;
+ if ($three eq 'st') {
+ my $result = &commit_studentrole(\$logmsg,$url,$three,$start,$end,$one,$two,$sec);
+ if (($result =~ /^error/) || ($result eq 'not_in_class') || ($result eq 'unknown_course')) {
+ $output = "Error: $result\n";
+ } else {
+ $output = &mt('Assigning').' '.$three.' in '.$url.
+ ($start?', '.&mt('starting').' '.localtime($start):'').
+ ($end?', '.&mt('ending').' '.localtime($end):'').
+ ': <b>'.$result.'</b><br />'.
+ &mt('Add to classlist').': <b>ok</b><br />';
+ }
+ } else {
+ $output = (&mt('Assigning').' '.$three.' in '.$url.
+ ($start?', '.&mt('starting').' '.localtime($start):'').
+ ($end?', '.&mt('ending').' '.localtime($end):'').': <b>'.
+ &Apache::lonnet::assignrole(
+ $ENV{'form.ccdomain'},$ENV{'form.ccuname'},
+ $url,$three,$end,$start).
+ '</b><br>');
}
return $output;
}
+sub commit_studentrole {
+ my ($logmsg,$url,$three,$start,$end,$one,$two,$sec) = @_;
+ my $udom = $ENV{'form.ccdomain'};
+ my $uname = $ENV{'form.ccuname'};
+ my $linefeed = '<br />'."\n";
+ my $result;
+ if (defined($one) && defined($two)) {
+ my $cid=$one.'_'.$two;
+ my $oldsec=&Apache::lonnet::getsection($udom,$uname,$cid);
+ my $secchange = 0;
+ my $expire_role_result;
+ my $modify_section_result;
+ unless ($oldsec eq '-1') {
+ unless ($sec eq $oldsec) {
+ $secchange = 1;
+ my $uurl='/'.$cid;
+ $uurl=~s/\_/\//g;
+ if ($oldsec) {
+ $uurl.='/'.$oldsec;
+ }
+ $expire_role_result = &Apache::lonnet::assignrole($udom,$uname,$uurl,'st',time);
+ $result = $expire_role_result;
+ }
+ }
+ if (($expire_role_result eq 'ok') || ($secchange == 0)) {
+ $modify_section_result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,'','',$cid);
+ if ($modify_section_result =~ /^ok/) {
+ if ($secchange == 1) {
+ $$logmsg .= "Section for $uname switched from old section: $oldsec to new section: $sec".$linefeed;
+ } elsif ($oldsec eq '-1') {
+ $$logmsg .= "New student role for $uname in section $sec in course $cid".$linefeed;
+ } else {
+ $$logmsg .= "Student $uname assigned to unchanged section $sec in course $cid".$linefeed;
+ }
+ } else {
+ $$logmsg .= "Error when attempting section change for $uname from old section $oldsec to new section: $sec in course $cid -error: $modify_section_result".$linefeed;
+ }
+ $result = $modify_section_result;
+ } elsif ($secchange == 1) {
+ $$logmsg .= "Error when attempting to expire role for $uname in old section $oldsec in course $cid -error: $expire_role_result".$linefeed;
+ }
+ } else {
+ $$logmsg .= "Incomplete course id defined. Addition of user $uname from domain $udom to course $one\_$two, section $sec not completed.$linefeed";
+ $result = "Error: incomplete course id\n";
+ }
+ return $result;
+}
sub build_roles {
- my ($sectionstr,$sections) = @_;
+ my ($sectionstr,$sections,$role) = @_;
my $num_sections = 0;
if ($sectionstr=~ /,/) {
my @secnums = split/,/,$sectionstr;
- foreach my $sec (@secnums) {
- $sec =~ ~s/\W//g;
- unless ($sec eq "") {
- if (exists($$sections{$sec})) {
- $$sections{$sec} ++;
- } else {
- $$sections{$sec} = 1;
- $num_sections ++;
+ if ($role eq 'st') {
+ $secnums[0] =~ s/\W//g;
+ $$sections{$secnums[0]} = 1;
+ $num_sections = 1;
+ } else {
+ foreach my $sec (@secnums) {
+ $sec =~ ~s/\W//g;
+ unless ($sec eq "") {
+ if (exists($$sections{$sec})) {
+ $$sections{$sec} ++;
+ } else {
+ $$sections{$sec} = 1;
+ $num_sections ++;
+ }
}
}
}
@@ -1442,11 +1580,24 @@
#-------------------------------------------------- functions for &phase_two
sub course_level_table {
- my %inccourses = @_;
+ my (%inccourses) = @_;
my $table = '';
# Custom Roles?
my %customroles=&my_custom_roles();
+ my %lt=&Apache::lonlocal::texthash(
+ 'exs' => "Existing sections",
+ 'new' => "Define new section",
+ 'ssd' => "Set Start Date",
+ 'sed' => "Set End Date",
+ 'crl' => "Course Level",
+ 'act' => "Activate",
+ 'rol' => "Role",
+ 'ext' => "Extent",
+ 'grs' => "Group/Section",
+ 'sta' => "Start",
+ 'end' => "End"
+ );
foreach (sort( keys(%inccourses))) {
my $thiscourse=$_;
@@ -1458,7 +1609,9 @@
my $bgcol=$thiscourse;
$bgcol=~s/[^7-9a-e]//g;
$bgcol=substr($bgcol.$bgcol.$bgcol.'ffffff',2,6);
- my ($domain)=split(/\//,$thiscourse);
+ my ($domain,$cnum)=split(/\//,$thiscourse);
+ my %sections_count = ();
+ my $num_sections = &Apache::loncommon::get_sections($domain,$cnum,\%sections_count);
foreach ('st','ta','ep','ad','in','cc') {
if (&Apache::lonnet::allowed('c'.$_,$thiscourse)) {
my $plrole=&Apache::lonnet::plaintext($_);
@@ -1469,18 +1622,25 @@
<td>$area<br />Domain: $domain</td>
ENDEXTENT
if ($_ ne 'cc') {
- $table .= <<ENDSECTION;
-<td><input type="text" size="5" name="sec_$protectedcourse\_$_"></td>
-ENDSECTION
+ if ($num_sections > 0) {
+ my $currsec = &course_sections($num_sections,\%sections_count,$protectedcourse.'_'.$_);
+ $table .=
+ '<td><table border="0" cellspacing="0" cellpadding="0">'.
+ '<tr><td valign="top">'.$lt{'exs'}.'<br />'.
+ $currsec.'</td>'.
+ '<td> </td>'.
+ '<td valign="top"> '.$lt{'new'}.'<br />'.
+ '<input type="text" name="newsec_'.$protectedcourse.'_'.$_.'" value="" /></td>'.
+ '<input type="hidden" '.
+ 'name="sec_'.$protectedcourse.'_'.$_.'"></td>'.
+ '</tr></table></td>';
+ } else {
+ $table .= '<td><input type="text" size="10" '.
+ 'name="sec_'.$protectedcourse.'_'.$_.'"></td>';
+ }
} else {
- $table .= <<ENDSECTION;
-<td> </td>
-ENDSECTION
+ $table .= '<td> </td>';
}
- my %lt=&Apache::lonlocal::texthash(
- 'ssd' => "Set Start Date",
- 'sed' => "Set End Date"
- );
$table .= <<ENDTIMEENTRY;
<td><input type=hidden name="start_$protectedcourse\_$_" value=''>
<a href=
@@ -1497,16 +1657,29 @@
my $plrole=$_;
my $customrole=$protectedcourse.'_cr_cr_'.$ENV{'user.domain'}.
'_'.$ENV{'user.name'}.'_'.$plrole;
- my %lt=&Apache::lonlocal::texthash(
- 'ssd' => "Set Start Date",
- 'sed' => "Set End Date"
- );
- $table .= <<ENDENTRY;
+ $table .= <<END;
<tr bgcolor="#$bgcol">
<td><input type="checkbox" name="act_$customrole"></td>
<td>$plrole</td>
<td>$area</td>
-<td><input type="text" size="5" name="sec_$customrole"></td>
+END
+ if ($num_sections > 0) {
+ my $currsec = &course_sections($num_sections,\%sections_count,$customrole);
+ $table.=
+ '<td><table border="0" cellspacing="0" cellpadding="0">'.
+ '<tr><td valign="top">'.$lt{'exs'}.'<br />'.
+ $currsec.'</td>'.
+ '<td> </td>'.
+ '<td valign="top"> '.$lt{'new'}.'<br />'.
+ '<input type="text" name="newsec_'.$customrole.'" value="" /></td>'.
+ '<input type="hidden" '.
+ 'name="sec_'.$customrole.'"></td>'.
+ '</tr></table></td>';
+ } else {
+ $table .= '<td><input type="text" size="10" '.
+ 'name="sec_'.$customrole.'"></td>';
+ }
+ $table .= <<ENDENTRY;
<td><input type=hidden name="start_$customrole" value=''>
<a href=
"javascript:pjump('date_start','Start Date $plrole',document.cu.start_$customrole.value,'start_$customrole','cu.pres','dateset')">$lt{'ssd'}</a></td>
@@ -1519,15 +1692,6 @@
}
return '' if ($table eq ''); # return nothing if there is nothing
# in the table
- my %lt=&Apache::lonlocal::texthash(
- 'crl' => "Course Level",
- 'act' => "Activate",
- 'rol' => "Role",
- 'ext' => "Extent",
- 'grs' => "Group/Section",
- 'sta' => "Start",
- 'end' => "End"
- );
my $result = <<ENDTABLE;
<h4>$lt{'crl'}</h4>
<table border=2><tr><th>$lt{'act'}</th><th>$lt{'rol'}</th><th>$lt{'ext'}</th>
@@ -1538,6 +1702,21 @@
return $result;
}
+sub course_sections {
+ my ($num_sections,$sections_count,$role) = @_;
+ my $output = '';
+ my @sections = (sort {$a <=> $b} keys %{$sections_count});
+ $output = '<select name="currsec_'.$role.'" ';
+ my $multiple = 3;
+ if ($num_sections <3) { $multiple = $num_sections; }
+ $output .= '"multiple size="'.$multiple.'" >'."\n";
+ foreach (@sections) {
+ $output .= '<option value="'.$_.'" />'.$_."\n";
+ }
+ $output .= '</select>';
+ return $output;
+}
+
sub course_level_dc {
my ($dcdom) = @_;
my %customroles=&my_custom_roles();
@@ -1562,7 +1741,7 @@
);
my $header = '<h4>'.$lt{'crl'}.'</h4>'.
'<table border="2"><tr><th>'.$courseform.'</th><th>'.$lt{'rol'}.'</th><th>'.$lt{'grs'}.'</th><th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th></tr>';
- my $otheritems = '<tr><td><input type="text" name="coursedesc" value="" onFocus="this.blur();opencrsbrowser('."'".'cu'."'".','."'".'dccourse'."'".','."'".'dcdomain'."'".','."'".'coursedesc'."'".')" /></td>'.
+ my $otheritems = '<tr><td><input type="text" name="coursedesc" value="" onFocus="this.blur();opencrsbrowser('."'".'cu'."'".','."'".'dccourse'."'".','."'".'dcdomain'."'".','."'".'coursedesc'."',''".')" /></td>'.
'<td><select name="role">'."\n";
foreach ('st','ta','ep','ad','in','cc') {
my $plrole=&Apache::lonnet::plaintext($_);
--raeburn1101774085--