Diff for /loncom/publisher/lonpublisher.pm between versions 1.298 and 1.299

version 1.298, 2021/06/03 13:59:44 version 1.299, 2021/06/04 03:06:15
Line 367  sub hiddenfield { Line 367  sub hiddenfield {
   
 sub checkbox {  sub checkbox {
     my ($name,$text)=@_;      my ($name,$text)=@_;
     return "\n<br /><label><input type='checkbox' name='$name' /> ".      return "\n<label><input type='checkbox' name='$name' /> ".
  &mt($text)."</label>";   &mt($text)."</label>";
 }  }
   
Line 424  sub common_access { Line 424  sub common_access {
                                             'sel'     => 'Select',                                              'sel'     => 'Select',
                                         );                                          );
     my $output = <<"END";      my $output = <<"END";
 <br />  
 <span class="LC_nobreak">  <span class="LC_nobreak">
 <label>  <label>
 <input type="checkbox" name="commonaccess" value="$name" id="$chkid"    <input type="checkbox" name="commonaccess" value="$name" id="$chkid"  
Line 2264  sub publishdirectory { Line 2263  sub publishdirectory {
             .&Apache::lonhtmlcommon::row_title(&mt('Target'))              .&Apache::lonhtmlcommon::row_title(&mt('Target'))
             .'<span class="LC_filename">'.$thisdisresdir.'</span>'              .'<span class="LC_filename">'.$thisdisresdir.'</span>'
     );      );
       my %reasons = &Apache::lonlocal::texthash(
                         mod => 'Authoring Space file postdates published file', 
                         modmeta => 'Authoring Space metadata file postdates published file',
                         unpub => 'Resource is unpublished',
       );
   
     my $dirptr=16384; # Mask indicating a directory in stat.cmode.      my $dirptr=16384; # Mask indicating a directory in stat.cmode.
     unless ($env{'form.phase'} eq 'two') {      unless ($env{'form.phase'} eq 'two') {
 # ask user what they want  # ask user what they want
         $r->print(&Apache::lonhtmlcommon::row_closure()          $r->print(&Apache::lonhtmlcommon::row_closure()
                  .&Apache::lonhtmlcommon::row_title(&mt('Options'))                   .&Apache::lonhtmlcommon::row_title(&mt('Options')
         );                   .&Apache::loncommon::help_open_topic('Publishing_Directory_Options')));
         $r->print(&hiddenfield('phase','two').          $r->print(&hiddenfield('phase','two').
   &hiddenfield('filename',$env{'form.filename'}).    &hiddenfield('filename',$env{'form.filename'}).
   &checkbox('pubrec','include subdirectories').                    '<fieldset><legend>'.&mt('Recurse').'</legend>'.
   &checkbox('forcerepub','force republication of previously published files').                    &checkbox('pubrec','include subdirectories').
                   &checkbox('obsolete','make file(s) obsolete').                    '</fieldset>'.
   &checkbox('forceoverride','force directory level metadata over existing').                    '<fieldset><legend>'.&mt('Force').'</legend>'.
                   &checkbox('excludeunpub','exclude currently unpublished files').                    &checkbox('forcerepub','force republication of previously published files').'<br />'.
                     &checkbox('forceoverride','force directory level metadata over existing').
                     '</fieldset>'.
                     '<fieldset><legend>'.&mt('Exclude').'</legend>'.
                     &checkbox('excludeunpub','exclude currently unpublished files').'<br />'.
                     &checkbox('excludemod','exclude modified files').'<br />'.
                     &checkbox('excludemodmeta','exclude files with modified metadata').
                     '</fieldset>'.
                     '<fieldset><legend>'.&mt('Actions').'</legend>'.
                     &checkbox('obsolete','make file(s) obsolete').'<br />'.
                   &common_access('dist',&mt('apply common copyright/distribution'),                    &common_access('dist',&mt('apply common copyright/distribution'),
                                  ['default','domain','custom']).                                   ['default','domain','custom']).'<br />'.
                   &common_access('source',&mt('apply common source availability'),                    &common_access('source',&mt('apply common source availability'),
                                  ['closed','open'])                                   ['closed','open']).
                     '</fieldset>'
         );          );
         $r->print(&Apache::lonhtmlcommon::row_closure(1)          $r->print(&Apache::lonhtmlcommon::row_closure(1)
                  .&Apache::lonhtmlcommon::end_pick_box()                   .&Apache::lonhtmlcommon::end_pick_box()
Line 2292  sub publishdirectory { Line 2306  sub publishdirectory {
         $r->print(&Apache::lonhtmlcommon::row_closure(1)          $r->print(&Apache::lonhtmlcommon::row_closure(1)
                  .&Apache::lonhtmlcommon::end_pick_box()                   .&Apache::lonhtmlcommon::end_pick_box()
         );          );
           my %commonaccess;
           map { $commonaccess{$_} = 1; } &Apache::loncommon::get_env_multiple('form.commonaccess');
         unless ($lock) { $lock=&Apache::lonnet::set_lock(&mt('Publishing [_1]',$fn)); }          unless ($lock) { $lock=&Apache::lonnet::set_lock(&mt('Publishing [_1]',$fn)); }
 # actually publish things  # actually publish things
  opendir(DIR,$fn);   opendir(DIR,$fn);
Line 2312  sub publishdirectory { Line 2328  sub publishdirectory {
      ($filename!~/^[\#\.]/) && ($filename!~/\~$/)) {       ($filename!~/^[\#\.]/) && ($filename!~/\~$/)) {
 # find out publication status and/or existing metadata  # find out publication status and/or existing metadata
  my $publishthis=0;   my $publishthis=0;
                   my $skipthis;
  if (-e $resdir.'/'.$filename) {   if (-e $resdir.'/'.$filename) {
     my ($rdev,$rino,$rmode,$rnlink,      my ($rdev,$rino,$rmode,$rnlink,
  $ruid,$rgid,$rrdev,$rsize,   $ruid,$rgid,$rrdev,$rsize,
Line 2319  sub publishdirectory { Line 2336  sub publishdirectory {
  $rblksize,$rblocks)=stat($resdir.'/'.$filename);   $rblksize,$rblocks)=stat($resdir.'/'.$filename);
     if (($rmtime<$cmtime) || ($env{'form.forcerepub'})) {      if (($rmtime<$cmtime) || ($env{'form.forcerepub'})) {
 # previously published, modified now  # previously published, modified now
  $publishthis=1;                          if ($env{'form.excludemod'}) {
     }                              $skipthis='mod';
     my $meta_cmtime = (stat($fn.'/'.$filename.'.meta'))[9];                          } else {
     my $meta_rmtime = (stat($resdir.'/'.$filename.'.meta'))[9];                              $publishthis=1;
     if ( $meta_rmtime<$meta_cmtime ) {                          }
  $publishthis=1;  
     }      }
                       unless ($skipthis) {
                           my $meta_cmtime = (stat($fn.'/'.$filename.'.meta'))[9];
                           my $meta_rmtime = (stat($resdir.'/'.$filename.'.meta'))[9];
                           if ( $meta_rmtime<$meta_cmtime ) {
                               if ($env{'form.excludemodmeta'}) {
                                   $skipthis='modmeta';
                                   $publishthis=0; 
                               } else {
                                   $publishthis=1;
                               }
                           } else {
                               unless (&Apache::loncommon::fileembstyle($extension) eq 'prv') {
                                   if ($commonaccess{'dist'}) {
                                       my ($currdist,$currdistfile,$currsourceavail);
                                       my $currdist =  &Apache::lonnet::metadata($thisdisresdir.'/'.$filename,'copyright');
                                       if ($currdist eq 'custom') {
                                           $currdistfile =  &Apache::lonnet::metadata($thisdisresdir.'/'.$filename,'customdistributionfile');
                                       }
                                       if ($env{'form.commondistselect'} eq 'custom') {
                                           if ($env{'form.commoncustomrights'} =~ m{^/res/.+\.rights$}) {
                                               if ($currdist eq 'custom') {
                                                   unless ($env{'form.commoncustomrights'} eq $currdistfile) {
                                                       $publishthis=1;
                                                   }
                                               } else {
                                                   $publishthis=1;
                                               }
                                           }
                                       } elsif ($env{'form.commondistselect'} =~ /^default|domain|public$/) {
                                           unless ($currdist eq $env{'form.commondistselect'}) {
                                               $publishthis=1;
                                           }
                                       }
                                   }
                               }
                           }
                       }
  } else {   } else {
 # never published  # never published
     unless ($env{'form.excludeunpub'}) {                      if ($env{'form.excludeunpub'}) {
         $publishthis=1;                          $skipthis='unpub';
     }                      } else {
                           $publishthis=1;
                       }
  }   }
   
  if ($publishthis) {   if ($publishthis) {
     &batchpublish($r,$fn.'/'.$filename,$resdir.'/'.$filename,$nokeyref);      &batchpublish($r,$fn.'/'.$filename,$resdir.'/'.$filename,$nokeyref);
  } else {   } else {
     $r->print('<br />'.&mt('Skipping').' '.$filename.'<br />');                      my $reason;
                       if ($skipthis) {
                           $reason = $reasons{$skipthis};
                       } else {
                           $reason = &mt('No changes needed to published resource or metadata');
                       }
                       $r->print('<br />'.&mt('Skipping').' '.$filename);
                       if ($reason) {
                           $r->print(' ('.$reason.')');
                       }
                       $r->print('<br />');
  }   }
  $r->rflush();   $r->rflush();
     }      }

Removed from v.1.298  
changed lines
  Added in v.1.299


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