version 1.29, 2006/06/28 23:38:09
|
version 1.32, 2006/06/30 08:14:31
|
Line 89 sub handler {
|
Line 89 sub handler {
|
$idx{fullname} = &Apache::loncoursedata::CL_FULLNAME(); |
$idx{fullname} = &Apache::loncoursedata::CL_FULLNAME(); |
$idx{udom} = &Apache::loncoursedata::CL_SDOM(); |
$idx{udom} = &Apache::loncoursedata::CL_SDOM(); |
$idx{uname} = &Apache::loncoursedata::CL_SNAME(); |
$idx{uname} = &Apache::loncoursedata::CL_SNAME(); |
|
$idx{section} = &Apache::loncoursedata::CL_SECTION(); |
|
|
my $rowColor1 = "#dddddd"; |
my $rowColor1 = "#dddddd"; |
my $rowColor2 = "#eeeeee"; |
my $rowColor2 = "#eeeeee"; |
Line 1402 sub membership_options {
|
Line 1403 sub membership_options {
|
$r->print(&Apache::lonhtmlcommon::role_select_row(\@roles)); |
$r->print(&Apache::lonhtmlcommon::role_select_row(\@roles)); |
if (@sections > 0) { |
if (@sections > 0) { |
@sections = sort {$a cmp $b} @sections; |
@sections = sort {$a cmp $b} @sections; |
unshift(@sections,'all'); # Put 'all' at the front of the list |
|
unshift(@sections,'none'); # Put 'no sections' next |
unshift(@sections,'none'); # Put 'no sections' next |
|
unshift(@sections,'all'); # Put 'all' at the front of the list |
$r->print('<td> </td> |
$r->print('<td> </td> |
<td colspan="3" align="center" valign="top">'. |
<td colspan="3" align="center" valign="top">'. |
§ions_selection(\@sections,'sectionpick').'</td>'); |
§ions_selection(\@sections,'sectionpick').'</td>'); |
Line 1425 sub sections_selection {
|
Line 1426 sub sections_selection {
|
} |
} |
foreach my $sec (@{$sections}) { |
foreach my $sec (@{$sections}) { |
if ($sec eq 'all') { |
if ($sec eq 'all') { |
$section_sel .= ' <option value="'.$sec.'" />all sections'."\n"; |
$section_sel .= ' <option value="'.$sec.'" selected="selected">'.&mt('all sections').'</option>'."\n"; |
} elsif ($sec eq 'none') { |
} elsif ($sec eq 'none') { |
$section_sel .= ' <option value="'.$sec.'" />no section'."\n"; |
$section_sel .= ' <option value="'.$sec.'">'.&mt('no section').'</option>'."\n"; |
} else { |
} else { |
$section_sel .= ' <option value="'.$sec.'" />'.$sec."\n"; |
$section_sel .= ' <option value="'.$sec.'">'.$sec."</option>\n"; |
} |
} |
} |
} |
my $output = ' |
my $output = ' |
Line 1766 sub pick_new_members {
|
Line 1767 sub pick_new_members {
|
</td> |
</td> |
<td><b><a href="javascript:changeSort('."'domain'".')">'.&mt('Domain').'</a></b></td> |
<td><b><a href="javascript:changeSort('."'domain'".')">'.&mt('Domain').'</a></b></td> |
<td><b><a href="javascript:changeSort('."'id'".')">ID</a></b></td> |
<td><b><a href="javascript:changeSort('."'id'".')">ID</a></b></td> |
|
<td><b><a href="javascript:changeSort('."'section'".')">Section</a></b></td> |
'); |
'); |
if (@{$available} > 0) { |
if (@{$available} > 0) { |
$r->print('<td><b>'.$lt{'func'}.'</b></td>'); |
$r->print('<td><b>'.$lt{'func'}.'</b></td>'); |
Line 1794 sub pick_new_members {
|
Line 1796 sub pick_new_members {
|
push(@{$Sortby{$members{$user}[$$idx{udom}]}},$user); |
push(@{$Sortby{$members{$user}[$$idx{udom}]}},$user); |
} elsif ($env{'form.sortby'} eq 'id') { |
} elsif ($env{'form.sortby'} eq 'id') { |
push(@{$Sortby{$members{$user}[$$idx{id}]}},$user); |
push(@{$Sortby{$members{$user}[$$idx{id}]}},$user); |
|
} elsif ($env{'form.sortby'} eq 'section') { |
|
push(@{$Sortby{$members{$user}[$$idx{section}]}},$user); |
} else { |
} else { |
push(@{$Sortby{$members{$user}[$$idx{fullname}]}},$user); |
push(@{$Sortby{$members{$user}[$$idx{fullname}]}},$user); |
} |
} |
Line 1811 sub pick_new_members {
|
Line 1815 sub pick_new_members {
|
my $fullname = $members{$user}[$$idx{fullname}]; |
my $fullname = $members{$user}[$$idx{fullname}]; |
my $udom = $members{$user}[$$idx{udom}]; |
my $udom = $members{$user}[$$idx{udom}]; |
my $uname = $members{$user}[$$idx{uname}]; |
my $uname = $members{$user}[$$idx{uname}]; |
|
my $section = $members{$user}[$$idx{section}]; |
$r->print('<tr bgcolor="'.$rowColor.'"><td align="right"> |
$r->print('<tr bgcolor="'.$rowColor.'"><td align="right"> |
<input type="checkbox" name="member" value="'.$user.'" /></td><td><small>'. |
<input type="checkbox" name="member" value="'.$user.'" /></td><td><small>'. |
$fullname.'</small></td><td><small>'.$uname.'</small></td><td><small>'. |
$fullname.'</small></td><td><small>'.$uname.'</small></td><td><small>'. |
$udom.'</small></td><td><small>'.$id.'</small></td>'); |
$udom.'</small></td><td><small>'.$id.'</small></td>'. |
|
'<td><small>'.$section.'</small></td>'); |
if (@{$available} > 0) { |
if (@{$available} > 0) { |
$r->print('<td align="center"><nobr><small>'. |
$r->print('<td align="center"><nobr><small>'. |
' '); |
' '); |
Line 3044 sub write_group_data {
|
Line 3050 sub write_group_data {
|
|
|
if ($result eq 'ok') { |
if ($result eq 'ok') { |
if ($action eq 'create') { |
if ($action eq 'create') { |
my $put_result = &create_homepage($cdom,$cnum,$groupname, |
my $result = &add_group_folder($cdom,$cnum,$now,$groupname,$action, |
\%groupinfo,$tools,$gpterm, |
$description,$tools,\%groupinfo, |
$ucgpterm); |
$gpterm,$ucgpterm,$crstype); |
|
if ($result ne 'ok') { |
|
$r->print(&mt('A problem occurred when creating folders for the new [_1]. [_2].',$gpterm,$result)); |
|
} |
$r->print(&mt('[_1] [_2] was created.<br />',$ucgpterm,$groupname)); |
$r->print(&mt('[_1] [_2] was created.<br />',$ucgpterm,$groupname)); |
} else { |
} else { |
$r->print(&mt('[_1] [_2] was updated.<br />',$ucgpterm,$groupname)); |
$r->print(&mt('[_1] [_2] was updated.<br />',$ucgpterm,$groupname)); |
Line 3266 sub process_membership {
|
Line 3275 sub process_membership {
|
} |
} |
if ($roster_result eq 'ok') { |
if ($roster_result eq 'ok') { |
$r->print('<br />'.&mt('[_1] membership list updated.',$ucgpterm)); |
$r->print('<br />'.&mt('[_1] membership list updated.',$ucgpterm)); |
|
$r->print('<p>'.&mt("For full access to all of [_1]'s privileges, users will need to log out and log back in.",$groupname).'</p>'); |
} else { |
} else { |
$r->print('<br />'.&mt('An error occurred while updating the [_1] membership list -',$gpterm).$roster_result.'<br />'); |
$r->print('<br />'.&mt('An error occurred while updating the [_1] membership list -',$gpterm).$roster_result.'<br />'); |
} |
} |
Line 3571 sub date_setting_table {
|
Line 3581 sub date_setting_table {
|
return ($start_table, $end_table); |
return ($start_table, $end_table); |
} |
} |
|
|
|
sub add_group_folder { |
|
my ($cdom,$cnum,$now,$groupname,$action,$description,$tools,$groupinfo, |
|
$gpterm,$ucgpterm,$crstype) = @_; |
|
if ($cdom eq '' || $cnum eq '') { |
|
return &mt('Error: invalid course domain or number - group folder creation failed'); |
|
} |
|
my ($outcome,$allgrpsmap,$grpmap,$boardsmap,$grppage); |
|
my $navmap = Apache::lonnavmaps::navmap->new(); |
|
my $crspath = '/uploaded/'.$cdom.'/'.$cnum.'/'; |
|
$allgrpsmap = $crspath.'default_0.sequence'; |
|
my $topmap = $navmap->getResourceByUrl($allgrpsmap); |
|
undef($navmap); |
|
if ($action eq 'create') { |
|
# check if default_0.sequence exists. |
|
if (!$topmap) { |
|
my $grpstitle = &mt('[_1] [_2]',$crstype,$ucgpterm); |
|
my $topmap_url = '/'.$env{'course.'.$env{'request.course.id'}.'.url'}; |
|
$topmap_url =~ s|/+|/|g; |
|
if ($topmap_url =~ m|^/uploaded|) { |
|
$outcome = &map_updater($cdom,$cnum,'default_0.sequence', |
|
'toplevelgroup',$grpstitle,$topmap_url); |
|
if ($outcome ne 'ok') { |
|
return $outcome; |
|
} |
|
} else { |
|
$outcome = &mt('Non-standard course - group folder not added.'); |
|
return $outcome; |
|
} |
|
} |
|
my $grpfolder = &mt('[_1] Folder -',$ucgpterm,).$description; |
|
$grppage='/adm/'.$cdom.'/'.$cnum.'/'.$groupname.'/grppg'; |
|
my $grptitle = &mt('Group homepage').' - '.$description; |
|
my ($seqid,$discussions,$disctitle); |
|
my $outcome = &map_updater($cdom,$cnum,'default_'.$now.'.sequence', |
|
'grpseq',$grpfolder,$allgrpsmap,$grppage, |
|
$grptitle); |
|
if ($outcome ne 'ok') { |
|
return $outcome; |
|
} |
|
my $pageout = &create_homepage($cdom,$cnum,$groupname,$groupinfo, |
|
$tools,$gpterm,$ucgpterm,$now); |
|
# Link to folder for bulletin boards |
|
$grpmap = $crspath.'default_'.$now.'.sequence'; |
|
if (grep/^discussion$/,@{$tools}) { |
|
$seqid = $now + 1; |
|
$disctitle = &mt('Discussion Boards'); |
|
my $outcome = &map_updater($cdom,$cnum,'default_'.$seqid. |
|
'.sequence','bbseq',$disctitle,$grpmap); |
|
if ($outcome ne 'ok') { |
|
return $outcome; |
|
} |
|
$boardsmap = $crspath.'default_'.$seqid.'.sequence'; |
|
} |
|
} else { |
|
#modify group folder if status of discussions tools is changed |
|
} |
|
my ($furl,$ferr)= &Apache::lonuserstate::readmap($cdom.'/'.$cnum); |
|
my $navmap = Apache::lonnavmaps::navmap->new(); |
|
# modify parameters |
|
my $parm_result; |
|
if ($action eq 'create') { |
|
if ($allgrpsmap) { |
|
$parm_result .= &parm_setter($navmap,$cdom,$allgrpsmap,$groupname); |
|
} |
|
if ($grpmap) { |
|
$parm_result .= &parm_setter($navmap,$cdom,$grpmap,$groupname); |
|
} |
|
if ($grppage) { |
|
$parm_result .= &parm_setter($navmap,$cdom,$grppage,$groupname); |
|
} |
|
if ($boardsmap) { |
|
$parm_result .= &parm_setter($navmap,$cdom,$boardsmap,$groupname); |
|
} |
|
} |
|
if ($parm_result) { |
|
return $parm_result; |
|
} else { |
|
return 'ok'; |
|
} |
|
} |
|
|
|
sub map_updater { |
|
my ($cdom,$cnum,$newfile,$itemname,$itemtitle,$parentmap,$startsrc, |
|
$starttitle,$endsrc,$endtitle) = @_; |
|
my $outcome; |
|
$env{'form.'.$itemname} = &new_map($startsrc,$starttitle,$endsrc, |
|
$endtitle); |
|
my $newmapurl=&Apache::lonnet::finishuserfileupload($cnum,$cdom,$itemname, |
|
$newfile); |
|
if ($newmapurl !~ m|^/uploaded|) { |
|
$outcome = "Error uploading new folder ($newfile): $newmapurl"; |
|
return $outcome; |
|
} |
|
my ($errtext,$fatal)=&Apache::lonratedt::mapread($parentmap); |
|
if ($fatal) { |
|
$outcome = "Error reading contents of parent folder ($parentmap): $errtext\n"; |
|
return $outcome; |
|
} else { |
|
my $newidx=&Apache::lonratedt::getresidx($newmapurl); |
|
$Apache::lonratedt::resources[$newidx] = $itemtitle.':'.$newmapurl. |
|
':false:normal:res'; |
|
$Apache::lonratedt::order[1+$#Apache::lonratedt::order]=$newidx; |
|
my ($outtext,$errtext) = &Apache::lonratedt::storemap($parentmap,1); |
|
if ($errtext) { |
|
$outcome = "Error storing updated parent folder ($parentmap): $errtext\n"; |
|
return $outcome; |
|
} |
|
} |
|
return 'ok'; |
|
} |
|
|
|
sub new_map { |
|
my ($startsrc,$starttitle,$endsrc,$endtitle) = @_; |
|
my $newmapstr = ' |
|
<map> |
|
<resource id="1" src="'.$startsrc.'" type="start" title="'.$starttitle.'"></resource> |
|
<link from="1" to="2" index="1"></link> |
|
<resource id="2" src="'.$endsrc.'" type="finish" title="'.$endtitle.'"></resource> |
|
</map> |
|
'; |
|
return $newmapstr; |
|
} |
|
|
|
sub parm_setter { |
|
my ($navmap,$cdom,$url,$groupname) = @_; |
|
my %parmresult; |
|
my %hide_settings = ( |
|
'course' => { |
|
'num' => 13, |
|
'set' => 'yes', |
|
}, |
|
'group' => { |
|
'num' => 5, |
|
'set' => 'no', |
|
'extra' => $groupname, |
|
}, |
|
); |
|
my $res = $navmap->getResourceByUrl($url); |
|
my $symb = $res->symb(); |
|
foreach my $level (keys(%hide_settings)) { |
|
$parmresult{$level} = &Apache::lonparmset::storeparm_by_symb($symb, |
|
'0_hiddenresource', |
|
$hide_settings{$level}{'num'}, |
|
$hide_settings{$level}{'set'}, |
|
'string_yesno',undef,$cdom, |
|
undef,undef, |
|
$hide_settings{$level}{'extra'}); |
|
} |
|
return %parmresult; |
|
} |
|
|
sub create_homepage { |
sub create_homepage { |
my ($cdom,$cnum,$name,$groupinfo,$tools,$gpterm,$ucgpterm) = @_; |
my ($cdom,$cnum,$name,$groupinfo,$tools,$gpterm,$ucgpterm,$now) = @_; |
my $functionality = join(',',@{$tools}); |
my $functionality = join(',',@{$tools}); |
my $content = &unescape($$groupinfo{description}); |
my $content = &unescape($$groupinfo{description}); |
$content=~s/\s+$//s; |
$content=~s/\s+$//s; |
Line 3585 sub create_homepage {
|
Line 3746 sub create_homepage {
|
'abb_links' => $functionality, |
'abb_links' => $functionality, |
'bbb_content' => $content, |
'bbb_content' => $content, |
'ccc_webreferences' => '', |
'ccc_webreferences' => '', |
'uploaded.lastmodified' => time, |
'uploaded.lastmodified' => $now, |
); |
); |
my $putresult = &Apache::lonnet::put('grppage_'.$name,\%pageinfo,$cdom,$cnum); |
my $putresult = &Apache::lonnet::put('grppage_'.$name,\%pageinfo,$cdom,$cnum); |
return $putresult; |
return $putresult; |