--- loncom/interface/loncommon.pm 2010/02/05 14:52:32 1.936 +++ loncom/interface/loncommon.pm 2010/03/03 16:54:03 1.946 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.936 2010/02/05 14:52:32 bisitz Exp $ +# $Id: loncommon.pm,v 1.946 2010/03/03 16:54:03 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -3412,12 +3412,22 @@ sub get_previous_attempt { } $prevattempts=&start_data_table().&start_data_table_header_row(); $prevattempts.=''.&mt('History').''; + my %typeparts; + my $showsurv=&Apache::lonnet::allowed('vas',$env{'request.course.id'}); foreach my $key (sort(keys(%lasthash))) { my ($ign,@parts) = split(/\./,$key); if ($#parts > 0) { my $data=$parts[-1]; pop(@parts); - $prevattempts.=''.&mt('Part ').join('.',@parts).'
'.$data.' '; + if ($data eq 'type') { + unless ($showsurv) { + my $id = join(',',@parts); + $typeparts{$ign.'.'.$id} = $lasthash{$key}; + } + delete($lasthash{$key}); + } else { + $prevattempts.=''.&mt('Part ').join('.',@parts).'
'.$data.' '; + } } else { if ($#parts == 0) { $prevattempts.=''.$parts[0].''; @@ -3427,23 +3437,98 @@ sub get_previous_attempt { } } $prevattempts.=&end_data_table_header_row(); + my %lasthidden; if ($getattempt eq '') { for ($version=1;$version<=$returnhash{'version'};$version++) { - $prevattempts.=&start_data_table_row(). - ''.&mt('Transaction [_1]',$version).''; - foreach my $key (sort(keys(%lasthash))) { - my $value = &format_previous_attempt_value($key, - $returnhash{$version.':'.$key}); - $prevattempts.=''.$value.' '; - } - $prevattempts.=&end_data_table_row(); + my @hidden; + if (%typeparts) { + foreach my $id (keys(%typeparts)) { + if (($returnhash{$version.':'.$id.'.type'} eq 'anonsurvey') || ($returnhash{$version.':'.$id.'.type'} eq 'anonsurveycred')) { + push(@hidden,$id); + $lasthidden{$id} = 1; + } elsif ($lasthidden{$id}) { + if (exists($returnhash{$version.':'.$id.'.award'})) { + delete($lasthidden{$id}); + } + } + } + } + $prevattempts.=&start_data_table_row(). + ''.&mt('Transaction [_1]',$version).''; + if (@hidden) { + foreach my $key (sort(keys(%lasthash))) { + my $hide; + foreach my $id (@hidden) { + if ($key =~ /^\Q$id\E/) { + $hide = 1; + last; + } + } + if ($hide) { + my ($id,$data) = ($key =~ /^(.+)\.([^.]+)$/); + if (($data eq 'award') || ($data eq 'awarddetail')) { + my $value = &format_previous_attempt_value($key, + $returnhash{$version.':'.$key}); + $prevattempts.=''.$value.' '; + } else { + $prevattempts.=' '; + } + } else { + if ($key =~ /\./) { + my $value = &format_previous_attempt_value($key, + $returnhash{$version.':'.$key}); + $prevattempts.=''.$value.' '; + } else { + $prevattempts.=' '; + } + } + } + } else { + foreach my $key (sort(keys(%lasthash))) { + my $value = &format_previous_attempt_value($key, + $returnhash{$version.':'.$key}); + $prevattempts.=''.$value.' '; + } + } + $prevattempts.=&end_data_table_row(); } } + my @currhidden = keys(%lasthidden); $prevattempts.=&start_data_table_row().''.&mt('Current').''; foreach my $key (sort(keys(%lasthash))) { - my $value = &format_previous_attempt_value($key,$lasthash{$key}); - if ($key =~/$regexp$/ && (defined &$gradesub)) {$value = &$gradesub($value)} - $prevattempts.=''.$value.' '; + if (%typeparts) { + my $hidden; + foreach my $id (@currhidden) { + if ($key =~ /^\Q$id\E/) { + $hidden = 1; + last; + } + } + if ($hidden) { + my ($id,$data) = ($key =~ /^(.+)\.([^.]+)$/); + if (($data eq 'award') || ($data eq 'awarddetail')) { + my $value = &format_previous_attempt_value($key,$lasthash{$key}); + if ($key =~/$regexp$/ && (defined &$gradesub)) { + $value = &$gradesub($value); + } + $prevattempts.=''.$value.' '; + } else { + $prevattempts.=' '; + } + } else { + my $value = &format_previous_attempt_value($key,$lasthash{$key}); + if ($key =~/$regexp$/ && (defined &$gradesub)) { + $value = &$gradesub($value); + } + $prevattempts.=''.$value.' '; + } + } else { + my $value = &format_previous_attempt_value($key,$lasthash{$key}); + if ($key =~/$regexp$/ && (defined &$gradesub)) { + $value = &$gradesub($value); + } + $prevattempts.=''.$value.' '; + } } $prevattempts.= &end_data_table_row().&end_data_table(); } else { @@ -4153,9 +4238,30 @@ sub get_domainconf { if (keys(%{$domconfig{'login'}})) { foreach my $key (keys(%{$domconfig{'login'}})) { if (ref($domconfig{'login'}{$key}) eq 'HASH') { - foreach my $img (keys(%{$domconfig{'login'}{$key}})) { - $designhash{$udom.'.login.'.$key.'_'.$img} = - $domconfig{'login'}{$key}{$img}; + if ($key eq 'loginvia') { + if (ref($domconfig{'login'}{'loginvia'}) eq 'HASH') { + my @ids = &Apache::lonnet::current_machine_ids(); + foreach my $hostname (@ids) { + if ($domconfig{'login'}{'loginvia'}{$hostname}{'server'}) { + my $server = $domconfig{'login'}{'loginvia'}{$hostname}{'server'}; + $designhash{$udom.'.login.loginvia'} = $server; + if ($domconfig{'login'}{'loginvia'}{$hostname}{'serverpath'} eq 'custom') { + + $designhash{$udom.'.login.loginvia_'.$hostname} = $server.':'.$domconfig{'login'}{'loginvia'}{$hostname}{'custompath'}; + } else { + $designhash{$udom.'.login.loginvia_'.$hostname} = $server.':'.$domconfig{'login'}{'loginvia'}{$hostname}{'serverpath'}; + } + if ($domconfig{'login'}{'loginvia'}{$hostname}{'exempt'}) { + $designhash{$udom.'.login.loginvia_exempt_'.$hostname} = $domconfig{'login'}{'loginvia'}{$hostname}{'exempt'}; + } + } + } + } + } else { + foreach my $img (keys(%{$domconfig{'login'}{$key}})) { + $designhash{$udom.'.login.'.$key.'_'.$img} = + $domconfig{'login'}{$key}{$img}; + } } } else { $designhash{$udom.'.login.'.$key}=$domconfig{'login'}{$key}; @@ -4792,11 +4898,9 @@ form, .inline { vertical-align:middle; } -/* just for tests */ .LC_400Box { width:400px; } -/* end */ .LC_filename { font-family: $mono; @@ -5027,8 +5131,7 @@ td.LC_menubuttons_text { background: $tabbg; } -table.LC_data_table, -table.LC_mail_list { +table.LC_data_table { border: 1px solid #000000; border-collapse: separate; border-spacing: 1px; @@ -5064,7 +5167,6 @@ table.LC_nested { table.LC_data_table tr th, table.LC_calendar tr th, -table.LC_mail_list tr th, table.LC_prior_tries tr th, table.LC_innerpickbox tr th { font-weight: bold; @@ -5117,13 +5219,20 @@ table.LC_data_table tr td.LC_leftcol_hea table.LC_data_table tr.LC_empty_row td, table.LC_nested tr.LC_empty_row td { - background-color: #FFFFFF; font-weight: bold; font-style: italic; text-align: center; padding: 8px; } +table.LC_data_table tr.LC_empty_row td { + background-color: $sidebg; +} + +table.LC_nested tr.LC_empty_row td { + background-color: #FFFFFF; +} + table.LC_caption { } @@ -5228,37 +5337,43 @@ table.LC_calendar tr td.LC_calendar_day_ background-color: $data_table_highlight; } -table.LC_mail_list tr.LC_mail_new { +table.LC_data_table tr td.LC_mail_new { background-color: $mail_new; } -table.LC_mail_list tr.LC_mail_new:hover { +table.LC_data_table tr.LC_mail_new:hover { background-color: $mail_new_hover; } -table.LC_mail_list tr.LC_mail_read { +table.LC_data_table tr td.LC_mail_read { background-color: $mail_read; } -table.LC_mail_list tr.LC_mail_read:hover { +/* +table.LC_data_table tr.LC_mail_read:hover { background-color: $mail_read_hover; } +*/ -table.LC_mail_list tr.LC_mail_replied { +table.LC_data_table tr td.LC_mail_replied { background-color: $mail_replied; } -table.LC_mail_list tr.LC_mail_replied:hover { +/* +table.LC_data_table tr.LC_mail_replied:hover { background-color: $mail_replied_hover; } +*/ -table.LC_mail_list tr.LC_mail_other { +table.LC_data_table tr td.LC_mail_other { background-color: $mail_other; } -table.LC_mail_list tr.LC_mail_other:hover { +/* +table.LC_data_table tr.LC_mail_other:hover { background-color: $mail_other_hover; } +*/ table.LC_data_table tr > td.LC_browser_file, table.LC_data_table tr > td.LC_browser_file_published { @@ -5288,23 +5403,23 @@ table.LC_data_table tr > td.LC_roles_is } table.LC_data_table tr > td.LC_roles_future { - background: #FFFF77; + border-right: 8px solid #FFFF77; } table.LC_data_table tr > td.LC_roles_will { - background: #FFAA77; + border-right: 8px solid #FFAA77; } table.LC_data_table tr > td.LC_roles_expired { - background: #FF7777; + border-right: 8px solid #FF7777; } table.LC_data_table tr > td.LC_roles_will_not { - background: #AAFF77; + border-right: 8px solid #AAFF77; } table.LC_data_table tr > td.LC_roles_selected { - background: #11CC55; + border-right: 8px solid #11CC55; } span.LC_current_location { @@ -5766,13 +5881,18 @@ div.LC_clear_float_footer { } div.LC_grade_show_user { - border-left: 5px solid $sidebg; - margin: 0; +/* border-left: 5px solid $sidebg; */ + border-top: 5px solid #000000; + margin: 50px 0 0 0; padding: 15px 0 5px 10px; } div.LC_grade_show_user_odd_row { - border-left: 5px solid #000000; +/* border-left: 5px solid #000000; */ +} + +div.LC_grade_show_user div.LC_Box { + margin-right: 50px; } div.LC_grade_submissions, @@ -5863,13 +5983,6 @@ div.LC_createcourse { display:none; } -/* ---- Remove when done ---- -# The following styles is part of the redesign of LON-CAPA and are -# subject to change during this project. -# Don't rely on their current functionality as they might be -# changed or removed. -# --------------------------*/ - a:hover, ol.LC_primary_menu a:hover, ol#LC_MenuBreadcrumbs a:hover, @@ -9986,19 +10099,19 @@ sub check_clone { my $clonehome=&Apache::lonnet::homeserver($clonecrsunum,$clonecrsudom); my $clonemsg; my $can_clone = 0; - my $lctype = lc($args->{'type'}); + my $lctype = lc($args->{'crstype'}); if ($lctype ne 'community') { $lctype = 'course'; } if ($clonehome eq 'no_host') { - if ($args->{'type'} eq 'Community') { + if ($args->{'crstype'} eq 'Community') { $clonemsg = &mt('No new community created.').$linefeed.&mt('A new community could not be cloned from the specified original - [_1] - because it is a non-existent community.',$args->{'clonecourse'}.':'.$args->{'clonedomain'}); } else { $clonemsg = &mt('No new course created.').$linefeed.&mt('A new course could not be cloned from the specified original - [_1] - because it is a non-existent course.',$args->{'clonecourse'}.':'.$args->{'clonedomain'}); } } else { my %clonedesc = &Apache::lonnet::coursedescription($cloneid,{'one_time' => 1}); - if ($args->{'type'} eq 'Community') { + if ($args->{'crstype'} eq 'Community') { if ($clonedesc{'type'} ne 'Community') { $clonemsg = &mt('No new community created.').$linefeed.&mt('A new community could not be cloned from the specified original - [_1] - because it is a course not a community.',$args->{'clonecourse'}.':'.$args->{'clonedomain'}); return ($can_clone, $clonemsg, $cloneid, $clonehome); @@ -10017,7 +10130,7 @@ sub check_clone { $can_clone = 1; } else { my $ccrole = 'cc'; - if ($args->{'type'} eq 'Community') { + if ($args->{'crstype'} eq 'Community') { $ccrole = 'co'; } my %roleshash = @@ -10026,9 +10139,11 @@ sub check_clone { 'userroles',['active'],[$ccrole], [$args->{'clonedomain'}]); if (($roleshash{$args->{'clonecourse'}.':'.$args->{'clonedomain'}.':'.$ccrole}) || (grep(/^\Q$args->{'ccuname'}\E:\Q$args->{'ccdomain'}\E$/,@cloners))) { - $can_clone = 1; - } else { - if ($args->{'type'} eq 'Community') { + $can_clone = 1; + } elsif (&Apache::lonnet::is_course_owner($args->{'clonedomain'},$args->{'clonecourse'},$args->{'ccuname'},$args->{'ccdomain'})) { + $can_clone = 1; + } else { + if ($args->{'crstype'} eq 'Community') { $clonemsg = &mt('No new community created.').$linefeed.&mt('The new community could not be cloned from the existing community because the new community owner ([_1]) does not have cloning rights in the existing community ([_2]).',$args->{'ccuname'}.':'.$args->{'ccdomain'},$clonedesc{'description'}); } else { $clonemsg = &mt('No new course created.').$linefeed.&mt('The new course could not be cloned from the existing course because the new course owner ([_1]) does not have cloning rights in the existing course ([_2]).',$args->{'ccuname'}.':'.$args->{'ccdomain'},$clonedesc{'description'}); @@ -10087,11 +10202,19 @@ sub construct_course { # if anyone ever decides to not show this, and Utils::Course::new # will need to be suitably modified. $outcome .= &mt('New LON-CAPA [_1] ID: [_2]',$crstype,$$courseid).$linefeed; + if ($$courseid =~ /^error:/) { + return (0,$outcome); + } + # # Check if created correctly # ($$crsudom,$$crsunum)= &LONCAPA::split_courseid($$courseid); my $crsuhome=&Apache::lonnet::homeserver($$crsunum,$$crsudom); + if ($crsuhome eq 'no_host') { + $outcome .= &mt('Course creation failed, unrecognized course home server.').$linefeed; + return (0,$outcome); + } $outcome .= &mt('Created on').': '.$crsuhome.$linefeed; #