--- loncom/homework/daxepage.pm 2016/02/14 16:07:13 1.4
+++ 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.4 2016/02/14 16:07:13 raeburn Exp $
+# $Id: daxepage.pm,v 1.6 2023/11/19 21:28:17 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -28,39 +28,127 @@
###
package Apache::daxepage;
+use strict;
-use Apache::Constants;
+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;
my $uri = $request->uri;
- $uri =~ s/^\/daxepage//;
+ $uri =~ s{^/daxepage}{};
&Apache::loncommon::content_type($request,'text/html');
if ($uri !~ /\.(task|problem|exam|quiz|assess|survey|library|xml|html|htm|xhtml|xhtm)$/) {
$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__