Diff for /loncom/publisher/lonpubdir.pm between versions 1.114.2.1 and 1.131

version 1.114.2.1, 2010/02/11 21:49:19 version 1.131, 2011/10/22 15:16:20
Line 47  sub handler { Line 47  sub handler {
   
   my $r=shift;    my $r=shift;
   
   my $fn;  
   
   
   
   $fn = getEffectiveUrl($r);  
   
   # Validate access to the construction space and get username@domain.    # Validate access to the construction space and get username@domain.
   
   my $uname;    my $uname;
   my $udom;    my $udom;
   
   ($uname,$udom)=    ($uname,$udom)=&Apache::loncacc::constructaccess($r->uri); 
     &Apache::loncacc::constructaccess(  
              $fn,$r->dir_config('lonDefDomain'));   
   unless (($uname) && ($udom)) {    unless (($uname) && ($udom)) {
      $r->log_reason($uname.':'.$udom.  
          ' trying to list directory '.$env{'form.filename'}.  
          ' ('.$fn.') - not authorized',   
          $r->filename);   
      return HTTP_NOT_ACCEPTABLE;       return HTTP_NOT_ACCEPTABLE;
   }    }
   
   # Remove trailing / from directory name.  # ----------------------------------------------------------- Start page output
   
     my $fn=$r->filename;
   $fn=~s/\/$//;    $fn=~s/\/$//;
   
   unless ($fn) {   
      $r->log_reason($env{'user.name'}.':'.$env{'user.domain'}.  
          ' trying to list empty directory', $r->filename);   
      return HTTP_NOT_FOUND;  
   }   
   
 # ----------------------------------------------------------- Start page output  
   
   my $thisdisfn=$fn;    my $thisdisfn=$fn;
   $thisdisfn=~s/^\/home\/$uname\/public_html//; # subdirectory part of  
                                                 # construction space.   
   my $docroot=$r->dir_config('lonDocRoot');     # Apache  londocument root.    my $docroot=$r->dir_config('lonDocRoot');     # Apache  londocument root.
     $thisdisfn=~s/^\Q$docroot\E\/priv//;
   
   my $resdir=$docroot.'/res/'.$udom.'/'.$uname.$thisdisfn; # Resource directory    my $resdir=$docroot.'/res'.$thisdisfn; # Resource directory
   my $targetdir=$udom.'/'.$uname.$thisdisfn; # Publiction target directory.    my $targetdir='/res'.$thisdisfn; # Publication target directory.
   my $linkdir='/priv/'.$uname.$thisdisfn;      # Full URL name of constr space.    my $linkdir='/priv'.$thisdisfn;      # Full URL name of constr space.
   
   my %bombs=&Apache::lonmsg::all_url_author_res_msg($uname,$udom);    my %bombs=&Apache::lonmsg::all_url_author_res_msg($uname,$udom);
   
   &startpage($r, $uname, $udom, $thisdisfn);   # Put out the start of page.    &startpage($r, $uname, $udom, $thisdisfn);   # Put out the start of page.
   if ($env{'environment.remote'} eq 'off') {    &dircontrols($r,$uname,$udom,$thisdisfn);    # Put out actions for directory, 
       &dircontrols($r,$uname,$udom,$thisdisfn);    # Put out actions for directory,   
                                                # browse/upload + new file page.                                                 # browse/upload + new file page.
   } else {  
       &pubbuttons($r,$uname,$thisdisfn);  
   }  
   &resourceactions($r,$uname,$udom,$thisdisfn); #Put out form used for printing/deletion etc.    &resourceactions($r,$uname,$udom,$thisdisfn); #Put out form used for printing/deletion etc.
   
   my $numdir = 0;    my $numdir = 0;
   my $numres = 0;    my $numres = 0;
       
   # Start off the directory table.    # Start off the directory table.
   $r->print('<h3>'.&mt('Directory Contents:').'</h3>');    $r->print(&Apache::loncommon::start_data_table()
   $r->print('<table id="LC_browser"><tr>'.             .&Apache::loncommon::start_data_table_header_row()
             '<th>'.&mt('Type').'</th>'.             .'<th>'.&mt('Type').'</th>'
             '<th>'.&mt('Actions').'</th>'.             .'<th>'.&mt('Actions').'</th>'
             '<th>'.&mt('Name').'</th>'.             .'<th>'.&mt('Name').'</th>'
             '<th>'.&mt('Title').'</th>'.             .'<th>'.&mt('Title').'</th>'
     '<th>'.&mt('Status').'</th>'.             .'<th colspan="2">'.&mt('Status').'</th>'
             '<th>'.&mt('Last Modified').             .'<th>'.&mt('Last Modified').'</th>'
     '</th></tr>'."\n");             .&Apache::loncommon::end_data_table_header_row()
     );
   
   my $filename;    my $filename;
   my $dirptr=16384; # Mask indicating a directory in stat.cmode.    my $dirptr=16384; # Mask indicating a directory in stat.cmode.
Line 129  sub handler { Line 106  sub handler {
      my $extension='';       my $extension='';
      if ($filename=~/\.(\w+)$/) { $extension=$1; }       if ($filename=~/\.(\w+)$/) { $extension=$1; }
      if ($cmode&$dirptr) {       if ($cmode&$dirptr) {
  putdirectory($r, $thisdisfn, $linkdir, $filename, $cmtime,$targetdir,\%bombs,\$numdir);   &putdirectory($r, $thisdisfn, $linkdir, $filename, $cmtime,$targetdir,\%bombs,\$numdir);
      } elsif (&Apache::loncommon::fileembstyle($extension) ne 'hdn') {       } elsif (&Apache::loncommon::fileembstyle($extension) ne 'hdn') {
  putresource($r, $udom, $uname, $filename, $thisdisfn, $resdir,    &putresource($r, $udom, $uname, $filename, $thisdisfn, $resdir, 
      $targetdir, $linkdir, $cmtime,\%bombs,\$numres);       $targetdir, $linkdir, $cmtime,\%bombs,\$numres);
      } else {       } else {
  # "hidden" extension and not a directory, so hide it away.   # "hidden" extension and not a directory, so hide it away.
Line 139  sub handler { Line 116  sub handler {
   }    }
   closedir(DIR);    closedir(DIR);
   
   $r->print('</table>'.&Apache::loncommon::end_page());    $r->print(&Apache::loncommon::end_data_table()
              .&Apache::loncommon::end_page()
     );
   return OK;      return OK;  
 }  }
 #  
 #  Gets the effective URL of the request and returns it:  
 #    $effn = getEffectiveUrl($r);  
 #       $r  - The Apache Request object.  
 sub getEffectiveUrl {  
     my $r = shift;  
     my $fn;  
       
     if ($env{'form.filename'}) { # If a form filename is defined.  
  $fn=$env{'form.filename'};  
  #  
  #   Replace the ~username of the URL with /home/username/public_html  
  #   so that we don't have to worry about ~ expansion internally.  
  #  
         $fn=~s/^https?\:\/\/[^\/]+\///;  
   
         $fn=~s/^\///;  
         $fn=~s{~($LONCAPA::username_re)}{/home/$1/public_html};  
   
  #  Remove trailing / strings (?)   
   
  $fn=~s/\/[^\/]+$//;  
     } else {  
  #   If no form is defined, use request filename.  
  $fn = $r->filename();  
  my $lonDocRoot=$r->dir_config('lonDocRoot');  
  if ( $fn =~ /$lonDocRoot/ ) {  
     #internal authentication, needs fixup.  
     $fn = $r->uri(); # non users do not get the full path request  
                              # through SCRIPT_FILENAME  
     $fn=~s{^/~($LONCAPA::username_re)}{/home/$1/public_html};  
  }  
     }  
     $fn=~s/\/+/\//g;  
     return $fn;  
 }  
 #  #
 #   Output the header of the page.  This includes:  #   Output the header of the page.  This includes:
 #   - The HTML header   #   - The HTML header 
Line 191  sub getEffectiveUrl { Line 135  sub getEffectiveUrl {
   
 sub startpage {  sub startpage {
     my ($r, $uname, $udom, $thisdisfn) = @_;      my ($r, $uname, $udom, $thisdisfn) = @_;
     my $currdir = '/priv/'.$uname.$thisdisfn;  
     &Apache::loncommon::content_type($r,'text/html');      &Apache::loncommon::content_type($r,'text/html');
     $r->send_http_header;      $r->send_http_header;
   
     my $formaction='/priv/'.$uname.$thisdisfn.'/';      my $formaction='/priv/'.$uname.$thisdisfn.'/';
     $formaction=~s|/+|/|g;      $formaction=~s|/+|/|g;
     my $pagetitle .= &Apache::loncommon::help_open_menu('','',3,'Authoring').  
         '<font face="Arial, Helvetica, sans-serif" size="+1"><b>'.&mt('Construction Space').'</b>:</font>&nbsp;'.  
         '<form name="dirs" method="post" action="'.$formaction.  
         '" target="_parent"><tt><b>'.  
         &Apache::lonhtmlcommon::crumbs($uname.$thisdisfn.'/','_top','/priv','','+1',1)."</b></tt><br />".  
         &Apache::lonhtmlcommon::select_recent('construct','recent',  
                  'this.form.action=this.form.recent.value;this.form.submit()').  
               '</form>';  
     &Apache::lonhtmlcommon::store_recent('construct',$formaction,$formaction);      &Apache::lonhtmlcommon::store_recent('construct',$formaction,$formaction);
     if ($env{'environment.remote'} eq 'off') {  
  $env{'request.noversionuri'}=$currdir.'/';      &Apache::lonhtmlcommon::clear_breadcrumbs();
  $r->print(&Apache::loncommon::start_page('Construction Space',undef,      &Apache::lonhtmlcommon::add_breadcrumb({
  {'body_title' =>          'text'  => 'Construction Space',
       $pagetitle,}));          'href'  => &Apache::loncommon::authorspace(),
     } else {      });
  $r->print(&Apache::loncommon::start_page('Construction Space',undef,      # breadcrumbs (and tools) will be created 
  { 'only_body' => 1,}));      # in start_page->bodytag->innerregister
  $r->print($pagetitle);  
     }      $env{'request.noversionuri'}='/priv/'.$udom.'/'.$uname.$thisdisfn.'/';
       $r->print(&Apache::loncommon::start_page('Construction Space',undef));
   
       $r->print(&Apache::loncommon::head_subbox(
                   &Apache::loncommon::CSTR_pageheader(1)));
   
     my $esc_thisdisfn = &Apache::loncommon::escape_single($thisdisfn);      my $esc_thisdisfn = &Apache::loncommon::escape_single($thisdisfn);
     my $doctitle = 'LON-CAPA '.&mt('Construction Space');      my $doctitle = 'LON-CAPA '.&mt('Construction Space');
Line 225  sub startpage { Line 164  sub startpage {
 top.document.title = '$esc_thisdisfn/ - $doctitle';  top.document.title = '$esc_thisdisfn/ - $doctitle';
 // Store directory location for menu bar to find  // Store directory location for menu bar to find
   
 parent.lastknownpriv='/~$uname$esc_thisdisfn/';  parent.lastknownpriv='/priv/$udom/$uname$esc_thisdisfn/';
   
 // Confirmation dialogues  // Confirmation dialogues
   
Line 328  parent.lastknownpriv='/~$uname$esc_thisd Line 267  parent.lastknownpriv='/~$uname$esc_thisd
 </script>  </script>
 ENDPUBDIRSCRIPT  ENDPUBDIRSCRIPT
     $r->print($pubdirscript);      $r->print($pubdirscript);
   
     if ((($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) &&  
  $env{'environment.remote'} ne 'off') {  
         $r->print('<h3>'.&mt('Co-Author [_1]',$uname.':'.$udom).'</h3>');  
   '</h3>');  
     }  
 }  }
   
 sub dircontrols {  sub dircontrols {
Line 374  sub dircontrols { Line 307  sub dircontrols {
                                       );                                        );
     my $mytype = $lt{'type'}; # avoid conflict with " and ' in javascript      my $mytype = $lt{'type'}; # avoid conflict with " and ' in javascript
     $r->print(<<END);      $r->print(<<END);
         <table id="LC_cstr_controls">  <div class="LC_columnSection">
          <tr>    <div>
           <th>$lt{'acti'}</th>      <form name="curractions" method="post" action="">
           <th>$lt{'updc'}</th>        <fieldset>
           <th>$lt{'crea'}</th>          <legend>$lt{'acti'}</legend>
         </tr>          <select name="dirtask" onchange="currdiract(this.form)">
         <tr>  
          <td>  
           <form name="curractions" method="post" action="">  
            <select name="dirtask" onchange="currdiract(this.form)">  
             <option>$lt{'sela'}</option>              <option>$lt{'sela'}</option>
             <option value="publish">$lt{'pubd'}</option>              <option value="publish">$lt{'pubd'}</option>
             <option value="editmeta">$lt{'edit'}</option>              <option value="editmeta">$lt{'edit'}</option>
             <option value="printdir">$lt{'prnt'}</option>              <option value="printdir">$lt{'prnt'}</option>
             <option value="delete">$lt{'dedr'}</option>              <option value="delete">$lt{'dedr'}</option>
            </select>          </select>
            <input type="hidden" name="filename" value="/~$uname$thisdisfn/" />          <input type="hidden" name="filename" value="/priv/$udom/$uname$thisdisfn/" />
           </form>        </fieldset>
           <form name="publishdir" method="post" action="/adm/publish" target="_parent">      </form>
            <input type="hidden" name="pubrec" value="" />      <form name="publishdir" method="post" action="/adm/publish" target="_parent">
            <input type="hidden" name="filename" value="" />        <input type="hidden" name="pubrec" value="" />
           </form>        <input type="hidden" name="filename" value="" />
           <form name="printdir" method="post" action="/adm/printout" target="_parent">      </form>
            <input type="hidden" name="postdata" value="" />      <form name="printdir" method="post" action="/adm/printout" target="_parent">
           </form>        <input type="hidden" name="postdata" value="" />
          </td>      </form>
          <td>    </div>
     <form name="upublisher" enctype="multipart/form-data" method="post" action="/adm/upload" target="_parent">  
       <input type="hidden" name="filename" value="/~$uname$thisdisfn/" />    <div>
       <input type="file" name="upfile" size="20" />      <form name="upublisher" enctype="multipart/form-data" method="post" action="/adm/upload" target="_parent">
       <input type="button" value="$lt{'uplo'}"  onclick="checkUpload(this.form)" />        <fieldset>
     </form>          <legend>$lt{'updc'}</legend>
  </td>          <input type="hidden" name="filename" value="/priv/$udom/$uname$thisdisfn/" />
  <td>          <input type="file" name="upfile" size="20" />
     <form name="fileaction" method="post" action="/adm/cfile" target="_parent">          <input type="button" value="$lt{'uplo'}"  onclick="checkUpload(this.form)" />
       <span style="white-space: nowrap">        </fieldset>
  <input type="hidden" name="filename" value="/~$uname$thisdisfn/" />      </form>
     </div>
   
     <div>
       <form name="fileaction" method="post" action="/adm/cfile" target="_parent">
         <fieldset>
                 <legend>$lt{'crea'}</legend>
         <span class="LC_nobreak">
    <input type="hidden" name="filename" value="/priv/$udom/$uname$thisdisfn/" />
                   <script type="text/javascript">                    <script type="text/javascript">
                     function validate_go() {                      function validate_go() {
                         var selected = document.fileaction.action.selectedIndex;                          var selected = document.fileaction.action.selectedIndex;
Line 435  sub dircontrols { Line 372  sub dircontrols {
             <option value="newdir">$lt{'nsub'}:</option>              <option value="newdir">$lt{'nsub'}:</option>
   </select>&nbsp;<input type="text" name="newfilename" value="$lt{'type'}" onfocus="if (this.value == '$mytype') this.value=''" />&nbsp;<input type="button" value="Go" onclick="validate_go();" />    </select>&nbsp;<input type="text" name="newfilename" value="$lt{'type'}" onfocus="if (this.value == '$mytype') this.value=''" />&nbsp;<input type="button" value="Go" onclick="validate_go();" />
  </span>   </span>
  </form>        </fieldset>
   </td>      </form>
          </tr>    </div>
         </table>  </div>
 END  END
 }  }
   
 sub pubbuttons {  
     my ($r,$uname,$thisdisfn) = @_;  
     $r->print('<form method="post" action="/adm/publish" target="_parent">'.  
               '<table><tr><td><input type="hidden" name="filename" value="/~'.  
                $uname.$thisdisfn.'/" />'.  
               '<input type="submit" value="'.&mt('Publish Directory').'" /></td><td>'.  
 '<input type="button" onclick="window.location='."'/~".  
                $uname.$thisdisfn."/default.meta'".'" value="'.  
 &mt('Edit Directory Metadata').'" /></td></tr></table></form>');  
 }  
   
 sub resourceactions {  sub resourceactions {
     my ($r,$uname,$udom,$thisdisfn) = @_;      my ($r,$uname,$udom,$thisdisfn) = @_;
     $r->print(<<END);      $r->print(<<END);
Line 520  sub getSourceRightString { Line 446  sub getSourceRightString {
 #   # 
 sub putdirectory {  sub putdirectory {
     my ($r, $reqfile, $here, $dirname, $modtime, $resdir, $bombs, $numdir) = @_;      my ($r, $reqfile, $here, $dirname, $modtime, $resdir, $bombs, $numdir) = @_;
     # construct the display filename: the directory name unless ..:  
   # construct the display filename: the directory name unless ..:
           
     my $disfilename = $dirname;      my $disfilename = $dirname;
     if ($dirname eq '..') {      if ($dirname eq '..') {
  $disfilename = '<i>'.&mt('Parent Directory').'</i>';   $disfilename = '<i>'.&mt('Parent Directory').'</i>';
     }      }
     unless ( (($dirname eq '..') && ($reqfile eq '')) || ($dirname eq '.')) {  # Don't display directory itself, and there is no way up from root directory
       unless ( (($dirname eq '..') && ($reqfile=~/^\/[^\/]+\/[^\/]+$/)) || ($dirname eq '.')) {
  my $kaputt=0;   my $kaputt=0;
  foreach (keys %{$bombs}) {   foreach (keys %{$bombs}) {
     if ($_=~m:^\Q$resdir\E/\Q$disfilename\E/:) { $kaputt=1; last; }      if ($_=~m:^\Q$resdir\E/\Q$disfilename\E/:) { $kaputt=1; last; }
  }   }
   #
   # Get the metadata from that directory's default.meta to display titles
   #
  %Apache::lonpublisher::metadatafields=();   %Apache::lonpublisher::metadatafields=();
  %Apache::lonpublisher::metadatakeys=();   %Apache::lonpublisher::metadatakeys=();
  my $construct=$here;   &Apache::lonpublisher::metaeval(
  $construct=~s{^/priv/($LONCAPA::username_re)$}{/home/$1/public_html};                   &Apache::lonnet::getfile($r->dir_config('lonDocRoot').$here.'/'.$dirname.'/default.meta')
         my $dirpath = $here;                                         );
         $dirpath=~s{^/priv/}{/~};  #
  &Apache::lonpublisher::metaeval(&Apache::lonnet::getfile(  
         $construct.'/'.$dirname.'/default.meta'  
  ));  
         my $actionitem = '';          my $actionitem = '';
         if ($dirname eq '..') {          if ($here eq '..') {
             $actionitem = &mt('Go to ...');              $actionitem = &mt('Go to ...');
         } else {          } else {
             $actionitem =               $actionitem = 
Line 555  sub putdirectory { Line 483  sub putdirectory {
                       '<option value="printdir">'.&mt('Print directory').'</option>'.                        '<option value="printdir">'.&mt('Print directory').'</option>'.
                       '<option value="delete">'.&mt('Delete directory').'</option>'.                        '<option value="delete">'.&mt('Delete directory').'</option>'.
                     '</select>'.                      '</select>'.
                      '<input type="hidden" name="filename" value="'.&HTML::Entities::encode($dirpath.'/'.$dirname,'<>&"').'/" />'.                       '<input type="hidden" name="filename" value="'.&HTML::Entities::encode($here.'/'.$dirname,'<>&"').'/" />'.
                      '<input type="hidden" name="openname" value="'.$here.'/'.$dirname.'/" />'.                       '<input type="hidden" name="openname" value="'.$here.'/'.$dirname.'/" />'.
                      '<input type="hidden" name="postdata" value="" />'.                       '<input type="hidden" name="postdata" value="" />'.
                    '</form>';                     '</form>';
Line 563  sub putdirectory { Line 491  sub putdirectory {
         }          }
  $r->print('<tr class="LC_browser_folder">'.   $r->print('<tr class="LC_browser_folder">'.
   '<td><img src="'.    '<td><img src="'.
   $Apache::lonnet::perlvar{'lonIconsURL'}.'/folder_closed.gif" alt="folder" /></td>'.    $Apache::lonnet::perlvar{'lonIconsURL'}.'/navmap.folder.closed.gif" alt="folder" /></td>'.
   '<td>'.$actionitem.'</td>'.    '<td>'.$actionitem.'</td>'.
   '<td><span class="LC_filename"><a href="'.&HTML::Entities::encode($here.'/'.$dirname,'<>&"').'/" target="_parent">'.    '<td><span class="LC_filename"><a href="'.&HTML::Entities::encode($here.'/'.$dirname,'<>&"').'/" target="_parent">'.
   $disfilename.'</a></span></td>'.    $disfilename.'</a></span></td>'.
         '<td colspan="2">'.($kaputt?&Apache::lonhtmlcommon::authorbombs($resdir.'/'.$disfilename.'/'):'').$Apache::lonpublisher::metadatafields{'title'});          '<td colspan="3">'.($kaputt?&Apache::lonhtmlcommon::authorbombs($resdir.'/'.$disfilename.'/'):'').$Apache::lonpublisher::metadatafields{'title'});
  if ($Apache::lonpublisher::metadatafields{'subject'} ne '') {   if ($Apache::lonpublisher::metadatafields{'subject'} ne '') {
     $r->print(' <i>'.      $r->print(' <i>'.
       $Apache::lonpublisher::metadatafields{'subject'}.        $Apache::lonpublisher::metadatafields{'subject'}.
Line 592  sub putresource { Line 520  sub putresource {
     my $css_class='LC_browser_file';      my $css_class='LC_browser_file';
     my $title='&nbsp;';      my $title='&nbsp;';
     my $publish_button=&mt('Publish');      my $publish_button=&mt('Publish');
     my $cstr_dir = '/home/'.$uname.'/public_html/'.$thisdisfn.'/';      my $cstr_dir = $r->dir_config('lonDocRoot').'/priv/'.$udom.'/'.$uname.'/'.$thisdisfn.'/';
 #    my $action_buttons=      my $linkfilename=&HTML::Entities::encode('/priv'.$thisdisfn.'/'.$filename,'<>&"');
 #        '<br /><a target="_parent" href="/adm/cfile?action=delete&filename=/~'.  
 # $uname.'/'.$thisdisfn.'/'.$filename.'">'.  
 # &mt('Delete').'</a>';  
     if (-e $resdir.'/'.$filename) {      if (-e $resdir.'/'.$filename) {
         my $same=0;          my $same=0;
  my ($rdev,$rino,$rmode,$rnlink,   my ($rdev,$rino,$rmode,$rnlink,
Line 649  sub putresource { Line 575  sub putresource {
  $status=&mt('Published').   $status=&mt('Published').
     '<br />'. $rights_status;      '<br />'. $rights_status;
     }      }
 #    } else {  
 # $action_buttons='';  
 #    }  
  } else {   } else {
             $pubstatus = 'modified';              $pubstatus = 'modified';
     $status=&mt('Modified').      $status=&mt('Modified').
  '<br />'. $rights_status;   '<br />'. $rights_status;
 #    $action_buttons='';  
     if (&Apache::loncommon::fileembstyle(($filename=~/\.(\w+)$/)) eq 'ssi') {      if (&Apache::loncommon::fileembstyle(($filename=~/\.(\w+)$/)) eq 'ssi') {
  $status.='<br /><a href="/adm/diff?filename=/~'.$uname.   $status.='<br /><a href="/adm/diff?filename='.$linkfilename.
     $thisdisfn.'/'.$filename.  
     '&amp;versiontwo=priv" target="cat">'.&mt('Diffs').'</a>';      '&amp;versiontwo=priv" target="cat">'.&mt('Diffs').'</a>';
     }      }
  }    } 
   
  $title.="\n".'<br /><a href="/~'.$uname.$thisdisfn.'/'.$filename.'.meta">'.    $title.="\n".'<br /><a href="'.$linkfilename.'.meta">'. 
     ($$bombs{$targetdir.'/'.$filename}?'<img src="/adm/lonMisc/bomb.gif" border="0" alt="'.&mt('bomb').'" />':&mt('Edit Metadata')).'</a>';      ($$bombs{$targetdir.'/'.$filename}?'<img src="/adm/lonMisc/bomb.gif" border="0" alt="'.&mt('bomb').'" />':&mt('Edit Metadata')).'</a>';
   
  if (!$meta_same) {   if (!$meta_same) {
     $title = &mt('Metadata Modified').'<br />'.$title.      $title = &mt('Metadata Modified').'<br />'.$title.
  '<br /><a href="/adm/diff?filename=/~'.$uname.   '<br /><a href="/adm/diff?filename=/priv/'.$linkfilename.'.meta'.
  $thisdisfn.'/'.$filename.'.meta'.  
  '&amp;versiontwo=priv" target="cat">'.&mt('Metadata Diffs').'</a>';   '&amp;versiontwo=priv" target="cat">'.&mt('Metadata Diffs').'</a>';
     $title.="\n".'<br /><a href="/adm/retrieve?filename=/~'.$uname.      $title.="\n".'<br /><a href="/adm/retrieve?filename='.$linkfilename.'.meta" target="_parent">'.&mt('Retrieve Metadata').'</a>';
  $thisdisfn.'/'.$filename.'.meta" target="_parent">'.&mt('Retrieve Metadata').'</a>';  
  }   }
  $status.="\n".'<br /><a href="/adm/retrieve?filename=/~'.$uname.   $status.="\n".'<br /><a href="/adm/retrieve?filename='.$linkfilename.'" target="_parent">'.&mt('Retrieve').'</a>';
     $thisdisfn.'/'.$filename.'" target="_parent">'.&mt('Retrieve').'</a>';  
     }      }
     my $editlink='';      my $editlink='';
     my $editlink2='';      my $editlink2='';
Line 688  sub putresource { Line 606  sub putresource {
  $editlink2=' <br />(<a href="'.$linkdir.'/'.$filename.'?forceColoredit=1" target="_parent">'.&mt('Edit').'</a>)';   $editlink2=' <br />(<a href="'.$linkdir.'/'.$filename.'?forceColoredit=1" target="_parent">'.&mt('Edit').'</a>)';
     }      }
     if ($filename=~/\.(problem|exam|quiz|assess|survey|form|library|xml|html|htm|xhtml|xhtm|sty)$/) {      if ($filename=~/\.(problem|exam|quiz|assess|survey|form|library|xml|html|htm|xhtml|xhtm|sty)$/) {
  $editlink.=' (<a href="/adm/cleanup?filename=/~'.$uname.   $editlink.=' (<a href="/adm/cleanup?filename='.$linkfilename.'" target="_parent">'.&mt('Clean Up').')</a>';
     $thisdisfn.'/'.$filename.'" target="_parent">'.&mt('Clean Up').')</a>';  
     }      }
     if ($filename=~/\.(zip|tar|bz2|gz|tar.gz|tar.bz2|tgz)$/) {      if ($filename=~/\.(zip|tar|bz2|gz|tar.gz|tar.bz2|tgz)$/) {
  $editlink=' (<a target="_parent" href="/adm/cfile?decompress=/~'.   $editlink=' (<a target="_parent" href="/adm/cfile?decompress='.$linkfilename.'">'.&mt('Decompress').'</a>)';
       $uname.$thisdisfn.'/'.$filename.'">'.&mt('Decompress').'</a>)';  
     }      }
     my $pub_select = '';      my $pub_select = '';
     &create_pubselect($r,\$pub_select,$udom,$uname,$thisdisfn,$filename,$resdir,$pubstatus,$publish_button,$numres);      &create_pubselect($r,\$pub_select,$udom,$uname,$thisdisfn,$filename,$resdir,$pubstatus,$publish_button,$numres);
     $r->print('<tr class="LC_browser_file_'.$pubstatus.'">'.      $r->print(&Apache::loncommon::start_data_table_row().
       '<td>'.($filename=~/[\#\~]$/?'&nbsp;':        '<td>'.($filename=~/[\#\~]$/?'&nbsp;':
       '<img src="'.&Apache::loncommon::icon($filename).'" alt="" />').'</td>'.        '<img src="'.&Apache::loncommon::icon($filename).'" alt="" />').'</td>'.
               '<td>'.$pub_select.'</td>'.                '<td>'.$pub_select.'</td>'.
Line 706  sub putresource { Line 622  sub putresource {
                $filename.'</a></span>'.$editlink2.$editlink.                 $filename.'</a></span>'.$editlink2.$editlink.
       '</td>'.        '</td>'.
       '<td>'.$title.'</td>'.        '<td>'.$title.'</td>'.
       '<td>'.$status.'</td>'.                '<td class="LC_browser_file_'.$pubstatus.'">&nbsp;&nbsp;</td>'. # Display publication status
                 '<td>'.$status.'</td>'.
       '<td>'.&Apache::lonlocal::locallocaltime($cmtime).'</td>'.        '<td>'.&Apache::lonlocal::locallocaltime($cmtime).'</td>'.
       "</tr>\n");        &Apache::loncommon::end_data_table_row()
       );
     return OK;      return OK;
 }  }
   
Line 739  sub create_pubselect { Line 657  sub create_pubselect {
 '<option value="cleanup">'.&mt('Clean up').'</option>'.  '<option value="cleanup">'.&mt('Clean up').'</option>'.
 '<option value="print">'.&mt('Print').'</option>'.  '<option value="print">'.&mt('Print').'</option>'.
 '</select>  '</select>
 <input type="hidden" name="filename" value="/~'.  <input type="hidden" name="filename" value="/priv'.
  &HTML::Entities::encode($uname.$thisdisfn.'/'.$filename,'<>&"').'" />   &HTML::Entities::encode($thisdisfn.'/'.$filename,'<>&"').'" />
  <input type="hidden" name="dispfilename" value="'.   <input type="hidden" name="dispfilename" value="'.
  &HTML::Entities::encode($filename).'" /></form>';   &HTML::Entities::encode($filename).'" /></form>';
     $$numres ++;      $$numres ++;
Line 765  sub check_for_versions { Line 683  sub check_for_versions {
     return $versions;      return $versions;
 }  }
   
 #  
 #   Categorize files in the directory.  
 #   For each file in a list of files in a file directory,   
 #   the  file categorized as one of:  
 #    - directory    
 #    - sequence  
 #    - problem   
 #    - Other resource.  
 #  
 #   For each file the modification date is determined as well.  
 #   Returned is a list of sublists:  
 #    (directories, sequences, problems, other)  
 #   each of the sublists contains entries of the following form (sorted by  
 #   filename):  
 #     (filename, typecode, lastmodtime)  
 #  
 #   $list = CategorizeFiles($location, $files)  
 #       $location   - Directory in which the files live (relative to our  
 #                     execution.  
 #       $files      - list of files.  
 #  
 sub CategorizeFiles {  
     my $location = shift;  
     my $files    = shift;  
 }  
   
 1;  1;
 __END__  __END__
   
Line 887  Output the header of the page.  This inc Line 779  Output the header of the page.  This inc
         $dirname - Name of directory special file.          $dirname - Name of directory special file.
         $modtime - Encoded modification time.          $modtime - Encoded modification time.
   
 =item CategorizeFiles($location, $files)  
       
     Categorize files in the directory.  
     For each file in a list of files in a file directory,   
     the  file categorized as one of:  
         - directory    
         - sequence  
         - problem   
         - Other resource.  
   
     For each file the modification date is determined as well.  
     Returned is a list of sublists:  
         (directories, sequences, problems, other)  
     each of the sublists contains entries of the following form (sorted by filename):  
     (filename, typecode, lastmodtime)  
       
         $list = CategorizeFiles($location, $files)  
         $location   - Directory in which the files live (relative to our execution)  
         $files      - list of files.  
   
 =back  =back
   
 =cut  =cut

Removed from v.1.114.2.1  
changed lines
  Added in v.1.131


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