Diff for /loncom/interface/lonextresedit.pm between versions 1.8.2.4.4.5 and 1.35

version 1.8.2.4.4.5, 2025/06/14 20:48:54 version 1.35, 2025/02/03 22:52:36
Line 284  sub process_changes { Line 284  sub process_changes {
                 if ($ferr) {                  if ($ferr) {
                     $errormsg = &mt('Reload failed: [_1].',$ferr);                      $errormsg = &mt('Reload failed: [_1].',$ferr);
                 } else {                  } else {
                     unless ($supplementalflag) {                      &Apache::loncommon::update_content_constraints($cdom,$cnum,$chome,
                         &Apache::loncommon::update_content_constraints($cdom,$cnum,$chome,                                                                     $cdom.'_'.$cnum);
                                                                        $cdom.'_'.$cnum);  
                     }  
                 }                  }
             }              }
             if (($type eq 'tool') && ($newgradable)) {              if (($type eq 'tool') && ($newgradable)) {
Line 311  sub update_exttool { Line 309  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'},       $newhash{'crslabel'},$newhash{'crstitle'},$newhash{'crsappend'},$newhash{'gradable'}) = split(/:/,$args);
      $newhash{'returnurl'},$newhash{'backtourl'},$newhash{'desturl'},$newhash{'delay'}) = split(/:/,$args);      foreach my $item ('linktext','explanation','crslabel','crstitle','crsappend') {
     foreach my $item ('linktext','explanation','crslabel','crstitle','crsappend','backtourl','desturl','delay') {  
         $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);
     my ($tooltype,$tool,$ltihash);      foreach my $item ('target','width','height','linktext','explanation','crslabel','crstitle','crsappend','gradable') {
     if ($toolhash{'id'} =~/^c(\d+)$/) {  
         $tool = $1;  
         $tooltype = 'crs';  
     } elsif ($toolhash{'id'} =~/^\d+$/) {  
         $tooltype = 'dom';  
         $tool = $toolhash{'id'};  
     }  
     if (($tool ne '') && ($tooltype ne '')) {  
         my %tools;  
         my %tooltypes = &Apache::loncommon::usable_exttools();  
         if ($tooltypes{$tooltype}) {  
             if ($tooltype eq 'dom') {  
                 %tools = &Apache::lonnet::get_domain_lti($cdom,'consumer');  
             } elsif ($tooltypes{'crs'}) {  
                 %tools = &Apache::lonnet::get_course_lti($cnum,$cdom,'consumer');  
             }  
             $ltihash = $tools{$tool};  
         }  
     }  
     foreach my $item ('target','width','height','linktext','explanation','crslabel','crstitle','crsappend','gradable','returnurl','backtourl','desturl','delay') {  
         $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 352  sub update_exttool { Line 329  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} = '';  
             }  
         } elsif ($item eq 'desturl') {  
             my $nocrsdest = 1;  
             if ((ref($ltihash) eq 'HASH') && (ref($ltihash->{'crsconf'}) eq 'HASH') &&  
                 ($ltihash->{'crsconf'}->{'desturl'})) {  
                 undef($nocrsdest);  
             }  
             if ($nocrsdest) {  
                 $newhash{$item} = '';  
             }  
         } elsif ($item eq 'delay') {  
             if ($newhash{'desturl'} eq '') {  
                 $newhash{$item} = '';  
             }  
             unless ($newhash{$item} =~ /^(\d+\.?\d*)$/) {  
                 $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 395  sub update_exttool { Line 352  sub update_exttool {
                 }                  }
             } else {              } else {
                 $toolhash{$item} = $newhash{$item};                  $toolhash{$item} = $newhash{$item};
                 $changed = 1;                  $changed = 1; 
             }              }
         }          }
     }      }
Line 438  sub extedit_form { Line 395  sub extedit_form {
         $tabid = 'ee';          $tabid = 'ee';
     }      }
     my ($formname,$formid,$toggle,$fieldsetid,$urlid,$subdivid,$dispdivstyle,$dimendivstyle,      my ($formname,$formid,$toggle,$fieldsetid,$urlid,$subdivid,$dispdivstyle,$dimendivstyle,
         $windivstyle,$linktextstyle,$explanationstyle,$labelstyle,$titlestyle,$providerstyle,          $windivstyle,$linktextstyle,$explanationstyle,$labelstyle,$titlestyle,
         $appendstyle,$gradablestyle,$returnurlstyle,$subdivstyle,$desturlstyle,          $appendstyle,$gradablestyle,$subdivstyle,$legend,$urlelem,$toolelem,%toolattr);
         $desturlinfostyle,$desturlfixedstyle,$legend,$urlelem,$toolelem,%toolattr);  
     $formname = 'new'.$type;      $formname = 'new'.$type;
     $toggle = $type;      $toggle = $type;
     $fieldsetid = 'upload'.$type.'form';      $fieldsetid = 'external'.$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','returnurldiv','crstitle','crslabel',                                         'gradablediv','crstitle','crslabel','crsappend',
                                        'crsappend','windiv','linktextdiv','explanationdiv',                                         'windiv','linktextdiv','explanationdiv',
                                        'linktext','explanation','provider','providerpath','customreturnurl',                                         'linktext','explanation','providerurl');
                                        'desturl','delay','providerdiv','desturldiv','desturlinfodiv',  
                                        'desturlfixeddiv','fixeddest','fixeddelay');  
     $dispdivstyle = 'display:none';      $dispdivstyle = 'display:none';
     $dimendivstyle = 'display:none';      $dimendivstyle = 'display:none';
     $windivstyle = 'display:none';      $windivstyle = 'display:none';
Line 459  sub extedit_form { Line 413  sub extedit_form {
     $explanationstyle = 'display:none';      $explanationstyle = 'display:none';
     $labelstyle = 'display:none';      $labelstyle = 'display:none';
     $titlestyle = 'display:none';      $titlestyle = 'display:none';
     $providerstyle = 'display:none';  
     $appendstyle = 'display:none';      $appendstyle = 'display:none';
     $gradablestyle = 'display:none';      $gradablestyle = 'display:none';
     $returnurlstyle = 'display:none';  
     $desturlstyle = 'display:none';  
     $desturlinfostyle = 'display:none';  
     $desturlfixedstyle = 'display:none';  
     $subdivstyle = 'display:block';      $subdivstyle = 'display:block';
     if ($supplementalflag) {      if ($supplementalflag) {
         $formname = 'newsupp'.$type;          $formname = 'newsupp'.$type;
         $toggle = 'supp'.$type;          $toggle = 'supp'.$type;
         $fieldsetid = 'uploadsupp'.$type.'form';          $fieldsetid = 'externalsupp'.$type.'form';
         $urlid = 'supp'.$type.'url';          $urlid = 'supp'.$type.'url';
         map { $toolattr{$_} = 'supp'.$toolattr{$_}; } (keys(%toolattr));          map { $toolattr{$_} = 'supp'.$toolattr{$_}; } (keys(%toolattr));
     }      }
     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,$path,$returnurl,$chkgrd,$chknogrd,%chkstate,          $linktext,$explanation,$providerurl,$chkgrd,$chknogrd,%chkstate);
         $chknoreturn,$chkreturndef,$chkreturncust,$customreturn,$backtourl,$desturl,$delay,  
         $chknodest,$chkdest);  
     $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 510  sub extedit_form { Line 457  sub extedit_form {
             $active = '<input type="hidden" name="active" value="'.$tabid.'" />';              $active = '<input type="hidden" name="active" value="'.$tabid.'" />';
         }          }
         $formname = 'edit'.$type.'_'.$residx;          $formname = 'edit'.$type.'_'.$residx;
         $fieldsetid = 'upload'.$type.$residx;          $fieldsetid = 'external'.$type.$residx;
         $urlid = $type.'url_'.$residx;          $urlid = $type.'url_'.$residx;
         map { $toolattr{$_} .= '_'.$residx; } (keys(%toolattr));          map { $toolattr{$_} .= '_'.$residx; } (keys(%toolattr));
         $srcclass = ' class="LC_nobreak"';          $srcclass = ' class="LC_nobreak"';
Line 525  sub extedit_form { Line 472  sub extedit_form {
         if ($type eq 'tool') {          if ($type eq 'tool') {
             $link = $lt{'et'};              $link = $lt{'et'};
         }          }
         $link = '<a class="LC_menubuttons_link" href="javascript:toggleUpload('."'$toggle'".');">'.$link.'</a>'.$helpitem;          $link = '<a class="LC_menubuttons_link" href="javascript:toggleExternal('."'$toggle'".');">'.$link.'</a>'.$helpitem;
         if ($type eq 'tool') {          if ($type eq 'tool') {
             $legend = $lt{'te'};              $legend = $lt{'te'};
         } else {          } else {
Line 552  sub extedit_form { Line 499  sub extedit_form {
         $urlelem = '<input type="text" size="'.$size.'" name="exturl" id="'.$urlid.'" value="'.$orig_url.'"'.$disabled.' />';          $urlelem = '<input type="text" size="'.$size.'" name="exturl" id="'.$urlid.'" value="'.$orig_url.'"'.$disabled.' />';
     } else {      } else {
         my $class = 'LC_nobreak';          my $class = 'LC_nobreak';
         my ($nocrsdest,$fixeddest,$fixeddelay,$showprovider,$provider,$scheme);  
         if ($residx) {          if ($residx) {
             $class = 'LC_docs_ext_edit LC_nobreak';               $class = 'LC_docs_ext_edit LC_nobreak'; 
             if ($orig_url =~ m{^/adm/$cdom/$cnum/(\d+)/ext\.tool$}) {              if ($orig_url =~ m{^/adm/$cdom/$cnum/(\d+)/ext\.tool$}) {
Line 562  sub extedit_form { Line 508  sub extedit_form {
                 if ($toolhash{'id'} =~/^c(\d+)$/) {                  if ($toolhash{'id'} =~/^c(\d+)$/) {
                     $tool = $1;                      $tool = $1;
                     $tooltype = 'crs';                      $tooltype = 'crs';
                       if (ref($ltitools) eq 'HASH') {
                           if (ref($ltitools->{'crs'}) eq 'HASH') {
                               $ltihash = $ltitools->{'crs'}->{$tool};
                           }
                       }
                 } elsif ($toolhash{'id'} =~/^\d+$/) {                  } elsif ($toolhash{'id'} =~/^\d+$/) {
                     $tooltype = 'dom';                      $tooltype = 'dom';
                     $tool = $toolhash{'id'};                      $tool = $toolhash{'id'};
                 }                      if (ref($ltitools) eq 'HASH') {
                 if (($tool ne '') && ($tooltype ne '') && (ref($ltitools) eq 'HASH')) {                          if (ref($ltitools->{'dom'}) eq 'HASH') {
                     if (ref($ltitools->{$tooltype}) eq 'HASH') {                              $ltihash = $ltitools->{'dom'}->{$tool};
                         $ltihash = $ltitools->{$tooltype}->{$tool};                          }
                     }                      }
                 }                  }
                 if (($tool ne '') && (ref($ltihash) eq 'HASH')) {                  if (($tool ne '') && (ref($ltihash) eq 'HASH')) {
Line 578  sub extedit_form { Line 529  sub extedit_form {
                     if ($icon) {                      if ($icon) {
                         $image = '<img src="'.$icon.'" alt="'.$tooltitle.'" />';                          $image = '<img src="'.$icon.'" alt="'.$tooltitle.'" />';
                     }                      }
                     if ($ltihash->{'url'} =~ m{^https?\://}) {                      if ($ltihash->{'url'} =~ m{://}) {
                         ($scheme,$provider,$path) = ($ltihash->{'url'} =~ m{^(https?\://)([^/]+)(|/.+)$});                          (my $prot,my $host,$providerurl) = ($ltihash->{'url'} =~ m{^([^/]+)://([^/]+)(|/.+)$});
                     } else {                      } else {
                         $path = $ltihash->{'url'};                          $providerurl = $ltihash->{'url'};
                     }                      }
                     $tooltarget = $toolhash{'target'};                      $tooltarget = $toolhash{'target'};
                     if ($tooltarget eq 'window') {                      if ($tooltarget eq 'window') {
Line 615  sub extedit_form { Line 566  sub extedit_form {
                         if ($ltihash->{'crsconf'}->{'append'}) {                          if ($ltihash->{'crsconf'}->{'append'}) {
                             $crsappend = $toolhash{'crsappend'};                              $crsappend = $toolhash{'crsappend'};
                             $appendstyle = 'display:inline';                              $appendstyle = 'display:inline';
                             $showprovider = 1;  
                         }                          }
                         if ($ltihash->{'crsconf'}->{'target'}) {                          if ($ltihash->{'crsconf'}->{'target'}) {
                             $dispdivstyle = 'display:block';                              $dispdivstyle = 'display:block';
Line 626  sub extedit_form { Line 576  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';  
                             }  
                         }  
                         if ($ltihash->{'crsconf'}->{'desturl'}) {  
                             $desturl = $toolhash{'desturl'};  
                             $desturlstyle = 'display:inline';  
                             $delay = $toolhash{'delay'};  
                             $showprovider = 1;  
                             if ($desturl ne '') {  
                                 $desturlinfostyle = 'display:inline';  
                                 $chkdest = ' checked="checked"';  
                                 $chknodest = '';  
                             } else {  
                                 $desturlinfostyle = 'display:none';  
                                 $chkdest = '';  
                                 $chknodest = ' checked="checked"';  
                             }  
                         } else {  
                             $nocrsdest = 1;  
                         }  
                     }                      }
                     $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';
                     if (($ltihash->{'desturl'}) && ($nocrsdest) && ($ltihash->{'defdest'} =~ m{^(https?\://|/)})) {  
                         $fixeddest = $ltihash->{'defdest'};  
                         if ($ltihash->{'defdelay'} =~ /^\d+\.?\d*$/) {  
                             $fixeddelay = $ltihash->{'defdelay'};  
                         }  
                         $desturlfixedstyle = 'display:inline-block';  
                         $showprovider = 1;  
                     }  
                     if (($showprovider) && ($provider ne '')) {  
                         $providerstyle = 'display:inline-block';  
                     }  
                 }                  }
             }              }
         } else {          } else {
Line 751  sub extedit_form { Line 658  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"';          $toolelem .= '<div id="'.$toolattr{'dispdiv'}.'" style="'.$dispdivstyle.'">'.
             $chkreturncust = '';  
             $chknodest = ' checked="checked"';  
             $chkdest = '';  
         }  
         my $onclickreturl = ' onclick="updateReturnUrl('."this.form,'$toolattr{'customreturnurl'}','$toolattr{'returnurldiv'}','exttoolreturnurl'".');"';  
         my $onclickdest = ' onclick="updateDestUrl('."this.form,'$toolattr{'desturlinfodiv'}','$toolattr{'desturldiv'}','exttooldest'".');"';  
         $toolelem.= '<div id="'.$toolattr{'providerdiv'}.'" style="'.$providerstyle.'">'.  
                     '<span class="'.$class.'">'.&mt('Provider').':&nbsp;<span id="'.$toolattr{'provider'}.'">'.$scheme.$provider.'</span><br />'.  
                     '<span class="'.$class.'">'.&mt('Provider path').':&nbsp;<span id="'.$toolattr{'providerpath'}.'">'.$path.'</span>'."\n".  
                     '</div>'."\n".  
                     '<div style="padding:0;clear:both;margin:0;border:0"></div>'.  
                     '<div id="'.$toolattr{'crsappenddiv'}.'" style="'.$appendstyle.'">'.  
                     '<span class="'.$class.'">'.&mt('Append to LTI login URL').':</span><br />'.  
                     '<input type="text" id="'.$toolattr{'crsappend'}.'" size="30" name="exttoolappend" value="'.$crsappend.'"'.$disabled.' /></span>'.  
                     '</div>'."\n".  
                     '<div style="padding:0;clear:both;margin:0;border:0"></div>'.  
                     '<div id="'.$toolattr{'desturldiv'}.'" style="'.$desturlstyle.'">'.  
                     '<span class="'.$class.'">'.&mt('Post-login destination different from path').':&nbsp;'.  
                     '<label><input type="radio" name="exttooldest" value="0"'.$chknodest.$disabled.$onclickdest.' />'.  
                     &mt('No').'</label>'.('&nbsp;'x2).  
                     '<label><input type="radio" name="exttooldest" value="1"'.$chkdest.$disabled.$onclickdest.' />'.  
                     &mt('Yes').'</label>'.('&nbsp;'x2).  
                     '</span><br />'."\n".  
                     '<div id="'.$toolattr{'desturlinfodiv'}.'" style="'.$desturlinfostyle.'">'.  
                     '<span class="'.$class.'">'.  
                     '<input type="text" size="'.$size.'" name="exttooldesturl" value="'.$desturl.'"'.$disabled.' /></label></span><br />'.  
                     '<span class="'.$class.'"><label>'.&mt('Delay between login and redirect').  
                     ':<input type="text" size="3" name="exttooldelay" value="'.$delay.'"'.$disabled.' />&nbsp;s'.  
                     '</label></span></div></div>'."\n".  
                     '<div id="'.$toolattr{'desturlfixeddiv'}.'" style="'.$desturlfixedstyle.'">'.  
                     '<span class="'.$class.'">'.&mt('Destination after provider login').':&nbsp;'.  
                     '<br /><span id="'.$toolattr{'fixeddest'}.'">'.$fixeddest.'</span></span>'.  
                     '<br /><span class="'.$class.'">'.  
                     &mt('Post-login delay before redirect to destination').':&nbsp;<span id="'.$toolattr{'fixeddelay'}.'">'.$fixeddelay.'</span>&nbsp;s</span>'."\n".  
                     '<br /></div>'.  
                     '<div style="padding:0;clear:both;margin:0;border:0"></div>'.  
                     '<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,'.
                     "'$toolattr{dimendiv}','$toolattr{windiv}','$toolattr{dimenwidth}','$toolattr{dimenheight}',                      "'$toolattr{dimendiv}','$toolattr{windiv}','$toolattr{dimenwidth}','$toolattr{dimenheight}',
Line 807  sub extedit_form { Line 674  sub extedit_form {
                     '<div id="'.$toolattr{'dimendiv'}.'" style="'.$dimendivstyle.'"><span class="'.$class.'">'.                      '<div id="'.$toolattr{'dimendiv'}.'" style="'.$dimendivstyle.'"><span class="'.$class.'">'.
                     &mt('Width').':&nbsp;<input type="text" size="4" id="'.$toolattr{'dimenwidth'}.'" name="exttoolwidth" value="'.$width.'"'.$disabled.' />'.('&nbsp;'x2).                      &mt('Width').':&nbsp;<input type="text" size="4" id="'.$toolattr{'dimenwidth'}.'" name="exttoolwidth" value="'.$width.'"'.$disabled.' />'.('&nbsp;'x2).
                     &mt('Height').':&nbsp;<input type="text" size="4" id="'.$toolattr{'dimenheight'}.'" name="exttoolheight" value="'.$height.'"'.$disabled.' /></span>'."\n".                      &mt('Height').':&nbsp;<input type="text" size="4" id="'.$toolattr{'dimenheight'}.'" name="exttoolheight" value="'.$height.'"'.$disabled.' /></span>'."\n".
                     '</div></div>'.                      '</div></div>';
                     '<div id="'.$toolattr{'windiv'}.'" style="'.$windivstyle.'">'.          $toolelem .= '<div id="'.$toolattr{'windiv'}.'" style="'.$windivstyle.'">'.
                     '<div id="'.$toolattr{'linktextdiv'}.'" class="LC_left_float" style="'.$linktextstyle.'">'.                       '<div id="'.$toolattr{'linktextdiv'}.'" class="LC_left_float" style="'.$linktextstyle.'">'.
                     '<span class="'.$class.'">'.&mt('Link Text').'</span><br /><input type="text" size="25" id="'.$toolattr{'linktext'}.                       '<span class="'.$class.'">'.&mt('Link Text').'</span><br /><input type="text" size="25" id="'.$toolattr{'linktext'}.
                     '" name="exttoollinktext" value="'.$linktext.'"'.$disabled.' />'.                       '" name="exttoollinktext" value="'.$linktext.'"'.$disabled.' />'.
                     '</div><div id="'.$toolattr{'explanationdiv'}.'" class="LC_left_float" style="'.$explanationstyle.'">'.                       '</div><div id="'.$toolattr{'explanationdiv'}.'" class="LC_left_float" style="'.$explanationstyle.'">'.
                     '<span class="'.$class.'">'.&mt('Explanation').'</span><br />'.                       '<span class="'.$class.'">'.&mt('Explanation').'</span><br />'.
                     '<textarea rows="'.$rows.'" cols="'.$cols.'" id="'.$toolattr{'explanation'}.'" name="exttoolexplanation" '.$disabled.'>'.                       '<textarea rows="'.$rows.'" cols="'.$cols.'" id="'.$toolattr{'explanation'}.'" name="exttoolexplanation" '.$disabled.'>'.
                     $explanation.'</textarea></div><div style="padding:0;clear:both;margin:0;border:0"></div>'.                       $explanation.'</textarea></div><div style="padding:0;clear:both;margin:0;border:0"></div>'.
                     '</div>'.                       '</div>';
                     '<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>'."\n".                      '</div>'.
                     '<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>'."\n".                      '</div>'.
                       '<div id="'.$toolattr{'crsappenddiv'}.'" style="'.$appendstyle.'">'.
                       '<span class="'.$class.'">'.&mt('Append to URL[_1]',
                       '<span id="'.$toolattr{'providerurl'}.'">&nbsp;('.$providerurl.')<br /></span>').
                       '<input type="text" id="'.$toolattr{'crsappend'}.'" size="30" name="exttoolappend" value="'.$crsappend.'"'.$disabled.' /></span><br />'.
                       '</div>'.
                     '<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><br /></div>'."\n".                      ' />'.&mt('No').'</label></span></div>';
                     '<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') {
         $chooser = "          $chooser = "
 <div>  <div>
 <span$srcclass>  <span$srcclass>
   <label>
 $extsrc  $extsrc
 $urlelem  $urlelem
   </label>
 $preview  $preview
 </span>  </span>
 </div>  </div>
Line 866  $active Line 730  $active
 $chooser  $chooser
 <div $idattr style="$subdivstyle">  <div $idattr style="$subdivstyle">
 <span$srcclass>  <span$srcclass>
   <label>
 $title  $title
 <input type="text" size="$size" name="exttitle" value="$orig_title" $disabled />  <input type="text" size="$size" name="exttitle" value="$orig_title" $disabled />
   </label>
 <input type="hidden" name="importdetail" value="" />  <input type="hidden" name="importdetail" value="" />
 $pathitem  $pathitem
 $hiddenelem  $hiddenelem
Line 965  sub extedit_javascript { Line 831  sub extedit_javascript {
     my ($toolsjs,$exttoolnums,$exttooloptions);      my ($toolsjs,$exttoolnums,$exttooloptions);
     if (ref($toolsref) eq 'HASH') {      if (ref($toolsref) eq 'HASH') {
         $toolsjs = "        var ltitools = new Array();\n".          $toolsjs = "        var ltitools = new Array();\n".
                    "        var ltitoolsProvider = new Array();\n".                     "        var ltitoolsUrl = new Array();\n".
                    "        var ltitoolsPath = new Array();\n".  
                    "        var ltitoolsTarget = new Array();\n".                     "        var ltitoolsTarget = new Array();\n".
                    "        var ltitoolsWidth = new Array();\n".                     "        var ltitoolsWidth = new Array();\n".
                    "        var ltitoolsHeight = new Array();\n".                     "        var ltitoolsHeight = new Array();\n".
Line 977  sub extedit_javascript { Line 842  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".  
                    "        var ltitoolsDestUrl = new Array();\n".  
                    "        var ltitoolsDefDest = new Array();\n".  
                    "        var ltitoolsDefDelay = 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 990  sub extedit_javascript { Line 851  sub extedit_javascript {
             if (ref($toolsref->{$type}) eq 'HASH') {              if (ref($toolsref->{$type}) eq 'HASH') {
                 my $num = scalar(keys(%{$toolsref->{$type}}));                  my $num = scalar(keys(%{$toolsref->{$type}}));
                 $toolsjs .= "        ltitools[$idx] = new Array($num);\n".                  $toolsjs .= "        ltitools[$idx] = new Array($num);\n".
                             "        ltitoolsProvider[$idx] = new Array($num);\n".                              "        ltitoolsUrl[$idx] = new Array($num);\n".
                             "        ltitoolsPath[$idx] = new Array($num);\n".  
                             "        ltitoolsTarget[$idx] = new Array($num);\n".                              "        ltitoolsTarget[$idx] = new Array($num);\n".
                             "        ltitoolsWidth[$idx] = new Array($num);\n".                              "        ltitoolsWidth[$idx] = new Array($num);\n".
                             "        ltitoolsHeight[$idx] = new Array($num);\n".                              "        ltitoolsHeight[$idx] = new Array($num);\n".
Line 1002  sub extedit_javascript { Line 862  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".  
                             "        ltitoolsDestUrl[$idx] = new Array($num);\n".  
                             "        ltitoolsDefDest[$idx] = new Array($num);\n".  
                             "        ltitoolsDefDelay[$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 1016  sub extedit_javascript { Line 872  sub extedit_javascript {
                             my $height = $toolsref->{$type}->{$key}->{'display'}->{'height'};                              my $height = $toolsref->{$type}->{$key}->{'display'}->{'height'};
                             my $linkdef = $toolsref->{$type}->{$key}->{'display'}->{'linktext'};                              my $linkdef = $toolsref->{$type}->{$key}->{'display'}->{'linktext'};
                             my $explaindef = $toolsref->{$type}->{$key}->{'display'}->{'explanation'};                              my $explaindef = $toolsref->{$type}->{$key}->{'display'}->{'explanation'};
                             my ($scheme,$provider,$path);                              my $providerurl;
                             if ($toolsref->{$type}->{$key}->{'url'} =~ m{^https?\://}) {                              if ($toolsref->{$type}->{$key}->{'url'} =~ m{://}) {
                                 ($scheme,$provider,$path) =                                  (my $prot,my $host,$providerurl) =
                                     ($toolsref->{$type}->{$key}->{'url'} =~ m{^(https?\://)([^/]+)(|/.+)$});                                      ($toolsref->{$type}->{$key}->{'url'} =~ m{^([^/]+)://([^/]+)(|/.+)$});
                             } else {                              } else {
                                 $path = $toolsref->{$type}->{$key}->{'url'};                                  $providerurl = $toolsref->{$type}->{$key}->{'url'};
                             }                              }
                             $scheme = &LONCAPA::map::qtunescape($scheme);                              $providerurl = &LONCAPA::map::qtunescape($providerurl);
                             $provider = &LONCAPA::map::qtunescape($provider);  
                             $path = &LONCAPA::map::qtunescape($path);  
                             $toolsjs .= "        ltitools[$idx][$i] = '$key';\n".                              $toolsjs .= "        ltitools[$idx][$i] = '$key';\n".
                                         "        ltitoolsTarget[$idx][$i] = '$target';\n".                                          "        ltitoolsTarget[$idx][$i] = '$target';\n".
                                         "        ltitoolsWidth[$idx][$i] = '$width';\n".                                          "        ltitoolsWidth[$idx][$i] = '$width';\n".
                                         "        ltitoolsHeight[$idx][$i] = '$height';\n".                                          "        ltitoolsHeight[$idx][$i] = '$height';\n".
                                         "        ltitoolsLinkDef[$idx][$i] = '$linkdef';\n".                                          "        ltitoolsLinkDef[$idx][$i] = '$linkdef';\n".
                                         "        ltitoolsExplainDef[$idx][$i] = '$explaindef';\n".                                          "        ltitoolsExplainDef[$idx][$i] = '$explaindef';\n".
                                         "        ltitoolsProvider[$idx][$i] = '$scheme$provider';\n".                                          "        ltitoolsUrl[$idx][$i] = '$providerurl';\n";
                                         "        ltitoolsPath[$idx][$i] = '$path';\n";  
                         }                          }
                         if (ref($toolsref->{$type}->{$key}->{'crsconf'}) eq 'HASH') {                          if (ref($toolsref->{$type}->{$key}->{'crsconf'}) eq 'HASH') {
                             my $display = $toolsref->{$type}->{$key}->{'crsconf'}->{'target'};                              my $display = $toolsref->{$type}->{$key}->{'crsconf'}->{'target'};
Line 1048  sub extedit_javascript { Line 901  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";  
                             my $desturl = $toolsref->{$type}->{$key}->{'crsconf'}->{'desturl'};  
                             $toolsjs .= "         ltitoolsDestUrl[$idx][$i] = '$desturl';\n";  
                         }                          }
                         my $defdest = $toolsref->{$type}->{$key}->{'defdest'};  
                         $toolsjs .= "         ltitoolsDefDest[$idx][$i] = '$defdest';\n";  
                         my $defdelay = $toolsref->{$type}->{$key}->{'defdelay'};  
                         $toolsjs .= "         ltitoolsDefDelay[$idx][$i] = '$defdelay';\n";  
                     }                      }
                     $i++;                      $i++;
                 }                  }
Line 1213  function setExternal(extform,residx,type Line 1058  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 1267  function setExternal(extform,residx,type Line 1110  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 += '::';  
         }  
         var desturldiv = prefix+'tooldesturldiv';  
         if (residx > 0) {  
             desturldiv += '_'+residx;  
         }  
         if (document.getElementById(desturldiv)) {  
             if (document.getElementById(desturldiv).style.display == 'inline') {  
                 if (extform.exttooldest.length) {  
                     for (var i=0; i<extform.exttooldest.length; i++) {  
                         if (extform.exttooldest[i].checked) {  
                             if (extform.exttooldest[i].value == '1') {  
                                 var dest = extform.exttooldesturl.value;  
                                 dest.trim();  
                                 var delay = extform.exttooldelay.value;  
                                 info += ':'+escape(dest)+':'+escape(delay);  
                             } else {  
                                 info += '::';  
                             }  
                         }  
                     }  
                 }  
             } 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 1330  function setExternal(extform,residx,type Line 1120  function setExternal(extform,residx,type
 }  }
   
 function editext(residx,type) {  function editext(residx,type) {
     if (document.getElementById('upload'+type+residx)) {      if (document.getElementById('external'+type+residx)) {
         var curr = document.getElementById('upload'+type+residx).style.display;          var curr = document.getElementById('external'+type+residx).style.display;
         if (curr == 'none') {          if (curr == 'none') {
             disp = 'block';              disp = 'block';
         } else {          } else {
             disp = 'none';              disp = 'none';
         }          }
         document.getElementById('upload'+type+residx).style.display=disp;          document.getElementById('external'+type+residx).style.display=disp;
     }      }
     resize_scrollbox('contentscroll','1','1');      resize_scrollbox('contentscroll','1','1');
     return;      return;
Line 1502  function updateExttool(caller,form,suppl Line 1292  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';
     provider = prefix+'toolprovider';  
     providerpath = prefix+'toolproviderpath';  
     providerdiv = prefix+'toolproviderdiv';  
     desturldiv = prefix+'tooldesturldiv';  
     desturlfixeddiv = prefix+'tooldesturlfixeddiv';  
     fixeddest = prefix+'toolfixeddest';  
     fixeddelay = prefix+'toolfixeddelay';  
     labelinput = prefix+'toolcrslabel';      labelinput = prefix+'toolcrslabel';
     titleinput = prefix+'toolcrstitle';      titleinput = prefix+'toolcrstitle';
     appendinput = prefix+'toolcrsappend';      appendinput = prefix+'toolcrsappend';
Line 1522  function updateExttool(caller,form,suppl Line 1305  function updateExttool(caller,form,suppl
         var toolpick = caller.options[caller.selectedIndex].value;          var toolpick = caller.options[caller.selectedIndex].value;
         $toolsjs          $toolsjs
         if (toolpick == '') {          if (toolpick == '') {
             if (document.getElementById(providerdiv)) {  
                 document.getElementById(providerdiv).style.display = 'none';  
             }  
             if (document.getElementById(desturldiv)) {  
                 document.getElementById(desturldiv).style.display = 'none';  
             }  
             if (document.getElementById(desturlfixeddiv)) {  
                 document.getElementById(desturlfixeddiv).style.display = 'none';  
             }  
             if (document.getElementById(fixeddest)) {  
                 document.getElementById(fixeddest).innerHTML = '';  
             }  
             if (document.getElementById(fixeddelay)) {  
                 document.getElementById(fixeddelay).innerHTML = '';  
             }  
             if (document.getElementById(dispdiv)) {              if (document.getElementById(dispdiv)) {
                 document.getElementById(dispdiv).style.display = 'none';                      document.getElementById(dispdiv).style.display = 'none';    
             }              }
Line 1564  function updateExttool(caller,form,suppl Line 1332  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 1585  function updateExttool(caller,form,suppl Line 1350  function updateExttool(caller,form,suppl
                 if (ltitools[i].length > 0) {                  if (ltitools[i].length > 0) {
                     for (var j=0; j<ltitools[i].length; j++) {                      for (var j=0; j<ltitools[i].length; j++) {
                         if (ltitools[i][j] == toolpick) {                          if (ltitools[i][j] == toolpick) {
                             if (document.getElementById(providerdiv)) {  
                                 if ((ltitoolsDestUrl[i][j]) || (ltitoolsAppend[i][j]) || (ltitoolsDefDest[i][j])) {  
                                     document.getElementById(providerdiv).style.display = 'inline';  
                                     if (document.getElementById(provider)) {  
                                         if ((ltitoolsProvider[i][j] != '') && (ltitoolsProvider[i][j] != null)) {  
                                             document.getElementById(provider).innerHTML = ltitoolsProvider[i][j];  
                                         }  
                                     }  
                                     if (document.getElementById(providerpath)) {  
                                         if ((ltitoolsPath[i][j] != '') && (ltitoolsPath[i][j] != null)) {  
                                             document.getElementById(providerpath).innerHTML = ltitoolsPath[i][j];  
                                         }  
                                     }  
                                 } else {  
                                     document.getElementById(providerdiv).style.display = 'none';  
                                     if (document.getElementById(provider)) {  
                                         document.getElementById(provider).innerHTML = '';  
                                     }  
                                     if (document.getElementById(providerpath)) {  
                                         document.getElementById(providerpath).innerHTML = '';  
                                     }  
                                 }  
                             }  
                             if (document.getElementById(appenddiv)) {  
                                 if (ltitoolsAppend[i][j]) {  
                                     document.getElementById(appenddiv).style.display = 'inline';  
                                 } else {  
                                     document.getElementById(appenddiv).style.display = 'none';  
                                 }  
                             }  
                             if (document.getElementById(desturldiv)) {  
                                 if (ltitoolsDestUrl[i][j]) {  
                                     document.getElementById(desturldiv).style.display = 'inline';  
                                 } else {  
                                     document.getElementById(desturldiv).style.display = 'none';  
                                 }  
                             }  
                             if (document.getElementById(desturlfixeddiv)) {  
                                 if ((!ltitoolsDestUrl[i][j]) && (ltitoolsDefDest[i][j])) {  
                                     document.getElementById(desturlfixeddiv).style.display = 'inline';  
                                 } else {  
                                     document.getElementById(desturlfixeddiv).style.display = 'none';  
                                 }  
                             }  
                             if (document.getElementById(fixeddest)) {  
                                 document.getElementById(fixeddest).innerHTML = ltitoolsDefDest[i][j];  
                             }  
                             if (document.getElementById(fixeddelay)) {  
                                 document.getElementById(fixeddelay).innerHTML = ltitoolsDefDelay[i][j];  
                             }  
                             if (document.getElementById(dispdiv)) {                              if (document.getElementById(dispdiv)) {
                                 if (ltitoolsDisplay[i][j]) {                                  if (ltitoolsDisplay[i][j]) {
                                     document.getElementById(dispdiv).style.display = 'block';                                      document.getElementById(dispdiv).style.display = 'block';
Line 1714  function updateExttool(caller,form,suppl Line 1429  function updateExttool(caller,form,suppl
                                     document.getElementById(titlediv).style.display = 'none';                                      document.getElementById(titlediv).style.display = 'none';
                                 }                                  }
                             }                              }
                               if (document.getElementById(appenddiv)) {
                                   if (ltitoolsAppend[i][j]) {
                                       document.getElementById(appenddiv).style.display = 'inline';
                                       if (document.getElementById(providerurl)) {
                                           if ((ltitoolsUrl[i][j] != '') && (ltitoolsUrl[i][j] != null)) {
                                               document.getElementById(providerurl).innerHTML = '&nbsp;('+ltitoolsUrl[i][j]+')<br />';
                                           }
                                       }
                                   } else {
                                       document.getElementById(appenddiv).style.display = 'none';
                                       if (document.getElementById(providerurl)) {
                                           document.getElementById(providerurl).innerHTML = '';
                                       }
                                   }
                               }
                             if (document.getElementById(gradablediv)) {                              if (document.getElementById(gradablediv)) {
                                 if (supplementalflag != 1) {                                  if (supplementalflag != 1) {
                                     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 1735  function updateExttool(caller,form,suppl Line 1458  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++) {
Line 1798  function updateTooldim(form,dimendiv,win Line 1497  function updateTooldim(form,dimendiv,win
     }      }
 }  }
   
 function updateDestUrl(form,detailid,divid,radioname) {  
     if ((document.getElementById(detailid)) &&  
        (document.getElementById(divid))) {  
         if (document.getElementById(divid).style.display == 'inline') {  
             var radelem = form.elements[radioname];  
             var detaildisplay = 'none';  
             if (radelem.length) {  
                 for (var i=0; i<radelem.length; i++) {  
                     if (radelem[i].checked) {  
                         if (radelem[i].value == '1') {  
                             detaildisplay = 'inline';  
                         } else {  
                             detaildisplay = 'none';  
                         }  
                         break;  
                     }  
                 }  
             }  
             document.getElementById(detailid).style.display = detaildisplay;  
         }  
     }  
     return;  
 }  
   
 ENDJS  ENDJS
   
 }  }

Removed from v.1.8.2.4.4.5  
changed lines
  Added in v.1.35


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