--- loncom/homework/lonhomework.pm 2023/11/07 12:26:00 1.379 +++ loncom/homework/lonhomework.pm 2024/02/21 19:50:21 1.383 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Homework handler # -# $Id: lonhomework.pm,v 1.379 2023/11/07 12:26:00 raeburn Exp $ +# $Id: lonhomework.pm,v 1.383 2024/02/21 19:50:21 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -163,9 +163,19 @@ sub get_target { return ('web','answer'); } elsif (($env{'form.problemmode'} eq 'saveedit') || ($env{'form.problemmode'} eq 'undo')) { - return ('modified','no_output_web','edit'); + my %editors = &Apache::loncommon::permitted_editors(); + if ($editors{'edit'}) { + return ('modified','no_output_web','edit'); + } else { + return ('web'); + } } elsif ($env{'form.problemmode'} eq 'edit') { - return ('no_output_web','edit'); + my %editors = &Apache::loncommon::permitted_editors(); + if ($editors{'edit'}) { + return ('no_output_web','edit'); + } else { + return ('web'); + } } else { return ('web'); } @@ -939,7 +949,7 @@ STATE sub analyze_header { my ($request) = @_; - my $js = &Apache::structuretags::setmode_javascript(); + my $js = &Apache::lonxml::setmode_javascript(); # Breadcrumbs my $text = 'Authoring Space'; @@ -964,18 +974,26 @@ sub analyze_header { {'bread_crumbs' => $brcrum,}) .&Apache::loncommon::head_subbox( &Apache::loncommon::CSTR_pageheader()); + my %lt = &Apache::lonlocal::texthash( + edit => 'Edit', + editxml => 'EditXML', + ); $result .= '
'. ''. &Apache::structuretags::remember_problem_state().' -
- - -
+
'; + my %editors = &Apache::loncommon::permitted_editors(); + foreach my $item ('editxml','edit') { + next unless ($editors{$item}); + $result .= ''. + "\n"; + } + $result .= + '

@@ -1180,7 +1198,7 @@ sub editxmlmode { my $js = &Apache::edit::js_change_detection(). &Apache::loncommon::resize_textarea_js(). - &Apache::structuretags::setmode_javascript(). + &Apache::lonxml::setmode_javascript(). &Apache::lonhtmlcommon::dragmath_js("EditMathPopup"); # Breadcrumbs @@ -1708,7 +1726,13 @@ sub handler { ($env{'form.problemmode'} eq 'saveeditxml') || ($env{'form.problemmode'} eq 'saveviewxml') || ($env{'form.problemmode'} eq 'undoxml')) { - &editxmlmode($request,$file); + my %editors = &Apache::loncommon::permitted_editors(); + if (($editors{'xml'}) || ($env{'form.problemmode'} eq 'saveviewxml') || ($env{'form.problemmode'} eq 'undoxml')) { + &editxmlmode($request,$file); + } else { + &update_construct_style(); + &renderpage($request,$file); + } } elsif ($env{'form.problemmode'} eq 'calcanswers') { &analyze($request,$file); } else { @@ -1965,8 +1989,8 @@ sub do_ltipassback { my $url = $item->{'pburl'}; my $type = $item->{'pbtype'}; my $scope = $item->{'scope'}; - my $map = $item->{'ltimap'}; - my $symb = $item->{'ltisymb'}; + my $map = $item->{'pbmap'}; + my $symb = $item->{'pbsymb'}; my $uname = $item->{'uname'}; my $udom = $item->{'udom'}; my $keynum = $item->{'lti'}->{'cipher'}; @@ -1976,8 +2000,8 @@ sub do_ltipassback { if ($scope eq 'resource') { $total = $item->{'total'}; $possible = $item->{'possible'}; - } elsif ($scope eq 'map') { - ($total,$possible) = &get_lti_score($uname,$udom,$map); + } elsif (($scope eq 'map') || ($scope eq 'nonrec')) { + ($total,$possible) = &get_lti_score($uname,$udom,$map,$scope); } elsif ($scope eq 'course') { ($total,$possible) = &get_lti_score($uname,$udom); } @@ -1992,7 +2016,7 @@ sub do_ltipassback { } sub get_lti_score { - my ($uname,$udom,$mapurl) = @_; + my ($uname,$udom,$mapurl,$scope) = @_; my $navmap = Apache::lonnavmaps::navmap->new($uname,$udom); if (ref($navmap)) { my $iterator; @@ -2000,7 +2024,11 @@ sub get_lti_score { my $map = $navmap->getResourceByUrl($mapurl); my $firstres = $map->map_start(); my $finishres = $map->map_finish(); - $iterator = $navmap->getIterator($firstres,$finishres,undef,1); + my $recursive = 1; + if ($scope eq 'nonrec') { + $recursive = 0; + } + $iterator = $navmap->getIterator($firstres,$finishres,undef,$recursive); } else { $iterator = $navmap->getIterator(undef,undef,undef,1); }