Diff for /loncom/interface/loncommon.pm between versions 1.1026 and 1.1037

version 1.1026, 2011/10/31 17:27:15 version 1.1037, 2011/12/12 02:46:12
Line 1186  sub help_open_topic { Line 1186  sub help_open_topic {
     my ($topic, $text, $stayOnPage, $width, $height, $imgid) = @_;      my ($topic, $text, $stayOnPage, $width, $height, $imgid) = @_;
     $text = "" if (not defined $text);      $text = "" if (not defined $text);
     $stayOnPage = 0 if (not defined $stayOnPage);      $stayOnPage = 0 if (not defined $stayOnPage);
     $width = 350 if (not defined $width);      $width = 500 if (not defined $width);
     $height = 400 if (not defined $height);      $height = 400 if (not defined $height);
     my $filename = $topic;      my $filename = $topic;
     $filename =~ s/ /_/g;      $filename =~ s/ /_/g;
Line 1197  sub help_open_topic { Line 1197  sub help_open_topic {
     $topic=~s/\W/\_/g;      $topic=~s/\W/\_/g;
   
     if (!$stayOnPage) {      if (!$stayOnPage) {
  $link = "javascript:void(open('/adm/help/${filename}.hlp', 'Help_for_$topic', 'menubar=0,toolbar=1,scrollbars=1,width=$width,height=$height,resizable=yes'))";   $link = "javascript:openMyModal('/adm/help/${filename}.hlp',$width,$height,'yes');";
       } elsif ($stayOnPage eq 'popup') {
           $link = "javascript:void(open('/adm/help/${filename}.hlp', 'Help_for_$topic', 'menubar=0,toolbar=1,scrollbars=1,width=$width,height=$height,resizable=yes'))";
     } else {      } else {
  $link = "/adm/help/${filename}.hlp";   $link = "/adm/help/${filename}.hlp";
     }      }
Line 1230  sub help_open_topic { Line 1232  sub help_open_topic {
 # This is a quicky function for Latex cheatsheet editing, since it   # This is a quicky function for Latex cheatsheet editing, since it 
 # appears in at least four places  # appears in at least four places
 sub helpLatexCheatsheet {  sub helpLatexCheatsheet {
     my ($topic,$text,$not_author) = @_;      my ($topic,$text,$not_author,$stayOnPage) = @_;
     my $out;      my $out;
     my $addOther = '';      my $addOther = '';
     if ($topic) {      if ($topic) {
  $addOther = '<span>'.&Apache::loncommon::help_open_topic($topic,&mt($text),   $addOther = '<span>'.&help_open_topic($topic,&mt($text),$stayOnPage, undef, 600).'</span> ';
        undef, undef, 600).  
    '</span> ';  
     }      }
     $out = '<span>' # Start cheatsheet      $out = '<span>' # Start cheatsheet
   .$addOther    .$addOther
           .'<span>'            .'<span>'
   .&Apache::loncommon::help_open_topic('Greek_Symbols',&mt('Greek Symbols'),    .&help_open_topic('Greek_Symbols',&mt('Greek Symbols'),$stayOnPage,undef,600)
        undef,undef,600)  
   .'</span> <span>'    .'</span> <span>'
   .&Apache::loncommon::help_open_topic('Other_Symbols',&mt('Other Symbols'),    .&help_open_topic('Other_Symbols',&mt('Other Symbols'),$stayOnPage,undef,600)
        undef,undef,600)  
   .'</span>';    .'</span>';
     unless ($not_author) {      unless ($not_author) {
         $out .= ' <span>'          $out .= ' <span>'
        .&Apache::loncommon::help_open_topic('Authoring_Output_Tags',&mt('Output Tags'),         .&help_open_topic('Authoring_Output_Tags',&mt('Output Tags'),$stayOnPage,undef,600)
                                             undef,undef,600)  
        .'</span>';         .'</span>';
     }      }
     $out .= '</span>'; # End cheatsheet      $out .= '</span>'; # End cheatsheet
Line 4532  sub designparm { Line 4529  sub designparm {
   
 =item * &authorspace()  =item * &authorspace()
   
 Inputs: ./.  Inputs: $url (usually will be undef).
   
 Returns: Path to the Construction Space of the current user's  Returns: Path to Construction Space containing the resource or 
          accessed author space           directory being viewed (or for which action is being taken). 
          The author space will be that of the current user           If $url is provided, and begins /priv/<domain>/<uname>
          when accessing the own author space           the path will be that portion of the $context argument.
          and that of the co-author/assistent co-author           Otherwise the path will be for the author space of the current
          when accessing the co-author's/assistent co-author's           user when the current role is author, or for that of the 
          space           co-author/assistant co-author space when the current role 
            is co-author or assistant co-author.
   
 =cut  =cut
   
 sub authorspace {  sub authorspace {
       my ($url) = @_;
       if ($url ne '') {
           if ($url =~ m{^(/priv/$match_domain/$match_username/)}) {
              return $1;
           }
       }
     my $caname = '';      my $caname = '';
     my $cadom = '';      my $cadom = '';
     if ($env{'request.role'} =~ /^ca|^aa/) {      if ($env{'request.role'} =~ /^(?:ca|aa)/) {
         ($cadom,$caname) =          ($cadom,$caname) =
             ($env{'request.role'}=~/($match_domain)\/($match_username)$/);              ($env{'request.role'}=~/($match_domain)\/($match_username)$/);
     } else {      } elsif ($env{'request.role'} =~ m{^au\./($match_domain)/}) {
         $caname = $env{'user.name'};          $caname = $env{'user.name'};
         $cadom = $env{'user.domain'};          $cadom = $env{'user.domain'};
     }      }
     return '/priv/'.$cadom.'/'.$caname.'/';      if (($caname ne '') && ($cadom ne '')) {
           return "/priv/$cadom/$caname/";
       }
       return;
 }  }
   
 ##############################################  ##############################################
Line 5514  span.LC_current_location { Line 5521  span.LC_current_location {
   background: $pgbg;    background: $pgbg;
 }  }
   
   span.LC_current_nav_location {
     font-weight:bold;
     background: $sidebg;
   }
   
 span.LC_parm_menu_item {  span.LC_parm_menu_item {
   font-size: larger;    font-size: larger;
 }  }
Line 6619  ul.LC_funclist li { Line 6631  ul.LC_funclist li {
   display: none;    display: none;
 }  }
   
   .LCmodal-overlay {
    position:fixed;
    top:0;
    right:0;
    bottom:0;
    left:0;
    height:100%;
    width:100%;
    margin:0;
    padding:0;
    background:#999;
    opacity:.75;
    filter: alpha(opacity=75);
    -moz-opacity: 0.75;
    z-index:101;
   }
   
   * html .LCmodal-overlay {   
    position: absolute;
    height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px');
   }
   
   .LCmodal-window {
    position:fixed;
    top:50%;
    left:50%;
    margin:0;
    padding:0;
    z-index:102;
    }
   
   * html .LCmodal-window {
    position:absolute;
   }
   
   .LCclose-window {
    position:absolute;
    width:32px;
    height:32px;
    right:8px;
    top:8px;
    background:transparent url('/res/adm/pages/process-stop.png') no-repeat scroll right top;
    text-indent:-99999px;
    overflow:hidden;
    cursor:pointer;
   }
   
 END  END
 }  }
   
Line 6677  sub headtag { Line 6736  sub headtag {
  && !$args->{'only_body'}   && !$args->{'only_body'}
  && !$args->{'frameset'}) {   && !$args->{'frameset'}) {
  $result .= &help_menu_js();   $result .= &help_menu_js();
           $result.=&modal_window();
           $result.=&wishlist_window();
       } else {
           if ($args->{'add_modal'}) {
              $result.=&modal_window();
           }
           if ($args->{'add_wishlist'}) {
              $result.=&wishlist_window();
           }
     }      }
   
     if (ref($args->{'redirect'})) {      if (ref($args->{'redirect'})) {
  my ($time,$url,$inhibit_continue) = @{$args->{'redirect'}};   my ($time,$url,$inhibit_continue) = @{$args->{'redirect'}};
  $url = &Apache::lonenc::check_encrypt($url);   $url = &Apache::lonenc::check_encrypt($url);
Line 6803  $args - additional optional args support Line 6870  $args - additional optional args support
 sub start_page {  sub start_page {
     my ($title,$head_extra,$args) = @_;      my ($title,$head_extra,$args) = @_;
     #&Apache::lonnet::logthis("start_page ".join(':',caller(0)));      #&Apache::lonnet::logthis("start_page ".join(':',caller(0)));
 #SD  
 #I don't see why we copy certain elements of %$args to %head_args  
 #head args is passed to headtag() and this routine only reads those  
 #keys that are needed. There doesn't happen any writes or any processing  
 #of other keys.  
 #proposal: just pass $args to headtag instead of \%head_args and delete   
 #marked lines  
 #<- MARK  
     my %head_args;  
     foreach my $arg ('redirect','force_register','domain','function',  
      'bgcolor','frameset','no_nav_bar','only_body',  
      'no_auto_mt_title') {  
  if (defined($args->{$arg})) {  
     $head_args{$arg} = $args->{$arg};  
  }  
     }  
 #MARK ->  
   
     $env{'internal.start_page'}++;      $env{'internal.start_page'}++;
     my $result;      my $result;
   
     if (! exists($args->{'skip_phases'}{'head'}) ) {      if (! exists($args->{'skip_phases'}{'head'}) ) {
         $result .=           $result .= &xml_begin() . &headtag($title, $head_extra, $args);
                   &xml_begin() . &headtag($title,$head_extra,\%head_args);  
 #replace prev line by  
 #                 &xml_begin() . &headtag($title, $head_extra, $args);  
     }      }
           
     if (! exists($args->{'skip_phases'}{'body'}) ) {      if (! exists($args->{'skip_phases'}{'body'}) ) {
Line 6894  sub end_page { Line 6941  sub end_page {
  }   }
  $result .= &Apache::lonxml::xmlend($target,$parser);   $result .= &Apache::lonxml::xmlend($target,$parser);
     }      }
   
     if ($args->{'frameset'}) {      if ($args->{'frameset'}) {
  $result .= '</frameset>';   $result .= '</frameset>';
     } else {      } else {
Line 6913  sub end_page { Line 6959  sub end_page {
     return $result;      return $result;
 }  }
   
   sub wishlist_window {
       return(<<'ENDWISHLIST');
   <script type="text/javascript" lang="javascript">
   // <![CDATA[
   // <!-- BEGIN LON-CAPA Internal
   function set_wishlistlink(title, path) {
       if (!title) {
           title = document.title;
           title = title.replace(/^LON-CAPA /,'');
       }
       if (!path) {
           path = location.pathname;
       }
       Win = window.open('/adm/wishlist?mode=newLink&setTitle='+title+'&setPath='+path,
                         'wishlistNewLink','width=560,height=350,scrollbars=0');
   }
   // END LON-CAPA Internal -->
   // ]]>
   </script>
   ENDWISHLIST
   }
   
   sub modal_window {
       return(<<'ENDMODAL');
   <script type="text/javascript" lang="javascript">
   // <![CDATA[
   // <!-- BEGIN LON-CAPA Internal
   var modalWindow = {
    parent:"body",
    windowId:null,
    content:null,
    width:null,
    height:null,
    close:function()
    {
           $(".LCmodal-window").remove();
           $(".LCmodal-overlay").remove();
    },
    open:function()
    {
    var modal = "";
    modal += "<div class=\"LCmodal-overlay\"></div>";
    modal += "<div id=\"" + this.windowId + "\" class=\"LCmodal-window\" style=\"width:" + this.width + "px; height:" + this.height + "px; margin-top:-" + (this.height / 2) + "px; margin-left:-" + (this.width / 2) + "px;\">";
    modal += this.content;
    modal += "</div>";
   
    $(this.parent).append(modal);
   
    $(".LCmodal-window").append("<a class=\"LCclose-window\"></a>");
    $(".LCclose-window").click(function(){modalWindow.close();});
    $(".LCmodal-overlay").click(function(){modalWindow.close();});
    }
   };
    var openMyModal = function(source,width,height,scrolling)
    {
    modalWindow.windowId = "myModal";
    modalWindow.width = width;
    modalWindow.height = height;
    modalWindow.content = "<iframe width='"+width+"' height='"+height+"' frameborder='0' scrolling='"+scrolling+"' allowtransparency='true' src='" + source + "'>&lt/iframe>";
    modalWindow.open();
    };
   // END LON-CAPA Internal -->
   // ]]>
   </script>
   ENDMODAL
   }
   
   sub modal_link {
       my ($link,$linktext,$width,$height,$target,$scrolling)=@_;
       unless ($width) { $width=480; }
       unless ($height) { $height=400; }
       unless ($scrolling) { $scrolling='yes'; }
       return '<a href="'.$link.'" target="'.$target.'" onclick="openMyModal(\''.$link.'\','.$width.','.$height.',\''.$scrolling.'\'); return false;">'.
              $linktext.'</a>';
   }
   
   sub modal_adhoc_script {
       my ($funcname,$width,$height,$content)=@_;
       return (<<ENDADHOC);
   <script type="text/javascript" lang="javascript">
   // <![CDATA[
           var $funcname = function()
           {
                   modalWindow.windowId = "myModal";
                   modalWindow.width = $width;
                   modalWindow.height = $height;
                   modalWindow.content = '$content';
                   modalWindow.open();
           };  
   // ]]>
   </script>
   ENDADHOC
   }
   
   sub modal_adhoc_window {
       my ($funcname,$width,$height,$content,$linktext)=@_;
       my $innerwidth=$width-20;
       $content=&js_ready(
                  &start_page('Dialog',undef,{'only_body'=>1,'bgcolor'=>'#FFFFFF'}).
                    &start_scrollbox($width.'px',$innerwidth.'px',$height.'px').
                       $content.
                    &end_scrollbox().
                  &end_page()
                );
       return &modal_adhoc_script($funcname,$width,$height,$content).
            "<a href=\"javascript:$funcname();void(0);\">".$linktext."</a>";
   }
   
 sub html_encode {  sub html_encode {
     my ($result) = @_;      my ($result) = @_;
   
Line 6971  sub start_scrollbox { Line 7125  sub start_scrollbox {
 }  }
   
 sub end_scrollbox {  sub end_scrollbox {
     return '</td></tr></table>';      return '</div></td></tr></table>';
 }  }
   
 sub simple_error_page {  sub simple_error_page {
Line 8824  sub upload_embedded { Line 8978  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 8948  sub modify_html_refs { Line 9102  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'};
     }      }
     my (%allfiles,%codebase,$output,$content);      my (%allfiles,%codebase,$output,$content);
     my @changes = &get_env_multiple('form.namechange');      my @changes = &get_env_multiple('form.namechange');

Removed from v.1.1026  
changed lines
  Added in v.1.1037


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