--- loncom/homework/daxepage.pm	2023/11/27 23:24:04	1.9
+++ loncom/homework/daxepage.pm	2024/03/03 18:16:27	1.11
@@ -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.11 2024/03/03 18:16:27 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();
@@ -74,6 +75,7 @@ sub handler {
                                           'oeds' => 'other editors',
                                           'othe' => 'other editor',
                                           'edit' => 'Edit',
+                                          'exit' => 'Exit Daxe',
                                         );
     my $name = $uri;
     $name =~ s/^.*\/([^\/]+)$/$1/;
@@ -82,15 +84,20 @@ sub handler {
     my $headjs = &Apache::loncommon::iframe_wrapper_headjs().
                  &toggle_LCmenus_js().
                  &Apache::edit::js_change_detection();
+    my $clickexit; 
     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')";
     }
     my $form_events = &Apache::edit::form_change_detection();
     my $editheader = '<form '.$form_events.' method="post" name="daxeedit" action="'.$uri.'">'.
                      '<input type="hidden" name="problemmode" value="daxe" />'."\n".
                      '<div class="LC_edit_problem_editxml_header">'."\n";
+    my $exitbutton = '<input type="button" name="submitmode" accesskey="t" value="'.$lt{'exit'}.
+                     '" onclick="'.$clickexit.'" />'."\n";
     if ($editors{'edit'} || $editors{'xml'}) {
         my $other = (($editors{'edit'} && $editors{'xml'})? $lt{'oeds'} : $lt{'othe'});
         $editheader .= '<table class="LC_edit_problem_header_title"><tr><td>'.
@@ -110,15 +117,18 @@ sub handler {
                                'onclick="javascript:setmode(this.form,'."'editxml'".')" />'."\n";
             }
         }
-        $editheader .= '</span></td></tr></table>';
+        $editheader .= '&nbsp;&nbsp;|&nbsp;&nbsp;'.$exitbutton.'</span></td></tr></table>';
     } else {
         $editheader .= '<table class="LC_edit_problem_header_title"><tr><td>'.
                        $uri.
-                       '</td></tr></table>';
+                       '</td><td align="right"><span class="LC_nobreak">'.
+                       $exitbutton.'</span></td></tr></table>';
     }
     $editheader .= '</div></form>'."\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();
@@ -203,5 +213,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__