--- loncom/interface/loncommon.pm	2011/01/05 18:39:38	1.994
+++ loncom/interface/loncommon.pm	2011/05/27 22:58:13	1.1007
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # a pile of common routines
 #
-# $Id: loncommon.pm,v 1.994 2011/01/05 18:39:38 raeburn Exp $
+# $Id: loncommon.pm,v 1.1007 2011/05/27 22:58:13 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -409,7 +409,7 @@ sub studentbrowser_javascript {
 <script type="text/javascript" language="Javascript">
 // <![CDATA[
     var stdeditbrowser;
-    function openstdbrowser(formname,uname,udom,roleflag,ignorefilter,courseadvonly) {
+    function openstdbrowser(formname,uname,udom,clicker,roleflag,ignorefilter,courseadvonly) {
         var url = '/adm/pickstudent?';
         var filter;
 	if (!ignorefilter) {
@@ -421,7 +421,8 @@ sub studentbrowser_javascript {
 	   }
         }
         url += 'form=' + formname + '&unameelement='+uname+
-                                    '&udomelement='+udom;
+                                    '&udomelement='+udom+
+                                    '&clicker='+clicker;
 	if (roleflag) { url+="&roles=1"; }
         if (courseadvonly) { url+="&courseadvonly=1"; }
         var title = 'Student_Browser';
@@ -435,15 +436,37 @@ sub studentbrowser_javascript {
 ENDSTDBRW
 }
 
+sub resourcebrowser_javascript {
+   unless ($env{'request.course.id'}) { return ''; }
+   return (<<'ENDRESBRW');
+<script type="text/javascript" language="Javascript">
+// <![CDATA[
+    var reseditbrowser;
+    function openresbrowser(formname,reslink) {
+        var url = '/adm/pickresource?form='+formname+'&reslink='+reslink;
+        var title = 'Resource_Browser';
+        var options = 'scrollbars=1,resizable=1,menubar=0';
+        options += ',width=700,height=500';
+        reseditbrowser = open(url,title,options,'1');
+        reseditbrowser.focus();
+    }
+// ]]>
+</script>
+ENDRESBRW
+}
+
 sub selectstudent_link {
-   my ($form,$unameele,$udomele,$courseadvonly)=@_;
-   my $callargs = "'".$form."','".$unameele."','".$udomele."'";
+   my ($form,$unameele,$udomele,$courseadvonly,$clickerid)=@_;
+   my $callargs = "'".&Apache::lonhtmlcommon::entity_encode($form)."','".
+                      &Apache::lonhtmlcommon::entity_encode($unameele)."','".
+                      &Apache::lonhtmlcommon::entity_encode($udomele)."'";
    if ($env{'request.course.id'}) {  
        if (!&Apache::lonnet::allowed('srm',$env{'request.course.id'})
 	   && !&Apache::lonnet::allowed('srm',$env{'request.course.id'}.
 					'/'.$env{'request.course.sec'})) {
 	   return '';
        }
+       $callargs.=",'".&Apache::lonhtmlcommon::entity_encode($clickerid)."'";
        if ($courseadvonly)  {
            $callargs .= ",'',1,1";
        }
@@ -460,6 +483,19 @@ sub selectstudent_link {
    return '';
 }
 
+sub selectresource_link {
+   my ($form,$reslink,$arg)=@_;
+   
+   my $callargs = "'".&Apache::lonhtmlcommon::entity_encode($form)."','".
+                      &Apache::lonhtmlcommon::entity_encode($reslink)."'";
+   unless ($env{'request.course.id'}) { return $arg; }
+   return '<span class="LC_nobreak">'.
+              '<a href="javascript:openresbrowser('.$callargs.');">'.
+              $arg.'</a></span>';
+}
+
+
+
 sub authorbrowser_javascript {
     return <<"ENDAUTHORBRW";
 <script type="text/javascript" language="JavaScript">
@@ -3560,8 +3596,8 @@ sub format_previous_attempt_value {
         my @anskeys = sort(keys(%answers));
         if (@anskeys == 1) {
             my $answer = $answers{$anskeys[0]};
-            if ($answer =~ m{\Q\0\E}) {
-                $answer =~ s{\Q\0\E}{, }g;
+            if ($answer =~ m{\0}) {
+                $answer =~ s{\0}{,}g;
             }
             my $tag_internal_answer_name = 'INTERNAL';
             if ($anskeys[0] eq $tag_internal_answer_name) {
@@ -3572,8 +3608,8 @@ sub format_previous_attempt_value {
         } else {
             foreach my $ans (@anskeys) {
                 my $answer = $answers{$ans};
-                if ($answer =~ m{\Q\0\E}) {
-                    $answer =~ s{\Q\0\E}{, }g;
+                if ($answer =~ m{\0}) {
+                    $answer =~ s{\0}{,}g;
                 }
                 $value .=  $ans.'='.$answer.'<br />';;
             } 
@@ -5089,6 +5125,7 @@ td.LC_table_cell_checkbox {
   overflow: hidden;
   margin: 0;
   padding: 0;
+  text-align: left;
 }
 
 .LC_head_subbox {
@@ -5097,6 +5134,7 @@ td.LC_table_cell_checkbox {
   border: 1px solid $sidebg;
   margin: 0 0 10px 0;      
   padding: 3px;
+  text-align: left;
 }
 
 .LC_fontsize_medium {
@@ -5119,6 +5157,7 @@ td.LC_table_cell_checkbox {
 
 li.LC_menubuttons_inline_text img,a {
   cursor:pointer;
+  text-decoration: none;
 }
 
 .LC_menubuttons_link {
@@ -6064,6 +6103,7 @@ fieldset > legend {
 
 #LC_nav_bar {
   float: left;
+  background-color: $pgbg_or_bgcolor;
   margin: 0 0 2px 0;
 }
 
@@ -6072,6 +6112,7 @@ fieldset > legend {
   padding: 0;
   font-weight: bold;
   text-align: center;
+  background-color: $pgbg_or_bgcolor;
 }
 
 #LC_nav_bar em {
@@ -6082,6 +6123,7 @@ fieldset > legend {
 ol.LC_primary_menu {
   float: right;
   margin: 0;
+  background-color: $pgbg_or_bgcolor;
 }
 
 ol#LC_PathBreadcrumbs {
@@ -6141,6 +6183,7 @@ ul#LC_secondary_menu {
   padding: 0;
   margin: 0;
   width: 100%;
+  text-align: left;
 }
 
 ul#LC_secondary_menu li {
@@ -6274,7 +6317,6 @@ ul.LC_TabContentBigger li.active b {
   background:url('/adm/lonIcons/tabbgright.gif') right top no-repeat;
   color:$font;
   border: 0;
-  cursor:default;
 }
 
 
@@ -6877,6 +6919,19 @@ sub validate_page {
     }
 }
 
+
+sub start_scrollbox {
+    my ($outerwidth,$width,$height)=@_;
+    unless ($outerwidth) { $outerwidth='520px'; }
+    unless ($width) { $width='500px'; }
+    unless ($height) { $height='200px'; }
+    return "<table style='width: $outerwidth; border: 1px solid black;'><tr><td style='width: $width;' bgcolor='#FFFFFF'><div style='overflow:auto; width:$width; height: $height;'>";
+}
+
+sub end_scrollbox {
+    return '</td></tr></table>';
+}
+
 sub simple_error_page {
     my ($r,$title,$msg) = @_;
     my $page =
@@ -8874,7 +8929,7 @@ sub modify_html_refs {
                 if ($allfiles{$ref}) {
                     my $newname =  $orig;
                     my ($attrib_regexp,$codebase);
-                    my $attrib_regexp = &unescape($env{'form.embedded_attrib_'.$i});
+                    $attrib_regexp = &unescape($env{'form.embedded_attrib_'.$i});
                     if ($attrib_regexp =~ /:/) {
                         $attrib_regexp =~ s/\:/|/g;
                     }
@@ -8883,7 +8938,7 @@ sub modify_html_refs {
                         $count += $numchg;
                     }
                     if ($env{'form.embedded_codebase_'.$i} ne '') {
-                        my $codebase = &unescape($env{'form.embedded_codebase_'.$i});
+                        $codebase = &unescape($env{'form.embedded_codebase_'.$i});
                         my $numchg = ($content =~ s/(codebase\s*=\s*["']?)\Q$codebase\E(["']?)/$1.$2/i); #' stupid emacs
                         $codebasecount ++;
                     }
@@ -8952,7 +9007,7 @@ sub check_for_upload {
                   &mt('Unable to upload [_1]. (size = [_2] bytes)', 
                       '<span class="LC_filename">'.$fname.'</span>',
                       $filesize).'<br />'.
-                  &mt('Either the file you attempted to upload was empty, or your web browser was unable to read its contents.').'<br />';
+                  &mt('Either the file you attempted to upload was empty, or your web browser was unable to read its contents.').'<br />'.
                   '</span>';
         return ('zero_bytes',$msg);
     }