--- loncom/interface/lonmodifycourse.pm 2011/01/15 18:24:16 1.59 +++ loncom/interface/lonmodifycourse.pm 2013/03/01 05:01:26 1.60 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # handler for DC-only modifiable course settings # -# $Id: lonmodifycourse.pm,v 1.59 2011/01/15 18:24:16 raeburn Exp $ +# $Id: lonmodifycourse.pm,v 1.60 2013/03/01 05:01:26 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -39,18 +39,22 @@ use lib '/home/httpd/lib/perl'; use LONCAPA; sub get_dc_settable { - my ($type) = @_; + my ($type,$cdom) = @_; if ($type eq 'Community') { return ('courseowner'); } else { - return ('courseowner','coursecode','authtype','autharg'); + my @items = ('courseowner','coursecode','authtype','autharg'); + if (&showcredits($cdom)) { + push(@items,'defaultcredits'); + } + return @items; } } sub autoenroll_keys { - my $internals = ['coursecode','courseowner','authtype','autharg','autoadds','autodrops', - 'autostart','autoend','sectionnums','crosslistings', - 'co-owners']; + my $internals = ['coursecode','courseowner','authtype','autharg','defaultcredits', + 'autoadds','autodrops','autostart','autoend','sectionnums', + 'crosslistings','co-owners']; my $accessdates = ['default_enrollment_start_date','default_enrollment_end_date']; return ($internals,$accessdates); } @@ -114,6 +118,10 @@ sub get_enrollment_settings { || $type eq "autharg" || $type eq "coursecode" || $type eq "crosslistings") { $enrollvar{$type} = $settings{$item}; + } elsif ($type eq 'defaultcredits') { + if (&showcredits($cdom)) { + $enrollvar{$type} = $settings{$item}; + } } elsif ($type eq 'courseowner') { if ($settings{$item} =~ /^[^:]+:[^:]+$/) { $enrollvar{$type} = $settings{$item}; @@ -225,7 +233,11 @@ sub print_modification_menu { } else { $categorytitle = 'View/Modify Course Settings'; $setquota_text = &mt('Total disk space allocated for storage of portfolio files in all groups in a course.'); - $setparams_text = 'View/Modify course owner, institutional code, and default authentication'; + if (&showcredits($dom)) { + $setparams_text = 'View/Modify course owner, institutional code, and default authentication and credits'; + } else { + $setparams_text = 'View/Modify course owner, institutional code, and default authentication'; + } $cat_text = 'View/Modify catalog settings for course'; } my $anon_text = 'Responder threshold required to display anonymous survey submissions'; @@ -300,6 +312,9 @@ sub print_modification_menu { } else { $menu_html .= '
  • '.&mt('Course owner (permitted to assign Course Coordinator roles in the course).').'
  • '. '
  • '.&mt("Institutional code and default authentication (both required for auto-enrollment of students from institutional datafeeds).").'
  • '; + if (&showcredits($dom)) { + $menu_html .= '
  • '.&mt('Default credits earned by student on course completion.').'
  • '; + } } $menu_html .= '
  • '.$setquota_text.'
  • '. '
  • '.$anon_text.'
  • '."\n"; @@ -357,7 +372,7 @@ sub print_settings_display { } my $cctitle = &Apache::lonnet::plaintext($ccrole,$type); my $dctitle = &Apache::lonnet::plaintext('dc'); - my @modifiable_params = &get_dc_settable($type); + my @modifiable_params = &get_dc_settable($type,$cdom); my ($internals,$accessdates) = &autoenroll_keys(); my @items; if ((ref($internals) eq 'ARRAY') && (ref($accessdates) eq 'ARRAY')) { @@ -389,9 +404,13 @@ sub print_settings_display { ' '.$cdesc.''. '
    '."\n". '

    '.$lt{'cose'}.'

    '. + '
  • '.&mt('Settings modifiable by a [_1] via the [_2]Automated Enrollment Manager[_3] in a course.',$cctitle,'','').'
  • '); + if (&showcredits($cdom)) { + $r->print('
  • '.&mt('Settings modifiable by a [_1] via [_2]View/Modify course owner, institutional code, and default authentication and credits[_3].',$dctitle,'','')."\n"); + } else { + $r->print('
  • '.&mt('Settings modifiable by a [_1] via [_2]View/Modify course owner, institutional code, and default authentication[_3].',$dctitle,'','')."\n"); + } + $r->print('
  • '. '

    '.$lt{'cour'}.'

    '.$disp_table.'

    '. ''.$lt{'back'}.''."\n". &hidden_form_elements(). @@ -639,14 +658,21 @@ sub print_course_modification_page { &Apache::loncommon::help_open_topic('Modify_Course_Instcode'). ' '.&mt('Course Code'))."\n". ''. - &Apache::lonhtmlcommon::row_closure(). - &Apache::lonhtmlcommon::row_title( - &Apache::loncommon::help_open_topic('Modify_Course_Defaultauth'). - ' '.&mt('Default Authentication method'))."\n". - $authenitems."\n". - &Apache::lonhtmlcommon::row_closure(). - &Apache::lonhtmlcommon::row_title( - &Apache::loncommon::help_open_topic('Modify_Course_Owner'). + &Apache::lonhtmlcommon::row_closure()); + if (&showcredits($cdom)) { + $r->print(&Apache::lonhtmlcommon::row_title( + &Apache::loncommon::help_open_topic('Modify_Course_Credithours'). + ' '.&mt('Credits (students)'))."\n". + ''. + &Apache::lonhtmlcommon::row_closure()); + } + $r->print(&Apache::lonhtmlcommon::row_title( + &Apache::loncommon::help_open_topic('Modify_Course_Defaultauth'). + ' '.&mt('Default Authentication method'))."\n". + $authenitems."\n". + &Apache::lonhtmlcommon::row_closure(). + &Apache::lonhtmlcommon::row_title( + &Apache::loncommon::help_open_topic('Modify_Course_Owner'). ' '.&mt('Course Owner'))."\n"); } $r->print($ownertable."\n".&Apache::lonhtmlcommon::row_closure(1). @@ -657,7 +683,7 @@ sub print_course_modification_page { } else { $r->print('javascript:verify_message(this.form);"'); } - $r->print('value="'.$lt{'gobt'}.'" />

    '); + $r->print(' value="'.$lt{'gobt'}.'" />

    '); return; } @@ -718,12 +744,15 @@ sub modify_course { unless ($type eq 'Community') { push(@items,('internal.coursecode','internal.authtype','internal.autharg', 'internal.sectionnums','internal.crosslistings')); + if (&showcredits($cdom)) { + push(@items,'internal.defaultcredits'); + } } my %settings = &Apache::lonnet::get('environment',\@items,$cdom,$cnum); my $description = $settings{'description'}; - my ($ccrole,$response,$chgresponse,$nochgresponse,$reply,%currattr,%newattr,%cenv,%changed, - @changes,@nochanges,@sections,@xlists,@warnings); - my @modifiable_params = &get_dc_settable($type); + my ($ccrole,$response,$chgresponse,$nochgresponse,$reply,%currattr,%newattr, + %cenv,%changed,@changes,@nochanges,@sections,@xlists,@warnings); + my @modifiable_params = &get_dc_settable($type,$cdom); foreach my $param (@modifiable_params) { $currattr{$param} = $settings{'internal.'.$param}; } @@ -742,7 +771,7 @@ sub modify_course { $sections[0] = $settings{'internal.sectionnums'}; } } - unless ($settings{'internal.crosslistings'} eq'') { + unless ($settings{'internal.crosslistings'} eq '') { if ($settings{'internal.crosslistings'} =~ m/,/) { @xlists = split/,/,$settings{'internal.crosslistings'}; } else { @@ -781,6 +810,12 @@ sub modify_course { $changed{'code'} = 1; } } + + if (&showcredits($cdom) && exists($env{'form.defaultcredits'})) { + $newattr{'defaultcredits'} =~ s/[^\d\.]//g; + $newattr{'defaultcredits'}=$env{'form.defaultcredits'}; + } + } if ( exists($env{'form.courseowner'}) ) { @@ -1345,7 +1380,7 @@ sub print_header { $phase = $env{'form.phase'}; } my $js = qq| - + |; if ($phase eq 'setparms') { - $js .= qq| - -|; + $js .= $javascript_validations; } elsif ($phase eq 'courselist') { $js .= qq| - + +function hide_searching() { + if (document.getElementById('searching')) { + document.getElementById('searching').style.display = 'none'; + } + return; +} + |; } elsif ($phase eq 'setquota') { my $invalid = &mt('The quota you entered contained invalid characters.'); my $alert = &mt('You must enter a number'); my $regexp = '/^\s*(\d+\.?\d*|\.\d+)\s*$/'; $js .= <<"ENDSCRIPT"; - + ENDSCRIPT } elsif ($phase eq 'setanon') { my $invalid = &mt('The responder threshold you entered is invalid.'); my $alert = &mt('You must enter a positive integer.'); my $regexp = ' /^\s*\d+\s*$/'; $js .= <<"ENDSCRIPT"; - + ENDSCRIPT } + my $starthash; if ($env{'form.phase'} eq 'ccrole') { $starthash = { add_entries => {'onload' => "javascript:document.ccrole.submit();"}, }; + } elsif ($phase eq 'courselist') { + $starthash = { + add_entries => {'onload' => "hide_searching();"}, + }; } $r->print(&Apache::loncommon::start_page('View/Modify Course/Community Settings', - $js,$starthash)); + &Apache::lonhtmlcommon::scripttag($js), + $starthash)); my $bread_text = "View/Modify Courses/Communities"; if ($type eq 'Community') { $bread_text = 'Community Settings'; @@ -1497,6 +1541,7 @@ sub course_settings_descrip { 'notifylist' => 'Course Coordinators to be notified of enrollment changes', 'sectionnums' => 'Course section number:LON-CAPA section', 'crosslistings' => 'Crosslisted class:LON-CAPA section', + 'defaultcredits' => 'Credits', ); } return %longtype; @@ -1507,11 +1552,19 @@ sub hidden_form_elements { &Apache::lonhtmlcommon::echo_form_input(['gosearch','updater','coursecode', 'prevphase','numlocalcc','courseowner','login','coursequota','intarg', 'locarg','krbarg','krbver','counter','hidefromcat','usecategory', - 'threshold'])."\n". + 'threshold','defaultcredits'])."\n". ''; return $hidden_elements; } +sub showcredits { + my ($dom) = @_; + my %domdefaults = &Apache::lonnet::get_domain_defaults($dom); + if ($domdefaults{'officialcredits'} || $domdefaults{'unofficialcredits'}) { + return 1; + } +} + sub handler { my $r = shift; if ($r->header_only) {