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

version 1.92, 2009/01/20 16:38:49 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="multiple">  <tr><td bgcolor="#FFFFCC"><select name="importsel" size="10" multiple="multiple">
Line 598  $importwindow Line 685  $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="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.92  
changed lines
  Added in v.1.112


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