version 1.3, 2016/01/12 19:07:16
|
version 1.7, 2023/11/26 02:11:19
|
Line 28
|
Line 28
|
### |
### |
|
|
package Apache::daxepage; |
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 { |
sub handler { |
my $request = shift; |
my $request = shift; |
my $uri = $request->uri; |
my $uri = $request->uri; |
$uri =~ s/^\/daxepage//; |
$uri =~ s{^/daxepage}{}; |
&Apache::loncommon::no_cache($request); |
&Apache::loncommon::content_type($request,'text/html'); |
if ($uri !~ /\.(task|problem|exam|quiz|assess|survey|library|xml|html|htm|xhtml|xhtm)$/) { |
if ($uri !~ /\.(task|problem|exam|quiz|assess|survey|library|xml|html|htm|xhtml|xhtm)$/) { |
$request->status(406); |
$request->status(406); |
return OK; |
return OK; |
} |
} |
my $result = ''; |
my %editors = &Apache::loncommon::permitted_editors(); |
$result .= "<!DOCTYPE html>\n"; |
unless ($editors{'daxe'}) { |
$result .= "<html>\n"; |
my $msg = '<p class="LC_warning">'. |
$result .= "<head>\n"; |
&mt('Daxe editor is not enabled for this Authoring Space.').'</p>'; |
|
&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; |
my $name = $uri; |
$name =~ s/^.*\/([^\/]+)$/$1/; |
$name =~ s/^.*\/([^\/]+)$/$1/; |
$result .= " <title>LON-CAPA Daxe: $name</title>\n"; |
my $daxeurl = '/adm/daxe/daxe.html?config=config/loncapa_config.xml&save=/daxesave'. |
$result .= " <style>\n"; |
'&file=/daxeopen'.$uri; |
$result .= " body { margin: 0; }\n"; |
my $headjs = &Apache::loncommon::iframe_wrapper_headjs(). |
$result .= " #daxe { position:absolute; top:0; left:0; width:100%; height:100%; border:none; }\n"; |
&toggle_LCmenus_js(); |
$result .= " </style>\n"; |
my $args = { |
$result .= "</head>\n"; |
'collapsible_header' => 1, |
$result .= "<body>\n"; |
}; |
my $daxeurl = '/adm/daxe/daxe.html?config=config/loncapa_config.xml&file=/daxeopen'.$uri. |
my $startpage = &Apache::loncommon::start_page('Daxe: '.$name,$headjs,$args). |
'&save=/daxesave'; |
&Apache::lonmenu::constspaceform(); |
$result .= ' <iframe id="daxe" src="'.$daxeurl.'"></iframe>'."\n"; |
my $endpage = &Apache::loncommon::end_page(); |
$result .= "</body>\n"; |
|
$result .= "</html>\n"; |
# javascript will position the iframe if window was resized (or zoomed) |
$request->print($result); |
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 |
|
<div class="LC_iframecontainer" style="padding-right: 5px"> |
|
<iframe src="$dest">$lt{'noif'} $noiframe</iframe> |
|
</div> |
|
$endpage |
|
ENDFRAME |
return OK; |
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"; |
|
<script type="text/javascript"> |
|
//<![CDATA[ |
|
\$(document).ready (function () { |
|
\$(".LC_collapse_trigger").on("click", function (e) { |
|
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"); |
|
} else { |
|
\$content.removeClass ("hidden"); |
|
\$content.addClass ("shown"); |
|
} |
|
|
|
\$(this).find ("[aria-expanded]") |
|
.attr ("aria-expanded", !expanded); |
|
|
|
\$(this).find ("[aria-pressed]") |
|
.attr ("aria-pressed", !expanded); |
|
|
|
\$(this).find (".LC_collapsible_indicator").attr ({ |
|
"src": |
|
(expanded)? "/res/adm/pages/collapsed.png" : "/res/adm/pages/expanded.png", |
|
"alt": |
|
(expanded)? "$lt{altc}" : "$lt{alte}", |
|
"title": |
|
(expanded)? "$lt{ttlc}" : "$lt{ttle}" |
|
}); |
|
|
|
\$(window).trigger('resize'); |
|
\$(this).focus (); |
|
}); |
|
|
|
\$("#LC_expandingContainer").attr ("aria-live", "off"); |
|
}); |
|
//]]> |
|
</script> |
|
ENDJS |
|
|
|
} |
|
|
|
sub do_redirect { |
|
my ($request,$uri,$msg) = @_; |
|
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
|
$request->print( |
|
&Apache::loncommon::start_page('Authoring Space',undef, |
|
{'redirect' => [2,$uri]}). |
|
|
|
'<div style="padding:0;clear:both;margin:0;border:0"></div>'."\n". |
|
"$msg\n". |
|
&Apache::loncommon::end_page()); |
|
return; |
|
} |
|
|
1; |
1; |
__END__ |
__END__ |