--- loncom/interface/domainprefs.pm 2018/03/23 01:01:20 1.325 +++ loncom/interface/domainprefs.pm 2018/05/08 01:48:18 1.326 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set domain-wide configuration settings # -# $Id: domainprefs.pm,v 1.325 2018/03/23 01:01:20 raeburn Exp $ +# $Id: domainprefs.pm,v 1.326 2018/05/08 01:48:18 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -2909,6 +2909,35 @@ function toggleLTI(form,setting,item) { } } } + } else if (setting == 'lcmenu') { + var menus = new Array('lti_topmenu_'+item,'lti_inlinemenu_'+item); + var divid = 'lti_menufield_'+item; + var setvis = ''; + for (var i=0; i 'Other', 'passback' => 'Can return grades to Consumer:', 'roster' => 'Can retrieve roster from Consumer:', + 'topmenu' => 'Display LON-CAPA page header', + 'inlinemenu'=> 'Display LON-CAPA inline menu', ); return %lt; } @@ -4709,6 +4740,7 @@ sub lti_options { $checked{'crssec'} = {}; $checked{'crssecsrc'} = {}; $checked{'lcauth'} = {}; + $checked{'menuitem'} = {}; if ($num eq 'add') { $checked{'lcauth'}{'lti'} = ' checked="checked"'; } @@ -4719,7 +4751,9 @@ sub lti_options { my $lcauthparm; my $lcauthparmstyle = 'display:none'; my $lcauthparmtext; + my $menusty; my $numinrow = 4; + my %menutitles = <imenu_titles(); if (ref($current) eq 'HASH') { if (($current->{'mapuser'} ne '') && ($current->{'mapuser'} ne 'lis_person_sourcedid')) { @@ -4749,7 +4783,7 @@ sub lti_options { } if ($current->{'makecrs'}) { $checked{'makecrs'}{'Y'} = ' checked="checked"'; - } + } if (ref($current->{'makeuser'}) eq 'ARRAY') { foreach my $role (@{$current->{'makeuser'}}) { $checked{'makeuser'}{$role} = ' checked="checked"'; @@ -4788,10 +4822,35 @@ sub lti_options { } else { $checked{'crssec'}{'N'} = ' checked="checked"'; } + if ($current->{'topmenu'}) { + $checked{'topmenu'}{'Y'} = ' checked="checked"'; + } else { + $checked{'topmenu'}{'N'} = ' checked="checked"'; + } + if ($current->{'inlinemenu'}) { + $checked{'inlinemenu'}{'Y'} = ' checked="checked"'; + } else { + $checked{'inlinemenu'}{'N'} = ' checked="checked"'; + } + if (($current->{'topmenu'}) || ($current->{'inlinemenu'})) { + $menusty = 'inline-block'; + if (ref($current->{'lcmenu'}) eq 'ARRAY') { + foreach my $item (@{$current->{'lcmenu'}}) { + if (exists($menutitles{$item})) { + $checked{'menuitem'}{$item} = ' checked="checked"'; + } + } + } + } else { + $menusty = 'none'; + } } else { $checked{'makecrs'}{'N'} = ' checked="checked"'; $checked{'crssec'}{'N'} = ' checked="checked"'; -#FIXME + $checked{'topmenu'}{'N'} = ' checked="checked"'; + $checked{'inlinemenu'}{'Y'} = ' checked="checked"'; + $checked{'menuitem'}{'grades'} = ' checked="checked"'; + $menusty = 'inline-block'; } my @coursetypes = ('official','unofficial','community','textbook','placement','lti'); my %coursetypetitles = &Apache::lonlocal::texthash ( @@ -4818,6 +4877,7 @@ sub lti_options { my $onclicksec = ' onclick="toggleLTI(this.form,'."'sec','$num'".');"'; my $onclicksecsrc = ' onclick="toggleLTI(this.form,'."'secsrc','$num'".')"'; my $onclicklcauth = ' onclick="toggleLTI(this.form,'."'lcauth','$num'".')"'; + my $onclickmenu = ' onclick="toggleLTI(this.form,'."'lcmenu','$num'".');"'; my $output = '
'.&mt('Mapping users').''. '
'.&mt('LON-CAPA username').': '; foreach my $option ('sourcedid','email','other') { @@ -4944,6 +5004,27 @@ sub lti_options { '
'; } + $output .= '
'. + '
'.&mt('Course defaults (Course Coordinator can override)').''. + '
'.$lt{'topmenu'}.': '. + ''.(' 'x2). + '
'. + '
'. + '
'.$lt{'inlinemenu'}.': '. + ''.(' 'x2). + '
'; + $output .='
'. + '
'. + ''.&mt('Menu items').': '; + foreach my $type ('fullname','coursetitle','role','logout','grades') { + $output .= ''. + (' 'x2); + } $output .= '
'; # '
'.&mt('Assigning author roles').''; # @@ -4952,6 +5033,16 @@ sub lti_options { return $output; } +sub ltimenu_titles { + return &Apache::lonlocal::texthash( + fullname => 'Full name', + coursetitle => 'Course title', + role => 'Role', + logout => 'Logout', + grades => 'Grades', + ); +} + sub print_coursedefaults { my ($position,$dom,$settings,$rowtotal) = @_; my ($css_class,$datatable,%checkedon,%checkedoff,%defaultchecked,@toggles); @@ -11457,8 +11548,8 @@ sub modify_lti { map { $posslticrs{$_} = 1; } @lticourseroles; map { $posscrstype{$_} = 1; } @coursetypes; -#FIXME - + my %menutitles = <imenu_titles(); + my (@items,%deletions,%itemids); if ($env{'form.lti_add'}) { my $consumer = $env{'form.lti_consumer_add'}; @@ -11610,18 +11701,31 @@ sub modify_lti { } } } - foreach my $field ('passback','roster') { + foreach my $field ('passback','roster','topmenu','inlinemenu') { if ($env{'form.lti_'.$field.'_'.$idx}) { $confhash{$itemid}{$field} = 1; } } + + if ($env{'form.lti_topmenu_'.$idx} || $env{'form.lti_inlinemenu_'.$idx}) { + $confhash{$itemid}{lcmenu} = []; + my @possmenu = &Apache::loncommon::get_env_multiple('form.lti_menuitem_'.$idx); + foreach my $field (@possmenu) { + if (exists($menutitles{$field})) { + if ($field eq 'grades') { + next unless ($env{'form.lti_inlinemenu_'.$idx}); + } + push(@{$confhash{$itemid}{lcmenu}},$field); + } + } + } unless (($idx eq 'add') || ($changes{$itemid})) { - foreach my $field ('mapuser','mapcrs','makecrs','section','passback','roster','lcauth','lcauthparm') { + foreach my $field ('mapuser','mapcrs','makecrs','section','passback','roster','lcauth','lcauthparm','topmenu','inlinemenu') { if ($domconfig{$action}{$itemid}{$field} ne $confhash{$itemid}{$field}) { $changes{$itemid} = 1; } } - foreach my $field ('makeuser','mapcrstype','selfenroll','instdata') { + foreach my $field ('makeuser','mapcrstype','selfenroll','instdata','lcmenu') { unless ($changes{$itemid}) { if (ref($domconfig{$action}{$itemid}{$field}) eq 'ARRAY') { if (ref($confhash{$itemid}{$field}) eq 'ARRAY') { @@ -11833,8 +11937,8 @@ sub modify_lti { } else { $resulttext .= '
  • '.&mt('No section assignment').'
  • '; } - foreach my $item ('passback','roster') { - $resulttext .= '
  • '.$lt{$item}.' '; + foreach my $item ('passback','roster','topmenu','inlinemenu') { + $resulttext .= '
  • '.$lt{$item}.': '; if ($confhash{$itemid}{$item}) { $resulttext .= &mt('Yes'); } else { @@ -11842,6 +11946,14 @@ sub modify_lti { } $resulttext .= '
  • '; } + if (ref($confhash{$itemid}{'lcmenu'}) eq 'ARRAY') { + if (@{$confhash{$itemid}{'lcmenu'}} > 0) { + $resulttext .= '
  • '.&mt('Menu items:').' '. + join(', ', map { $menutitles{$_}; } (@{$confhash{$itemid}{'lcmenu'}})).'
  • '; + } else { + $resulttext .= '
  • '.&mt('No menu items displayed in header or online menu').'
  • '; + } + } $resulttext .= ''; } }