Diff for /loncom/interface/loncommon.pm between versions 1.1019 and 1.1027

version 1.1019, 2011/09/01 02:32:50 version 1.1027, 2011/11/02 23:05:07
Line 4446  sub get_legacy_domconf { Line 4446  sub get_legacy_domconf {
             close($fh);              close($fh);
         }          }
     }      }
     if (-e '/home/httpd/html/adm/lonDomLogos/'.$udom.'.gif') {      if (-e $Apache::lonnet::perlvar{'lonDocRoot'}.'/adm/lonDomLogos/'.$udom.'.gif') {
         $legacyhash{$udom.'.login.domlogo'} = "/adm/lonDomLogos/$udom.gif";          $legacyhash{$udom.'.login.domlogo'} = "/adm/lonDomLogos/$udom.gif";
     }      }
     return %legacyhash;      return %legacyhash;
Line 4546  Returns: Path to the Construction Space Line 4546  Returns: Path to the Construction Space
   
 sub authorspace {  sub authorspace {
     my $caname = '';      my $caname = '';
       my $cadom = '';
     if ($env{'request.role'} =~ /^ca|^aa/) {      if ($env{'request.role'} =~ /^ca|^aa/) {
         (undef,$caname) =          ($cadom,$caname) =
             ($env{'request.role'}=~/($match_domain)\/($match_username)$/);              ($env{'request.role'}=~/($match_domain)\/($match_username)$/);
     } else {      } else {
         $caname = $env{'user.name'};          $caname = $env{'user.name'};
           $cadom = $env{'user.domain'};
     }      }
     return '/priv/'.$caname.'/';      return '/priv/'.$cadom.'/'.$caname.'/';
 }  }
   
 ##############################################  ##############################################
Line 4580  sub head_subbox { Line 4582  sub head_subbox {
   
 =item * &CSTR_pageheader()  =item * &CSTR_pageheader()
   
 Inputs: ./.  Input: (optional) filename from which breadcrumb trail is built.
          In most cases no input as needed, as $env{'request.filename'}
          is appropriate for use in building the breadcrumb trail.
   
 Returns: HTML div with CSTR path and recent box  Returns: HTML div with CSTR path and recent box
          To be included on Construction Space pages           To be included on Construction Space pages
Line 4588  Returns: HTML div with CSTR path and rec Line 4592  Returns: HTML div with CSTR path and rec
 =cut  =cut
   
 sub CSTR_pageheader {  sub CSTR_pageheader {
     # this is for resources; directories have customtitle, and crumbs      my ($trailfile) = @_;
             # and select recent are created in lonpubdir.pm        if ($trailfile eq '') {
     my ($uname,$thisdisfn)=          $trailfile = $env{'request.filename'};
         ($env{'request.filename'} =~ m|^/home/([^/]+)/public_html/(.*)|);      }
     my $formaction='/priv/'.$uname.'/'.$thisdisfn;  
     $formaction=~s/\/+/\//g;  # this is for resources; directories have customtitle, and crumbs
   # and select recent are created in lonpubdir.pm
   
       my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'};
       my ($udom,$uname,$thisdisfn)=
           ($trailfile =~ m{^\Q$londocroot\E/priv/([^/]+)/([^/]+)/(.*)$});
       my $formaction = "/priv/$udom/$uname/$thisdisfn";
       $formaction =~ s{/+}{/}g;
   
     my $parentpath = '';      my $parentpath = '';
     my $lastitem = '';      my $lastitem = '';
Line 4610  sub CSTR_pageheader { Line 4621  sub CSTR_pageheader {
         .'<b>'.&mt('Construction Space:').'</b> '          .'<b>'.&mt('Construction Space:').'</b> '
         .'<form name="dirs" method="post" action="'.$formaction          .'<form name="dirs" method="post" action="'.$formaction
         .'" target="_top">' #FIXME lonpubdir: target="_parent"          .'" target="_top">' #FIXME lonpubdir: target="_parent"
         .&Apache::lonhtmlcommon::crumbs($uname.'/'.$parentpath,'_top','/priv',undef,undef);          .&Apache::lonhtmlcommon::crumbs($uname.'/'.$parentpath,'_top','/priv/'.$udom,undef,undef);
   
     if ($lastitem) {      if ($lastitem) {
         $output .=          $output .=
Line 6228  ul.LC_TabContent { Line 6239  ul.LC_TabContent {
   background: $sidebg;    background: $sidebg;
   border-bottom: solid 1px $lg_border_color;    border-bottom: solid 1px $lg_border_color;
   list-style:none;    list-style:none;
   margin: 0 -10px;    margin: -1px -10px 0 -10px;
   padding: 0;    padding: 0;
 }  }
   
Line 6251  ul.LC_TabContent li { Line 6262  ul.LC_TabContent li {
   padding: 0 16px 0 10px;    padding: 0 16px 0 10px;
   background-color:$tabbg;    background-color:$tabbg;
   border-bottom:solid 1px $lg_border_color;    border-bottom:solid 1px $lg_border_color;
   border-right: solid 1px $font;    border-left: solid 1px $font;
 }  }
   
 ul.LC_TabContent .right {  ul.LC_TabContent .right {
Line 6350  ul.LC_TabContentBigger li.active b { Line 6361  ul.LC_TabContentBigger li.active b {
   
 ul.LC_CourseBreadcrumbs {  ul.LC_CourseBreadcrumbs {
   background: $sidebg;    background: $sidebg;
   line-height: 32px;    height: 2em;
   padding-left: 10px;    padding-left: 10px;
   margin: 0 0 10px 0;    margin: 0;
   list-style-position: inside;    list-style-position: inside;
   
 }  }
   
 ol#LC_MenuBreadcrumbs,  ol#LC_MenuBreadcrumbs,
Line 6396  ol#LC_PathBreadcrumbs li a { Line 6406  ol#LC_PathBreadcrumbs li a {
   padding: 0 10px 10px 10px;    padding: 0 10px 10px 10px;
 }  }
   
   .LC_DocsBox {
     border: solid 1px $lg_border_color;
     padding: 0 0 10px 10px;
   }
   
 .LC_AboutMe_Image {  .LC_AboutMe_Image {
   float:left;    float:left;
   margin-right:10px;    margin-right:10px;
Line 6947  sub start_scrollbox { Line 6962  sub start_scrollbox {
     unless ($outerwidth) { $outerwidth='520px'; }      unless ($outerwidth) { $outerwidth='520px'; }
     unless ($width) { $width='500px'; }      unless ($width) { $width='500px'; }
     unless ($height) { $height='200px'; }      unless ($height) { $height='200px'; }
     my $div_id;      my ($table_id,$div_id);
     if ($id ne '') {      if ($id ne '') {
         $div_id = " id='$id'";          $table_id = " id='table_$id'";
           $div_id = " id='div_$id'";
     }      }
     return "<table style='width: $outerwidth; border: 1px solid black;'><tr><td style='width: $width;' bgcolor='#FFFFFF'><div style='overflow:auto; width:$width; height: $height;'$div_id>";      return "<table style='width: $outerwidth; border: 1px solid none;'$table_id><tr><td style='width: $width;' bgcolor='#FFFFFF'><div style='overflow:auto; width:$width; height: $height;'$div_id>";
 }  }
   
 sub end_scrollbox {  sub end_scrollbox {
Line 7119  sub get_users_function { Line 7135  sub get_users_function {
         $function='admin';          $function='admin';
     }      }
     if (($env{'request.role'}=~/^(au|ca|aa)/) ||      if (($env{'request.role'}=~/^(au|ca|aa)/) ||
         ($ENV{'REQUEST_URI'}=~/^(\/priv|\~)/)) {          ($ENV{'REQUEST_URI'}=~ m{/^(/priv)})) {
         $function='author';          $function='author';
     }      }
     return $function;      return $function;
Line 8443  sub ask_for_embedded_content { Line 8459  sub ask_for_embedded_content {
         $getpropath = 1;          $getpropath = 1;
     } elsif (($actionurl eq '/adm/upload') || ($actionurl eq '/adm/testbank') ||      } elsif (($actionurl eq '/adm/upload') || ($actionurl eq '/adm/testbank') ||
              ($actionurl eq '/adm/imsimport')) {                ($actionurl eq '/adm/imsimport')) { 
         ($uname,my $rest) = ($args->{'current_path'} =~ m{/priv/($match_username)/?(.*)$});          my ($udom,$uname,$rest) = ($args->{'current_path'} =~ m{/priv/($match_domain)/($match_username)/?(.*)$});
         $url = '/home/'.$uname.'/public_html/';          $url = $Apache::lonnet::perlvar{'lonDocRoot'}."/priv/$udom/$uname/";
         $toplevel = $url;          $toplevel = $url;
         if ($rest ne '') {          if ($rest ne '') {
             $url .= $rest;              $url .= $rest;
Line 8494  sub ask_for_embedded_content { Line 8510  sub ask_for_embedded_content {
     foreach my $path (keys(%subdependencies)) {      foreach my $path (keys(%subdependencies)) {
         my %currsubfile;          my %currsubfile;
         if (($actionurl eq '/adm/portfolio') || ($actionurl eq '/adm/coursegrp_portfolio')) {           if (($actionurl eq '/adm/portfolio') || ($actionurl eq '/adm/coursegrp_portfolio')) { 
             my @subdir_list = &Apache::lonnet::dirlist($url.$path,$udom,$uname,$getpropath);              my ($sublistref,$listerror) =
             foreach my $line (@subdir_list) {                  &Apache::lonnet::dirlist($url.$path,$udom,$uname,$getpropath);
                 my ($file_name,$rest) = split(/\&/,$line,2);              if (ref($sublistref) eq 'ARRAY') {
                 $currsubfile{$file_name} = 1;                  foreach my $line (@{$sublistref}) {
                       my ($file_name,$rest) = split(/\&/,$line,2);
                       $currsubfile{$file_name} = 1;
                   }
             }              }
         } elsif (($actionurl eq '/adm/upload') || ($actionurl eq '/adm/testbank')) {          } elsif (($actionurl eq '/adm/upload') || ($actionurl eq '/adm/testbank')) {
             if (opendir(my $dir,$url.'/'.$path)) {              if (opendir(my $dir,$url.'/'.$path)) {
Line 8520  sub ask_for_embedded_content { Line 8539  sub ask_for_embedded_content {
     }      }
     my %currfile;      my %currfile;
     if (($actionurl eq '/adm/portfolio') || ($actionurl eq '/adm/coursegrp_portfolio')) {      if (($actionurl eq '/adm/portfolio') || ($actionurl eq '/adm/coursegrp_portfolio')) {
         my @dir_list = &Apache::lonnet::dirlist($url,$udom,$uname,$getpropath);          my ($dirlistref,$listerror) =
         foreach my $line (@dir_list) {              &Apache::lonnet::dirlist($url,$udom,$uname,$getpropath);
             my ($file_name,$rest) = split(/\&/,$line,2);          if (ref($dirlistref) eq 'ARRAY') {
             $currfile{$file_name} = 1;              foreach my $line (@{$dirlistref}) {
                   my ($file_name,$rest) = split(/\&/,$line,2);
                   $currfile{$file_name} = 1;
               }
         }          }
     } elsif (($actionurl eq '/adm/upload') || ($actionurl eq '/adm/testbank')) {      } elsif (($actionurl eq '/adm/upload') || ($actionurl eq '/adm/testbank')) {
         if (opendir(my $dir,$url)) {          if (opendir(my $dir,$url)) {
Line 8802  sub upload_embedded { Line 8824  sub upload_embedded {
             my $fullpath = $dir_root.$dirpath.'/'.$path;              my $fullpath = $dir_root.$dirpath.'/'.$path;
             my $dest = $fullpath.$fname;              my $dest = $fullpath.$fname;
             my $url = $url_root.$dirpath.'/'.$path.$fname;              my $url = $url_root.$dirpath.'/'.$path.$fname;
             my @parts=split(/\//,$fullpath);              my @parts=split(/\//,"$dirpath/$path");
             my $count;              my $count;
             my $filepath = $dir_root;              my $filepath = $dir_root;
             for ($count=4;$count<=$#parts;$count++) {              foreach my $subdir (@parts) {
                 $filepath .= "/$parts[$count]";                  $filepath .= "/$subdir";
                 if ((-e $filepath)!=1) {                  if (!-e $filepath) {
                     mkdir($filepath,0770);                      mkdir($filepath,0770);
                 }                  }
             }              }
Line 8926  sub modify_html_refs { Line 8948  sub modify_html_refs {
     } elsif ($context eq 'coursedoc') {      } elsif ($context eq 'coursedoc') {
         $container = $env{'form.primaryurl'};          $container = $env{'form.primaryurl'};
     } else {      } else {
         $container = $env{'form.filename'};          $container = $Apache::lonnet::perlvar{'lonDocRoot'}.$env{'form.filename'};
         $container =~ s{^/priv/(\Q$uname\E)/(.*)}{/home/$1/public_html/$2};  
     }      }
     my (%allfiles,%codebase,$output,$content);      my (%allfiles,%codebase,$output,$content);
     my @changes = &get_env_multiple('form.namechange');      my @changes = &get_env_multiple('form.namechange');
Line 9043  sub check_for_upload { Line 9064  sub check_for_upload {
     }      }
     $filesize =  $filesize/1000; #express in k (1024?)      $filesize =  $filesize/1000; #express in k (1024?)
     my $getpropath = 1;      my $getpropath = 1;
     my @dir_list = &Apache::lonnet::dirlist($portfolio_root.$path,$udom,$uname,      my ($dirlistref,$listerror) =
                                             $getpropath);           &Apache::lonnet::dirlist($portfolio_root.$path,$udom,$uname,$getpropath);
     my $found_file = 0;      my $found_file = 0;
     my $locked_file = 0;      my $locked_file = 0;
     my @lockers;      my @lockers;
Line 9052  sub check_for_upload { Line 9073  sub check_for_upload {
     if ($env{'request.course.id'}) {      if ($env{'request.course.id'}) {
         $navmap = Apache::lonnavmaps::navmap->new();          $navmap = Apache::lonnavmaps::navmap->new();
     }      }
     foreach my $line (@dir_list) {      if (ref($dirlistref) eq 'ARRAY') {
         my ($file_name,$rest)=split(/\&/,$line,2);          foreach my $line (@{$dirlistref}) {
         if ($file_name eq $fname){              my ($file_name,$rest)=split(/\&/,$line,2);
             $file_name = $path.$file_name;              if ($file_name eq $fname){
             if ($group ne '') {                  $file_name = $path.$file_name;
                 $file_name = $group.$file_name;                  if ($group ne '') {
             }                      $file_name = $group.$file_name;
             $found_file = 1;                  }
             if (&Apache::lonnet::is_locked($file_name,$udom,$uname,\@lockers) eq 'true') {                  $found_file = 1;
                 foreach my $lock (@lockers) {                  if (&Apache::lonnet::is_locked($file_name,$udom,$uname,\@lockers) eq 'true') {
                     if (ref($lock) eq 'ARRAY') {                      foreach my $lock (@lockers) {
                         my ($symb,$crsid) = @{$lock};                          if (ref($lock) eq 'ARRAY') {
                         if ($crsid eq $env{'request.course.id'}) {                              my ($symb,$crsid) = @{$lock};
                             if (ref($navmap)) {                              if ($crsid eq $env{'request.course.id'}) {
                                 my $res = $navmap->getBySymb($symb);                                  if (ref($navmap)) {
                                 foreach my $part (@{$res->parts()}) {                                       my $res = $navmap->getBySymb($symb);
                                     my ($slot_status,$slot_time,$slot_name)=$res->check_for_slot($part);                                      foreach my $part (@{$res->parts()}) { 
                                     unless (($slot_status == $res->RESERVED) ||                                          my ($slot_status,$slot_time,$slot_name)=$res->check_for_slot($part);
                                             ($slot_status == $res->RESERVED_LOCATION)) {                                          unless (($slot_status == $res->RESERVED) ||
                                         $locked_file = 1;                                                  ($slot_status == $res->RESERVED_LOCATION)) {
                                               $locked_file = 1;
                                           }
                                     }                                      }
                                   } else {
                                       $locked_file = 1;
                                 }                                  }
                             } else {                              } else {
                                 $locked_file = 1;                                  $locked_file = 1;
                             }                              }
                         } else {  
                             $locked_file = 1;  
                         }                          }
                     }                     }
                 }                  } else {
             } else {                      my @info = split(/\&/,$rest);
                 my @info = split(/\&/,$rest);                      my $currsize = $info[6]/1000;
                 my $currsize = $info[6]/1000;                      if ($currsize < $filesize) {
                 if ($currsize < $filesize) {                          my $extra = $filesize - $currsize;
                     my $extra = $filesize - $currsize;                          if (($current_disk_usage + $extra) > $disk_quota) {
                     if (($current_disk_usage + $extra) > $disk_quota) {                              my $msg = '<span class="LC_error">'.
                         my $msg = '<span class="LC_error">'.                                        &mt('Unable to upload [_1]. (size = [_2] kilobytes). Disk quota will be exceeded if existing (smaller) file with same name (size = [_3] kilobytes) is replaced.',
                                   &mt('Unable to upload [_1]. (size = [_2] kilobytes). Disk quota will be exceeded if existing (smaller) file with same name (size = [_3] kilobytes) is replaced.',                                            '<span class="LC_filename">'.$fname.'</span>',$filesize,$currsize).'</span>'.
                                       '<span class="LC_filename">'.$fname.'</span>',$filesize,$currsize).'</span>'.                                        '<br />'.&mt('Disk quota is [_1] kilobytes. Your current disk usage is [_2] kilobytes.',
                                   '<br />'.&mt('Disk quota is [_1] kilobytes. Your current disk usage is [_2] kilobytes.',                                                     $disk_quota,$current_disk_usage);
                                                $disk_quota,$current_disk_usage);                              return ('will_exceed_quota',$msg);
                         return ('will_exceed_quota',$msg);                          }
                     }                      }
                 }                  }
             }              }

Removed from v.1.1019  
changed lines
  Added in v.1.1027


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