--- loncom/interface/loncoursegroups.pm 2008/10/21 14:29:39 1.79
+++ loncom/interface/loncoursegroups.pm 2009/02/26 16:17:29 1.95
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: loncoursegroups.pm,v 1.79 2008/10/21 14:29:39 bisitz Exp $
+# $Id: loncoursegroups.pm,v 1.95 2009/02/26 16:17:29 schafran Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -75,11 +75,11 @@ sub handler {
my $crstype = &Apache::loncommon::course_type();
my %functions = (
- email => 'E-mail',
- discussion => 'Discussion boards',
- chat => 'Chat',
- files => 'File repository',
- roster => 'Membership roster',
+ email => 'Send Messages',
+ discussion => 'Discussion Boards',
+ chat => 'Chat Room',
+ files => 'File Repository',
+ roster => 'Membership Roster',
homepage => $ucgpterm.' home page',
);
@@ -141,7 +141,7 @@ function openGroupRoster(group,status) {
rosterbrowser = open(url,title,options,'1');
rosterbrowser.focus();
}\n|;
- $r->print(&header('Groups',$jscript,$action,$state));
+ $r->print(&header('My Space',$jscript,$action,$state));
if ($env{'form.refpage'} eq 'cusr') {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"/adm/createuser",
@@ -349,8 +349,8 @@ END
'
'.$quota.' '.
''.$totalmembers.' '.
''.
- ''.&mt('Files: [_1]',$totalfiles).'
'.
- ''.&mt('Folders: [_1]',$totaldirs).'
'.
+ ''.&mt('Files: [_1]',$totalfiles).' '.
+ ''.&mt('Folders: [_1]',$totaldirs).' '.
' '.
''.$boards.' '.
''.$diskuse.' '.
@@ -915,11 +915,11 @@ function changeSort(caller) {
result => 'Re-enabled'
);
my %navbuttons = &Apache::lonlocal::texthash(
- gtns => 'Go to next step',
- gtps => 'Go to previous step',
+ gtns => 'Next',#'Go to next step',
+ gtps => 'Back',#'Go to previous step',
crgr => 'Create '.$gpterm,
- mose => 'Modify settings',
- gtpp => 'Go to previous page',
+ mose => 'Save',#'Modify settings',
+ gtpp => 'Back',#'Go to previous page',
adme => 'Add members',
);
if ((($action eq 'create') || ($action eq 'modify') || ($action eq 'delete') || ($action eq 'reenable')) &&
@@ -1259,12 +1259,18 @@ sub reenable_folder {
sub modify_folders {
my ($cdom,$cnum,$groupname) = @_;
- my $outcome;
+ my ($outcome,$groupmap,$groupmapres,$map,$id,$src);
my $navmap = Apache::lonnavmaps::navmap->new();
- my $groupmap = '/uploaded/'.$cdom.'/'.$cnum.'/'.'group_folder_'.
+ if (!defined($navmap)) {
+ $outcome = ''.
+ &mt('Error reading course contents.').' '.
+ &mt('You need to re-initialize the course.').
+ '
';
+ return $outcome;
+ }
+ $groupmap = '/uploaded/'.$cdom.'/'.$cnum.'/'.'group_folder_'.
$groupname.'.sequence';
- my $groupmapres = $navmap->getResourceByUrl($groupmap);
- my ($map,$id,$src);
+ $groupmapres = $navmap->getResourceByUrl($groupmap);
if ($groupmapres) {
($map,$id,$src)=&Apache::lonnet::decode_symb($groupmapres->symb());
}
@@ -1553,11 +1559,11 @@ sub open_list_window {
my ($group,$status,$count,$text) = @_;
my $entry;
if ($count > 0) {
- $entry = ''.$text.' - '.$count.
- ' ';
+ ' ';
} else {
- $entry = ''.$text.' - '.$count.' ';
+ $entry = ''.$text.' - '.$count.' ';
}
return $entry;
}
@@ -1582,7 +1588,7 @@ sub general_settings_form {
@{$tools} = sort(keys(%{$functions}));
&privilege_specificity($r,$action,3,$tools,$stored,$toolprivs,
$fixedprivs,\@available,$formname,
- $gpterm,$ucgpterm);
+ $gpterm,$ucgpterm,$functions);
&mapping_options($r,$action,$formname,$page,$sectioncount,
$states,$stored,$navbuttons,4,5,
$gpterm,$ucgpterm,$crstype,$cdom,$cnum);
@@ -1643,16 +1649,16 @@ END
for (my $i=0; $i<$halfnum; $i++) {
$r->print(' '.
- $$functions{$allfunctions[$i]}.'
+ &mt($$functions{$allfunctions[$i]}).'
');
}
- $r->print(' print(' '.
' ');
for (my $j=$halfnum; $j<@allfunctions; $j++) {
$r->print(' '.
- $$functions{$allfunctions[$j]}.'
+ &mt($$functions{$allfunctions[$j]}).'
');
}
if ($remnum) {
@@ -1660,7 +1666,7 @@ END
}
$r->print('
-
@@ -1668,8 +1674,8 @@ END
'.&mt('Granularity:').'
'.$lt{'doyo'}.' '.&mt('Yes').' '.&mt('No').' ');
if ($action eq 'modify') {
- $r->print(' ('.&mt('Currently set to "[_1]"',
- $$stored{'granularity'}).')');
+ $r->print(' ('.&mt('Currently set to [_1].'
+ ,'"'.&mt($$stored{'granularity'}).'"').')');
}
$r->print('
@@ -1798,7 +1804,7 @@ sub sections_selection {
}
}
my $output = '
-
+
'.$section_sel.'
';
return $output;
@@ -1806,9 +1812,7 @@ sub sections_selection {
sub access_date_settings {
my ($r,$action,$formname,$stored,$image,$gpterm,$ucgpterm) = @_;
- my %lt = &Apache::lonlocal::texthash(
- 'sten' => "Default start and end dates for $gpterm access",
- );
+ my $sten = &mt("Default start and end dates for $gpterm access");
my $starttime = time;
my $endtime = time+(6*30*24*60*60); # 6 months from now, approx
if ($action eq 'modify') {
@@ -1818,7 +1822,7 @@ sub access_date_settings {
}
}
my ($table) = &date_setting_table($starttime,$endtime,$formname);
- $r->print(&Apache::lonhtmlcommon::topic_bar($image,$lt{'sten'}).'
+ $r->print(&Apache::lonhtmlcommon::topic_bar($image,$sten).'
'.$table.'
');
return;
@@ -1935,7 +1939,7 @@ sub print_current_settings {
ygrs => "Your group selections - ",
tfwa => "The following settings will apply to the group:",
difn => 'Different collaborative tools for different members:',
- stda => 'Start date',
+ stda => 'Start date:',
enda => 'End date:',
);
my $showstart = &Apache::lonlocal::locallocaltime($startdate);
@@ -1987,7 +1991,7 @@ sub print_current_settings {
$r->print(' ');
}
if (@{$unavailable} > 0) {
- $r->print(''.&mt('Unavailable for assignment:').' '.
+ $r->print(''.&mt('Unavailable for assignment:').' '.
'');
my $rowcell = int(@{$unavailable}/2) + @{$unavailable}%2;
for (my $j=0; $j<@{$unavailable}; $j++) {
@@ -2005,9 +2009,10 @@ sub print_current_settings {
$r->print('
');
}
my $quota_text=&mt('[_1] Mb',$quota);
+ my $granu_text=&mt($granularity);
$r->print(<<"END");
- $lt{'difn'} $granularity
+ $lt{'difn'} $granu_text
$quota_text
$lt{'stda'} $showstart
$lt{'enda'} $showend
@@ -2066,13 +2071,13 @@ sub pick_new_members {
if (@{$available} > 0 && $granularity eq 'Yes') {
$r->print('
'.$lt{'setf'}.'
-
-
+
-
-
+
');
}
$r->print('
@@ -2095,13 +2100,13 @@ sub pick_new_members {
if ($granularity eq 'Yes') {
$r->print(&Apache::loncommon::start_data_table_row('LC_data_table_dense LC_data_table_highlight').'
- '.&mt('All:').' ');
+ '.&mt('All:').' ');
foreach my $tool (@{$available}) {
$r->print(' '.''.$tool.' ');
}
- $r->print(' ');
+ $r->print(' ');
}
}
my %Sortby = ();
@@ -2135,7 +2140,7 @@ sub pick_new_members {
''.$id.' '.
''.$section.' ');
if (@{$available} > 0) {
- $r->print(''.
+ $r->print(''.
' ');
foreach my $tool (@{$available}) {
if ($granularity eq 'Yes') {
@@ -2146,7 +2151,7 @@ sub pick_new_members {
$tool.'" value="'.$user.'" />'.$tool.' ');
}
}
- $r->print(' ');
+ $r->print(' ');
}
$r->print(&Apache::loncommon::end_data_table_row()."\n");
}
@@ -2164,7 +2169,7 @@ sub pick_new_members {
sub privilege_specificity {
my ($r,$action,$img,$tools,$stored,$toolprivs,$fixedprivs,$available,
- $formname,$gpterm,$ucgpterm) = @_;
+ $formname,$gpterm,$ucgpterm,$functions) = @_;
my %lt = &Apache::lonlocal::texthash (
'uprv' => 'User privileges for collaborative tools',
'frty' => 'For each collaborative tool you have chosen to include, '.
@@ -2233,8 +2238,8 @@ sub privilege_specificity {
if ($totaloptionalprivs) {
$r->print('
- '.$lt{'algm'}.'
- '.$lt{'smgp'}.' ');
+ '.$lt{'algm'}.'
+ '.$lt{'smgp'}.' ');
} else {
$r->print(' ');
}
@@ -2261,7 +2266,7 @@ sub privilege_specificity {
$r->print($lt{'algm'}.' ');
}
&default_privileges($r,$action,$tools,$toolprivs,$fixedprivs,
- $available);
+ $available,$functions);
} else {
if ($action eq 'create') {
$r->print($lt{'asyo'});
@@ -2285,7 +2290,7 @@ sub privilege_specificity {
}
sub default_privileges {
- my ($r,$action,$tools,$toolprivs,$fixedprivs,$available) = @_;
+ my ($r,$action,$tools,$toolprivs,$fixedprivs,$available,$functions) = @_;
my %lt = &Apache::lonlocal::texthash(
'addp' => 'Additional privileges',
'fixp' => 'Fixed privileges',
@@ -2294,8 +2299,12 @@ sub default_privileges {
);
$r->print(&Apache::lonhtmlcommon::start_pick_box('LC_group_priv_box').
&Apache::lonhtmlcommon::row_title($lt{'func'},undef,
- 'LC_groups_functionality'));
- $r->print(join('',@{$tools}));
+ 'LC_groups_functionality'));
+ my @tableHeader;
+ foreach my $key (sort(keys(%{$functions}))){
+ push (@tableHeader,&mt(${$functions}{$key}));
+ }
+ $r->print(join(' ', @tableHeader));
$r->print(&Apache::lonhtmlcommon::row_closure(1));
my $fixed = '';
my $dynamic = '';
@@ -2311,7 +2320,7 @@ sub default_privileges {
$fixed .= ' ';
}
$fixed .= ' '
- .''.$$toolprivs{$tool}{$priv}.' ';
+ .''.&mt($$toolprivs{$tool}{$priv}).' ';
if ($action eq 'modify') {
if (grep(/^$tool$/,@{$available})) {
$fixed .= ''.&mt('(on)').' ';
@@ -2326,7 +2335,7 @@ sub default_privileges {
$dynamic .= '
'."\n";
}
- $dynamic .= ' '.$$toolprivs{$tool}{$priv}.' '."\n";
+ $dynamic .= ' '.&mt($$toolprivs{$tool}{$priv}).' '."\n";
}
}
if ($privcount == 0) {
@@ -2510,15 +2519,15 @@ sub current_membership {
$r->print(&check_uncheck_tools($r,$available));
$r->print('
-
+
'.$lt{'curf'}.'
-
-
-
+
');
}
@@ -2553,14 +2562,14 @@ END
if ($granularity eq 'Yes') {
$r->print(&Apache::loncommon::start_data_table_row('LC_data_table_dense LC_data_table_highlight').'
- '.&mt('All:').
+ '.&mt('All:').
' ');
foreach my $tool (@{$available}) {
$r->print(' '.''.$tool.' ');
}
- $r->print(' ');
+ $r->print(' ');
}
}
my %Sortby = ();
@@ -2588,25 +2597,25 @@ END
$r->print(&Apache::loncommon::start_data_table_row('LC_data_table_dense').'
');
if ($$current{$user}{changestate} eq 'reenable') {
- $r->print(''.
+ $r->print(''.
' '.
- $lt{'reen'}.' ');
+ $lt{'reen'}.' ');
} elsif ($$current{$user}{changestate} eq 'expire') {
- $r->print(''.
+ $r->print(''.
' '.
- $lt{'expi'}.' ');
+ $lt{'expi'}.' ');
} elsif ($$current{$user}{changestate} eq 'activate') {
- $r->print(''.
+ $r->print(''.
' '.
- $lt{'acti'}.' ');
+ $lt{'acti'}.' ');
}
- $r->print(''.
+ $r->print(''.
' '.
- $lt{'dele'}.' ');
+ $lt{'dele'}.'');
if ($specificity eq 'Yes') {
- $r->print(''.
+ $r->print(''.
' '.$lt{'chpr'}.
- ' ');
+ '');
}
$r->print('
'.
@@ -2617,7 +2626,7 @@ END
''.$start.' '.
''.$end.' ');
if ($hastools) {
- $r->print(''.
+ $r->print(''.
' ');
foreach my $tool (@{$$current{$user}{currtools}}) {
if ($granularity eq 'Yes') {
@@ -2633,23 +2642,23 @@ END
}
$r->print(' ');
}
- $r->print(' ');
+ $r->print(' ');
}
if ($addtools) {
$r->print('');
if ($granularity eq 'Yes') {
foreach my $tool (@{$$current{$user}{newtools}}) {
- $r->print(' print(' '.$tool.
- ' ');
+ ' ');
}
} else {
foreach my $tool (@{$$current{$user}{newtools}}) {
- $r->print(' print(' '.$tool.
- ' ');
+ ' ');
}
}
$r->print(' ');
@@ -2670,13 +2679,13 @@ sub check_uncheck_buttons {
'.$title.'
-
-
+
-
-
+
');
@@ -2876,7 +2885,8 @@ sub member_privileges_form {
'members being added or modified, '.
'there are no optional privileges to set '.
'for specific members.',
- 'algr' => 'All new group members will receive the same privileges.', 'ifex' => 'If previously expired members are being re-enabled, or '.
+ 'algr' => 'All new group members will receive the same privileges.',
+ 'ifex' => 'If previously expired members are being re-enabled, or '.
'if access for future members is being activated now, '.
'previously set privileges will be preserved.',
'asno' => 'As no group members are being added, '.
@@ -2954,7 +2964,7 @@ sub member_privileges_form {
$r->print('');
$r->print(''.
''.
- $tool.' ');
+ &mt($tool).' ');
my $privcount = 0;
foreach my $priv (@{$showboxes{$tool}}) {
$privcount ++;
@@ -2968,15 +2978,16 @@ sub member_privileges_form {
} else {
$r->print('');
}
- $r->print(qq|
- $$toolprivs{$tool}{$priv}
-
-
-
-
- |);
+ $r->print(
+ ''.&mt($$toolprivs{$tool}{$priv}).' '
+.''
+.' '
+.' '
+.' '
+.' '
+ );
$r->print(' ');
if ($privcount < @{$showboxes{$tool}}) {
if (@{$showboxes{$tool}} > 2) {
@@ -3221,36 +3232,49 @@ sub write_group_data {
my $crspath = '/uploaded/'.$cdom.'/'.$cnum.'/';
my $boardsmap = $crspath.'group_boards_'.$groupname.'.sequence';
my $navmap = Apache::lonnavmaps::navmap->new();
- my $bbmapres = $navmap->getResourceByUrl($boardsmap);
- undef($navmap);
- if (!$bbmapres) {
- my $grpmap = $crspath.'group_folder_'.$groupname.'.sequence';
- my $disctitle = &mt('Discussion Boards');
- my $outcome = &map_updater($cdom,$cnum,'group_boards_'.
- $groupname.'.sequence','bbseq',
- $disctitle,$grpmap);
- my ($furl,$ferr) =
- &Apache::lonuserstate::readmap($cdom.'/'.$cnum);
- $navmap = Apache::lonnavmaps::navmap->new();
- # modify parameter
- if ($outcome eq 'ok') {
- my $parm_result = &parm_setter($navmap,$cdom,$boardsmap,
- $groupname);
- if ($parm_result) {
- $r->print(''
- .&mt('An error occurred while setting parameters '
- .'for Discussion Boards folder: '
- .'[_1]',$parm_result)
- .'
');
+ my ($bbmapres,$error);
+ if (defined($navmap)) {
+ $bbmapres = $navmap->getResourceByUrl($boardsmap);
+ undef($navmap);
+ if (!$bbmapres) {
+ my $grpmap = $crspath.'group_folder_'.$groupname.'.sequence';
+ my $disctitle = &mt('Discussion Boards');
+ my $outcome = &map_updater($cdom,$cnum,'group_boards_'.
+ $groupname.'.sequence','bbseq',
+ $disctitle,$grpmap);
+ my ($furl,$ferr) =
+ &Apache::lonuserstate::readmap($cdom.'/'.$cnum);
+ # modify parameter
+ if ($outcome eq 'ok') {
+ $navmap = Apache::lonnavmaps::navmap->new();
+ if (defined($navmap)) {
+ my $parm_result = &parm_setter($navmap,$cdom,$boardsmap,
+ $groupname);
+ if ($parm_result) {
+ $error = &mt('An error occurred while setting parameters '
+ .'for Discussion Boards folder: '
+ .'[_1]',$parm_result);
+ } else {
+ $r->print(''.
+ &mt('Discussion Boards Folder created.')
+ .'
');
+ }
+ undef($navmap);
+ } else {
+ $error = &mt('An error occurred while setting parameters '.
+ 'for Discussion Boards folder: '.
+ 'Could not retrieve course information' );
+ }
} else {
- $r->print(''
- .&mt('Discussion Boards Folder created.')
- .'
');
+ $r->print($outcome);
}
- } else {
- $r->print($outcome);
}
- undef($navmap);
+ } else {
+ $error = &mt("An error occurred while retrieving the contents of the group's folder.").' '.
+ &mt('You need to re-initialize the course.');
+ }
+ if ($error ne '') {
+ $r->print(''.$error.'
');
}
}
$r->print(''
@@ -3471,17 +3495,28 @@ sub process_membership {
$r->print('
');
}
if (@unchanged > 0) {
- $r->print(&mt('No change occurred for the following users:
'));
+ $r->print(&mt('No change occurred for the following users:').'
');
foreach my $user (sort(@unchanged)) {
$r->print($$userdata{$user}[$$idx{fullname}].' - '.$user.'
');
}
$r->print('
');
}
if ($roster_result eq 'ok') {
- $r->print('
'.&mt('[_1] membership list updated.',$ucgpterm));
- $r->print('
'.&mt("Any currently logged in course users affected by the changes you made to group membership or privileges for the [_1] group will need to log out and log back in for their LON-CAPA sessions to reflect these changes.",$groupname).'
');
+ $r->print('
'
+ .&mt($ucgpterm.' membership list updated.')
+ .'
');
+ $r->print('
'
+ .&mt('Any currently logged in course users affected by the changes you made'
+ .' to group membership or privileges for the [_1] group will need to log out'
+ .' and log back in for their LON-CAPA sessions to reflect these changes.'
+ ,''.$groupname.' ')
+ .'
'
+ );
} else {
- $r->print('
'.&mt('An error occurred while updating the [_1] membership list -',$gpterm).$roster_result.'
');
+ $r->print('
'
+ .&mt("An error occurred while updating the $gpterm membership list:")
+ .' '.$roster_result
+ .'
');
}
return;
}
@@ -3497,7 +3532,6 @@ sub mapping_options {
'adds' => "If automatic $gpterm enrollment is enabled, when a user is newly assigned a ".lc($crstype)."-wide or section-specific role, he/she will automatically be added as a member of the $gpterm, with start and end access dates defined by the default dates set for the $gpterm, unless he/she is already a $gpterm member, with access dates that permit either current or future $gpterm access.",
'drops' => "If automatic $gpterm disenrollment is enabled, when a user's role is expired, access to the $gpterm will be terminated unless the user continues to have other ".lc($crstype)."-wide or section-specific active or future roles which receive automatic membership in the $gpterm.",
'pirs' => "Pick roles and sections for automatic $gpterm enrollment",
- 'curr' => 'Currently set to',
'on' => 'on',
'off' => 'off',
'auad' => "Automatically enable $gpterm membership when roles are added?",
@@ -3522,19 +3556,19 @@ sub automapping {
}
$r->print(&Apache::lonhtmlcommon::topic_bar($image,$$lt{'endi'}).'
'.$$lt{'gmma'}.': '.$$lt{'adds'}.'
'.$$lt{'drops'}.'
-
'.$$lt{'auad'}.':
- on off ');
+ '.$$lt{'auad'}.':
+ '.&mt('on').' '.&mt('off').' ');
if ($action eq 'modify') {
- $r->print(' ('.$$lt{'curr'}.' '.$$lt{$add}.' )');
+ $r->print(' ('.&mt('Currently set to [_1].',''.$$lt{$add}.' ').')');
}
$r->print('
-
-
'.$$lt{'auex'}.':
- on off ');
+
+ '.$$lt{'auex'}.':
+ '.&mt('on').' '.&mt('off').' ');
if ($action eq 'modify') {
- $r->print(' ('.$$lt{'curr'}.' '.$$lt{$drop}.' )');
+ $r->print(' ('.&mt('Currently set to [_1].',''.$$lt{$drop}.' ').')');
}
- $r->print(' '.$$lt{'mapr'});
+ $r->print('
'.$$lt{'mapr'});
}
sub mapping_settings {
@@ -3694,16 +3728,16 @@ sub member_privs_entries {
if ($privcount == 3) {
$dynamic .= '
';
}
- $dynamic .=' ';
+ '';
}
}
- $r->print(' '.$fixed.' '.$dynamic.'
');
+ $r->print(''.$fixed.' '.$dynamic.' ');
} else {
$r->print(' ');
}
@@ -3730,8 +3764,8 @@ sub date_setting_table {
my $endform = &Apache::lonhtmlcommon::date_setter($formname,
'enddate',$endtime);
my $perpetual =
- ' '.
- &mt('None').' ';
+ ' '.
+ &mt('None').' ';
my $table = "