Diff for /loncom/interface/lonmenu.pm between versions 1.369.2.83.2.9 and 1.369.2.83.2.10

version 1.369.2.83.2.9, 2023/09/02 15:56:34 version 1.369.2.83.2.10, 2023/09/06 16:05:23
Line 1117  sub innerregister { Line 1117  sub innerregister {
                                    'Folder/Page Content');                                     'Folder/Page Content');
             }              }
 # End modifiable folder/page container check  # End modifiable folder/page container check
   
   #
   # Determine whether to show View As button for shortcut to display problem, answer, and submissions
   #
   
           if (($env{'request.symb'} ne '') &&
               ($env{'request.filename'}=~/$LONCAPA::assess_re/) &&
               (($perms{'mgr'}) || ($perms{'vgr'}))) {
               my ($viewas,$text,$change,$visibility,$vuname,$vudom,$vid,$leftvis,$defdom,$righticon);
               my %lt = &Apache::lonlocal::texthash(
                                                    view => 'View',
                                                    upda => 'Update',
               );
               if ($env{'request.user_in_effect'} =~ /^($match_username):($match_domain)$/) {
                   ($vuname,$vudom) = ($1,$2);
                   unless (&Apache::lonnet::is_advanced_user($vudom,$vuname)) {
                       $vid = (&Apache::lonnet::idrget($vudom,$vuname))[1];
                   }
                   $viewas = $env{'request.user_in_effect'};
                   $text = $lt{'upda'};
                   $change = 'off';
                   $visibility = 'inline';
                   $leftvis = 'none';
                   $defdom = $vudom;
                   $righticon = '✖';
               } else {
                   $text = $lt{'view'};
                   $change = 'on';
                   $visibility = 'none';
                   $leftvis = 'inline';
                   $defdom = $cdom;
               }
               my $sellink = &Apache::loncommon::selectstudent_link('userview','vuname','vudom');
               my $selscript=&Apache::loncommon::studentbrowser_javascript();
               my $shownsymb = &HTML::Entities::encode(&Apache::lonenc::check_encrypt($env{'request.symb'}),'<>&"');
               my $input = &mt('User: [_1] or ID: [_2] at: [_3]',
                               '<input name="vuname" type="text" size="8" value="'.$vuname.'" />',
                               '<input name="vid" type="text" size="8" value="'.$vid.'" />',
                               &Apache::loncommon::select_dom_form($defdom,'vudom')).
                               '<input name="LC_viewas" type="hidden" value="'.$viewas.'" />',
                               '<input name="symb" type="hidden" value="'.$shownsymb.'" />';
               my $chooser = <<END;
   $selscript
   <a href="javascript:toggleViewAsUser('$change');" class="LC_menubuttons_link">
   <span id="usexpand" class="LC_menubuttons_inline_text" style="display:$leftvis">&#9658;&nbsp;</span>
   </a>
   <fieldset id="LC_selectuser" style="display:$visibility">
   <form name="userview" action="" method="post" onsubmit="event.preventDefault(); return validCourseUser(this,'$change');">
   <span class="LC_menubuttons_inline_text LC_nobreak">
   $input
   $sellink
   </span>
   &nbsp;<input type="submit" value="$text" />
   </form>
   </fieldset>
   <a href="javascript:toggleViewAsUser('$change');" class="LC_menubuttons_link">
   <span id="uscollapse" class="LC_menubuttons_inline_text">$righticon</span>
   </a>
   END
               &switch('','',7,5,'viewuser.png','View As','user[_1]',
                       'toggleViewAsUser('."'$change'".')',
                       'View As','','',$chooser);
           }
   # End view as user check
   
         }          }
 # End course context  # End course context
   
Line 1985  sub advtools_crumbs { Line 2050  sub advtools_crumbs {
             'advtools', @funcs[61,64,65,66,67,74]);              'advtools', @funcs[61,64,65,66,67,74]);
     } elsif ($env{'request.noversionuri'} !~ m{^/adm/(navmaps|viewclasslist)(\?|$)}) {      } elsif ($env{'request.noversionuri'} !~ m{^/adm/(navmaps|viewclasslist)(\?|$)}) {
         &Apache::lonhtmlcommon::add_breadcrumb_tool(          &Apache::lonhtmlcommon::add_breadcrumb_tool(
             'advtools', @funcs[61,71,72,73,74,92]);              'advtools', @funcs[61,71,72,73,74,75,92]);
     } elsif ($env{'request.noversionuri'} eq '/adm/viewclasslist') {      } elsif ($env{'request.noversionuri'} eq '/adm/viewclasslist') {
         &Apache::lonhtmlcommon::add_breadcrumb_tool(          &Apache::lonhtmlcommon::add_breadcrumb_tool(
             'advtools', $funcs[61]);              'advtools', $funcs[61]);
Line 2010  sub clear { Line 2075  sub clear {
 # The javascript is usually similar to "go('/adm/roles')" or "cstrgo(..)".  # The javascript is usually similar to "go('/adm/roles')" or "cstrgo(..)".
   
 sub switch {  sub switch {
     my ($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat,$nobreak,$infunc)=@_;      my ($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat,$nobreak,$infunc,$form)=@_;
     $act=~s/\$uname/$uname/g;      $act=~s/\$uname/$uname/g;
     $act=~s/\$udom/$udom/g;      $act=~s/\$udom/$udom/g;
     $top=&mt($top);      $top=&mt($top);
Line 2029  sub switch { Line 2094  sub switch {
                       '" align="'.($nobreak==3?'right':'left').'" class="LC_icon" />';                        '" align="'.($nobreak==3?'right':'left').'" class="LC_icon" />';
            $inlineremote[$idx] =             $inlineremote[$idx] =
                '<a title="'.$desc.'" class="LC_menubuttons_link" href="javascript:'.$act.';">'.                 '<a title="'.$desc.'" class="LC_menubuttons_link" href="javascript:'.$act.';">'.
                $pic.'<span class="LC_menubuttons_inline_text">'.$top.'&nbsp;</span></a>';                 $pic.'<span class="LC_menubuttons_inline_text">'.$top.'&nbsp;</span></a>'.$form;
         }          }
 # Remote  # Remote
         $img=~s/\.png$/\.gif/;          $img=~s/\.png$/\.gif/;
Line 2652  END Line 2717  END
     }      }
 }  }
   
   sub view_as_js {
       my ($url,$symb) = @_;
       my %lt = &Apache::lonlocal::texthash(
                   ente => 'Enter a username or a student/employee ID',
                   info => 'Information you entered does not match a valid course user',
       );
       &js_escape(\%lt);
       return <<"END";
   
   function toggleViewAsUser(change) {
       var seluserid = document.getElementById('LC_selectuser');
       var currstyle = seluserid.style.display;
       if (change == 'off') {
           document.userview.elements['LC_viewas'].value = '';
           document.userview.elements['vuname'].value = '';
           document.userview.elements['vid'].value = '';
           document.userview.submit();
           return;
       }
       if (currstyle == 'inline') {
           seluserid.style.display = 'none';
           document.getElementById('usexpand').innerHTML='&#9658;&nbsp;';
           document.getElementById('uscollapse').innerHTML='';
       } else {
           seluserid.style.display = 'inline';
           document.getElementById('usexpand').innerHTML='';
           document.getElementById('uscollapse').innerHTML='&#9668;&nbsp;';
       }
       return;
   }
   
   function validCourseUser(form,change) {
       var possuname = form.elements['vuname'].value;
       var possuid = form.elements['vid'].value;
       var possudom = form.elements['vudom'].options[form.elements['vudom'].selectedIndex].value;
       if ((possuname == '') && (possuid == '')) {
           if (change == 'off') {
               form.elements['LC_viewas'].value = '';
               form.submit();
           } else {
               alert("$lt{'ente'}");
           }
           return;
       }
       var http = new XMLHttpRequest();
       var url = "/adm/courseuser";
       var params = "uname="+possuname+"&uid="+possuid+"&udom="+possudom;
       http.open("POST", url, true);
       http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
       http.onreadystatechange = function() {
           if (http.readyState == 4 && http.status == 200) {
               var data = JSON.parse(http.responseText);
               if (Array.isArray(data.match)) {
                  var len = data.match.length;
                  if (len == 2) {
                      if (data.match[0] != '' && data.match[1] != '') {
                          form.elements['LC_viewas'].value = data.match[0]+':'+data.match[1];
                          form.submit();
                      }
                  } else {
                      alert("$lt{'info'}");
                  }
               }
           }
           return;
       }
       http.send(params);
       return false;
   }
   
   END
   }
   
 sub utilityfunctions {  sub utilityfunctions {
     my ($httphost) = @_;      my ($httphost) = @_;
     my $currenturl=&Apache::lonnet::clutter(&Apache::lonnet::fixversion((split(/\?/,$env{'request.noversionuri'}))[0]));      my $currenturl=&Apache::lonnet::clutter(&Apache::lonnet::fixversion((split(/\?/,$env{'request.noversionuri'}))[0]));
Line 2692  sub utilityfunctions { Line 2830  sub utilityfunctions {
   
     my $countdown = &countdown_toggle_js();      my $countdown = &countdown_toggle_js();
   
       my $viewuser;
       if (($env{'request.course.id'}) &&
           ($env{'request.symb'} ne '') &&
           ($env{'request.filename'}=~/$LONCAPA::assess_re/)) {
           my $canview;
           foreach my $priv ('msg','vgr') {
               $canview = &Apache::lonnet::allowed($priv,$env{'request.course.id'});
               if (!$canview && $env{'request.course.sec'} ne '') {
                   $canview =
                       &Apache::lonnet::allowed($priv,"$env{'request.course.id'}/$env{'request.course.sec'}");
               }
               last if ($canview);
           }
           if ($canview) {
               $viewuser = &view_as_js($esc_url,$esc_symb);
           }
       }
   
     my ($ltitarget,$deeplinktarget);      my ($ltitarget,$deeplinktarget);
     if ($env{'request.lti.login'}) {      if ($env{'request.lti.login'}) {
         $ltitarget = $env{'request.lti.target'};          $ltitarget = $env{'request.lti.target'};
Line 2891  function open_aboutLC() { Line 3047  function open_aboutLC() {
   
 $countdown  $countdown
   
   $viewuser
   
 ENDUTILITY  ENDUTILITY
 }  }
   

Removed from v.1.369.2.83.2.9  
changed lines
  Added in v.1.369.2.83.2.10


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