--- loncom/interface/loncommon.pm	2019/05/05 23:19:47	1.1331
+++ loncom/interface/loncommon.pm	2020/02/12 16:25:48	1.1337
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # a pile of common routines
 #
-# $Id: loncommon.pm,v 1.1331 2019/05/05 23:19:47 raeburn Exp $
+# $Id: loncommon.pm,v 1.1337 2020/02/12 16:25:48 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -436,7 +436,7 @@ sub studentbrowser_javascript {
 <script type="text/javascript" language="Javascript">
 // <![CDATA[
     var stdeditbrowser;
-    function openstdbrowser(formname,uname,udom,clicker,roleflag,ignorefilter,courseadvonly) {
+    function openstdbrowser(formname,uname,udom,clicker,roleflag,ignorefilter,courseadv) {
         var url = '/adm/pickstudent?';
         var filter;
 	if (!ignorefilter) {
@@ -451,7 +451,12 @@ sub studentbrowser_javascript {
                                     '&udomelement='+udom+
                                     '&clicker='+clicker;
 	if (roleflag) { url+="&roles=1"; }
-        if (courseadvonly) { url+="&courseadvonly=1"; }
+        if (courseadv == 'condition') {
+            if (document.getElementById('courseadv')) {
+                courseadv = document.getElementById('courseadv').value;
+            }
+        }
+        if ((courseadv == 'only') || (courseadv == 'none')) { url+="&courseadv="+courseadv; }
         var title = 'Student_Browser';
         var options = 'scrollbars=1,resizable=1,menubar=0';
         options += ',width=700,height=600';
@@ -483,7 +488,7 @@ ENDRESBRW
 }
 
 sub selectstudent_link {
-   my ($form,$unameele,$udomele,$courseadvonly,$clickerid)=@_;
+   my ($form,$unameele,$udomele,$courseadv,$clickerid)=@_;
    my $callargs = "'".&Apache::lonhtmlcommon::entity_encode($form)."','".
                       &Apache::lonhtmlcommon::entity_encode($unameele)."','".
                       &Apache::lonhtmlcommon::entity_encode($udomele)."'";
@@ -494,8 +499,12 @@ sub selectstudent_link {
 	   return '';
        }
        $callargs.=",'".&Apache::lonhtmlcommon::entity_encode($clickerid)."'";
-       if ($courseadvonly)  {
-           $callargs .= ",'',1,1";
+       if ($courseadv eq 'only') {
+           $callargs .= ",'',1,'$courseadv'";
+       } elsif ($courseadv eq 'none') {
+           $callargs .= ",'','','$courseadv'";
+       } elsif ($courseadv eq 'condition') {
+           $callargs .= ",'','','$courseadv'";
        }
        return '<span class="LC_nobreak">'.
               '<a href="javascript:openstdbrowser('.$callargs.');">'.
@@ -3571,16 +3580,17 @@ sub check_passwd_rules {
     my ($domain,$plainpass) = @_;
     my %passwdconf = &Apache::lonnet::get_passwdconf($domain);
     my ($min,$max,@chars,@brokerule,$warning);
+    $min = $Apache::lonnet::passwdmin;
     if (ref($passwdconf{'chars'}) eq 'ARRAY') {
         if ($passwdconf{'min'} =~ /^\d+$/) {
-            $min = $passwdconf{'min'};
+            if ($passwdconf{'min'} > $min) {
+                $min = $passwdconf{'min'};
+            }
         }
         if ($passwdconf{'max'} =~ /^\d+$/) {
             $max = $passwdconf{'max'};
         }
         @chars = @{$passwdconf{'chars'}};
-    } else {
-        $min = 7;
     }
     if (($min) && (length($plainpass) < $min)) {
         push(@brokerule,'min');
@@ -3597,7 +3607,7 @@ sub check_passwd_rules {
             }
         }
         if ($rules{'lc'}) {
-            unless ($plainpass =~ /a-z/) {
+            unless ($plainpass =~ /[a-z]/) {
                 push(@brokerule,'lc');
             }
         }
@@ -3626,13 +3636,16 @@ sub check_passwd_rules {
         $rulenames{'min'} = &mt('Minimum password length: [_1]',$min);
         $rulenames{'max'} = &mt('Maximum password length: [_1]',$max);
         $warning = &mt('Password did not satisfy the following:').'<ul>';
-        foreach my $rule ('min','max','uc','ls','num','spec') {
+        foreach my $rule ('min','max','uc','lc','num','spec') {
             if (grep(/^$rule$/,@brokerule)) {
                 $warning .= '<li>'.$rulenames{$rule}.'</li>';
             }
         }
         $warning .= '</ul>';
     }
+    if (wantarray) {
+        return @brokerule;
+    }
     return $warning;
 }
 
@@ -7254,7 +7267,8 @@ table.LC_prior_tries td {
   padding: 6px;
 }
 
-.LC_answer_unknown {
+.LC_answer_unknown,
+.LC_answer_warning {
   background: orange;
   color: black;
   padding: 6px;
@@ -8250,6 +8264,14 @@ ul.LC_funclist li {
 		cursor:pointer;
 }
 
+pre.LC_wordwrap {
+  white-space: pre-wrap;
+  white-space: -moz-pre-wrap;
+  white-space: -pre-wrap;
+  white-space: -o-pre-wrap;
+  word-wrap: break-word;
+}
+
 /*
   styles used for response display
 */
@@ -9006,8 +9028,7 @@ sub modal_link {
         $target_attr = 'target="'.$target.'"';
     }
     return <<"ENDLINK";
-<a href="$link" $target_attr title="$title" onclick="javascript:openMyModal('$link',$width,$height,'$scrolling','$transparency','$style'); return false;">
-           $linktext</a>
+<a href="$link" $target_attr title="$title" onclick="javascript:openMyModal('$link',$width,$height,'$scrolling','$transparency','$style'); return false;">$linktext</a>
 ENDLINK
 }