Diff for /rat/lonratedt.pm between versions 1.91 and 1.112

version 1.91, 2008/11/20 14:38:00 version 1.112, 2016/01/15 19:13:04
Line 43  use HTML::Entities(); Line 43  use HTML::Entities();
 # --------------------------------------------------------- Build up RAT screen  # --------------------------------------------------------- Build up RAT screen
 sub ratedt {  sub ratedt {
   my ($r,$url)=@_;    my ($r,$url)=@_;
   my %layout = ('border' => "0");  
     if ($env{'environment.remote'} eq 'off') {  
       $layout{'rows'} = "1,250,*";  
   } else {  
       $layout{'rows'} = "1,70,*";  
   }  
   my $js ='  
 <script type="text/javascript">  
     var flag=0;  
 </script>';  
   
   my $start_page =   
       &Apache::loncommon::start_page('Edit Sequence',$js,  
      {'frameset'    => 1,  
       'add_entries' => \%layout});  
   my $end_page =   
       &Apache::loncommon::end_page({'frameset' => 1});  
   
   $r->print(<<ENDDOCUMENT);    $r->print(<<ENDDOCUMENT);
 $start_page  <!DOCTYPE html>
 <frame name="server" src="$url/loadonly/ratserver" noresize="noresize"  <html>
        noscroll="noscroll" />    <head>
 <frame name="code" src="$url/loadonly/adveditmenu" />      <title>Edit Sequence</title>
 <frame name="mapout" src="/adm/rat/map.html" />      
 $end_page      <style>
   html, body {
     margin: 0;
     padding: 0;
   }
   #server {
     display: none;
   }
   #top {
     position: absolute;
     left: 0;
     top: 0;
     width: 100%;
     height: 20%;
     border: 0;
   }
   #bottom {
     position: absolute;
     left: 0;
     bottom: 0;
     width: 100%;
     height: 80%;
     border: 0;
   }
   #code, #mapout {
     position: absolute;
     width: 100%;
     height: 100%;
     border: 0;
   }
   #infout {
     position: absolute;
     z-index: 1;
     right: 16px;
     bottom: 0;
     width: 420px;
     min-width: 200px;
     height: 300px;
     border: 1px solid black;
     overflow: auto;
   }
       </style>
     </head>
     
     <body>
       <iframe id="server" name="server" src="$url/loadonly/ratserver"></iframe>
       <div id="top"><iframe id="code" name="code" src="$url/loadonly/adveditmenu"></iframe></div>
       <div id="bottom"><iframe id="mapout" name="mapout" src="/adm/rat/map.html"></iframe></div>
       <iframe id="infout"></iframe>
       <script>
   var flag=0;
   
   var resize = function(e) {
       // auto-resize top iframe
       var code = document.getElementById('code');
       var codedoc = (code.contentDocument) ? code.contentDocument : code.contentWindow.document;
       var top = document.getElementById('top');
       top.style.height = ''; // reset height in case it needs to be reduced
       codedoc.body.style.overflow = 'hidden'; // to hide scrollbar
       var topHeight = codedoc.body.scrollHeight;
       top.style.height = topHeight + 'px';
       // set remainder to the other iframe
       var bottom = document.getElementById('bottom');
       bottom.style.height = window.innerHeight - topHeight + 'px';
       // fix right position of infout depending on scrollbar width
       var mapout = document.getElementById('mapout');
       var mapoutdoc = (mapout.contentDocument) ? mapout.contentDocument : mapout.contentWindow.document;
       var infout = document.getElementById('infout');
       infout.style.right = (mapout.offsetWidth - mapoutdoc.body.clientWidth) + 'px';
   }
   var iframe = document.getElementById('code');
   iframe.onload = resize;
   window.addEventListener('resize', resize, false);
       </script>
       
     </body>
   </html>
 ENDDOCUMENT  ENDDOCUMENT
 }  }
   
Line 75  ENDDOCUMENT Line 133  ENDDOCUMENT
   
 sub buttons {  sub buttons {
     my $adv=shift;      my $adv=shift;
     my $output='<form method=post>';           my $output='<form method="post" action="">';     
     if ($adv==1) {      if ($adv==1) {
  $output.='<input type=submit name=forceadv value="'.&mt('Edit').'">'.          $output.=
     &Apache::loncommon::help_open_topic('Sequence_Advanced_Editor_Creation');;              '<input type="submit" name="forceadv"'
              .' value="'.&mt('Edit').'" />'
              .&Apache::loncommon::help_open_topic(
                   'Sequence_Advanced_Editor_Creation');
     } else {      } else {
         unless ($adv==2) {          unless ($adv==2) {
            $output.='<input type=submit name=forcesmp value="'.&mt('Simple Edit').'">'.             $output.=
     &Apache::loncommon::help_open_topic('Sequence_Simple_Editor_Creation');                 '<input type="submit" name="forcesmp"'
                 .' value="'.&mt('Simple Edit').'" />'
                 .&Apache::loncommon::help_open_topic(
                      'Sequence_Simple_Editor_Creation')
                 .' ';
         }          }
  $output.='<input type=submit name=forceadv value="'.&mt('Advanced Edit').'">'.          $output.=
     &Apache::loncommon::help_open_topic('Sequence_Advanced_Editor_Creation');              '<input type="submit" name="forceadv"'
              .' value="'.&mt('Advanced Edit').'" />'
              .&Apache::loncommon::help_open_topic(
                   'Sequence_Advanced_Editor_Creation');
     }      }
     return $output.'</form><hr>';      return $output.'</form>';
 }  }
   
 # ----------------------------------------------------------------- Edit script  # ----------------------------------------------------------------- Edit script
Line 144  function idxopen(mode) { Line 212  function idxopen(mode) {
 }  }
   
 // ------------------------------------------------------ Open groupsort window  // ------------------------------------------------------ Open groupsort window
 function groupopen(url,recover,bookmarks) {  function groupopen(url,recover) {
    var options="scrollbars=1,resizable=1,menubar=0";     var options="scrollbars=1,resizable=1,menubar=0";
    idxflag=1;     idxflag=1;
    idx=open("/adm/groupsort?inhibitmenu=yes&mode=$mode&recover="+recover+"&readfile="+url+"&bookmarks="+bookmarks,"idxout",options);     idx=open("/adm/groupsort?inhibitmenu=yes&mode=$mode&recover="+recover+"&readfile="+url,"idxout",options);
    idx.focus();     idx.focus();
 }  }
   
Line 214  ENDSCRIPT Line 282  ENDSCRIPT
   
 sub smpedt {  sub smpedt {
    my ($r,$url,$errtext)=@_;     my ($r,$url,$errtext)=@_;
    my $buttons=&buttons(2);  
    my $tmpfn=&Apache::lonnet::filelocation('',$url).'.tmp';     my $tmpfn=&Apache::lonnet::filelocation('',$url).'.tmp';
    my $targetmsg='';     my $targetmsg='';
    if ($env{'form.save'}) {     if ($env{'form.save'}) {
Line 223  sub smpedt { Line 290  sub smpedt {
        my ($errtext,$fatal)=         my ($errtext,$fatal)=
    &LONCAPA::map::mapread(&Apache::lonnet::filelocation('',$url),'');     &LONCAPA::map::mapread(&Apache::lonnet::filelocation('',$url),'');
        unless ($fatal) {         unless ($fatal) {
    $targetmsg='<b>'.&mt('Saved.').'</b><br />';     $targetmsg=&Apache::lonhtmlcommon::confirm_success(&mt('Saved'));
        } else {         } else {
    $targetmsg='<b>'.&mt('An error occurred while saving.').'</b><br />';     $targetmsg=&Apache::lonhtmlcommon::confirm_success(
                             &mt('An error occurred while saving.'),1);
        }         }
    }     }
    if ($env{'form.revert'}) {     if ($env{'form.revert'}) {
        $targetmsg='<b>'.&mt('Reverted.').'</b><br />';         $targetmsg=&Apache::lonhtmlcommon::confirm_success(&mt('Reverted'));
        unlink($tmpfn);         unlink($tmpfn);
        my ($errtext,$fatal)=         my ($errtext,$fatal)=
    &LONCAPA::map::mapread(&Apache::lonnet::filelocation('',$url),'');     &LONCAPA::map::mapread(&Apache::lonnet::filelocation('',$url),'');
    }     }
      $targetmsg = &Apache::loncommon::confirmwrapper($targetmsg) if ($targetmsg);
    if (-e $tmpfn) {     if (-e $tmpfn) {
       $targetmsg=        $targetmsg=
         '<b><font color="red">'.&mt('You are working with an unsaved version of your map.').'</font></b><br>';          '<p class="LC_warning">'
          .&mt('You are working with an unsaved version of your map.')
          .'</p>';
       my ($errtext,$fatal)=&LONCAPA::map::mapread($tmpfn,'');        my ($errtext,$fatal)=&LONCAPA::map::mapread($tmpfn,'');
    }     }
      $errtext = '<p class="LC_error">'.$errtext.'</p>' if ($errtext);
 # ---------------------------------------------------------- Process form input  # ---------------------------------------------------------- Process form input
   
    my @importselect=&Apache::loncommon::get_env_multiple('form.importsel');     my @importselect=&Apache::loncommon::get_env_multiple('form.importsel');
Line 481  sub smpedt { Line 553  sub smpedt {
    my $editscript=&editscript('simple');     my $editscript=&editscript('simple');
   
    my %lt=&Apache::lonlocal::texthash(     my %lt=&Apache::lonlocal::texthash(
         'sm' => 'Select Map',
       'sa' => 'Save',        'sa' => 'Save',
       'nt' => 'New Title',        'nt' => 'New Title',
       'se' => 'Search',        'se' => 'Search',
       'im' => 'Import',        'im' => 'Import',
                                       'bk' => 'Import Bookmarks',                                        'wl' => 'Import from Stored Links',
       'vi' => 'View',        'vi' => 'View',
       'lm' => 'Load Map',        'lm' => 'Load Map',
       'ds' => 'Discard Selected',        'ds' => 'Discard Selected',
Line 502  sub smpedt { Line 575  sub smpedt {
                                       'pas' => 'Paste after selected',                                        'pas' => 'Paste after selected',
                                       'reco' => 'Recover Deleted'                                        'reco' => 'Recover Deleted'
       );        );
    my $js=<<ENDJS;     my $js=&Apache::lonhtmlcommon::scripttag("
 <script type="text/javascript">  
   
    $editscript     $editscript
   
    function openview(entry) {     function openview(entry) {
Line 536  sub smpedt { Line 607  sub smpedt {
    document.forms.simpleedit.submit();     document.forms.simpleedit.submit();
        }         }
    }     }
   ");
   
 </script>      &Apache::lonhtmlcommon::clear_breadcrumbs();
 ENDJS      &Apache::lonhtmlcommon::add_breadcrumb({
           text  => 'Authoring Space',
     my $start_page = &Apache::loncommon::start_page(undef,$js).          href  => &Apache::loncommon::authorspace($url),
         &Apache::loncommon::help_open_menu('Sequence_Simple_Editor_Creation',          faq   => 6,
    'Sequence_Simple_Editor_Creation',          bug   => 'RAT',
    6,'RAT');              help  => 'Sequence_Simple_Editor_Creation',});
       &Apache::lonhtmlcommon::add_breadcrumb({
           text  => 'RAT',
           title => 'Resource Assembly Tool',
           href  => '',});
       &Apache::lonhtmlcommon::add_breadcrumb({
           text  => 'Editor',
           title => 'Simple Editor',
           href  => '',});
   
       # Breadcrumbs are included by &start_page
       my $start_page = &Apache::loncommon::start_page('Authoring Space',$js)
                       .&Apache::loncommon::head_subbox(
                            &Apache::loncommon::CSTR_pageheader()
                           .&buttons(2));
     my $end_page = &Apache::loncommon::end_page();      my $end_page = &Apache::loncommon::end_page();
   
       my $filetext = &mt('File: [_1]','<span class="LC_filename">'.$url.'</span>');
     $r->print(<<ENDSMPHEAD);      $r->print(<<ENDSMPHEAD);
 $start_page  $start_page
 $buttons  $targetmsg
 <font color=red>$errtext</font>  $errtext
 <form name=simpleedit method=post>  <form name="simpleedit" method="post" action="">
 <input type=hidden name=forcesmp value=1>  <input type="hidden" name="forcesmp" value="1" />
 <input type=hidden name=renameres value=0>  <input type="hidden" name="renameres" value="0" />
 <input type=hidden name=renametitle value=''>  <input type="hidden" name="renametitle" value="" />
 <input type=hidden name=renameidx value=0>  <input type="hidden" name="renameidx" value="0" />
 <table>  <table>
     <tr><th width="40%">$lt{'ta'}</th>      <tr><th width="40%">$lt{'ta'}</th>
 <th>&nbsp;</th>  <th>&nbsp;</th>
 <th width="40%">File: $url</th></tr>  <th width="40%">$filetext</th></tr>
 <tr><td bgcolor="#FFFFCC">  <tr><td bgcolor="#FFFFCC">
 <input type=button onClick="javascript:groupsearch()" value="$lt{'se'}">  <input type="button" onclick="javascript:groupsearch()" value="$lt{'se'}" />
 <input type=button onClick="javascript:groupimport();" value="$lt{'im'}">  <input type="button" onclick="javascript:groupimport();" value="$lt{'im'}" />
 $lt{'as'}  $lt{'as'}
 <hr>  <hr />
 <input type=text size=20 name=importmap>  <input type="text" size="20" name="importmap" />
 <input type=button   <input type="button" 
 onClick="javascript:openbrowser('simpleedit','importmap','sequence,page','')"  onclick="javascript:openbrowser('simpleedit','importmap','sequence,page','')"
 value="Select Map"><input type=submit name=loadmap value="$lt{'lm'}"><hr>  value="$lt{'sm'}" /><input type="submit" name="loadmap" value="$lt{'lm'}" /><hr />
 <input type=submit name="discard" value="$lt{'ds'}">  <input type="submit" name="discard" value="$lt{'ds'}" />
 <input type=submit name="clear" value="$lt{'ca'}">  <input type="submit" name="clear" value="$lt{'ca'}" />
 <input type=button onClick="javascript:viewimport()" value="$lt{'vi'}">  <input type="button" onclick="javascript:viewimport()" value="$lt{'vi'}" />
   
     </td><td>&nbsp;</td><td bgcolor="#FFFFCC">      </td><td>&nbsp;</td><td bgcolor="#FFFFCC">
   
 <input type=button onClick=  <input type="button" onclick=
 "javascript:impfortarget.value=1;groupsearch()" value="$lt{'se'}">  "javascript:impfortarget.value=1;groupsearch()" value="$lt{'se'}" />
 <input type=button onClick=  <input type="button" onclick=
 "javascript:impfortarget.value=1;groupimport();" value="$lt{'im'}">  "javascript:impfortarget.value=1;groupimport();" value="$lt{'im'}" />
 <input type=button onClick=  <input type="button" onclick=
 "javascript:impfortarget.value=1;groupopen(0,1,1);" value="$lt{'bk'}">  "javascript:impfortarget.value=1;open_StoredLinks_Import('simple');" value="$lt{'wl'}" />
 <input type=button onClick=  <input type="button" onclick=
 "javascript:impfortarget.value=1;groupopen('$url',1,0);" value="$lt{'reco'}">  "javascript:impfortarget.value=1;groupopen('$url',1);" value="$lt{'reco'}" />
 $lt{'as'}  $lt{'as'}
 <hr>  <hr />
 <input type=submit name="moveup" value="$lt{'mu'}">  <input type="submit" name="moveup" value="$lt{'mu'}" />
 <input type=submit name="movedown" value="$lt{'md'}">  <input type="submit" name="movedown" value="$lt{'md'}" />
 <input type=button onClick="javascript:renametarget()" value="$lt{'re'}">  <input type="button" onclick="javascript:renametarget()" value="$lt{'re'}" />
 <hr>$targetmsg  <hr />
 <input type=submit name="revert" value="$lt{'rv'}">  <input type="submit" name="revert" value="$lt{'rv'}" />
 <input type=submit name="save" value="$lt{'sa'}">  <input type="submit" name="save" value="$lt{'sa'}" />
 <input type=button onClick="javascript:viewtarget()" value="$lt{'vi'}">  <input type="button" onclick="javascript:viewtarget()" value="$lt{'vi'}" />
 </td></tr>  </td></tr>
   
 <tr><td bgcolor="#FFFFCC"><select name="importsel" size=10 multiple>  <tr><td bgcolor="#FFFFCC"><select name="importsel" size="10" multiple="multiple">
 $importwindow  $importwindow
 </select>  </select>
 </td>  </td>
 <td bgcolor="#FFFFAA" align="center">  <td bgcolor="#FFFFAA" align="center">
 $lt{'cs'}<br>  $lt{'cs'}<br />
 <input type=submit name=cut value='<<<'><p>  <input type="submit" name="cut" value="&lt;&lt;&lt;" />
 <hr>  <hr />
 $lt{'ps'}<br>  $lt{'ps'}<br />
 <input type=submit name=copy value='<--'><p>  <input type="submit" name="copy" value="&lt;--" />
 <hr>  <hr />
 $lt{'pas'}<br>  $lt{'pas'}<br />
 <input type=submit name=paste value='-->'>  <input type="submit" name="paste" value="--&gt;" />
 </td>  </td>
 <td bgcolor="#FFFFCC"><select name="target" size=10 multiple>  <td bgcolor="#FFFFCC"><select name="target" size="10" multiple="multiple">
 $targetwindow  $targetwindow
 </select>  </select>
   </td></tr>
 </table>  </table>
 <input type=hidden name=importdetail value="">  <input type="hidden" name="importdetail" value="" />
 <input type=hidden name=curimpdetail value="$importdetail">  <input type="hidden" name="curimpdetail" value="$importdetail" />
 <input type=hidden name=targetdetail value="$targetdetail">  <input type="hidden" name="targetdetail" value="$targetdetail" />
 <input type=hidden name=impfortarget value="0">  <input type="hidden" name="impfortarget" value="0" />
 </form>  </form>
 $end_page  $end_page
 ENDSMPHEAD  ENDSMPHEAD
Line 623  ENDSMPHEAD Line 711  ENDSMPHEAD
 # ----------------------------------------------------------------- No such dir  # ----------------------------------------------------------------- No such dir
 sub nodir {  sub nodir {
    my ($r,$dir)=@_;     my ($r,$dir)=@_;
    $dir=~s{^/home/$LONCAPA::username_re/public_html}{};     my $londocroot = $r->dir_config('lonDocRoot');
    $r->print(&Apache::loncommon::start_page(undef,undef,     my ($path) = ($dir =~ m{^\Q$londocroot\E?(/priv/[^/]+/[^/]+/)});
     {'only_body' => 1,     $dir=~s{^\Q$londocroot/priv/\E[^/]+/[^/]+}{};
      'bgcolor'   => '#FFFFFF',}).     my $brcrum = [{'href' => &Apache::loncommon::authorspace($path),
      "<h1>No such directory: $dir</h1>".                    'text' => 'Authoring Space'}];
      &Apache::loncommon::end_page());  #                 {'href' => '',
   #                  'text' => 'No such directory'}];
      $r->print(&Apache::loncommon::start_page('Authoring Space',
                                               undef,
                                               {'bread_crumbs' => $brcrum,})
               .&Apache::loncommon::head_subbox(
                    &Apache::loncommon::CSTR_pageheader())
               .'<p class="LC_error">'
               .&mt('No such directory: [_1]','<span class="LC_filename">'.$dir.'</span>'
               .'</p>'
               .&Apache::loncommon::end_page())
      );
 }  }
   
 # ---------------------------------------------------------------- View Handler  # ---------------------------------------------------------------- View Handler
   
 sub viewmap {  sub viewmap {
     my ($r,$url,$adv,$errtext)=@_;      my ($r,$url,$adv,$errtext)=@_;
     $r->print(  
       &Apache::loncommon::start_page('Edit Content of a Map').      &Apache::lonhtmlcommon::clear_breadcrumbs();
       &Apache::loncommon::help_open_menu('','',6,'RAT').      &Apache::lonhtmlcommon::add_breadcrumb({
       &buttons($adv));          text  => 'Authoring Space',
           href  => &Apache::loncommon::authorspace($url),
           faq   => 6,
           bug   => 'RAT',
           help  => 'Sequence_Simple_Editor_Creation',});
       &Apache::lonhtmlcommon::add_breadcrumb({
           text  => 'RAT',
           title => 'Resource Assembly Tool',
           href  => '',});
   
       # Breadcrumbs are included by &start_page
       $r->print(&Apache::loncommon::start_page('Edit Content of a Map')
                .&Apache::loncommon::head_subbox(
                     &Apache::loncommon::CSTR_pageheader()
                    .&buttons($adv))
       );
     if ($errtext) {      if ($errtext) {
  $r->print('<div class="LC_error">'   $r->print('<div class="LC_error">'
                  .$errtext                   .$errtext
Line 647  sub viewmap { Line 761  sub viewmap {
         );          );
     }      }
     my $idx=0;      my $idx=0;
     $r->print('<h1>'.$url.'</h1>');      $r->print('<p><span class="LC_filename">'.$url.'</span></p>');
     if ($adv) {      if ($adv) {
  $r->print('<p class="LC_warning">'   $r->print('<p class="LC_warning">'
                  .&mt('Map contents are not shown in order.')                   .&mt('Map contents are not shown in order.')
Line 660  sub viewmap { Line 774  sub viewmap {
              .'<th>'.&mt('Title in map').'</th>'               .'<th>'.&mt('Title in map').'</th>'
              .'<th>'.&mt('Filename of resource').'</th>'               .'<th>'.&mt('Filename of resource').'</th>'
              .'<th>'.&mt('Link to published resource').'</th>'               .'<th>'.&mt('Link to published resource').'</th>'
              .'<th>'.&mt('Link to resource in Construction Space').'</th>'               .'<th>'.&mt('Link to resource in Authoring Space').'</th>'
              .&Apache::loncommon::end_data_table_header_row()               .&Apache::loncommon::end_data_table_header_row()
     );      );
     foreach (&LONCAPA::map::attemptread(&Apache::lonnet::filelocation('',$url))) {      foreach (&LONCAPA::map::attemptread(&Apache::lonnet::filelocation('',$url))) {
Line 679  sub viewmap { Line 793  sub viewmap {
                 $filename = $1;                  $filename = $1;
             }              }
             my $cstrurl = $resurl;              my $cstrurl = $resurl;
             $cstrurl =~ s#^/res/[^/]+/([^/]+)/#/priv/$1/#;              $cstrurl =~ s{^/res/}{/priv/};
             $r->print(&Apache::loncommon::start_data_table_row()              $r->print(&Apache::loncommon::start_data_table_row()
                      .'<td>'                       .'<td>'
                      .'<img src="'.&Apache::loncommon::icon($resfilepath).'" />'                       .'<img src="'.&Apache::loncommon::icon($resfilepath).'" alt="" />'
                      .'</td>'                       .'</td>'
                      .'<td>'                       .'<td>'
                      .&HTML::Entities::encode(&LONCAPA::map::qtescape($title))                       .&HTML::Entities::encode(&LONCAPA::map::qtescape($title))
Line 698  sub viewmap { Line 812  sub viewmap {
             $r->print('</td><td>');              $r->print('</td><td>');
             if ($url) {              if ($url) {
                $r->print('<a href="'.$cstrurl.'">'.                 $r->print('<a href="'.$cstrurl.'">'.
                          &mt('Construction space').'</a>');                           &mt('Authoring Space').'</a>');
             } else {              } else {
                 $r->print('&nbsp;');                  $r->print('&nbsp;');
             }              }

Removed from v.1.91  
changed lines
  Added in v.1.112


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.