[LON-CAPA-cvs] cvs: loncom /interface lonparmset.pm

raeburn raeburn at source.lon-capa.org
Mon Jun 30 17:12:21 EDT 2025


raeburn		Mon Jun 30 21:12:21 2025 EDT

  Modified files:              
    /loncom/interface	lonparmset.pm 
  Log:
  - Edit Resource Parameters - Overview Mode.
    - Client-side javascript function: validateParms() is called when form
      submission is via "Save", but not when submission is via "Display".
    - "Save" is not shown if no parameters available to set, based on choices
      made for level, parameters and parts to view.
  
  
Index: loncom/interface/lonparmset.pm
diff -u loncom/interface/lonparmset.pm:1.623 loncom/interface/lonparmset.pm:1.624
--- loncom/interface/lonparmset.pm:1.623	Mon Jun 30 20:29:03 2025
+++ loncom/interface/lonparmset.pm	Mon Jun 30 21:12:21 2025
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Handler to set parameters for assessments
 #
-# $Id: lonparmset.pm,v 1.623 2025/06/30 20:29:03 raeburn Exp $
+# $Id: lonparmset.pm,v 1.624 2025/06/30 21:12:21 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -6396,7 +6396,8 @@
     $r->print($start_page.$breadcrumbs);
     &startSettingsScreen($r,'parmset',$crstype);
     $r->print(<<ENDOVER);
-<form method="post" action="/adm/parmset?action=newoverview" name="parmform" onsubmit="return validateParms();">
+<form method="post" action="/adm/parmset?action=newoverview" name="parmform" id="newoverviewform">
+<input type="hidden" name="newoverviewsubm" value="dis" id="newoverviewsubm" />
 ENDOVER
     my @ids=();
     my %typep=();
@@ -6504,7 +6505,7 @@
     &sortmenu($r,$sortorder,'newoverview');
     $r->print('</div></div>');
 
-    $r->print('<p><input type="submit" name="dis" value="'.&mt('Display').'" /></p>');
+    $r->print('<p><input type="submit" name="dis" value="'.&mt('Display').'" id="newoverviewdis" /></p>');
 
 # Build the list data hash from the specified parms
 
@@ -6516,9 +6517,10 @@
         &secgroup_lister($cat,$pschp,$parmlev,$listdata,\@psprt,\@selected_groups,\%defkeytype,\%allmaps,\@ids,\%symbp);
     }
 
-    if (($env{'form.store'}) || ($env{'form.dis'})) {
+    my $foundkeys;
+    if ($env{'form.newoverviewsubm'}) {
 
-        if ($env{'form.store'}) { &storedata($r,$crs,$dom); }
+        if ($env{'form.newoverviewsubm'} eq 'store') { &storedata($r,$crs,$dom); }
 
 # Read modified data
 
@@ -6534,13 +6536,76 @@
                 $hash_for_realm->{$symbp{$ids[$i]}} = $i;
             }
         }
-        &listdata($r,$resourcedata,$listdata,$sortorder,'newoverview',undef,$readonly,$parmlev,$hash_for_realm,$pschp);
+        $foundkeys = &listdata($r,$resourcedata,$listdata,$sortorder,'newoverview',undef,$readonly,$parmlev,$hash_for_realm,$pschp);
     }
     $r->print(&tableend());
-    unless ($readonly) {
-        $r->print( ((($env{'form.store'}) || ($env{'form.dis'}))?'<p><input type="submit" name="store" value="'.&mt('Save').'" /></p>':'') );
+    if ((!$readonly) && ($foundkeys)) {
+        $r->print( ($env{'form.newoverviewsubm'}? '<p><input type="submit" name="store" id="newoverviewstore" value="'.&mt('Save').'" /></p>':'') );
     }
     $r->print('</form>');
+    if ($env{'form.newoverviewsubm'}) {
+        $r->print(<<"END");
+<script type="text/javascript">
+const form = document.getElementById('newoverviewform');
+const storebutton = document.getElementById('newoverviewstore');
+const disbutton = document.getElementById('newoverviewdis');
+const submethod = document.getElementById('newoverviewsubm');
+if (storebutton) { 
+  storebutton.addEventListener('keydown', (e) => {
+    if (e.key === 'Enter') {
+      if (validateParms()) {
+        if (form) {
+          if (submethod) {
+            submethod.value='store';
+          }
+          form.submit();
+        }
+      }
+      e.preventDefault();
+      return;
+    }
+  });
+  storebutton.addEventListener('click', (e) => {
+    if (validateParms()) {
+      if (form) {
+        if (submethod) {
+          submethod.value='store';
+        }
+        form.submit();
+      }
+    }
+    e.preventDefault();
+    return;
+  });
+}
+if (disbutton) {
+  disbutton.addEventListener('keydown', (e) => {
+    if (e.key === 'Enter') {
+      if (form) {
+        if (submethod) {
+          submethod.value='dis';
+        }
+        form.submit();
+      }
+      e.preventDefault();
+    }
+  });
+  disbutton.addEventListener('click', (e) => {
+    if (form) {
+      if (submethod) {
+        submethod.value='dis';
+      }
+      form.submit();
+      return;
+    }
+    e.preventDefault();
+  });
+}
+
+</script>
+
+END
+    }
     &endSettingsScreen($r);
     $r->print(&Apache::loncommon::end_page());
 }




More information about the LON-CAPA-cvs mailing list