--- loncom/interface/loncreateuser.pm	2006/06/29 17:41:06	1.127
+++ loncom/interface/loncreateuser.pm	2006/11/21 21:38:44	1.134
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Create a user
 #
-# $Id: loncreateuser.pm,v 1.127 2006/06/29 17:41:06 albertel Exp $
+# $Id: loncreateuser.pm,v 1.134 2006/11/21 21:38:44 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -116,6 +116,20 @@ sub authorpriv {
     return 1;
 }
 
+# ====================================================
+
+sub portfolio_quota {
+    my ($ccuname,$ccdomain) = @_;
+    my %lt = &Apache::lonlocal::texthash(
+                   'disk' => "Disk space allocated to user's portfolio files",
+    );
+    my $output = '<h3>'.$lt{'disk'}.'</h3>'.
+                 '<input type="text" name="portfolioquota" size ="5" value="'.
+                 &Apache::loncommon::get_user_quota($ccuname,$ccdomain).
+                 '" />&nbsp;Mb';
+    return $output;
+}
+
 # =================================================================== Phase one
 
 sub print_username_entry_form {
@@ -313,18 +327,27 @@ sub print_user_modification_page {
                 alert("Section designations do not apply to Course Coordinator roles.\\nA course coordinator role will be added with access to all sections.");
                 section = "";
             }
+            var coursename = "_$dcdom"+"_"+course+"_"+userrole
             var numcourse = getIndex(document.cu.dccourse);
             if (numcourse == "-1") {
                 alert("There was a problem with your course selection");
                 return
             }
-            else { 
-                var coursename = "_$dcdom"+"_"+course+"_"+userrole
-                document.cu.elements[numcourse].name = "act"+coursename
-                document.cu.elements[numcourse+5].name = "sec"+coursename
-                document.cu.elements[numcourse+5].value = section
-                document.cu.elements[numcourse+7].name = "start"+coursename
-                document.cu.elements[numcourse+8].name = "end"+coursename
+            else {
+                document.cu.elements[numcourse].name = "act"+coursename;
+                var numnewsec = getIndex(document.cu.newsec);
+                if (numnewsec != "-1") {
+                    document.cu.elements[numnewsec].name = "sec"+coursename;
+                    document.cu.elements[numnewsec].value = section;
+                }
+                var numstart = getIndex(document.cu.start);
+                if (numstart != "-1") {
+                    document.cu.elements[numstart].name = "start"+coursename;
+                }
+                var numend = getIndex(document.cu.end);
+                if (numend != "-1") {
+                    document.cu.elements[numend].name = "end"+coursename
+                }
             }
         }
         document.cu.submit();
@@ -378,7 +401,6 @@ ENDSCRIPT
             var str = document.cu.elements[i].name;
             var checkcurr = str.match(re1);
             if (checkcurr != null) {
-                var re2 = /^currsec_[a-zA-Z0-9]+_[a-zA-Z0-9]+_(\\w+)\$/;
                 if (document.cu.elements[i-1].checked == true) {
                     var re2 = /^currsec_[a-zA-Z0-9]+_[a-zA-Z0-9]+_(\\w+)\$/;
                     match = re2.exec(str);
@@ -439,8 +461,8 @@ ENDSCRIPT
                                     }
                                 }
                             }
-                            document.cu.elements[i+2].value = sections;
                         }
+                        document.cu.elements[i+2].value = sections;
                     }
                 }
             }
@@ -493,6 +515,11 @@ ENDFORMINFO
                     'hs'   => "Home Server",
                     'lg'   => "Login Data"
 				       );
+        my $portfolioform;
+        if (&Apache::lonnet::allowed('mpq',$env{'request.role.domain'})) {
+            # Current user has quota modification privileges
+            $portfolioform = &portfolio_quota($ccuname,$ccdomain);
+        }
 	my $genhelp=&Apache::loncommon::help_open_topic('Generation');
         &initialize_authen_forms();
 	$r->print(<<ENDNEWUSER);
@@ -525,6 +552,8 @@ $lt{'hs'}: <select name="hserver" size="
 <p>$authformint </p>
 <p>$authformfsys</p>
 <p>$authformloc </p>
+<hr />
+$portfolioform
 ENDNEWUSER
     } else { # user already exists
 	my %lt=&Apache::lonlocal::texthash(
@@ -544,8 +573,8 @@ $forminfo
 ENDCHANGEUSER
         # Get the users information
         my %userenv = &Apache::lonnet::get('environment',
-                          ['firstname','middlename','lastname','generation'],
-                          $ccdomain,$ccuname);
+                          ['firstname','middlename','lastname','generation',
+                           'portfolioquota'],$ccdomain,$ccuname);
         my %rolesdump=&Apache::lonnet::dump('roles',$ccdomain,$ccuname);
         $r->print(<<END);
 <hr />
@@ -605,7 +634,7 @@ END
                if ($area =~ /^\/(\w+)\/(\d\w+)/ ) {
 		   $class='Course';
                    my ($coursedom,$coursedir) = ($1,$2);
-		   $sortkey.="\0$1";
+		   $sortkey.="\0$coursedom";
                    # $1.'_'.$2 is the course id (eg. 103_12345abcef103l3).
                    my %coursedata=
                        &Apache::lonnet::coursedescription($1.'_'.$2);
@@ -620,6 +649,7 @@ END
 		       $carea=&mt('Unavailable course').': '.$area;
 		       $sortkey.="\0".&mt('Unavailable course').': '.$area;
 		   }
+		   $sortkey.="\0$coursedir";
                    $inccourses{$1.'_'.$2}=1;
                    if ((&Apache::lonnet::allowed('c'.$role_code,$1.'/'.$2)) ||
                        (&Apache::lonnet::allowed('c'.$role_code,$ccdomain))) {
@@ -772,7 +802,7 @@ END
 		$currentauth=~/^internal:/ or
 		$currentauth=~/^localauth:/
 		) { # bad authentication scheme
-	    if (&Apache::lonnet::allowed('mau',$env{'request.role.domain'})) {
+	    if (&Apache::lonnet::allowed('mau',$ccdomain)) {
                 &initialize_authen_forms();
 		my %lt=&Apache::lonlocal::texthash(
                                'err'   => "ERROR",
@@ -795,7 +825,7 @@ $lt{'uuas'} ($currentauth). $lt{'sldb'}.
 <p>$authformloc</p>
 ENDBADAUTH
             } else { 
-                # This user is not allowed to modify the users 
+                # This user is not allowed to modify the user's 
                 # authentication scheme, so just notify them of the problem
 		my %lt=&Apache::lonlocal::texthash(
                                'err'   => "ERROR",
@@ -804,9 +834,6 @@ ENDBADAUTH
 						   );
 		$r->print(<<ENDBADAUTH);
 <hr />
-<script type="text/javascript" language="Javascript">
-$loginscript
-</script>
 <font color="#ff0000"> $lt{'err'}: </font>
 $lt{'uuas'} ($currentauth). $lt{'adcs'}.
 <hr />
@@ -837,7 +864,7 @@ ENDBADAUTH
                     "<p>$authformint</p><p>$authformfsys</p>";
 	    }
             $authformcurrent.=' <i>(will override current values)</i><br />';
-            if (&Apache::lonnet::allowed('mau',$env{'request.role.domain'})) {
+            if (&Apache::lonnet::allowed('mau',$ccdomain)) {
 		# Current user has login modification privileges
 		my %lt=&Apache::lonlocal::texthash(
                                'ccld'  => "Change Current Login Data",
@@ -855,6 +882,23 @@ $loginscript
 <h3>$lt{'enld'}</h3>
 $authform_other
 ENDOTHERAUTHS
+            } else {
+                if (&Apache::lonnet::allowed('mau',$env{'request.role.domain'})) {
+                    my %lt=&Apache::lonlocal::texthash(
+                               'ccld'  => "Change Current Login Data",
+                               'yodo'  => "You do not have privileges to modify the authentication configuration for this user.",
+                               'ifch'  => "If a change is required, contact a domain coordinator for the domain",
+                    );
+                    $r->print(<<ENDNOPRIV);
+<hr />
+<h3>$lt{'ccld'}</h3>
+$lt{'yodo'} $lt{'ifch'}: $ccdomain 
+ENDNOPRIV
+                } 
+            }
+            if (&Apache::lonnet::allowed('mpq',$env{'request.role.domain'})) {
+                # Current user has quota modification privileges
+                $r->print(&portfolio_quota($ccuname,$ccdomain));
             }
         }  ## End of "check for bad authentication type" logic
     } ## End of new user/old user logic
@@ -1103,8 +1147,8 @@ ENDMODIFYUSERHEAD
     if (! $env{'form.makeuser'} ) {
         # Check for need to change
         my %userenv = &Apache::lonnet::get
-            ('environment',['firstname','middlename','lastname','generation'],
-             $env{'form.ccdomain'},$env{'form.ccuname'});
+            ('environment',['firstname','middlename','lastname','generation',
+             'portfolioquota'],$env{'form.ccdomain'},$env{'form.ccuname'});
         my ($tmp) = keys(%userenv);
         if ($tmp =~ /^(con_lost|error)/i) { 
             %userenv = ();
@@ -1114,13 +1158,31 @@ ENDMODIFYUSERHEAD
             # Strip leading and trailing whitespace
             $env{'form.c'.$_} =~ s/(\s+$|^\s+)//g; 
         }
+        my ($quotachanged,$namechanged,$oldportfolioquota);
+        my %changeHash;
+        if (exists($userenv{'portfolioquota'})) {
+            $oldportfolioquota = $userenv{'portfolioquota'};
+            if (exists($env{'form.portfolioquota'})) {
+                if ($env{'form.portfolioquota'} ne $userenv{'portfolioquota'}) {
+                    if (&Apache::lonnet::allowed('mpq',$env{'form.ccdomain'})) {
+                        # Current user has quota modification privileges
+                        $quotachanged = 1;
+                        $changeHash{'portfolioquota'} = $env{'form.portfolioquota'};
+                    }
+                }
+            }
+        } else {
+            $oldportfolioquota = &default_quota($env{'form.ccdomain'});
+        }
         if (&Apache::lonnet::allowed('mau',$env{'form.ccdomain'}) && 
             ($env{'form.cfirstname'}  ne $userenv{'firstname'}  ||
              $env{'form.cmiddlename'} ne $userenv{'middlename'} ||
              $env{'form.clastname'}   ne $userenv{'lastname'}   ||
              $env{'form.cgeneration'} ne $userenv{'generation'} )) {
+            $namechanged = 1;
+        }
+        if ($namechanged) {
             # Make the change
-            my %changeHash;
             $changeHash{'firstname'}  = $env{'form.cfirstname'};
             $changeHash{'middlename'} = $env{'form.cmiddlename'};
             $changeHash{'lastname'}   = $env{'form.clastname'};
@@ -1136,6 +1198,7 @@ ENDMODIFYUSERHEAD
                              'mddl' => "middle",
                              'lst'  => "last",
 			     'gen'  => "generation",
+                             'disk' => "disk space allocated to portfolio files",
                              'prvs' => "Previous",
                              'chto' => "Changed To"
 						   );
@@ -1146,17 +1209,21 @@ ENDMODIFYUSERHEAD
     <th>$lt{'frst'}</th>
     <th>$lt{'mddl'}</th>
     <th>$lt{'lst'}</th>
-    <th>$lt{'gen'}</th></tr>
+    <th>$lt{'gen'}</th>
+    <th>$lt{'disk'}<th></tr>
 <tr><td>$lt{'prvs'}</td>
     <td>$userenv{'firstname'}  </td>
     <td>$userenv{'middlename'} </td>
     <td>$userenv{'lastname'}   </td>
-    <td>$userenv{'generation'} </td></tr>
+    <td>$userenv{'generation'} </td>
+    <td>$oldportfolioquota</td>
+</tr>
 <tr><td>$lt{'chto'}</td>
     <td>$env{'form.cfirstname'}  </td>
     <td>$env{'form.cmiddlename'} </td>
     <td>$env{'form.clastname'}   </td>
-    <td>$env{'form.cgeneration'} </td></tr>
+    <td>$env{'form.cgeneration'} </td>
+    <td>$env{'form.portfolioquota'} Mb</td></tr>
 </table>
 END
             } else { # error occurred
@@ -1165,18 +1232,30 @@ END
                       $env{'form.ccdomain'}."</h2>");
             }
         }  else { # End of if ($env ... ) logic
+            my $putresult;
+            if ($quotachanged) {
+                $putresult = &Apache::lonnet::put
+                                 ('environment',\%changeHash,
+                                  $env{'form.ccdomain'},$env{'form.ccuname'});
+            }
             # They did not want to change the users name but we can
             # still tell them what the name is
 	    my %lt=&Apache::lonlocal::texthash(
                            'usr'  => "User",                    
                            'id'   => "in domain",
-                           'gen'  => "Generation"
+                           'gen'  => "Generation",
+                           'disk' => "Disk space allocated to user's portfolio files",
 					       );
-                $r->print(<<"END");
+            $r->print(<<"END");
 <h2>$lt{'usr'} "$env{'form.ccuname'}" $lt{'id'} "$env{'form.ccdomain'}"</h2>
 <h4>$userenv{'firstname'} $userenv{'middlename'} $userenv{'lastname'} </h4>
 <h4>$lt{'gen'}: $userenv{'generation'}</h4>
 END
+            if ($putresult eq 'ok') {
+                if ($oldportfolioquota ne $env{'form.portfolioquota'}) {
+                    $r->print('<h4>'.$lt{'disk'}.': '.$env{'form.portfolioquota'}.' Mb</h4>');
+                }
+            }
         }
     }
     ##
@@ -1251,7 +1330,7 @@ END
                 my $output;
                 if ($role eq 'st') {
                     if ($url =~ m-^/(\w+)/(\w+)/?(\w*)$-) {
-                        my $result = &commit_studentrole(\$logmsg,$udom,$uname,$url,$role,$now,0,$1,$2,$3);
+                        my $result = &Apache::loncommon::commit_studentrole(\$logmsg,$udom,$uname,$url,$role,$now,0,$1,$2,$3);
                         if (($result =~ /^error/) || ($result eq 'not_in_class') || ($result eq 'unknown_course')) {
                             $output = "Error: $result\n";
                         } else {
@@ -1298,7 +1377,7 @@ END
                 my %sections = ();
                 my $num_sections = &build_roles($env{'form.sec_'.$full},\%sections,$5);
                 if ($num_sections == 0) {
-                    $r->print(&commit_customrole($udom,$uname,$url,$three,$four,$five,$start,$end));
+                    $r->print(&Apache::loncommon::commit_customrole($udom,$uname,$url,$three,$four,$five,$start,$end));
                 } else {
 		    my %curr_groups =
 			&Apache::longroup::coursegroups($one,$two);
@@ -1309,7 +1388,7 @@ END
                             next;
                         }
                         my $securl = $url.'/'.$sec;
-		        $r->print(&commit_customrole($udom,$uname,$securl,$three,$four,$five,$start,$end));
+		        $r->print(&Apache::loncommon::commit_customrole($udom,$uname,$securl,$three,$four,$five,$start,$end));
                     }
                 }
 	    } elsif ($_=~/^form\.act\_([^\_]+)\_(\w+)\_([^\_]+)$/) {
@@ -1328,7 +1407,7 @@ END
                 my %sections = ();
                 my $num_sections = &build_roles($env{'form.sec_'.$one.'_'.$two.'_'.$three},\%sections,$three);
                 if ($num_sections == 0) {
-                    $r->print(&commit_standardrole($udom,$uname,$url,$three,$start,$end,$one,$two,''));
+                    $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$url,$three,$start,$end,$one,$two,''));
                 } else {
                     my %curr_groups = 
 			&Apache::longroup::coursegroups($one,$two);
@@ -1342,13 +1421,13 @@ END
                                 next;
                             }
                             my $securl = $url.'/'.$sec;
-                            $r->print(&commit_standardrole($udom,$uname,$securl,$three,$start,$end,$one,$two,$sec));
+                            $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$securl,$three,$start,$end,$one,$two,$sec));
                         } else {
                             $emptysec = 1;
                         }
                     }
                     if ($emptysec) {
-                        $r->print(&commit_standardrole($udom,$uname,$url,$three,$start,$end,$one,$two,''));
+                        $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$url,$three,$start,$end,$one,$two,''));
                     }
                 } 
 	    } elsif ($_=~/^form\.act\_([^\_]+)\_([^\_]+)$/) {
@@ -1365,19 +1444,19 @@ END
                 my %sections = ();
                 my $num_sections = &build_roles($env{'form.sec_'.$1.'_'.$2},\%sections,$2);
                 if ($num_sections == 0) {
-                    $r->print(&commit_standardrole($udom,$uname,$url,$2,$start,$end,$1,undef,''));
+                    $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$url,$2,$start,$end,$1,undef,''));
                 } else {
                     my $emptysec = 0;
                     foreach my $sec (sort {$a cmp $b} keys %sections) {
                         if ($sec ne '') {
                             my $securl = $url.'/'.$sec;
-                            $r->print(&commit_standardrole($udom,$uname,$securl,$2,$start,$end,$1,undef,$sec));
+                            $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$securl,$2,$start,$end,$1,undef,$sec));
                         } else {
                             $emptysec = 1;
                         }
                     }
                     if ($emptysec) {
-                        $r->print(&commit_standardrole($udom,$uname,$url,$2,$start,$end,$1,undef,''));
+                        $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$url,$2,$start,$end,$1,undef,''));
                     }
                 }
 	    } else {
@@ -1399,89 +1478,6 @@ END
     $r->print(&Apache::loncommon::end_page());
 }
 
-sub commit_customrole {
-    my ($udom,$uname,$url,$three,$four,$five,$start,$end) = @_;
-    my $output = &mt('Assigning custom role').' "'.$five.'" by '.$four.'@'.$three.' in '.$url.
-                         ($start?', '.&mt('starting').' '.localtime($start):'').
-                         ($end?', ending '.localtime($end):'').': <b>'.
-              &Apache::lonnet::assigncustomrole(
-                 $udom,$uname,$url,$three,$four,$five,$end,$start).
-                 '</b><br />';
-    return $output;
-}
-
-sub commit_standardrole {
-    my ($udom,$uname,$url,$three,$start,$end,$one,$two,$sec) = @_;
-    my $output;
-    my $logmsg;
-    if ($three eq 'st') {
-        my $result = &commit_studentrole(\$logmsg,$udom,$uname,$url,$three,$start,$end,$one,$two,$sec);
-        if (($result =~ /^error/) || ($result eq 'not_in_class') || ($result eq 'unknown_course')) {
-            $output = "Error: $result\n"; 
-        } else {
-            $output = &mt('Assigning').' '.$three.' in '.$url.
-               ($start?', '.&mt('starting').' '.localtime($start):'').
-               ($end?', '.&mt('ending').' '.localtime($end):'').
-               ': <b>'.$result.'</b><br />'.
-               &mt('Add to classlist').': <b>ok</b><br />';
-        }
-    } else {
-        $output = &mt('Assigning').' '.$three.' in '.$url.
-               ($start?', '.&mt('starting').' '.localtime($start):'').
-               ($end?', '.&mt('ending').' '.localtime($end):'').': <b>'.
-               &Apache::lonnet::assignrole(
-                   $udom,$uname,$url,$three,$end,$start).
-                   '</b><br />';
-    }
-    return $output;
-}
-
-sub commit_studentrole {
-    my ($logmsg,$udom,$uname,$url,$three,$start,$end,$one,$two,$sec) = @_;
-    my $linefeed =  '<br />'."\n";
-    my $result;
-    if (defined($one) && defined($two)) {
-        my $cid=$one.'_'.$two;
-        my $oldsec=&Apache::lonnet::getsection($udom,$uname,$cid);
-        my $secchange = 0;
-        my $expire_role_result;
-        my $modify_section_result;
-        unless ($oldsec eq '-1') {
-            unless ($sec eq $oldsec) {
-                $secchange = 1;
-                my $uurl='/'.$cid;
-                $uurl=~s/\_/\//g;
-                if ($oldsec) {
-                    $uurl.='/'.$oldsec;
-                }
-                $expire_role_result = &Apache::lonnet::assignrole($udom,$uname,$uurl,'st',time);
-                $result = $expire_role_result;
-            }
-        }
-        if (($expire_role_result eq 'ok') || ($secchange == 0)) {
-            $modify_section_result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,'','',$cid);
-            if ($modify_section_result =~ /^ok/) {
-                if ($secchange == 1) {
-                    $$logmsg .= "Section for $uname switched from old section: $oldsec to new section: $sec".$linefeed;
-                } elsif ($oldsec eq '-1') {
-                    $$logmsg .= "New student role for $uname in section $sec in course $cid".$linefeed;
-                } else {
-                    $$logmsg .= "Student $uname assigned to unchanged section $sec in course $cid".$linefeed;
-                }
-            } else {
-                $$logmsg .= "Error when attempting section change for $uname from old section $oldsec to new section: $sec in course $cid -error: $modify_section_result".$linefeed;
-            }
-            $result = $modify_section_result;
-        } elsif ($secchange == 1) {
-            $$logmsg .= "Error when attempting to expire role for $uname in old section $oldsec in course $cid -error: $expire_role_result".$linefeed;
-        }
-    } else {
-        $$logmsg .= "Incomplete course id defined.  Addition of user $uname from domain $udom to course $one\_$two, section $sec not completed.$linefeed";
-        $result = "error: incomplete course id\n";
-    }
-    return $result;
-}
-
 sub build_roles {
     my ($sectionstr,$sections,$role) = @_;
     my $num_sections = 0;
@@ -1511,7 +1507,7 @@ sub build_roles {
             $num_sections ++;
         }
     }
-                                                                                     
+
     return $num_sections;
 }
 
@@ -1586,7 +1582,7 @@ sub custom_role_editor {
     }
     my %lt=&Apache::lonlocal::texthash(
 		    'prv'  => "Privilege",
-		    'crl'  => "Course/Group Level",
+		    'crl'  => "Course Level",
                     'dml'  => "Domain Level",
                     'ssl'  => "System Level"
 				       );
@@ -1736,7 +1732,7 @@ sub course_level_table {
             'new'  => "Define new section",
             'ssd'  => "Set Start Date",
             'sed'  => "Set End Date",
-            'crl'  => "Course/Group Level",
+            'crl'  => "Course Level",
             'act'  => "Activate",
             'rol'  => "Role",
             'ext'  => "Extent",
@@ -1883,8 +1879,8 @@ sub course_level_dc {
                       '<input type="hidden" name="origdom" value="'.$dcdom.'" />'.
                       '<input type="hidden" name="dccourse" value="" />';
     my $courseform='<b>'.&Apache::loncommon::selectcourse_link
-            ('cu','dccourse','dcdomain','coursedesc',undef,undef,'Course/Group').'</b>';
-    my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($dcdom);
+            ('cu','dccourse','dcdomain','coursedesc',undef,undef,'Course').'</b>';
+    my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($dcdom,'currsec','cu');
     my %lt=&Apache::lonlocal::texthash(
                     'typ' => "Type",
                     'rol'  => "Role",
@@ -1896,14 +1892,14 @@ sub course_level_dc {
                     'ssd'  => "Set Start Date",
                     'sed'  => "Set End Date"
                   );
-    my $header = '<h4>'.&mt('Course/Group Level').'</h4>'.
+    my $header = '<h4>'.&mt('Course Level').'</h4>'.
                  '<table border="2"><tr><th>'.$lt{'typ'}.'</th><th>'.$courseform.'</th><th>'.$lt{'rol'}.'</th><th>'.$lt{'grs'}.'</th><th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th></tr>';
     my $otheritems = '<tr><td><select name="crstype" onChange="javascript:setType();">'."\n".
                      ' <option value="">'.&mt('Please select')."\n".
                      ' <option value="Course">'.&mt('Course')."\n".
-                     ' <option value="Group">'.&mt('Group')."\n".
+                     ' <option value="Non-standard course">'.&mt('Non-standard course')."\n".
                      '</select>'."\n".
-                     '<td><input type="text" name="coursedesc" value="" onFocus="this.blur();opencrsbrowser('."'cu','dccourse','dcdomain','coursedesc','".')" /></td>'."\n".
+                     '<td><input type="text" name="coursedesc" value="" onFocus="this.blur();opencrsbrowser('."'cu','dccourse','dcdomain','coursedesc',''".')" /></td>'."\n".
                      '<td><select name="role">'."\n";
     foreach  ('st','ta','ep','in','cc') {
         my $plrole=&Apache::lonnet::plaintext($_);