--- loncom/interface/domainprefs.pm 2018/03/23 01:01:20 1.325 +++ loncom/interface/domainprefs.pm 2018/07/06 13:43:14 1.333 @@ -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.333 2018/07/06 13:43:14 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1436,7 +1436,7 @@ sub print_login { } else { $datatable .= ''; } - $datatable .= ''; + $datatable .= ''; } $datatable .= ''; } @@ -1596,7 +1596,7 @@ sub display_color_options { my $datatable = ''. ''.$choices->{'font'}.''; if (!$is_custom->{'font'}) { - $datatable .= ''.&mt('Default in use:').' '.$defaults->{'font'}.''; + $datatable .= ''.&mt('Default in use:').' '.$defaults->{'font'}.''; } else { $datatable .= ' '; } @@ -1605,12 +1605,12 @@ sub display_color_options { $datatable .= ''. ' '. - ' '; + ' '; unless ($role eq 'login') { $datatable .= ''. ''.$choices->{'fontmenu'}.''; if (!$is_custom->{'fontmenu'}) { - $datatable .= ''.&mt('Default in use:').' '.$defaults->{'fontmenu'}.''; + $datatable .= ''.&mt('Default in use:').' '.$defaults->{'fontmenu'}.''; } else { $datatable .= ' '; } @@ -1620,7 +1620,7 @@ sub display_color_options { ' '. - ' '; + ' '; } my $switchserver = &check_switchserver($dom,$confname); foreach my $img (@{$images}) { @@ -1738,7 +1738,7 @@ sub display_color_options { my $bgs_def; foreach my $item (@{$bgs}) { if (!$is_custom->{$item}) { - $bgs_def .= ''.$choices->{$item}.'    
'.$defaults->{'bgs'}{$item}.''; + $bgs_def .= ''.$choices->{$item}.'    
'.$defaults->{'bgs'}{$item}.''; } } if ($bgs_def) { @@ -1766,7 +1766,7 @@ sub display_color_options { my $links_def; foreach my $item (@{$links}) { if (!$is_custom->{$item}) { - $links_def .= ''.$choices->{$item}.'
'.$defaults->{'links'}{$item}.''; + $links_def .= ''.$choices->{$item}.'
'.$defaults->{'links'}{$item}.''; } } if ($links_def) { @@ -1852,17 +1852,15 @@ sub image_changes { my ($is_custom,$alt_text,$img_import,$showfile,$fullsize,$role,$img,$imgfile,$logincolors) = @_; my $output; if ($img eq 'login') { - # suppress image for Log-in header + $output = ''.$logincolors; # suppress image for Log-in header } elsif (!$is_custom) { if ($img ne 'domlogo') { - $output .= &mt('Default image:').'
'; + $output = &mt('Default image:').'
'; } else { - $output .= &mt('Default in use:').'
'; + $output = &mt('Default in use:').'
'; } } - if ($img eq 'login') { # suppress image for Log-in header - $output .= ''.$logincolors; - } else { + if ($img ne 'login') { if ($img_import) { $output .= ''; } @@ -2909,6 +2907,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'.&mt('Failsafe for no drops when institutional data missing').''. ''. ''; + ' value="'.$failsafe.'" size="4" />'; $$rowtotal += 4; return $datatable; } @@ -4693,6 +4720,8 @@ sub lti_names { 'other' => '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 +4738,7 @@ sub lti_options { $checked{'crssec'} = {}; $checked{'crssecsrc'} = {}; $checked{'lcauth'} = {}; + $checked{'menuitem'} = {}; if ($num eq 'add') { $checked{'lcauth'}{'lti'} = ' checked="checked"'; } @@ -4719,7 +4749,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 +4781,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 +4820,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 +4875,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 +5002,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 +5031,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); @@ -7541,7 +7630,7 @@ sub print_defaults { 1 => 'Yes, allow login then update passwd file using default cost (if higher)', 2 => 'Yes, disallow login if stored cost is less than domain default', ); - $datatable .= ''; + $datatable .= '
'; foreach my $option (@options) { my $checked = ' '; my $onclick; @@ -7871,7 +7960,7 @@ sub print_coursecategories { ''.$lt{$type}.' '; } - $datatable .= ''; + $datatable .= ''; $itemcount ++; } $$rowtotal += $itemcount; @@ -7957,7 +8046,7 @@ sub print_coursecategories { $can_catcomm_dom.' value="dom" />'.$level{'dom'}.' '. ''. - ''. + ''. ''. '' + $datatable .= '' .&initialize_categories($itemcount); } $$rowtotal += $itemcount; @@ -8390,20 +8479,23 @@ sub initialize_categories { communities => 'Communities', placement => 'Placement Tests', ); - my $select0 = ' selected="selected"'; - my $select1 = ''; + my %selnum = ( + instcode => '0', + communities => '1', + placement => '2', + ); + my %selected; foreach my $default ('instcode','communities','placement') { $css_class = $itemcount%2?' class="LC_odd_row"':''; - $chgstr = ' onchange="javascript:reorderCats(this.form,'."'',$default"."_pos','0'".');"'; - if (($default eq 'communities') || ($default eq 'placement')) { - $select1 = $select0; - $select0 = ''; - } + $chgstr = ' onchange="javascript:reorderCats(this.form,'."'','$default"."_pos','0'".');"'; + map { $selected{$selnum{$_}} = '' } keys(%selnum); + $selected{$selnum{$default}} = ' selected="selected"'; $datatable .= ''; + .'' + .' ' + .&mt('Add category').''; return $datatable; } @@ -8475,7 +8569,7 @@ sub build_category_rows { pop(@{$path}); } } else { - $text .= &mt('Add subcategory:').' '.&mt('Add subcategory:').''; + $text .= ''; } } } @@ -11457,8 +11551,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 +11704,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 +11940,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 +11949,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 .= ''; } }
    '.$title{'togglecatsplace'}.'
    '.$hdritem->{'header'}->[1]->{'col2'}.'
    ' - .' ' + .' ' .$default_names{$default} .'' .''.&mt('Name:') - .' 
    '.&mt('Name:') + .' ' + .'
    '.&mt('Add subcategory:').'