Diff for /loncom/homework/edit.pm between versions 1.151 and 1.154

version 1.151, 2013/12/03 17:47:30 version 1.154, 2016/07/01 19:59:15
Line 134  package Apache::edit; Line 134  package Apache::edit;
   
 use strict;  use strict;
 use Apache::lonnet;  use Apache::lonnet;
   use Apache::loncommon;
 use HTML::Entities();  use HTML::Entities();
 use Apache::lonlocal;  use Apache::lonlocal;
 use lib '/home/httpd/lib/perl/';  use lib '/home/httpd/lib/perl/';
 use LONCAPA;  use LONCAPA qw(:DEFAULT :match);
     
   
 # Global Vars  # Global Vars
Line 164  sub tag_start { Line 165  sub tag_start {
     $description=&mt(&Apache::lonxml::description($token));      $description=&mt(&Apache::lonxml::description($token));
     if (!$description) { $description="<$tag>"; }      if (!$description) { $description="<$tag>"; }
  }   }
  $result.= &start_table($token)."<tr><td>$description</td>      $result.= &start_table($token)."<tr><td>".&Apache::loncommon::insert_folding_button().
                       <td>".&mt('Delete?').' '.          " $description</td><td>".&mt('Delete?')." ".&deletelist($target,$token).
       &deletelist($target,$token)          "</td><td>".&insertlist($target,$token);
       ."</td>  
                        <td>".  
        &insertlist($target,$token);  
 #<td>".   #<td>". 
 #  &movebuttons($target,$token).  #  &movebuttons($target,$token).
 #    "</tr><tr><td colspan=\"3\">\n";  #    "</tr><tr><td colspan=\"3\">\n";
Line 232  sub end_table { Line 230  sub end_table {
     return $result;      return $result;
 }  }
   
 sub start_spanning_row { return '<tr><td colspan="5" bgcolor="#F0F0F0">';}  sub start_spanning_row {
       return '<tr name="foldblock_'.$Apache::lonxml::curdepth.
       '" style="visibility: \'\'"><td colspan="5" bgcolor="#F0F0F0">';
   }
 sub start_row          { return '<tr><td bgcolor="#DDDDDD">';            }  sub start_row          { return '<tr><td bgcolor="#DDDDDD">';            }
 sub end_row            { return '</td></tr>';          }  sub end_row            { return '</td></tr>';          }
   
Line 788  sub element_change_detection { Line 789  sub element_change_detection {
   
 sub submit_ask_anyway {  sub submit_ask_anyway {
     my ($extra_action) = @_;      my ($extra_action) = @_;
     return ' onclick="still_ask=true;'.$extra_action.'" ';      my $resource = $env{'request.ambiguous'};
       return ' onclick="saveScrollPosition(\''.$resource.'\');still_ask=true;'.$extra_action.';" ';
 }  }
   
 sub submit_dont_ask {  sub submit_dont_ask {
     my ($extra_action) = @_;      my ($extra_action) = @_;
     return ' onclick="is_submit=true;'.$extra_action.'" ';      my $resource = $env{'request.ambiguous'};
       return ' onclick="saveScrollPosition(\''.$resource.'\');is_submit=true;'.$extra_action.';" ';
 }  }
   
   sub js_update_linknum {
       return (<<SCRIPT);
   <script type="text/javascript">
   // <![CDATA[
   function updateNumber(name,index,caller,textprompt) {
       var pickitem = document.getElementById(name+'_'+index);
       var picknumtext = document.getElementById(name+'_numtext_'+index);
       if (pickitem.checked) {
           var showval = '';
           if (pickitem.value != 'nochoice') {
               showval = pickitem.value;
           } 
           var picknum=prompt(textprompt,showval);
           if (picknum == '' || picknum == null) {
               if (caller == 'check') {
                   pickitem.checked=false;
                   pickitem.value='nochoice';
               }
           } else {
               picknum.toString();
               var regexdigit=/^\\d+\$/;
               if (regexdigit.test(picknum)) {
                   pickitem.value = picknum;
                   picknumtext.innerHTML = '&nbsp;<a href="javascript:updateNumber(\\''+name+'\\',\\''+index+'\\',\\'link\\',\\''+textprompt+'\\');">'+picknum+'</a>';
               } else {
                   if (caller == 'check') {
                       pickitem.checked=false;
                       pickitem.value='nochoice';
                   }
                   return;
               }
           }
       } else {
           pickitem.value = '';
           picknumtext.innerHTML = '';
       }
   }
   
   // ]]>
   </script>
   SCRIPT
   
   }
   
 sub textarea_sizes {  sub textarea_sizes {
     my ($data)=@_;      my ($data)=@_;
Line 941  sub hidden_arg { Line 987  sub hidden_arg {
 }  }
   
 sub checked_arg {  sub checked_arg {
     my ($description,$name,$list,$token) = @_;      my ($description,$name,$list,$token,$onclick,$useid) = @_;
     my $result;      my $result;
     my $optionlist="";      my $optionlist="";
     my $allselected=$token->[2]{$name};      my $allselected=$token->[2]{$name};
Line 964  sub checked_arg { Line 1010  sub checked_arg {
  last;   last;
     }      }
  }   }
  $result.=&element_change_detection().' />'.$text.'</label></span>'."\n";          if ($useid) {
               $result .= ' id="'.&html_element_name($name).'" ';
           }
    $result.=&element_change_detection().$onclick.' />'.$text.'</label></span>'."\n";
     }      }
     return $result;      return $result;
 }  }
Line 1147  sub deletecoorddata { Line 1196  sub deletecoorddata {
     &Apache::lonnet::delenv('imagechoice.');      &Apache::lonnet::delenv('imagechoice.');
 }  }
   
   #----------------------------------------------------- browse and search links
   sub browse_or_search {
       my ($id,$mode,$titleid,$only,$crsonly,$usesearch) = @_;
       my $output;
       my ($cnum,$cdom) = &Apache::loncommon::crsauthor_url();
       if ($cnum) {
           my $form = 'lonhomework';
           my ($element,$bretitleelement,$srchtitleelement);
           $element = &get_element($id,$mode); 
           my %lt = &Apache::lonlocal::texthash (
               uacf => 'Use a course file',
               uanf => 'Use a new file',
               impo => 'Import',
               sear => 'Search',
               sefi => 'Select File',
               upfi => 'Upload File',
               dire => 'Directory',
               news => 'New sub-directory',
           );
           my ($importcrsres,$uploadfile,$allonly);
           if ($only) {
               $allonly = $only;
               if ($crsonly) {
                   $allonly .= ','.$crsonly;
               }
           } elsif ($crsonly) {
               $allonly = $crsonly;
           }
           my ($numdirs,$pickfile) =
               &Apache::loncommon::import_crsauthor_form($form,'coursepath_'.$element,'coursefile_'.$element,undef,$allonly,$element);
           if ($pickfile) {
               $importcrsres=(<<CRSRES);
           <fieldset id="importcrsresform_$element" style="display:inline;">
           <legend>$lt{'uacf'}</legend>
           $pickfile
           <input type="button" name="crsres" value="$lt{'sefi'}" onclick="updateCrsFile(this.form,'$element');" />
           </fieldset>
   CRSRES
           }
           my %subdirs;
           my $toppath="/priv/$cdom/$cnum";
           my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'};
           &Apache::lonnet::recursedirs(1,'priv',$londocroot,$toppath,'',\%subdirs);
           my $numcrsdirs = keys(%subdirs);
           my $pickdir;
           if ($numcrsdirs) {
               $pickdir = $lt{'dire'}.'<select name="crsauthorpath_'.$element.'">'."\n".
                                      '<option value="/">/</option>'."\n";
               foreach my $key (sort { lc($a) cmp lc($b) } (keys(%subdirs))) {
                   $pickdir .= '<option value="'.$key.'">'.$key.'</option>'."\n";
               }
               $pickdir .= '</select><br />';
           } else {
               $pickdir = '<input type="hidden" name="crsauthorpath_'.$element.'" value="/" />'."\n";
           }
           my $uploadfile =(<<CRSUPL);
           <fieldset id="uploadcrsresform_$element" style="display:inline;">
           <legend>$lt{'uanf'}</legend>
           <p>
           $pickdir
           <span class="LC_nobreak">$lt{'news'}?&nbsp;
           <label><input type="radio" name="newsubdir_$element" value="0" onclick="toggleNewsubdir(this.form,'$element');" checked="checked" />No</label>
           &nbsp;
           <label><input type="radio" name="newsubdir_$element" value="1" onclick="toggleNewsubdir(this.form,'$element');" />Yes</label>
           </span><span id="newsubdir_$element"></span>
           <input type="hidden" name="newsubdirname_$element" id="newsubdirname_$element" value="" autocomplete="off" />
           </p>
           <input type="file" id="uploadcrsres_$element" name="uploadcrsres_$element" size="40" />
           <input type="hidden" id="crsuploadto_$element" name="filename_$element" value="$ENV{'REQUEST_URI'}" />
           <input type="submit" id="crsupload_$element" class="LC_uploadcrsres" value="$lt{'upfi'}" />
           <iframe id="crsupload_target_$element" name="crsupload_target_$element" src="" style="width:0px;height:0px;border:0px"></iframe>
           </fieldset>
   CRSUPL
           if ($titleid) {
               $bretitleelement=",'$only','','".&escape("$titleid\_$Apache::lonxml::curdepth")."'";
               $srchtitleelement=",'".&escape("$titleid\_$Apache::lonxml::curdepth")."'";
           } else {
               $bretitleelement=",'$only'";
           }
           $output = '<a href="javascript:toggleChooser(document.'.$form.",'$element'".');">'.
                     &mt('Choose File').'</a>'.
                     '<div id="chooser_'.$element.'" style="display:none" class="LC_left_float">'.
                     '<fieldset><legend>'.&mt('Choose File').'</legend>';
           if ($numdirs) {
               $output .= '<label><input type="radio" name="chooser_'.$element.'" value="crsres" onclick="toggleCrsFile(this.form,'."'$element','$numdirs'".')" />'.$lt{'uacf'}.'</label>&nbsp;';
           }
           $output .= '<label><input type="radio" name="chooser_'.$element.'" value="upload" onclick="toggleCrsUpload(this.form,'."'$element','$numcrsdirs'".')" />'.$lt{'uanf'}.'</label>&nbsp;'.
                      '<label><input type="radio" name="chooser_'.$element.'" value="import" onclick="toggleResImport(this.form,'."'$element'".');openbrowser('."'$form','$element'$bretitleelement)".'" />'.$lt{'impo'}.'</label>';
           if ($usesearch) {
               $output .= '&nbsp;<label><input type="radio" name="chooser_'.$element.'" value="search" onclick="opensearcher('."'$form','$element'$srchtitleelement".')" />'.$lt{'sear'}.'</label>';
           }
           $output .= '<div id="chooser_'.$element.'_crsres" style="display:none">'.
                      $importcrsres.
                      '</div>'.
                      '<div id="chooser_'.$element.'_upload" style="display:none">'.
                      $uploadfile. 
                      '</div>'.
                      '</fieldset></div>';
                       
       } else {
           $output = &browse($id, $mode, $titleid, $only);
           if ($usesearch) {
               $output .= ' '.&search($id, $mode, $titleid);
           }
       }
       return $output;
   }
   
 #----------------------------------------------------- browse  #----------------------------------------------------- browse
 sub browse {  sub browse {
     # insert a link to call up the filesystem browser (lonindexer)      # insert a link to call up the filesystem browser (lonindexer)
     my ($id, $mode, $titleid, $only) = @_;      my ($id, $mode, $titleid, $only) = @_;
       my %lt = &Apache::lonlocal::texthash (
                                              se => 'Select',
                                            );
     my $form    = 'lonhomework';      my $form    = 'lonhomework';
     my $element;      my $element = &get_element($id,$mode);
     if (! defined($mode) || $mode eq 'attribute') {  
         $element = &escape("$id\_$Apache::lonxml::curdepth");  
     } elsif ($mode eq 'textnode') {  # for data between <tag> ... </tag>  
         $element = &escape('homework_edit_'.  
                                            $Apache::lonxml::curdepth);  
     }  
     my $titleelement;      my $titleelement;
     if ($titleid) {      if ($titleid) {
  $titleelement=",'$only','','".&escape("$titleid\_$Apache::lonxml::curdepth")."'";   $titleelement=",'$only','','".&escape("$titleid\_$Apache::lonxml::curdepth")."'";
     } else {      } else {
         $titleelement=",'$only'";          $titleelement=",'$only'";
     }      }
     my $result = <<"ENDBUTTON";      return <<"ENDBUTTON";
 <a href=\"javascript:openbrowser('$form','$element'$titleelement)\"\>Select</a>  <a href=\"javascript:openbrowser('$form','$element'$titleelement)\"\>$lt{'se'}</a>
 ENDBUTTON  ENDBUTTON
     return $result;  
 }  }
   
 #----------------------------------------------------- browse  #----------------------------------------------------- search
 sub search {  sub search {
     # insert a link to call up the filesystem browser (lonindexer)      # insert a link to call up the filesystem browser (lonindexer)
     my ($id, $mode, $titleid) = @_;      my ($id, $mode, $titleid) = @_;
     my $form    = 'lonhomework';      my $form    = 'lonhomework';
     my $element;      my $element = &get_element($id,$mode);
     if (! defined($mode) || $mode eq 'attribute') {  
         $element = &escape("$id\_$Apache::lonxml::curdepth");  
     } elsif ($mode eq 'textnode') {  # for data between <tag> ... </tag>  
         $element = &escape('homework_edit_'.  
                                            $Apache::lonxml::curdepth);  
     }  
     my $titleelement;      my $titleelement;
     if ($titleid) {      if ($titleid) {
  $titleelement=",'".&escape("$titleid\_$Apache::lonxml::curdepth")."'";   $titleelement=",'".&escape("$titleid\_$Apache::lonxml::curdepth")."'";
     }      }
       my $linktext = &mt('Search');
     my $result = <<"ENDBUTTON";      my $result = <<"ENDBUTTON";
 <a href=\"javascript:opensearcher('$form','$element'$titleelement)\"\>Search</a>  <a href=\"javascript:opensearcher('$form','$element'$titleelement)\"\>$linktext</a>
 ENDBUTTON  ENDBUTTON
     return $result;      return $result;
 }  }
   
   sub get_element {
       my ($id,$mode) = @_;
       my $element;
       if (! defined($mode) || $mode eq 'attribute') {
           $element = &escape("$id\_$Apache::lonxml::curdepth");
       } elsif ($mode eq 'textnode') {  # for data between <tag> ... </tag>
           $element = &escape('homework_edit_'.
                                              $Apache::lonxml::curdepth);
       }
       return $element;
   }
   
 1;  1;
 __END__  __END__

Removed from v.1.151  
changed lines
  Added in v.1.154


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.