';
foreach my $key (sort(keys(%{$disallowed}))) {
@@ -1073,8 +1527,8 @@ sub get_course {
}
sub get_jscript {
- my ($cdom,$phase) = @_;
- my ($can_toggle_cat,$can_categorize) = &can_modify_catsettings($cdom);
+ my ($cdom,$phase,$crstype) = @_;
+ my ($can_toggle_cat,$can_categorize) = &can_modify_catsettings($cdom,$crstype);
my ($jscript,$categorize_js);
my $stubrowse_js = &Apache::loncommon::studentbrowser_javascript();
my $browse_js = &Apache::loncommon::browser_and_searcher_javascript('parmset');
@@ -1181,28 +1635,36 @@ ENDSCRIPT
sub print_courseinfo {
- my ($cdom,$settings,$ordered,$itemtext,$rowtotal) = @_;
+ my ($cdom,$settings,$ordered,$itemtext,$rowtotal,$crstype) = @_;
unless ((ref($settings) eq 'HASH') && (ref($ordered) eq 'ARRAY') && (ref($itemtext) eq 'HASH')) {
return;
}
- my ($cathash,$categoriesform);
- my $crstype = &Apache::loncommon::course_type();
+ my ($cathash,$categoriesform,$autocoowner);
my %domconf =
- &Apache::lonnet::get_dom('configuration',['coursecategories'],$cdom);
+ &Apache::lonnet::get_dom('configuration',['coursecategories','autoenroll'],$cdom);
if (ref($domconf{'coursecategories'}) eq 'HASH') {
$cathash = $domconf{'coursecategories'}{'cats'};
if (ref($cathash) eq 'HASH') {
$categoriesform =
&Apache::loncommon::assign_categories_table($cathash,
- $settings->{'categories'})."\n";
+ $settings->{'categories'},$crstype)."\n";
}
}
+ if (ref($domconf{'autoenroll'}) eq 'HASH') {
+ $autocoowner = $domconf{'autoenroll'}{'co-owners'};
+ }
if (!defined($categoriesform)) {
- $categoriesform = &mt('No categories defined for this domain');
+ $categoriesform = &mt('No categories defined in this domain.');
}
- my ($can_toggle_cat,$can_categorize) = &can_modify_catsettings($cdom);
+ my ($can_toggle_cat,$can_categorize) = &can_modify_catsettings($cdom,$crstype);
+ my $replace;
+ if ($crstype eq 'Community') {
+ $replace = &mt('To replace the standard title for a course role, enter a title, otherwise leave blank');
+ } else {
+ $replace = &mt('To replace the standard title for a course role, enter a title, otherwise leave blank');
+ }
my %items = (
'url' => {
text => ''.&mt($itemtext->{'url'}).''.(' 'x2).
@@ -1219,6 +1681,12 @@ sub print_courseinfo {
input => 'textbox',
size => '25',
},
+ 'owner' => {
+ text => ''.&mt($itemtext->{'owner'}).'',
+ },
+ 'co-owners' => {
+ text => ''.&mt($itemtext->{'co-owners'}).'',
+ },
'courseid' => {
text => ''.&mt($itemtext->{'courseid'}).'
'.'('.
&mt('internal, optional').')',
@@ -1227,13 +1695,13 @@ sub print_courseinfo {
},
'cloners' => {
text => ''.&mt($itemtext->{'cloners'}).'
'.
- &mt('Course Coordinators included automatically'),
+ &mt('Owner and Coordinators included automatically'),
input => 'textbox',
size => '40',
},
'rolenames' => {
text => ''.&mt($itemtext->{'rolenames'}).'
'.
- '('.&mt('To replace the standard title for a course role, enter a title, otherwise leave blank').')',
+ '('.$replace.')',
input => 'textbox',
size => '20',
},
@@ -1299,11 +1767,18 @@ sub print_courseinfo {
if (@entries > 0) {
foreach my $entry (@entries) {
my ($uname,$udom) = split(/:/,$entry);
+ if ($udom =~ /^$match_domain$/) {
+ unless (&Apache::lonnet::domain($udom)) {
+ next;
+ }
+ } else {
+ next;
+ }
if ($uname eq '*') {
$datatable .=
&Apache::loncommon::start_data_table_row().
''.
- &mt('Domain:').' '.$udom.
+ &mt('Any user in domain:').' '.$udom.
' '.
' | '.
&Apache::loncommon::end_data_table_row();
$num ++;
- } else {
- push(@cloners,$entry);
+ } elsif (&Apache::lonnet::homeserver($uname,$udom) ne 'no_host') {
+ unless (grep(/^\Q$entry\E$/,@cloners)) {
+ push(@cloners,$entry);
+ }
}
}
}
@@ -1345,7 +1822,14 @@ sub print_courseinfo {
&Apache::loncommon::end_data_table();
} elsif ($item eq 'rolenames') {
$datatable .= &Apache::loncommon::start_data_table();
- foreach my $role ('cc','in','ta','ep','ad','st') {
+ my @roles;
+ if ($crstype eq 'Community') {
+ @roles = ('co');
+ } else {
+ @roles = ('cc');
+ }
+ push (@roles,('in','ta','ep','ad','st'));
+ foreach my $role (@roles) {
$datatable .= &Apache::loncommon::start_data_table_row().
''.
&Apache::lonnet::plaintext($role,$crstype,undef,1).
@@ -1361,6 +1845,38 @@ sub print_courseinfo {
$datatable .= ''.
&Apache::lonhtmlcommon::textbox($item.'_display',$settings->{$item},
$items{$item}{size},$launcher);
+ } elsif ($item eq 'owner') {
+ my $owner = $env{'course.'.$env{'request.course.id'}.'.internal.courseowner'};
+ if ($owner =~ /:/) {
+ my ($ownername,$ownerdom) = split(':',$owner);
+ $owner = &Apache::loncommon::plainname($ownername,$ownerdom);
+ } elsif ($owner ne '') {
+ $owner = &Apache::loncommon::plainname($owner,$cdom);
+ } else {
+ $owner = &mt('None specified');
+ }
+ my $domdesc = &Apache::lonnet::domain($cdom,'description');
+ $datatable .= $owner;
+ } elsif ($item eq 'co-owners') {
+ my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+ my $coowners = $env{'course.'.$env{'request.course.id'}.'.internal.co-owners'};
+ my @currcoown;
+ if ($coowners) {
+ @currcoown = split(',',$coowners);
+ }
+ if (&Apache::lonnet::is_course_owner($cdom,$cnum)) {
+ if (($crstype eq 'Course') && ($env{'course.'.$env{'request.course.id'}.'.internal.coursecode'}) && ($autocoowner)) {
+ $datatable .= &show_autocoowners(@currcoown);
+ } else {
+ $datatable .= &coowner_invitations($cnum,$cdom,@currcoown);
+ }
+ } else {
+ if (($crstype eq 'Course') && ($env{'course.'.$env{'request.course.id'}.'.internal.coursecode'}) && ($autocoowner)) {
+ $datatable .= &show_autocoowners(@currcoown);
+ } else {
+ $datatable .= &manage_coownership($cnum,$cdom,@currcoown);
+ }
+ }
} else {
$datatable .= &Apache::lonhtmlcommon::textbox($item,$settings->{$item},$items{$item}{size});
}
@@ -1394,22 +1910,31 @@ sub new_cloners_dom_row {
}
sub can_modify_catsettings {
- my ($dom) = @_;
+ my ($dom,$crstype) = @_;
my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$dom);
my ($can_toggle_cat,$can_categorize);
if (ref($domconf{'coursecategories'}) eq 'HASH') {
- if ($domconf{'coursecategories'}{'togglecats'} eq 'crs') {
- $can_toggle_cat = 1;
- }
- if ($domconf{'coursecategories'}{'categorize'} eq 'crs') {
- $can_categorize = 1;
+ if ($crstype eq 'Community') {
+ if ($domconf{'coursecategories'}{'togglecatscomm'} eq 'comm') {
+ $can_toggle_cat = 1;
+ }
+ if ($domconf{'coursecategories'}{'categorizecomm'} eq 'comm') {
+ $can_categorize = 1;
+ }
+ } else {
+ if ($domconf{'coursecategories'}{'togglecats'} eq 'crs') {
+ $can_toggle_cat = 1;
+ }
+ if ($domconf{'coursecategories'}{'categorize'} eq 'crs') {
+ $can_categorize = 1;
+ }
}
}
return ($can_toggle_cat,$can_categorize);
}
sub assign_course_categories {
- my ($r) = @_;
+ my ($r,$crstype) = @_;
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
my $hascats = 0;
@@ -1418,12 +1943,23 @@ sub assign_course_categories {
if (ref($domconf{'coursecategories'}) eq 'HASH') {
$cathash = $domconf{'coursecategories'}{'cats'};
if (ref($cathash) eq 'HASH') {
- $hascats = 1;
+ foreach my $cat (keys(%{$cathash})) {
+ next if ($cat eq 'instcode::0');
+ unless ($crstype eq 'Community') {
+ next if ($cat eq 'communities::0');
+ }
+ $hascats ++;
+ }
}
}
my $catwin_js;
if ($hascats) {
- my $alert = &mt("Use 'Save' in the main window to save course categories");
+ my $alert;
+ if ($crstype eq 'Community') {
+ $alert = &mt("Use 'Save' in the main window to save community categories");
+ } else {
+ $alert = &mt("Use 'Save' in the main window to save course categories");
+ }
$catwin_js = <
@@ -1461,28 +1997,165 @@ ENDSCRIPT
} else {
my $onload;
}
+ my ($crscat,$catcrs,$assign);
+ if ($crstype eq 'Community') {
+ $crscat = 'Community Categories';
+ $catcrs = &mt('Categorize Community');
+ $assign = &mt('Assign one or more categories to this community.')
+ } else {
+ $crscat = 'Course Categories';
+ $catcrs = &mt('Categorize Course');
+ $assign = &mt('Assign one or more categories to this course.')
+ }
my $start_page =
- &Apache::loncommon::start_page('Course Categories',$catwin_js,
+ &Apache::loncommon::start_page($crscat,$catwin_js,
{'only_body' => 1,});
my $end_page = &Apache::loncommon::end_page();
- my $categoriesform = ''.&mt('Categorize Course').'';
+ my $categoriesform = ''.$catcrs.'';
if ($hascats) {
my %currsettings =
&Apache::lonnet::get('environment',['hidefromcat','categories'],$cdom,$cnum);
- $categoriesform .= &mt('Assign one or more categories to this course.').'
'.
+ my $cattable = &Apache::loncommon::assign_categories_table($cathash,
+ $currsettings{'categories'},$crstype);
+ if ($cattable eq '') {
+ $categoriesform .= &mt('No suitable categories defined for this course type in this domain.');
+ } else {
+ $categoriesform .= $assign.'
'.
' ';
+ }
} else {
- $categoriesform .= &mt('No categories defined for this domain');
+ $categoriesform .= &mt('No categories defined in this domain.');
}
$r->print($start_page.$categoriesform.$end_page);
return;
}
+sub show_autocoowners {
+ my (@currcoown) = @_;
+ my $output = ''.&mt('Co-ownership is set automatically when a Course Coordinator role is assigned to official course personnel (from institutional data).').'';
+ if (@currcoown > 0) {
+ $output .= ' '.&mt('Current co-owners are:').' '.
+ join(', ',map { &Apache::loncommon::plainname(split(':',$_)); } (@currcoown));
+ } else {
+ $output .= ' '.&mt('Currently no co-owners.');
+ }
+ return $output;
+}
+
+sub coowner_invitations {
+ my ($cnum,$cdom,@currcoown) = @_;
+ my ($output,@pendingcoown,@othercoords);
+ my $pendingcoowners =
+ $env{'course.'.$env{'request.course.id'}.'.internal.pendingco-owners'};
+ if ($pendingcoowners) {
+ @pendingcoown = split(',',$pendingcoowners);
+ }
+ my $ccrole = 'cc';
+ my %ccroles = &Apache::lonnet::get_my_roles($cnum,$cdom,undef,undef,[$ccrole]);
+ foreach my $key (sort(keys(%ccroles))) {
+ my ($ccname,$ccdom,$role) = split(':',$key);
+ next if ($key eq $env{'user.name'}.':'.$env{'user.domain'}.':'.$ccrole);
+ unless (grep(/^\Q$ccname\E:\Q$ccdom\E$/,@currcoown,@pendingcoown)) {
+ push(@othercoords,$ccname.':'.$ccdom);
+ }
+ }
+ my $coowner_rows = @currcoown + @pendingcoown + @othercoords;
+ if ($coowner_rows) {
+ $output .= &Apache::loncommon::start_data_table();
+ if (@currcoown) {
+ $output .= &Apache::loncommon::start_data_table_row().
+ ''.&mt('Current co-owners').' | ';
+ foreach my $person (@currcoown) {
+ my ($co_uname,$co_dom) = split(':',$person);
+ $output .= ''.(' 'x2).' ';
+ }
+ $output .= ' | '.
+ &Apache::loncommon::end_data_table_row();
+ }
+ if ($pendingcoowners) {
+ $output .= &Apache::loncommon::start_data_table_row().
+ ''.&mt('Invited as co-owners [_1](agreement pending)',' ').' | ';
+ foreach my $person (@pendingcoown) {
+ my ($co_uname,$co_dom) = split(':',$person);
+ $output .= ''.(' 'x2).' ';
+ }
+ $output .= ' | '.
+ &Apache::loncommon::end_data_table_row();
+ }
+ if (@othercoords) {
+ $output .= &Apache::loncommon::start_data_table_row().
+ ''.&mt('Invite other Coordinators [_1]to become co-owners',' ').' | ';
+ foreach my $person (@othercoords) {
+ my ($co_uname,$co_dom) = split(':',$person);
+ $output .= ''.(' 'x2).' ';
+ }
+ $output .= ' | '.
+ &Apache::loncommon::end_data_table_row();
+ }
+ $output .= &Apache::loncommon::end_data_table();
+ } else {
+ $output = &mt('There are no coordinators to select as co-owners');
+ }
+ return $output;
+}
+
+sub manage_coownership {
+ my ($cnum,$cdom,@currcoown) = @_;
+ my (@pendingcoown);
+ my $pendingcoowners =
+ $env{'course.'.$env{'request.course.id'}.'.internal.pendingco-owners'};
+ if ($pendingcoowners) {
+ @pendingcoown = split(',',$pendingcoowners);
+ }
+ my ($is_coowner,$is_pending,$output);
+ my $uname = $env{'user.name'};
+ my $udom = $env{'user.domain'};
+ if (grep(/^\Q$uname\E:\Q$udom\E$/,@currcoown)) {
+ $is_coowner = 1;
+ }
+ if (grep(/^\Q$uname\E:\Q$udom\E$/,@pendingcoown)) {
+ $is_pending = 1;
+ }
+ if (@currcoown && ($is_coowner || $is_pending)) {
+ $output = &Apache::loncommon::start_data_table();
+ }
+ if (@currcoown) {
+ if ($is_coowner || $is_pending) {
+ $output .= &Apache::loncommon::start_data_table().
+ &Apache::loncommon::start_data_table_row().'';
+ }
+ $output .= &mt('Current co-owners are:').' '.
+ join(', ', map { &Apache::loncommon::plainname(split(':',$_)); } (@currcoown));
+ if ($is_coowner || $is_pending) {
+ $output .= ' | '.&Apache::loncommon::end_data_table_row();
+ }
+ }
+ if ($is_coowner || $is_pending) {
+ if (@currcoown) {
+ $output .= &Apache::loncommon::start_data_table_row().'';
+ }
+ $output .= '';
+ if ($is_coowner) {
+ $output .= &mt('You are currently a co-owner:').' ';
+ } else {
+ $output .= &mt('The course owner has invited you to become a co-owner:').' '.(' 'x2).
+ '';
+ }
+ $output .= '';
+ if (@currcoown) {
+ $output .= ' | '.&Apache::loncommon::end_data_table_row();
+ }
+ }
+ if (@currcoown && ($is_coowner || $is_pending)) {
+ $output .= &Apache::loncommon::end_data_table();
+ }
+ return $output;
+}
+
sub print_localization {
my ($cdom,$settings,$ordered,$itemtext,$rowtotal) = @_;
unless ((ref($settings) eq 'HASH') && (ref($ordered) eq 'ARRAY') && (ref($itemtext) eq 'HASH')) {
@@ -1608,11 +2281,11 @@ sub print_feedback {
my %sections = &Apache::loncommon::get_sections($cdom,$cnum);
my @sections = sort( { $a <=> $b } keys(%sections));
my %lt = &Apache::lonlocal::texthash (
- currone => 'Current recipient:',
- curmult => 'Current recipients:',
- add => 'Additional recipient:',
- del => 'Delete?',
- sec => 'Sections:',
+ currone => 'Current recipient:',
+ currmult => 'Current recipients:',
+ add => 'Additional recipient:',
+ del => 'Delete?',
+ sec => 'Sections:',
);
foreach my $item (@{$ordered}) {
@@ -1673,7 +2346,7 @@ sub user_table {
if ($num) {
$output .= ''.
'';
- if ($num > 1) {
+ if ($num == 1) {
$output .= $lt->{'currone'};
} else {
$output .= $lt->{'currmult'};
@@ -1753,8 +2426,7 @@ sub print_discussion {
}
my %items = (
'plc.roles.denied' => {
- text => ''.
- &mt($itemtext->{'plc.roles.denied'}).''.
+ text => ''.&mt($itemtext->{'plc.roles.denied'}).''.
&Apache::loncommon::help_open_topic("Course_Disable_Discussion").' '.
&mt('(role-based)'),
input => 'checkbox',
@@ -1767,8 +2439,7 @@ sub print_discussion {
},
'pch.roles.denied' => {
- text => ''.
- &mt($itemtext->{'pch.roles.denied'}).''.
+ text => ''.&mt($itemtext->{'pch.roles.denied'}).''.
&Apache::loncommon::help_open_topic("Course_Disable_Discussion").' '.
&mt('(role-based)'),
input => 'checkbox',
@@ -1795,11 +2466,11 @@ sub print_discussion {
my %sections = &Apache::loncommon::get_sections($cdom,$cnum);
my @sections = sort( { $a <=> $b } keys(%sections));
my %lt = &Apache::lonlocal::texthash (
- currone => 'Disallowed:',
- curmult => 'Disallowed:',
- add => 'Disallow more:',
- del => 'Delete?',
- sec => 'Sections:',
+ currone => 'Disallowed:',
+ currmult => 'Disallowed:',
+ add => 'Disallow more:',
+ del => 'Delete?',
+ sec => 'Sections:',
);
foreach my $item (@{$ordered}) {
@@ -1835,8 +2506,13 @@ sub print_discussion {
}
sub role_checkboxes {
- my ($cdom,$cnum,$item,$settings,$showsections) = @_;
- my @roles = ('st','ad','ta','ep','in','cc');
+ my ($cdom,$cnum,$item,$settings,$showsections,$crstype) = @_;
+ my @roles = ('st','ad','ta','ep','in');
+ if ($crstype eq 'Community') {
+ push(@roles,'co');
+ } else {
+ push(@roles,'cc');
+ }
my $output;
my (@current,@curr_roles,%currsec,@sections);
if ($showsections) {
@@ -1873,7 +2549,7 @@ sub role_checkboxes {
if (grep(/^\Q$role\E$/,@current)) {
$checked = ' checked="checked" ';
}
- my $plrole=&Apache::lonnet::plaintext($role);
+ my $plrole=&Apache::lonnet::plaintext($role,$crstype);
if ($showsections) {
$output .= &Apache::loncommon::start_data_table_row();
} else {
@@ -1885,7 +2561,7 @@ sub role_checkboxes {
$output .= '';
}
}
- $output .= ' | ';
if ($showsections) {
@@ -1917,7 +2593,7 @@ sub role_checkboxes {
$output .= ' ';
}
}
- $output .= ' '.$rolename.
' | ';
if ($showsections) {
@@ -1944,7 +2620,7 @@ sub role_checkboxes {
}
sub print_classlists {
- my ($position,$cdom,$settings,$itemtext,$rowtotal) = @_;
+ my ($position,$cdom,$settings,$itemtext,$rowtotal,$crstype) = @_;
my @ordered;
if ($position eq 'top') {
@ordered = ('default_enrollment_start_date',
@@ -1953,8 +2629,25 @@ sub print_classlists {
@ordered = ('nothideprivileged');
} else {
@ordered = ('student_classlist_view',
- 'student_opt_in','student_classlist_portfiles');
+ 'student_classlist_opt_in',
+ 'student_classlist_portfiles');
+ }
+ my %lt;
+
+ if ($crstype eq 'Community') {
+ %lt = &Apache::lonlocal::texthash (
+ disabled => 'No viewable membership list',
+ section => "Membership of viewer's section",
+ all => 'List of all members',
+ );
+ } else {
+ %lt = &Apache::lonlocal::texthash (
+ disabled => 'No viewable classlist',
+ section => "Classlist of viewer's section",
+ all => 'Classlist of all students',
+ );
}
+
my %items = (
'default_enrollment_start_date' => {
text => ''.&mt($itemtext->{'default_enrollment_start_date'}).'',
@@ -1973,15 +2666,11 @@ sub print_classlists {
'student_classlist_view' => {
text => ''.&mt($itemtext->{'student_classlist_view'}).'',
input => 'selectbox',
- options => {
- disabled => &mt('No viewable classlist'),
- section => &mt("Classlist of viewer's section"),
- all => &mt('Classlist of all students'),
- },
+ options => \%lt,
order => ['disabled','all','section'],
},
- 'student_opt_in' => {
- text => ''.&mt($itemtext->{'student_opt_in'}).'',
+ 'student_classlist_opt_in' => {
+ text => ''.&mt($itemtext->{'student_classlist_opt_in'}).'',
input => 'radio',
},
@@ -1994,14 +2683,20 @@ sub print_classlists {
($settings->{'student_classlist_view'} eq 'section')) {
$settings->{'student_classlist_view'} = 'disabled';
}
- return &make_item_rows($cdom,\%items,\@ordered,$settings,$rowtotal);
+ return &make_item_rows($cdom,\%items,\@ordered,$settings,$rowtotal,$crstype);
}
sub print_appearance {
- my ($cdom,$settings,$ordered,$itemtext,$rowtotal) = @_;
+ my ($cdom,$settings,$ordered,$itemtext,$rowtotal,$crstype) = @_;
unless ((ref($settings) eq 'HASH') && (ref($ordered) eq 'ARRAY') && (ref($itemtext) eq 'HASH')) {
return;
}
+ my $mathdef;
+ if ($crstype eq 'Community') {
+ $mathdef = &mt("None specified - use member's choice");
+ } else {
+ $mathdef = &mt("None specified - use student's choice");
+ }
my %items = (
'default_xml_style' => {
text => ''.&mt($itemtext->{'default_xml_style'}).' '.
@@ -2029,7 +2724,7 @@ sub print_appearance {
tth => &mt('TeX to HTML'),
},
order => ['jsMath','mimetex','tth'],
- nullval => &mt("None specified - use student's choice"),
+ nullval => $mathdef,
},
'tthoptions' => {
text => ''.&mt($itemtext->{'tthoptions'}).'',
@@ -2037,11 +2732,11 @@ sub print_appearance {
size => 40,
},
);
- return &make_item_rows($cdom,\%items,$ordered,$settings,$rowtotal);
+ return &make_item_rows($cdom,\%items,$ordered,$settings,$rowtotal,$crstype);
}
sub print_grading {
- my ($cdom,$settings,$ordered,$itemtext,$rowtotal) = @_;
+ my ($cdom,$settings,$ordered,$itemtext,$rowtotal,$crstype) = @_;
unless ((ref($settings) eq 'HASH') && (ref($ordered) eq 'ARRAY') && (ref($itemtext) eq 'HASH')) {
return;
}
@@ -2052,10 +2747,11 @@ sub print_grading {
input => 'selectbox',
options => {
standard => &mt('Standard: shows points'),
- external => &mt('External: shows number of completed parts'),
+ external => &mt('External: shows number of completed parts and totals'),
+ externalnototals => &mt('External: shows only number of completed parts'),
spreadsheet => &mt('Spreadsheet: (with link to detailed scores)'),
},
- order => ['standard','external','spreadsheet'],
+ order => ['standard','external','externalnototals','spreadsheet'],
},
'rndseed' => {
text => ''.&mt($itemtext->{'rndseed'}).''.
@@ -2089,11 +2785,11 @@ sub print_grading {
input => 'radio',
},
);
- return &make_item_rows($cdom,\%items,$ordered,$settings,$rowtotal);
+ return &make_item_rows($cdom,\%items,$ordered,$settings,$rowtotal,$crstype);
}
sub print_printouts {
- my ($cdom,$settings,$ordered,$itemtext,$rowtotal) = @_;
+ my ($cdom,$settings,$ordered,$itemtext,$rowtotal,$crstype) = @_;
unless ((ref($settings) eq 'HASH') && (ref($ordered) eq 'ARRAY') && (ref($itemtext) eq 'HASH')) {
return;
}
@@ -2132,11 +2828,11 @@ sub print_printouts {
input => 'radio',
},
);
- return &make_item_rows($cdom,\%items,$ordered,$settings,$rowtotal);
+ return &make_item_rows($cdom,\%items,$ordered,$settings,$rowtotal,$crstype);
}
sub print_spreadsheet {
- my ($cdom,$settings,$ordered,$itemtext,$rowtotal) = @_;
+ my ($cdom,$settings,$ordered,$itemtext,$rowtotal,$crstype) = @_;
unless ((ref($settings) eq 'HASH') && (ref($ordered) eq 'ARRAY') && (ref($itemtext) eq 'HASH')) {
return;
}
@@ -2168,21 +2864,29 @@ sub print_spreadsheet {
input => 'radio',
},
);
- return &make_item_rows($cdom,\%items,$ordered,$settings,$rowtotal);
-}
+ return &make_item_rows($cdom,\%items,$ordered,$settings,$rowtotal,$crstype);
+}
sub print_bridgetasks {
- my ($cdom,$settings,$ordered,$itemtext,$rowtotal) = @_;
+ my ($cdom,$settings,$ordered,$itemtext,$rowtotal,$crstype) = @_;
unless ((ref($settings) eq 'HASH') && (ref($ordered) eq 'ARRAY') && (ref($itemtext) eq 'HASH')) {
return;
}
+ my ($stumsg,$msgnote);
+ if ($crstype eq 'Community') {
+ $stumsg = &mt('Send message to member');
+ $msgnote = &mt('Message to member and add to user notes');
+ } else {
+ $stumsg = &mt('Send message to student');
+ $msgnote = &mt('Message to student and add to user notes');
+ }
my %items = (
task_messages => {
text => ''.&mt($itemtext->{'task_messages'}).'',
input => 'selectbox',
options => {
- only_student => &mt('Send message to student'),
- student_and_user_notes_screen => &mt('Message to student and add to user notes'),
+ only_student => $stumsg,
+ student_and_user_notes_screen => $msgnote,
},
order => ['only_student','student_and_user_notes_screen'],
nullval => &mt('No message or record in user notes'),
@@ -2202,11 +2906,11 @@ sub print_bridgetasks {
input => 'radio',
},
);
- return &make_item_rows($cdom,\%items,$ordered,$settings,$rowtotal);
+ return &make_item_rows($cdom,\%items,$ordered,$settings,$rowtotal,$crstype);
}
sub print_other {
- my ($cdom,$settings,$allitems,$rowtotal) = @_;
+ my ($cdom,$settings,$allitems,$rowtotal,$crstype) = @_;
unless ((ref($settings) eq 'HASH') && (ref($allitems) eq 'ARRAY')) {
return;
}
@@ -2227,7 +2931,7 @@ sub print_other {
input => 'textbox',
size => '30',
};
- my $output = &make_item_rows($cdom,\%items,\@ordered,$settings,$rowtotal);
+ my $output = &make_item_rows($cdom,\%items,\@ordered,$settings,$rowtotal,$crstype);
}
sub get_other_items {
@@ -2244,7 +2948,7 @@ sub get_other_items {
unless (($parameter =~ m/^internal\./)||($parameter =~ m/^metadata\./) ||
($parameter =~ m/^selfenroll_/) || ($parameter =~ /_selfenroll$/)
|| ($parameter eq 'type') ||
- ($parameter =~ m/^(cc|in|ta|ep|ad|st)\.plaintext$/)) {
+ ($parameter =~ m/^(cc|co|in|ta|ep|ad|st)\.plaintext$/)) {
push(@ordered,$parameter);
}
}
@@ -2332,7 +3036,7 @@ sub select_from_options {
}
sub make_item_rows {
- my ($cdom,$items,$ordered,$settings,$rowtotal) = @_;
+ my ($cdom,$items,$ordered,$settings,$rowtotal,$crstype) = @_;
my $datatable;
if ((ref($items) eq 'HASH') && (ref($ordered) eq 'ARRAY')) {
my $count = 0;
@@ -2340,7 +3044,7 @@ sub make_item_rows {
$count ++;
$datatable .= &item_table_row_start($items->{$item}{text},$count);
if ($item eq 'nothideprivileged') {
- $datatable .= ¬hidepriv_row($cdom,$item,$settings);
+ $datatable .= ¬hidepriv_row($cdom,$item,$settings,$crstype);
} elsif ($item eq 'print_header_format') {
$datatable .= &print_hdrfmt_row($item,$settings);
} elsif ($items->{$item}{input} eq 'dates') {
@@ -2370,7 +3074,7 @@ sub make_item_rows {
}
sub nothidepriv_row {
- my ($cdom,$item,$settings) = @_;
+ my ($cdom,$item,$settings,$crstype) = @_;
my ($cnum) = &get_course();
my %nothide;
my $datatable;
@@ -2438,7 +3142,11 @@ sub nothidepriv_row {
}
$datatable .= '';
} else {
- $datatable .= &mt('No Domain Coordinators have course roles');
+ if ($crstype eq 'Community') {
+ $datatable .= &mt('No Domain Coordinators have community roles');
+ } else {
+ $datatable .= &mt('No Domain Coordinators have course roles');
+ }
}
return $datatable;
}
@@ -2453,9 +3161,9 @@ sub print_hdrfmt_row {
$currstr .= ''.&mt('Current print header:').' '.
$settings->{$item}.' ';
my @current = split(/(%\d*[nca])/,$settings->{$item});
- foreach my $item (@current) {
- unless ($item eq '') {
- push(@curr,$item);
+ foreach my $val (@current) {
+ unless ($val eq '') {
+ push(@curr,$val);
}
}
$currnum = @curr;
@@ -2542,7 +3250,7 @@ ENDJS
&position_selector($pos,$currnum,$maxnum).
''.&mt('New').''.
&substitution_selector($currnum).' | '.
- ' ';
+ ' | ';
$pos ++;
$currnum ++;
$output .= ''.
@@ -2555,7 +3263,7 @@ ENDJS
''.
' '.
- '';
+ '';
return $output;
}
@@ -2575,14 +3283,22 @@ sub position_selector {
}
sub substitution_selector {
- my ($num,$subst,$limit) = @_;
+ my ($num,$subst,$limit,$crstype) = @_;
+ my ($stunametxt,$crsidtxt);
+ if ($crstype eq 'Community') {
+ $stunametxt = 'member name';
+ $crsidtxt = 'community ID',
+ } else {
+ $stunametxt = 'student name';
+ $crsidtxt = 'course ID',
+ }
my %lt = &Apache::lonlocal::texthash(
- n => 'student name',
- c => 'course ID',
+ n => $stunametxt,
+ c => $crsidtxt,
a => 'assignment note',
);
my $output .= &mt('Substitution').' '.
- ' |