--- loncom/interface/domainprefs.pm 2014/05/05 21:28:10 1.240 +++ loncom/interface/domainprefs.pm 2014/10/06 00:48:39 1.254 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set domain-wide configuration settings # -# $Id: domainprefs.pm,v 1.240 2014/05/05 21:28:10 raeburn Exp $ +# $Id: domainprefs.pm,v 1.254 2014/10/06 00:48:39 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -369,6 +369,8 @@ sub handler { col2 => 'Value'}, {col1 => 'Available textbooks', col2 => ''}, + {col1 => 'Available templates', + col2 => ''}, {col1 => 'Validation (not official courses)', col2 => 'Value'},], print => \&print_quotas, @@ -760,8 +762,9 @@ sub print_config_box { $output .= &print_login('help',$dom,$confname,$phase,$settings,\$rowtotal); } } elsif ($action eq 'requestcourses') { - $output .= &print_requestmail($dom,$action,$settings,\$rowtotal). - &print_studentcode($settings,\$rowtotal).' + $output .= &print_requestmail($dom,$action,$settings,\$rowtotal); + $rowtotal ++; + $output .= &print_studentcode($settings,\$rowtotal).' @@ -771,7 +774,18 @@ sub print_config_box { '.&mt($item->{'header'}->[2]->{'col1'}).' '.&mt($item->{'header'}->[2]->{'col2'}).' '. - &print_textbookcourses($dom,$settings,\$rowtotal).' + &textbookcourses_javascript($settings). + &print_textbookcourses($dom,'textbooks',$settings,\$rowtotal).' + + + + + + + + + '. + &print_textbookcourses($dom,'templates',$settings,\$rowtotal).'
'.&mt($item->{'header'}->[3]->{'col1'}).''.&mt($item->{'header'}->[3]->{'col2'}).'
@@ -779,12 +793,13 @@ sub print_config_box { - - + + '. &print_validation_rows('requestcourses',$dom,$settings,\$rowtotal); } elsif ($action eq 'requestauthor') { $output .= &print_requestmail($dom,$action,$settings,\$rowtotal); + $rowtotal ++; } elsif ($action eq 'rolecolors') { $output .= &print_rolecolors($phase,'coordinator',$dom,$confname,$settings,\$rowtotal).'
'.&mt($item->{'header'}->[3]->{'col1'}).''.&mt($item->{'header'}->[3]->{'col2'}).''.&mt($item->{'header'}->[4]->{'col1'}).''.&mt($item->{'header'}->[4]->{'col2'}).'
@@ -2061,7 +2076,6 @@ sub print_requestmail { $datatable .= &mt('There are no active Domain Coordinators'); } $datatable .=''; - $$rowtotal += $rows; return $datatable; } @@ -2070,9 +2084,11 @@ sub print_studentcode { my $rownum = 0; my ($output,%current); my @crstypes = ('official','unofficial','community','textbook'); - if (ref($settings->{'uniquecode'}) eq 'HASH') { - foreach my $type (@crstypes) { - $current{$type} = $settings->{'uniquecode'}{$type}; + if (ref($settings) eq 'HASH') { + if (ref($settings->{'uniquecode'}) eq 'HASH') { + foreach my $type (@crstypes) { + $current{$type} = $settings->{'uniquecode'}{$type}; + } } } $output .= ''. @@ -2093,14 +2109,14 @@ sub print_studentcode { } sub print_textbookcourses { - my ($dom,$settings,$rowtotal) = @_; + my ($dom,$type,$settings,$rowtotal) = @_; my $rownum = 0; my $css_class; my $itemcount = 1; my $maxnum = 0; my $bookshash; if (ref($settings) eq 'HASH') { - $bookshash = $settings->{'textbooks'}; + $bookshash = $settings->{$type}; } my %ordered; if (ref($bookshash) eq 'HASH') { @@ -2113,8 +2129,8 @@ sub print_textbookcourses { } my $confname = $dom.'-domainconfig'; my $switchserver = &check_switchserver($dom,$confname); - $maxnum = scalar(keys(%ordered)); - my $datatable = &textbookcourses_javascript(\%ordered); + my $maxnum = scalar(keys(%ordered)); + my $datatable; if (keys(%ordered)) { my @items = sort { $a <=> $b } keys(%ordered); for (my $i=0; $i<@items; $i++) { @@ -2122,21 +2138,24 @@ sub print_textbookcourses { my $key = $ordered{$items[$i]}; my %coursehash=&Apache::lonnet::coursedescription($key); my $coursetitle = $coursehash{'description'}; - my ($subject,$title,$author,$image,$imgsrc,$cdom,$cnum); + my ($subject,$title,$author,$publisher,$image,$imgsrc,$cdom,$cnum); if (ref($bookshash->{$key}) eq 'HASH') { $subject = $bookshash->{$key}->{'subject'}; $title = $bookshash->{$key}->{'title'}; - $author = $bookshash->{$key}->{'author'}; - $image = $bookshash->{$key}->{'image'}; - if ($image ne '') { - my ($path,$imagefile) = ($image =~ m{^(.+)/([^/]+)$}); - my $imagethumb = "$path/tn-".$imagefile; - $imgsrc = ''.&mt('Textbook image').''; + if ($type eq 'textbooks') { + $publisher = $bookshash->{$key}->{'publisher'}; + $author = $bookshash->{$key}->{'author'}; + $image = $bookshash->{$key}->{'image'}; + if ($image ne '') { + my ($path,$imagefile) = ($image =~ m{^(.+)/([^/]+)$}); + my $imagethumb = "$path/tn-".$imagefile; + $imgsrc = ''.&mt('Textbook image').''; + } } } - my $chgstr = ' onchange="javascript:reorderBooks(this.form,'."'$key'".');"'; + my $chgstr = ' onchange="javascript:reorderBooks(this.form,'."'$type".'_'."$key','$type'".');"'; $datatable .= '' - .''; for (my $k=0; $k<=$maxnum; $k++) { my $vpos = $k+1; my $selstr; @@ -2146,39 +2165,43 @@ sub print_textbookcourses { $datatable .= ''; } $datatable .= ''.(' 'x2). - ''. ''. - ''.&mt('Subject:').' '. - (' 'x2). - ''.&mt('Title:').' '. - (' 'x2). - ''.&mt('Author(s):').' '. + ''.&mt('Subject:').' '. (' 'x2). - ''.&mt('Thumbnail:'); - if ($image) { - $datatable .= ''. - $imgsrc. - ' '. - ' '.&mt('Replace:').' '; - } - if ($switchserver) { - $datatable .= &mt('Upload to library server: [_1]',$switchserver); - } else { - $datatable .= ''; + ''.&mt('Title:').' '; + if ($type eq 'textbooks') { + $datatable .= (' 'x2). + ''.&mt('Publisher:').' '. + (' 'x2). + ''.&mt('Author(s):').' '. + (' 'x2). + ''.&mt('Thumbnail:'); + if ($image) { + $datatable .= ''. + $imgsrc. + ' '. + ' '.&mt('Replace:').' '; + } + if ($switchserver) { + $datatable .= &mt('Upload to library server: [_1]',$switchserver); + } else { + $datatable .= ''; + } } - $datatable .= ' '. + $datatable .= ' '. ''.&mt('LON-CAPA course:').' '. $coursetitle.''."\n"; $itemcount ++; } } $css_class = $itemcount%2?' class="LC_odd_row"':''; - my $chgstr = ' onchange="javascript:reorderBooks(this.form,'."'addbook_pos'".');"'; + my $chgstr = ' onchange="javascript:reorderBooks(this.form,'."'$type"."_addbook_pos','$type'".');"'; $datatable .= ''."\n". - ''."\n". - ''."\n". + ' '."\n". - ''.&mt('Add').''."\n". + ''.&mt('Add').''."\n". ''. - ''.&mt('Subject:').' '."\n". - (' 'x2). - ''.&mt('Title:').' '."\n". + ''.&mt('Subject:').' '."\n". (' 'x2). - ''.&mt('Author(s):').' '."\n". - (' 'x2). - ''.&mt('Image:').' '; - if ($switchserver) { - $datatable .= &mt('Upload to library server: [_1]',$switchserver); - } else { - $datatable .= ''; + ''.&mt('Title:').' '."\n". + (' 'x2); + if ($type eq 'textbooks') { + $datatable .= ''.&mt('Publisher:').' '."\n". + (' 'x2). + ''.&mt('Author(s):').' '."\n". + (' 'x2). + ''.&mt('Image:').' '; + if ($switchserver) { + $datatable .= &mt('Upload to library server: [_1]',$switchserver); + } else { + $datatable .= ''; + } } $datatable .= ''."\n". ''.&mt('LON-CAPA course:').' '. - &Apache::loncommon::select_dom_form($env{'request.role.domain'},'addbook_cdom'). - ''. + &Apache::loncommon::select_dom_form($env{'request.role.domain'},$type.'_addbook_cdom'). + ''. &Apache::loncommon::selectcourse_link - ('display','addbook_cnum','addbook_cdom',undef,undef,undef,'Course'); + ('display',$type.'_addbook_cnum',$type.'_addbook_cdom',undef,undef,undef,'Course'); ''."\n". ''."\n"; $itemcount ++; @@ -2215,23 +2242,43 @@ sub print_textbookcourses { } sub textbookcourses_javascript { - my ($textbooks) = @_; - return unless(ref($textbooks) eq 'HASH'); - my $num = scalar(keys(%{$textbooks})); - my @jsarray; - foreach my $item (sort {$a <=> $b } (keys(%{$textbooks}))) { - push(@jsarray,$textbooks->{$item}); + my ($settings) = @_; + return unless(ref($settings) eq 'HASH'); + my (%ordered,%total,%jstext); + foreach my $type ('textbooks','templates') { + $total{$type} = 0; + if (ref($settings->{$type}) eq 'HASH') { + foreach my $item (keys(%{$settings->{$type}})) { + if (ref($settings->{$type}->{$item}) eq 'HASH') { + my $num = $settings->{$type}->{$item}{'order'}; + $ordered{$type}{$num} = $item; + } + } + $total{$type} = scalar(keys(%{$settings->{$type}})); + } + my @jsarray = (); + foreach my $item (sort {$a <=> $b } (keys(%{$ordered{$type}}))) { + push(@jsarray,$ordered{$type}{$item}); + } + $jstext{$type} = ' var '.$type.' = Array('."'".join("','",@jsarray)."'".');'."\n"; } - my $jstext = ' var textbooks = Array('."'".join("','",@jsarray)."'".');'."\n"; return <<"ENDSCRIPT";