--- loncom/interface/lonuserutils.pm	2008/01/05 18:36:26	1.44
+++ loncom/interface/lonuserutils.pm	2008/05/12 17:52:08	1.54
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Utility functions for managing LON-CAPA user accounts
 #
-# $Id: lonuserutils.pm,v 1.44 2008/01/05 18:36:26 raeburn Exp $
+# $Id: lonuserutils.pm,v 1.54 2008/05/12 17:52:08 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -42,7 +42,7 @@ use LONCAPA qw(:DEFAULT :match);
 ###############################################################
 # Drop student from all sections of a course, except optional $csec
 sub modifystudent {
-    my ($udom,$unam,$courseid,$csec,$desiredhost)=@_;
+    my ($udom,$unam,$courseid,$csec,$desiredhost,$context)=@_;
     # if $csec is undefined, drop the student from all the courses matching
     # this one.  If $csec is defined, drop them from all other sections of
     # this course and add them to section $csec
@@ -69,7 +69,7 @@ sub modifystudent {
                         # dom  name  id mode pass     f     m     l     g
                         ($udom,$unam,'',  '',  '',undef,undef,undef,undef,
                          $section,time,undef,undef,$desiredhost,'','manual',
-                         '',$courseid);
+                         '',$courseid,'',$context);
                     $result .= $reply.':';
                 }
             }
@@ -129,7 +129,8 @@ sub modifyuserrole {
         if ($role ne '') {
             $role =~ s/_/\//g;
             $roleresult = &Apache::lonnet::assignrole($udom,$uname,$scope,
-                                                      $role,$end,$start);
+                                                      $role,$end,$start,'',
+                                                      '',$context);
         }
     }
     return ($userresult,$authresult,$roleresult,$idresult);
@@ -924,8 +925,15 @@ sub setup_date_selectors {
 
 
 sub get_dates_from_form {
-    my $startdate = &Apache::lonhtmlcommon::get_date_from_form('startdate');
-    my $enddate   = &Apache::lonhtmlcommon::get_date_from_form('enddate');
+    my ($startname,$endname) = @_;
+    if ($startname eq '') {
+        $startname = 'startdate';
+    }
+    if ($endname eq '') {
+        $endname = 'enddate';
+    }
+    my $startdate = &Apache::lonhtmlcommon::get_date_from_form($startname);
+    my $enddate   = &Apache::lonhtmlcommon::get_date_from_form($endname);
     if ($env{'form.no_end_date'}) {
         $enddate = 0;
     }
@@ -1251,34 +1259,11 @@ sub print_userlist {
     if ($env{'form.showrole'} eq 'Any') {
        $roleselected = ' selected="selected" '; 
     }
-    my ($role_select,$cnum,$cdom);
-    if ($context eq 'domain') {
-        $role_select = &domain_roles_select();
-        $r->print('<label>'.&mt('Role Type: [_1]',$role_select).'</label>');
-    } else {
-        $role_select = '<select name="showrole">'."\n".
-                       '<option value="Any" '.$roleselected.'>'.
-                       &mt('Any role').'</option>';
-        my @poss_roles = &curr_role_permissions($context);
-        foreach my $role (@poss_roles) {
-            $roleselected = '';
-            if ($role eq $env{'form.showrole'}) {
-                $roleselected = ' selected="selected" ';
-            }
-            my $plrole;
-            if ($role eq 'cr') {
-                $plrole = &mt('Custom role');
-            } else {
-                $plrole=&Apache::lonnet::plaintext($role);
-            }
-            $role_select .= '<option value="'.$role.'"'.$roleselected.'>'.$plrole.'</option>';
-        }
-        $role_select .= '</select>';
-        $r->print('<label>'.&mt('Role: [_1]',$role_select).'</label>');
-        if ($context eq 'course') {
-            ($cnum,$cdom) = &get_course_identity();
-            $r->print(&section_group_filter($cnum,$cdom));
-        }
+    my ($cnum,$cdom);
+    $r->print(&role_filter($context));
+    if ($context eq 'course') {
+        ($cnum,$cdom) = &get_course_identity();
+        $r->print(&section_group_filter($cnum,$cdom));
     }
     if (!(($context eq 'domain') && ($env{'form.roletype'} eq 'course'))) {
         $r->print('&nbsp;'.&list_submit_button(&mt('Update Display')).
@@ -1307,8 +1292,10 @@ sub print_userlist {
     }
     $r->rflush();
     if ($context eq 'course') {
-        my $classlist = &Apache::loncoursedata::get_classlist();
-        %userlist = %{$classlist};
+        if (($env{'form.showrole'} eq 'st') || ($env{'form.showrole'} eq 'Any')) { 
+            my $classlist = &Apache::loncoursedata::get_classlist();
+            %userlist = %{$classlist};
+        }
         if ($env{'form.showrole'} ne 'st') {
             my $showroles;
             if ($env{'form.showrole'} ne 'Any') {
@@ -1448,6 +1435,41 @@ sub print_userlist {
               $env{'form.phase'}.'" /></form>');
 }
 
+sub role_filter {
+    my ($context) = @_;
+    my $output;
+    my $roleselected = '';
+    if ($env{'form.showrole'} eq 'Any') {
+       $roleselected = ' selected="selected" ';
+    }
+    my ($role_select);
+    if ($context eq 'domain') {
+        $role_select = &domain_roles_select();
+        $output = '<label>'.&mt('Role Type: [_1]',$role_select).'</label>';
+    } else {
+        $role_select = '<select name="showrole">'."\n".
+                       '<option value="Any" '.$roleselected.'>'.
+                       &mt('Any role').'</option>';
+        my @poss_roles = &curr_role_permissions($context);
+        foreach my $role (@poss_roles) {
+            $roleselected = '';
+            if ($role eq $env{'form.showrole'}) {
+                $roleselected = ' selected="selected" ';
+            }
+            my $plrole;
+            if ($role eq 'cr') {
+                $plrole = &mt('Custom role');
+            } else {
+                $plrole=&Apache::lonnet::plaintext($role);
+            }
+            $role_select .= '<option value="'.$role.'"'.$roleselected.'>'.$plrole.'</option>';
+        }
+        $role_select .= '</select>';
+        $output = '<label>'.&mt('Role: [_1]',$role_select).'</label>';
+    }
+    return $output;
+}
+
 sub section_group_filter {
     my ($cnum,$cdom) = @_;
     my @filters;
@@ -1465,9 +1487,9 @@ sub section_group_filter {
                                               all  => 'all',
                                               none => 'none',
                                             );
-    my ($output,@options);
+    my $output;
     foreach my $item (@filters) {
-        my $markup; 
+        my ($markup,@options); 
         if ($env{'form.'.$name{$item}} eq '') {
             $env{'form.'.$name{$item}} = 'all';
         }
@@ -1511,6 +1533,10 @@ sub list_submit_button {
 
 sub gather_userinfo {
     my ($context,$format,$userlist,$indexhash,$userinfo,$rolehash,$permission) = @_;
+    my $viewablesec;
+    if ($context eq 'course') {
+        $viewablesec = &viewable_section($permission);
+    }
     foreach my $item (keys(%{$rolehash})) {
         my %userdata;
         if ($context eq 'author') { 
@@ -1520,7 +1546,6 @@ sub gather_userinfo {
             &build_user_record($context,\%userdata,$userinfo,$indexhash,
                                $item,$userlist);
         } elsif ($context eq 'course') {
-            my $viewablesec = &viewable_section($permission);
             ($userdata{'username'},$userdata{'domain'},$userdata{'role'},
              $userdata{'section'}) = split(/:/,$item,-1);
             ($userdata{'start'},$userdata{'end'})=split(/:/,$rolehash->{$item});
@@ -1789,6 +1814,7 @@ sub make_keylist_array {
     $index->{'role'} = &Apache::loncoursedata::CL_ROLE();
     $index->{'extent'} = &Apache::loncoursedata::CL_EXTENT();
     $index->{'photo'} = &Apache::loncoursedata::CL_PHOTO();
+    $index->{'thumbnail'} = &Apache::loncoursedata::CL_THUMBNAIL();
     foreach my $key (keys(%{$index})) {
         $keylist->[$index->{$key}] = $key;
     }
@@ -1991,14 +2017,30 @@ function username_display_launch(usernam
         }
     }
     if (target == 'modify') {
-        document.studentform.srchterm.value=username;
-        document.studentform.srchdomain.value=domain;
-        document.studentform.phase.value='get_user_info';
-        document.studentform.action.value = 'singleuser';
-        document.studentform.submit();
+        if (document.studentform.userwin.checked == true) {
+            var url = '/adm/createuser?srchterm='+username+'&srchdomain='+domain+'&phase=get_user_info&action=singleuser&srchin=dom&srchby=uname&srchtype=exact&popup=1';
+            var options = 'height=600,width=800,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no';
+            modifywin = window.open(url,'',options,1);
+            modifywin.focus();
+            return;
+        } else {
+            document.studentform.srchterm.value=username;
+            document.studentform.srchdomain.value=domain;
+            document.studentform.phase.value='get_user_info';
+            document.studentform.action.value = 'singleuser';
+            document.studentform.submit();
+        }
     }
-    else {
-        document.location.href = '/adm/'+domain+'/'+username+'/aboutme';
+    if (target == 'aboutme') {
+        if (document.studentform.userwin.checked == true) {
+            var url = '/adm/'+domain+'/'+username+'/aboutme?popup=1';
+            var options = 'height=600,width=800,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no';
+            aboutmewin = window.open(url,'',options,1);
+            aboutmewin.focus();
+            return;
+        } else {
+            document.location.href = '/adm/'+domain+'/'+username+'/aboutme';
+        }
     }
 }
 </script>
@@ -2033,6 +2075,7 @@ END
                        'ac'         => "Action to take for selected users",
                        'link'       => "Behavior of username links",
                        'aboutme'    => "Display a user's personal page",
+                       'owin'       => "Open in a new window",
                        'modify'     => "Modify a user's information",
                       );
     if ($context eq 'domain' && $env{'form.roletype'} eq 'course') {
@@ -2091,23 +2134,25 @@ END
             $output = '<p>';
             my @linkdests = ('aboutme');
             if ($permission->{'cusr'}) {
-                push (@linkdests,'modify');
-                $output .= '<span class="LC_nobreak">'.$lt{'link'}.':&nbsp;';
-                my $usernamelink = $env{'form.usernamelink'};
-                if ($usernamelink eq '') {
-                    $usernamelink = 'aboutme';
-                }
-                foreach my $item (@linkdests) {
-                    my $checkedstr = '';
-                    if ($item eq $usernamelink) {
-                        $checkedstr = ' checked="checked" ';
-                    }
-                    $output .= '<label><input type="radio" name="usernamelink" value="'.$item.'"'.$checkedstr.'>&nbsp;'.$lt{$item}.'</label>&nbsp;&nbsp;';
+                unshift (@linkdests,'modify');
+            }
+            $output .= '<span class="LC_nobreak">'.$lt{'link'}.':&nbsp;';
+            my $usernamelink = $env{'form.usernamelink'};
+            if ($usernamelink eq '') {
+                $usernamelink = 'aboutme';
+            }
+            foreach my $item (@linkdests) {
+                my $checkedstr = '';
+                if ($item eq $usernamelink) {
+                    $checkedstr = ' checked="checked" ';
                 }
-                $output .= '</span><br />';
-            } else {
-                $output .= &mt("Click on a username to view the user's personal page.").'<br />';
+                $output .= '<label><input type="radio" name="usernamelink" value="'.$item.'"'.$checkedstr.'>&nbsp;'.$lt{$item}.'</label>&nbsp;&nbsp;';
+            }
+            my $checkwin;
+            if ($env{'form.userwin'}) { 
+                $checkwin = 'checked = "checked"'; 
             }
+            $output .= '&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="userwin" value="1" $checkwin />'.$lt{'owin'}.'</span><br />';
             if ($actionselect) {
                 $output .= <<"END";
 $lt{'ac'}:&nbsp;$actionselect <input type="button" value="$lt{'go'}" onclick="javascript:opendatebrowser(this.form,'studentform','go')" /></p>
@@ -2241,7 +2286,6 @@ END
     }
 
 # Done with header lines in all formats
-
     my %index;
     my $i;
     foreach my $idx (@$keylist) {
@@ -2343,6 +2387,8 @@ END
                 if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) {
                     if (($displayphotos eq 'on') && ($role eq 'st')) {
                         $userlist->{$user}->[$index{'photo'}] =
+                            &Apache::lonnet::retrievestudentphoto($udom,$uname,'jpg');
+                        $userlist->{$user}->[$index{'thumbnail'}] =
                             &Apache::lonnet::retrievestudentphoto($udom,$uname,
                                                                 'gif','thumbnail');
                     }
@@ -2459,8 +2505,7 @@ END
             }
             foreach my $item (@cols) {
                 if ($item eq 'username') {
-                    $r->print('<td>'.&print_username_link($mode,$permission,
-                                                          \%in).'</td>');
+                    $r->print('<td>'.&print_username_link($mode,\%in).'</td>');
                 } elsif (($item eq 'start' || $item eq 'end') && ($actionselect)) {
                     $r->print('<td>'.$in{$item}.'<input type="hidden" name="'.$checkval.'_'.$item.'" value="'.$sdata->[$index{$item}].'" /></td>'."\n");
                 } else {
@@ -2479,7 +2524,7 @@ END
                     }
                     if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) {
                         if ($displayphotos eq 'on' && $role eq 'st' && $in{'photo'} ne '') {
-                            $r->print('    <td align="right"><a href="javascript:photowindow('."'".&Apache::lonnet::studentphoto($in{'domain'},$in{'username'},'jpg')."'".')"><img src="'.$in{'photo'}.'" border="1"></a></td>');
+                            $r->print('    <td align="right"><a href="javascript:photowindow('."'".$in{'photo'}."'".')"><img src="'.$in{'thumbnail'}.'" border="1"></a></td>');
                         } else {
                             $r->print('    <td>&nbsp;</td>  ');
                         }
@@ -2544,14 +2589,10 @@ END
 }
 
 sub print_username_link {
-    my ($mode,$permission,$in) = @_;
+    my ($mode,$in) = @_;
     my $output;
     if ($mode eq 'autoenroll') {
         $output = $in->{'username'};
-    } elsif (!$permission->{'cusr'}) {
-        $output = &Apache::loncommon::aboutmewrapper($in->{'username'},
-                                                     $in->{'username'},
-                                                     $in->{'domain'});
     } else {
         $output = '<a href="javascript:username_display_launch('.
                   "'$in->{'username'}','$in->{'domain'}'".')" />'.
@@ -2662,20 +2703,14 @@ sub select_actions {
 
 sub date_section_javascript {
     my ($context,$setting) = @_;
-    my $title;
-    if (($context eq 'course') || ($context eq 'domain' && $setting eq 'course'))  {
-        $title = &mt('Date and Section selector');
-    } else {
-        $title = &mt('Date selector');
-    }
+    my $title = 'Date_And_Section_Selector';
     my %nopopup = &Apache::lonlocal::texthash (
         revoke => "Check the boxes for any users for whom roles are to be revoked, and click 'Proceed'",
         delete => "Check the boxes for any users for whom roles are to be deleted, and click 'Proceed'",
         none   => "Choose an action to take for selected users",
     );  
     my $output = '
-<script type="text/javascript">
-    var stdeditbrowser;'."\n";
+<script type="text/javascript">'."\n";
     $output .= <<"ENDONE";
     function opendatebrowser(callingform,formname,calledby) {
         var bulkaction = callingform.bulkaction.options[callingform.bulkaction.selectedIndex].value;
@@ -3645,13 +3680,14 @@ sub upfile_drop_add {
                                 $sec = $secs[0];
                             }
                             &modifystudent($domain,$username,$cid,$sec,
-                                           $desiredhost);
+                                           $desiredhost,$context);
                             $roleresult =
                                 &Apache::lonnet::modifystudent
                                     ($domain,$username,$id,$amode,$password,
                                      $fname,$mname,$lname,$gen,$sec,$enddate,
                                      $startdate,$env{'form.forceid'},
-                                     $desiredhost,$email,'manual','',$cid);
+                                     $desiredhost,$email,'manual','',$cid,
+                                     '',$context);
                             $userresult = $roleresult;
                         } else {
                             if ($role ne '') { 
@@ -3957,24 +3993,25 @@ sub update_user_list {
             $end = $now;
             $type = 'manual';
             $result =
-                &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid);
+                &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid,'',$context);
         } elsif ($choice eq 'revoke') {
             # revoke or delete user role
             $end = $now; 
             if ($role eq 'st') {
                 $result = 
-                    &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid);
+                    &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid,'',$context);
             } else {
                 $result = 
-                    &Apache::lonnet::revokerole($udom,$uname,$scope,$role);
+                    &Apache::lonnet::revokerole($udom,$uname,$scope,$role,
+                                                '','',$context);
             }
         } elsif ($choice eq 'delete') {
             if ($role eq 'st') {
-                &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$now,$start,$type,$locktype,$cid);
+                &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$now,$start,$type,$locktype,$cid,'',$context);
             }
             $result =
                 &Apache::lonnet::assignrole($udom,$uname,$scope,$role,$now,
-                                            $start,1);
+                                            $start,1,'',$context);
         } else {
             #reenable, activate, change access dates or change section
             if ($choice ne 'chgsec') {
@@ -3983,25 +4020,25 @@ sub update_user_list {
             }
             if ($choice eq 'reenable') {
                 if ($role eq 'st') {
-                    $result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid);
+                    $result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid,'',$context);
                 } else {
                     $result = 
                         &Apache::lonnet::assignrole($udom,$uname,$scope,$role,$end,
-                                                    $now);
+                                                    $now,'','',$context);
                 }
             } elsif ($choice eq 'activate') {
                 if ($role eq 'st') {
-                    $result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid);
+                    $result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid,'',$context);
                 } else {
                     $result = &Apache::lonnet::assignrole($udom,$uname,$scope,$role,$end,
-                                            $now);
+                                            $now,'','',$context);
                 }
             } elsif ($choice eq 'chgdates') {
                 if ($role eq 'st') {
-                    $result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid);
+                    $result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid,'',$context);
                 } else {
                     $result = &Apache::lonnet::assignrole($udom,$uname,$scope,$role,$end,
-                                                $start);
+                                                $start,'','',$context);
                 }
             } elsif ($choice eq 'chgsec') {
                 my (@newsecs,$revresult,$nochg,@retained);
@@ -4017,7 +4054,8 @@ sub update_user_list {
                         } else {
                             $revresult =
                                 &Apache::lonnet::revokerole($udom,$uname,
-                                                            $scope,$role);
+                                                            $scope,$role,
+                                                            '','',$context);
                         } 
                     } else {
                         if (@newsecs > 0) {
@@ -4026,12 +4064,14 @@ sub update_user_list {
                             } else {
                                 $revresult =
                                     &Apache::lonnet::revokerole($udom,$uname,
-                                                                $scope,$role);
+                                                                $scope,$role,
+                                                                '','',$context);
                             }
                         } else {
                             $revresult =
                                 &Apache::lonnet::revokerole($udom,$uname,
-                                                            $scope,$role);
+                                                            $scope,$role,
+                                                            '','',$context);
                         }
                     }
                 } else {
@@ -4046,17 +4086,17 @@ sub update_user_list {
                     if (!$nochg) {
                         if ($role eq 'st') {
                             $result = 
-                                &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,undef,$end,$start,$type,$locktype,$cid);
+                                &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,undef,$end,$start,$type,$locktype,$cid,'',$context);
                         } else {
                             my $newscope = $scopestem;
-                            $result = &Apache::lonnet::assignrole($udom,$uname,$newscope,$role,$end,$start);
+                            $result = &Apache::lonnet::assignrole($udom,$uname,$newscope,$role,$end,$start,'','',$context);
                         }
                     }
                 } else {
                     foreach my $newsec (@newsecs) { 
                         if (!grep(/^\Q$newsec\E$/,@retained)) {
                             if ($role eq 'st') {
-                                $result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$newsec,$end,$start,$type,$locktype,$cid);
+                                $result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$newsec,$end,$start,$type,$locktype,$cid,'',$context);
                             } else {
                                 my $newscope = $scopestem;
                                 if ($newsec ne '') {
@@ -4195,17 +4235,29 @@ sub set_login {
 }
 
 sub course_sections {
-    my ($sections_count,$role) = @_;
+    my ($sections_count,$role,$current_sec) = @_;
     my $output = '';
     my @sections = (sort {$a <=> $b} keys %{$sections_count});
     my $numsec = scalar(@sections);
+    my $is_selected = ' selected="selected" ';
     if ($numsec <= 1) {
         $output = '<select name="currsec_'.$role.'" >'."\n".
-                  '  <option value="">'.&mt('Select').'</option>'."\n".
+                  '  <option value="">'.&mt('Select').'</option>'."\n";
+        if ($current_sec eq 'none') {
+            $output .=       
+                  '  <option value=""'.$is_selected.'>'.&mt('No section').'</option>'."\n";
+        } else {
+            $output .=
                   '  <option value="">'.&mt('No section').'</option>'."\n";
+        }
         if ($numsec == 1) {
-            $output .=  
+            if ($current_sec eq $sections[0]) {
+                $output .=
+                  '  <option value="'.$sections[0].'"'.$is_selected.'>'.$sections[0].'</option>'."\n";
+            } else {
+                $output .=  
                   '  <option value="'.$sections[0].'" >'.$sections[0].'</option>'."\n";
+            }
         }
     } else {
         $output = '<select name="currsec_'.$role.'" ';
@@ -4213,13 +4265,23 @@ sub course_sections {
         if (scalar(@sections) < 4) { $multiple = scalar(@sections); }
         if ($role eq 'st') {
             $output .= '>'."\n".
-                       '  <option value="">'.&mt('Select').'</option>'."\n".
+                       '  <option value="">'.&mt('Select').'</option>'."\n";
+            if ($current_sec eq 'none') {
+                $output .= 
+                       '  <option value=""'.$is_selected.'>'.&mt('No section')."</option>\n";
+            } else {
+                $output .=
                        '  <option value="">'.&mt('No section')."</option>\n";
+            }
         } else {
             $output .= 'multiple="multiple" size="'.$multiple.'">'."\n";
         }
         foreach my $sec (@sections) {
-            $output .= '<option value="'.$sec.'">'.$sec."</option>\n";
+            if ($current_sec eq $sec) {
+                $output .= '<option value="'.$sec.'"'.$is_selected.'>'.$sec."</option>\n";
+            } else {
+                $output .= '<option value="'.$sec.'">'.$sec."</option>\n";
+            }
         }
     }
     $output .= '</select>';