Diff for /loncom/publisher/lonpubdir.pm between versions 1.88 and 1.100

version 1.88, 2005/07/14 21:31:34 version 1.100, 2007/01/19 02:36:04
Line 36  use Apache::Constants qw(:common :http : Line 36  use Apache::Constants qw(:common :http :
 use Apache::loncacc;  use Apache::loncacc;
 use Apache::loncommon();  use Apache::loncommon();
 use Apache::lonhtmlcommon();  use Apache::lonhtmlcommon();
   use Apache::londiff();
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonmsg;  use Apache::lonmsg;
 use Apache::lonmenu;  use Apache::lonmenu;
 use Apache::lonnet;  use Apache::lonnet;
   use LONCAPA;
   
 sub handler {  sub handler {
   
Line 104  sub handler { Line 106  sub handler {
       
   # Start off the directory table.    # Start off the directory table.
   $r->print('<h3>Directory Contents:</h3>');    $r->print('<h3>Directory Contents:</h3>');
   $r->print('<table border="0" cellspacing="2" cellpadding="2"><tr>'.    $r->print('<table id="LC_browser"><tr>'.
             '<th bgcolor="#DDDDDD">'.&mt('Type').'</th>'.              '<th>'.&mt('Type').'</th>'.
             '<th bgcolor="#DDDDDD">'.&mt('Actions').'</th>'.              '<th>'.&mt('Actions').'</th>'.
             '<th bgcolor="#DDDDDD">'.&mt('Name').'</th>'.              '<th>'.&mt('Name').'</th>'.
             '<th bgcolor="#DDDDDD">'.&mt('Title').'</th>'.              '<th>'.&mt('Title').'</th>'.
     '<th bgcolor="#DDDDDD">'.&mt('Status').'</th>'.      '<th>'.&mt('Status').'</th>'.
             '<th bgcolor="#DDDDDD">'.&mt('Last Modified').              '<th>'.&mt('Last Modified').
     '</th></tr>'."\n");      '</th></tr>'."\n");
   
   my $filename;    my $filename;
Line 137  sub handler { Line 139  sub handler {
   }    }
   closedir(DIR);    closedir(DIR);
   
   $r->print('</table></body></html>');    $r->print('</table>'.&Apache::loncommon::end_page());
   return OK;      return OK;  
 }  }
 #  #
Line 156  sub getEffectiveUrl { Line 158  sub getEffectiveUrl {
  #   #
  $fn=~s/^http\:\/\/[^\/]+\///;   $fn=~s/^http\:\/\/[^\/]+\///;
         $fn=~s/^\///;          $fn=~s/^\///;
         $fn=~s/\~(\w+)/\/home\/$1\/public_html/;          $fn=~s{~($LONCAPA::username_re)}{/home/$1/public_html};
   
  #  Remove trailing / strings (?)    #  Remove trailing / strings (?) 
   
Line 169  sub getEffectiveUrl { Line 171  sub getEffectiveUrl {
     #internal authentication, needs fixup.      #internal authentication, needs fixup.
     $fn = $r->uri(); # non users do not get the full path request      $fn = $r->uri(); # non users do not get the full path request
                              # through SCRIPT_FILENAME                               # through SCRIPT_FILENAME
     $fn=~s|^/~(\w+)|/home/$1/public_html|;      $fn=~s{^/~($LONCAPA::username_re)}{/home/$1/public_html};
  }   }
     }      }
     $fn=~s/\/+/\//g;      $fn=~s/\/+/\//g;
Line 191  sub startpage { Line 193  sub startpage {
     my $currdir = '/priv/'.$uname.$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 $html=&Apache::lonxml::xmlbegin();  
     $r->print($html.'<head><title>LON-CAPA Construction Space</title></head>');  
   
     my $pagetitle;  
     my $formaction='/priv/'.$uname.$thisdisfn.'/';      my $formaction='/priv/'.$uname.$thisdisfn.'/';
     $formaction=~s/\/+/\//g;      $formaction=~s|/+|/|g;
     $pagetitle .= &Apache::loncommon::help_open_menu('','','','',3,'Authoring').      my $pagetitle .= &Apache::loncommon::help_open_menu('','',3,'Authoring').
         '<font face="Arial, Helvetica, sans-serif" size="+1"><b>Construction Space</b>:</font>&nbsp;'.          '<font face="Arial, Helvetica, sans-serif" size="+1"><b>Construction Space</b>:</font>&nbsp;'.
         '<form name="dirs" method="post" action="'.$formaction.          '<form name="dirs" method="post" action="'.$formaction.
         '" target="_parent"><tt><b>'.          '" target="_parent"><tt><b>'.
Line 208  sub startpage { Line 207  sub startpage {
     &Apache::lonhtmlcommon::store_recent('construct',$formaction,$formaction);      &Apache::lonhtmlcommon::store_recent('construct',$formaction,$formaction);
     if ($env{'environment.remote'} eq 'off') {      if ($env{'environment.remote'} eq 'off') {
  $env{'request.noversionuri'}=$currdir.'/';   $env{'request.noversionuri'}=$currdir.'/';
  $r->print(&Apache::loncommon::bodytag('Construction Space',undef,undef,undef,undef,undef,$pagetitle));   $r->print(&Apache::loncommon::start_page('Construction Space',undef,
    {'body_title' =>
         $pagetitle,}));
     } else {      } else {
    $r->print(&Apache::loncommon::start_page('Construction Space',undef));
  $r->print($pagetitle);   $r->print($pagetitle);
     }      }
   
     my $pubdirscript=(<<ENDPUBDIRSCRIPT);      my $pubdirscript=(<<ENDPUBDIRSCRIPT);
 <script type="text/javascript">  <script type="text/javascript">
 top.document.title = '$thisdisfn/ - LON-CAPA Construction Space';  top.document.title = '$thisdisfn/ - LON-CAPA Construction Space';
Line 307  parent.lastknownpriv='/~$uname$thisdisfn Line 310  parent.lastknownpriv='/~$uname$thisdisfn
       return        return
     }      }
     function changename(theform,activity) {      function changename(theform,activity) {
         var newname=prompt('New Name');          var oldname=theform.dispfilename.value;
         if (newname == "" || !newname)  {          var newname=prompt('New Name',oldname);
           if (newname == "" || !newname || newname == oldname)  {
             return              return
         }          }
         document.moveresource.newfilename.value = newname          document.moveresource.newfilename.value = newname
Line 362  sub dircontrols { Line 366  sub dircontrols {
        updc => 'Upload a new document'         updc => 'Upload a new document'
                                       );                                        );
     $r->print(<<END);      $r->print(<<END);
         <table cellspacing="4" cellpadding="4" width="100%">          <table id="LC_cstr_controls">
          <tr>           <tr>
           <td bgcolor="#DDDDDD" align="center"><font face="Arial, Helvetica, sans-serif" size="-1"><b>$lt{'acti'}</b></font></td>            <th>$lt{'acti'}</th>
           <td bgcolor="#DDDDDD" align="center"><font face="Arial, Helvetica, sans-serif" size="-1"><b>$lt{'updc'}</b></font></td>            <th>$lt{'updc'}</th>
           <td bgcolor="#DDDDDD" align="center"><font face="Arial, Helvetica, sans-serif" size="-1"><b>$lt{'crea'}</b></font></td>            <th>$lt{'crea'}</th>
         </tr>          </tr>
         <tr>          <tr>
          <td bgcolor="#ccddaa" valign="top" align="center">           <td>
           <form name="curractions" method="post" action="">            <form name="curractions" method="post" action="">
            <select name="dirtask" onchange="currdiract(this.form)">             <select name="dirtask" onchange="currdiract(this.form)">
             <option>$lt{'sela'}</option>              <option>$lt{'sela'}</option>
Line 388  sub dircontrols { Line 392  sub dircontrols {
            <input type="hidden" name="postdata" value="" />             <input type="hidden" name="postdata" value="" />
           </form>            </form>
          </td>           </td>
          <td bgcolor="#ccddaa" valign="top" align="center">           <td>
     <form name="upublisher" enctype="multipart/form-data" method="post" action="/adm/upload" target="_parent">      <form name="upublisher" enctype="multipart/form-data" method="post" action="/adm/upload" target="_parent">
       <input type="hidden" name="filename" value="/~$uname$thisdisfn/" />        <input type="hidden" name="filename" value="/~$uname$thisdisfn/" />
       <input type="file" name="upfile" size="20" />        <input type="file" name="upfile" size="20" />
       <input type="button" value="$lt{'uplo'}"  onclick="checkUpload(this.form)" />        <input type="button" value="$lt{'uplo'}"  onclick="checkUpload(this.form)" />
     </form>      </form>
  </td>   </td>
  <td bgcolor="#ccddaa" align="center">   <td>
     <form name="fileaction" method="post" action="/adm/cfile" target="_parent">      <form name="fileaction" method="post" action="/adm/cfile" target="_parent">
       <nobr>        <span style="white-space: nowrap">
  <input type="hidden" name="filename" value="/~$uname$thisdisfn/" />   <input type="hidden" name="filename" value="/~$uname$thisdisfn/" />
   <select name="action">    <select name="action">
     <option value="Select Action">$lt{'sela'}</option>      <option value="Select Action">$lt{'sela'}</option>
Line 411  sub dircontrols { Line 415  sub dircontrols {
                             <option value="newlibraryfile">$lt{'nlib'}:</option>                              <option value="newlibraryfile">$lt{'nlib'}:</option>
     <option value="newdir">$lt{'nsub'}:</option>      <option value="newdir">$lt{'nsub'}:</option>
   </select>&nbsp;<input type="text" name="newfilename" value="Type Name Here" onfocus="if (this.value == 'Type Name Here') this.value=''" />&nbsp;<input type="button" value="Go" onclick="document.fileaction.submit()" />    </select>&nbsp;<input type="text" name="newfilename" value="Type Name Here" onfocus="if (this.value == 'Type Name Here') this.value=''" />&nbsp;<input type="button" value="Go" onclick="document.fileaction.submit()" />
  </nobr>   </span>
  </form>   </form>
   </td>    </td>
          </tr>           </tr>
Line 511  sub putdirectory { Line 515  sub putdirectory {
  %Apache::lonpublisher::metadatafields=();   %Apache::lonpublisher::metadatafields=();
  %Apache::lonpublisher::metadatakeys=();   %Apache::lonpublisher::metadatakeys=();
  my $construct=$here;   my $construct=$here;
  $construct=~s:^/priv/(\w+)$:/home/$1/public_html:;   $construct=~s{^/priv/($LONCAPA::username_re)$}{/home/$1/public_html};
         my $dirpath = $here;          my $dirpath = $here;
         $dirpath=~s:^/priv/:/~:;          $dirpath=~s{^/priv/}{/~};
  &Apache::lonpublisher::metaeval(&Apache::lonnet::getfile(   &Apache::lonpublisher::metaeval(&Apache::lonnet::getfile(
         $construct.'/'.$dirname.'/default.meta'          $construct.'/'.$dirname.'/default.meta'
  ));   ));
Line 538  sub putdirectory { Line 542  sub putdirectory {
                    '</form>';                     '</form>';
             $$numdir ++;              $$numdir ++;
         }          }
  $r->print('<tr bgcolor="#CCCCFF">'.   $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'}.'/folder_closed.gif" alt="folder" /></td>'.
   '<td>'.$actionitem.'</td>'.    '<td>'.$actionitem.'</td>'.
   '<td><font face="arial"><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></font></td>'.    $disfilename.'</a></span></td>'.
         '<td colspan="2">'.($kaputt?&Apache::lonhtmlcommon::authorbombs($resdir.'/'.$disfilename.'/'):'').$Apache::lonpublisher::metadatafields{'title'}.' <i>'.          '<td colspan="2">'.($kaputt?&Apache::lonhtmlcommon::authorbombs($resdir.'/'.$disfilename.'/'):'').$Apache::lonpublisher::metadatafields{'title'});
   $Apache::lonpublisher::metadatafields{'subject'}.'</i> '.   if ($Apache::lonpublisher::metadatafields{'subject'} ne '') {
   $Apache::lonpublisher::metadatafields{'keywords'}.'</td>'.      $r->print(' <i>'.
         $Apache::lonpublisher::metadatafields{'subject'}.
         '</i> ');
    }
    $r->print($Apache::lonpublisher::metadatafields{'keywords'}.'</td>'.
   '<td>'.&Apache::lonlocal::locallocaltime($modtime).'</td>'.    '<td>'.&Apache::lonlocal::locallocaltime($modtime).'</td>'.
   "</tr>\n");    "</tr>\n");
     }      }
Line 562  sub putresource { Line 570  sub putresource {
     &Apache::lonnet::devalidate_cache_new('meta',$targetdir.'/'.$filename);      &Apache::lonnet::devalidate_cache_new('meta',$targetdir.'/'.$filename);
     my $pubstatus = 'unpublished';      my $pubstatus = 'unpublished';
     my $status=&mt('Unpublished');      my $status=&mt('Unpublished');
     my $bgcolor='#FFAA99';      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 $action_buttons=  #    my $action_buttons=
 #        '<br /><a target="_parent" href="/adm/cfile?action=delete&filename=/~'.  #        '<br /><a target="_parent" href="/adm/cfile?action=delete&filename=/~'.
 # $uname.'/'.$thisdisfn.'/'.$filename.'">'.  # $uname.'/'.$thisdisfn.'/'.$filename.'">'.
 # &mt('Delete').'</a>';  # &mt('Delete').'</a>';
     if (-e $resdir.'/'.$filename) {      if (-e $resdir.'/'.$filename) {
           my $same=0;
  my ($rdev,$rino,$rmode,$rnlink,   my ($rdev,$rino,$rmode,$rnlink,
     $ruid,$rgid,$rrdev,$rsize,      $ruid,$rgid,$rrdev,$rsize,
     $ratime,$rmtime,$rctime,      $ratime,$rmtime,$rctime,
     $rblksize,$rblocks)=stat($resdir.'/'.$filename);      $rblksize,$rblocks)=stat($resdir.'/'.$filename);
           if ($rmtime>=$cmtime) {
              $same=1;
           } else {
              if (&Apache::londiff::are_different_files($resdir.'/'.$filename,
        $cstr_dir.'/'.$filename)) {
                 $same=0;
              } else {
                 $same=1;
              }
           }
    my $meta_cmtime = (stat($cstr_dir.'/'.$filename.'.meta'))[9];
    my $meta_rmtime = (stat($resdir.'/'.$filename.'.meta'))[9];
    my $meta_same = 1;
    if ($meta_rmtime < $meta_cmtime
       && &Apache::londiff::are_different_files($resdir.'/'.$filename.'.meta',
        $cstr_dir.'/'.$filename.'.meta')) {
       $meta_same = 0;
    }
  $publish_button=&mt('Re-publish');   $publish_button=&mt('Re-publish');
  if ($rmtime>=$cmtime) {   my $rights_status =
             $pubstatus = 'published';      &mt(&getCopyRightString($targetdir.'/'.$filename)).' '.
     $status=&mt('Published').'<br />'.      &mt(&getSourceRightString($targetdir.'/'.$filename));
  &mt(&getCopyRightString($targetdir.'/'.$filename)).' '.   $title = '<a href="/res/'.$targetdir.'/'.$filename.
  &mt(&getSourceRightString($targetdir.'/'.$filename));      '.meta" target="cat">'.
     $bgcolor='#CCFF88';      &getTitleString($targetdir.'/'.$filename).'</a>';
    if ($same) {
     if (&Apache::lonnet::metadata($targetdir.'/'.$filename,'obsolete')) {      if (&Apache::lonnet::metadata($targetdir.'/'.$filename,'obsolete')) {
                 $pubstatus = 'obsolete';                  $pubstatus = 'obsolete';
  $status=&mt('Obsolete');   $status=&mt('Obsolete');
                 $bgcolor='#AAAAAA';              } else {
             }   if (!$meta_same) {
       $pubstatus = 'metamodified';
    } else {
       $pubstatus = 'published';
    }
    $status=&mt('Published').
       '<br />'. $rights_status;
       }
 #    } else {  #    } else {
 # $action_buttons='';  # $action_buttons='';
 #    }  #    }
     $title='<a href="/res/'.$targetdir.'/'.$filename.  
  '.meta" target="cat">'.  
  &getTitleString($targetdir.'/'.$filename).'</a>';  
  } else {   } else {
             $pubstatus = 'modified';              $pubstatus = 'modified';
     $status=&mt('Modified').'<br />'.      $status=&mt('Modified').
  &mt(&getCopyRightString($targetdir.'/'.$filename)).' '.   '<br />'. $rights_status;
  &mt(&getSourceRightString($targetdir.'/'.$filename));  
             $bgcolor='#FFFF77';  
 #    $action_buttons='';  #    $action_buttons='';
     $title='<a href="/res/'.$targetdir.'/'.$filename.'.meta" target="cat">'.  
  &getTitleString($targetdir.'/'.$filename).'</a>';  
     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=/~'.$uname.
     $thisdisfn.'/'.$filename.      $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="/~'.$uname.$thisdisfn.'/'.$filename.'.meta">'. 
     ($$bombs{$targetdir.'/'.$filename}?'<img src="/adm/lonMisc/bomb.gif" border="0" alt="bomb" />':'Edit Metadata').'</a>';      ($$bombs{$targetdir.'/'.$filename}?'<img src="/adm/lonMisc/bomb.gif" border="0" alt="bomb" />':'Edit Metadata').'</a>';
   
    if (!$meta_same) {
       $title = &mt('Metadata Modified').'<br />'.$title.
    '<br /><a href="/adm/diff?filename=/~'.$uname.
    $thisdisfn.'/'.$filename.'.meta'.
    '&amp;versiontwo=priv" target="cat">'.&mt('Metadata Diffs').'</a>';
       $title.="\n".'<br /><a href="/adm/retrieve?filename=/~'.$uname.
    $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=/~'.$uname.
     $thisdisfn.'/'.$filename.'" target="_parent">'.&mt('Retrieve').'</a>';      $thisdisfn.'/'.$filename.'" target="_parent">'.&mt('Retrieve').'</a>';
     }      }
Line 631  sub putresource { Line 670  sub putresource {
     }      }
     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 bgcolor="'.$bgcolor.'">'.      $r->print('<tr class="LC_browser_file_'.$pubstatus.'">'.
       '<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>'.
       '<td><font face="arial">'.        '<td><span class="LC_filename"> '.
       '<a href="'.$linkdir.'/'.$filename.'" target="_parent">'.        '<a href="'.$linkdir.'/'.$filename.'" target="_parent">'.
                $filename.'</a></font>'.$editlink2.$editlink.                 $filename.'</a></span>'.$editlink2.$editlink.
       '</td>'.        '</td>'.
       '<td>'.$title.'</td>'.        '<td>'.$title.'</td>'.
       '<td>'.$status.'</td>'.        '<td>'.$status.'</td>'.
Line 674  sub create_pubselect { Line 713  sub create_pubselect {
 '<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="/~'.
  &HTML::Entities::encode($uname.$thisdisfn.'/'.$filename,'<>&"').'" /></form>';   &HTML::Entities::encode($uname.$thisdisfn.'/'.$filename,'<>&"').'" />
    <input type="hidden" name="dispfilename" value="'.
    &HTML::Entities::encode($filename).'" /></form>';
     $$numres ++;      $$numres ++;
 }  }
   

Removed from v.1.88  
changed lines
  Added in v.1.100


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