Diff for /loncom/interface/lonhtmlcommon.pm between versions 1.331 and 1.343

version 1.331, 2012/11/16 23:37:16 version 1.343, 2013/04/30 15:10:22
Line 209  dependencies for a web page uploaded dir Line 209  dependencies for a web page uploaded dir
 =cut  =cut
   
 sub dependencycheck_js {  sub dependencycheck_js {
     my ($symb,$title,$url) = @_;      my ($symb,$title,$url,$folderpath,$uri) = @_;
     my $link = '/adm/dependencies?symb='.&HTML::Entities::encode($symb,'<>&"').      my $link;
                '&title='.&HTML::Entities::encode($title,'<>&"').      if ($symb) {
                '&url='.&HTML::Entities::encode($url,'<>&"');          $link = '/adm/dependencies?symb='.&HTML::Entities::encode($symb,'<>&"');
       } elsif ($folderpath) {
           $link = '/adm/dependencies?folderpath='.&HTML::Entities::encode($folderpath,'<>&"');
            $url = $uri;
       }
       $link .= (($link=~/\?/)?'&amp;':'?').'title='.
                &HTML::Entities::encode($title,'<>&"');
       if ($url) {
           $link .= '&url='.&HTML::Entities::encode($url,'<>&"');
       }
     return <<ENDJS;      return <<ENDJS;
                 <script type="text/javascript">                  <script type="text/javascript">
                 // <![CDATA[                  // <![CDATA[
Line 1271  sub htmlareaselectactive { Line 1280  sub htmlareaselectactive {
             }              }
         }          }
     }      }
   
       my %lt = &Apache::lonlocal::texthash(
                 'plain'       => 'Plain text',
                 'rich'        => 'Rich formatting',
                 'plain_title' => 'Disable rich text formatting and edit in plain text',
                 'rich_title'  => 'Enable rich text formatting (bold, italic, etc.)',
             );
   
     $output.='      $output.='
           
     function containsBlockHtml(id) {      function containsBlockHtml(id) {
Line 1299  sub htmlareaselectactive { Line 1316  sub htmlareaselectactive {
     var rt_enabled  = $(this).hasClass("LC_enable_rt");      var rt_enabled  = $(this).hasClass("LC_enable_rt");
         if (rt_enabled) {          if (rt_enabled) {
     startRichEditor(id);      startRichEditor(id);
  $("#LC_rt_"+id).html("<b>&laquo; Plain text</b>");   $("#LC_rt_"+id).html("<b>&laquo; '.$lt{'plain'}.'</b>");
  $("#LC_rt_"+id).attr("title", "Disable rich text formatting and edit in plain text");   $("#LC_rt_"+id).attr("title", "'.$lt{'plain_title'}.'");
  $("#LC_rt_"+id).addClass("LC_disable_rt");   $("#LC_rt_"+id).addClass("LC_disable_rt");
  $("#LC_rt_"+id).removeClass("LC_enable_rt");   $("#LC_rt_"+id).removeClass("LC_enable_rt");
     } else {      } else {
  destroyRichEditor(id);   destroyRichEditor(id);
  $("#LC_rt_"+id).html("<b>Rich formatting &raquo;</b>");   $("#LC_rt_"+id).html("<b>'.$lt{'rich'}.' &raquo;</b>");
  $("#LC_rt_"+id).attr("title", "Enable rich text formatting (bold, italic, etc.)");   $("#LC_rt_"+id).attr("title", "'.$lt{'rich_title'}.'");
  $("#LC_rt_"+id).addClass("LC_enable_rt");   $("#LC_rt_"+id).addClass("LC_enable_rt");
  $("#LC_rt_"+id).removeClass("LC_disable_rt");   $("#LC_rt_"+id).removeClass("LC_disable_rt");
  }';   }';
Line 1327  sub htmlareaselectactive { Line 1344  sub htmlareaselectactive {
  var id = $(this).attr("id");   var id = $(this).attr("id");
                         var rt_enabled = containsBlockHtml(id);                          var rt_enabled = containsBlockHtml(id);
  if(rt_enabled) {   if(rt_enabled) {
  $(this).before("<div><a href=\"#\" id=\"LC_rt_"+id+"\" title=\"Disable rich text formatting and edit in plain text\" class=\"LC_disable_rt\"><b>&laquo; Plain text</b></a></div>");   $(this).before("<div><a href=\"#\" id=\"LC_rt_"+id+"\" title=\"'.$lt{'plain_title'}.'\" class=\"LC_disable_rt\"><b>&laquo; '.$lt{'plain'}.'</b></a></div>");
  startRichEditor(id);   startRichEditor(id);
  $("#LC_rt_"+id).click(editorHandler);   $("#LC_rt_"+id).click(editorHandler);
  }   }
  else {   else {
  $(this).before("<div><a href=\"#\" id=\"LC_rt_"+id+"\" title=\"Enable rich text formatting (bold, italic, etc.)\" class=\"LC_enable_rt\"><b>Rich formatting &raquo;</b></a></div>");   $(this).before("<div><a href=\"#\" id=\"LC_rt_"+id+"\" title=\"'.$lt{'rich_title'}.'\" class=\"LC_enable_rt\"><b>'.$lt{'rich'}.' &raquo;</b></a></div>");
  $("#LC_rt_"+id).click(editorHandler);   $("#LC_rt_"+id).click(editorHandler);
  }';   }';
     if ($dragmath_prefix ne '') {      if ($dragmath_prefix ne '') {
Line 1346  sub htmlareaselectactive { Line 1363  sub htmlareaselectactive {
  });   });
  $(".LC_richDefaultOn").each(function() {   $(".LC_richDefaultOn").each(function() {
  var id = $(this).attr("id");   var id = $(this).attr("id");
  $(this).before("<div><a href=\"#\" id=\"LC_rt_"+id+"\" title=\"Disable rich text formatting and edit in plain text\" class=\"LC_disable_rt\"><b>&laquo; Plain text</b></a></div>");   $(this).before("<div><a href=\"#\" id=\"LC_rt_"+id+"\" title=\"'.$lt{'plain_title'}.'\" class=\"LC_disable_rt\"><b>&laquo; '.$lt{'plain'}.'</b></a></div>");
  startRichEditor(id);   startRichEditor(id);
  $("#LC_rt_"+id).click(editorHandler);   $("#LC_rt_"+id).click(editorHandler);
  });   });
  $(".LC_richDefaultOff").each(function() {   $(".LC_richDefaultOff").each(function() {
  var id = $(this).attr("id");   var id = $(this).attr("id");
  $(this).before("<div><a href=\"#\" id=\"LC_rt_"+id+"\" title=\"Enable rich text formatting (bold, italic, etc.)\" class=\"LC_enable_rt\"><b>Rich formatting &raquo;</b></a></div>");   $(this).before("<div><a href=\"#\" id=\"LC_rt_"+id+"\" title=\"'.$lt{'rich_title'}.'\" class=\"LC_enable_rt\"><b>'.$lt{'rich'}.' &raquo;</b></a></div>");
  $("#LC_rt_"+id).click(editorHandler);   $("#LC_rt_"+id).click(editorHandler);
  });   });
   
Line 1387  sub htmlareaselectactive { Line 1404  sub htmlareaselectactive {
     #   is used to determine when the countdown timer turns red to warn the user      #   is used to determine when the countdown timer turns red to warn the user
     #   to think about submitting.      #   to think about submitting.
   
     my $dueDateLayout = &mt('Due in: {dn} {dl} {hnn}{sep}{mnn}{sep}{snn} [_1]',"<span id='submitearly'></span>");      my $dueDateLayout = &mt('Due in: {dn} {dl} {hnn}{sep}{mnn}{sep}{snn} [_1]',
                               "<span id='submitearly'></span>");
     my $early = '- <b>'.&mt('Submit Early').'</b>';      my $early = '- <b>'.&mt('Submit Early').'</b>';
     my $pastdue = '- <b>'.&mt('Past Due').'</b>';      my $pastdue = '- <b>'.&mt('Past Due').'</b>';
     $output .= <<JAVASCRIPT;      $output .= <<JAVASCRIPT;
Line 1505  sub show_return_link { Line 1523  sub show_return_link {
     unless ($env{'request.course.id'}) { return 0; }      unless ($env{'request.course.id'}) { return 0; }
     if ($env{'request.noversionuri'}=~m{^/priv/} ||      if ($env{'request.noversionuri'}=~m{^/priv/} ||
         $env{'request.uri'}=~m{^/priv/}) { return 1; }          $env{'request.uri'}=~m{^/priv/}) { return 1; }
       return if ($env{'request.noversionuri'} eq '/adm/supplemental');
   
     if (($env{'request.noversionuri'} =~ m{^/adm/(viewclasslist|navmaps)($|\?)})      if (($env{'request.noversionuri'} =~ m{^/adm/(viewclasslist|navmaps)($|\?)})
         || ($env{'request.noversionuri'} =~ m{^/adm/.*/aboutme($|\?)})) {          || ($env{'request.noversionuri'} =~ m{^/adm/.*/aboutme($|\?)})) {
Line 1654  returns: nothing Line 1673  returns: nothing
                 if ($env{'request.noversionuri'} =~                   if ($env{'request.noversionuri'} =~ 
                     m{^/public/($match_domain)/($match_courseid)/syllabus$}) {                      m{^/public/($match_domain)/($match_courseid)/syllabus$}) {
                     unless (($env{'course.'.$env{'request.course.id'}.'.domain'} eq $1) &&                      unless (($env{'course.'.$env{'request.course.id'}.'.domain'} eq $1) &&
                             ($env{'course.'.$env{'request.course.id'}.'.num'} eq $2)) {                               ($env{'course.'.$env{'request.course.id'}.'.num'} eq $2)) {
                         $description = 'Menu';                          $description = 'Menu';
                         $no_mt_descr = 0;                          $no_mt_descr = 0;
                     }                      }
Line 1750  returns: nothing Line 1769  returns: nothing
                              .$links                                .$links 
 ;  ;
         }          }
                   my $nav_and_tools = 0;
         &render_tools(\$links);          foreach my $item ('navigation','tools') {
         $links = &htmltag('div', $links,               if (ref($tools{$item}) eq 'ARRAY') {
                         { id => "LC_breadcrumbs" }) unless ($CourseBreadcrumbs) ;                  $nav_and_tools += scalar(@{$tools{$item}})
         &render_advtools(\$links);              }
           }
           if (($links ne '') || ($nav_and_tools)) {
               &render_tools(\$links);
               $links = &htmltag('div', $links, 
                                 { id => "LC_breadcrumbs" }) unless ($CourseBreadcrumbs) ;
           }
           my $adv_tools = 0;
           if (ref($tools{'advtools'}) eq 'ARRAY') {
               $adv_tools = scalar(@{$tools{'advtools'}});
           }
           if (($links ne '') || ($adv_tools)) {
               &render_advtools(\$links);
           }
   
         # Return the @Crumbs stack to what we started with          # Return the @Crumbs stack to what we started with
         push(@Crumbs,$last);          push(@Crumbs,$last);
Line 1883  returns: nothing Line 1915  returns: nothing
 } # End of scope for @Crumbs  } # End of scope for @Crumbs
   
 sub docs_breadcrumbs {  sub docs_breadcrumbs {
     my ($allowed,$crstype,$contenteditor)=@_;      my ($allowed,$crstype,$contenteditor,$title,$precleared)=@_;
     my ($folderpath,@folders);      my ($folderpath,@folders,$supplementalflag);
     if ($env{'form.pagepath'}) {      @folders = split('&',$env{'form.folderpath'});
         @folders = split('&',$env{'form.pagepath'});      if ($env{'form.folderpath'} =~ /^supplemental/) {
     } else {          $supplementalflag = 1;
         @folders=split('&',$env{'form.folderpath'});  
     }      }
     my $plain='';      my $plain='';
       my $container = 'sequence';
     my ($randompick,$isencrypted,$ishidden,$is_random_order) = (-1,0,0,0);      my ($randompick,$isencrypted,$ishidden,$is_random_order) = (-1,0,0,0);
     &clear_breadcrumbs();      my @docs_crumbs;
     while (@folders) {      while (@folders) {
         my $folder=shift(@folders);          my $folder=shift(@folders);
         my $foldername=shift(@folders);          my $foldername=shift(@folders);
Line 1906  sub docs_breadcrumbs { Line 1938  sub docs_breadcrumbs {
         }          }
         $url .= &escape($folderpath);          $url .= &escape($folderpath);
         my $name=&unescape($foldername);          my $name=&unescape($foldername);
 # each of randompick number, hidden, encrypted, random order are   # each of randompick number, hidden, encrypted, random order, is_page 
 # appended with ":"s to the foldername  # are appended with ":"s to the foldername
         $name=~s/\:(\d*)\:(\w*)\:(\w*):(\d*)$//;          $name=~s/\:(\d*)\:(\w*)\:(\w*):(\d*)\:?(\d*)$//;
         if ($contenteditor) {           unless ($supplementalflag) {
             if ($1 ne '') {              if ($contenteditor) { 
                 $randompick=$1;                  if ($1 ne '') {
             } else {                      $randompick=$1;
                $randompick=-1;                  } else {
                       $randompick=-1;
                   }
                   if ($2) { $ishidden=1; }
                   if ($3) { $isencrypted=1; }
                   if ($4 ne '') { $is_random_order = 1; }
                   if ($5 == 1) {$container = 'page'; }
             }              }
             if ($2) { $ishidden=1; }  
             if ($3) { $isencrypted=1; }  
             if ($4 ne '') { $is_random_order = 1; }  
         }          }
         if ($folder eq 'supplemental') {          if ($folder eq 'supplemental') {
             $name = &mt('Supplemental '.$crstype.' Content');              $name = &mt('Supplemental '.$crstype.' Contents');
         }          }
         if ($contenteditor) {          if ($contenteditor) {
             $plain.=$name.' &gt; ';              $plain.=$name.' &gt; ';
         }          }
         &add_breadcrumb(          push(@docs_crumbs,
                           {'href'  => $url,                            {'href'  => $url,
                            'title' => $name,                             'title' => $name,
                            'text'  => $name,                             'text'  => $name,
                            'no_mt' => 1,                             'no_mt' => 1,
                           });                            });
     }      }
     unless ($contenteditor) {      if ($title) {
         if ($env{'httpref.'.$env{'request.noversionuri'}} ne '') {          push(@docs_crumbs,
             &add_breadcrumb({text => 'View Resource'});                            {'title' => $title,
                              'text'  => $title,
                              'no_mt' => 1,}
                             );
       }
       if (wantarray) {
           unless ($precleared) {
               &clear_breadcrumbs();
         }          }
           &add_breadcrumb(@docs_crumbs);
           if ($contenteditor) {
               $plain=~s/\&gt\;\s*$//;
           }
           my $menulink = 0;
           if (!$allowed && !$contenteditor) {
               $menulink = 1;
           }
           return (&breadcrumbs(undef,undef,$menulink,'nohelp',undef,undef,
                                $contenteditor),
                                $randompick,$ishidden,$isencrypted,$plain,
                                $is_random_order,$container);
     } else {      } else {
         $plain=~s/\&gt\;\s*$//;          return \@docs_crumbs;
     }      }
     return (&breadcrumbs(undef,undef,0,'nohelp',undef,undef,$contenteditor),  
                          $randompick,$ishidden,$isencrypted,$plain,  
                          $is_random_order);  
 }  }
   
 ############################################################  ############################################################
Line 2171  sub course_selection { Line 2222  sub course_selection {
   
     my $courseform='<b>'.&Apache::loncommon::selectcourse_link      my $courseform='<b>'.&Apache::loncommon::selectcourse_link
                      ($formname,'pickcourse','pickdomain','coursedesc','',1,$crstype).'</b>';                       ($formname,'pickcourse','pickdomain','coursedesc','',1,$crstype).'</b>';
         $output .= '<input type="radio" name="coursepick" value="all" onclick="coursePick(this.form)" />'.$allcrs.'<br />';          $output .= '<label><input type="radio" name="coursepick" value="all" onclick="coursePick(this.form)" />'.$allcrs.'</label><br />';
     if ($totcodes > 0) {      if ($totcodes > 0) {
         my $numtitles = @$codetitles;          my $numtitles = @$codetitles;
         if ($numtitles > 0) {          if ($numtitles > 0) {
             $output .= '<input type="radio" name="coursepick" value="category" onclick="coursePick(this.form);alert('."'".&mt('Choose categories, from left to right')."'".')" />'.&mt('Pick courses by category:').' <br />';              $output .= '<label><input type="radio" name="coursepick" value="category" onclick="coursePick(this.form);alert('."'".&mt('Choose categories, from left to right')."'".')" />'.&mt('Pick courses by category:').'</label><br />';
             $output .= '<table><tr><td>'.$$codetitles[0].'<br />'."\n".              $output .= '<table><tr><td>'.$$codetitles[0].'<br />'."\n".
                '<select name="'.$standardnames->[0].                 '<select name="'.$standardnames->[0].
                '" onChange="setPick(this.form);courseSet('."'$$codetitles[0]'".')">'."\n".                 '" onChange="setPick(this.form);courseSet('."'$$codetitles[0]'".')">'."\n".
Line 2216  sub course_selection { Line 2267  sub course_selection {
             $output .= '</tr></table><br />';              $output .= '</tr></table><br />';
         }          }
     }      }
     $output .= '<input type="radio" name="coursepick" value="specific" onclick="coursePick(this.form);opencrsbrowser('."'".$formname."','dccourse','dcdomain','coursedesc','','1','$crstype'".')" />'.$pickspec.' '.$courseform.'&nbsp;&nbsp;<input type="text" value="0" size="4" name="coursetotal" /><input type="hidden" name="courselist" value="" />selected.<br />'."\n";      $output .=
           '<label><input type="radio" name="coursepick" value="specific"'
          .' onclick="coursePick(this.form);opencrsbrowser('."'".$formname."','dccourse','dcdomain','coursedesc','','1','$crstype'".')" />'
          .$pickspec.'</label>'
          .' '.$courseform.'&nbsp;&nbsp;'
          .&mt('[_1] selected.',
                   '<input type="text" value="0" size="4" name="coursetotal" readonly="readonly" />'
                  .'<input type="hidden" name="courselist" value="" />')
          .'<br />'."\n";
     return $output;      return $output;
 }  }
   
Line 3001  PARAMSONE Line 3060  PARAMSONE
     }      }
     if ((chkh == 1) || (listwchange)) {      if ((chkh == 1) || (listwchange)) {
         var primaryheight = document.getElementById('LC_nav_bar').offsetHeight;          var primaryheight = document.getElementById('LC_nav_bar').offsetHeight;
         var secondaryheight = document.getElementById('LC_secondary_menu').offsetHeight;          var secondaryheight;
           if (document.getElementById('LC_secondary_menu') != null) { 
               secondaryheight = document.getElementById('LC_secondary_menu').offsetHeight;
           }
         var crumbsheight = document.getElementById('LC_breadcrumbs').offsetHeight;          var crumbsheight = document.getElementById('LC_breadcrumbs').offsetHeight;
         var dccidheight = 0;          var dccidheight = 0;
         if (document.getElementById('dccid') != null) {          if (document.getElementById('dccid') != null) {
Line 3091  ENDUTILITY Line 3153  ENDUTILITY
 }  }
   
 sub jump_to_editres {  sub jump_to_editres {
     my ($cfile,$home,$switchserver,$forceedit,$forcereg,$symb) = @_;      my ($cfile,$home,$switchserver,$forceedit,$forcereg,$symb,$folderpath,
           $title,$idx,$suppurl,$todocs) = @_;
     my $jscall;      my $jscall;
     if ($switchserver) {      if ($switchserver) {
         if ($symb && $home) {          if ($home) {
             $cfile = '/adm/switchserver?otherserver='.$home.'&amp;role='.              $cfile = '/adm/switchserver?otherserver='.$home.'&amp;role='.
                      &HTML::Entities::encode($env{'request.role'},'"<>&').                       &HTML::Entities::encode($env{'request.role'},'"<>&');
                     '&amp;symb='.&HTML::Entities::encode($symb,'"<>&');              if ($symb) {
                   $cfile .= '&amp;symb='.&HTML::Entities::encode($symb,'"<>&');
               } elsif ($folderpath) {
                   $cfile .= '&amp;folderpath='.&HTML::Entities::encode($folderpath,'"<>&');
               }
             if ($forceedit) {              if ($forceedit) {
                 $cfile .= '&amp;forceedit=1';                  $cfile .= '&amp;forceedit=1';
             }              }
Line 3109  sub jump_to_editres { Line 3176  sub jump_to_editres {
     } else {      } else {
         unless ($cfile =~ m{^/priv/}) {          unless ($cfile =~ m{^/priv/}) {
             if ($symb) {              if ($symb) {
                 $cfile .= (($cfile=~/\?/)?'&amp;':'?')."symb=$symb";                   $cfile .= (($cfile=~/\?/)?'&amp;':'?')."symb=$symb";
               } elsif ($folderpath) {
                   $cfile .= (($cfile=~/\?/)?'&amp;':'?').
                             'folderpath='.&HTML::Entities::encode(&escape($folderpath),'"<>&');
                   if ($title) {
                       $cfile .= (($cfile=~/\?/)?'&amp;':'?').
                                 'title='.&HTML::Entities::encode(&escape($title),'"<>&');
                   }
                   if ($idx) {
                       $cfile .= (($cfile=~/\?/)?'&amp;':'?').'idx='.$idx;
                   }
                   if ($suppurl) {
                       $cfile .= (($cfile=~/\?/)?'&amp;':'?').
                                 'suppurl='.&HTML::Entities::encode(&escape($suppurl));
                   }
             }              }
             if ($forceedit) {              if ($forceedit) {
                 $cfile .= (($cfile=~/\?/)?'&amp;':'?').'forceedit=1';                  $cfile .= (($cfile=~/\?/)?'&amp;':'?').'forceedit=1';
Line 3117  sub jump_to_editres { Line 3198  sub jump_to_editres {
             if ($forcereg) {              if ($forcereg) {
                 $cfile .= (($cfile=~/\?/)?'&amp;':'?').'register=1';                  $cfile .= (($cfile=~/\?/)?'&amp;':'?').'register=1';
             }              }
               if ($todocs) {
                  $cfile .= (($cfile=~/\?/)?'&amp;':'?').'todocs=1';
               }
         }          }
         $jscall = "go('$cfile')";          $jscall = "go('$cfile')";
     }      }
Line 3489  sub funclist_from_array { Line 3573  sub funclist_from_array {
                { listattr => {class => 'LC_funclist'} });                 { listattr => {class => 'LC_funclist'} });
 }     }   
   
   =pod
   
   =item &actionbox( \@array )
   
   Constructs a XHTML list from \@array with the first item being visually
   highlighted and set to the value 'Actions'. The list is wrapped in a division.
   
   The actionlist is used to offer contextual actions, mostly at the bottom
   of a page, on which the outcome of an processed action is shown,
   e.g. a file operation in Construction Space.
   
   =over
   
   =item \@array
   
   A reference to the array containing text. Details: sub funclist_from_array
   
   =back
    
   Returns: XHTML div as string. 
   
   =back
   
   =cut  
   
   sub actionbox {
       my ($items) = @_;
       return unless(ref($items) eq 'ARRAY');
       return
           '<div class="LC_actionbox">'
          .&funclist_from_array($items, {legend => &mt('Actions')})
          .'</div>';
   }
   
 1;  1;
   
 __END__  __END__

Removed from v.1.331  
changed lines
  Added in v.1.343


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