--- loncom/homework/daxepage.pm 2023/11/19 21:28:17 1.6 +++ loncom/homework/daxepage.pm 2023/11/27 23:24:04 1.9 @@ -1,7 +1,7 @@ # The LearningOnline Network # Page with Daxe on the left side and the preview on the right side # -# $Id: daxepage.pm,v 1.6 2023/11/19 21:28:17 raeburn Exp $ +# $Id: daxepage.pm,v 1.9 2023/11/27 23:24:04 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -32,9 +32,12 @@ use strict; use Apache::loncommon(); use Apache::lonhtmlcommon(); +use Apache::lonxml(); +use Apache::edit(); use Apache::lonmenu(); use Apache::lonlocal; use Apache::Constants qw(:common); +use LONCAPA qw(:DEFAULT :match); use HTML::Entities(); sub handler { @@ -42,7 +45,15 @@ sub handler { my $uri = $request->uri; $uri =~ s{^/daxepage}{}; &Apache::loncommon::content_type($request,'text/html'); - if ($uri !~ /\.(task|problem|exam|quiz|assess|survey|library|xml|html|htm|xhtml|xhtm)$/) { + my ($is_not_assess,$is_assess); + if ($uri =~/\.(xml|html|htm|xhtml|xhtm)$/) { + $is_not_assess = 1; + } elsif ($uri =~ /$LONCAPA::assess_re/) { + unless ($uri =~ /\.form$/) { + $is_assess = 1; + } + } + unless ($is_not_assess || $is_assess) { $request->status(406); return OK; } @@ -53,18 +64,61 @@ sub handler { &do_redirect($request,$uri,$msg); return OK; } + if ($is_not_assess) { + delete($editors{'xml'}); + $editors{'edit'} = 1; + } my %lt = &Apache::lonlocal::texthash( 'noif' => 'No iframe support.', 'show' => 'Show content in pop-up window', + 'oeds' => 'other editors', + 'othe' => 'other editor', + 'edit' => 'Edit', ); my $name = $uri; $name =~ s/^.*\/([^\/]+)$/$1/; my $daxeurl = '/adm/daxe/daxe.html?config=config/loncapa_config.xml&save=/daxesave'. '&file=/daxeopen'.$uri; my $headjs = &Apache::loncommon::iframe_wrapper_headjs(). - &toggle_LCmenus_js(); + &toggle_LCmenus_js(). + &Apache::edit::js_change_detection(); + if ($is_assess) { + $headjs .= &Apache::lonxml::setmode_javascript(); + } else { + $headjs .= &Apache::lonxml::seteditor_javascript(); + } + my $form_events = &Apache::edit::form_change_detection(); + my $editheader = '
'."\n"; my $args = { - 'collapsible_header' => 1, + 'collapsible_header' => $editheader, }; my $startpage = &Apache::loncommon::start_page('Daxe: '.$name,$headjs,$args). &Apache::lonmenu::constspaceform(); @@ -101,7 +155,6 @@ sub toggle_LCmenus_js { var id = this.id; var \$content = \$(this).next (".LC_menus_content"); var expanded = \$content.hasClass ("shown"); - var frameleftpos; if (expanded) { \$content.removeClass ("shown"); \$content.addClass ("hidden"); @@ -122,7 +175,7 @@ sub toggle_LCmenus_js { "alt": (expanded)? "$lt{altc}" : "$lt{alte}", "title": - (expanded)? "$lt{ttlc}" : "$lt(ttle}" + (expanded)? "$lt{ttlc}" : "$lt{ttle}" }); \$(window).trigger('resize');