# 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 $ # # Copyright Michigan State University Board of Trustees # # This file is part of the LearningOnline Network with CAPA (LON-CAPA). # # LON-CAPA is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # LON-CAPA is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with LON-CAPA; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # /home/httpd/html/adm/gpl.txt # # http://www.lon-capa.org/ # ### package Apache::daxepage; use strict; 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}{}; &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 %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/; 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__