Diff for /loncom/interface/lonextresedit.pm between versions 1.8.2.4.4.3 and 1.8.2.4.4.4

version 1.8.2.4.4.3, 2023/07/11 23:17:40 version 1.8.2.4.4.4, 2025/03/15 03:10:09
Line 311  sub update_exttool { Line 311  sub update_exttool {
     my ($marker,$cdom,$cnum,$supplementalflag,$args) = @_;      my ($marker,$cdom,$cnum,$supplementalflag,$args) = @_;
     my (%newhash,$changed,$newgradable,@deleted,$errormsg);      my (%newhash,$changed,$newgradable,@deleted,$errormsg);
     ($newhash{'target'},$newhash{'width'},$newhash{'height'},$newhash{'linktext'},$newhash{'explanation'},      ($newhash{'target'},$newhash{'width'},$newhash{'height'},$newhash{'linktext'},$newhash{'explanation'},
      $newhash{'crslabel'},$newhash{'crstitle'},$newhash{'crsappend'},$newhash{'gradable'}) = split(/:/,$args);       $newhash{'crslabel'},$newhash{'crstitle'},$newhash{'crsappend'},$newhash{'gradable'},
     foreach my $item ('linktext','explanation','crslabel','crstitle','crsappend') {       $newhash{'returnurl'},$newhash{'backtourl'}) = split(/:/,$args);
       foreach my $item ('linktext','explanation','crslabel','crstitle','crsappend','backtourl') {
         $newhash{$item} = &unescape($newhash{$item});          $newhash{$item} = &unescape($newhash{$item});
     }      }
     my %toolhash=&Apache::lonnet::dump('exttool_'.$marker,$cdom,$cnum);      my %toolhash=&Apache::lonnet::dump('exttool_'.$marker,$cdom,$cnum);
     foreach my $item ('target','width','height','linktext','explanation','crslabel','crstitle','crsappend','gradable') {      foreach my $item ('target','width','height','linktext','explanation','crslabel','crstitle','crsappend','gradable','returnurl','backtourl') {
         $newhash{$item} =~ s/^\s+//;          $newhash{$item} =~ s/^\s+//;
         $newhash{$item} =~ s/\s+$//;          $newhash{$item} =~ s/\s+$//;
         if (($item eq 'width') || ($item eq 'height') || ($item eq 'linktext') || ($item eq 'explanation')) {          if (($item eq 'width') || ($item eq 'height') || ($item eq 'linktext') || ($item eq 'explanation')) {
Line 331  sub update_exttool { Line 332  sub update_exttool {
             unless ($newhash{$item} == 1) {              unless ($newhash{$item} == 1) {
                 $newhash{$item} = '';                  $newhash{$item} = '';
             }              }
           } elsif ($item eq 'backtourl') {
               unless ($newhash{'returnurl'} eq 'custom') {
                   $newhash{$item} = '';
               }
         }          }
         if ($toolhash{$item} ne $newhash{$item}) {          if ($toolhash{$item} ne $newhash{$item}) {
             if (($item eq 'gradable') && (!$supplementalflag)) {              if (($item eq 'gradable') && (!$supplementalflag)) {
Line 354  sub update_exttool { Line 359  sub update_exttool {
                 }                  }
             } else {              } else {
                 $toolhash{$item} = $newhash{$item};                  $toolhash{$item} = $newhash{$item};
                 $changed = 1;                   $changed = 1;
             }              }
         }          }
     }      }
Line 398  sub extedit_form { Line 403  sub extedit_form {
     }      }
     my ($formname,$formid,$toggle,$fieldsetid,$urlid,$subdivid,$dispdivstyle,$dimendivstyle,      my ($formname,$formid,$toggle,$fieldsetid,$urlid,$subdivid,$dispdivstyle,$dimendivstyle,
         $windivstyle,$linktextstyle,$explanationstyle,$labelstyle,$titlestyle,          $windivstyle,$linktextstyle,$explanationstyle,$labelstyle,$titlestyle,
         $appendstyle,$gradablestyle,$subdivstyle,$legend,$urlelem,$toolelem,%toolattr);          $appendstyle,$gradablestyle,$returnurlstyle,$subdivstyle,$legend,$urlelem,
           $toolelem,%toolattr);
     $formname = 'new'.$type;      $formname = 'new'.$type;
     $toggle = $type;      $toggle = $type;
     $fieldsetid = 'upload'.$type.'form';      $fieldsetid = 'upload'.$type.'form';
     $urlid = $type.'url';      $urlid = $type.'url';
     map { $toolattr{$_} = $type.$_; } ('dispdiv','dimendiv','dimenwidth','dimenheight',      map { $toolattr{$_} = $type.$_; } ('dispdiv','dimendiv','dimenwidth','dimenheight',
                                        'crstitlediv','crslabeldiv','crsappenddiv',                                         'crstitlediv','crslabeldiv','crsappenddiv',
                                        'gradablediv','crstitle','crslabel','crsappend',                                         'gradablediv','returnurldiv','crstitle','crslabel',
                                        'windiv','linktextdiv','explanationdiv',                                         'crsappend','windiv','linktextdiv','explanationdiv',
                                        'linktext','explanation','providerurl');                                         'linktext','explanation','providerurl','customreturnurl');
     $dispdivstyle = 'display:none';      $dispdivstyle = 'display:none';
     $dimendivstyle = 'display:none';      $dimendivstyle = 'display:none';
     $windivstyle = 'display:none';      $windivstyle = 'display:none';
Line 417  sub extedit_form { Line 423  sub extedit_form {
     $titlestyle = 'display:none';      $titlestyle = 'display:none';
     $appendstyle = 'display:none';      $appendstyle = 'display:none';
     $gradablestyle = 'display:none';      $gradablestyle = 'display:none';
       $returnurlstyle = 'display:none';
     $subdivstyle = 'display:block';      $subdivstyle = 'display:block';
     if ($supplementalflag) {      if ($supplementalflag) {
         $formname = 'newsupp'.$type;          $formname = 'newsupp'.$type;
Line 427  sub extedit_form { Line 434  sub extedit_form {
     }      }
     my ($link,$legend,$active,$srcclass,$extsrc,$preview,$title,$save,$crstitle,$crslabel,      my ($link,$legend,$active,$srcclass,$extsrc,$preview,$title,$save,$crstitle,$crslabel,
         $crsappend,$fieldsetstyle,$action,$hiddenelem,$form,$width,$height,$tooltarget,          $crsappend,$fieldsetstyle,$action,$hiddenelem,$form,$width,$height,$tooltarget,
         $linktext,$explanation,$providerurl,$chkgrd,$chknogrd,%chkstate);          $linktext,$explanation,$providerurl,$returnurl,$chkgrd,$chknogrd,%chkstate,
           $chknoreturn,$chkreturndef,$chkreturncust,$customreturn,$backtourl);
     $fieldsetstyle = 'display: none;';      $fieldsetstyle = 'display: none;';
     $action = '/adm/coursedocs';      $action = '/adm/coursedocs';
     my $protocol = ($ENV{'SERVER_PORT'} == 443?'https':'http');      my $protocol = ($ENV{'SERVER_PORT'} == 443?'https':'http');
Line 578  sub extedit_form { Line 586  sub extedit_form {
                         if ($ltihash->{'crsconf'}->{'explanation'}) {                          if ($ltihash->{'crsconf'}->{'explanation'}) {
                             $explanationstyle = 'padding:0;display:inline';                              $explanationstyle = 'padding:0;display:inline';
                         }                          }
                           if ($ltihash->{'crsconf'}->{'returnurl'}) {
                               $returnurl = $toolhash{'returnurl'};
                               $returnurlstyle = 'display:inline';
                               $backtourl = $toolhash{'backtourl'}; 
                               if ($returnurl eq 'none') {
                                   $chknoreturn = ' checked="checked"';
                                   $customreturn = 'hidden';
                               } elsif (($returnurl eq 'custom') && ($backtourl ne '')) {
                                   $chkreturncust = ' checked="checked"';
                                   $customreturn = 'text';
                               } else {
                                   $chkreturndef = ' checked="checked"';
                                   $customreturn = 'hidden';
                               }
                           } 
                     }                      }
                     $toolelem = '<span class="LC_nobreak">'.$image.'&nbsp;'.$tooltitle.'</span><br />';                      $toolelem = '<span class="LC_nobreak">'.$image.'&nbsp;'.$tooltitle.'</span><br />';
                     $gradablestyle = 'display:inline';                      $gradablestyle = 'display:inline';
Line 660  sub extedit_form { Line 683  sub extedit_form {
             $crslabel = $env{'course.'.$cdom.'_'.$cnum.'.internal.coursecode'};              $crslabel = $env{'course.'.$cdom.'_'.$cnum.'.internal.coursecode'};
             $crstitle = $env{'course.'.$cdom.'_'.$cnum.'.description'};              $crstitle = $env{'course.'.$cdom.'_'.$cnum.'.description'};
             $crsappend = '';              $crsappend = '';
               $returnurl = '';
               $backtourl = '';
               $customreturn = 'hidden';
             $chknogrd = ' checked="checked"';              $chknogrd = ' checked="checked"';
               $chknoreturn = '';
               $chkreturndef = ' checked="checked"';
               $chkreturncust = '';
         }          }
           my $onclickreturl = ' onclick="updateReturnUrl('."this.form,'$toolattr{'customreturnurl'}','$toolattr{'returnurldiv'}','exttoolreturnurl'".');"';
         $toolelem .= '<div id="'.$toolattr{'dispdiv'}.'" style="'.$dispdivstyle.'">'.          $toolelem .= '<div id="'.$toolattr{'dispdiv'}.'" style="'.$dispdivstyle.'">'.
                     '<span class="'.$class.'">'.&mt('Display target:').'&nbsp;'.                      '<span class="'.$class.'">'.&mt('Display target:').'&nbsp;'.
                     '<label><input type="radio" name="exttooltarget" value="iframe" '.$chkstate{'iframe'}.'onclick="updateTooldim(this.form,'.                      '<label><input type="radio" name="exttooltarget" value="iframe" '.$chkstate{'iframe'}.'onclick="updateTooldim(this.form,'.
Line 689  sub extedit_form { Line 719  sub extedit_form {
         $toolelem .= '<div id="'.$toolattr{'crslabeldiv'}.'" style="'.$labelstyle.'">'.          $toolelem .= '<div id="'.$toolattr{'crslabeldiv'}.'" style="'.$labelstyle.'">'.
                     '<span class="'.$class.'">'.&mt('Course label:').'&nbsp;'.                      '<span class="'.$class.'">'.&mt('Course label:').'&nbsp;'.
                     '<input type="text" id="'.$toolattr{'crslabel'}.'" name="exttoollabel" value="'.$crslabel.'"'.$disabled.' /></span><br />'.                      '<input type="text" id="'.$toolattr{'crslabel'}.'" name="exttoollabel" value="'.$crslabel.'"'.$disabled.' /></span><br />'.
                     '</div>'.                      '</div>'."\n".
                     '<div id="'.$toolattr{'crstitlediv'}.'" style="'.$titlestyle.'">'.                      '<div id="'.$toolattr{'crstitlediv'}.'" style="'.$titlestyle.'">'.
                     '<span class="'.$class.'">'.&mt('Course title:').'&nbsp;'.                      '<span class="'.$class.'">'.&mt('Course title:').'&nbsp;'.
                     '<input type="text" id="'.$toolattr{'crstitle'}.'" name="exttooltitle" value="'.$crstitle.'"'.$disabled.' /></span><br />'.                      '<input type="text" id="'.$toolattr{'crstitle'}.'" name="exttooltitle" value="'.$crstitle.'"'.$disabled.' /></span><br />'.
                     '</div>'.                      '</div>'."\n".
                     '<div id="'.$toolattr{'crsappenddiv'}.'" style="'.$appendstyle.'">'.                      '<div id="'.$toolattr{'crsappenddiv'}.'" style="'.$appendstyle.'">'.
                     '<span class="'.$class.'">'.&mt('Append to URL[_1]',                      '<span class="'.$class.'">'.&mt('Append to URL[_1]',
                     '<span id="'.$toolattr{'providerurl'}.'">&nbsp;('.$providerurl.')<br /></span>').                      '<span id="'.$toolattr{'providerurl'}.'">&nbsp;('.$providerurl.')<br /></span>').
                     '<input type="text" id="'.$toolattr{'crsappend'}.'" size="30" name="exttoolappend" value="'.$crsappend.'"'.$disabled.' /></span><br />'.                      '<input type="text" id="'.$toolattr{'crsappend'}.'" size="30" name="exttoolappend" value="'.$crsappend.'"'.$disabled.' /></span><br />'.
                     '</div>'.                      '</div>'."\n".
                     '<div id="'.$toolattr{'gradablediv'}.'" style="'.$gradablestyle.'">'.                      '<div id="'.$toolattr{'gradablediv'}.'" style="'.$gradablestyle.'">'.
                     '<span class="'.$class.'">'.&mt('Gradable').'&nbsp;'.                      '<span class="'.$class.'">'.&mt('Gradable').'&nbsp;'.
                     '<label><input type="radio" name="exttoolgradable" value="1"'.$chkgrd.$disabled.                      '<label><input type="radio" name="exttoolgradable" value="1"'.$chkgrd.$disabled.
                     ' />'.&mt('Yes').'</label>'.('&nbsp;'x2).                      ' />'.&mt('Yes').'</label>'.('&nbsp;'x2).
                     '<label><input type="radio" name="exttoolgradable" value="0"'.$chknogrd.$disabled.                      '<label><input type="radio" name="exttoolgradable" value="0"'.$chknogrd.$disabled.
                     ' />'.&mt('No').'</label></span></div>';                      ' />'.&mt('No').'</label></span><br /></div>'."\n".
                       '<div id="'.$toolattr{'returnurldiv'}.'" style="'.$returnurlstyle.'">'.
                       '<span class="'.$class.'">'.&mt('Include return URL').':&nbsp;'.
                       '<label><input type="radio" name="exttoolreturnurl" value="none"'.$chknoreturn.$disabled.$onclickreturl.' />'.
                       &mt('No').'</label>'.('&nbsp;'x2).
                       '<label><input type="radio" name="exttoolreturnurl" value="default"'.$chkreturndef.$disabled.$onclickreturl.' />'.
                       &mt('Yes, default URL').'</label>'.('&nbsp;'x2).
                       '<label><input type="radio" name="exttoolreturnurl" value="custom"'.$chkreturncust.$disabled.$onclickreturl.' />'.
                       &mt('Yes, specify URL').'</label></span><br />'."\n".
                       '<input type="'.$customreturn.'" id="'.$toolattr{'customreturnurl'}.'" size="35" name="exttoolbacktourl" value="'.$backtourl.'"'.$disabled.' />'.
                       '</div>'."\n";
     }      }
     my $chooser = $toolelem;      my $chooser = $toolelem;
     if ($type eq 'ext') {      if ($type eq 'ext') {
Line 840  sub extedit_javascript { Line 880  sub extedit_javascript {
                    "        var ltitoolsExplain = new Array();\n".                     "        var ltitoolsExplain = new Array();\n".
                    "        var ltitoolsLabel = new Array();\n".                     "        var ltitoolsLabel = new Array();\n".
                    "        var ltitoolsTitle = new Array();\n".                     "        var ltitoolsTitle = new Array();\n".
                    "        var ltitoolsAppend = new Array();\n";                     "        var ltitoolsAppend = new Array();\n".
                      "        var ltitoolsReturnUrl = new Array();\n";
         $exttoolnums = "        var ltitoolsnum = new Array();\n".          $exttoolnums = "        var ltitoolsnum = new Array();\n".
                        "        var tooloptval = new Array();\n".                         "        var tooloptval = new Array();\n".
                        "        var toolopttxt = new Array();\n";                         "        var toolopttxt = new Array();\n";
Line 860  sub extedit_javascript { Line 901  sub extedit_javascript {
                             "        ltitoolsExplain[$idx] = new Array($num);\n".                              "        ltitoolsExplain[$idx] = new Array($num);\n".
                             "        ltitoolsLabel[$idx] = new Array($num);\n".                              "        ltitoolsLabel[$idx] = new Array($num);\n".
                             "        ltitoolsTitle[$idx] = new Array($num);\n".                              "        ltitoolsTitle[$idx] = new Array($num);\n".
                             "        ltitoolsAppend[$idx] = new Array($num);\n";                              "        ltitoolsAppend[$idx] = new Array($num);\n".
                               "        ltitoolsReturnUrl[$idx] = new Array($num);\n";
                 my $i=0;                  my $i=0;
                 foreach my $key (sort { $a <=> $b } keys(%{$toolsref->{$type}})) {                  foreach my $key (sort { $a <=> $b } keys(%{$toolsref->{$type}})) {
                     if (ref($toolsref->{$type}->{$key}) eq 'HASH') {                      if (ref($toolsref->{$type}->{$key}) eq 'HASH') {
Line 899  sub extedit_javascript { Line 941  sub extedit_javascript {
                             $toolsjs .= "         ltitoolsTitle[$idx][$i] = '$title';\n";                              $toolsjs .= "         ltitoolsTitle[$idx][$i] = '$title';\n";
                             my $append = $toolsref->{$type}->{$key}->{'crsconf'}->{'append'};                              my $append = $toolsref->{$type}->{$key}->{'crsconf'}->{'append'};
                             $toolsjs .= "         ltitoolsAppend[$idx][$i] = '$append';\n";                              $toolsjs .= "         ltitoolsAppend[$idx][$i] = '$append';\n";
                               my $returnurl = $toolsref->{$type}->{$key}->{'crsconf'}->{'returnurl'};
                               $toolsjs .= "         ltitoolsReturnUrl[$idx][$i] = '$returnurl';\n";
                         }                          }
                     }                      }
                     $i++;                      $i++;
Line 1056  function setExternal(extform,residx,type Line 1100  function setExternal(extform,residx,type
         var labelinput = prefix+'toolcrslabel';          var labelinput = prefix+'toolcrslabel';
         var titleinput = prefix+'toolcrstitle';          var titleinput = prefix+'toolcrstitle';
         var appendinput = prefix+'toolcrsappend';          var appendinput = prefix+'toolcrsappend';
           var customreturnurl = prefix+'customreturnurl';
         if (residx > 0) {          if (residx > 0) {
             labelinput += '_'+residx;              labelinput += '_'+residx;
             titleinput += '_'+residx;              titleinput += '_'+residx;
             appendinput += '_'+residx;              appendinput += '_'+residx;
               customreturnurl += '_'+residx;
         }          }
         if (document.getElementById(labelinput)) {          if (document.getElementById(labelinput)) {
             var crslabel = document.getElementById(labelinput).value;              var crslabel = document.getElementById(labelinput).value;
Line 1108  function setExternal(extform,residx,type Line 1154  function setExternal(extform,residx,type
         } else {          } else {
             info += ':';              info += ':';
         }          }
           var returnurldiv = prefix+'toolreturnurldiv';
           if (residx > 0) {
               returnurldiv += '_'+residx;
           }
           if (document.getElementById(returnurldiv)) {
               if (document.getElementById(returnurldiv).style.display == 'inline') {
                   if (extform.exttoolreturnurl.length) {
                       for (var i=0; i<extform.exttoolreturnurl.length; i++) {
                           if (extform.exttoolreturnurl[i].checked) {
                               if (extform.exttoolreturnurl[i].value == 'custom') {
                                   var backtourl = extform.exttoolbacktourl.value;
                                   backtourl.trim();
                                   info += ':custom:'+escape(backtourl);
                               } else if (extform.exttoolreturnurl[i].value == 'default') {
                                   info += ':default:';
                               } else {
                                   info += ':none:';
                               }
                           }
                       }
                   }
               } else {
                   info += '::';
               }
           } else {
               info += '::';
           }
         info=escape(info);          info=escape(info);
         if (residx > 0) {          if (residx > 0) {
             eval("extform.importdetail.value=title+'='+info+'='+residx;extform.submit();");              eval("extform.importdetail.value=title+'='+info+'='+residx;extform.submit();");
Line 1290  function updateExttool(caller,form,suppl Line 1363  function updateExttool(caller,form,suppl
     titlediv = prefix+'toolcrstitlediv';      titlediv = prefix+'toolcrstitlediv';
     appenddiv = prefix+'toolcrsappenddiv';      appenddiv = prefix+'toolcrsappenddiv';
     gradablediv = prefix+'toolgradablediv';      gradablediv = prefix+'toolgradablediv';
       returnurldiv = prefix+'toolreturnurldiv';
     providerurl = prefix+'toolproviderurl';      providerurl = prefix+'toolproviderurl';
     labelinput = prefix+'toolcrslabel';      labelinput = prefix+'toolcrslabel';
     titleinput = prefix+'toolcrstitle';      titleinput = prefix+'toolcrstitle';
Line 1330  function updateExttool(caller,form,suppl Line 1404  function updateExttool(caller,form,suppl
             if (document.getElementById(gradablediv)) {              if (document.getElementById(gradablediv)) {
                 document.getElementById(gradablediv).style.display = 'none';                  document.getElementById(gradablediv).style.display = 'none';
             }              }
               if (document.getElementById(returnurldiv)) {
                   document.getElementById(returnurldiv).style.display = 'none';
               }
         } else {          } else {
             var tooltype = '';              var tooltype = '';
             var typeelem = form.elements[prefix+'exttooltype'];              var typeelem = form.elements[prefix+'exttooltype'];
Line 1447  function updateExttool(caller,form,suppl Line 1524  function updateExttool(caller,form,suppl
                                     document.getElementById(gradablediv).style.display = 'inline';                                      document.getElementById(gradablediv).style.display = 'inline';
                                 }                                  }
                             }                              }
                               if (document.getElementById(returnurldiv)) {
                                   if (ltitoolsReturnUrl[i][j]) {
                                       document.getElementById(returnurldiv).style.display = 'inline';
                                   } else {
                                       document.getElementById(returnurldiv).style.display = 'none';
                                   }
                               }
                             break;                              break;
                         }                          }
                     }                      }
Line 1456  function updateExttool(caller,form,suppl Line 1540  function updateExttool(caller,form,suppl
     }      }
 }  }
   
   function updateReturnUrl(form,typeid,divid,radioname) {
       if ((document.getElementById(typeid)) &&
          (document.getElementById(divid))) {
           if (document.getElementById(divid).style.display == 'inline') {
               var radelem = form.elements[radioname];
               var inputtype = 'hidden';
               if (radelem.length) {
                   for (var i=0; i<radelem.length; i++) {
                       if (radelem[i].checked) {
                           if (radelem[i].value == 'custom') {
                               inputtype = 'text';            
                           } else {
                               inputtype = 'hidden';
                           }
                           break;
                       }
                   }
               }
               document.getElementById(typeid).type = inputtype;
           }
       }
       return;
   }
   
 function updateTooldim(form,dimendiv,windiv,widthinput,heightinput,linkinput,explaininput) {  function updateTooldim(form,dimendiv,windiv,widthinput,heightinput,linkinput,explaininput) {
     if (form.exttooltarget.length) {      if (form.exttooltarget.length) {
         for (var i=0; i<form.exttooltarget.length; i++) {          for (var i=0; i<form.exttooltarget.length; i++) {

Removed from v.1.8.2.4.4.3  
changed lines
  Added in v.1.8.2.4.4.4


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