--- loncom/interface/lonmodifycourse.pm 2023/07/29 20:33:25 1.101 +++ loncom/interface/lonmodifycourse.pm 2023/08/03 15:57:23 1.102 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # handler for DC-only modifiable course settings # -# $Id: lonmodifycourse.pm,v 1.101 2023/07/29 20:33:25 raeburn Exp $ +# $Id: lonmodifycourse.pm,v 1.102 2023/08/03 15:57:23 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -411,7 +411,8 @@ sub get_filters { sub print_modification_menu { my ($r,$cdesc,$domdesc,$dom,$type,$cid,$coursehash,$permission) = @_; &print_header($r,$type); - my ($ccrole,$categorytitle,$setquota_text,$setuploadquota_text,$cdom,$cnum); + my ($ccrole,$categorytitle,$setquota_text,$setuploadquota_text,$cdom,$cnum, + $extendedtype); if (ref($coursehash) eq 'HASH') { $cdom = $coursehash->{'domain'}; $cnum = $coursehash->{'num'}; @@ -446,11 +447,11 @@ sub print_modification_menu { if ($type eq 'Community') { if ($permission->{'setparms'} eq 'edit') { $categorytitle = 'View/Modify Community Settings'; - $linktext{'setparms'} = 'View/Modify community owner'; + $linktext{'setparms'} = 'View/Modify community owner, self-enrollment and table lifetime'; $linktext{'catsettings'} = 'View/Modify catalog settings for community'; } else { $categorytitle = 'View Community Settings'; - $linktext{'setparms'} = 'View community owner'; + $linktext{'setparms'} = 'View community owner, self-enrollment and table lifetime'; $linktext{'catsettings'} = 'View catalog settings for community'; } $setquota_text = &mt('Total disk space allocated for storage of portfolio files in all groups in a community.'); @@ -475,6 +476,9 @@ sub print_modification_menu { } $setquota_text = &mt('Total disk space allocated for storage of portfolio files in all groups in a course.'); $setuploadquota_text = &mt('Disk space allocated for storage of content uploaded directly to a course via Content Editor.'); + my %settings = &Apache::lonnet::get('environment',['internal.coursecode','internal.textbook'], + $cdom,$cnum); + $extendedtype = ucfirst(&Apache::lonuserutils::get_extended_type($cdom,$cnum,$type,\%settings)); } my $anon_text = &mt('Responder threshold required to display anonymous survey submissions.'); my $postsubmit_text = &mt('Override defaults for submit button behavior post-submission for this specific course.'); @@ -582,64 +586,19 @@ sub print_modification_menu { }, ); - my $menu_html = + $r->print( '

' - .&mt('View/Modify settings for: [_1]', - ''.$cdesc.'') - .'

'."\n".'

'; - if ($type eq 'Community') { - $menu_html .= &mt('Although almost all community settings can be modified by a Coordinator, the following may only be set or modified by a Domain Coordinator:'); - } else { - $menu_html .= &mt('Although almost all course settings can be modified by a Course Coordinator, the following may only be set or modified by a Domain Coordinator:'); + .&mt($type).': '.$cdesc.'' + .''."\n"); + if ($extendedtype) { + $r->print('

'.&mt('Type').': '.&mt("$extendedtype $type").'

'); } - $menu_html .= '

'."\n".'' - .'
' + $r->print( + '' ."\n" - .&hidden_form_elements(); - - $r->print($menu_html); - $r->print(&Apache::lonhtmlcommon::generate_menu(@menu)); - $r->print('
'); + .&hidden_form_elements() + .&Apache::lonhtmlcommon::generate_menu(@menu) + .''); return; } @@ -757,30 +716,32 @@ sub print_settings_display { $setparms_link_start = ''; $setparms_link_end = ''; } - $r->print('

'.&mt('Current automated enrollment settings for:'). - ' '.$cdesc.'

'. + $r->print('

'.&mt('Current automated enrollment settings').'

'."\n". + '

'.&mt($type).': '.$cdesc.'

'."\n". '
'."\n". - '

'.$lt{'cose'}.'

'. + $lt{'cour'}.'

'.$disp_table.'

'."\n". + &hidden_form_elements().'

'. + ''."\n"); + my @actions = + (''. + $lt{'back'}.''); + $r->print('
'.&Apache::lonhtmlcommon::actionbox(\@actions)); } sub print_setquota { my ($r,$cdom,$cnum,$cdesc,$type,$readonly) = @_; my $lctype = lc($type); - my $headline = &mt("Set disk space quotas for $lctype: [_1]", - ''.$cdesc.''); + my $headline = '

'.&mt("Set disk space quotas for $lctype").'

'."\n". + '

'.&mt($type).': '.$cdesc.'

'."\n"; my %lt = &Apache::lonlocal::texthash( 'gpqu' => 'Disk space for storage of group portfolio files', 'upqu' => 'Disk space for storage of content directly uploaded to course via Content Editor', @@ -822,8 +783,8 @@ sub print_setquota { $submit = ''; } $r->print(< -

$headline

$porthelpitem $lt{'gpqu'}: MB @@ -836,9 +797,12 @@ $uploadhelpitem $lt{'upqu'}: $hidden_elements -$lt{'back'} ENDDOCUMENT + my @actions = + (''. + $lt{'back'}.''); + $r->print('
'.&Apache::lonhtmlcommon::actionbox(\@actions)); return; } @@ -873,17 +837,21 @@ sub print_set_anonsurvey_threshold { $submit = ''; } my $helpitem = &Apache::loncommon::help_open_topic('Modify_Anonsurvey_Threshold'); + my $showtype = &mt($type); $r->print(<$lt{'resp'} +

$showtype: $cdesc

-

$lt{'resp'} $cdesc

-$helpitem $lt{'sufa'}:      +$helpitem $lt{'sufa'}:     

$submit -

$hidden_elements -$lt{'back'}
ENDDOCUMENT + my @actions = + (''. + $lt{'back'}.''); + $r->print('

'.&Apache::lonhtmlcommon::actionbox(\@actions)); return; } @@ -936,25 +904,30 @@ sub print_postsubmit_config { $submit = ''; } my $helpitem = &Apache::loncommon::help_open_topic('Modify_Postsubmit_Config'); + my $showtype = &mt($type); $r->print(<$lt{'conf'} +

$showtype: $cdesc

-

$lt{'conf'} ($cdesc)

$helpitem $lt{'disa'}:    +$lt{'no'}

$lt{'nums'}
$zero
-
+

$submit

$hidden_elements -$lt{'back'}
ENDDOCUMENT + my @actions = + (''. + $lt{'back'}.''); + $r->print('
'.&Apache::lonhtmlcommon::actionbox(\@actions)); return; } @@ -1010,8 +983,9 @@ sub print_catsettings { $lt{'categ'} = &mt('Categorize Community'); $lt{'assi'} = &mt('Assign one or more subcategories to this community.'); } - $r->print('
'. - '

'.$lt{'catset'}.' '.$cdesc.'

'); + $r->print('

'.$lt{'catset'}.'

'."\n". + '

'.&mt($type).': '.$cdesc.'

'."\n". + ''."\n"); my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$cdom); my @cat_params = &catalog_settable($domconf{'coursecategories'},$type); if (@cat_params > 0) { @@ -1029,40 +1003,55 @@ sub print_catsettings { $excludeoff = ''; } $r->print('

'.$lt{'visi'}.'

'. + '

'. $lt{'exclude'}. - '    

'); + '    

'); if ($type eq 'Community') { - $r->print(&mt("If a community has been categorized using at least one of the categories defined for communities in the domain, it will be listed in the domain's publicly accessible Course/Community Catalog, unless excluded.")); + $r->print(&mt("If a community has been categorized using at least one of the categories defined for communities in the domain, it will be listed in the domain's publicly accessible Course/Community Catalog, unless excluded.").'

'); } elsif ($type eq 'Placement') { - $r->print(&mt("If a placement test has been categorized using at least one of the categories defined for placement tests in the domain, it will be listed in the domain's publicly accessible Course/Community Catalog, unless excluded.")); + $r->print(&mt("If a placement test has been categorized using at least one of the categories defined for placement tests in the domain, it will be listed in the domain's publicly accessible Course/Community Catalog, unless excluded.").'

'); } else { - $r->print(&mt("Unless excluded, a course will be listed in the domain's publicly accessible Course/Community Catalog, if at least one of the following applies").':
    '. + $r->print(&mt("Unless excluded, a course will be listed in the domain's publicly accessible Course/Community Catalog, if at least one of the following applies").':

      '. '
    • '.&mt('Auto-cataloging is enabled and the course is assigned an institutional code.').'
    • '. '
    • '.&mt('The course has been categorized using at least one of the course categories defined for the domain.').'
    '); } - $r->print('

'); } + my $savebutton; + unless ($readonly) { + $savebutton = '


'; + } + my $shownsave; if (grep(/^categorize$/,@cat_params)) { - $r->print('

'.$lt{'categ'}.'

'); + my $categheader = '

'.$lt{'categ'}.'

'; if (ref($domconf{'coursecategories'}) eq 'HASH') { my $cathash = $domconf{'coursecategories'}{'cats'}; if (ref($cathash) eq 'HASH') { - $r->print($lt{'assi'}.'

'. + $r->print($categheader. + '

'.$lt{'assi'}.'

'. &Apache::loncommon::assign_categories_table($cathash, $currsettings{'categories'},$type,$disabled)); } else { - $r->print(&mt('No categories defined for this domain')); + $r->print($savebutton.$categheader. + '

'.&mt('No categories defined for this domain.')); + $shownsave = 1; } } else { - $r->print(&mt('No categories defined for this domain')); + $r->print($savebutton.$categheader. + '

'.&mt('No categories defined for this domain.')); + $shownsave = 1; } - unless (($type eq 'Community') || ($type eq 'Placement')) { - $r->print('

'.&mt('If auto-cataloging based on institutional code is enabled in the domain, a course will continue to be listed in the catalog of official courses, in addition to receiving a listing under any manually assigned categor(ies).').'

'); + if (($type eq 'Community') || ($type eq 'Placement')) { + $r->print('

'); + } elsif ($shownsave) { + $r->print('
'.&mt('If auto-cataloging based on institutional code is enabled in the domain, a course will continue to be listed in the catalog of official courses.').'

'); + } else { + $r->print('

'.&mt('If auto-cataloging based on institutional code is enabled in the domain, a course will continue to be listed in the catalog of official courses, in addition to receiving a listing under any manually assigned categor(ies).').'

'); } } - unless ($readonly) { - $r->print('

'); + unless ($readonly || $shownsave) { + $r->print($savebutton); } } else { $r->print(''); @@ -1071,11 +1060,13 @@ sub print_catsettings { } else { $r->print(&mt('Catalog settings in this domain are set in course context via "Course Configuration".')); } - $r->print('

'."\n". - ''. - $lt{'back'}.''); + $r->print(''."\n"); } $r->print(&hidden_form_elements().'
'."\n"); + my @actions = + (''. + $lt{'back'}.''); + $r->print('
'.&Apache::lonhtmlcommon::actionbox(\@actions)); return; } @@ -1170,10 +1161,14 @@ sub print_course_modification_page { } &print_header($r,$crstype,$javascript_validations); my $dctitle = &Apache::lonnet::plaintext('dc'); - my $mainheader = &modifiable_only_title($crstype); my $hidden_elements = &hidden_form_elements(); - $r->print('
'."\n". - '

'.$mainheader.' '.$cdesc.'

'. + my $showtype; + if (($type eq 'official') || ($type eq 'unofficial') || ($type eq 'textbook')) { + $showtype = ' ('.&mt($type).')'; + } + $r->print('

'.&modifiable_only_title($crstype).'

'."\n". + '

'.&mt($crstype).': '.$cdesc.$showtype.'


'."\n". + ''."\n". &Apache::lonhtmlcommon::start_pick_box()); if ($crstype eq 'Community') { $r->print(&Apache::lonhtmlcommon::row_title( @@ -1211,7 +1206,7 @@ sub print_course_modification_page { &Apache::loncommon::help_open_topic('Modify_Course_Chgpasswd'). ' '.&mt('Changing passwords (internal)'))."\n". '