Diff for /loncom/interface/lonhtmlcommon.pm between versions 1.339 and 1.352

version 1.339, 2012/12/22 14:45:35 version 1.352, 2013/07/22 11:46:23
Line 64  use HTML::Entities(); Line 64  use HTML::Entities();
 use LONCAPA qw(:DEFAULT :match);  use LONCAPA qw(:DEFAULT :match);
   
 sub java_not_enabled {  sub java_not_enabled {
    return "\n".'<span class="LC_error">'.      if (($env{'browser.mobile'}) && ($env{'browser.mobile'} =~ /^ipad|ipod|iphone$/i)) {
           &mt('The required Java applet could not be started. Please make sure to have Java installed and active in your browser.').          return "\n".'<span class="LC_error">'.
           "</span>\n";                 &mt('The required Java applet could not be started, because Java is not supported by your mobile device.').
                  "</span>\n";
       } else {
           return "\n".'<span class="LC_error">'.
                  &mt('The required Java applet could not be started. Please make sure to have Java installed and active in your browser.').
                  "</span>\n";
       }
 }  }
   
 sub coursepreflink {  sub coursepreflink {
Line 216  sub dependencycheck_js { Line 222  sub dependencycheck_js {
     } elsif ($folderpath) {      } elsif ($folderpath) {
         $link = '/adm/dependencies?folderpath='.&HTML::Entities::encode($folderpath,'<>&"');          $link = '/adm/dependencies?folderpath='.&HTML::Entities::encode($folderpath,'<>&"');
          $url = $uri;           $url = $uri;
       } elsif ($uri =~ m{^/public/$match_domain/$match_courseid/syllabus$}) {
           $link = '/adm/dependencies';
     }      }
     $link .= (($link=~/\?/)?'&amp;':'?').'title='.      $link .= (($link=~/\?/)?'&amp;':'?').'title='.
              &HTML::Entities::encode($title,'<>&"');               &HTML::Entities::encode($title,'<>&"');
Line 1224  ENDEDITOR Line 1232  ENDEDITOR
   
 <script type="text/javascript" src="/adm/spellchecker/js/jquery.spellchecker.min.js"></script>  <script type="text/javascript" src="/adm/spellchecker/js/jquery.spellchecker.min.js"></script>
 <link rel="stylesheet" type="text/css" href="/adm/spellchecker/css/spellchecker.css" />  <link rel="stylesheet" type="text/css" href="/adm/spellchecker/css/spellchecker.css" />
   <script type="text/javascript" src="/adm/nicescroll/jquery.nicescroll.min.js"></script>
   
 ENDJQUERY  ENDJQUERY
  return $s;   return $s;
Line 1257  sub htmlareaselectactive { Line 1266  sub htmlareaselectactive {
     my ($args) = @_;       my ($args) = @_; 
     unless (&htmlareabrowser()) { return ''; }      unless (&htmlareabrowser()) { return ''; }
     my $output='<script type="text/javascript" defer="defer">'."\n"      my $output='<script type="text/javascript" defer="defer">'."\n"
               .'// <![CDATA['."\n";                .'// <![CDATA['."\n"
                 .'//<!-- BEGIN LON-CAPA Internal'."\n";
     my $lang = &htmlarea_lang();      my $lang = &htmlarea_lang();
     my $fullpage = 'false';      my $fullpage = 'false';
     my ($dragmath_prefix,$dragmath_helpicon,$dragmath_whitespace);      my ($dragmath_prefix,$dragmath_helpicon,$dragmath_whitespace);
Line 1280  sub htmlareaselectactive { Line 1290  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 1308  sub htmlareaselectactive { Line 1326  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 1336  sub htmlareaselectactive { Line 1354  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 1355  sub htmlareaselectactive { Line 1373  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 1488  JAVASCRIPT Line 1506  JAVASCRIPT
   
     }      }
     $output.="\nwindow.status='Activated Editfields';\n"      $output.="\nwindow.status='Activated Editfields';\n"
               .'// END LON-CAPA Internal -->'."\n"
             .'// ]]>'."\n"              .'// ]]>'."\n"
             .'</script>';              .'</script>';
     return $output;      return $output;
Line 1908  returns: nothing Line 1927  returns: nothing
   
 sub docs_breadcrumbs {  sub docs_breadcrumbs {
     my ($allowed,$crstype,$contenteditor,$title,$precleared)=@_;      my ($allowed,$crstype,$contenteditor,$title,$precleared)=@_;
     my ($folderpath,@folders);      my ($folderpath,@folders,$supplementalflag);
     my @folders = split('&',$env{'form.folderpath'});      @folders = split('&',$env{'form.folderpath'});
       if ($env{'form.folderpath'} =~ /^supplemental/) {
           $supplementalflag = 1;
       }
     my $plain='';      my $plain='';
     my $container = 'sequence';      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);
Line 1930  sub docs_breadcrumbs { Line 1952  sub docs_breadcrumbs {
 # each of randompick number, hidden, encrypted, random order, is_page   # each of randompick number, hidden, encrypted, random order, is_page 
 # are appended with ":"s to the foldername  # are appended with ":"s to the foldername
         $name=~s/\:(\d*)\:(\w*)\:(\w*):(\d*)\:?(\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 ($5 == 1) {$container = 'page'; }  
         }          }
         if ($folder eq 'supplemental') {          if ($folder eq 'supplemental') {
             $name = &mt('Supplemental '.$crstype.' Contents');              $name = &mt('Supplemental Content');
         }          }
         if ($contenteditor) {          if ($contenteditor) {
             $plain.=$name.' &gt; ';              $plain.=$name.' &gt; ';
Line 2209  sub course_selection { Line 2233  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".
                ' <option value="-1" />Select'."\n";                 ' <option value="-1" />Select'."\n";
             my @items = ();              my @items = ();
             my @longitems = ();              my @longitems = ();
Line 2246  sub course_selection { Line 2270  sub course_selection {
             for (my $i=1; $i<$numtitles; $i++) {              for (my $i=1; $i<$numtitles; $i++) {
                 $output .= '<td>'.$$codetitles[$i].'<br />'."\n".                  $output .= '<td>'.$$codetitles[$i].'<br />'."\n".
                           '<select name="'.$standardnames->[$i].                            '<select name="'.$standardnames->[$i].
                           '" onChange="courseSet('."'$$codetitles[$i]'".')">'."\n".                            '" onchange="courseSet('."'$$codetitles[$i]'".')">'."\n".
                           '<option value="-1">&lt;-Pick '.$$codetitles[$i-1].'</option>'."\n".                            '<option value="-1">&lt;-Pick '.$$codetitles[$i-1].'</option>'."\n".
                           '</select>'."\n".                            '</select>'."\n".
                           '</td>';                            '</td>';
Line 2254  sub course_selection { Line 2278  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 2375  sub resource_info_box { Line 2407  sub resource_info_box {
     return $return;      return $return;
 }  }
   
   # display_usage
   # 
   # Generates a div containing a block, filled to show percentage of current quota used
   #
   # Quotas available for user portfolios, group portfolios, authoring spaces, and course
   # content stored directly within a course (i.e., excluding published content).
   #
   
   sub display_usage {
       my ($current_disk_usage,$disk_quota) = @_;
       my $usage = $current_disk_usage/1000;
       my $quota = $disk_quota/1000;
       my $percent;
       if ($disk_quota == 0) {
           $percent = 100.0;
       } else {
           $percent = 100*($current_disk_usage/$disk_quota);
       }
       $usage = sprintf("%.2f",$usage);
       $quota = sprintf("%.2f",$quota);
       $percent = sprintf("%.0f",$percent);
       my ($color,$cssclass);
       if ($percent <= 60) {
           $color = '#00A000';
       } elsif ($percent > 60 && $percent < 90) {
           $color = '#FFD300';
           $cssclass = 'class="LC_warning"';
       } elsif( $percent >= 90) {
           $color = '#FF0000';
           $cssclass = 'class="LC_error"';
       }
       my $prog_width = $percent;
       if ($prog_width > 100) {
           $prog_width = 100;
       }
       return '
     <div id="meter1" align="left" '.$cssclass.'>'.&mt('Currently using [_1] of the [_2] available.',$usage.' MB <span style="font-weight:bold;">('.$percent.'%)</span>',$quota.' MB')."\n".
   '   <div id="meter2" style="display:block; margin-top:5px; margin-bottom:5px; margin-left:0px; margin-right:0px; width:400px; border:1px solid #000000; height:10px;">'."\n".
   '    <div id="meter3" style="display:block; background-color:'.$color.'; width:'.$prog_width.'%; height:10px; color:#000000; margin:0px;"></div>'."\n".
   '   </div>'."\n".
   '  </div>';
   }
   
 ##############################################  ##############################################
 ##############################################  ##############################################
   
Line 2873  sub resize_scrollbox_js { Line 2948  sub resize_scrollbox_js {
                    scroll => 'contentscroll',                     scroll => 'contentscroll',
                    boxh   => 'contenteditor',                     boxh   => 'contenteditor',
                  );                   );
         $paddingwfrac = 0.09;           $paddingwfrac = 0.09;
         $offsetwfrac = 0.015;          $offsetwfrac = 0.015;
         $offsetv = 20;          $offsetv = 20;
         $minw = 250;          $minw = 250;
Line 2912  function resize_scrollbox(scrollboxname, Line 2987  function resize_scrollbox(scrollboxname,
     var scrolltableid = 'table_'+scrollboxname;      var scrolltableid = 'table_'+scrollboxname;
     var scrollbox;      var scrollbox;
     var scrolltable;      var scrolltable;
       var ismobile = '$env{'browser.mobile'}';
   
     if (document.getElementById("$names{'boxw'}") == null) {      if (document.getElementById("$names{'boxw'}") == null) {
         return;          return;
Line 2948  FIRST Line 3024  FIRST
     }      }
     $output .= <<"SECOND";      $output .= <<"SECOND";
     var listwchange;      var listwchange;
       var scrollchange;
     if (chkw == 1) {      if (chkw == 1) {
         var boxw = document.getElementById("$names{'boxw'}").offsetWidth;          var boxw = document.getElementById("$names{'boxw'}").offsetWidth;
         var itemw;          var itemw;
Line 2959  FIRST Line 3036  FIRST
   
         var scrollboxw = scrollbox.offsetWidth;          var scrollboxw = scrollbox.offsetWidth;
         var scrollboxscrollw = scrollbox.scrollWidth;          var scrollboxscrollw = scrollbox.scrollWidth;
           var scrollstart = scrollboxw;
   
         var offsetw = parseInt(vpw * $offsetwfrac);          var offsetw = parseInt(vpw * $offsetwfrac);
         var paddingw = parseInt(vpw * $paddingwfrac);          var paddingw = parseInt(vpw * $paddingwfrac);
Line 3033  PARAMSONE Line 3111  PARAMSONE
             }              }
         }          }
   
           if (newscrollboxw != scrollboxw) {
               scrollchange = 1;
           }
   
         if (itemid.offsetWidth != itemwstart) {          if (itemid.offsetWidth != itemwstart) {
             listwchange = 1;              listwchange = 1;
         }          }
     }      }
     if ((chkh == 1) || (listwchange)) {      if ((chkh == 1) || (listwchange)) {
           var itemid = document.getElementById("$names{'item'}");
           if (itemid != null) {
               itemh = itemid.offsetHeight;
           }
         var primaryheight = document.getElementById('LC_nav_bar').offsetHeight;          var primaryheight = document.getElementById('LC_nav_bar').offsetHeight;
         var secondaryheight;          var secondaryheight;
         if (document.getElementById('LC_secondary_menu') != null) {           if (document.getElementById('LC_secondary_menu') != null) { 
Line 3058  PARAMSONE Line 3144  PARAMSONE
   
         var scrollboxheight = scrollbox.offsetHeight;          var scrollboxheight = scrollbox.offsetHeight;
         var scrollboxscrollheight = scrollbox.scrollHeight;          var scrollboxscrollheight = scrollbox.scrollHeight;
           var scrollboxh = scrollboxheight;
   
         var minvscrollbox = $minv;          var minvscrollbox = $minv;
         var offsetv = $offsetv;          var offsetv = $offsetv;
Line 3088  PARAMSONE Line 3175  PARAMSONE
                 scrollbox.style.height = newscrollheight+"px";                  scrollbox.style.height = newscrollheight+"px";
             }              }
         }          }
           var newscrollboxh = scrollbox.offsetHeight;
           if (scrollboxh != newscrollboxh) {
               scrollchange = 1;
           }
       }
       if (ismobile && scrollchange) {
           \$("#div_$names{'scroll'}").getNiceScroll().onResize();
     }      }
     return;      return;
 }  }
Line 3561  highlighted and set to the value 'Action Line 3655  highlighted and set to the value 'Action
   
 The actionlist is used to offer contextual actions, mostly at the bottom  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,  of a page, on which the outcome of an processed action is shown,
 e.g. a file operation in Construction Space.  e.g. a file operation in Authoring Space.
   
 =over  =over
   

Removed from v.1.339  
changed lines
  Added in v.1.352


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