Diff for /loncom/interface/spreadsheet/lonspreadsheet.pm between versions 1.3 and 1.11

version 1.3, 2003/05/19 15:53:07 version 1.11, 2003/06/18 19:44:22
Line 88  sub selectbox { Line 88  sub selectbox {
     return $selout.'</select>';      return $selout.'</select>';
 }  }
   
   sub file_dialogs {
       my ($spreadsheet) = @_;
       my $bgcolor = "#FFFFFF";
       my $sheettype = $spreadsheet->{'type'};
       my $result = '';
       my $message = '';
       ##
       ## Deal with saving the spreadsheet
       if ((exists($ENV{'form.save'}) || exists($ENV{'form.makedefault'})) && 
           exists($ENV{'form.savefilename'})) {
           $spreadsheet->filename($ENV{'form.savefilename'});
           my $save_status = $spreadsheet->save();
           if ($save_status ne 'ok') {
               $message .= "An error occurred while saving the spreadsheet".
                   "There error is:".$save_status;
               return $result;
           } else {
               $message .= "Spreadsheet saved as ".$ENV{'form.savefilename'};
           }
       } elsif (exists($ENV{'form.newformula'}) && 
                exists($ENV{'form.cell'})       && 
                $ENV{'form.cell'} ne '' ) {
           ##
           ## Make any requested modifications to the spreadsheet
           $spreadsheet->modify_cell($ENV{'form.cell'},
                                     $ENV{'form.newformula'});
           $spreadsheet->save_tmp();
           # output that we are dealing with a temporary file
           $result .=&hiddenfield('workcopy',$sheettype);
           if ($ENV{'form.newformula'} !~ /^\s*$/) {
               $message .='<table><tr>'.
                 '<td valign="top"><pre>Cell '.$ENV{'form.cell'}.' = </pre></td>'.
                 '<td><pre>'.$ENV{'form.newformula'}."</pre></td></tr></table>\n";
           } else {
               $message .= 'Deleted contents of cell '.$ENV{'form.cell'}.'.';
           }
       }
       ##
       ## Editing code
       $result .=&hiddenfield('cell','').
                 &hiddenfield('newformula','');
       ##
       ## Create the save and load dialogs
       my $filename = $spreadsheet->filename();
       my $truefilename = $filename;
       if ($spreadsheet->is_default()) {
           $filename = 'Default';
       }
       my $save_dialog = '<nobr>'.
           '<input type="submit" name="save" value="Save as" /> '.
           '<input type="text" name="savefilename" size="30" value="'.
           $truefilename.'" />'.
           '</nobr>';
       my $makedefault_dialog = '<input type="submit" name="makedefault" '.
           'value="Save as & Make This Sheet the Default"/>';
       #
       my $link = '<a href="javascript:openbrowser'.
           "('sheet','loadfilename','spreadsheet')\">Select Spreadsheet File</a>";
       my $load_dialog = <<END;
   <table bgcolor="$bgcolor">
   <tr><td><input type="submit" name="load" value="Load" /></td>
       <td><nobr>
           <input type="text" name="loadfilename" size="20" value="$filename" />
           $link</nobr>
       </td></tr>
   <tr><td>&nbsp;</td><td>
       <select name="fileselect" onchange="document.sheet.loadfilename.value=document.sheet.fileselect.value" >
   END
       my $default_filename_set = 0;
       foreach my $sheetfilename ($spreadsheet->othersheets()) {
           $load_dialog .= '    <option name="'.$sheetfilename.'"';
           if ($filename eq $sheetfilename) {
               $load_dialog .= ' selected';
               $default_filename_set = 1;
           }
           $load_dialog .= '>'.$sheetfilename."</option>\n";
       }
       $load_dialog .= "</td><td>&nbsp;</td></tr>\n</table>\n";
           #
       $result .=<<END;
   <!-- load / save dialogs -->
   <table cellspacing="2">
   <tr>
       <td>$load_dialog</td>
       <td>
           <table bgcolor="$bgcolor">
           <tr><td>$save_dialog</td></tr>
           <tr><td align="center">$makedefault_dialog</td></tr>
           </table>
       </td>
   </tr>
   </table>
   END
       return ($result,$message);
   }
   
 sub handler {  sub handler {
     my $r=shift;      my $r=shift;
     #      #
Line 99  sub handler { Line 195  sub handler {
     # Check the course homeserver      # Check the course homeserver
     $loaderror= &Apache::lonnet::overloaderror($r,      $loaderror= &Apache::lonnet::overloaderror($r,
                       $ENV{'course.'.$ENV{'request.course.id'}.'.home'});                        $ENV{'course.'.$ENV{'request.course.id'}.'.home'});
     if ($loaderror) { return $loaderror; }   #    if ($loaderror) { return $loaderror; } 
     #      #
     # HTML Header      # HTML Header
     #      #
Line 155  sub handler { Line 251  sub handler {
                                                 $ENV{'request.course.id'});                                                  $ENV{'request.course.id'});
     my $allowed_to_view =  &Apache::lonnet::allowed('vgr',      my $allowed_to_view =  &Apache::lonnet::allowed('vgr',
                                                 $ENV{'request.course.id'});                                                  $ENV{'request.course.id'});
   
     #      #
     # Only those able to view others grades will be allowed to continue       # Only those able to view others grades will be allowed to continue 
     # if they are not requesting their own.      # if they are not requesting their own.
Line 175  sub handler { Line 272  sub handler {
     ##      ##
     ## Spit out the javascript required for editing      ## Spit out the javascript required for editing
     ##      ##
     if (&Apache::lonnet::allowed('mgr',$ENV{'request.course.id'})) {      if ($allowed_to_edit) {
           my $extra_javascript = 
               &Apache::loncommon::browser_and_searcher_javascript();
         $r->print(<<ENDSCRIPT);          $r->print(<<ENDSCRIPT);
 <script language="JavaScript">  <script language="JavaScript">
   
       $extra_javascript
   
     var editwin;      var editwin;
   
     function celledit(cellname,cellformula) {      function celledit(cellname,cellformula) {
Line 229  ENDSCRIPT Line 330  ENDSCRIPT
         #          #
         if (exists($ENV{'form.load'}) && exists($ENV{'form.loadfilename'})) {          if (exists($ENV{'form.load'}) && exists($ENV{'form.loadfilename'})) {
             $filename = $ENV{'form.loadfilename'};              $filename = $ENV{'form.loadfilename'};
               $ENV{'form.workcopy'} = 'no';
         }          }
     }      }
     ##      ##
Line 250  ENDSCRIPT Line 352  ENDSCRIPT
         # error error - run in circles, scream and shout          # error error - run in circles, scream and shout
         return;          return;
     }      }
       $spreadsheet->initialize();
       #
       # Output selector
     ##      ##
     ## Editing/loading/saving      ## Editing/loading/saving
     if ($allowed_to_edit) {      if ($allowed_to_edit) {
         ##          my ($html,$action_message) = &file_dialogs($spreadsheet);
         ## Deal with saving the spreadsheet          if ($ENV{'form.makedefault'}) {
         if (exists($ENV{'form.save'}) &&               $spreadsheet->make_default();
             exists($ENV{'form.savefilename'})) {              if ($action_message) {
             $spreadsheet->filename($ENV{'form.savefilename'});                  $action_message .= '<br />';
             my $save_status = $spreadsheet->save();  
             if ($save_status ne 'ok') {  
                 $r->print("An error occurred while saving the spreadsheet".  
                           "There error is:".$save_status);  
             } else {  
                 $r->print("Spreadsheet saved as ".$ENV{'form.savefilename'});  
             }              }
         } elsif (exists($ENV{'form.newformula'}) &&               $action_message .= 'Made this spreadsheet the default';
                  exists($ENV{'form.cell'})       &&               if ($sheettype eq 'classcalc') {
                  $ENV{'form.cell'} ne '' ) {                  $action_message .= ' for the course';
             ##              } elsif ($sheettype eq 'studentcalc') {
             ## Make any requested modifications to the spreadsheet                  $action_message .= ' for all students';
             $spreadsheet->modify_cell($ENV{'form.cell'},              } elsif ($sheettype eq 'assesscalc') {
                                       $ENV{'form.newformula'});                  $action_message .= ' for all assessments';
             $spreadsheet->save_tmp();  
             # output that we are dealing with a temporary file  
             $r->print(&hiddenfield('workcopy',$sheettype));  
             $r->print('<pre>'.$ENV{'form.cell'}.' = '.  
                       $ENV{'form.newformula'}.'</pre>'."\n");  
         }  
         ##  
         ## Editing code  
         $r->print(&hiddenfield('cell','').  
                   &hiddenfield('newformula',''));  
         ##  
         ## Create the save and load dialogs  
         $filename = $spreadsheet->filename();  
         $filename = '' if ($filename =~ /^default\.$sheettype/i);  
         $filename =~ s/_$sheettype$//;  
         my $save_dialog =   
             '<input type="submit" name="save" value="Save as ..." /> '.  
                 '<input type="text" name="savefilename" size="30" value="'.  
                     $filename.'" />';  
         my $makedefault_dialog =   
             '<input type="submit" name="makedefault" value="Make Default"/>';  
         #  
         my $load_dialog =   
             '<input type="submit" name="load" value="Load ..." />'.  
                 '<select name="loadfilename">'.  
                     '<option name="Default">Default</option>'."\n";  
         foreach my $sheetfilename ($spreadsheet->othersheets()) {  
             $sheetfilename =~ s/_$sheettype$//;  
             $load_dialog .= '<option name="'.$sheetfilename.'"';  
             if ($filename eq $sheetfilename) {  
                 $load_dialog .= ' selected';  
             }              }
             $load_dialog .= '>'.$sheetfilename."</option>\n";              $action_message .= '.';
         }          }
         #          $r->print('<table><tr><td>'.$spreadsheet->html_header().'</td>'.
                     '<td valign="bottom">'.$html."</td></tr></table>\n");
         $r->print(<<END);          $r->print(<<END);
 <!-- load / save dialogs -->  <table>
 <table cellspacing="3">  <tr><td valign="top"><b>Last Action:</b></td>
 <tr>      <td>&nbsp;</td>
 <td>$load_dialog</td>      <td>$action_message</td>
 <td>$save_dialog</td>  
 <td>$makedefault_dialog</td>  
 </tr>  </tr>
 </table>  </table>
 END  END
         $r->rflush();          $r->rflush();
       } else {
           $r->print('<table><tr><td>'.$spreadsheet->html_header().
                     "</td></tr></table>\n");
       }
       $r->rflush();
       #
       if (! exists($ENV{'form.not_first_run'}) && $sheettype eq 'classcalc') {
           $r->print('<input type="submit" value="Generate Spreadsheet" /><br />');
     }      }
     #      #
     # Keep track of the filename      # Keep track of the filename
     $r->print(&hiddenfield('filename',$filename));      $r->print(&hiddenfield('filename',$filename));
     #      #
     $r->print($spreadsheet->get_title());      # Keep track of the number of times we have been called, sort of.
     if ($allowed_to_view || $allowed_to_edit) {      $r->print(&hiddenfield('not_first_run','whatever'));
         $r->print($spreadsheet->parent_link());      #
       if (exists($ENV{'form.not_first_run'}) || $sheettype ne 'classcalc') {
           $r->print($spreadsheet->get_html_title());
           if ($allowed_to_view || $allowed_to_edit) {
               $r->print($spreadsheet->parent_link());
           }
           $spreadsheet->display($r);
     }      }
     $spreadsheet->display($r);  
     $r->print('</form></body></html>');      $r->print('</form></body></html>');
     return OK;      return OK;
 }  }

Removed from v.1.3  
changed lines
  Added in v.1.11


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