--- loncom/homework/daxepage.pm 2023/11/27 23:24:04 1.9 +++ loncom/homework/daxepage.pm 2024/03/23 23:11:52 1.12 @@ -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.9 2023/11/27 23:24:04 raeburn Exp $ +# $Id: daxepage.pm,v 1.12 2024/03/23 23:11:52 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -31,6 +31,7 @@ package Apache::daxepage; use strict; use Apache::loncommon(); +use Apache::lonnet(); use Apache::lonhtmlcommon(); use Apache::lonxml(); use Apache::edit(); @@ -71,31 +72,50 @@ sub handler { my %lt = &Apache::lonlocal::texthash( 'noif' => 'No iframe support.', 'show' => 'Show content in pop-up window', + 'save' => 'Save', 'oeds' => 'other editors', 'othe' => 'other editor', - 'edit' => 'Edit', + 'edit' => 'Save and Edit', + 'disc' => 'Discard and View', + 'save' => 'Save and View', ); my $name = $uri; $name =~ s/^.*\/([^\/]+)$/$1/; + my $filearg = '/daxeopen'.$uri; my $daxeurl = '/adm/daxe/daxe.html?config=config/loncapa_config.xml&save=/daxesave'. - '&file=/daxeopen'.$uri; + '&file='.$filearg; my $headjs = &Apache::loncommon::iframe_wrapper_headjs(). - &toggle_LCmenus_js(). + &listener_js($filearg). + &toggle_LCmenus_js().&saveandview_js(). &Apache::edit::js_change_detection(); + + my ($clickexit,$clicksave,$clickedit); if ($is_assess) { $headjs .= &Apache::lonxml::setmode_javascript(); + $clickexit = "javascript:setmode(this.form,'view');"; } else { $headjs .= &Apache::lonxml::seteditor_javascript(); + $clickexit = "javascript:seteditmode(this.form,'view');"; } + $clicksave = "javascript:daxesave('exit');"; + $clickedit = "javascript:daxesave();"; my $form_events = &Apache::edit::form_change_detection(); my $editheader = '
'. ''."\n". '
'."\n"; + my $saveeditbutton = ''."\n"; + my $exitbutton = ''."\n"; + my $saveexitbutton = ''."\n"; + $editheader .= '
'. + $uri.''. + $saveeditbutton.$saveexitbutton.$exitbutton.''; if ($editors{'edit'} || $editors{'xml'}) { my $other = (($editors{'edit'} && $editors{'xml'})? $lt{'oeds'} : $lt{'othe'}); - $editheader .= '
'. - $uri. - ''.$other.': '; + $editheader .= '  |  '.$other.': '. + ''; if ($is_not_assess) { $editheader .= ''."\n". ''."\n"; } } - $editheader .= '
'; - } else { - $editheader .= '
'. - $uri. - '
'; + $editheader .= ''; } - $editheader .= ''."\n"; + $editheader .= '
'."\n"; + my $start_collapsed = &collapsible_std_LCmenus(); my $args = { 'collapsible_header' => $editheader, + 'start_collapsed' => $start_collapsed, }; my $startpage = &Apache::loncommon::start_page('Daxe: '.$name,$headjs,$args). &Apache::lonmenu::constspaceform(); @@ -133,13 +151,57 @@ sub handler { $startpage $script
- +
$endpage ENDFRAME return OK; } +sub listener_js { + my ($filearg) = @_; + return <<"ENDJS"; + +ENDJS + +} + +sub saveandview_js { + return <<"ENDJS"; + + +ENDJS +} + sub toggle_LCmenus_js { my %lt = &Apache::lonlocal::texthash( altc => 'menu state: collapsed', @@ -203,5 +265,19 @@ sub do_redirect { return; } +sub collapsible_std_LCmenus { + my $daxecollapse = $Apache::lonnet::env{'environment.daxecollapse'}; + unless ($daxecollapse) { + my %domdefs = &Apache::lonnet::get_domain_defaults($Apache::lonnet::env{'user.domain'}); + if ($domdefs{'daxecollapse'}) { + $daxecollapse = 'yes'; + } + } + if ($daxecollapse eq 'yes') { + return 1; + } + return; +} + 1; __END__