--- loncom/homework/daxepage.pm 2023/08/23 20:58:32 1.5 +++ loncom/homework/daxepage.pm 2023/11/19 21:28:17 1.6 @@ -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.5 2023/08/23 20:58:32 raeburn Exp $ +# $Id: daxepage.pm,v 1.6 2023/11/19 21:28:17 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -30,7 +30,12 @@ package Apache::daxepage; use strict; -use Apache::Constants qw(:common); +use Apache::loncommon(); +use Apache::lonhtmlcommon(); +use Apache::lonmenu(); +use Apache::lonlocal; +use Apache::Constants qw(:common); +use HTML::Entities(); sub handler { my $request = shift; @@ -41,27 +46,109 @@ sub handler { $request->status(406); return OK; } - my $result = ''; - $result .= "\n"; - $result .= "\n"; - $result .= "\n"; + my %editors = &Apache::loncommon::permitted_editors(); + unless ($editors{'daxe'}) { + my $msg = '

'. + &mt('Daxe editor is not enabled for this Authoring Space.').'

'; + &do_redirect($request,$uri,$msg); + return OK; + } + my %lt = &Apache::lonlocal::texthash( + 'noif' => 'No iframe support.', + 'show' => 'Show content in pop-up window', + ); my $name = $uri; $name =~ s/^.*\/([^\/]+)$/$1/; - $result .= " LON-CAPA Daxe: $name\n"; - $result .= " \n"; - $result .= "\n"; - $result .= "\n"; - my $daxeurl = '/adm/daxe/daxe.html?config=config/loncapa_config.xml&file=/daxeopen'.$uri. - '&save=/daxesave'; - $result .= ' '."\n"; - $result .= "\n"; - $result .= "\n"; - $request->print($result); + 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(); + my $args = { + 'collapsible_header' => 1, + }; + my $startpage = &Apache::loncommon::start_page('Daxe: '.$name,$headjs,$args). + &Apache::lonmenu::constspaceform(); + my $endpage = &Apache::loncommon::end_page(); + + # javascript will position the iframe if window was resized (or zoomed) + my $script = &Apache::loncommon::iframe_wrapper_resizejs(); + my $dest = &HTML::Entities::encode($daxeurl,'&<>"'); + my $noiframe = &Apache::loncommon::modal_link($dest,$lt{'show'},500,400); + + $request->print(<<"ENDFRAME"); +$startpage +$script +
+ +
+$endpage +ENDFRAME return OK; } +sub toggle_LCmenus_js { + my %lt = &Apache::lonlocal::texthash( + altc => 'menu state: collapsed', + alte => 'menu state: explanded', + ttlc => 'display standard menus', + ttle => 'hide standard menus', + ); + return <<"ENDJS"; + +ENDJS + +} + +sub do_redirect { + my ($request,$uri,$msg) = @_; + &Apache::lonhtmlcommon::clear_breadcrumbs(); + $request->print( + &Apache::loncommon::start_page('Authoring Space',undef, + {'redirect' => [2,$uri]}). + + '
'."\n". + "$msg\n". + &Apache::loncommon::end_page()); + return; +} + 1; __END__