Diff for /loncom/interface/lonparmset.pm between versions 1.624 and 1.626

version 1.624, 2025/06/30 21:12:21 version 1.626, 2025/07/02 16:33:51
Line 1285  ENDSCRIPT Line 1285  ENDSCRIPT
   
 # Javascript function validateParms, for overview mode  # Javascript function validateParms, for overview mode
 sub validateparms_js {  sub validateparms_js {
     return <<'ENDSCRIPT';      my %lt = &Apache::lonlocal::texthash (
                  nodom => "A link type of 'domain LTI launch' was selected but no domain LTI launcher was selected.",
                  nocrs => "A link type of 'course LTI launch' was selected but no course LTI launcher was selected.",
                  plss  => 'Please select one, or choose a different supported link type.',
                  disa  => 'disallowed character(s) removed from deeplink key.',
                  nokyr => "A link type of 'deep with key' was selected but the key value was blank, after removing disallowed characters.",
                  plse  => 'Please enter a key using one or more of:',
                  nokey => "A link type of 'deep with key' was selected but the key value was blank.",
                  plsk  => 'Please enter a key.',
                  dise  => 'disallowed character(s) removed from Exit Button text.',
                  exit  => "An exit link type of 'In use' was selected but the button text value was blank, after removing disallowed characters.",
                  disc  => 'Disallowed characters are ',
                  notxt => "An exit link type of 'In use' was selected but the button text value was blank.",
                  plst  => 'Please enter the text to use.',
                  gppc  => 'Grace Period Past-Due: enter partial credit (number between 0 and 1.0).',
                  gpsn  => 'Grace Period Past-Due: select a number in at least one of the time past due select boxes, or delete the value for partial credit.',
       );
       &js_escape(\%lt);
       return <<"ENDSCRIPT";
   
 function validateParms() {  function validateParms() {
     var textRegExp = /^settext_/;      var textRegExp = /^settext_/;
     var tailLenient = /\.lenient$/;      var tailLenient = /\\.lenient\$/;
     var patternRelWeight = /^\-?[\d.]+$/;      var patternRelWeight = /^\\-?[\\d.]+\$/;
     var patternLenientStd = /^(yes|no|default)$/;      var patternLenientStd = /^(yes|no|default)\$/;
     var ipRegExp = /^setip/;      var ipRegExp = /^setip/;
     var ipallowRegExp = /^setipallow_/;      var ipallowRegExp = /^setipallow_/;
     var ipdenyRegExp = /^setipdeny_/;       var ipdenyRegExp = /^setipdeny_/; 
Line 1307  function validateParms() { Line 1325  function validateParms() {
     var dlTargetRegExp = /^deeplink_target_/;      var dlTargetRegExp = /^deeplink_target_/;
     var dlExitRegExp = /^deeplink_exit_/;      var dlExitRegExp = /^deeplink_exit_/;
     var dlExitTextRegExp = /^deeplink_exittext_/;      var dlExitTextRegExp = /^deeplink_exittext_/;
     var patternIP = /[\[\]\*\.a-zA-Z\d\-]+/;      var patternIP = /[\\[\\]\\*\\.a-zA-Z\\d\\-]+/;
     var patternGrace = /^\d+:(0|1)\.?\d*:(0|1)\$/;      var patternGrace = /^\\d+:(0|1)\\.?\\d*:(0|1)\$/;
     var numelements = document.parmform.elements.length;      var numelements = document.parmform.elements.length;
     if ((typeof(numelements) != 'undefined') && (numelements != null)) {      if ((typeof(numelements) != 'undefined') && (numelements != null)) {
         if (numelements) {          if (numelements) {
Line 1322  function validateParms() { Line 1340  function validateParms() {
                                 if (document.parmform.elements['set_'+identifier][j].checked) {                                  if (document.parmform.elements['set_'+identifier][j].checked) {
                                     if (!(patternLenientStd.test(document.parmform.elements['set_'+identifier][j].value))) {                                      if (!(patternLenientStd.test(document.parmform.elements['set_'+identifier][j].value))) {
                                         var relweight = document.parmform.elements[i].value;                                          var relweight = document.parmform.elements[i].value;
                                         relweight = relweight.replace(/^\s+|\s+$/g,'');                                          relweight = relweight.replace(/^\s+|\s+\$/g,'');
                                         if (!patternRelWeight.test(relweight)) {                                          if (!patternRelWeight.test(relweight)) {
                                             relweight = '0.0';                                              relweight = '0.0';
                                         }                                          }
Line 1341  function validateParms() { Line 1359  function validateParms() {
                     if (ipallowRegExp.test(name)) {                      if (ipallowRegExp.test(name)) {
                         var identifier = name.replace(ipallowRegExp,'');                          var identifier = name.replace(ipallowRegExp,'');
                         var possallow = document.parmform.elements[i].value;                          var possallow = document.parmform.elements[i].value;
                         possallow = possallow.replace(/^\s+|\s+$/g,'');                          possallow = possallow.replace(/^\s+|\s+\$/g,'');
                         if (patternIP.test(possallow)) {                          if (patternIP.test(possallow)) {
                             if (document.parmform.elements['set_'+identifier].value) {                              if (document.parmform.elements['set_'+identifier].value) {
                                 possallow = ','+possallow;                                  possallow = ','+possallow;
Line 1351  function validateParms() { Line 1369  function validateParms() {
                     } else if (ipdenyRegExp.test(name)) {                      } else if (ipdenyRegExp.test(name)) {
                         var identifier = name.replace(ipdenyRegExp,'');                          var identifier = name.replace(ipdenyRegExp,'');
                         var possdeny = document.parmform.elements[i].value;                          var possdeny = document.parmform.elements[i].value;
                         possdeny = possdeny.replace(/^\s+|\s+$/g,'');                          possdeny = possdeny.replace(/^\s+|\s+\$/g,'');
                         if (patternIP.test(possdeny)) {                          if (patternIP.test(possdeny)) {
                             possdeny = '!'+possdeny;                              possdeny = '!'+possdeny;
                             if (document.parmform.elements['set_'+identifier].value) {                              if (document.parmform.elements['set_'+identifier].value) {
Line 1366  function validateParms() { Line 1384  function validateParms() {
                         var idx = document.parmform.elements[i].selectedIndex;                          var idx = document.parmform.elements[i].selectedIndex;
                         if (idx > 0) {                           if (idx > 0) { 
                             var possdeeplink = document.parmform.elements[i].options[idx].value                              var possdeeplink = document.parmform.elements[i].options[idx].value
                             possdeeplink = possdeeplink.replace(/^\s+|\s+$/g,'');                              possdeeplink = possdeeplink.replace(/^\s+|\s+\$/g,'');
                             if (document.parmform.elements['set_'+identifier].value) {                              if (document.parmform.elements['set_'+identifier].value) {
                                 possdeeplink = ','+possdeeplink;                                  possdeeplink = ','+possdeeplink;
                             }                              }
Line 1376  function validateParms() { Line 1394  function validateParms() {
                         if (document.parmform.elements[i].checked) {                          if (document.parmform.elements[i].checked) {
                             var identifier =  name.replace(dlLinkProtectRegExp,'');                              var identifier =  name.replace(dlLinkProtectRegExp,'');
                             var posslinkurl = document.parmform.elements[i].value;                              var posslinkurl = document.parmform.elements[i].value;
                             posslinkurl = posslinkurl.replace(/^\s+|\s+$/g,'');                              posslinkurl = posslinkurl.replace(/^\s+|\s+\$/g,'');
                             if (document.parmform.elements['set_'+identifier].value) {                              if (document.parmform.elements['set_'+identifier].value) {
                                 posslinkurl = ','+posslinkurl;                                  posslinkurl = ','+posslinkurl;
                             }                              }
Line 1394  function validateParms() { Line 1412  function validateParms() {
                                 document.parmform.elements['set_'+identifier].value += possltid;                                  document.parmform.elements['set_'+identifier].value += possltid;
                             } else {                              } else {
                                 document.parmform.elements['set_'+identifier].value = '';                                  document.parmform.elements['set_'+identifier].value = '';
                                 alert("A link type of 'domain LTI launch' was selected but no domain LTI launcher was selected.\nPlease select one, or choose a different supported link type.");                                  alert("$lt{'nodom'}\\n$lt{'plss'}");
                                 return false;                                    return false;  
                             }                              }
                         }                          }
Line 1410  function validateParms() { Line 1428  function validateParms() {
                                 document.parmform.elements['set_'+identifier].value += possltic;                                  document.parmform.elements['set_'+identifier].value += possltic;
                             } else {                              } else {
                                 document.parmform.elements['set_'+identifier].value = '';                                  document.parmform.elements['set_'+identifier].value = '';
                                 alert("A link type of 'course LTI launch' was selected but no course LTI launcher was selected.\nPlease select one, or choose a different supported link type.");                                  alert("$lt{'nocrs'}\\n$lt{'plss'}");
                                 return false;                                  return false;
                             }                              }
                         }                          }
Line 1418  function validateParms() { Line 1436  function validateParms() {
                         var identifier = name.replace(dlKeyRegExp,'');                          var identifier = name.replace(dlKeyRegExp,'');
                         if (isRadioSet('deeplink_protect_'+identifier,'key')) {                          if (isRadioSet('deeplink_protect_'+identifier,'key')) {
                             var posskey = document.parmform.elements[i].value;                              var posskey = document.parmform.elements[i].value;
                             posskey = posskey.replace(/^\s+|\s+$/g,'');                              posskey = posskey.replace(/^\s+|\s+\$/g,'');
                             var origlength = posskey.length;                              var origlength = posskey.length;
                             posskey = posskey.replace(/[^a-zA-Z\d_.!@#$%^&*()+=-]/g,'');                              posskey = posskey.replace(/[^a-zA-Z\d_.!\@#\$%^&*()+=-]/g,'');
                             var newlength = posskey.length;                              var newlength = posskey.length;
                             if (newlength > 0) {                              if (newlength > 0) {
                                 var change = origlength - newlength;                                  var change = origlength - newlength;
                                 if (change) {                                  if (change) {
                                     alert(change+' disallowed character(s) removed from deeplink key');                                       alert(change+" $lt{'disa'}"); 
                                 }                                  }
                                 if (document.parmform.elements['set_'+identifier].value) {                                  if (document.parmform.elements['set_'+identifier].value) {
                                     posskey = ':'+posskey;                                      posskey = ':'+posskey;
Line 1434  function validateParms() { Line 1452  function validateParms() {
                             } else {                              } else {
                                 document.parmform.elements['set_'+identifier].value = '';                                  document.parmform.elements['set_'+identifier].value = '';
                                 if (newlength < origlength) {                                  if (newlength < origlength) {
                                     alert("A link type of 'deep with key' was selected but the key value was blank, after removing disallowed characters.\nPlease enter a key using one or more of: a-zA-Z0-9_.!@#$%^&*()+=-");                                      alert("$lt{'nokyr'}\\n$lt{'plse'} "+'a-zA-Z0-9_.!\@#\$%^&*()+=-');
                                 } else {                                  } else {
                                     alert("A link type of 'deep with key' was selected but the key value was blank.\nPlease enter a key.");                                      alert("$lt{'nokey'}\\n$lt{'plsk'}");
                                 }                                  }
                                 return false;                                  return false;
                             }                              }
Line 1445  function validateParms() { Line 1463  function validateParms() {
                         if (document.parmform.elements[i].checked) {                          if (document.parmform.elements[i].checked) {
                             var identifier =  name.replace(dlMenusRegExp,'');                              var identifier =  name.replace(dlMenusRegExp,'');
                             var posslinkmenu = document.parmform.elements[i].value;                              var posslinkmenu = document.parmform.elements[i].value;
                             posslinkmenu = posslinkmenu.replace(/^\s+|\s+$/g,'');                              posslinkmenu = posslinkmenu.replace(/^\s+|\s+\$/g,'');
                             if (posslinkmenu == 'std') {                              if (posslinkmenu == 'std') {
                                 posslinkmenu = '0';                                  posslinkmenu = '0';
                                 if (document.parmform.elements['set_'+identifier].value) {                                  if (document.parmform.elements['set_'+identifier].value) {
Line 1468  function validateParms() { Line 1486  function validateParms() {
                         var idx = document.parmform.elements[i].selectedIndex;                          var idx = document.parmform.elements[i].selectedIndex;
                         if (idx > 0) {                          if (idx > 0) {
                             var linktarget = document.parmform.elements[i].options[idx].value                              var linktarget = document.parmform.elements[i].options[idx].value
                             linktarget = linktarget.replace(/^\s+|\s+$/g,'');                              linktarget = linktarget.replace(/^\s+|\s+\$/g,'');
                             if (document.parmform.elements['set_'+identifier].value) {                              if (document.parmform.elements['set_'+identifier].value) {
                                 linktarget = ','+linktarget;                                  linktarget = ','+linktarget;
                             }                              }
Line 1478  function validateParms() { Line 1496  function validateParms() {
                         if (document.parmform.elements[i].checked) {                          if (document.parmform.elements[i].checked) {
                             var identifier =  name.replace(dlExitRegExp,'');                              var identifier =  name.replace(dlExitRegExp,'');
                             var posslinkexit = document.parmform.elements[i].value;                              var posslinkexit = document.parmform.elements[i].value;
                             posslinkexit = posslinkexit.replace(/^\s+|\s+$/g,'');                              posslinkexit = posslinkexit.replace(/^\s+|\s+\$/g,'');
                             if (document.parmform.elements['set_'+identifier].value) {                              if (document.parmform.elements['set_'+identifier].value) {
                                 posslinkexit = ','+posslinkexit;                                  posslinkexit = ','+posslinkexit;
                             }                              }
Line 1489  function validateParms() { Line 1507  function validateParms() {
                         if ((isRadioSet('deeplink_exit_'+identifier,'yes')) ||                          if ((isRadioSet('deeplink_exit_'+identifier,'yes')) ||
                             (isRadioSet('deeplink_exit_'+identifier,'url'))) {                              (isRadioSet('deeplink_exit_'+identifier,'url'))) {
                             var posstext = document.parmform.elements[i].value;                              var posstext = document.parmform.elements[i].value;
                             posstext = posstext.replace(/^\s+|\s+$/g,'');                              posstext = posstext.replace(/^\s+|\s+\$/g,'');
                             var origlength = posstext.length;                              var origlength = posstext.length;
                             posstext = posstext.replace(/[:;'",]/g,'');                              posstext = posstext.replace(/[:;'",]/g,'');
                             var newlength = posstext.length;                              var newlength = posstext.length;
                             if (newlength > 0) {                              if (newlength > 0) {
                                 var change = origlength - newlength;                                  var change = origlength - newlength;
                                 if (change) {                                  if (change) {
                                     alert(change+' disallowed character(s) removed from Exit Button text');                                      alert(change+" $lt{'dise'}");
                                 }                                  }
                                 if (posstext !== 'Exit Tool') {                                  if (posstext !== 'Exit Tool') {
                                     posstext = ':'+posstext;                                      posstext = ':'+posstext;
Line 1505  function validateParms() { Line 1523  function validateParms() {
                             } else {                              } else {
                                 document.parmform.elements['set_'+identifier].value = '';                                  document.parmform.elements['set_'+identifier].value = '';
                                 if (newlength < origlength) {                                  if (newlength < origlength) {
                                     alert("An exit link type of 'In use' was selected but the button text value was blank, after removing disallowed characters.\nDisallowed characters are ,\":;'");                                      alert("$lt{'exit'}\\n$lt{'disc'}"+'":;\\'');
                                 } else {                                  } else {
                                     alert("An exit link type of 'In use' was selected but the button text value was blank.\nPlease enter the text to use.");                                      alert("$lt{'notxt'}\\n$lt{'plst'}");
                                 }                                  }
                                 return false;                                  return false;
                             }                              }
Line 1586  function validateParms() { Line 1604  function validateParms() {
                             document.parmform.elements['set_'+identifier].value += document.parmform.elements[i].value;                              document.parmform.elements['set_'+identifier].value += document.parmform.elements[i].value;
                         } else {                          } else {
                             if (frac == '') {                              if (frac == '') {
                                 alert('Grace Period Past-Due: enter partial credit (number between 0 and 1.0).');                                  alert("$lt{'gppc'}");
                                 return false;                                  return false;
                             } else {                              } else {
                                 alert('Grace Period Past-Due: select a number in at least one of the time past due select boxes, or delete the value for partial credit.');                                  alert("$lt{'gpsn'}");
                                 return false;                                  return false;
                             }                              }
                         }                          }

Removed from v.1.624  
changed lines
  Added in v.1.626


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>