From raeburn at source.lon-capa.org Mon Apr 23 14:59:29 2018 From: raeburn at source.lon-capa.org (raeburn) Date: Mon, 23 Apr 2018 18:59:29 -0000 Subject: [LON-CAPA-cvs] cvs: loncom /xml lontexconvert.pm Message-ID: raeburn Mon Apr 23 18:59:29 2018 EDT Modified files: /loncom/xml lontexconvert.pm Log: - Bug 6881. Index: loncom/xml/lontexconvert.pm diff -u loncom/xml/lontexconvert.pm:1.120 loncom/xml/lontexconvert.pm:1.121 --- loncom/xml/lontexconvert.pm:1.120 Sat Oct 7 00:50:57 2017 +++ loncom/xml/lontexconvert.pm Mon Apr 23 18:59:28 2018 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # TeX Conversion Module # -# $Id: lontexconvert.pm,v 1.120 2017/10/07 00:50:57 raeburn Exp $ +# $Id: lontexconvert.pm,v 1.121 2018/04/23 18:59:28 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -271,11 +271,19 @@ sub MathJax_converted { my $texstring=shift; - my $tag='math/tex;'; - if (&displaystyle($texstring)) { $tag='math/tex; mode=display'; } + my ($tag,$startspan,$endspan); + $tag='math/tex;'; + if (&displaystyle($texstring)) { + $tag='math/tex; mode=display'; + $startspan=''; + $endspan=''; + } else { + $startspan=''; + $endspan=''; + } &clean_out_math_mode($texstring); - return &MathJax_header(). - ''; + return &MathJax_header().$startspan. + ''.$endspan; } { From raeburn at source.lon-capa.org Mon Apr 23 15:33:17 2018 From: raeburn at source.lon-capa.org (raeburn) Date: Mon, 23 Apr 2018 19:33:17 -0000 Subject: [LON-CAPA-cvs] cvs: loncom(version_2_11_X) /xml lontexconvert.pm Message-ID: raeburn Mon Apr 23 19:33:17 2018 EDT Modified files: (Branch: version_2_11_X) /loncom/xml lontexconvert.pm Log: - For 2.11 - Backport 1.121. Index: loncom/xml/lontexconvert.pm diff -u loncom/xml/lontexconvert.pm:1.112.2.6 loncom/xml/lontexconvert.pm:1.112.2.7 --- loncom/xml/lontexconvert.pm:1.112.2.6 Fri Aug 5 21:24:01 2016 +++ loncom/xml/lontexconvert.pm Mon Apr 23 19:33:17 2018 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # TeX Conversion Module # -# $Id: lontexconvert.pm,v 1.112.2.6 2016/08/05 21:24:01 raeburn Exp $ +# $Id: lontexconvert.pm,v 1.112.2.7 2018/04/23 19:33:17 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -270,11 +270,19 @@ sub MathJax_converted { my $texstring=shift; - my $tag='math/tex;'; - if (&displaystyle($texstring)) { $tag='math/tex; mode=display'; } + my ($tag,$startspan,$endspan); + $tag='math/tex;'; + if (&displaystyle($texstring)) { + $tag='math/tex; mode=display'; + $startspan=''; + $endspan=''; + } else { + $startspan=''; + $endspan=''; + } &clean_out_math_mode($texstring); - return &MathJax_header(). - ''; + return &MathJax_header().$startspan. + ''.$endspan; } { From raeburn at source.lon-capa.org Tue Apr 24 07:18:10 2018 From: raeburn at source.lon-capa.org (raeburn) Date: Tue, 24 Apr 2018 11:18:10 -0000 Subject: [LON-CAPA-cvs] cvs: loncom /interface londocs.pm /publisher loncoursepub.pm Message-ID: raeburn Tue Apr 24 11:18:10 2018 EDT Modified files: /loncom/interface londocs.pm /loncom/publisher loncoursepub.pm Log: - Course Editor "Standard Problem" item (Grading tab) for creation of a new problem in user's Authoring Space. -------------- next part -------------- Index: loncom/interface/londocs.pm diff -u loncom/interface/londocs.pm:1.653 loncom/interface/londocs.pm:1.654 --- loncom/interface/londocs.pm:1.653 Sat Apr 14 02:29:44 2018 +++ loncom/interface/londocs.pm Tue Apr 24 11:17:58 2018 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: londocs.pm,v 1.653 2018/04/14 02:29:44 raeburn Exp $ +# $Id: londocs.pm,v 1.654 2018/04/24 11:17:58 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -5460,6 +5460,8 @@ $r->internal_redirect($redirect); return OK; } + } else { + $r->internal_redirect($redirect); } } } @@ -8637,7 +8639,7 @@ if ($env{'form.newsubdir'}) { if ($env{'form.newsubdirname'} ne '') { $newsubdir = $env{'form.newsubdirname'}; - } + } } if ($env{'form.newresourcename'}) { $filename = $env{'form.newresourcename'}; @@ -8720,61 +8722,34 @@ END - close($fh); - } - if ((-e $sourcerights) && (-e "$sourcerights.meta")) { - if (!-e "$docroot/res/$coursedom") { - mkdir("$docroot/res/$coursedom",0755); - } - if (!-e "$docroot/res/$coursedom/$coursenum") { - mkdir("$docroot/res/$coursedom/$coursenum",0755); - } - if ((-e "$docroot/res/$coursedom/$coursenum") && (!-e $targetrights)) { - my $nokeyref = &Apache::lonpublisher::getnokey($r->dir_config('lonIncludes')); - my $output = &Apache::lonpublisher::batchpublish($r,$sourcerights,$targetrights,$nokeyref,1); - } + close($fh); } } - if ($env{'form.newresourceadd'}) { - my $template = $env{'form.template'}; - my $source = $docroot.$redirect; - my $target = $redirect; - $target =~ s{^/priv/}{/res/}; - $target = $docroot.$target; - if (!-e $source) { - my $copyfrom; - if ($template) { - my %templates; - my @files = &Apache::lonhomework::get_template_list('problem'); - foreach my $poss (@files) { - if (ref($poss) eq 'ARRAY') { - if ($template eq $poss->[0]) { - $templates{$template} = 1; - last; - } - } - } - if ($templates{$template}) { - $copyfrom = $template; - } - } - unless ($copyfrom) { - $copyfrom = $r->dir_config('lonIncludes').'/templates/blank.problem'; - } - &File::Copy::copy($copyfrom,$source); + if ((-e $sourcerights) && (-e "$sourcerights.meta")) { + if (!-e "$docroot/res/$coursedom") { + mkdir("$docroot/res/$coursedom",0755); } - if (!-e "$source.meta") { - my $cid = $coursedom.'_'.$coursenum; - my $now = time; - if (open(my $fh,">$source.meta")) { - my $author=$env{'environment.firstname'}.' '. - $env{'environment.middlename'}.' '. - $env{'environment.lastname'}.' '. - $env{'environment.generation'}; - $author =~ s/\s+$//; - my $title = $env{'form.newresourcetitle'}; - $title =~ s/^\s+|\s+$//g; - print $fh <dir_config('lonIncludes')); + my $output = &Apache::lonpublisher::batchpublish($r,$sourcerights,$targetrights,$nokeyref,1); + } + } + my $source = $docroot.$redirect; + if (!-e "$source.meta") { + my $cid = $coursedom.'_'.$coursenum; + my $now = time; + if (open(my $fh,">$source.meta")) { + my $author=$env{'environment.firstname'}.' '. + $env{'environment.middlename'}.' '. + $env{'environment.lastname'}.' '. + $env{'environment.generation'}; + $author =~ s/\s+$//; + my $title = $env{'form.newresourcetitle'}; + $title =~ s/^\s+|\s+$//g; + print $fh < $author @@ -8800,8 +8775,7 @@ $title END - close($fh); - } + close($fh); } } } @@ -8829,7 +8803,7 @@ } sub finishnewprob { - my ($url,$path,$subdir,$newsubdir,$filename) = @_; + my ($url,$path,$subdir,$newsubdir,$filename,$context) = @_; unless (-d $path) { unless (mkdir($path,02770)) { return; @@ -8872,6 +8846,31 @@ $redirect = "$url/$filename"; } } + if ((!-e $dest) && ($context ne 'upload')) { + my $template = $env{'form.template'}; + my $copyfrom; + if ($template ne '') { + my %templates; + my @files = &Apache::lonhomework::get_template_list('problem'); + foreach my $poss (@files) { + if (ref($poss) eq 'ARRAY') { + if ($template eq $poss->[0]) { + $templates{$template} = 1; + last; + } + } + } + if ($templates{$template}) { + $copyfrom = $template; + } + } + if ($filename =~ /\.problem$/) { + unless ($copyfrom) { + $copyfrom = $Apache::lonnet::perlvar{'lonIncludes'}.'/templates/blank.problem'; + } + &File::Copy::copy($copyfrom,$dest); + } + } return $redirect; } Index: loncom/publisher/loncoursepub.pm diff -u loncom/publisher/loncoursepub.pm:1.1 loncom/publisher/loncoursepub.pm:1.2 --- loncom/publisher/loncoursepub.pm:1.1 Fri Jul 1 19:59:56 2016 +++ loncom/publisher/loncoursepub.pm Tue Apr 24 11:18:09 2018 @@ -2,7 +2,7 @@ # Handler to store uploaded files etc. in Course's Authoring # Space, # -# $Id: loncoursepub.pm,v 1.1 2016/07/01 19:59:56 raeburn Exp $ +# $Id: loncoursepub.pm,v 1.2 2018/04/24 11:18:09 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -65,7 +65,7 @@ } if ($newfilename ne '') { my $path = $londocroot.$toppath; - my $redirect = &Apache::londocs::finishnewprob($toppath,$path,$relpath,$newsubdir,$newfilename); + my $redirect = &Apache::londocs::finishnewprob($toppath,$path,$relpath,$newsubdir,$newfilename,'upload'); if ($redirect) { my $url = $redirect; my $srcfile = $londocroot.$url; From raeburn at source.lon-capa.org Tue Apr 24 09:40:33 2018 From: raeburn at source.lon-capa.org (raeburn) Date: Tue, 24 Apr 2018 13:40:33 -0000 Subject: [LON-CAPA-cvs] cvs: loncom /interface loncommon.pm lonhtmlcommon.pm Message-ID: raeburn Tue Apr 24 13:40:33 2018 EDT Modified files: /loncom/interface loncommon.pm lonhtmlcommon.pm Log: - Bug 6754 LON-CAPA as LTI Provider - If original LTI launch of LON-CAPA was for display in iframe linked LON-CAPA items are displayed within the same iframe. Index: loncom/interface/loncommon.pm diff -u loncom/interface/loncommon.pm:1.1313 loncom/interface/loncommon.pm:1.1314 --- loncom/interface/loncommon.pm:1.1313 Sun Apr 15 00:28:07 2018 +++ loncom/interface/loncommon.pm Tue Apr 24 13:40:32 2018 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.1313 2018/04/15 00:28:07 raeburn Exp $ +# $Id: loncommon.pm,v 1.1314 2018/04/24 13:40:32 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1297,9 +1297,13 @@ } # Add the text + my $target = ' target="_top"'; + if (($env{'request.lti.login'}) && ($env{'request.lti.target'} eq 'iframe')) { + $target = ''; + } if ($text ne "") { $template.='' - .'' + .'' .$text.''; } @@ -1309,7 +1313,7 @@ if ($imgid ne '') { $imgid = ' id="'.$imgid.'"'; } - $template.=' ' + $template.=' ' .''.&mt('Help: [_1]',$topic).'$text"; + "$text"; } # Add the graphic my $title = &mt('Report a Bug'); my $bugicon=&lonhttpdurl("/adm/lonMisc/smallBug.gif"); $template .= <<"ENDTEMPLATE"; - (Bug: $topic) + (Bug: $topic) ENDTEMPLATE if ($text ne '') { $template.='' }; return $template; @@ -5837,17 +5846,18 @@ $title = &mt('Authoring Space'); } - my $target; + my ($target,$crumbtarget) = (' target="_top"','_top'); #FIXME lonpubdir: target="_parent" if (($env{'request.lti.login'}) && ($env{'request.lti.target'} eq 'iframe')) { - $target = ' target="_top"'; #FIXME lonpubdir: target="_parent" + $target = ''; + $crumbtarget = ''; } my $output = '
' .&Apache::loncommon::help_open_menu('','',3,'Authoring') #FIXME: Broken? Where is it? .''.$title.' ' - .'
' + .&Apache::lonhtmlcommon::crumbs($uname.'/'.$parentpath,$crumbtarget,'/priv/'.$udom,undef,undef); if ($lastitem) { $output .= @@ -5861,7 +5871,7 @@ } else { $output .= '
' - #FIXME lonpubdir: &Apache::lonhtmlcommon::crumbs($uname.$thisdisfn.'/','_top','/priv','','+1',1)."
" + #FIXME lonpubdir: &Apache::lonhtmlcommon::crumbs($uname.$thisdisfn.'/',$crumbtarget,'/priv','','+1',1)."
" .&Apache::lonhtmlcommon::select_recent('construct','recent','this.form.action=this.form.recent.value;this.form.submit()') .'
' .&Apache::lonmenu::constspaceform(); Index: loncom/interface/lonhtmlcommon.pm diff -u loncom/interface/lonhtmlcommon.pm:1.392 loncom/interface/lonhtmlcommon.pm:1.393 --- loncom/interface/lonhtmlcommon.pm:1.392 Sat Apr 14 02:29:44 2018 +++ loncom/interface/lonhtmlcommon.pm Tue Apr 24 13:40:32 2018 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common html routines # -# $Id: lonhtmlcommon.pm,v 1.392 2018/04/14 02:29:44 raeburn Exp $ +# $Id: lonhtmlcommon.pm,v 1.393 2018/04/24 13:40:32 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -105,9 +105,13 @@ $filter=&entity_encode($filter); $part=&entity_encode($part); if (($symb) && (&Apache::lonnet::allowed('opa')) && ($target ne 'tex')) { - return "$linktext"; + my $target=' target="_top"'; + if (($env{'request.lti.login'}) && ($env{'request.lti.target'} eq 'iframe')) { + $target=''; + } + return "$linktext"; } else { - return $linktext; + return $linktext; } } ############################################## @@ -1929,9 +1933,9 @@ } } } - my $target; - unless (($env{'request.lti.login'}) && ($env{'request.lti.target'} eq 'iframe')) { - $target='_top'; + my $target = '_top'; + if (($env{'request.lti.login'}) && ($env{'request.lti.target'} eq 'iframe')) { + $target=''; } $menulink = { href =>'/adm/menu', title =>'Go to main menu', @@ -1954,7 +1958,10 @@ class => 'LC_menubuttons_link', }; if ($env{'request.noversionuri'} eq '/adm/searchcat') { - $hashref->{'target'} = '_top'; + $hashref->{'target'} = '_top'; + if (($env{'request.lti.login'}) && ($env{'request.lti.target'} eq 'iframe')) { + $hashref->{'target'} = ''; + } } $links=&htmltag( 'a',''.$alttext.'', $hashref); From raeburn at source.lon-capa.org Tue Apr 24 10:05:23 2018 From: raeburn at source.lon-capa.org (raeburn) Date: Tue, 24 Apr 2018 14:05:23 -0000 Subject: [LON-CAPA-cvs] cvs: loncom /interface loncommon.pm Message-ID: raeburn Tue Apr 24 14:05:23 2018 EDT Modified files: /loncom/interface loncommon.pm Log: - Exclude .rights file from list of "course author" files available for import via "Import from Course Resources" item in Course Editor. - Fix typo. Index: loncom/interface/loncommon.pm diff -u loncom/interface/loncommon.pm:1.1314 loncom/interface/loncommon.pm:1.1315 --- loncom/interface/loncommon.pm:1.1314 Tue Apr 24 13:40:32 2018 +++ loncom/interface/loncommon.pm Tue Apr 24 14:05:22 2018 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.1314 2018/04/24 13:40:32 raeburn Exp $ +# $Id: loncommon.pm,v 1.1315 2018/04/24 14:05:22 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -2234,6 +2234,7 @@ } my @ordered = (); foreach my $file (sort { lc($a) cmp lc($b) } (keys(%{$files{$key}}))) { + next if ($file =~ /\.rights$/); if ($only) { my ($ext) = ($file =~ /\.([^.]+)$/); unless ($possexts{lc($ext)}) { @@ -2277,11 +2278,13 @@ unless ($possexts{lc($ext)}) { next; } + } else { + next if ($file =~ /\.rights$/); } push(@singledirfiles,$file); } if (@singledirfiles) { - $possdirs == 1; + $possdirs = 1; } } if (($possdirs == 1) && (@singledirfiles)) { From raeburn at source.lon-capa.org Tue Apr 24 11:56:57 2018 From: raeburn at source.lon-capa.org (raeburn) Date: Tue, 24 Apr 2018 15:56:57 -0000 Subject: [LON-CAPA-cvs] cvs: loncom / production_dns_domain.tab production_dns_hosts.tab Message-ID: raeburn Tue Apr 24 15:56:57 2018 EDT Modified files: /loncom production_dns_hosts.tab production_dns_domain.tab Log: - Add "The College at Brockport" (Brockport, NY), hosted at educog.com. Index: loncom/production_dns_hosts.tab diff -u loncom/production_dns_hosts.tab:1.267 loncom/production_dns_hosts.tab:1.268 --- loncom/production_dns_hosts.tab:1.267 Tue Apr 10 10:50:55 2018 +++ loncom/production_dns_hosts.tab Tue Apr 24 15:56:57 2018 @@ -213,6 +213,7 @@ ohiouk12l1:ohiouk12:library:capa4.phy.ohio.edu:https:ohio.edu #Hosted - educogs library server +brockportl1:brockport:library:educog.com:https:educog.com augustanal1:augustana:library:educog.com:https:educog.com berryl1:berry:library:educog.com:https:educog.com lowelll1:lowell:library:educog.com:https:educog.com Index: loncom/production_dns_domain.tab diff -u loncom/production_dns_domain.tab:1.193 loncom/production_dns_domain.tab:1.194 --- loncom/production_dns_domain.tab:1.193 Tue Apr 10 10:50:55 2018 +++ loncom/production_dns_domain.tab Tue Apr 24 15:56:57 2018 @@ -193,6 +193,7 @@ lhsa:Lutheran High School Association of Greater Detroit:::en-US::::lhsalc #Hosted +brockport:The College at Brockport:::en-US:Brockport, NY:-77.951:43.210:brockportl1 augustana:Augustana College:::en-US:Rock Island, IL:-90.551:41.505:augustanal1 berry:Berry College:::en-US:Mount Berry, GA:-85.189:34.290:berryl1 lowell:Lowell Public Schools:::en-US:Lowell,Lowell, MA:-71.312:42.647:lowelll1 From raeburn at source.lon-capa.org Fri Apr 27 16:14:17 2018 From: raeburn at source.lon-capa.org (raeburn) Date: Fri, 27 Apr 2018 20:14:17 -0000 Subject: [LON-CAPA-cvs] cvs: loncom /interface lonmenu.pm lonpreferences.pm mydesk.tab Message-ID: raeburn Fri Apr 27 20:14:17 2018 EDT Modified files: /loncom/interface mydesk.tab lonmenu.pm lonpreferences.pm Log: - Return to Authoring Space or Resource Space after changing user preferences for ad hoc co-author role for DCs, and use of CodeMirror. -------------- next part -------------- Index: loncom/interface/mydesk.tab diff -u loncom/interface/mydesk.tab:1.176 loncom/interface/mydesk.tab:1.177 --- loncom/interface/mydesk.tab:1.176 Sat Oct 7 23:14:49 2017 +++ loncom/interface/mydesk.tab Fri Apr 27 20:14:16 2018 @@ -1,4 +1,4 @@ -# $Id: mydesk.tab,v 1.176 2017/10/07 23:14:49 raeburn Exp $ +# $Id: mydesk.tab,v 1.177 2018/04/27 20:14:16 raeburn Exp $ # primary menu links # Apache::lonmenu::primary_menu() generates a menu from these elements # prim: item belongs to primary menu @@ -77,7 +77,7 @@ # - nvgr: cannot view other people's grades # - mgr: Manage grades # - author: authors (au, ca, aa) -# - cca: Grant/revoke role of co-author (author only) +# - cca: Grant/revoke role of co-author (author only) # prim:link:icon:alt:text:condition scnd:/adm/navmaps?postdata=[url]&postsymb=[symb]:::Contents: scnd:/adm/whatsnew:::What's New:whn @@ -118,8 +118,8 @@ scndsub:Settings:/adm/courseprefs:Course Settings:params scndsub:Settings:/adm/parmset:Content Settings:params scndsub:Settings:/adm/slotrequest?command=showslots:Slots:vgr -scndsub:Settings:/adm/preferences?action=authorsettings:Editing Options:author -scndsub:Settings:/adm/preferences?action=changedomcoord:Domain Access:cca +scndsub:Settings:/adm/preferences?action=authorsettings[returnurl]:Editing Options:author +scndsub:Settings:/adm/preferences?action=changedomcoord[returnurl]:Domain Access:cca scndsub:People:/adm/createuser:Users:viewusers scndsub:People:/adm/coursegroups:Groups:vcg scndsub:Public:/public/[cdom]/[cnum]/syllabus:Syllabus:crsedit Index: loncom/interface/lonmenu.pm diff -u loncom/interface/lonmenu.pm:1.487 loncom/interface/lonmenu.pm:1.488 --- loncom/interface/lonmenu.pm:1.487 Sun Apr 15 00:28:07 2018 +++ loncom/interface/lonmenu.pm Fri Apr 27 20:14:16 2018 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.487 2018/04/15 00:28:07 raeburn Exp $ +# $Id: lonmenu.pm,v 1.488 2018/04/27 20:14:16 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -665,6 +665,20 @@ next unless (($env{'user.name'} ne '') && ($env{'user.domain'} ne '')); $href =~ s/\[domain\]/$env{'user.domain'}/g; $href =~ s/\[user\]/$env{'user.name'}/g; + } elsif (($href =~ m{^/adm/preferences\?}) && ($href =~ /\[returnurl\]/)) { + my $returnurl = $ENV{'REQUEST_URI'}; + if ($ENV{'REQUEST_URI'} =~ m{/adm/preferences\?action=(?:changedomcoord|authorsettings)\&returnurl=([^\&]+)$}) { + $returnurl = $1; + } + if (($returnurl =~ m{^/adm/createuser($|\?action=)}) || + ($returnurl =~ m{^/priv/$match_domain/$match_username}) || + ($returnurl =~ m{^/res(/?$|/$match_domain/$match_username)})) { + $returnurl =~ s{\?.*$}{}; + $returnurl = '&returnurl='.&HTML::Entities::encode($returnurl,'"<>&\''); + } else { + undef($returnurl); + } + $href =~ s/\[returnurl\]/$returnurl/; } unless (($href eq '') || ($href =~ /^\#/)) { if ($target eq '_top') { Index: loncom/interface/lonpreferences.pm diff -u loncom/interface/lonpreferences.pm:1.224 loncom/interface/lonpreferences.pm:1.225 --- loncom/interface/lonpreferences.pm:1.224 Mon Sep 19 03:19:12 2016 +++ loncom/interface/lonpreferences.pm Fri Apr 27 20:14:16 2018 @@ -1,7 +1,7 @@ # The LearningOnline Network # Preferences # -# $Id: lonpreferences.pm,v 1.224 2016/09/19 03:19:12 raeburn Exp $ +# $Id: lonpreferences.pm,v 1.225 2018/04/27 20:14:16 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -477,7 +477,6 @@ } - ################################################################ # Anonymous Discussion Name Change Subroutines # ################################################################ @@ -757,8 +756,10 @@ my $text=&mt('By default, the Domain Coordinator can enter your Authoring Space.'); my $construction=&mt('Block access to Authoring Space'); my $change=&mt('Save'); + my $returnurl = &HTML::Entities::encode($env{'form.returnurl'},'"<>&\''); $r->print(< + $text

@@ -783,7 +784,11 @@ } my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]',''.&mt('Block access to Authoring Space').'',''.$status.'')); $message=&Apache::loncommon::confirmwrapper($message); - &print_main_menu($r,$message); + if ($env{'form.returnurl'}) { + &do_redirect($r,$env{'form.returnurl'},$message); + } else { + &print_main_menu($r,$message); + } } ################################################################# @@ -1919,8 +1924,10 @@ my $text=&mt('By default, CodeMirror an editor with advanced functionality for editing code is activated for authors.'); my $cmoff=&mt('Deactivate CodeMirror. This can improve performance on slow computers and accessibility.'); my $change=&mt('Save'); + my $returnurl = &HTML::Entities::encode($env{'form.returnurl'},'"<>&\''); $r->print(< + $text

@@ -1948,7 +1955,11 @@ } my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]',''.&mt('Deactivate CodeMirror in Authoring Space').'',''.$status.'')); $message=&Apache::loncommon::confirmwrapper($message); - &print_main_menu($r,$message); + if ($env{'form.returnurl'}) { + &do_redirect($r,$env{'form.returnurl'},$message); + } else { + &print_main_menu($r,$message); + } } } @@ -2246,6 +2257,18 @@ if (($env{'form.action'} eq 'changerolespref') && ($env{'form.returnurl'} eq '/adm/roles')) { $brlink ='/adm/roles'; $brtxt = 'User Roles'; + } elsif ((($env{'form.action'} eq 'changedomcoord') || + ($env{'form.action'} eq 'authorsettings')) && + (($env{'form.returnurl'} =~ m{^/(priv/|res($|/))}) || + ($env{'form.returnurl'} eq '/adm/createuser'))) { + $brlink = $env{'form.returnurl'}; + if ($env{'form.returnurl'} eq '/adm/createuser') { + $brtxt = 'User Management'; + } elsif ($env{'form.returnurl'} =~ m{^/res($\/)}) { + $brtxt = 'Browse published resources'; + } else { + $brtxt = 'Authoring Space'; + } } else { $brlink ='/adm/preferences'; $brtxt = 'Set User Preferences'; @@ -2256,7 +2279,7 @@ text => $brtxt, help => $brhelp,}); if(!exists $env{'form.action'}) { - &print_main_menu($r); + &print_main_menu($r); }elsif($env{'form.action'} eq 'changepass'){ &passwordchanger($r); }elsif($env{'form.action'} eq 'verify_and_change_pass'){ @@ -2405,5 +2428,16 @@ return %updateable; } +sub do_redirect { + my ($r,$url,$msg) = @_; + $r->print( + &Apache::loncommon::start_page('Switching Server ...',undef, + {'redirect' => [0.5,$url]}). + '
'."\n". + "$msg\n". + &Apache::loncommon::end_page()); + return; +} + 1; __END__ From raeburn at source.lon-capa.org Fri Apr 27 17:39:42 2018 From: raeburn at source.lon-capa.org (raeburn) Date: Fri, 27 Apr 2018 21:39:42 -0000 Subject: [LON-CAPA-cvs] cvs: loncom /interface lonpreferences.pm Message-ID: raeburn Fri Apr 27 21:39:42 2018 EDT Modified files: /loncom/interface lonpreferences.pm Log: - Eliminate duplicate calls to loncommon::end_page(). Index: loncom/interface/lonpreferences.pm diff -u loncom/interface/lonpreferences.pm:1.225 loncom/interface/lonpreferences.pm:1.226 --- loncom/interface/lonpreferences.pm:1.225 Fri Apr 27 20:14:16 2018 +++ loncom/interface/lonpreferences.pm Fri Apr 27 21:39:42 2018 @@ -1,7 +1,7 @@ # The LearningOnline Network # Preferences # -# $Id: lonpreferences.pm,v 1.225 2018/04/27 20:14:16 raeburn Exp $ +# $Id: lonpreferences.pm,v 1.226 2018/04/27 21:39:42 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1511,7 +1511,7 @@ } sub verify_and_change_password { - my ($r,$caller,$mailtoken) = @_; + my ($r,$caller,$mailtoken,$ended) = @_; my ($user,$domain,$homeserver); my ($blocked,$blocktext) = &Apache::loncommon::blocking_status('passwd'); @@ -1656,6 +1656,9 @@ $r->print($message.'
'); } else { &print_main_menu($r, $message); + if (ref($ended)) { + $$ended = 1; + } } } else { # error error: run in circles, scream and shout @@ -1670,6 +1673,9 @@ &mt("The password for user [_1] was not changed.",''.$user.'').' '.&mt('Please make sure your old password was entered correctly.'),1); $message=&Apache::loncommon::confirmwrapper($message); &print_main_menu($r, $message); + if (ref($ended)) { + $$ended = 1; + } } } return; @@ -2253,7 +2259,7 @@ ['action','wysiwyg','returnurl','refpage']); # Apache::lonhtmlcommon::clear_breadcrumbs(); - my ($brlink,$brtxt,$brhelp); + my ($brlink,$brtxt,$brhelp,$ended); if (($env{'form.action'} eq 'changerolespref') && ($env{'form.returnurl'} eq '/adm/roles')) { $brlink ='/adm/roles'; $brtxt = 'User Roles'; @@ -2280,14 +2286,16 @@ help => $brhelp,}); if(!exists $env{'form.action'}) { &print_main_menu($r); + $ended = 1; }elsif($env{'form.action'} eq 'changepass'){ &passwordchanger($r); }elsif($env{'form.action'} eq 'verify_and_change_pass'){ - &verify_and_change_password($r,'preferences'); + &verify_and_change_password($r,'preferences','',\$ended)); }elsif($env{'form.action'} eq 'changescreenname'){ &screennamechanger($r); }elsif($env{'form.action'} eq 'verify_and_change_screenname'){ &verify_and_change_screenname($r); + $ended = 1; }elsif($env{'form.action'} eq 'changemsgforward'){ &msgforwardchanger($r); }elsif($env{'form.action'} eq 'verify_and_change_msgforward'){ @@ -2296,10 +2304,12 @@ &colorschanger($r); }elsif($env{'form.action'} eq 'verify_and_change_colors'){ &verify_and_change_colors($r); + $ended = 1; }elsif($env{'form.action'} eq 'changelanguages'){ &languagechanger($r); }elsif($env{'form.action'} eq 'verify_and_change_languages'){ &verify_and_change_languages($r); + $ended = 1; }elsif($env{'form.action'} eq 'changewysiwyg'){ &wysiwygchanger($r); }elsif($env{'form.action'} eq 'set_wysiwyg'){ @@ -2308,10 +2318,12 @@ &discussionchanger($r); }elsif($env{'form.action'} eq 'verify_and_change_discussion'){ &verify_and_change_discussion($r); + $ended = 1; }elsif($env{'form.action'} eq 'changerolespref'){ &rolesprefchanger($r); }elsif($env{'form.action'} eq 'verify_and_change_rolespref'){ &verify_and_change_rolespref($r); + $ended = 1; }elsif($env{'form.action'} eq 'changetexenginepref'){ &texenginechanger($r); }elsif($env{'form.action'} eq 'verify_and_change_texengine'){ @@ -2320,6 +2332,7 @@ &iconchanger($r); }elsif($env{'form.action'} eq 'verify_and_change_icons'){ &verify_and_change_icons($r); + $ended = 1; }elsif($env{'form.action'} eq 'changeclicker'){ &clickerchanger($r); }elsif($env{'form.action'} eq 'verify_and_change_clicker'){ @@ -2328,6 +2341,7 @@ &domcoordchanger($r); }elsif($env{'form.action'} eq 'verify_and_change_domcoord'){ &verify_and_change_domcoord($r); + $ended = 1; }elsif($env{'form.action'} eq 'lockwarning'){ &lockwarning($r); }elsif($env{'form.action'} eq 'verify_and_change_locks'){ @@ -2336,6 +2350,7 @@ &coursedisplaychanger($r); }elsif($env{'form.action'} eq 'verify_and_change_coursepage'){ &verify_and_change_coursepage($r); + $ended = 1; }elsif($env{'form.action'} eq 'authorsettings'){ &author_space_settings($r); }elsif($env{'form.action'} eq 'change_authoring_settings'){ @@ -2345,17 +2360,18 @@ &toggle_debug(); } &print_main_menu($r); + $ended = 1; } elsif ($env{'form.action'} eq 'changelockednames') { &lockednameschanger($r); } elsif ($env{'form.action'} eq 'verify_and_change_lockednames') { &verify_and_change_lockednames($r); + $ended = 1; } # Properly end the HTML page of all preference pages # started in each sub routine # Exception: print_main_menu has its own end_page call - unless (!exists $env{'form.action'} || - $env{'form.action'} eq 'debugtoggle') { + unless ($ended) { $r->print(&Apache::loncommon::end_page()); } From raeburn at source.lon-capa.org Fri Apr 27 18:07:11 2018 From: raeburn at source.lon-capa.org (raeburn) Date: Fri, 27 Apr 2018 22:07:11 -0000 Subject: [LON-CAPA-cvs] cvs: loncom /interface lonmenu.pm mydesk.tab Message-ID: raeburn Fri Apr 27 22:07:11 2018 EDT Modified files: /loncom/interface lonmenu.pm mydesk.tab Log: - Chat item included in inline menu in course, if user has plc priv in course. Index: loncom/interface/lonmenu.pm diff -u loncom/interface/lonmenu.pm:1.488 loncom/interface/lonmenu.pm:1.489 --- loncom/interface/lonmenu.pm:1.488 Fri Apr 27 20:14:16 2018 +++ loncom/interface/lonmenu.pm Fri Apr 27 22:07:11 2018 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.488 2018/04/27 20:14:16 raeburn Exp $ +# $Id: lonmenu.pm,v 1.489 2018/04/27 22:07:11 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -405,6 +405,7 @@ my $canmodpara = &Apache::lonnet::allowed('opa', $crs_sec); my $canvgr = &Apache::lonnet::allowed('vgr', $crs_sec); my $canmgr = &Apache::lonnet::allowed('mgr', $crs_sec); + my $canplc = &Apache::lonnet::allowed('plc', $crs_sec); my $author = &getauthor(); my ($cdom,$cnum,$showsyllabus,$showfeeds,$showresv,$grouptools); @@ -488,6 +489,8 @@ && !$showsyllabus; next if $$menuitem[4] eq 'showfeeds' && !$showfeeds; + next if $$menuitem[4] eq 'plc' + && !$canplc; next if $$menuitem[4] eq 'author' && !$author; next if $$menuitem[4] eq 'cca' @@ -582,6 +585,7 @@ } $menu =~ s/\[uname\]/$$author{user}/g; $menu =~ s/\[udom\]/$$author{dom}/g; + $menu =~ s/\[javascript\]/javascript:/; if ($env{'request.course.id'}) { $menu =~ s/\[cnum\]/$cnum/g; $menu =~ s/\[cdom\]/$cdom/g; Index: loncom/interface/mydesk.tab diff -u loncom/interface/mydesk.tab:1.177 loncom/interface/mydesk.tab:1.178 --- loncom/interface/mydesk.tab:1.177 Fri Apr 27 20:14:16 2018 +++ loncom/interface/mydesk.tab Fri Apr 27 22:07:11 2018 @@ -1,4 +1,4 @@ -# $Id: mydesk.tab,v 1.177 2018/04/27 20:14:16 raeburn Exp $ +# $Id: mydesk.tab,v 1.178 2018/04/27 22:07:11 raeburn Exp $ # primary menu links # Apache::lonmenu::primary_menu() generates a menu from these elements # prim: item belongs to primary menu @@ -82,6 +82,7 @@ scnd:/adm/navmaps?postdata=[url]&postsymb=[symb]:::Contents: scnd:/adm/whatsnew:::What's New:whn scnd:/adm/quickgrades:::Grades:nvgr +scnd:[javascript]chat_win();:::Chat:plc scnd::::Grades:vgr scnd::::People:viewusers scnd::::Settings:params From raeburn at source.lon-capa.org Fri Apr 27 18:42:20 2018 From: raeburn at source.lon-capa.org (raeburn) Date: Fri, 27 Apr 2018 22:42:20 -0000 Subject: [LON-CAPA-cvs] cvs: loncom /interface lonpreferences.pm Message-ID: raeburn Fri Apr 27 22:42:20 2018 EDT Modified files: /loncom/interface lonpreferences.pm Log: - Eliminate duplicate calls to loncommon::end_page(). Index: loncom/interface/lonpreferences.pm diff -u loncom/interface/lonpreferences.pm:1.226 loncom/interface/lonpreferences.pm:1.227 --- loncom/interface/lonpreferences.pm:1.226 Fri Apr 27 21:39:42 2018 +++ loncom/interface/lonpreferences.pm Fri Apr 27 22:42:20 2018 @@ -1,7 +1,7 @@ # The LearningOnline Network # Preferences # -# $Id: lonpreferences.pm,v 1.226 2018/04/27 21:39:42 raeburn Exp $ +# $Id: lonpreferences.pm,v 1.227 2018/04/27 22:42:20 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -2290,7 +2290,7 @@ }elsif($env{'form.action'} eq 'changepass'){ &passwordchanger($r); }elsif($env{'form.action'} eq 'verify_and_change_pass'){ - &verify_and_change_password($r,'preferences','',\$ended)); + &verify_and_change_password($r,'preferences','',\$ended); }elsif($env{'form.action'} eq 'changescreenname'){ &screennamechanger($r); }elsif($env{'form.action'} eq 'verify_and_change_screenname'){ @@ -2314,6 +2314,7 @@ &wysiwygchanger($r); }elsif($env{'form.action'} eq 'set_wysiwyg'){ &verify_and_change_wysiwyg($r); + $ended = 1; }elsif($env{'form.action'} eq 'changediscussions'){ &discussionchanger($r); }elsif($env{'form.action'} eq 'verify_and_change_discussion'){ @@ -2328,6 +2329,7 @@ &texenginechanger($r); }elsif($env{'form.action'} eq 'verify_and_change_texengine'){ &verify_and_change_texengine($r); + $ended = 1; }elsif($env{'form.action'} eq 'changeicons'){ &iconchanger($r); }elsif($env{'form.action'} eq 'verify_and_change_icons'){ @@ -2337,6 +2339,7 @@ &clickerchanger($r); }elsif($env{'form.action'} eq 'verify_and_change_clicker'){ &verify_and_change_clicker($r); + $ended = 1; }elsif($env{'form.action'} eq 'changedomcoord'){ &domcoordchanger($r); }elsif($env{'form.action'} eq 'verify_and_change_domcoord'){ @@ -2355,6 +2358,7 @@ &author_space_settings($r); }elsif($env{'form.action'} eq 'change_authoring_settings'){ &change_authoring_settings($r); + $ended = 1; }elsif($env{'form.action'} eq 'debugtoggle'){ if (&can_toggle_debug()) { &toggle_debug(); From raeburn at source.lon-capa.org Fri Apr 27 19:01:06 2018 From: raeburn at source.lon-capa.org (raeburn) Date: Fri, 27 Apr 2018 23:01:06 -0000 Subject: [LON-CAPA-cvs] cvs: loncom /interface loncommon.pm lonmenu.pm mydesk.tab Message-ID: raeburn Fri Apr 27 23:01:06 2018 EDT Modified files: /loncom/interface loncommon.pm lonmenu.pm mydesk.tab Log: - Bug 6754 LON-CAPA as LTI Provider - No Contents item in inline menu for course if original LTI launch of LON-CAPA was for a resource or map. - No Role switcher in inline menu for session launched via LTI (role switching should occur in the LTI Consumer). -------------- next part -------------- Index: loncom/interface/loncommon.pm diff -u loncom/interface/loncommon.pm:1.1315 loncom/interface/loncommon.pm:1.1316 --- loncom/interface/loncommon.pm:1.1315 Tue Apr 24 14:05:22 2018 +++ loncom/interface/loncommon.pm Fri Apr 27 23:01:05 2018 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.1315 2018/04/24 14:05:22 raeburn Exp $ +# $Id: loncommon.pm,v 1.1316 2018/04/27 23:01:05 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -5932,6 +5932,15 @@ inlineremote items to be added in "Functions" menu below breadcrumbs. +=item * $ltiscope, optional argument, will be one of: resource, map or + course, if LON-CAPA is in LTI Provider context. Value is + the scope of use, i.e., launch was for access to a single, a map + or the entire course. + +=item * $ltiuri, optional argument, if LON-CAPA is in LTI Provider + context, this will contain the URL for the landing item in + the course, after launch from an LTI Consumer + =back Returns: A uniform header for LON-CAPA web pages. @@ -5943,7 +5952,7 @@ sub bodytag { my ($title,$function,$addentries,$bodyonly,$domain,$forcereg, - $no_nav_bar,$bgcolor,$args,$advtoolsref)=@_; + $no_nav_bar,$bgcolor,$args,$advtoolsref,$ltiscope,$ltiuri)=@_; my $public; if ((($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public')) @@ -6076,17 +6085,17 @@ } #don't show menus for public users if (!$public){ - $bodytag .= Apache::lonmenu::secondary_menu($httphost); + $bodytag .= Apache::lonmenu::secondary_menu($httphost,$ltiscope); $bodytag .= Apache::lonmenu::serverform(); $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); if ($env{'request.state'} eq 'construct') { $bodytag .= &Apache::lonmenu::innerregister($forcereg, - $args->{'bread_crumbs'},'','',$hostname); + $args->{'bread_crumbs'},'','',$hostname,$ltiscope,$ltiuri); } elsif ($forcereg) { $bodytag .= &Apache::lonmenu::innerregister($forcereg,undef, $args->{'group'}, $args->{'hide_buttons'}, - $hostname); + $hostname,$ltiscope,$ltiuri); } else { $bodytag .= &Apache::lonmenu::prepare_functions($env{'request.noversionuri'}, @@ -8688,11 +8697,17 @@ #&Apache::lonnet::logthis("start_page ".join(':',caller(0))); $env{'internal.start_page'}++; - my ($result, at advtools); + my ($result, at advtools,$ltiscope,$ltiuri); if (! exists($args->{'skip_phases'}{'head'}) ) { $result .= &xml_begin($args->{'frameset'}) . &headtag($title, $head_extra, $args); } + + if (($env{'request.course.id'}) && ($env{'request.lti.login'})) { + ($ltiscope,$ltiuri) = &LONCAPA::ltiutils::lti_provider_scope($env{'request.lti.uri'}, + $env{'course.'.$env{'request.course.id'}.'.domain'}, + $env{'course.'.$env{'request.course.id'}.'.num'}); + } if (! exists($args->{'skip_phases'}{'body'}) ) { if ($args->{'frameset'}) { @@ -8706,7 +8721,7 @@ $args->{'only_body'}, $args->{'domain'}, $args->{'force_register'}, $args->{'no_nav_bar'}, $args->{'bgcolor'}, $args, - \@advtools); + \@advtools,$ltiscope,$ltiuri); } } @@ -8739,12 +8754,6 @@ if (@advtools > 0) { &Apache::lonmenu::advtools_crumbs(@advtools); } - my $ltiscope; - if (($env{'request.course.id'}) && ($env{'request.lti.login'})) { - my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; - my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; - ($ltiscope) = &LONCAPA::ltiutils::lti_provider_scope($env{'request.lti.uri'},$cdom,$cnum); - } my $menulink; # if arg: bread_crumbs_nomenu is true pass 0 as $menulink item. if ((exists($args->{'bread_crumbs_nomenu'})) || Index: loncom/interface/lonmenu.pm diff -u loncom/interface/lonmenu.pm:1.489 loncom/interface/lonmenu.pm:1.490 --- loncom/interface/lonmenu.pm:1.489 Fri Apr 27 22:07:11 2018 +++ loncom/interface/lonmenu.pm Fri Apr 27 23:01:05 2018 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.489 2018/04/27 22:07:11 raeburn Exp $ +# $Id: lonmenu.pm,v 1.490 2018/04/27 23:01:05 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -384,7 +384,7 @@ } sub secondary_menu { - my ($httphost) = @_; + my ($httphost,$ltiscope) = @_; my $menu; my $crstype = &Apache::loncommon::course_type(); @@ -495,6 +495,8 @@ && !$author; next if $$menuitem[4] eq 'cca' && !$canmodifycoauthor; + next if $$menuitem[4] eq 'notltimapres' + && (($ltiscope eq 'resource') || ($ltiscope eq 'map')); my $title = $menuitem->[3]; if (defined($secondary_submenu{$title})) { @@ -532,13 +534,15 @@ } } elsif ($$menuitem[3] eq 'Roles' && $env{'request.course.id'}) { # special treatment for role selector - ($roleswitcher_js,$roleswitcher_form,my $switcher) = - &roles_selector( + unless ($env{'request.lti.login'}) { + ($roleswitcher_js,$roleswitcher_form,my $switcher) = + &roles_selector( $env{'course.' . $env{'request.course.id'} . '.domain'}, $env{'course.' . $env{'request.course.id'} . '.num'}, $httphost,$ltitarget - ); - $menu .= $switcher; + ); + $menu .= $switcher; + } } else { if ($$menuitem[3] eq 'Syllabus' && $env{'request.course.id'}) { my $url = $$menuitem[0]; @@ -700,7 +704,7 @@ } sub innerregister { - my ($forcereg,$bread_crumbs,$group,$pagebuttonshide,$hostname) = @_; + my ($forcereg,$bread_crumbs,$group,$pagebuttonshide,$hostname,$ltiscope,$ltiuri) = @_; my $const_space = ($env{'request.state'} eq 'construct'); my $is_const_dir = 0; @@ -710,18 +714,13 @@ undef(@inlineremote); - my ($mapurl,$resurl,$crstype,$navmap,$ltiscope,$ltiuri); + my ($mapurl,$resurl,$crstype,$navmap); if ($env{'request.course.id'}) { # #course_type: Course, Community, or Placement # $crstype = &Apache::loncommon::course_type(); - if (($env{'request.lti.login'}) && ($env{'request.lti.uri'})) { - my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; - my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; - ($ltiscope,$ltiuri) = &LONCAPA::ltiutils::lti_provider_scope($env{'request.lti.uri'},$cdom,$cnum); - } if ($env{'request.symb'}) { my $ignorenull; unless ($env{'request.noversionuri'} eq '/adm/navmaps') { Index: loncom/interface/mydesk.tab diff -u loncom/interface/mydesk.tab:1.178 loncom/interface/mydesk.tab:1.179 --- loncom/interface/mydesk.tab:1.178 Fri Apr 27 22:07:11 2018 +++ loncom/interface/mydesk.tab Fri Apr 27 23:01:05 2018 @@ -1,4 +1,4 @@ -# $Id: mydesk.tab,v 1.178 2018/04/27 22:07:11 raeburn Exp $ +# $Id: mydesk.tab,v 1.179 2018/04/27 23:01:05 raeburn Exp $ # primary menu links # Apache::lonmenu::primary_menu() generates a menu from these elements # prim: item belongs to primary menu @@ -78,8 +78,9 @@ # - mgr: Manage grades # - author: authors (au, ca, aa) # - cca: Grant/revoke role of co-author (author only) +# - notltimapres: course context and not LTI launch for specific map or resource # prim:link:icon:alt:text:condition -scnd:/adm/navmaps?postdata=[url]&postsymb=[symb]:::Contents: +scnd:/adm/navmaps?postdata=[url]&postsymb=[symb]:::Contents:notltimapres scnd:/adm/whatsnew:::What's New:whn scnd:/adm/quickgrades:::Grades:nvgr scnd:[javascript]chat_win();:::Chat:plc From raeburn at source.lon-capa.org Fri Apr 27 20:57:59 2018 From: raeburn at source.lon-capa.org (raeburn) Date: Sat, 28 Apr 2018 00:57:59 -0000 Subject: [LON-CAPA-cvs] cvs: loncom /auth lonroles.pm Message-ID: raeburn Sat Apr 28 00:57:59 2018 EDT Modified files: /loncom/auth lonroles.pm Log: - Bug 6754 LON-CAPA as LTI Provider - When loading role following LTI launch just display a "Continue" link. Index: loncom/auth/lonroles.pm diff -u loncom/auth/lonroles.pm:1.336 loncom/auth/lonroles.pm:1.337 --- loncom/auth/lonroles.pm:1.336 Tue Jan 9 15:44:43 2018 +++ loncom/auth/lonroles.pm Sat Apr 28 00:57:58 2018 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # User Roles Screen # -# $Id: lonroles.pm,v 1.336 2018/01/09 15:44:43 raeburn Exp $ +# $Id: lonroles.pm,v 1.337 2018/04/28 00:57:58 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -153,20 +153,26 @@ &Apache::loncommon::no_cache($r); $r->send_http_header; - # Breadcrumbs - my $brcrum = [{'href' => $url, - 'text' => 'Switching Role'},]; - my $start_page = &Apache::loncommon::start_page('Switching Role',undef, - {'redirect' => [1,$url], - 'bread_crumbs' => $brcrum,}); - my $end_page = &Apache::loncommon::end_page(); + my $start_page; + if ($env{'request.lti.login'}) { + $start_page = &Apache::loncommon::start_page(undef,undef, + {'redirect' => [0,$url],}).$msg; + } else { + # Breadcrumbs + my $brcrum = [{'href' => $url, + 'text' => 'Switching Role'},]; + $start_page = &Apache::loncommon::start_page('Switching Role',undef, + {'redirect' => [1,$url], + 'bread_crumbs' => $brcrum,}). + "\n

$msg

"; + } + my $end_page = &Apache::loncommon::end_page(); # Note to style police: # This must only replace the spaces, nothing else, or it bombs elsewhere. $url=~s/ /\%20/g; $r->print(<$msg

$end_page ENDREDIR return; @@ -738,9 +744,12 @@ $dest .= (($dest =~/\?/)? '&':'?').'symb='.$esc_symb; } } - &redirect_user($r, &mt('Entering [_1]', - $env{'course.'.$cdom.'_'.$cnum.'.description'}), - $dest, $msg); + my $title; + unless ($env{'request.lti.login'}) { + $title = &mt('Entering [_1]', + $env{'course.'.$cdom.'_'.$cnum.'.description'}); + } + &redirect_user($r,$title,$dest,$msg); return OK; } if (&Apache::lonnet::allowed('whn', @@ -778,11 +787,16 @@ } elsif ($access eq 'B') { $furl = '/adm/navmaps?showOnlyHomework=1'; } - $msg = &mt('Entering [_1] ...', - $env{'course.'.$cdom.'_'.$cnum.'.description'}); - &redirect_user($r, &mt('Entering [_1]', - $env{'course.'.$cdom.'_'.$cnum.'.description'}), - $furl, $msg); + my $title; + if ($env{'request.lti.login'}) { + undef($msg); + } else { + $title = &mt('Entering [_1]', + $env{'course.'.$cdom.'_'.$cnum.'.description'}); + $msg = &mt('Entering [_1] ...', + $env{'course.'.$cdom.'_'.$cnum.'.description'}); + } + &redirect_user($r,$title,$furl,$msg); } return OK; } From raeburn at source.lon-capa.org Sat Apr 28 20:31:26 2018 From: raeburn at source.lon-capa.org (raeburn) Date: Sun, 29 Apr 2018 00:31:26 -0000 Subject: [LON-CAPA-cvs] cvs: loncom(version_2_11_X) /interface coursecatalog.pm Message-ID: raeburn Sun Apr 29 00:31:26 2018 EDT Modified files: (Branch: version_2_11_X) /loncom/interface coursecatalog.pm Log: - For 2.11 Backport 1.95 Index: loncom/interface/coursecatalog.pm diff -u loncom/interface/coursecatalog.pm:1.88.2.1 loncom/interface/coursecatalog.pm:1.88.2.2 --- loncom/interface/coursecatalog.pm:1.88.2.1 Sun Oct 23 21:21:56 2016 +++ loncom/interface/coursecatalog.pm Sun Apr 29 00:31:25 2018 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler for displaying the course catalog interface # -# $Id: coursecatalog.pm,v 1.88.2.1 2016/10/23 21:21:56 raeburn Exp $ +# $Id: coursecatalog.pm,v 1.88.2.2 2018/04/29 00:31:25 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1607,27 +1607,33 @@ sub get_valid_classes { my ($seclist,$xlist_items,$crscode,$owners,$cdom,$cnum) = @_; my $response; - my %validations; + my (@sections, at xlists,%possclasses,%okclasses,%validations); @{$validations{'sections'}} = (); @{$validations{'xlists'}} = (); my $totalitems = 0; if ($seclist) { - foreach my $sec (split(/, /,$seclist)) { + @sections = split(/,\s+/,$seclist); + map { $possclasses{$crscode.$_} = 1; } @sections; + } + if ($xlist_items) { + @xlists = split(/,\s+/,$xlist_items); + map { $possclasses{$_} = 1; } @xlists; + } + my %okclasses = &Apache::lonnet::auto_validate_instclasses($cdom,$cnum,$owners, + \%possclasses); + if (keys(%okclasses)) { + foreach my $sec (@sections) { my $class = $crscode.$sec; - if (&Apache::lonnet::auto_validate_class_sec($cdom,$cnum,$owners, - $class) eq 'ok') { + if ($okclasses{$crscode.$sec}) { if (!grep(/^\Q$sec$\E/,@{$validations{'sections'}})) { push(@{$validations{'sections'}},$sec); $totalitems ++; } } } - } - if ($xlist_items) { - foreach my $item (split(/, /,$xlist_items)) { - if (&Apache::lonnet::auto_validate_class_sec($cdom,$cnum,$owners, - $item) eq 'ok') { - if (!grep(/^\Q$item$\E/,@{$validations{'xlists'}})) { + foreach my $item (@xlists) { + if ($okclasses{$item}) { + if (!grep(/^\Q$item\E$/,@{$validations{'xlists'}})) { push(@{$validations{'xlists'}},$item); $totalitems ++; } From raeburn at source.lon-capa.org Sat Apr 28 20:40:50 2018 From: raeburn at source.lon-capa.org (raeburn) Date: Sun, 29 Apr 2018 00:40:50 -0000 Subject: [LON-CAPA-cvs] cvs: loncom(version_2_11_X) / lond Message-ID: raeburn Sun Apr 29 00:40:50 2018 EDT Modified files: (Branch: version_2_11_X) /loncom lond Log: - For 2.11 Backport 1.542 Index: loncom/lond diff -u loncom/lond:1.489.2.28 loncom/lond:1.489.2.29 --- loncom/lond:1.489.2.28 Tue Jun 6 20:04:14 2017 +++ loncom/lond Sun Apr 29 00:40:49 2018 @@ -2,7 +2,7 @@ # The LearningOnline Network # lond "LON Daemon" Server (port "LOND" 5663) # -# $Id: lond,v 1.489.2.28 2017/06/06 20:04:14 raeburn Exp $ +# $Id: lond,v 1.489.2.29 2018/04/29 00:40:49 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -64,7 +64,7 @@ my $status=''; my $lastlog=''; -my $VERSION='$Revision: 1.489.2.28 $'; #' stupid emacs +my $VERSION='$Revision: 1.489.2.29 $'; #' stupid emacs my $remoteVERSION; my $currenthostid="default"; my $currentdomainid; @@ -5388,9 +5388,10 @@ # Formal Parameters: # $cmd - The command request that got us dispatched. # $tail - The tail of the command. In this case this is a colon separated -# set of words that will be split into: +# set of values that will be split into: # $inst_class - Institutional code for the specific class section -# $courseowner - The escaped username:domain of the course owner +# $ownerlist - An escaped comma-separated list of username:domain +# of the course owner, and co-owner(s). # $cdom - The domain of the course from the institution's # point of view. # $client - The socket open on the client. @@ -5415,6 +5416,56 @@ ®ister_handler("autovalidateclass_sec", \&validate_class_access_handler, 0, 1, 0); # +# Validate course owner or co-owners(s) access to enrollment data for all sections +# and crosslistings for a particular course. +# +# +# Formal Parameters: +# $cmd - The command request that got us dispatched. +# $tail - The tail of the command. In this case this is a colon separated +# set of values that will be split into: +# $ownerlist - An escaped comma-separated list of username:domain +# of the course owner, and co-owner(s). +# $cdom - The domain of the course from the institution's +# point of view. +# $classes - Frozen hash of institutional course sections and +# crosslistings. +# $client - The socket open on the client. +# Returns: +# 1 - continue processing. +# + +sub validate_classes_handler { + my ($cmd, $tail, $client) = @_; + my $userinput = "$cmd:$tail"; + my ($ownerlist,$cdom,$classes) = split(/:/, $tail); + my $classesref = &Apache::lonnet::thaw_unescape($classes); + my $owners = &unescape($ownerlist); + my $result; + eval { + local($SIG{__DIE__})='DEFAULT'; + my %validations; + my $response = &localenroll::check_instclasses($owners,$cdom,$classesref, + \%validations); + if ($response eq 'ok') { + foreach my $key (keys(%validations)) { + $result .= &escape($key).'='.&Apache::lonnet::freeze_escape($validations{$key}).'&'; + } + $result =~ s/\&$//; + } else { + $result = 'error'; + } + }; + if (!$@) { + &Reply($client, \$result, $userinput); + } else { + &Failure($client,"unknown_cmd\n",$userinput); + } + return 1; +} +®ister_handler("autovalidateinstclasses", \&validate_classes_handler, 0, 1, 0); + +# # Create a password for a new LON-CAPA user added by auto-enrollment. # Only used for case where authentication method for new user is localauth # From raeburn at source.lon-capa.org Sat Apr 28 20:53:24 2018 From: raeburn at source.lon-capa.org (raeburn) Date: Sun, 29 Apr 2018 00:53:24 -0000 Subject: [LON-CAPA-cvs] cvs: loncom(version_2_11_X) /lonnet/perl lonnet.pm Message-ID: raeburn Sun Apr 29 00:53:24 2018 EDT Modified files: (Branch: version_2_11_X) /loncom/lonnet/perl lonnet.pm Log: - For 2.11 - Backport 1.1367 Index: loncom/lonnet/perl/lonnet.pm diff -u loncom/lonnet/perl/lonnet.pm:1.1172.2.93 loncom/lonnet/perl/lonnet.pm:1.1172.2.94 --- loncom/lonnet/perl/lonnet.pm:1.1172.2.93 Sat May 13 13:58:49 2017 +++ loncom/lonnet/perl/lonnet.pm Sun Apr 29 00:53:23 2018 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.1172.2.93 2017/05/13 13:58:49 raeburn Exp $ +# $Id: lonnet.pm,v 1.1172.2.94 2018/04/29 00:53:23 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -8534,6 +8534,33 @@ return $response; } +sub auto_validate_instclasses { + my ($cdom,$cnum,$owners,$classesref) = @_; + my ($homeserver,%validations); + $homeserver = &homeserver($cnum,$cdom); + unless ($homeserver eq 'no_host') { + my $ownerlist; + if (ref($owners) eq 'ARRAY') { + $ownerlist = join(',',@{$owners}); + } else { + $ownerlist = $owners; + } + if (ref($classesref) eq 'HASH') { + my $classes = &freeze_escape($classesref); + my $response=&reply('autovalidateinstclasses:'.&escape($ownerlist). + ':'.$cdom.':'.$classes,$homeserver); + unless ($response =~ /(con_lost|error|no_such_host|refused)/) { + my @items = split(/&/,$response); + foreach my $item (@items) { + my ($key,$value) = split('=',$item); + $validations{&unescape($key)} = &thaw_unescape($value); + } + } + } + } + return %validations; +} + sub auto_crsreq_update { my ($cdom,$cnum,$crstype,$action,$ownername,$ownerdomain,$fullname,$title, $code,$accessstart,$accessend,$inbound) = @_; From raeburn at source.lon-capa.org Sun Apr 29 11:05:26 2018 From: raeburn at source.lon-capa.org (raeburn) Date: Sun, 29 Apr 2018 15:05:26 -0000 Subject: [LON-CAPA-cvs] cvs: loncom(version_2_11_X) /homework grades.pm Message-ID: raeburn Sun Apr 29 15:05:26 2018 EDT Modified files: (Branch: version_2_11_X) /loncom/homework grades.pm Log: - For 2.11 Backport 1.748 Index: loncom/homework/grades.pm diff -u loncom/homework/grades.pm:1.596.2.12.2.41 loncom/homework/grades.pm:1.596.2.12.2.42 --- loncom/homework/grades.pm:1.596.2.12.2.41 Fri Sep 15 13:42:29 2017 +++ loncom/homework/grades.pm Sun Apr 29 15:05:25 2018 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Grading handler # -# $Id: grades.pm,v 1.596.2.12.2.41 2017/09/15 13:42:29 raeburn Exp $ +# $Id: grades.pm,v 1.596.2.12.2.42 2018/04/29 15:05:25 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -4177,6 +4177,7 @@ $ctr++; } my (undef,undef,$url) = &Apache::lonnet::decode_symb($symb); + my $totcolspan = 0; foreach my $partid (@partid) { $header .= ''.&mt('Old Score').''. ''.&mt('New Score').''; @@ -4193,6 +4194,7 @@ ''.&mt('New').' '.$display.''; $columns{$partid}+=2; } + $totcolspan += $columns{$partid}; } foreach my $partid (@partid) { my $display_part=&get_display_part($partid,$symb); @@ -4208,20 +4210,20 @@ my @noupdate; my ($updateCtr,$noupdateCtr) = (1,1); for ($i=0; $i<$env{'form.total'}; $i++) { - my $line; my $user = $env{'form.ctr'.$i}; my ($uname,$udom)=split(/:/,$user); my %newrecord; my $updateflag = 0; - $line .= ''.&nameUserString(undef,$$fullname{$user},$uname,$udom).''; - my $usec=$classlist->{"$uname:$udom"}[5]; - if (!&canmodify($usec)) { - my $numcols=scalar(@partid)*4+2; - push(@noupdate, - $line."". - &mt('Not allowed to modify student').""); - next; - } + my $usec=$classlist->{"$uname:$udom"}[5]; + my $canmodify = &canmodify($usec); + my $line = ''. + &nameUserString(undef,$$fullname{$user},$uname,$udom).''; + if (!$canmodify) { + push(@noupdate, + $line."". + &mt('Not allowed to modify student').""); + next; + } my %aggregate = (); my $aggregateflag = 0; $user=~s/:/_/; # colon doen't work in javascript for names @@ -4336,8 +4338,7 @@ } } if (@noupdate) { -# my $numcols=(scalar(@partid)*(scalar(@parts)-1)*2)+3; - my $numcols=scalar(@partid)*4+2; + my $numcols=$totcolspan+2; $result .= &Apache::loncommon::start_data_table_row('LC_empty_row'). ''. &mt('No Changes Occurred For the Students Below'). From raeburn at source.lon-capa.org Sun Apr 29 11:52:08 2018 From: raeburn at source.lon-capa.org (raeburn) Date: Sun, 29 Apr 2018 15:52:08 -0000 Subject: [LON-CAPA-cvs] cvs: loncom(version_2_11_X) /interface lonnavmaps.pm Message-ID: raeburn Sun Apr 29 15:52:08 2018 EDT Modified files: (Branch: version_2_11_X) /loncom/interface lonnavmaps.pm Log: - For 2.11 Backport 1.538 Index: loncom/interface/lonnavmaps.pm diff -u loncom/interface/lonnavmaps.pm:1.509.2.5 loncom/interface/lonnavmaps.pm:1.509.2.6 --- loncom/interface/lonnavmaps.pm:1.509.2.5 Tue Nov 29 15:13:19 2016 +++ loncom/interface/lonnavmaps.pm Sun Apr 29 15:52:08 2018 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Navigate Maps Handler # -# $Id: lonnavmaps.pm,v 1.509.2.5 2016/11/29 15:13:19 raeburn Exp $ +# $Id: lonnavmaps.pm,v 1.509.2.6 2018/04/29 15:52:08 raeburn Exp $ # # Copyright Michigan State University Board of Trustees @@ -643,6 +643,9 @@ } elsif ($slot_status == $res->RESERVABLE) { $slotmsg = &mt('Reservable, reservations close [_1]', timeToHumanString($slot_time,'end')); + } elsif ($slot_status == $res->NEEDS_CHECKIN) { + $slotmsg = &mt('Reserved, check-in needed - ends [_1]', + timeToHumanString($slot_time,'end')); } elsif ($slot_status == $res->RESERVABLE_LATER) { $slotmsg = &mt('Reservable, reservations open [_1]', timeToHumanString($slot_time,'start')); @@ -5542,7 +5545,7 @@ ($checkedin,$checkedinslot) = $self->checkedin(); unless ((grep(/^\Q$checkedin\E/, at proctors)) && ($checkedinslot eq $slot_name)) { - return (NEEDS_CHECKIN,undef,$slot_name); + return (NEEDS_CHECKIN,$end,$slot_name); } } return (RESERVED,$end,$slot_name); From raeburn at source.lon-capa.org Sun Apr 29 12:21:08 2018 From: raeburn at source.lon-capa.org (raeburn) Date: Sun, 29 Apr 2018 16:21:08 -0000 Subject: [LON-CAPA-cvs] cvs: loncom(version_2_11_X) /interface lonprintout.pm Message-ID: raeburn Sun Apr 29 16:21:08 2018 EDT Modified files: (Branch: version_2_11_X) /loncom/interface lonprintout.pm Log: - For 2.11 Backport 1.659 Index: loncom/interface/lonprintout.pm diff -u loncom/interface/lonprintout.pm:1.627.2.21 loncom/interface/lonprintout.pm:1.627.2.22 --- loncom/interface/lonprintout.pm:1.627.2.21 Tue May 30 01:30:04 2017 +++ loncom/interface/lonprintout.pm Sun Apr 29 16:21:07 2018 @@ -1,7 +1,7 @@ # The LearningOnline Network # Printout # -# $Id: lonprintout.pm,v 1.627.2.21 2017/05/30 01:30:04 raeburn Exp $ +# $Id: lonprintout.pm,v 1.627.2.22 2018/04/29 16:21:07 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -890,7 +890,7 @@ my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'}; $file =~ s{(.*)/res/}{$londocroot/res/}; - open(FILE,">>$Apache::lonnet::perlvar{'lonPrtDir'}/$env{'user.name'}_$env{'user.domain'}_printout.dat"); + open(FILE,">>","$Apache::lonnet::perlvar{'lonPrtDir'}/$env{'user.name'}_$env{'user.domain'}_printout.dat"); print FILE ("$file\n"); close (FILE); From raeburn at source.lon-capa.org Sun Apr 29 12:28:25 2018 From: raeburn at source.lon-capa.org (raeburn) Date: Sun, 29 Apr 2018 16:28:25 -0000 Subject: [LON-CAPA-cvs] cvs: loncom(version_2_11_X) /interface lonhtmlcommon.pm Message-ID: raeburn Sun Apr 29 16:28:25 2018 EDT Modified files: (Branch: version_2_11_X) /loncom/interface lonhtmlcommon.pm Log: - For 2.11 Backport 1.387 Index: loncom/interface/lonhtmlcommon.pm diff -u loncom/interface/lonhtmlcommon.pm:1.358.2.11 loncom/interface/lonhtmlcommon.pm:1.358.2.12 --- loncom/interface/lonhtmlcommon.pm:1.358.2.11 Wed Mar 15 15:17:43 2017 +++ loncom/interface/lonhtmlcommon.pm Sun Apr 29 16:28:25 2018 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common html routines # -# $Id: lonhtmlcommon.pm,v 1.358.2.11 2017/03/15 15:17:43 raeburn Exp $ +# $Id: lonhtmlcommon.pm,v 1.358.2.12 2018/04/29 16:28:25 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -92,7 +92,7 @@ sub entity_encode { my ($text)=@_; - return &HTML::Entities::encode($text, '<>&"'); + return &HTML::Entities::encode($text, '\'<>&"'); } sub direct_parm_link { From raeburn at source.lon-capa.org Sun Apr 29 13:29:24 2018 From: raeburn at source.lon-capa.org (raeburn) Date: Sun, 29 Apr 2018 17:29:24 -0000 Subject: [LON-CAPA-cvs] cvs: loncom(version_2_11_X) /interface londocs.pm Message-ID: raeburn Sun Apr 29 17:29:24 2018 EDT Modified files: (Branch: version_2_11_X) /loncom/interface londocs.pm Log: - For 2.11 Backport 1.646, 1.647 Index: loncom/interface/londocs.pm diff -u loncom/interface/londocs.pm:1.484.2.76 loncom/interface/londocs.pm:1.484.2.77 --- loncom/interface/londocs.pm:1.484.2.76 Sat Jan 27 03:46:52 2018 +++ loncom/interface/londocs.pm Sun Apr 29 17:29:23 2018 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: londocs.pm,v 1.484.2.76 2018/01/27 03:46:52 raeburn Exp $ +# $Id: londocs.pm,v 1.484.2.77 2018/04/29 17:29:23 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -2463,7 +2463,8 @@ } } } - for (my $i=0; $i<@LONCAPA::map::order; $i++) { + my $total = scalar(@LONCAPA::map::order) - 1; + for (my $i=$total; $i>=0; $i--) { my $idx = $LONCAPA::map::order[$i]; if (defined($LONCAPA::map::resources[$idx])) { my $changed; @@ -2473,7 +2474,7 @@ splice(@LONCAPA::map::order,$i,1); if (ref($currparam{$idx}) eq 'ARRAY') { foreach my $name (@{$currparam{$idx}}) { - &LONCAPA::map::delparameter($idx,'parameter_'.$name); + &LONCAPA::map::delparameter($idx,$name); } } next; @@ -2515,7 +2516,7 @@ foreach my $idx (keys(%remparam)) { if (ref($remparam{$idx}) eq 'ARRAY') { foreach my $name (@{$remparam{$idx}}) { - &LONCAPA::map::delparameter($idx,'parameter_'.$name); + &LONCAPA::map::delparameter($idx,$name); } } }