--- loncom/interface/courseprefs.pm 2022/01/16 23:34:19 1.49.2.28.2.2 +++ loncom/interface/courseprefs.pm 2013/11/23 20:33:58 1.61 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set configuration settings for a course # -# $Id: courseprefs.pm,v 1.49.2.28.2.2 2022/01/16 23:34:19 raeburn Exp $ +# $Id: courseprefs.pm,v 1.61 2013/11/23 20:33:58 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -137,7 +137,7 @@ whether Domain coordinators who are curr advanced course user .db file for a course are to be hidden (e.g., in syllabus, or from course user lists). -Inputs: $cdom,$item,$settings,$crstype,$noedit +Inputs: $cdom,$item,$settings,$crstype where $cdom is course domain, item is nothideprivileged, $settings is HASH ref of the current values for nothideprivileged, $crstype is course type (Course or Community). @@ -215,15 +215,10 @@ use Apache::lonnet; use Apache::loncommon(); use Apache::lonhtmlcommon(); use Apache::lonconfigsettings; -use Apache::lonrelrequtils; use Apache::lonparmset; -use Apache::courseclassifier; use Apache::lonlocal; use LONCAPA qw(:DEFAULT :match); -my $registered_cleanup; -my $modified_courses; - sub handler { my $r=shift; if ($r->header_only) { @@ -233,11 +228,11 @@ sub handler { } my $context = 'course'; my $cid = $env{'request.course.id'}; - my ($cnum,$cdom,$chome) = &get_course($cid); + my ($cnum,$cdom) = &get_course($cid); my $crstype = &Apache::loncommon::course_type(); - my ($parm_permission,$allowed) = &get_permission($cid); + my $parm_permission = &Apache::lonnet::allowed('opa',$cid); my $navmap = Apache::lonnavmaps::navmap->new(); - if ($allowed && $navmap) { + if ($parm_permission && $navmap) { &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; } else { @@ -262,9 +257,6 @@ sub handler { return HTTP_NOT_ACCEPTABLE; } - $registered_cleanup=0; - @{$modified_courses}=(); - &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['phase','actions','origin']); &Apache::lonhtmlcommon::clear_breadcrumbs(); @@ -280,7 +272,6 @@ sub handler { edit => 'Edit Community Settings', gens => 'General community settings', idnu => 'Community ID or number', - unco => 'Unique code', desc => 'Community Description', ownr => 'Community Owner', cown => 'Community Co-owners', @@ -308,9 +299,8 @@ sub handler { edit => 'Edit Course Settings', gens => 'General course settings', idnu => 'Course ID or number', - unco => 'Unique code', desc => 'Course Description', - cred => 'Student credits', + cred => 'Student credits', ownr => 'Course Owner', cown => 'Course Co-owners', catg => 'Categorize course', @@ -344,59 +334,43 @@ sub handler { $phase = $env{'form.phase'}; } - if (($phase eq 'categorizecourse') && ($parm_permission->{'categorizecourse'})) { + if ($phase eq 'categorizecourse') { &assign_course_categories($r,$crstype); return OK; } - if (($phase eq 'releaseinfo') && ($parm_permission->{'releaseinfo'})) { + if ($phase eq 'releaseinfo') { my $loncaparev = $env{'course.'.$cid.'.internal.releaserequired'}; if ($loncaparev) { - if (&display_loncaparev_constraints($r,$navmap,$loncaparev,$crstype)) { - push(@{$modified_courses},[$cdom,$cnum,$chome,$crstype]); - unless ($registered_cleanup) { - my $handlers = $r->get_handlers('PerlCleanupHandler'); - $r->set_handlers('PerlCleanupHandler' => [\&update_releasereq,@{$handlers}]); - $registered_cleanup=1; - } - } + &display_loncaparev_constraints($r,$navmap,$loncaparev,$crstype); return OK; } } my %values=&Apache::lonnet::dump('environment',$cdom,$cnum); - my %courselti=&Apache::lonnet::dump('lti',$cdom,$cnum,undef,undef,undef,1); - if ($courselti{'lock'}) { - delete($courselti{'lock'}); - } - $values{'linkprotection'} = \%courselti; my @prefs_order = ('courseinfo','localization','feedback','discussion', 'classlists','appearance','grading','printouts', - 'menuitems','linkprotection','spreadsheet','bridgetasks', - 'other'); + 'spreadsheet','bridgetasks','other'); my %prefs = ( 'courseinfo' => { text => $lt{'gens'}, help => 'Course_Prefs_General', ordered => ['owner','co-owners','loncaparev','description', - 'clonedfrom','courseid','uniquecode','categories', - 'hidefromcat','syllabus','cloners','url', - 'rolenames'], + 'courseid','categories','hidefromcat', + 'externalsyllabus','cloners','url','rolenames'], itemtext => { 'owner' => $lt{'ownr'}, 'co-owners' => $lt{'cown'}, 'description' => $lt{'desc'}, 'courseid' => $lt{'idnu'}, - 'uniquecode' => $lt{'unco'}, 'categories' => $lt{'catg'}, 'hidefromcat' => $lt{'excc'}, 'cloners' => $lt{'clon'}, - 'syllabus' => 'Syllabus status', + 'externalsyllabus' => 'Syllabus status', 'url' => 'Top Level Map', 'rolenames' => $lt{'rept'}, 'loncaparev' => $lt{'lcrv'}, - 'clonedfrom' => 'Cloned from', }, }, 'localization' => @@ -470,16 +444,13 @@ sub handler { help => 'Course_Prefs_Display', ordered => ['default_xml_style','pageseparators', 'disable_receipt_display','texengine', - 'tthoptions','uselcmath','usejsme','inline_chem'], + 'tthoptions'], itemtext => { default_xml_style => 'Default XML style file', pageseparators => 'Visibly Separate Items on Pages', disable_receipt_display => 'Disable display of problem receipts', texengine => 'Force use of a specific math rendering engine', tthoptions => 'Default set of options to pass to tth/m when converting TeX', - uselcmath => 'Student formula entry uses inline preview, not DragMath pop-up', - usejsme => 'Molecule editor uses JSME (HTML5) in place of JME (Java)', - inline_chem => 'Chemical reaction response uses inline preview, not pop-up', }, }, 'grading' => @@ -500,7 +471,7 @@ sub handler { help => 'Course_Prefs_Printouts', ordered => ['problem_stream_switch','suppress_tries', 'default_paper_size','print_header_format', - 'disableexampointprint'], + 'disableexampointprint','canuse_pdfforms'], itemtext => { problem_stream_switch => 'Allow problems to be split over pages', suppress_tries => 'Suppress number of tries in printing', @@ -534,29 +505,6 @@ sub handler { suppress_embed_prompt => 'Hide upload references prompt if uploading file to portfolio', }, }, - 'menuitems' => - { - text => 'Menu display', - help => 'Course_Prefs_Menus', - header => [{col1 => 'Default Menu', - col2 => 'Value',}, - {col1 => 'Menu collections', - col2 => 'Settings', - }], - ordered => ['menudefault','menucollections'], - itemtext => { - menudefault => 'Choose default collection of menu items for course', - menucollections => 'Menu collections', - }, - }, - 'linkprotection' => - { - text => 'Link protection', - help => 'Course_Prefs_Linkprotection', - header => [{col1 => 'Item', - col2 => 'Settings', - }], - }, 'other' => { text => 'Other settings', help => 'Course_Prefs_Other', @@ -565,58 +513,23 @@ sub handler { }], }, ); - if (($phase eq 'process') && ($parm_permission->{'process'})) { + if ($phase eq 'process') { my @allitems = &get_allitems(%prefs); &Apache::lonconfigsettings::make_changes($r,$cdom,$phase,$context, \@prefs_order,\%prefs,\%values, - $cnum,undef,\@allitems, - 'coursepref',$parm_permission); - } elsif (($phase eq 'display') && ($parm_permission->{'display'})) { - my $noedit; - if (ref($parm_permission) eq 'HASH') { - unless ($parm_permission->{'process'}) { - $noedit = 1; - } - } - my $jscript = &get_jscript($cid,$cdom,$phase,$crstype,\%values,$noedit); + $cnum,undef,\@allitems,'coursepref'); + } elsif ($phase eq 'display') { + my $jscript = &get_jscript($cid,$cdom,$phase,$crstype); my @allitems = &get_allitems(%prefs); &Apache::lonconfigsettings::display_settings($r,$cdom,$phase,$context, - \@prefs_order,\%prefs,\%values,undef,$jscript,\@allitems,$crstype, - 'coursepref',$parm_permission); + \@prefs_order,\%prefs,\%values,undef,$jscript,\@allitems,$crstype,'coursepref'); } else { &Apache::lonconfigsettings::display_choices($r,$phase,$context, - \@prefs_order,\%prefs, - 'coursepref',$parm_permission); + \@prefs_order,\%prefs,'coursepref'); } return OK; } -sub get_permission { - my ($cid) = @_; - my %permission; - my $allowed = 0; - return (\%permission,$allowed) unless ($cid); - if (&Apache::lonnet::allowed('opa',$cid)) { - %permission= ( - 'pickactions' => 1, - 'categorizecourse' => 1, - 'releaseinfo' => 1, - 'process' => 1, - 'display' => 1, - ); - } elsif (&Apache::lonnet::allowed('vpa',$env{'request.course.id'})) { - %permission = ( - 'pickactions' => 1, - 'releaseinfo' => 1, - 'display' => 1, - ); - } - foreach my $perm (values(%permission)) { - if ($perm) { $allowed=1; last; } - } - return (\%permission,$allowed); -} - sub get_allitems { my (%prefs) = @_; my @allitems; @@ -634,15 +547,9 @@ sub get_allitems { } sub print_config_box { - my ($r,$cdom,$phase,$action,$item,$settings,$allitems,$crstype,$parm_permission) = @_; + my ($r,$cdom,$phase,$action,$item,$settings,$allitems,$crstype) = @_; my $ordered = $item->{'ordered'}; my $itemtext = $item->{'itemtext'}; - my $noedit; - if (ref($parm_permission) eq 'HASH') { - unless ($parm_permission->{'process'}) { - $noedit = 1; - } - } my $rowtotal = 0; my $output = ' @@ -655,7 +562,7 @@ sub print_config_box { } $output .= ''."\n". ''; - if (($action eq 'feedback') || ($action eq 'classlists') || ($action eq 'menuitems')) { + if (($action eq 'feedback') || ($action eq 'classlists')) { $output .= '
@@ -677,11 +584,9 @@ sub print_config_box { } $rowtotal ++; if ($action eq 'feedback') { - $output .= &print_feedback('top',$cdom,$settings,$ordered,$itemtext,\$rowtotal,$noedit); + $output .= &print_feedback('top',$cdom,$settings,$ordered,$itemtext,\$rowtotal); } elsif ($action eq 'classlists') { - $output .= &print_classlists('top',$cdom,$settings,$itemtext,\$rowtotal,$crstype,$noedit); - } elsif ($action eq 'menuitems') { - $output .= &print_menuitems('top',$cdom,$settings,$itemtext,\$rowtotal,$crstype,$noedit); + $output .= &print_classlists('top',$cdom,$settings,$itemtext,\$rowtotal,$crstype); } $output .= '
@@ -702,7 +607,7 @@ sub print_config_box { $output .= &mt($item->{'header'}->[1]->{'col2'}).' '; if ($action eq 'classlists') { - $output .= &print_classlists('middle',$cdom,$settings,$itemtext,\$rowtotal,$crstype,$noedit). + $output .= &print_classlists('middle',$cdom,$settings,$itemtext,\$rowtotal,$crstype). ' @@ -741,31 +646,27 @@ sub print_config_box { } $rowtotal ++; if ($action eq 'courseinfo') { - $output .= &print_courseinfo($cdom,$settings,$ordered,$itemtext,\$rowtotal,$crstype,$noedit); + $output .= &print_courseinfo($cdom,$settings,$ordered,$itemtext,\$rowtotal,$crstype); } elsif ($action eq 'localization') { - $output .= &print_localization($cdom,$settings,$ordered,$itemtext,\$rowtotal,$noedit); + $output .= &print_localization($cdom,$settings,$ordered,$itemtext,\$rowtotal); } elsif ($action eq 'feedback') { - $output .= &print_feedback('bottom',$cdom,$settings,$ordered,$itemtext,\$rowtotal,$noedit); + $output .= &print_feedback('bottom',$cdom,$settings,$ordered,$itemtext,\$rowtotal); } elsif ($action eq 'discussion') { - $output .= &print_discussion($cdom,$settings,$ordered,$itemtext,\$rowtotal,$noedit); + $output .= &print_discussion($cdom,$settings,$ordered,$itemtext,\$rowtotal); } elsif (($action eq 'classlists') || ($action eq 'viewableroster')) { - $output .= &print_classlists('bottom',$cdom,$settings,$itemtext,\$rowtotal,$crstype,$noedit); + $output .= &print_classlists('bottom',$cdom,$settings,$itemtext,\$rowtotal,$crstype); } elsif ($action eq 'appearance') { - $output .= &print_appearance($cdom,$settings,$ordered,$itemtext,\$rowtotal,$crstype,$noedit); + $output .= &print_appearance($cdom,$settings,$ordered,$itemtext,\$rowtotal,$crstype); } elsif ($action eq 'grading') { - $output .= &print_grading($cdom,$settings,$ordered,$itemtext,\$rowtotal,$crstype,$noedit); + $output .= &print_grading($cdom,$settings,$ordered,$itemtext,\$rowtotal,$crstype); } elsif ($action eq 'printouts') { - $output .= &print_printouts($cdom,$settings,$ordered,$itemtext,\$rowtotal,$crstype,$noedit); + $output .= &print_printouts($cdom,$settings,$ordered,$itemtext,\$rowtotal,$crstype); } elsif ($action eq 'spreadsheet') { - $output .= &print_spreadsheet($cdom,$settings,$ordered,$itemtext,\$rowtotal,$crstype,$noedit); + $output .= &print_spreadsheet($cdom,$settings,$ordered,$itemtext,\$rowtotal,$crstype); } elsif ($action eq 'bridgetasks') { - $output .= &print_bridgetasks($cdom,$settings,$ordered,$itemtext,\$rowtotal,$crstype,$noedit); - } elsif ($action eq 'menuitems') { - $output .= &print_menuitems('bottom',$cdom,$settings,$itemtext,\$rowtotal,$crstype,$noedit); - } elsif ($action eq 'linkprotection') { - $output .= &print_linkprotection($cdom,$settings,\$rowtotal,$crstype,$noedit); + $output .= &print_bridgetasks($cdom,$settings,$ordered,$itemtext,\$rowtotal,$crstype); } elsif ($action eq 'other') { - $output .= &print_other($cdom,$settings,$allitems,\$rowtotal,$crstype,$noedit); + $output .= &print_other($cdom,$settings,$allitems,\$rowtotal,$crstype); } $output .= ' @@ -776,8 +677,8 @@ sub print_config_box { } sub process_changes { - my ($cdom,$cnum,$action,$values,$item,$changes,$allitems,$disallowed,$crstype) = @_; - my (%newvalues,%courselti,$errors); + my ($cdom,$action,$values,$item,$changes,$allitems,$disallowed,$crstype) = @_; + my %newvalues; if (ref($item) eq 'HASH') { if (ref($changes) eq 'HASH') { my @ordered; @@ -794,21 +695,6 @@ sub process_changes { } } } - } elsif ($action eq 'linkprotection') { - if (ref($values->{'linkprotection'}) eq 'HASH') { - foreach my $id (keys(%{$values->{'linkprotection'}})) { - if ($id =~ /^\d+$/) { - push(@ordered,$id); - unless (ref($values->{'linkprotection'}->{$id}) eq 'HASH') { - $courselti{$id} = ''; - } - } - } - } - @ordered = sort { $a <=> $b } @ordered; - if (($env{'form.linkprot_add'}) && ($env{'form.linkprot_maxnum'} =~ /^\d+$/)) { - push(@ordered,$env{'form.linkprot_maxnum'}); - } } elsif (ref($item->{'ordered'}) eq 'ARRAY') { if ($action eq 'courseinfo') { my ($can_toggle_cat,$can_categorize) = @@ -819,9 +705,7 @@ sub process_changes { next if (($entry eq 'categories') && (!$can_categorize)); next if (($entry eq 'loncaparev') || - ($entry eq 'owner') || - ($entry eq 'clonedfrom') || - ($entry eq 'syllabus')); + ($entry eq 'owner')); push(@ordered,$entry); } } elsif ($action eq 'classlists') { @@ -871,152 +755,6 @@ sub process_changes { $changes->{$ext_entry} = $newvalues{$ext_entry}; } } - } elsif ($action eq 'menuitems') { - my (%current,@colls); - my $next = 1; - if ($values->{'menucollections'}) { - foreach my $item (split(/;/,$values->{'menucollections'})) { - my ($num,$value) = split(/\%/,$item); - if ($num =~ /^\d+$/) { - unless (grep(/^$num$/,@colls)) { - push(@colls,$num); - } - my @entries = split(/\&/,$value); - foreach my $entry (@entries) { - my ($name,$fields) = split(/=/,$entry); - $current{$num}{$name} = $fields; - } - } - } - } - if (@colls) { - @colls = sort { $a <=> $b } @colls; - $next += $colls[-1]; - } - if ($env{'form.menucollections_add'} eq $next) { - push(@colls,$next); - } - my $currdef = $values->{'menudefault'}; - my $possdef = $env{'form.menudefault'}; - if (($possdef =~ /^\d+$/) && (grep(/^$possdef$/,@colls))) { - if ($currdef ne $possdef) { - $changes->{'menudefault'} = $possdef; - } - } elsif ($currdef) { - $changes->{'menudefault'} = ''; - } - my $menucoll; - if (@colls) { - my ($ordered,$cats) = &menuitems_categories(); - my %shortcats = &menuitems_abbreviations(); - foreach my $num (@colls) { - my ($entry,%include); - map { $include{$_}= 1; } &Apache::loncommon::get_env_multiple('form.menucollections_'.$num); - foreach my $item (@{$ordered}) { - if ($item eq 'shown') { - foreach my $type (@{$cats->{$item}}) { - $entry .= $type.'='; - if ($include{$type}) { - $entry .= 'y'; - } else { - $entry .= 'n'; - } - $entry .= '&'; - } - } else { - $entry .= $shortcats{$item}.'='; - foreach my $type (@{$cats->{$item}}) { - if ($include{$type}) { - $entry .= $type.','; - } - } - $entry =~ s/,$//; - $entry .= '&'; - } - } - $entry =~ s/\&$//; - if ($menucoll) { - $menucoll .= ';'; - } - $menucoll .= $num.'%'.$entry; - } - if ($menucoll ne $values->{'menucollections'}) { - $changes->{'menucollections'} = $menucoll; - } - } elsif ($values->{'menucollections'}) { - $changes->{'menucollections'} = ''; - } - } elsif ($action eq 'linkprotection') { - my %menutitles = <imenu_titles(); - my (@items,%deletions,%itemids,%haschanges); - if ($env{'form.linkprot_add'}) { - my $name = $env{'form.linkprot_name_add'}; - $name =~ s/(`)/'/g; - my ($newid,$error) = &get_courselti_id($cdom,$cnum,$name); - if ($newid) { - $itemids{'add'} = $newid; - push(@items,'add'); - $haschanges{$newid} = 1; - } else { - $errors .= ''. - &mt('Failed to acquire unique ID for link protection'). - ''; - } - } - if (ref($values->{'linkprotection'}) eq 'HASH') { - my @todelete = &Apache::loncommon::get_env_multiple('form.linkprot_del'); - my $maxnum = $env{'form.linkprot_maxnum'}; - for (my $i=0; $i<=$maxnum; $i++) { - my $itemid = $env{'form.linkprot_id_'.$i}; - $itemid =~ s/\D+//g; - if ($itemid) { - if (ref($values->{'linkprotection'}->{$itemid}) eq 'HASH') { - push(@items,$i); - $itemids{$i} = $itemid; - if ((@todelete > 0) && (grep(/^$i$/,@todelete))) { - $deletions{$itemid} = $values->{'linkprotection'}->{$itemid}->{'name'}; - } - } - } - } - } - foreach my $idx (@items) { - my $itemid = $itemids{$idx}; - next unless ($itemid); - if (exists($deletions{$itemid})) { - $courselti{$itemid} = $deletions{$itemid}; - $haschanges{$itemid} = 1; - next; - } - my %current; - if (ref($values->{'linkprotection'}) eq 'HASH') { - if (ref($values->{'linkprotection'}->{$itemid}) eq 'HASH') { - foreach my $key (keys(%{$values->{'linkprotection'}->{$itemid}})) { - $current{$key} = $values->{'linkprotection'}->{$itemid}->{$key}; - } - } - } - foreach my $inner ('name','key','secret','lifetime','version') { - my $formitem = 'form.linkprot_'.$inner.'_'.$idx; - $env{$formitem} =~ s/(`)/'/g; - if ($inner eq 'lifetime') { - $env{$formitem} =~ s/[^\d.]//g; - } - unless ($idx eq 'add') { - if ($current{$inner} ne $env{$formitem}) { - $haschanges{$itemid} = 1; - } - } - if ($env{$formitem} ne '') { - $courselti{$itemid}{$inner} = $env{$formitem}; - } - } - } - if (keys(%haschanges)) { - foreach my $entry (keys(%haschanges)) { - $changes->{$entry} = $courselti{$entry}; - } - } } else { foreach my $entry (@ordered) { if ($entry eq 'cloners') { @@ -1026,7 +764,7 @@ sub process_changes { my @clonedoms; if (exists($env{'form.cloners_activate'})) { my $actnum = $env{'form.cloners_activate'}; - if ($actnum ne '-1') { + if ($actnum ne '') { if ($env{'form.cloners_dom_'.$actnum} ne '') { my $clonedom = $env{'form.cloners_dom_'.$actnum}; if (&check_clone($clonedom,$disallowed) eq 'ok') { @@ -1044,7 +782,7 @@ sub process_changes { my $clonedom = $env{'form.cloners_dom_'.$i}; if (&check_clone($clonedom,$disallowed) eq 'ok') { if (!grep(/^\*:\Q$clonedom\E$/,@clonedoms)) { - push(@clonedoms,'*:'.$clonedom); + push (@clonedoms,'*:'.$clonedom); } } } @@ -1057,7 +795,7 @@ sub process_changes { my $clonedom = $env{'form.cloners_newdom'}; if (&check_clone($clonedom,$disallowed) eq 'ok') { my $newdom = '*:'.$env{'form.cloners_newdom'}; - if (@clonedoms) { + if (@clonedoms) { if (!grep(/^\Q$newdom\E$/,@clonedoms)) { $newvalues{$entry} .= ','.$newdom; } @@ -1090,37 +828,6 @@ sub process_changes { } } } - if (ref($values) eq 'HASH') { - my (@code_order,%codedefaults); - &Apache::lonnet::auto_instcode_defaults($cdom,\%codedefaults, - \@code_order); - my $clonebycode; - if ($env{'form.cloners_instcode'}) { - if (@code_order > 0) { - my @standardnames = &Apache::loncommon::get_standard_codeitems(); - my %local_to_standard; - for (my $i=0; $i<@code_order; $i++) { - $local_to_standard{$code_order[$i]} = $standardnames[$i]; - } - foreach my $item (@code_order) { - my $key = $local_to_standard{$item}; - if ($key ne '') { - if ($env{'form.'.$key}) { - $clonebycode .= $key.'='.&escape($env{'form.'.$key}).'&'; - } - } - } - $clonebycode =~ s/\&$//; - } - } - if ($clonebycode) { - if ($newvalues{$entry}) { - $newvalues{$entry} .= ','.$clonebycode; - } else { - $newvalues{$entry} = $clonebycode; - } - } - } } if (ref($disallowed) eq 'HASH') { if (ref($disallowed->{'cloners'}) eq 'HASH') { @@ -1146,9 +853,7 @@ sub process_changes { $autocoowner = $domconf{'autoenroll'}{'co-owners'}; } } - if ($autocoowner) { - $newvalues{'co-owners'} = $values->{'internal.co-owners'}; - } else { + unless ($autocoowner) { my @keepcoowners = &Apache::loncommon::get_env_multiple('form.coowners'); my @pendingcoowners = &Apache::loncommon::get_env_multiple('form.pendingcoowners'); my @invitecoowners = &Apache::loncommon::get_env_multiple('form.invitecoowners'); @@ -1172,19 +877,19 @@ sub process_changes { my $udom = $env{'user.domain'}; my $pendingcoowners = $values->{'internal.pendingco-owners'}; my @pendingcoown = split(',',$pendingcoowners); - if ($env{'form.pending_coowner'}) { + if ($env{'form.pending_coowoner'}) { foreach my $item (@pendingcoown) { unless ($item eq $uname.':'.$udom) { push(@newpending,$item); } } @newcoown = @currcoown; - if ($env{'form.pending_coowner'} eq 'accept') { + if ($env{'form.pending_coowoner'} eq 'accept') { unless (grep(/^\Q$uname\E:\Q$udom\E$/,@currcoown)) { push(@newcoown,$uname.':'.$udom); } } - } elsif ($env{'form.remove_coowner'}) { + } elsif ($env{'form.remove_coowoner'}) { foreach my $item (@currcoown) { unless ($item eq $uname.':'.$udom) { push(@newcoown,$item); @@ -1193,8 +898,6 @@ sub process_changes { if ($pendingcoowners ne '') { @newpending = @pendingcoown; } - } else { - @newcoown = @currcoown; } $newvalues{'pendingco-owners'} = join(',',sort(@newpending)); $newvalues{'co-owners'} = join(',',sort(@newcoown)); @@ -1324,14 +1027,14 @@ sub process_changes { my ($classorder,$classtitles) = &discussion_vote_classes(); my $fontchange = 0; foreach my $class (@{$classorder}) { - my $ext_entry = $entry.'_'.$class; + my $ext_entry = $entry.'_'.$class; my $size = $env{'form.'.$ext_entry.'_size'}; my $unit = $env{'form.'.$ext_entry.'_unit'}; my $weight = $env{'form.'.$ext_entry.'_weight'}; my $style = $env{'form.'.$ext_entry.'_style'}; my $other = $env{'form.'.$ext_entry.'_other'}; $size =~ s/,//g; - $unit =~ s/,//g; + $unit =~ s/,//g; $weight =~ s/,//g; $style =~ s/,//g; $other =~ s/[^\w;:\s\-\%.]//g; @@ -1339,7 +1042,7 @@ sub process_changes { $newvalues{$ext_entry} = join(',',($size.$unit,$weight,$style,$other)); my $current = $values->{$ext_entry}; if ($values->{$ext_entry} eq '') { - $current = ',,,'; + $current = ',,,'; } if ($newvalues{$ext_entry} ne $current) { $changes->{$ext_entry} = $newvalues{$ext_entry}; @@ -1348,7 +1051,7 @@ sub process_changes { } if ($fontchange) { $changes->{$entry} = 1; - } + } } elsif ($entry eq 'nothideprivileged') { my @curr_nothide; my @new_nothide; @@ -1423,7 +1126,7 @@ sub process_changes { my $newtext = $maxnum-1; $newhdr[$env{'form.printfmthdr_pos_'.$newtext}] = $env{'form.printfmthdr_text_'.$newtext}; $newvalues{$entry} = join('',@newhdr); - } elsif (($entry eq 'languages') || + } elsif (($entry eq 'languages') || ($entry eq 'checkforpriv')) { my $settings; my $total = $env{'form.'.$entry.'_total'}; @@ -1439,7 +1142,7 @@ sub process_changes { } if ($env{'form.'.$entry.'_'.$total} ne '') { my $new = $env{'form.'.$entry.'_'.$total}; - if ($entry eq 'languages') { + if ($entry eq 'languages') { my %langchoices = &get_lang_choices(); if ($langchoices{$new}) { $settings .= $new; @@ -1473,51 +1176,7 @@ sub process_changes { } } } - return $errors; -} - -sub get_courselti_id { - my ($cdom,$cnum,$name) = @_; - # get lock on lti db in course - my $lockhash = { - lock => $env{'user.name'}. - ':'.$env{'user.domain'}, - }; - my $tries = 0; - my $gotlock = &Apache::lonnet::newput('lti',$lockhash,$cdom,$cnum); - my ($id,$error); - while (($gotlock ne 'ok') && ($tries<10)) { - $tries ++; - sleep (0.1); - $gotlock = &Apache::lonnet::newput('lti',$lockhash,$cdom,$cnum); - } - if ($gotlock eq 'ok') { - my %currids = &Apache::lonnet::dump('lti',$cdom,$cnum,undef,undef,undef,1); - if ($currids{'lock'}) { - delete($currids{'lock'}); - if (keys(%currids)) { - my @curr = sort { $a <=> $b } keys(%currids); - if ($curr[-1] =~ /^\d+$/) { - $id = 1 + $curr[-1]; - } else { - $id = 1; - } - } else { - $id = 1; - } - if ($id) { - unless (&Apache::lonnet::newput('lti',{ $id => $name },$cdom,$cnum) eq 'ok') { - $error = 'nostore'; - } - } else { - $error = 'nonumber'; - } - } - my $dellockoutcome = &Apache::lonnet::del('lti',['lock'],$cdom,$cnum); - } else { - $error = 'nolock'; - } - return ($id,$error); + return; } sub get_sec_str { @@ -1562,12 +1221,8 @@ sub check_clone { sub store_changes { my ($cdom,$cnum,$prefs_order,$actions,$prefs,$values,$changes,$crstype) = @_; my ($chome,$output); - my (%storehash,@delkeys,@need_env_update,@oldcloner,%oldlinkprot); + my (%storehash,@delkeys,@need_env_update,@oldcloner); if ((ref($values) eq 'HASH') && (ref($changes) eq 'HASH')) { - if (ref($values->{'linkprotection'}) eq 'HASH') { - %oldlinkprot = %{$values->{'linkprotection'}}; - } - delete($values->{'linkprotection'}); %storehash = %{$values}; } else { if ($crstype eq 'Community') { @@ -1577,20 +1232,6 @@ sub store_changes { } return $output; } - my ($numchanges,$skipstore); - if (ref($changes) eq 'HASH') { - $numchanges = scalar(keys(%{$changes})); - if (($numchanges == 1) && (exists($changes->{'linkprotection'}))) { - $skipstore = 1; - } elsif (!$numchanges) { - if ($crstype eq 'Community') { - $output = &mt('No changes made to community settings.'); - } else { - $output = &mt('No changes made to course settings.'); - } - return $output; - } - } my %yesno = ( hidefromcat => '1', problem_stream_switch => '1', @@ -1603,7 +1244,7 @@ sub store_changes { if (grep(/^\Q$item\E$/,@{$actions})) { $output .= '

'.&mt($prefs->{$item}{'text'}).'

'; if (ref($changes->{$item}) eq 'HASH') { - if ((keys(%{$changes->{$item}}) > 0) || ($item eq 'linkprotection')) { + if (keys(%{$changes->{$item}}) > 0) { $output .= &mt('Changes made:').'