Diff for /loncom/publisher/lonpublisher.pm between versions 1.294 and 1.295.2.1

version 1.294, 2014/12/12 18:27:34 version 1.295.2.1, 2021/06/04 15:09:36
Line 318  string which presents the form field (fo Line 318  string which presents the form field (fo
   
 =item B<textfield>  =item B<textfield>
   
   =item B<text_with_browse_field>
   
 =item B<hiddenfield>  =item B<hiddenfield>
   
   =item B<checkbox>
   
 =item B<selectbox>  =item B<selectbox>
   
 =back  =back
Line 367  sub hiddenfield { Line 371  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 399  sub select_level_form { Line 403  sub select_level_form {
     if (!defined($value)) { $env{'form.'.$name}=0; }      if (!defined($value)) { $env{'form.'.$name}=0; }
     return  &Apache::loncommon::select_level_form($value,$name);      return  &Apache::loncommon::select_level_form($value,$name);
 }  }
   
   sub common_access {
       my ($name,$text,$options)=@_;
       return unless (ref($options) eq 'ARRAY');
       my $formname = 'pubdirpref';
       my $chkname = 'common'.$name;
       my $chkid = 'LC_'.$chkname;
       my $divid = $chkid.'div';
       my $customdivid = 'LC_customfile'; 
       my $selname = $chkname.'select';
       my $selid = $chkid.'select';
       my $selonchange;
       if ($name eq 'dist') {
           $selonchange = ' onchange="showHideCustom(this,'."'$customdivid'".');"';
       }
       my %lt = &Apache::lonlocal::texthash(
                                               'default' => 'System wide - can be used for any courses system wide',
                                               'domain'  => 'Domain only - use limited to courses in the domai',
                                               'custom'  => 'Customized right of use ...',
                                               'public'  => 'Public - no authentication or authorization required for use',
                                               'closed'  => 'Closed - XML source is closed to everyone',
                                               'open'    => 'Open - XML source is open to people who want to use it',
                                               'sel'     => 'Select',
                                           );
       my $output = <<"END";
   <span class="LC_nobreak">
   <label>
   <input type="checkbox" name="commonaccess" value="$name" id="$chkid"  
   onclick="showHideAccess(this,'$divid');" />
   $text</label></span>
   <div id="$divid" style="padding:0;clear:both;margin:0;border:0;display:none">
   <select name="$selname" id="$selid" $selonchange>
   <option value="" selected="selected">$lt{'sel'}</option>
   END
       foreach my $val (@{$options}) {
           $output .= '<option value="'.$val.'">'.$lt{$val}.'</option>'."\n";
       }
       $output .= '
   </select>';
       if ($name eq 'dist') {
           $output .= <<"END";
   <div id="$customdivid" style="padding:0;clear:both;margin:0;border:0;display:none">
   <input type="text" name="commoncustomrights" size="60" value="" />
   <a href="javascript:openbrowser('$formname','commoncustomrights','rights');">
   $lt{'sel'}</a></div>
   END
       }
       $output .= '
   </div>
   ';
   }
   
 #########################################  #########################################
 #########################################  #########################################
   
Line 1629  sub phasetwo { Line 1685  sub phasetwo {
     %metadatakeys=();      %metadatakeys=();
   
     &metaeval(&unescape($env{'form.allmeta'}));      &metaeval(&unescape($env{'form.allmeta'}));
       
       if ($batch) {
           my %commonaccess;
           map { $commonaccess{$_} = 1; } &Apache::loncommon::get_env_multiple('form.commonaccess');
           if ($commonaccess{'dist'}) {
               unless ($style eq 'prv') { 
                   if ($env{'form.commondistselect'} eq 'custom') {
                       unless ($source =~ /\.rights$/) {
                           if ($env{'form.commoncustomrights'} =~ m{^/res/.+\.rights$}) { 
                               $env{'form.customdistributionfile'} = $env{'form.commoncustomrights'}; 
                               $env{'form.copyright'} = $env{'form.commondistselect'};
                           }
                       }
                   } elsif ($env{'form.commondistselect'} =~ /^default|domain|public$/) {
                       $env{'form.copyright'} = $env{'form.commondistselect'};
                   }
               }
           }
           unless ($style eq 'prv') {
               if ($commonaccess{'source'}) {
                   if (($env{'form.commonsourceselect'} eq 'open') || ($env{'form.commonsourceselect'} eq 'closed')) {
                       $env{'form.sourceavail'} = $env{'form.commonsourceselect'};
                   }
               }
           }
       }
   
     $metadatafields{'title'}=$env{'form.title'};      $metadatafields{'title'}=$env{'form.title'};
     $metadatafields{'author'}=$env{'form.author'};      $metadatafields{'author'}=$env{'form.author'};
     $metadatafields{'subject'}=$env{'form.subject'};      $metadatafields{'subject'}=$env{'form.subject'};
Line 1981  sub publishdirectory { Line 2063  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('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'),
                                    ['default','domain','custom']).'<br />'.
                     &common_access('source',&mt('apply common source availability'),
                                    ['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 2004  sub publishdirectory { Line 2106  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 2022  sub publishdirectory { Line 2126  sub publishdirectory {
  }   }
     } elsif ((&Apache::loncommon::fileembstyle($extension) ne 'hdn') &&      } elsif ((&Apache::loncommon::fileembstyle($extension) ne 'hdn') &&
      ($filename!~/^[\#\.]/) && ($filename!~/\~$/)) {       ($filename!~/^[\#\.]/) && ($filename!~/\~$/)) {
 # find out publication status and/or exiting 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 2031  sub publishdirectory { Line 2136  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
     $publishthis=1;                      if ($env{'form.excludeunpub'}) {
                           $skipthis='unpub';
                       } else {
                           $publishthis=1;
                       }
  }   }
   
  if ($publishthis) {   if ($publishthis) {
     &batchpublish($r,$fn.'/'.$filename,$resdir.'/'.$filename);      &batchpublish($r,$fn.'/'.$filename,$resdir.'/'.$filename);
  } 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();
     }      }
Line 2247  sub handler { Line 2402  sub handler {
     my $js='<script type="text/javascript">'.      my $js='<script type="text/javascript">'.
  &Apache::loncommon::browser_and_searcher_javascript().   &Apache::loncommon::browser_and_searcher_javascript().
  '</script>';   '</script>';
     $r->print(&Apache::loncommon::start_page('Resource Publication',$js)      my $startargs = {};
       if ($fn=~/\/$/) {
           unless ($env{'form.phase'} eq 'two') {
               $startargs->{'add_entries'} = { onload => 'javascript:setDefaultAccess();' };
               $js .= <<"END";
   <script type="text/javascript">
   // <![CDATA[
   function showHideAccess(caller,div) {
       if (document.getElementById(div)) {
           if (caller.checked) {
               document.getElementById(div).style.display='inline-block';
           } else {
               document.getElementById(div).style.display='none';
           }
       }
   }
   
   function showHideCustom(caller,divid) {
       if (document.getElementById(divid)) {
           if (caller.options[caller.selectedIndex].value == 'custom') {
               document.getElementById(divid).style.display="inline-block";
           } else {
               document.getElementById(divid).style.display="none";
           }
       }
   }
   function setDefaultAccess() {
       var chkids = Array('LC_commondist','LC_commonsource');
       for (var i=0; i<chkids.length; i++) {
           if (document.getElementById(chkids[i])) {
               document.getElementById(chkids[i]).checked = false;
           }
           if (document.getElementById(chkids[i]+'select')) {
              document.getElementById(chkids[i]+'select').selectedIndex = 0; 
           }
           if (document.getElementById(chkids[i]+'div')) {
               document.getElementById(chkids[i]+'div').style.display = 'none';
           }
       }
   }
   // ]]>
   </script>
   
   END
           }
       }
       $r->print(&Apache::loncommon::start_page('Resource Publication',$js,$startargs)
              .&Apache::lonhtmlcommon::breadcrumbs()               .&Apache::lonhtmlcommon::breadcrumbs()
              .&Apache::loncommon::head_subbox(               .&Apache::loncommon::head_subbox(
                   &Apache::loncommon::CSTR_pageheader($docroot.$fn))                    &Apache::loncommon::CSTR_pageheader($docroot.$fn))

Removed from v.1.294  
changed lines
  Added in v.1.295.2.1


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